From 419c0d847b4ce6943cace7150c4db3b7f54eaa34 Mon Sep 17 00:00:00 2001 From: Helium314 Date: Sun, 26 Jan 2025 09:48:21 +0100 Subject: [PATCH] switch from start / stop one-handed mode key codes to a toggle code mainly so there is no awkward state-dependent key code on the toolbar key --- .../keyboard/keyboard/internal/KeyboardCodesSet.java | 10 ++++++---- .../keyboard/keyboard/internal/KeyboardState.java | 6 ++---- .../internal/keyboard_parser/floris/KeyCode.kt | 7 ++++--- .../internal/keyboard_parser/floris/TextKeyData.kt | 2 +- .../helium314/keyboard/latin/KeyboardWrapperView.kt | 5 ++--- .../helium314/keyboard/latin/common/Constants.java | 3 +-- .../keyboard/latin/inputlogic/InputLogic.java | 2 +- .../helium314/keyboard/latin/utils/ToolbarUtils.kt | 2 +- 8 files changed, 18 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/helium314/keyboard/keyboard/internal/KeyboardCodesSet.java b/app/src/main/java/helium314/keyboard/keyboard/internal/KeyboardCodesSet.java index 7c21f1542..7671784e0 100644 --- a/app/src/main/java/helium314/keyboard/keyboard/internal/KeyboardCodesSet.java +++ b/app/src/main/java/helium314/keyboard/keyboard/internal/KeyboardCodesSet.java @@ -52,8 +52,9 @@ public final class KeyboardCodesSet { "key_emoji", "key_unspecified", "key_clipboard", - "key_start_onehanded", - "key_stop_onehanded", + "key_toggle_onehanded", + "key_start_onehanded", // keep name to avoid breaking custom layouts + "key_stop_onehanded", // keep name to avoid breaking custom layouts "key_switch_onehanded" }; @@ -77,8 +78,9 @@ public final class KeyboardCodesSet { KeyCode.EMOJI, KeyCode.NOT_SPECIFIED, KeyCode.CLIPBOARD, - KeyCode.START_ONE_HANDED_MODE, - KeyCode.STOP_ONE_HANDED_MODE, + KeyCode.TOGGLE_ONE_HANDED_MODE, + KeyCode.TOGGLE_ONE_HANDED_MODE, + KeyCode.TOGGLE_ONE_HANDED_MODE, KeyCode.SWITCH_ONE_HANDED_MODE }; 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 6eae4b155..ded17bdcc 100644 --- a/app/src/main/java/helium314/keyboard/keyboard/internal/KeyboardState.java +++ b/app/src/main/java/helium314/keyboard/keyboard/internal/KeyboardState.java @@ -808,10 +808,8 @@ public final class KeyboardState { toggleNumpad(false, autoCapsFlags, recapitalizeMode, false, true); } else if (code == KeyCode.SYMBOL) { setSymbolsKeyboard(); - } else if (code == KeyCode.START_ONE_HANDED_MODE) { - setOneHandedModeEnabled(true); - } else if (code == KeyCode.STOP_ONE_HANDED_MODE) { - setOneHandedModeEnabled(false); + } else if (code == KeyCode.TOGGLE_ONE_HANDED_MODE) { + setOneHandedModeEnabled(!Settings.getInstance().getCurrent().mOneHandedModeEnabled); } else if (code == KeyCode.SWITCH_ONE_HANDED_MODE) { switchOneHandedMode(); } diff --git a/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/floris/KeyCode.kt b/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/floris/KeyCode.kt index 8f39a39cc..55250513e 100644 --- a/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/floris/KeyCode.kt +++ b/app/src/main/java/helium314/keyboard/keyboard/internal/keyboard_parser/floris/KeyCode.kt @@ -125,8 +125,8 @@ object KeyCode { // heliboard only codes const val SYMBOL_ALPHA = -10001 - const val START_ONE_HANDED_MODE = -10002 - const val STOP_ONE_HANDED_MODE = -10003 + const val TOGGLE_ONE_HANDED_MODE = -10002 + const val TOGGLE_ONE_HANDED_MODE_2 = -10003 // does the same as TOGGLE_ONE_HANDED_MODE (used to be start & stop) const val SWITCH_ONE_HANDED_MODE = -10004 const val SHIFT_ENTER = -10005 const val ACTION_NEXT = -10006 @@ -179,7 +179,7 @@ object KeyCode { FN, CLIPBOARD_CLEAR_HISTORY, NUMPAD, // heliboard only - SYMBOL_ALPHA, START_ONE_HANDED_MODE, STOP_ONE_HANDED_MODE, SWITCH_ONE_HANDED_MODE, SHIFT_ENTER, + SYMBOL_ALPHA, TOGGLE_ONE_HANDED_MODE, SWITCH_ONE_HANDED_MODE, SHIFT_ENTER, ACTION_NEXT, ACTION_PREVIOUS, NOT_SPECIFIED, CLIPBOARD_COPY_ALL, WORD_LEFT, WORD_RIGHT, PAGE_UP, PAGE_DOWN, META, TAB, ESCAPE, INSERT, SLEEP, MEDIA_PLAY, MEDIA_PAUSE, MEDIA_PLAY_PAUSE, MEDIA_NEXT, MEDIA_PREVIOUS, VOL_UP, VOL_DOWN, MUTE, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, BACK @@ -189,6 +189,7 @@ object KeyCode { IME_UI_MODE_TEXT -> ALPHA VIEW_PHONE -> ALPHA // phone keyboard is treated like alphabet, just with different layout VIEW_PHONE2 -> SYMBOL + TOGGLE_ONE_HANDED_MODE_2 -> TOGGLE_ONE_HANDED_MODE else -> throw IllegalStateException("key code $this not yet supported") } 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 b26d3a08b..d22cf4c24 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 @@ -127,7 +127,7 @@ sealed interface KeyData : AbstractKeyData { if (!params.mId.mLanguageSwitchKeyEnabled && !params.mId.isNumberLayout && RichInputMethodManager.canSwitchLanguage()) keys.add("!icon/language_switch_key|!code/key_language_switch") if (!params.mId.mOneHandedModeEnabled) - keys.add("!icon/start_onehanded_mode_key|!code/key_start_onehanded") + keys.add("!icon/start_onehanded_mode_key|!code/key_toggle_onehanded") if (!params.mId.mDeviceLocked) keys.add("!icon/settings_key|!code/key_settings") return keys diff --git a/app/src/main/java/helium314/keyboard/latin/KeyboardWrapperView.kt b/app/src/main/java/helium314/keyboard/latin/KeyboardWrapperView.kt index 8393e21e9..1ffbfadfd 100644 --- a/app/src/main/java/helium314/keyboard/latin/KeyboardWrapperView.kt +++ b/app/src/main/java/helium314/keyboard/latin/KeyboardWrapperView.kt @@ -84,8 +84,7 @@ class KeyboardWrapperView @JvmOverloads constructor( if (newScale == oldScale) return@setOnTouchListener true Settings.getInstance().writeOneHandedModeScale(newScale) oneHandedModeEnabled = false // intentionally putting wrong value, so KeyboardSwitcher.setOneHandedModeEnabled does actually reload - keyboardActionListener?.onCodeInput(KeyCode.START_ONE_HANDED_MODE, - Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE, false) + KeyboardSwitcher.getInstance().setOneHandedModeEnabled(true) } else -> x = 0f } @@ -119,7 +118,7 @@ class KeyboardWrapperView @JvmOverloads constructor( override fun onClick(view: View) { if (view === stopOneHandedModeBtn) { - keyboardActionListener?.onCodeInput(KeyCode.STOP_ONE_HANDED_MODE, + keyboardActionListener?.onCodeInput(KeyCode.TOGGLE_ONE_HANDED_MODE, Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE, false /* isKeyRepeat */) } else if (view === switchOneHandedModeBtn) { 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 07685cd17..ff8ef330e 100644 --- a/app/src/main/java/helium314/keyboard/latin/common/Constants.java +++ b/app/src/main/java/helium314/keyboard/latin/common/Constants.java @@ -224,8 +224,7 @@ public final class Constants { case CODE_TAB: return "tab"; case CODE_ENTER: return "enter"; case CODE_SPACE: return "space"; - case KeyCode.START_ONE_HANDED_MODE: return "startOneHandedMode"; - case KeyCode.STOP_ONE_HANDED_MODE: return "stopOneHandedMode"; + case KeyCode.TOGGLE_ONE_HANDED_MODE: return "toggleOneHandedMode"; case KeyCode.SWITCH_ONE_HANDED_MODE: return "switchOneHandedMode"; case KeyCode.NUMPAD: return "numpad"; default: diff --git a/app/src/main/java/helium314/keyboard/latin/inputlogic/InputLogic.java b/app/src/main/java/helium314/keyboard/latin/inputlogic/InputLogic.java index d3239187a..ff782ebd8 100644 --- a/app/src/main/java/helium314/keyboard/latin/inputlogic/InputLogic.java +++ b/app/src/main/java/helium314/keyboard/latin/inputlogic/InputLogic.java @@ -779,7 +779,7 @@ public final class InputLogic { // We need to switch to the shortcut IME. This is handled by LatinIME since the // input logic has no business with IME switching. case KeyCode.CAPS_LOCK, KeyCode.SYMBOL_ALPHA, KeyCode.ALPHA, KeyCode.SYMBOL, KeyCode.NUMPAD, KeyCode.EMOJI, - KeyCode.START_ONE_HANDED_MODE, KeyCode.STOP_ONE_HANDED_MODE, KeyCode.SWITCH_ONE_HANDED_MODE, + KeyCode.TOGGLE_ONE_HANDED_MODE, KeyCode.SWITCH_ONE_HANDED_MODE, KeyCode.CTRL, KeyCode.ALT, KeyCode.FN, KeyCode.META: break; default: diff --git a/app/src/main/java/helium314/keyboard/latin/utils/ToolbarUtils.kt b/app/src/main/java/helium314/keyboard/latin/utils/ToolbarUtils.kt index 6cb94ff79..ee4126e82 100644 --- a/app/src/main/java/helium314/keyboard/latin/utils/ToolbarUtils.kt +++ b/app/src/main/java/helium314/keyboard/latin/utils/ToolbarUtils.kt @@ -60,7 +60,7 @@ fun getCodeForToolbarKey(key: ToolbarKey) = Settings.getInstance().getCustomTool COPY -> KeyCode.CLIPBOARD_COPY CUT -> KeyCode.CLIPBOARD_CUT PASTE -> KeyCode.CLIPBOARD_PASTE - ONE_HANDED -> if (Settings.getInstance().current.mOneHandedModeEnabled) KeyCode.STOP_ONE_HANDED_MODE else KeyCode.START_ONE_HANDED_MODE + ONE_HANDED -> KeyCode.TOGGLE_ONE_HANDED_MODE INCOGNITO -> KeyCode.TOGGLE_INCOGNITO_MODE AUTOCORRECT -> KeyCode.TOGGLE_AUTOCORRECT CLEAR_CLIPBOARD -> KeyCode.CLIPBOARD_CLEAR_HISTORY