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