add setting to switch to alphabet after typing on numpad and pressing space

fixes #1224
This commit is contained in:
Helium314 2025-03-15 15:59:49 +01:00
parent a9e5f879d8
commit 8298542c39
6 changed files with 26 additions and 1 deletions

View file

@ -80,6 +80,7 @@ public final class KeyboardState {
private static final int SWITCH_STATE_SYMBOL_BEGIN = 1; private static final int SWITCH_STATE_SYMBOL_BEGIN = 1;
private static final int SWITCH_STATE_SYMBOL = 2; private static final int SWITCH_STATE_SYMBOL = 2;
private static final int SWITCH_STATE_NUMPAD = 3; 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_ALPHA_AND_SYMBOL = 4;
private static final int SWITCH_STATE_MOMENTARY_SYMBOL_AND_MORE = 5; private static final int SWITCH_STATE_MOMENTARY_SYMBOL_AND_MORE = 5;
private static final int SWITCH_STATE_MOMENTARY_ALPHA_SHIFT = 6; private static final int SWITCH_STATE_MOMENTARY_ALPHA_SHIFT = 6;
@ -403,7 +404,7 @@ public final class KeyboardState {
mMode = MODE_NUMPAD; mMode = MODE_NUMPAD;
mRecapitalizeMode = RecapitalizeStatus.NOT_A_RECAPITALIZE_MODE; mRecapitalizeMode = RecapitalizeStatus.NOT_A_RECAPITALIZE_MODE;
mSwitchActions.setNumpadKeyboard(); 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, public void toggleNumpad(final boolean withSliding, final int autoCapsFlags, final int recapitalizeMode,
@ -789,6 +790,17 @@ public final class KeyboardState {
mPrevSymbolsKeyboardWasShifted = false; mPrevSymbolsKeyboardWasShifted = false;
} }
break; 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. // 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_SYMBOL_AND_MORE -> "MOMENTARY-SYMBOL-MORE";
case SWITCH_STATE_MOMENTARY_ALPHA_SHIFT -> "MOMENTARY-ALPHA_SHIFT"; case SWITCH_STATE_MOMENTARY_ALPHA_SHIFT -> "MOMENTARY-ALPHA_SHIFT";
case SWITCH_STATE_NUMPAD -> "NUMPAD"; 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_TO_NUMPAD -> "MOMENTARY-TO-NUMPAD";
case SWITCH_STATE_MOMENTARY_FROM_NUMPAD -> "MOMENTARY-FROM-NUMPAD"; case SWITCH_STATE_MOMENTARY_FROM_NUMPAD -> "MOMENTARY-FROM-NUMPAD";
default -> null; default -> null;

View file

@ -145,6 +145,7 @@ object Defaults {
const val PREF_ABC_AFTER_EMOJI = false const val PREF_ABC_AFTER_EMOJI = false
const val PREF_ABC_AFTER_CLIP = false const val PREF_ABC_AFTER_CLIP = false
const val PREF_ABC_AFTER_SYMBOL_SPACE = true 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_REMOVE_REDUNDANT_POPUPS = false
const val PREF_SPACE_BAR_TEXT = "" const val PREF_SPACE_BAR_TEXT = ""
@JvmField @JvmField

View file

@ -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_EMOJI = "abc_after_emoji";
public static final String PREF_ABC_AFTER_CLIP = "abc_after_clip"; 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_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_REMOVE_REDUNDANT_POPUPS = "remove_redundant_popups";
public static final String PREF_SPACE_BAR_TEXT = "space_bar_text"; public static final String PREF_SPACE_BAR_TEXT = "space_bar_text";

View file

@ -114,6 +114,7 @@ public class SettingsValues {
public final boolean mAlphaAfterEmojiInEmojiView; public final boolean mAlphaAfterEmojiInEmojiView;
public final boolean mAlphaAfterClipHistoryEntry; public final boolean mAlphaAfterClipHistoryEntry;
public final boolean mAlphaAfterSymbolAndSpace; public final boolean mAlphaAfterSymbolAndSpace;
public final boolean mAlphaAfterNumpadAndSpace;
public final boolean mRemoveRedundantPopups; public final boolean mRemoveRedundantPopups;
public final String mSpaceBarText; public final String mSpaceBarText;
public final float mFontSizeMultiplier; public final float mFontSizeMultiplier;
@ -268,6 +269,7 @@ public class SettingsValues {
mAlphaAfterEmojiInEmojiView = prefs.getBoolean(Settings.PREF_ABC_AFTER_EMOJI, Defaults.PREF_ABC_AFTER_EMOJI); 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); 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); 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); 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); 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); mEmojiMaxSdk = prefs.getInt(Settings.PREF_EMOJI_MAX_SDK, Defaults.PREF_EMOJI_MAX_SDK);

View file

@ -66,6 +66,7 @@ fun AdvancedSettingsScreen(
Settings.PREF_ENABLE_EMOJI_ALT_PHYSICAL_KEY, Settings.PREF_ENABLE_EMOJI_ALT_PHYSICAL_KEY,
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) Settings.PREF_SHOW_SETUP_WIZARD_ICON else null, 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_SYMBOL_SPACE,
Settings.PREF_ABC_AFTER_NUMPAD_SPACE,
Settings.PREF_ABC_AFTER_EMOJI, Settings.PREF_ABC_AFTER_EMOJI,
Settings.PREF_ABC_AFTER_CLIP, Settings.PREF_ABC_AFTER_CLIP,
Settings.PREF_CUSTOM_CURRENCY_KEY, Settings.PREF_CUSTOM_CURRENCY_KEY,
@ -154,6 +155,11 @@ fun createAdvancedSettings(context: Context) = listOf(
{ {
SwitchPreference(it, Defaults.PREF_ABC_AFTER_SYMBOL_SPACE) 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) { Setting(context, Settings.PREF_ABC_AFTER_EMOJI, R.string.switch_keyboard_after, R.string.after_emoji) {
SwitchPreference(it, Defaults.PREF_ABC_AFTER_EMOJI) SwitchPreference(it, Defaults.PREF_ABC_AFTER_EMOJI)
}, },

View file

@ -581,6 +581,8 @@ disposition rather than other common dispositions for Latin languages. -->
<string name="after_clip">Selecting clipboard history entry</string> <string name="after_clip">Selecting clipboard history entry</string>
<!-- Switch to main keyboard after entering a symbol in symbols layout and then pressing space or enter --> <!-- Switch to main keyboard after entering a symbol in symbols layout and then pressing space or enter -->
<string name="after_symbol_and_space">Pressing enter or space after other keys in symbols view</string> <string name="after_symbol_and_space">Pressing enter or space after other keys in symbols view</string>
<!-- Switch to main keyboard after entering something in numpad layout and then pressing space or enter -->
<string name="after_numpad_and_space">Pressing enter or space after other keys in numpad</string>
<!-- Message for selecting day or night background image --> <!-- Message for selecting day or night background image -->
<string name="day_or_night_image">Set image for day or night mode?</string> <string name="day_or_night_image">Set image for day or night mode?</string>
<!-- Button for selecting day --> <!-- Button for selecting day -->