From ef8cd2c9ed4521fe3f61eb13d23962b80e4c6cb9 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 16 Jan 2022 20:36:20 +0100 Subject: [PATCH] add handling for TYPE_TEXT_FLAG_CAP_WORDS --- .../simplemobiletools/keyboard/helpers/MyKeyboard.kt | 1 + .../keyboard/services/SimpleKeyboardIME.kt | 12 ++++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/keyboard/helpers/MyKeyboard.kt b/app/src/main/kotlin/com/simplemobiletools/keyboard/helpers/MyKeyboard.kt index 7b05733b..ab4640a4 100644 --- a/app/src/main/kotlin/com/simplemobiletools/keyboard/helpers/MyKeyboard.kt +++ b/app/src/main/kotlin/com/simplemobiletools/keyboard/helpers/MyKeyboard.kt @@ -116,6 +116,7 @@ class MyKeyboard { const val KEYCODE_ENTER = -4 const val KEYCODE_DELETE = -5 const val KEYCODE_ALT = -6 + const val KEYCODE_SPACE = 32 // Variables for pre-computing nearest keys. private const val GRID_WIDTH = 10 diff --git a/app/src/main/kotlin/com/simplemobiletools/keyboard/services/SimpleKeyboardIME.kt b/app/src/main/kotlin/com/simplemobiletools/keyboard/services/SimpleKeyboardIME.kt index 74c7f2fb..543e8626 100644 --- a/app/src/main/kotlin/com/simplemobiletools/keyboard/services/SimpleKeyboardIME.kt +++ b/app/src/main/kotlin/com/simplemobiletools/keyboard/services/SimpleKeyboardIME.kt @@ -26,7 +26,8 @@ class SimpleKeyboardIME : InputMethodService(), MyKeyboardView.OnKeyboardActionL private var keyboardView: MyKeyboardView? = null private var lastShiftPressTS = 0L private var keyboardMode = KEYBOARD_LETTERS - private var inputType = InputType.TYPE_CLASS_TEXT + private var inputTypeClass = InputType.TYPE_CLASS_TEXT + private var inputTypeCapsMode = InputType.TYPE_CLASS_TEXT private var enterKeyType = IME_ACTION_NONE override fun onInitializeInterface() { @@ -47,16 +48,17 @@ class SimpleKeyboardIME : InputMethodService(), MyKeyboardView.OnKeyboardActionL override fun onStartInput(attribute: EditorInfo?, restarting: Boolean) { super.onStartInput(attribute, restarting) - inputType = attribute!!.inputType and InputType.TYPE_MASK_CLASS + inputTypeClass = attribute!!.inputType and InputType.TYPE_MASK_CLASS enterKeyType = attribute.imeOptions and (EditorInfo.IME_MASK_ACTION or EditorInfo.IME_FLAG_NO_ENTER_ACTION) + inputTypeCapsMode = currentInputConnection.getCursorCapsMode(attribute.inputType) - val shiftMode = when (currentInputConnection.getCursorCapsMode(attribute.inputType)) { + val shiftMode = when (inputTypeCapsMode) { InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS -> SHIFT_ON_PERMANENT InputType.TYPE_TEXT_FLAG_CAP_WORDS, InputType.TYPE_TEXT_FLAG_CAP_SENTENCES -> SHIFT_ON_ONE_CHAR else -> SHIFT_OFF } - val keyboardXml = when (inputType) { + val keyboardXml = when (inputTypeClass) { InputType.TYPE_CLASS_NUMBER, InputType.TYPE_CLASS_DATETIME, InputType.TYPE_CLASS_PHONE -> { keyboardMode = KEYBOARD_SYMBOLS R.xml.keys_symbols @@ -140,6 +142,8 @@ class SimpleKeyboardIME : InputMethodService(), MyKeyboardView.OnKeyboardActionL if (keyboard!!.shiftState == SHIFT_ON_ONE_CHAR) { keyboard!!.shiftState = SHIFT_OFF keyboardView!!.invalidateAllKeys() + } else if (primaryCode == MyKeyboard.KEYCODE_SPACE && keyboard!!.shiftState == SHIFT_OFF && inputTypeCapsMode == InputType.TYPE_TEXT_FLAG_CAP_WORDS) { + onKey(MyKeyboard.KEYCODE_SHIFT, intArrayOf(MyKeyboard.KEYCODE_SHIFT)) } } }