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 32621abf..f4663899 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 @@ -172,8 +172,8 @@ object KeyCode { fun Int.checkAndConvertCode(): Int = if (this > 0) this else when (this) { // working CURRENCY_SLOT_1, CURRENCY_SLOT_2, CURRENCY_SLOT_3, CURRENCY_SLOT_4, CURRENCY_SLOT_5, CURRENCY_SLOT_6, - 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, + 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_PASTE, CLIPBOARD_SELECT_ALL, CLIPBOARD_SELECT_WORD, TOGGLE_INCOGNITO_MODE, TOGGLE_AUTOCORRECT, MOVE_START_OF_LINE, MOVE_END_OF_LINE, MOVE_START_OF_PAGE, MOVE_END_OF_PAGE, SHIFT, CAPS_LOCK, MULTIPLE_CODE_POINTS, UNSPECIFIED, CTRL, ALT, FN, CLIPBOARD_CLEAR_HISTORY, diff --git a/app/src/main/java/helium314/keyboard/latin/ClipboardHistoryManager.kt b/app/src/main/java/helium314/keyboard/latin/ClipboardHistoryManager.kt index 8073666f..d93a44ee 100644 --- a/app/src/main/java/helium314/keyboard/latin/ClipboardHistoryManager.kt +++ b/app/src/main/java/helium314/keyboard/latin/ClipboardHistoryManager.kt @@ -199,12 +199,12 @@ class ClipboardHistoryManager( val binding = ClipboardSuggestionBinding.inflate(LayoutInflater.from(latinIME), parent, false) val textView = binding.clipboardSuggestionText textView.text = if (isClipSensitive(inputType)) "*".repeat(content.length) else content - val clipIcon = latinIME.mKeyboardSwitcher.keyboard.mIconsSet.getIconDrawable(ToolbarKey.CLIPBOARD.name.lowercase()) + val clipIcon = latinIME.mKeyboardSwitcher.keyboard.mIconsSet.getIconDrawable(ToolbarKey.PASTE.name.lowercase()) textView.setCompoundDrawablesRelativeWithIntrinsicBounds(clipIcon, null, null, null) textView.setOnClickListener { dontShowCurrentSuggestion = true latinIME.onTextInput(content.toString()) - AudioAndHapticFeedbackManager.getInstance().performHapticAndAudioFeedback(KeyCode.NOT_SPECIFIED, it); + AudioAndHapticFeedbackManager.getInstance().performHapticAndAudioFeedback(KeyCode.NOT_SPECIFIED, it) binding.root.isGone = true } val closeButton = binding.clipboardSuggestionClose 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 e5b511bb..774455cd 100644 --- a/app/src/main/java/helium314/keyboard/latin/utils/ToolbarUtils.kt +++ b/app/src/main/java/helium314/keyboard/latin/utils/ToolbarUtils.kt @@ -36,12 +36,21 @@ fun createToolbarKey(context: Context, keyboardAttr: TypedArray, key: ToolbarKey fun getCodeForToolbarKey(key: ToolbarKey) = when (key) { VOICE -> KeyCode.VOICE_INPUT - SETTINGS -> KeyCode.SETTINGS CLIPBOARD -> KeyCode.CLIPBOARD + UNDO -> KeyCode.UNDO + REDO -> KeyCode.REDO + SETTINGS -> KeyCode.SETTINGS SELECT_ALL -> KeyCode.CLIPBOARD_SELECT_ALL + SELECT_WORD -> KeyCode.CLIPBOARD_SELECT_WORD 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 + INCOGNITO -> KeyCode.TOGGLE_INCOGNITO_MODE + AUTOCORRECT -> KeyCode.TOGGLE_AUTOCORRECT + CLEAR_CLIPBOARD -> KeyCode.CLIPBOARD_CLEAR_HISTORY + CLOSE_HISTORY -> KeyCode.ALPHA + EMOJI -> KeyCode.EMOJI LEFT -> KeyCode.ARROW_LEFT RIGHT -> KeyCode.ARROW_RIGHT UP -> KeyCode.ARROW_UP @@ -50,21 +59,19 @@ fun getCodeForToolbarKey(key: ToolbarKey) = when (key) { 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 - EMOJI -> KeyCode.EMOJI } fun getCodeForToolbarKeyLongClick(key: ToolbarKey) = when (key) { + CLIPBOARD -> KeyCode.CLIPBOARD_PASTE + UNDO -> KeyCode.REDO + REDO -> KeyCode.UNDO + SELECT_WORD -> KeyCode.CLIPBOARD_SELECT_ALL + COPY -> KeyCode.CLIPBOARD_COPY_ALL + PASTE -> KeyCode.CLIPBOARD LEFT -> KeyCode.WORD_LEFT RIGHT -> KeyCode.WORD_RIGHT UP -> KeyCode.PAGE_UP @@ -73,22 +80,26 @@ fun getCodeForToolbarKeyLongClick(key: ToolbarKey) = when (key) { 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 - SELECT_WORD -> KeyCode.CLIPBOARD_SELECT_ALL - CLIPBOARD -> KeyCode.CLIPBOARD_PASTE else -> KeyCode.UNSPECIFIED } fun getStyleableIconId(key: ToolbarKey) = when (key) { VOICE -> R.styleable.Keyboard_iconShortcutKey - SETTINGS -> R.styleable.Keyboard_iconSettingsKey CLIPBOARD -> R.styleable.Keyboard_iconClipboardNormalKey + UNDO -> R.styleable.Keyboard_iconUndo + REDO -> R.styleable.Keyboard_iconRedo + SETTINGS -> R.styleable.Keyboard_iconSettingsKey SELECT_ALL -> R.styleable.Keyboard_iconSelectAll + SELECT_WORD -> R.styleable.Keyboard_iconSelectWord COPY -> R.styleable.Keyboard_iconCopyKey CUT -> R.styleable.Keyboard_iconCutKey + PASTE -> R.styleable.Keyboard_iconPasteKey ONE_HANDED -> R.styleable.Keyboard_iconStartOneHandedMode + INCOGNITO -> R.styleable.Keyboard_iconIncognitoKey + AUTOCORRECT -> R.styleable.Keyboard_iconAutoCorrect + CLEAR_CLIPBOARD -> R.styleable.Keyboard_iconClearClipboardKey + CLOSE_HISTORY -> R.styleable.Keyboard_iconClose + EMOJI -> R.styleable.Keyboard_iconEmojiNormalKey LEFT -> R.styleable.Keyboard_iconArrowLeft RIGHT -> R.styleable.Keyboard_iconArrowRight UP -> R.styleable.Keyboard_iconArrowUp @@ -97,18 +108,10 @@ fun getStyleableIconId(key: ToolbarKey) = when (key) { 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 - AUTOCORRECT -> R.styleable.Keyboard_iconAutoCorrect - 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 } fun getToolbarIconByName(name: String, context: Context): Drawable? { @@ -122,7 +125,7 @@ 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, INCOGNITO, + VOICE, CLIPBOARD, UNDO, REDO, SETTINGS, SELECT_ALL, SELECT_WORD, COPY, CUT, PASTE, 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 } @@ -130,7 +133,7 @@ enum class ToolbarKey { val toolbarKeyStrings = entries.associateWithTo(EnumMap(ToolbarKey::class.java)) { it.toString().lowercase(Locale.US) } val defaultToolbarPref by lazy { - val default = listOf(VOICE, CLIPBOARD, UNDO, REDO, SETTINGS, SELECT_ALL, SELECT_WORD, COPY, LEFT, RIGHT) + val default = listOf(SETTINGS, VOICE, CLIPBOARD, UNDO, REDO, SELECT_WORD, COPY, PASTE, LEFT, RIGHT) val others = entries.filterNot { it in default || it == CLOSE_HISTORY } default.joinToString(";") { "${it.name},true" } + ";" + others.joinToString(";") { "${it.name},false" } } @@ -140,7 +143,7 @@ val defaultPinnedToolbarPref = entries.filterNot { it == CLOSE_HISTORY }.joinToS } val defaultClipboardToolbarPref by lazy { - val default = listOf(ONE_HANDED, UNDO, UP, DOWN, LEFT, RIGHT, CLEAR_CLIPBOARD, COPY, CUT, SELECT_WORD, CLOSE_HISTORY) + val default = listOf(CLEAR_CLIPBOARD, UP, DOWN, LEFT, RIGHT, UNDO, CUT, COPY, PASTE, SELECT_WORD, CLOSE_HISTORY) val others = entries.filterNot { it in default } default.joinToString(";") { "${it.name},true" } + ";" + others.joinToString(";") { "${it.name},false" } } diff --git a/app/src/main/res/drawable/sym_keyboard_paste.xml b/app/src/main/res/drawable/sym_keyboard_paste.xml new file mode 100644 index 00000000..13b990ad --- /dev/null +++ b/app/src/main/res/drawable/sym_keyboard_paste.xml @@ -0,0 +1,13 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/sym_keyboard_paste_rounded.xml b/app/src/main/res/drawable/sym_keyboard_paste_rounded.xml new file mode 100644 index 00000000..6e57a69b --- /dev/null +++ b/app/src/main/res/drawable/sym_keyboard_paste_rounded.xml @@ -0,0 +1,15 @@ + + + + + \ 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 5b4354f9..af55e384 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -258,6 +258,7 @@ + diff --git a/app/src/main/res/values/keyboard-icons-holo.xml b/app/src/main/res/values/keyboard-icons-holo.xml index f7e2e33b..e7dc6853 100644 --- a/app/src/main/res/values/keyboard-icons-holo.xml +++ b/app/src/main/res/values/keyboard-icons-holo.xml @@ -31,6 +31,7 @@ @drawable/sym_keyboard_clipboard_holo @drawable/sym_keyboard_copy @drawable/sym_keyboard_cut + @drawable/sym_keyboard_paste @drawable/sym_keyboard_clear_clipboard_holo @drawable/sym_keyboard_start_onehanded_holo @drawable/sym_keyboard_stop_onehanded_holo 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 86a5f12b..5edb4121 100644 --- a/app/src/main/res/values/keyboard-icons-lxx-light.xml +++ b/app/src/main/res/values/keyboard-icons-lxx-light.xml @@ -36,6 +36,7 @@ @drawable/sym_keyboard_clipboard_lxx @drawable/sym_keyboard_copy @drawable/sym_keyboard_cut + @drawable/sym_keyboard_paste @drawable/sym_keyboard_clear_clipboard_lxx @drawable/sym_keyboard_start_onehanded_lxx @drawable/sym_keyboard_stop_onehanded_lxx diff --git a/app/src/main/res/values/keyboard-icons-rounded.xml b/app/src/main/res/values/keyboard-icons-rounded.xml index fc0cadd2..a11ecf7a 100644 --- a/app/src/main/res/values/keyboard-icons-rounded.xml +++ b/app/src/main/res/values/keyboard-icons-rounded.xml @@ -35,6 +35,7 @@ @drawable/sym_keyboard_clipboard_rounded @drawable/sym_keyboard_copy_rounded @drawable/sym_keyboard_cut + @drawable/sym_keyboard_paste_rounded @drawable/sym_keyboard_clear_clipboard_rounded @drawable/sym_keyboard_start_onehanded_rounded @drawable/sym_keyboard_stop_onehanded_rounded diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 301e554f..d7c5a9f2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -242,8 +242,9 @@ Select toolbar keys + @android:string/paste @android:string/copy - Cut + @android:string/cut Clipboard Clear clipboard Voice input