diff --git a/app/src/main/java/helium314/keyboard/keyboard/internal/KeyboardState.java b/app/src/main/java/helium314/keyboard/keyboard/internal/KeyboardState.java index 51dc98b0..07639d3f 100644 --- a/app/src/main/java/helium314/keyboard/keyboard/internal/KeyboardState.java +++ b/app/src/main/java/helium314/keyboard/keyboard/internal/KeyboardState.java @@ -80,6 +80,7 @@ public final class KeyboardState { private static final int SWITCH_STATE_SYMBOL_BEGIN = 1; private static final int SWITCH_STATE_SYMBOL = 2; private static final int SWITCH_STATE_NUMPAD = 3; + private static final int SWITCH_STATE_NUMPAD_BEGIN = 9; private static final int SWITCH_STATE_MOMENTARY_ALPHA_AND_SYMBOL = 4; private static final int SWITCH_STATE_MOMENTARY_SYMBOL_AND_MORE = 5; private static final int SWITCH_STATE_MOMENTARY_ALPHA_SHIFT = 6; @@ -403,7 +404,7 @@ public final class KeyboardState { mMode = MODE_NUMPAD; mRecapitalizeMode = RecapitalizeStatus.NOT_A_RECAPITALIZE_MODE; mSwitchActions.setNumpadKeyboard(); - mSwitchState = withSliding ? SWITCH_STATE_MOMENTARY_TO_NUMPAD : SWITCH_STATE_NUMPAD; + mSwitchState = withSliding ? SWITCH_STATE_MOMENTARY_TO_NUMPAD : SWITCH_STATE_NUMPAD_BEGIN; } public void toggleNumpad(final boolean withSliding, final int autoCapsFlags, final int recapitalizeMode, @@ -789,6 +790,17 @@ public final class KeyboardState { mPrevSymbolsKeyboardWasShifted = false; } break; + case SWITCH_STATE_NUMPAD: + // Switch back to alpha keyboard mode if user types one or more non-space/enter + // characters followed by a space/enter. + if (isSpaceOrEnter(code) && Settings.getValues().mAlphaAfterNumpadAndSpace) { + toggleNumpad(false, autoCapsFlags, recapitalizeMode, true, false); + } + break; + case SWITCH_STATE_NUMPAD_BEGIN: + if (!isSpaceOrEnter(code)) + mSwitchState = SWITCH_STATE_NUMPAD; + break; } // If the code is a letter, update keyboard shift state. @@ -833,6 +845,7 @@ public final class KeyboardState { case SWITCH_STATE_MOMENTARY_SYMBOL_AND_MORE -> "MOMENTARY-SYMBOL-MORE"; case SWITCH_STATE_MOMENTARY_ALPHA_SHIFT -> "MOMENTARY-ALPHA_SHIFT"; case SWITCH_STATE_NUMPAD -> "NUMPAD"; + case SWITCH_STATE_NUMPAD_BEGIN -> "NUMPAD-BEGIN"; case SWITCH_STATE_MOMENTARY_TO_NUMPAD -> "MOMENTARY-TO-NUMPAD"; case SWITCH_STATE_MOMENTARY_FROM_NUMPAD -> "MOMENTARY-FROM-NUMPAD"; default -> null; diff --git a/app/src/main/java/helium314/keyboard/latin/settings/Defaults.kt b/app/src/main/java/helium314/keyboard/latin/settings/Defaults.kt index 8e1261c0..1a890fa2 100644 --- a/app/src/main/java/helium314/keyboard/latin/settings/Defaults.kt +++ b/app/src/main/java/helium314/keyboard/latin/settings/Defaults.kt @@ -145,6 +145,7 @@ object Defaults { const val PREF_ABC_AFTER_EMOJI = false const val PREF_ABC_AFTER_CLIP = false const val PREF_ABC_AFTER_SYMBOL_SPACE = true + const val PREF_ABC_AFTER_NUMPAD_SPACE = false const val PREF_REMOVE_REDUNDANT_POPUPS = false const val PREF_SPACE_BAR_TEXT = "" @JvmField diff --git a/app/src/main/java/helium314/keyboard/latin/settings/Settings.java b/app/src/main/java/helium314/keyboard/latin/settings/Settings.java index 8d9e7bef..6d45548a 100644 --- a/app/src/main/java/helium314/keyboard/latin/settings/Settings.java +++ b/app/src/main/java/helium314/keyboard/latin/settings/Settings.java @@ -155,6 +155,7 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang public static final String PREF_ABC_AFTER_EMOJI = "abc_after_emoji"; public static final String PREF_ABC_AFTER_CLIP = "abc_after_clip"; public static final String PREF_ABC_AFTER_SYMBOL_SPACE = "abc_after_symbol_space"; + public static final String PREF_ABC_AFTER_NUMPAD_SPACE = "abc_after_numpad_space"; public static final String PREF_REMOVE_REDUNDANT_POPUPS = "remove_redundant_popups"; public static final String PREF_SPACE_BAR_TEXT = "space_bar_text"; diff --git a/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java b/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java index 25c2ec15..9a18fde2 100644 --- a/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java +++ b/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java @@ -114,6 +114,7 @@ public class SettingsValues { public final boolean mAlphaAfterEmojiInEmojiView; public final boolean mAlphaAfterClipHistoryEntry; public final boolean mAlphaAfterSymbolAndSpace; + public final boolean mAlphaAfterNumpadAndSpace; public final boolean mRemoveRedundantPopups; public final String mSpaceBarText; public final float mFontSizeMultiplier; @@ -268,6 +269,7 @@ public class SettingsValues { mAlphaAfterEmojiInEmojiView = prefs.getBoolean(Settings.PREF_ABC_AFTER_EMOJI, Defaults.PREF_ABC_AFTER_EMOJI); mAlphaAfterClipHistoryEntry = prefs.getBoolean(Settings.PREF_ABC_AFTER_CLIP, Defaults.PREF_ABC_AFTER_CLIP); mAlphaAfterSymbolAndSpace = prefs.getBoolean(Settings.PREF_ABC_AFTER_SYMBOL_SPACE, Defaults.PREF_ABC_AFTER_SYMBOL_SPACE); + mAlphaAfterNumpadAndSpace = prefs.getBoolean(Settings.PREF_ABC_AFTER_NUMPAD_SPACE, Defaults.PREF_ABC_AFTER_NUMPAD_SPACE); mRemoveRedundantPopups = prefs.getBoolean(Settings.PREF_REMOVE_REDUNDANT_POPUPS, Defaults.PREF_REMOVE_REDUNDANT_POPUPS); mSpaceBarText = prefs.getString(Settings.PREF_SPACE_BAR_TEXT, Defaults.PREF_SPACE_BAR_TEXT); mEmojiMaxSdk = prefs.getInt(Settings.PREF_EMOJI_MAX_SDK, Defaults.PREF_EMOJI_MAX_SDK); diff --git a/app/src/main/java/helium314/keyboard/settings/screens/AdvancedScreen.kt b/app/src/main/java/helium314/keyboard/settings/screens/AdvancedScreen.kt index 3605a422..c81f3025 100644 --- a/app/src/main/java/helium314/keyboard/settings/screens/AdvancedScreen.kt +++ b/app/src/main/java/helium314/keyboard/settings/screens/AdvancedScreen.kt @@ -66,6 +66,7 @@ fun AdvancedSettingsScreen( Settings.PREF_ENABLE_EMOJI_ALT_PHYSICAL_KEY, if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) Settings.PREF_SHOW_SETUP_WIZARD_ICON else null, Settings.PREF_ABC_AFTER_SYMBOL_SPACE, + Settings.PREF_ABC_AFTER_NUMPAD_SPACE, Settings.PREF_ABC_AFTER_EMOJI, Settings.PREF_ABC_AFTER_CLIP, Settings.PREF_CUSTOM_CURRENCY_KEY, @@ -154,6 +155,11 @@ fun createAdvancedSettings(context: Context) = listOf( { SwitchPreference(it, Defaults.PREF_ABC_AFTER_SYMBOL_SPACE) }, + Setting(context, Settings.PREF_ABC_AFTER_NUMPAD_SPACE, + R.string.switch_keyboard_after, R.string.after_numpad_and_space) + { + SwitchPreference(it, Defaults.PREF_ABC_AFTER_NUMPAD_SPACE) + }, Setting(context, Settings.PREF_ABC_AFTER_EMOJI, R.string.switch_keyboard_after, R.string.after_emoji) { SwitchPreference(it, Defaults.PREF_ABC_AFTER_EMOJI) }, diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e6bb1d30..e063b07c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -581,6 +581,8 @@ disposition rather than other common dispositions for Latin languages. --> Selecting clipboard history entry Pressing enter or space after other keys in symbols view + + Pressing enter or space after other keys in numpad Set image for day or night mode?