mirror of
https://github.com/SimpleMobileTools/Simple-Keyboard.git
synced 2025-06-05 21:49:26 +02:00
fix #16, improve Enter handling in some cases
This commit is contained in:
@ -64,7 +64,7 @@ android {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation 'com.github.SimpleMobileTools:Simple-Commons:3abc10fcdb'
|
implementation 'com.github.SimpleMobileTools:Simple-Commons:b3416c828f'
|
||||||
|
|
||||||
kapt 'androidx.room:room-compiler:2.3.0'
|
kapt 'androidx.room:room-compiler:2.3.0'
|
||||||
implementation 'androidx.room:room-runtime:2.3.0'
|
implementation 'androidx.room:room-runtime:2.3.0'
|
||||||
|
@ -2,11 +2,17 @@ package com.simplemobiletools.keyboard.services
|
|||||||
|
|
||||||
import android.inputmethodservice.InputMethodService
|
import android.inputmethodservice.InputMethodService
|
||||||
import android.text.InputType
|
import android.text.InputType
|
||||||
|
import android.text.InputType.TYPE_CLASS_DATETIME
|
||||||
|
import android.text.InputType.TYPE_CLASS_NUMBER
|
||||||
|
import android.text.InputType.TYPE_CLASS_PHONE
|
||||||
|
import android.text.InputType.TYPE_MASK_CLASS
|
||||||
import android.text.TextUtils
|
import android.text.TextUtils
|
||||||
import android.view.KeyEvent
|
import android.view.KeyEvent
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.inputmethod.EditorInfo
|
import android.view.inputmethod.EditorInfo
|
||||||
import android.view.inputmethod.EditorInfo.IME_ACTION_NONE
|
import android.view.inputmethod.EditorInfo.IME_ACTION_NONE
|
||||||
|
import android.view.inputmethod.EditorInfo.IME_FLAG_NO_ENTER_ACTION
|
||||||
|
import android.view.inputmethod.EditorInfo.IME_MASK_ACTION
|
||||||
import android.view.inputmethod.ExtractedTextRequest
|
import android.view.inputmethod.ExtractedTextRequest
|
||||||
import com.simplemobiletools.keyboard.R
|
import com.simplemobiletools.keyboard.R
|
||||||
import com.simplemobiletools.keyboard.extensions.config
|
import com.simplemobiletools.keyboard.extensions.config
|
||||||
@ -51,11 +57,11 @@ class SimpleKeyboardIME : InputMethodService(), MyKeyboardView.OnKeyboardActionL
|
|||||||
|
|
||||||
override fun onStartInput(attribute: EditorInfo?, restarting: Boolean) {
|
override fun onStartInput(attribute: EditorInfo?, restarting: Boolean) {
|
||||||
super.onStartInput(attribute, restarting)
|
super.onStartInput(attribute, restarting)
|
||||||
inputTypeClass = attribute!!.inputType and InputType.TYPE_MASK_CLASS
|
inputTypeClass = attribute!!.inputType and TYPE_MASK_CLASS
|
||||||
enterKeyType = attribute.imeOptions and (EditorInfo.IME_MASK_ACTION or EditorInfo.IME_FLAG_NO_ENTER_ACTION)
|
enterKeyType = attribute.imeOptions and (IME_MASK_ACTION or IME_FLAG_NO_ENTER_ACTION)
|
||||||
|
|
||||||
val keyboardXml = when (inputTypeClass) {
|
val keyboardXml = when (inputTypeClass) {
|
||||||
InputType.TYPE_CLASS_NUMBER, InputType.TYPE_CLASS_DATETIME, InputType.TYPE_CLASS_PHONE -> {
|
TYPE_CLASS_NUMBER, TYPE_CLASS_DATETIME, TYPE_CLASS_PHONE -> {
|
||||||
keyboardMode = KEYBOARD_SYMBOLS
|
keyboardMode = KEYBOARD_SYMBOLS
|
||||||
R.xml.keys_symbols
|
R.xml.keys_symbols
|
||||||
}
|
}
|
||||||
@ -130,8 +136,13 @@ class SimpleKeyboardIME : InputMethodService(), MyKeyboardView.OnKeyboardActionL
|
|||||||
keyboardView!!.invalidateAllKeys()
|
keyboardView!!.invalidateAllKeys()
|
||||||
}
|
}
|
||||||
MyKeyboard.KEYCODE_ENTER -> {
|
MyKeyboard.KEYCODE_ENTER -> {
|
||||||
inputConnection.sendKeyEvent(KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_ENTER))
|
val imeOptionsActionId = getImeOptionsActionId()
|
||||||
inputConnection.sendKeyEvent(KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_ENTER))
|
if (imeOptionsActionId != IME_ACTION_NONE) {
|
||||||
|
inputConnection.performEditorAction(imeOptionsActionId)
|
||||||
|
} else {
|
||||||
|
inputConnection.sendKeyEvent(KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_ENTER))
|
||||||
|
inputConnection.sendKeyEvent(KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_ENTER))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
MyKeyboard.KEYCODE_MODE_CHANGE -> {
|
MyKeyboard.KEYCODE_MODE_CHANGE -> {
|
||||||
val keyboardXml = if (keyboardMode == KEYBOARD_LETTERS) {
|
val keyboardXml = if (keyboardMode == KEYBOARD_LETTERS) {
|
||||||
@ -222,6 +233,14 @@ class SimpleKeyboardIME : InputMethodService(), MyKeyboardView.OnKeyboardActionL
|
|||||||
currentInputConnection?.setSelection(newCursorPosition, newCursorPosition)
|
currentInputConnection?.setSelection(newCursorPosition, newCursorPosition)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun getImeOptionsActionId(): Int {
|
||||||
|
return if (currentInputEditorInfo.imeOptions and IME_FLAG_NO_ENTER_ACTION != 0) {
|
||||||
|
IME_ACTION_NONE
|
||||||
|
} else {
|
||||||
|
currentInputEditorInfo.imeOptions and IME_MASK_ACTION
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun getKeyboardLayoutXML(): Int {
|
private fun getKeyboardLayoutXML(): Int {
|
||||||
return when (baseContext.config.keyboardLanguage) {
|
return when (baseContext.config.keyboardLanguage) {
|
||||||
LANGUAGE_FRENCH -> R.xml.keys_letters_french
|
LANGUAGE_FRENCH -> R.xml.keys_letters_french
|
||||||
|
Reference in New Issue
Block a user