diff --git a/app/src/main/java/helium314/keyboard/keyboard/internal/KeyboardBuilder.kt b/app/src/main/java/helium314/keyboard/keyboard/internal/KeyboardBuilder.kt index 59ded3036..5171199d8 100644 --- a/app/src/main/java/helium314/keyboard/keyboard/internal/KeyboardBuilder.kt +++ b/app/src/main/java/helium314/keyboard/keyboard/internal/KeyboardBuilder.kt @@ -70,12 +70,8 @@ open class KeyboardBuilder(protected val mContext: Context, // todo: add setting? maybe users want it in a custom layout mParams.mAllowRedundantPopupKeys = mParams.mId.mElementId != KeyboardId.ELEMENT_SYMBOLS - // todo: should this be in subtype extra values? - mParams.mProximityCharsCorrectionEnabled = mParams.mId.isAlphabetKeyboard && when (layoutName) { - "bengali_akkhor", "georgian", "hindi", "lao", "nepali_romanized", "nepali_traditional", "sinhala", "thai" -> - mParams.mId.mElementId == KeyboardId.ELEMENT_ALPHABET // not for shifted layouts - else -> true - } + mParams.mProximityCharsCorrectionEnabled = mParams.mId.mElementId == KeyboardId.ELEMENT_ALPHABET + || (mParams.mId.isAlphabetKeyboard && !mParams.mId.mSubtype.hasExtraValue(Constants.Subtype.ExtraValue.NO_SHIFT_PROXIMITY_CORRECTION)) addLocaleKeyTextsToParams(mContext, mParams, sv.mShowMorePopupKeys) mParams.mPopupKeyTypes.addAll(sv.mPopupKeyTypes) diff --git a/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/floris/TextKeyData.kt b/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/floris/TextKeyData.kt index a0a5c1145..931ed3931 100644 --- a/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/floris/TextKeyData.kt +++ b/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/floris/TextKeyData.kt @@ -290,8 +290,8 @@ sealed interface KeyData : AbstractKeyData { require(width >= 0f || width == -1f) { "illegal width $width" } val newLabel = label.convertFlorisLabel().resolveStringLabel(params) if (newLabel == KeyLabel.SHIFT && params.mId.isAlphabetKeyboard - && params.mId.mSubtype.keyboardLayoutSetName in listOf("hindi_compact", "bengali", "arabic", "arabic_pc", "hebrew", "kannada", "kannada_extended","malayalam", "marathi", "farsi", "tamil", "telugu")) { - return null // these layouts have no shift key, todo: should be in subtype extras + && params.mId.mSubtype.hasExtraValue(Constants.Subtype.ExtraValue.NO_SHIFT_KEY)) { + return null } val newCode = code.checkAndConvertCode() val newLabelFlags = if (labelFlags == 0 && params.mId.isNumberLayout) { diff --git a/app/src/main/java/helium314/keyboard/latin/common/Constants.java b/app/src/main/java/helium314/keyboard/latin/common/Constants.java index 0779b219f..07685cd17 100644 --- a/app/src/main/java/helium314/keyboard/latin/common/Constants.java +++ b/app/src/main/java/helium314/keyboard/latin/common/Constants.java @@ -72,6 +72,12 @@ public final class Constants { */ public static final String EMOJI_CAPABLE = "EmojiCapable"; + /** Indicates that the subtype does not have a shift key */ + public static final String NO_SHIFT_KEY = "NoShiftKey"; + + /** Indicates that for this subtype corrections should not be based on proximity of keys for when shifted */ + public static final String NO_SHIFT_PROXIMITY_CORRECTION = "NoShiftProximityCorrection"; + /** * The subtype extra value used to indicate that the display name of this subtype * contains a "%s" for printf-like replacement and it should be replaced by diff --git a/app/src/main/res/xml/method.xml b/app/src/main/res/xml/method.xml index 2a044259e..9dd9d429f 100644 --- a/app/src/main/res/xml/method.xml +++ b/app/src/main/res/xml/method.xml @@ -163,7 +163,7 @@ android:imeSubtypeLocale="ar" android:languageTag="ar" android:imeSubtypeMode="keyboard" - android:imeSubtypeExtraValue="KeyboardLayoutSet=arabic,SupportTouchPositionCorrection,EmojiCapable" + android:imeSubtypeExtraValue="KeyboardLayoutSet=arabic,NoShiftKey,SupportTouchPositionCorrection,EmojiCapable" android:isAsciiCapable="false" /> @@ -967,7 +967,7 @@ android:imeSubtypeLocale="ta_SG" android:languageTag="ta-SG" android:imeSubtypeMode="keyboard" - android:imeSubtypeExtraValue="KeyboardLayoutSet=tamil,EmojiCapable" + android:imeSubtypeExtraValue="KeyboardLayoutSet=tamil,NoShiftKey,EmojiCapable" android:isAsciiCapable="false" />