update key labels

remove emoji label, not necessary any more as it's a toolbar key
access toolbar labels via enum map
allow CLIPBOARD_CUT key(code)
This commit is contained in:
Helium314 2024-06-14 17:44:32 +02:00
parent 61cff40d3c
commit 3eafce9265
5 changed files with 16 additions and 12 deletions

View file

@ -19,10 +19,12 @@ import helium314.keyboard.latin.utils.POPUP_KEYS_LAYOUT
import helium314.keyboard.latin.utils.POPUP_KEYS_NUMBER import helium314.keyboard.latin.utils.POPUP_KEYS_NUMBER
import helium314.keyboard.latin.utils.ScriptUtils import helium314.keyboard.latin.utils.ScriptUtils
import helium314.keyboard.latin.utils.ScriptUtils.script import helium314.keyboard.latin.utils.ScriptUtils.script
import helium314.keyboard.latin.utils.ToolbarKey
import helium314.keyboard.latin.utils.removeFirst import helium314.keyboard.latin.utils.removeFirst
import helium314.keyboard.latin.utils.replaceFirst import helium314.keyboard.latin.utils.replaceFirst
import helium314.keyboard.latin.utils.splitAt import helium314.keyboard.latin.utils.splitAt
import helium314.keyboard.latin.utils.sumOf import helium314.keyboard.latin.utils.sumOf
import helium314.keyboard.latin.utils.toolbarKeyStrings
/** /**
* Abstract parser class that handles creation of keyboard from [KeyData] arranged in rows, * Abstract parser class that handles creation of keyboard from [KeyData] arranged in rows,
@ -199,7 +201,7 @@ class KeyboardParser(private val params: KeyboardParams, private val context: Co
if (!Settings.getInstance().current.mHasCustomFunctionalLayout) { if (!Settings.getInstance().current.mHasCustomFunctionalLayout) {
// remove keys that should only exist on specific layouts or depend on setting (emoji, numpad, language switch) // remove keys that should only exist on specific layouts or depend on setting (emoji, numpad, language switch)
if (!Settings.getInstance().current.mShowsEmojiKey || !params.mId.isAlphabetKeyboard) if (!Settings.getInstance().current.mShowsEmojiKey || !params.mId.isAlphabetKeyboard)
functionalKeysBottom.removeFirst { it.label == KeyLabel.EMOJI } functionalKeysBottom.removeFirst { it.label == toolbarKeyStrings[ToolbarKey.EMOJI] }
if (!Settings.getInstance().current.isLanguageSwitchKeyEnabled || !params.mId.isAlphabetKeyboard) if (!Settings.getInstance().current.isLanguageSwitchKeyEnabled || !params.mId.isAlphabetKeyboard)
functionalKeysBottom.removeFirst { it.label == KeyLabel.LANGUAGE_SWITCH } functionalKeysBottom.removeFirst { it.label == KeyLabel.LANGUAGE_SWITCH }
if (params.mId.mElementId != KeyboardId.ELEMENT_SYMBOLS) if (params.mId.mElementId != KeyboardId.ELEMENT_SYMBOLS)

View file

@ -144,7 +144,7 @@ object KeyCode {
fun Int.checkAndConvertCode(): Int = if (this > 0) this else when (this) { fun Int.checkAndConvertCode(): Int = if (this > 0) this else when (this) {
// working // working
CURRENCY_SLOT_1, CURRENCY_SLOT_2, CURRENCY_SLOT_3, CURRENCY_SLOT_4, CURRENCY_SLOT_5, CURRENCY_SLOT_6, 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, 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, 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, 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, SHIFT, CAPS_LOCK, MULTIPLE_CODE_POINTS, UNSPECIFIED, CTRL, ALT, FN, CLIPBOARD_CLEAR_HISTORY,

View file

@ -1,10 +1,11 @@
package helium314.keyboard.keyboard.internal.keyboard_parser.floris package helium314.keyboard.keyboard.internal.keyboard_parser.floris
import helium314.keyboard.keyboard.internal.KeyboardParams import helium314.keyboard.keyboard.internal.KeyboardParams
import helium314.keyboard.latin.utils.ToolbarKey
import helium314.keyboard.latin.utils.toolbarKeyStrings
/** labels for functional / special keys */ /** labels for functional / special keys */
object KeyLabel { object KeyLabel {
const val EMOJI = "emoji"
const val COM = "com" const val COM = "com"
const val LANGUAGE_SWITCH = "language_switch" const val LANGUAGE_SWITCH = "language_switch"
const val ACTION = "action" const val ACTION = "action"
@ -38,8 +39,8 @@ object KeyLabel {
"view_numeric_advanced" -> NUMPAD "view_numeric_advanced" -> NUMPAD
"view_phone" -> ALPHA // phone keyboard is treated like alphabet, just with different layout "view_phone" -> ALPHA // phone keyboard is treated like alphabet, just with different layout
"view_phone2" -> SYMBOL // phone symbols "view_phone2" -> SYMBOL // phone symbols
"ime_ui_mode_media" -> EMOJI "ime_ui_mode_media" -> toolbarKeyStrings[ToolbarKey.EMOJI]!!
"ime_ui_mode_clipboard" -> "clipboard" // todo: is this supported? when yes -> add to readme, and add a test "ime_ui_mode_clipboard" -> toolbarKeyStrings[ToolbarKey.CLIPBOARD]!!
"ime_ui_mode_text" -> ALPHA "ime_ui_mode_text" -> ALPHA
"currency_slot_1" -> CURRENCY "currency_slot_1" -> CURRENCY
"currency_slot_2" -> CURRENCY1 "currency_slot_2" -> CURRENCY1

View file

@ -427,8 +427,8 @@ sealed interface KeyData : AbstractKeyData {
// functional keys // functional keys
when (label) { // or use code? when (label) { // or use code?
KeyLabel.SYMBOL_ALPHA, KeyLabel.SYMBOL, KeyLabel.ALPHA, KeyLabel.COMMA, KeyLabel.PERIOD, KeyLabel.DELETE, KeyLabel.SYMBOL_ALPHA, KeyLabel.SYMBOL, KeyLabel.ALPHA, KeyLabel.COMMA, KeyLabel.PERIOD, KeyLabel.DELETE,
KeyLabel.EMOJI, KeyLabel.COM, KeyLabel.LANGUAGE_SWITCH, KeyLabel.NUMPAD, KeyLabel.CTRL, KeyLabel.ALT, KeyLabel.COM, KeyLabel.LANGUAGE_SWITCH, KeyLabel.NUMPAD, KeyLabel.CTRL, KeyLabel.ALT,
KeyLabel.FN, KeyLabel.META -> return Key.BACKGROUND_TYPE_FUNCTIONAL KeyLabel.FN, KeyLabel.META, toolbarKeyStrings[ToolbarKey.EMOJI] -> return Key.BACKGROUND_TYPE_FUNCTIONAL
KeyLabel.SPACE, KeyLabel.ZWNJ -> return Key.BACKGROUND_TYPE_SPACEBAR KeyLabel.SPACE, KeyLabel.ZWNJ -> return Key.BACKGROUND_TYPE_SPACEBAR
KeyLabel.ACTION -> return Key.BACKGROUND_TYPE_ACTION KeyLabel.ACTION -> return Key.BACKGROUND_TYPE_ACTION
KeyLabel.SHIFT -> return getShiftBackground(params) KeyLabel.SHIFT -> return getShiftBackground(params)
@ -465,7 +465,7 @@ sealed interface KeyData : AbstractKeyData {
KeyLabel.ACTION -> "${getActionKeyLabel(params)}|${getActionKeyCode(params)}" KeyLabel.ACTION -> "${getActionKeyLabel(params)}|${getActionKeyCode(params)}"
KeyLabel.DELETE -> "!icon/delete_key|!code/key_delete" KeyLabel.DELETE -> "!icon/delete_key|!code/key_delete"
KeyLabel.SHIFT -> "${getShiftLabel(params)}|!code/key_shift" KeyLabel.SHIFT -> "${getShiftLabel(params)}|!code/key_shift"
KeyLabel.EMOJI -> "!icon/emoji_normal_key|!code/key_emoji" // KeyLabel.EMOJI -> "!icon/emoji_normal_key|!code/key_emoji"
// todo (later): label and popupKeys for .com should be in localeKeyTexts, handled similar to currency key // todo (later): label and popupKeys for .com should be in localeKeyTexts, handled similar to currency key
KeyLabel.COM -> ".com" KeyLabel.COM -> ".com"
KeyLabel.LANGUAGE_SWITCH -> "!icon/language_switch_key|!code/key_language_switch" KeyLabel.LANGUAGE_SWITCH -> "!icon/language_switch_key|!code/key_language_switch"
@ -480,7 +480,7 @@ sealed interface KeyData : AbstractKeyData {
KeyLabel.CTRL, KeyLabel.ALT, KeyLabel.FN, KeyLabel.META -> label.uppercase(Locale.US) KeyLabel.CTRL, KeyLabel.ALT, KeyLabel.FN, KeyLabel.META -> label.uppercase(Locale.US)
KeyLabel.TAB -> "!icon/tab_key|" KeyLabel.TAB -> "!icon/tab_key|"
else -> { else -> {
if (label in toolbarKeyStrings) { if (label in toolbarKeyStrings.values) {
"!icon/$label|" "!icon/$label|"
} else label } else label
} }
@ -498,7 +498,7 @@ sealed interface KeyData : AbstractKeyData {
KeyLabel.META -> KeyCode.META KeyLabel.META -> KeyCode.META
KeyLabel.TAB -> KeyCode.TAB KeyLabel.TAB -> KeyCode.TAB
else -> { else -> {
if (label in toolbarKeyStrings) { if (label in toolbarKeyStrings.values) {
getCodeForToolbarKey(ToolbarKey.valueOf(label.uppercase(Locale.US))) getCodeForToolbarKey(ToolbarKey.valueOf(label.uppercase(Locale.US)))
} else code } else code
} }
@ -519,7 +519,7 @@ sealed interface KeyData : AbstractKeyData {
} }
KeyLabel.SPACE -> if (params.mId.isNumberLayout) Key.LABEL_FLAGS_ALIGN_ICON_TO_BOTTOM else 0 KeyLabel.SPACE -> if (params.mId.isNumberLayout) Key.LABEL_FLAGS_ALIGN_ICON_TO_BOTTOM else 0
KeyLabel.SHIFT -> Key.LABEL_FLAGS_PRESERVE_CASE or if (!params.mId.isAlphabetKeyboard) Key.LABEL_FLAGS_FOLLOW_FUNCTIONAL_TEXT_COLOR else 0 KeyLabel.SHIFT -> Key.LABEL_FLAGS_PRESERVE_CASE or if (!params.mId.isAlphabetKeyboard) Key.LABEL_FLAGS_FOLLOW_FUNCTIONAL_TEXT_COLOR else 0
KeyLabel.EMOJI -> KeyboardTheme.getThemeActionAndEmojiKeyLabelFlags(params.mThemeId) toolbarKeyStrings[ToolbarKey.EMOJI] -> KeyboardTheme.getThemeActionAndEmojiKeyLabelFlags(params.mThemeId)
KeyLabel.COM -> Key.LABEL_FLAGS_AUTO_X_SCALE or Key.LABEL_FLAGS_FONT_NORMAL or Key.LABEL_FLAGS_HAS_POPUP_HINT or Key.LABEL_FLAGS_PRESERVE_CASE KeyLabel.COM -> Key.LABEL_FLAGS_AUTO_X_SCALE or Key.LABEL_FLAGS_FONT_NORMAL or Key.LABEL_FLAGS_HAS_POPUP_HINT or Key.LABEL_FLAGS_PRESERVE_CASE
KeyLabel.ZWNJ -> Key.LABEL_FLAGS_HAS_POPUP_HINT KeyLabel.ZWNJ -> Key.LABEL_FLAGS_HAS_POPUP_HINT
KeyLabel.CURRENCY -> Key.LABEL_FLAGS_FOLLOW_KEY_LETTER_RATIO KeyLabel.CURRENCY -> Key.LABEL_FLAGS_FOLLOW_KEY_LETTER_RATIO

View file

@ -14,6 +14,7 @@ import helium314.keyboard.keyboard.internal.keyboard_parser.floris.KeyCode
import helium314.keyboard.latin.R import helium314.keyboard.latin.R
import helium314.keyboard.latin.settings.Settings import helium314.keyboard.latin.settings.Settings
import helium314.keyboard.latin.utils.ToolbarKey.* import helium314.keyboard.latin.utils.ToolbarKey.*
import java.util.EnumMap
import java.util.Locale import java.util.Locale
fun createToolbarKey(context: Context, keyboardAttr: TypedArray, key: ToolbarKey): ImageButton { fun createToolbarKey(context: Context, keyboardAttr: TypedArray, key: ToolbarKey): ImageButton {
@ -114,7 +115,7 @@ enum class ToolbarKey {
FULL_LEFT, FULL_RIGHT, INCOGNITO, AUTOCORRECT, CLEAR_CLIPBOARD, CLOSE_HISTORY, EMOJI FULL_LEFT, FULL_RIGHT, INCOGNITO, AUTOCORRECT, CLEAR_CLIPBOARD, CLOSE_HISTORY, EMOJI
} }
val toolbarKeyStrings: Set<String> = entries.mapTo(HashSet()) { it.toString().lowercase(Locale.US) } val toolbarKeyStrings = entries.associateWithTo(EnumMap(ToolbarKey::class.java)) { it.toString().lowercase(Locale.US) }
val defaultToolbarPref = entries.filterNot { it == CLOSE_HISTORY }.joinToString(";") { val defaultToolbarPref = entries.filterNot { it == CLOSE_HISTORY }.joinToString(";") {
when (it) { when (it) {