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?