diff --git a/app/src/main/assets/language_key_texts/ar.txt b/app/src/main/assets/language_key_texts/ar.txt index 827c39b6..0d3027e6 100644 --- a/app/src/main/assets/language_key_texts/ar.txt +++ b/app/src/main/assets/language_key_texts/ar.txt @@ -13,6 +13,8 @@ ز ژ و ؤ punctuation !fixedColumnOrder!7 ٕ|ٕ ٔ|ٔ ْ|ْ ٍ|ٍ ٌ|ٌ ً|ً ّ|ّ ٖ|ٖ ٰ|ٰ ٓ|ٓ ِ|ِ ُ|ُ َ|َ ـــ|ـ +« „ “ ” +» ‚ ‘ ’ ‹ › [labels] alphabet: أ‌ب‌ج diff --git a/app/src/main/assets/language_key_texts/fa.txt b/app/src/main/assets/language_key_texts/fa.txt index 268b9015..3b774eaf 100644 --- a/app/src/main/assets/language_key_texts/fa.txt +++ b/app/src/main/assets/language_key_texts/fa.txt @@ -6,6 +6,8 @@ ک ك و ؤ punctuation !fixedColumnOrder!7 ٕ|ٕ ْ|ْ ّ|ّ ٌ|ٌ ٍ|ٍ ً|ً ٔ|ٔ ٖ|ٖ ٰ|ٰ ٓ|ٓ ُ|ُ ِ|ِ َ|َ ـــ|ـ +« „ “ ” +» ‚ ‘ ’ ‹ › [labels] alphabet: ا‌ب‌پ diff --git a/app/src/main/assets/language_key_texts/ur.txt b/app/src/main/assets/language_key_texts/ur.txt index 4c154608..6ea1aa7b 100644 --- a/app/src/main/assets/language_key_texts/ur.txt +++ b/app/src/main/assets/language_key_texts/ur.txt @@ -19,6 +19,8 @@ ط ظ ن ں punctuation ؟ ، ! . - +« „ “ ” +» ‚ ‘ ’ ‹ › [labels] alphabet: اب‌پ diff --git a/app/src/main/assets/layouts/symbols.txt b/app/src/main/assets/layouts/symbols.txt index bb8936e0..40f67d11 100644 --- a/app/src/main/assets/layouts/symbols.txt +++ b/app/src/main/assets/layouts/symbols.txt @@ -16,8 +16,8 @@ _ % ‰ & - – — · + ± -( !fixedColumnOrder!3 < { [ -) !fixedColumnOrder!3 > } ] +( < { [ +) > } ] * † ‡ ★ " diff --git a/app/src/main/assets/layouts/symbols_arabic.txt b/app/src/main/assets/layouts/symbols_arabic.txt index 84984802..43e40d2b 100644 --- a/app/src/main/assets/layouts/symbols_arabic.txt +++ b/app/src/main/assets/layouts/symbols_arabic.txt @@ -16,12 +16,12 @@ _ ٪ % ‰ & - – — · + ± -( !fixedColumnOrder!4 ﴾ < { [ -) !fixedColumnOrder!4 ﴿ > } ] +( ﴾ < { [ +) ﴿ > } ] * ٭ ★ † ‡ -« !fixedColumnOrder!3 „ “ ” -» !fixedColumnOrder!5 ‚ ‘ ’ ‹ › +« +» : ؛ ; ! diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/Key.java b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/Key.java index 3a9371c3..21c17aaf 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/Key.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/Key.java @@ -1085,20 +1085,7 @@ public class Key implements Comparable { if (params.mId.isNumberLayout()) actionFlags = ACTION_FLAGS_NO_KEY_PREVIEW; - final String[] moreKeys = MoreKeysUtilsKt.createMoreKeysArray(popupSet, mKeyboardParams, keySpec); - mMoreKeysColumnAndFlags = getMoreKeysColumnAndFlagsAndSetNullInArray(params, moreKeys); - final String[] finalMoreKeys = moreKeys == null ? null : MoreKeySpec.filterOutEmptyString(moreKeys); - - if (finalMoreKeys != null) { - actionFlags |= ACTION_FLAGS_ENABLE_LONG_PRESS; - mMoreKeys = new MoreKeySpec[finalMoreKeys.length]; - for (int i = 0; i < finalMoreKeys.length; i++) { - mMoreKeys[i] = new MoreKeySpec(finalMoreKeys[i], needsToUpcase, localeForUpcasing); - } - } else { - mMoreKeys = null; - } - + // label if ((mLabelFlags & LABEL_FLAGS_FROM_CUSTOM_ACTION_LABEL) != 0) { mLabel = params.mId.mCustomActionLabel; } else if (code >= Character.MIN_SUPPLEMENTARY_CODE_POINT) { @@ -1112,6 +1099,22 @@ public class Key implements Comparable { ? StringUtils.toTitleCaseOfKeyLabel(label, localeForUpcasing) : label; } + + // moreKeys + final String[] moreKeys = MoreKeysUtilsKt.createMoreKeysArray(popupSet, mKeyboardParams, mLabel != null ? mLabel : keySpec); + mMoreKeysColumnAndFlags = getMoreKeysColumnAndFlagsAndSetNullInArray(params, moreKeys); + final String[] finalMoreKeys = moreKeys == null ? null : MoreKeySpec.filterOutEmptyString(moreKeys); + if (finalMoreKeys != null) { + actionFlags |= ACTION_FLAGS_ENABLE_LONG_PRESS; + mMoreKeys = new MoreKeySpec[finalMoreKeys.length]; + for (int i = 0; i < finalMoreKeys.length; i++) { + mMoreKeys[i] = new MoreKeySpec(finalMoreKeys[i], needsToUpcase, localeForUpcasing); + } + } else { + mMoreKeys = null; + } + + // hint label if ((mLabelFlags & LABEL_FLAGS_DISABLE_HINT_LABEL) != 0) { mHintLabel = null; } else { @@ -1122,6 +1125,7 @@ public class Key implements Comparable { ? StringUtils.toTitleCaseOfKeyLabel(hintLabel, localeForUpcasing) : hintLabel; } + String outputText = KeySpecParser.getOutputText(keySpec); if (needsToUpcase) { outputText = StringUtils.toTitleCaseOfKeyLabel(outputText, localeForUpcasing); @@ -1179,11 +1183,6 @@ public class Key implements Comparable { KeyboardIconsSet.ICON_UNDEFINED, 0, 0); // KeyVisualAttributes for a key essentially are what the theme has, but on a per-key base // could be used e.g. for having a color gradient on key color - // where is it used / which attribute? - // keyLetterSize in some keyboards - // keyShiftedLetterHintRatio same - // keyHintLabelVerticalAdjustment same - // todo (later): make sure these keys look ok when migrating the non-latin layouts (+pc qwerty) mKeyVisualAttributes = null; mEnabled = true; } diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/keyboard_parser/LocaleKeyTexts.kt b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/keyboard_parser/LocaleKeyTexts.kt index db64bef0..e676bfec 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/keyboard_parser/LocaleKeyTexts.kt +++ b/app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/keyboard_parser/LocaleKeyTexts.kt @@ -133,7 +133,7 @@ class LocaleKeyTexts(dataStream: InputStream?, locale: Locale) { Array(split.size - 1) { split[it + 1] } else mergeMoreKeys(existingMoreKeys, split.drop(1)) moreKeys[key] = when (key) { - "'", "\"", "«", "»", ")", "(" -> addFixedColumnOrder(newMoreKeys) + "'", "\"", "«", "»" -> addFixedColumnOrder(newMoreKeys) else -> newMoreKeys } } diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/AdvancedSettingsFragment.kt b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/AdvancedSettingsFragment.kt index bc7042b6..aeedfdf4 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/AdvancedSettingsFragment.kt +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/AdvancedSettingsFragment.kt @@ -97,7 +97,6 @@ class AdvancedSettingsFragment : SubScreenFragment() { findPreference("load_gesture_library")?.setOnPreferenceClickListener { onClickLoadLibrary() } findPreference("pref_backup_restore")?.setOnPreferenceClickListener { showBackupRestoreDialog() } - // todo: this shows !fixedColumnOrder!, which is not a good idea findPreference("custom_symbols_layout")?.setOnPreferenceClickListener { val file = "${CUSTOM_LAYOUT_PREFIX}symbols.txt" val oldLayout = if (File(file).exists()) null else context.assets.open("layouts${File.separator}symbols.txt").reader().readText() diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/MoreKeysUtils.kt b/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/MoreKeysUtils.kt index d28d4958..6d93015d 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/MoreKeysUtils.kt +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/utils/MoreKeysUtils.kt @@ -3,7 +3,6 @@ package org.dslul.openboard.inputmethod.latin.utils import android.content.Context import android.content.SharedPreferences -import android.content.res.Configuration import android.view.LayoutInflater import android.view.ViewGroup import android.widget.TextView @@ -46,9 +45,19 @@ fun createMoreKeysArray(popupSet: PopupSet<*>?, params: KeyboardParams, label: S } if (!moreKeysDelegate.isInitialized() || moreKeys.isEmpty()) return null + Log.i("test", "moreKeys for $label: $moreKeys") val fco = moreKeys.firstOrNull { it.startsWith(Key.MORE_KEYS_FIXED_COLUMN_ORDER) } if (fco != null && fco.substringAfter(Key.MORE_KEYS_FIXED_COLUMN_ORDER).toIntOrNull() != moreKeys.size - 1) { - moreKeys.remove(fco) // maybe rather adjust the number instead of remove? + val fcoExpected = moreKeys.size - moreKeys.count { it.startsWith("!") && it.endsWith("!") } - 1 + if (fco.substringAfter(Key.MORE_KEYS_FIXED_COLUMN_ORDER).toIntOrNull() != fcoExpected) + moreKeys.remove(fco) // maybe rather adjust the number instead of remove? + } + if (moreKeys.size > 1 && (label == "(" || label == ")")) { // add fixed column order for that case (typically other variants of brackets / parentheses + // not really fast, but no other way to add first in a LinkedHashSet + val tmp = moreKeys.toList() + moreKeys.clear() + moreKeys.add("${Key.MORE_KEYS_FIXED_COLUMN_ORDER}${tmp.size}") + moreKeys.addAll(tmp) } // autoColumnOrder should be fine