diff --git a/app/src/main/java/helium314/keyboard/keyboard/internal/KeyboardParams.java b/app/src/main/java/helium314/keyboard/keyboard/internal/KeyboardParams.java index 2a1db5c8..fe456eb1 100644 --- a/app/src/main/java/helium314/keyboard/keyboard/internal/KeyboardParams.java +++ b/app/src/main/java/helium314/keyboard/keyboard/internal/KeyboardParams.java @@ -91,6 +91,7 @@ public class KeyboardParams { public boolean mAllowRedundantPopupKeys; @NonNull public LocaleKeyboardInfos mLocaleKeyboardInfos; + public boolean setTabletExtraKeys; public int mMostCommonKeyHeight = 0; public int mMostCommonKeyWidth = 0; @@ -284,5 +285,6 @@ public class KeyboardParams { keyAttr.recycle(); keyboardAttr.recycle(); } + setTabletExtraKeys = Settings.getInstance().isTablet() && !mId.mSubtype.isCustom(); } } diff --git a/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/KeyboardParser.kt b/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/KeyboardParser.kt index 1b0a870f..5f328676 100644 --- a/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/KeyboardParser.kt +++ b/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/KeyboardParser.kt @@ -108,11 +108,8 @@ class KeyboardParser(private val params: KeyboardParams, private val context: Co val functionalKeys = mutableListOf, List>>() val baseKeyParams = baseKeys.mapIndexed { i, it -> - val row: List = if (params.mId.isAlphaOrSymbolKeyboard && i == baseKeys.lastIndex - 1 && Settings.getInstance().isTablet) { + val row: List = if (params.mId.isAlphaOrSymbolKeyboard && i == baseKeys.lastIndex - 1 && params.setTabletExtraKeys) { // add bottom row extra keys - // todo (later): this can make very customized layouts look awkward - // decide when to (not) add it - // when not adding, consider that punctuation popup keys should not remove those keys! val tabletExtraKeys = params.mLocaleKeyboardInfos.getTabletExtraKeys(params.mId.mElementId) tabletExtraKeys.first + it + tabletExtraKeys.second } else { diff --git a/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/LocaleKeyboardInfos.kt b/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/LocaleKeyboardInfos.kt index b71df684..bd7f8064 100644 --- a/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/LocaleKeyboardInfos.kt +++ b/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/LocaleKeyboardInfos.kt @@ -86,7 +86,6 @@ class LocaleKeyboardInfos(dataStream: InputStream?, locale: Locale) { } /** Pair(extraKeysLeft, extraKeysRight) */ - // todo: they should be optional, or will unexpectedly appear on custom layouts fun getTabletExtraKeys(elementId: Int): Pair, List> { val flags = Key.LABEL_FLAGS_FONT_DEFAULT return when (elementId) { 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 6688797d..0388fc6e 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 @@ -141,7 +141,7 @@ sealed interface KeyData : AbstractKeyData { for (i in popupKeys.indices) popupKeys[i] = popupKeys[i].rtlLabel(params) // for parentheses } - if (Settings.getInstance().isTablet && popupKeys.contains("!") && popupKeys.contains("?")) { + if (params.setTabletExtraKeys && popupKeys.contains("!") && popupKeys.contains("?")) { // remove ! and ? keys and reduce number in autoColumnOrder // this makes use of removal of empty popupKeys in PopupKeySpec.insertAdditionalPopupKeys popupKeys[popupKeys.indexOf("!")] = ""