From bcf2a52d6a85f57156bb743804410e95970ac01a Mon Sep 17 00:00:00 2001 From: Devy Ballard <69347329+devycarol@users.noreply.github.com> Date: Wed, 3 Jul 2024 14:42:33 -0600 Subject: [PATCH] More cursor keys (#933) --- README.md | 2 +- .../java/helium314/keyboard/keyboard/Key.java | 6 ++-- .../keyboard_parser/floris/KeyCode.kt | 13 ++++--- .../helium314/keyboard/latin/LatinIME.java | 4 +-- .../keyboard/latin/inputlogic/InputLogic.java | 12 +++++++ .../keyboard/latin/utils/ToolbarUtils.kt | 34 ++++++++++++++----- app/src/main/res/drawable/ic_page_down.xml | 5 +++ .../res/drawable/ic_page_down_rounded.xml | 5 +++ app/src/main/res/drawable/ic_page_end.xml | 5 +++ .../main/res/drawable/ic_page_end_rounded.xml | 5 +++ app/src/main/res/drawable/ic_page_start.xml | 5 +++ .../res/drawable/ic_page_start_rounded.xml | 5 +++ app/src/main/res/drawable/ic_page_up.xml | 5 +++ .../main/res/drawable/ic_page_up_rounded.xml | 5 +++ app/src/main/res/drawable/ic_word_left.xml | 14 ++++++++ .../res/drawable/ic_word_left_rounded.xml | 14 ++++++++ app/src/main/res/drawable/ic_word_right.xml | 5 +++ .../res/drawable/ic_word_right_rounded.xml | 5 +++ app/src/main/res/values/attrs.xml | 6 ++++ .../main/res/values/keyboard-icons-holo.xml | 6 ++++ .../res/values/keyboard-icons-lxx-light.xml | 6 ++++ .../res/values/keyboard-icons-rounded.xml | 6 ++++ app/src/main/res/values/strings.xml | 10 +++++- 23 files changed, 164 insertions(+), 19 deletions(-) create mode 100644 app/src/main/res/drawable/ic_page_down.xml create mode 100644 app/src/main/res/drawable/ic_page_down_rounded.xml create mode 100644 app/src/main/res/drawable/ic_page_end.xml create mode 100644 app/src/main/res/drawable/ic_page_end_rounded.xml create mode 100644 app/src/main/res/drawable/ic_page_start.xml create mode 100644 app/src/main/res/drawable/ic_page_start_rounded.xml create mode 100644 app/src/main/res/drawable/ic_page_up.xml create mode 100644 app/src/main/res/drawable/ic_page_up_rounded.xml create mode 100644 app/src/main/res/drawable/ic_word_left.xml create mode 100644 app/src/main/res/drawable/ic_word_left_rounded.xml create mode 100644 app/src/main/res/drawable/ic_word_right.xml create mode 100644 app/src/main/res/drawable/ic_word_right_rounded.xml diff --git a/README.md b/README.md index 6156effe..9b1eb4c0 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,7 @@ Does not use internet permission, and thus is 100% offline. ## Hidden Functionality Features that may go unnoticed, and further potentially useful information -* Long-pressing toolbar keys results in additional functionality: clipboard -> paste, move left/right -> move full left/right, move up/down -> page up/down, copy -> copy all, select word -> select all, undo <-> redo +* Long-pressing toolbar keys results in additional functionality: clipboard -> paste, move left/right -> word left/right, move up/down -> page up/down, word left/right -> line start/end, page up/down -> page start/end, copy -> copy all, select word -> select all, undo <-> redo * Long-press the Comma-key to access Clipboard View, Emoji View, One-handed Mode, Settings, or Switch Language: * Emoji View and Language Switch will disappear if you have the corresponding key enabled; * For some layouts it\'s not the Comma-key, but the key at the same position (e.g. it\'s `q` for Dvorak layout). diff --git a/app/src/main/java/helium314/keyboard/keyboard/Key.java b/app/src/main/java/helium314/keyboard/keyboard/Key.java index 2d7896ed..9cdeb36d 100644 --- a/app/src/main/java/helium314/keyboard/keyboard/Key.java +++ b/app/src/main/java/helium314/keyboard/keyboard/Key.java @@ -1171,13 +1171,15 @@ public class Key implements Comparable { if (mCode <= Constants.CODE_SPACE && mCode != KeyCode.MULTIPLE_CODE_POINTS && mIconName == null) actionFlags |= ACTION_FLAGS_NO_KEY_PREVIEW; switch (mCode) { - case KeyCode.DELETE, KeyCode.ARROW_LEFT, KeyCode.ARROW_RIGHT, KeyCode.ARROW_UP, KeyCode.ARROW_DOWN: + case KeyCode.DELETE, KeyCode.ARROW_LEFT, KeyCode.ARROW_RIGHT, KeyCode.ARROW_UP, KeyCode.ARROW_DOWN, + KeyCode.WORD_LEFT, KeyCode.WORD_RIGHT, KeyCode.PAGE_UP, KeyCode.PAGE_DOWN: // repeating is disabled if a key is configured with pop-ups if (mPopupKeys == null) actionFlags |= ACTION_FLAGS_IS_REPEATABLE; // fallthrough case KeyCode.SHIFT, Constants.CODE_ENTER, KeyCode.SHIFT_ENTER, KeyCode.ALPHA, Constants.CODE_SPACE, KeyCode.NUMPAD, - KeyCode.SYMBOL, KeyCode.SYMBOL_ALPHA, KeyCode.LANGUAGE_SWITCH, KeyCode.EMOJI, KeyCode.CLIPBOARD: + KeyCode.SYMBOL, KeyCode.SYMBOL_ALPHA, KeyCode.LANGUAGE_SWITCH, KeyCode.EMOJI, KeyCode.CLIPBOARD, + KeyCode.MOVE_START_OF_LINE, KeyCode.MOVE_END_OF_LINE, KeyCode.MOVE_START_OF_PAGE, KeyCode.MOVE_END_OF_PAGE: actionFlags |= ACTION_FLAGS_NO_KEY_PREVIEW; // no preview even if icon! } if (mCode == KeyCode.SETTINGS || mCode == KeyCode.LANGUAGE_SWITCH) 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 1ab79c5d..32621abf 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 @@ -139,6 +139,8 @@ object KeyCode { const val META = -10012 const val META_LOCK = -10013 // to be consistent with the CTRL/ALT/FN LOCK codes, not sure whether this will be used const val TAB = -10014 + const val WORD_LEFT = -10015 + const val WORD_RIGHT = -10016 const val ESCAPE = -10017 const val INSERT = -10018 const val SLEEP = -10019 @@ -163,6 +165,8 @@ object KeyCode { const val F11 = -10038 const val F12 = -10039 const val BACK = -10040 + const val SELECT_LEFT = -10041 + const val SELECT_RIGHT = -10042 /** to make sure a FlorisBoard code works when reading a JSON layout */ fun Int.checkAndConvertCode(): Int = if (this > 0) this else when (this) { @@ -171,13 +175,14 @@ object KeyCode { VOICE_INPUT, LANGUAGE_SWITCH, SETTINGS, DELETE, ALPHA, SYMBOL, EMOJI, CLIPBOARD, CLIPBOARD_CUT, UNDO, REDO, ARROW_DOWN, ARROW_UP, ARROW_RIGHT, ARROW_LEFT, CLIPBOARD_COPY, CLIPBOARD_SELECT_ALL, CLIPBOARD_SELECT_WORD, TOGGLE_INCOGNITO_MODE, TOGGLE_AUTOCORRECT, MOVE_START_OF_LINE, MOVE_END_OF_LINE, - SHIFT, CAPS_LOCK, MULTIPLE_CODE_POINTS, UNSPECIFIED, CTRL, ALT, FN, CLIPBOARD_CLEAR_HISTORY, + MOVE_START_OF_PAGE, MOVE_END_OF_PAGE, SHIFT, CAPS_LOCK, MULTIPLE_CODE_POINTS, UNSPECIFIED, CTRL, ALT, + FN, CLIPBOARD_CLEAR_HISTORY, // heliboard only SYMBOL_ALPHA, START_ONE_HANDED_MODE, STOP_ONE_HANDED_MODE, SWITCH_ONE_HANDED_MODE, SHIFT_ENTER, - ACTION_NEXT, ACTION_PREVIOUS, NOT_SPECIFIED, CLIPBOARD_COPY_ALL, 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 + 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 -> this // conversion diff --git a/app/src/main/java/helium314/keyboard/latin/LatinIME.java b/app/src/main/java/helium314/keyboard/latin/LatinIME.java index 898c4a23..950f6f46 100644 --- a/app/src/main/java/helium314/keyboard/latin/LatinIME.java +++ b/app/src/main/java/helium314/keyboard/latin/LatinIME.java @@ -1733,11 +1733,11 @@ public class LatinIME extends InputMethodService implements if (repeatCount > 0) { // No need to feedback when repeat delete/cursor keys will have no effect. switch (code) { - case KeyCode.DELETE, KeyCode.ARROW_LEFT, KeyCode.ARROW_UP: + case KeyCode.DELETE, KeyCode.ARROW_LEFT, KeyCode.ARROW_UP, KeyCode.WORD_LEFT, KeyCode.PAGE_UP: if (!mInputLogic.mConnection.canDeleteCharacters()) return; break; - case KeyCode.ARROW_RIGHT, KeyCode.ARROW_DOWN: + case KeyCode.ARROW_RIGHT, KeyCode.ARROW_DOWN, KeyCode.WORD_RIGHT, KeyCode.PAGE_DOWN: if (!mInputLogic.mConnection.canForwardDeleteCharacters()) return; break; 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 c000d133..8a032b81 100644 --- a/app/src/main/java/helium314/keyboard/latin/inputlogic/InputLogic.java +++ b/app/src/main/java/helium314/keyboard/latin/inputlogic/InputLogic.java @@ -749,6 +749,18 @@ public final class InputLogic { inputTransaction.setDidAffectContents(); } break; + case KeyCode.WORD_LEFT: + sendDownUpKeyEventWithMetaState(KeyEvent.KEYCODE_DPAD_LEFT, KeyEvent.META_CTRL_ON); + break; + case KeyCode.WORD_RIGHT: + sendDownUpKeyEventWithMetaState(KeyEvent.KEYCODE_DPAD_RIGHT, KeyEvent.META_CTRL_ON); + break; + case KeyCode.MOVE_START_OF_PAGE: + sendDownUpKeyEventWithMetaState(KeyEvent.KEYCODE_MOVE_HOME, KeyEvent.META_CTRL_ON); + break; + case KeyCode.MOVE_END_OF_PAGE: + sendDownUpKeyEventWithMetaState(KeyEvent.KEYCODE_MOVE_END, KeyEvent.META_CTRL_ON); + break; case KeyCode.UNDO: sendDownUpKeyEventWithMetaState(KeyEvent.KEYCODE_Z, KeyEvent.META_CTRL_ON); break; 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 4f8b05f0..e5b511bb 100644 --- a/app/src/main/java/helium314/keyboard/latin/utils/ToolbarUtils.kt +++ b/app/src/main/java/helium314/keyboard/latin/utils/ToolbarUtils.kt @@ -46,12 +46,18 @@ fun getCodeForToolbarKey(key: ToolbarKey) = when (key) { RIGHT -> KeyCode.ARROW_RIGHT UP -> KeyCode.ARROW_UP DOWN -> KeyCode.ARROW_DOWN + WORD_LEFT -> KeyCode.WORD_LEFT + WORD_RIGHT -> KeyCode.WORD_RIGHT + PAGE_UP -> KeyCode.PAGE_UP + PAGE_DOWN -> KeyCode.PAGE_DOWN UNDO -> KeyCode.UNDO REDO -> KeyCode.REDO INCOGNITO -> KeyCode.TOGGLE_INCOGNITO_MODE AUTOCORRECT -> KeyCode.TOGGLE_AUTOCORRECT FULL_LEFT -> KeyCode.MOVE_START_OF_LINE FULL_RIGHT -> KeyCode.MOVE_END_OF_LINE + PAGE_START -> KeyCode.MOVE_START_OF_PAGE + PAGE_END -> KeyCode.MOVE_END_OF_PAGE SELECT_WORD -> KeyCode.CLIPBOARD_SELECT_WORD CLEAR_CLIPBOARD -> KeyCode.CLIPBOARD_CLEAR_HISTORY CLOSE_HISTORY -> KeyCode.ALPHA @@ -59,10 +65,14 @@ fun getCodeForToolbarKey(key: ToolbarKey) = when (key) { } fun getCodeForToolbarKeyLongClick(key: ToolbarKey) = when (key) { - RIGHT -> KeyCode.MOVE_END_OF_LINE - LEFT -> KeyCode.MOVE_START_OF_LINE + LEFT -> KeyCode.WORD_LEFT + RIGHT -> KeyCode.WORD_RIGHT UP -> KeyCode.PAGE_UP DOWN -> KeyCode.PAGE_DOWN + WORD_LEFT -> KeyCode.MOVE_START_OF_LINE + WORD_RIGHT -> KeyCode.MOVE_END_OF_LINE + PAGE_UP -> KeyCode.MOVE_START_OF_PAGE + PAGE_DOWN -> KeyCode.MOVE_END_OF_PAGE UNDO -> KeyCode.REDO REDO -> KeyCode.UNDO COPY -> KeyCode.CLIPBOARD_COPY_ALL @@ -83,6 +93,10 @@ fun getStyleableIconId(key: ToolbarKey) = when (key) { RIGHT -> R.styleable.Keyboard_iconArrowRight UP -> R.styleable.Keyboard_iconArrowUp DOWN -> R.styleable.Keyboard_iconArrowDown + WORD_LEFT -> R.styleable.Keyboard_iconWordLeft + WORD_RIGHT -> R.styleable.Keyboard_iconWordRight + PAGE_UP -> R.styleable.Keyboard_iconPageUp + PAGE_DOWN -> R.styleable.Keyboard_iconPageDown UNDO -> R.styleable.Keyboard_iconUndo REDO -> R.styleable.Keyboard_iconRedo INCOGNITO -> R.styleable.Keyboard_iconIncognitoKey @@ -90,6 +104,8 @@ fun getStyleableIconId(key: ToolbarKey) = when (key) { CLEAR_CLIPBOARD -> R.styleable.Keyboard_iconClearClipboardKey FULL_LEFT -> R.styleable.Keyboard_iconFullLeft FULL_RIGHT -> R.styleable.Keyboard_iconFullRight + PAGE_START -> R.styleable.Keyboard_iconPageStart + PAGE_END -> R.styleable.Keyboard_iconPageEnd SELECT_WORD -> R.styleable.Keyboard_iconSelectWord CLOSE_HISTORY -> R.styleable.Keyboard_iconClose EMOJI -> R.styleable.Keyboard_iconEmojiNormalKey @@ -106,17 +122,17 @@ fun getToolbarIconByName(name: String, context: Context): Drawable? { // names need to be aligned with resources strings (using lowercase of key.name) enum class ToolbarKey { - VOICE, CLIPBOARD, UNDO, REDO, SETTINGS, SELECT_ALL, SELECT_WORD, COPY, CUT, ONE_HANDED, LEFT, RIGHT, UP, DOWN, - FULL_LEFT, FULL_RIGHT, INCOGNITO, AUTOCORRECT, CLEAR_CLIPBOARD, CLOSE_HISTORY, EMOJI + VOICE, CLIPBOARD, UNDO, REDO, SETTINGS, SELECT_ALL, SELECT_WORD, COPY, CUT, ONE_HANDED, INCOGNITO, + AUTOCORRECT, CLEAR_CLIPBOARD, CLOSE_HISTORY, EMOJI, LEFT, RIGHT, UP, DOWN, WORD_LEFT, WORD_RIGHT, + PAGE_UP, PAGE_DOWN, FULL_LEFT, FULL_RIGHT, PAGE_START, PAGE_END } val toolbarKeyStrings = entries.associateWithTo(EnumMap(ToolbarKey::class.java)) { it.toString().lowercase(Locale.US) } -val defaultToolbarPref = entries.filterNot { it == CLOSE_HISTORY }.joinToString(";") { - when (it) { - INCOGNITO, AUTOCORRECT, UP, DOWN, ONE_HANDED, FULL_LEFT, FULL_RIGHT, CUT, CLEAR_CLIPBOARD, EMOJI -> "${it.name},false" - else -> "${it.name},true" - } +val defaultToolbarPref by lazy { + val default = listOf(VOICE, CLIPBOARD, UNDO, REDO, SETTINGS, SELECT_ALL, SELECT_WORD, COPY, LEFT, RIGHT) + val others = entries.filterNot { it in default || it == CLOSE_HISTORY } + default.joinToString(";") { "${it.name},true" } + ";" + others.joinToString(";") { "${it.name},false" } } val defaultPinnedToolbarPref = entries.filterNot { it == CLOSE_HISTORY }.joinToString(";") { diff --git a/app/src/main/res/drawable/ic_page_down.xml b/app/src/main/res/drawable/ic_page_down.xml new file mode 100644 index 00000000..34392725 --- /dev/null +++ b/app/src/main/res/drawable/ic_page_down.xml @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_page_down_rounded.xml b/app/src/main/res/drawable/ic_page_down_rounded.xml new file mode 100644 index 00000000..4136f541 --- /dev/null +++ b/app/src/main/res/drawable/ic_page_down_rounded.xml @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_page_end.xml b/app/src/main/res/drawable/ic_page_end.xml new file mode 100644 index 00000000..b88115f6 --- /dev/null +++ b/app/src/main/res/drawable/ic_page_end.xml @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_page_end_rounded.xml b/app/src/main/res/drawable/ic_page_end_rounded.xml new file mode 100644 index 00000000..077104be --- /dev/null +++ b/app/src/main/res/drawable/ic_page_end_rounded.xml @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_page_start.xml b/app/src/main/res/drawable/ic_page_start.xml new file mode 100644 index 00000000..15f8a6ee --- /dev/null +++ b/app/src/main/res/drawable/ic_page_start.xml @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_page_start_rounded.xml b/app/src/main/res/drawable/ic_page_start_rounded.xml new file mode 100644 index 00000000..e12f8c8d --- /dev/null +++ b/app/src/main/res/drawable/ic_page_start_rounded.xml @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_page_up.xml b/app/src/main/res/drawable/ic_page_up.xml new file mode 100644 index 00000000..7cc26b39 --- /dev/null +++ b/app/src/main/res/drawable/ic_page_up.xml @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_page_up_rounded.xml b/app/src/main/res/drawable/ic_page_up_rounded.xml new file mode 100644 index 00000000..8ec7eaac --- /dev/null +++ b/app/src/main/res/drawable/ic_page_up_rounded.xml @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_word_left.xml b/app/src/main/res/drawable/ic_word_left.xml new file mode 100644 index 00000000..bfd5809d --- /dev/null +++ b/app/src/main/res/drawable/ic_word_left.xml @@ -0,0 +1,14 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_word_left_rounded.xml b/app/src/main/res/drawable/ic_word_left_rounded.xml new file mode 100644 index 00000000..13755604 --- /dev/null +++ b/app/src/main/res/drawable/ic_word_left_rounded.xml @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_word_right.xml b/app/src/main/res/drawable/ic_word_right.xml new file mode 100644 index 00000000..3bfc5d81 --- /dev/null +++ b/app/src/main/res/drawable/ic_word_right.xml @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_word_right_rounded.xml b/app/src/main/res/drawable/ic_word_right_rounded.xml new file mode 100644 index 00000000..752da6d9 --- /dev/null +++ b/app/src/main/res/drawable/ic_word_right_rounded.xml @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index e21e2fa3..5b4354f9 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -270,8 +270,14 @@ + + + + + + diff --git a/app/src/main/res/values/keyboard-icons-holo.xml b/app/src/main/res/values/keyboard-icons-holo.xml index 58a52048..f7e2e33b 100644 --- a/app/src/main/res/values/keyboard-icons-holo.xml +++ b/app/src/main/res/values/keyboard-icons-holo.xml @@ -43,11 +43,17 @@ @drawable/ic_dpad_right @drawable/ic_dpad_up @drawable/ic_dpad_down + @drawable/ic_word_left + @drawable/ic_word_right + @drawable/ic_page_up + @drawable/ic_page_down @drawable/ic_delete @drawable/ic_undo @drawable/ic_redo @drawable/ic_to_start @drawable/ic_to_end + @drawable/ic_page_start + @drawable/ic_page_end @drawable/ic_select @drawable/ic_close diff --git a/app/src/main/res/values/keyboard-icons-lxx-light.xml b/app/src/main/res/values/keyboard-icons-lxx-light.xml index 237a3e86..86a5f12b 100644 --- a/app/src/main/res/values/keyboard-icons-lxx-light.xml +++ b/app/src/main/res/values/keyboard-icons-lxx-light.xml @@ -48,11 +48,17 @@ @drawable/ic_dpad_right @drawable/ic_dpad_up @drawable/ic_dpad_down + @drawable/ic_word_left + @drawable/ic_word_right + @drawable/ic_page_up + @drawable/ic_page_down @drawable/ic_delete @drawable/ic_undo @drawable/ic_redo @drawable/ic_to_start @drawable/ic_to_end + @drawable/ic_page_start + @drawable/ic_page_end @drawable/ic_select @drawable/ic_close diff --git a/app/src/main/res/values/keyboard-icons-rounded.xml b/app/src/main/res/values/keyboard-icons-rounded.xml index dcf571c4..fc0cadd2 100644 --- a/app/src/main/res/values/keyboard-icons-rounded.xml +++ b/app/src/main/res/values/keyboard-icons-rounded.xml @@ -47,11 +47,17 @@ @drawable/ic_dpad_right_rounded @drawable/ic_dpad_up_rounded @drawable/ic_dpad_down_rounded + @drawable/ic_word_left_rounded + @drawable/ic_word_right_rounded + @drawable/ic_page_up_rounded + @drawable/ic_page_down_rounded @drawable/ic_delete_rounded @drawable/ic_undo_rounded @drawable/ic_redo_rounded @drawable/ic_to_start_rounded @drawable/ic_to_end_rounded + @drawable/ic_page_start_rounded + @drawable/ic_page_end_rounded @drawable/ic_select_rounded @drawable/ic_close diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 416f63b6..ce145439 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -249,10 +249,16 @@ One-handed mode Full left Full right + Page start + Page end Left Right Up Down + Word left + Word right + Page up + Page down Undo Redo Close clipboard history @@ -788,8 +794,10 @@ New dictionary: ► Long-pressing pinned toolbar keys results in additional functionality: <br> \n\t• clipboard &#65515; paste <br> -\n\t• move left/right &#65515; move full left/right <br> +\n\t• move left/right &#65515; word left/right <br> \n\t• move up/down &#65515; page up/down <br> +\n\t• word left/right &#65515; line start/end <br> +\n\t• page up/down &#65515; page start/end <br> \n\t• copy &#65515; copy all <br> \n\t• select word &#65515; select all <br> \n\t• undo &#8596; redo <br> <br>