show different Enter icon depending on the circumstances
This commit is contained in:
parent
fa62393e26
commit
87d972f3a4
|
@ -42,5 +42,5 @@ android {
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation 'com.github.SimpleMobileTools:Simple-Commons:02b48c0b4d'
|
implementation 'com.github.SimpleMobileTools:Simple-Commons:d824a8a174'
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,6 +23,8 @@ import android.graphics.drawable.Drawable
|
||||||
import android.util.SparseArray
|
import android.util.SparseArray
|
||||||
import android.util.TypedValue
|
import android.util.TypedValue
|
||||||
import android.util.Xml
|
import android.util.Xml
|
||||||
|
import android.view.inputmethod.EditorInfo
|
||||||
|
import android.view.inputmethod.EditorInfo.IME_ACTION_NONE
|
||||||
import androidx.annotation.XmlRes
|
import androidx.annotation.XmlRes
|
||||||
import com.simplemobiletools.keyboard.R
|
import com.simplemobiletools.keyboard.R
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
@ -90,6 +92,9 @@ class MyKeyboard {
|
||||||
/** Height of the screen */
|
/** Height of the screen */
|
||||||
private var mDisplayHeight = 0
|
private var mDisplayHeight = 0
|
||||||
|
|
||||||
|
/** What icon should we show at Enter key */
|
||||||
|
var mEnterKeyType = IME_ACTION_NONE
|
||||||
|
|
||||||
/** Keyboard mode, or zero, if none. */
|
/** Keyboard mode, or zero, if none. */
|
||||||
private var mKeyboardMode = 0
|
private var mKeyboardMode = 0
|
||||||
private var mCellWidth = 0
|
private var mCellWidth = 0
|
||||||
|
@ -108,7 +113,7 @@ class MyKeyboard {
|
||||||
const val EDGE_BOTTOM = 0x08
|
const val EDGE_BOTTOM = 0x08
|
||||||
const val KEYCODE_SHIFT = -1
|
const val KEYCODE_SHIFT = -1
|
||||||
const val KEYCODE_MODE_CHANGE = -2
|
const val KEYCODE_MODE_CHANGE = -2
|
||||||
const val KEYCODE_DONE = -4
|
const val KEYCODE_ENTER = -4
|
||||||
const val KEYCODE_DELETE = -5
|
const val KEYCODE_DELETE = -5
|
||||||
const val KEYCODE_ALT = -6
|
const val KEYCODE_ALT = -6
|
||||||
|
|
||||||
|
@ -392,7 +397,7 @@ class MyKeyboard {
|
||||||
* @param xmlLayoutResId the resource file that contains the keyboard layout and keys.
|
* @param xmlLayoutResId the resource file that contains the keyboard layout and keys.
|
||||||
*/
|
*/
|
||||||
@JvmOverloads
|
@JvmOverloads
|
||||||
constructor(context: Context, @XmlRes xmlLayoutResId: Int, modeId: Int = 0) {
|
constructor(context: Context, @XmlRes xmlLayoutResId: Int, enterKeyType: Int, modeId: Int = 0) {
|
||||||
val dm = context.resources.displayMetrics
|
val dm = context.resources.displayMetrics
|
||||||
mDisplayWidth = dm.widthPixels
|
mDisplayWidth = dm.widthPixels
|
||||||
mDisplayHeight = dm.heightPixels
|
mDisplayHeight = dm.heightPixels
|
||||||
|
@ -401,6 +406,7 @@ class MyKeyboard {
|
||||||
mDefaultVerticalGap = 0
|
mDefaultVerticalGap = 0
|
||||||
mDefaultHeight = mDefaultWidth
|
mDefaultHeight = mDefaultWidth
|
||||||
mKeys = ArrayList()
|
mKeys = ArrayList()
|
||||||
|
mEnterKeyType = enterKeyType
|
||||||
mKeyboardMode = modeId
|
mKeyboardMode = modeId
|
||||||
loadKeyboard(context, context.resources.getXml(xmlLayoutResId))
|
loadKeyboard(context, context.resources.getXml(xmlLayoutResId))
|
||||||
}
|
}
|
||||||
|
@ -419,7 +425,7 @@ class MyKeyboard {
|
||||||
* for each character.
|
* for each character.
|
||||||
*/
|
*/
|
||||||
constructor(context: Context, layoutTemplateResId: Int, characters: CharSequence) :
|
constructor(context: Context, layoutTemplateResId: Int, characters: CharSequence) :
|
||||||
this(context, layoutTemplateResId) {
|
this(context, layoutTemplateResId, 0) {
|
||||||
var x = 0
|
var x = 0
|
||||||
var y = 0
|
var y = 0
|
||||||
var column = 0
|
var column = 0
|
||||||
|
@ -601,6 +607,14 @@ class MyKeyboard {
|
||||||
mModifierKeys.add(key)
|
mModifierKeys.add(key)
|
||||||
} else if (key.codes[0] == KEYCODE_ALT) {
|
} else if (key.codes[0] == KEYCODE_ALT) {
|
||||||
mModifierKeys.add(key)
|
mModifierKeys.add(key)
|
||||||
|
} else if (key.codes[0] == KEYCODE_ENTER) {
|
||||||
|
val enterResourceId = when (mEnterKeyType) {
|
||||||
|
EditorInfo.IME_ACTION_SEARCH -> R.drawable.ic_search_vector
|
||||||
|
EditorInfo.IME_ACTION_NEXT, EditorInfo.IME_ACTION_GO -> R.drawable.ic_arrow_right_vector
|
||||||
|
EditorInfo.IME_ACTION_SEND -> R.drawable.ic_send_vector
|
||||||
|
else -> R.drawable.ic_enter_vector
|
||||||
|
}
|
||||||
|
key.icon = context.resources.getDrawable(enterResourceId, context.theme)
|
||||||
}
|
}
|
||||||
currentRow.mKeys.add(key)
|
currentRow.mKeys.add(key)
|
||||||
} else if (TAG_KEYBOARD == tag) {
|
} else if (TAG_KEYBOARD == tag) {
|
||||||
|
|
|
@ -21,11 +21,17 @@ class SimpleKeyboardIME : InputMethodService(), MyKeyboardView.OnKeyboardActionL
|
||||||
private val KEYBOARD_SYMBOLS = 1
|
private val KEYBOARD_SYMBOLS = 1
|
||||||
private val KEYBOARD_SYMBOLS_SHIFT = 2
|
private val KEYBOARD_SYMBOLS_SHIFT = 2
|
||||||
|
|
||||||
|
private val ENTER_DEFAULT = 0
|
||||||
|
private val ENTER_SEARCH = 1
|
||||||
|
private val ENTER_GO = 2
|
||||||
|
private val ENTER_NEXT = 3
|
||||||
|
|
||||||
private var keyboard: MyKeyboard? = null
|
private var keyboard: MyKeyboard? = null
|
||||||
private var keyboardView: MyKeyboardView? = null
|
private var keyboardView: MyKeyboardView? = null
|
||||||
private var lastShiftPressTS = 0L
|
private var lastShiftPressTS = 0L
|
||||||
private var keyboardMode = KEYBOARD_LETTERS
|
private var keyboardMode = KEYBOARD_LETTERS
|
||||||
private var inputType = InputType.TYPE_CLASS_TEXT
|
private var inputType = InputType.TYPE_CLASS_TEXT
|
||||||
|
private var enterKeyType = ENTER_DEFAULT
|
||||||
|
|
||||||
override fun onCreateInputView(): View {
|
override fun onCreateInputView(): View {
|
||||||
keyboardView = layoutInflater.inflate(R.layout.keyboard_view_keyboard, null) as MyKeyboardView
|
keyboardView = layoutInflater.inflate(R.layout.keyboard_view_keyboard, null) as MyKeyboardView
|
||||||
|
@ -37,7 +43,8 @@ class SimpleKeyboardIME : InputMethodService(), MyKeyboardView.OnKeyboardActionL
|
||||||
}
|
}
|
||||||
else -> R.xml.keys_letters
|
else -> R.xml.keys_letters
|
||||||
}
|
}
|
||||||
keyboard = MyKeyboard(this, keyboardXml)
|
|
||||||
|
keyboard = MyKeyboard(this, keyboardXml, enterKeyType)
|
||||||
keyboardView!!.setKeyboard(keyboard!!)
|
keyboardView!!.setKeyboard(keyboard!!)
|
||||||
keyboardView!!.onKeyboardActionListener = this
|
keyboardView!!.onKeyboardActionListener = this
|
||||||
return keyboardView!!
|
return keyboardView!!
|
||||||
|
@ -50,6 +57,7 @@ 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)
|
||||||
inputType = attribute!!.inputType and InputType.TYPE_MASK_CLASS
|
inputType = attribute!!.inputType and InputType.TYPE_MASK_CLASS
|
||||||
|
enterKeyType = attribute.imeOptions and (EditorInfo.IME_MASK_ACTION or EditorInfo.IME_FLAG_NO_ENTER_ACTION)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onKey(primaryCode: Int, keyCodes: IntArray?) {
|
override fun onKey(primaryCode: Int, keyCodes: IntArray?) {
|
||||||
|
@ -90,12 +98,12 @@ class SimpleKeyboardIME : InputMethodService(), MyKeyboardView.OnKeyboardActionL
|
||||||
keyboardMode = KEYBOARD_SYMBOLS
|
keyboardMode = KEYBOARD_SYMBOLS
|
||||||
R.xml.keys_symbols
|
R.xml.keys_symbols
|
||||||
}
|
}
|
||||||
keyboard = MyKeyboard(this, keyboardXml)
|
keyboard = MyKeyboard(this, keyboardXml, enterKeyType)
|
||||||
keyboardView!!.setKeyboard(keyboard!!)
|
keyboardView!!.setKeyboard(keyboard!!)
|
||||||
}
|
}
|
||||||
keyboardView!!.invalidateAllKeys()
|
keyboardView!!.invalidateAllKeys()
|
||||||
}
|
}
|
||||||
MyKeyboard.KEYCODE_DONE -> {
|
MyKeyboard.KEYCODE_ENTER -> {
|
||||||
inputConnection.sendKeyEvent(KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_ENTER))
|
inputConnection.sendKeyEvent(KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_ENTER))
|
||||||
inputConnection.sendKeyEvent(KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_ENTER))
|
inputConnection.sendKeyEvent(KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_ENTER))
|
||||||
}
|
}
|
||||||
|
@ -107,7 +115,7 @@ class SimpleKeyboardIME : InputMethodService(), MyKeyboardView.OnKeyboardActionL
|
||||||
keyboardMode = KEYBOARD_LETTERS
|
keyboardMode = KEYBOARD_LETTERS
|
||||||
R.xml.keys_letters
|
R.xml.keys_letters
|
||||||
}
|
}
|
||||||
keyboard = MyKeyboard(this, keyboardXml)
|
keyboard = MyKeyboard(this, keyboardXml, enterKeyType)
|
||||||
keyboardView!!.setKeyboard(keyboard!!)
|
keyboardView!!.setKeyboard(keyboard!!)
|
||||||
}
|
}
|
||||||
else -> {
|
else -> {
|
||||||
|
|
|
@ -899,7 +899,7 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
|
||||||
onInitializeAccessibilityEvent(event)
|
onInitializeAccessibilityEvent(event)
|
||||||
val text: String = when (code) {
|
val text: String = when (code) {
|
||||||
MyKeyboard.KEYCODE_DELETE -> context.getString(R.string.keycode_delete)
|
MyKeyboard.KEYCODE_DELETE -> context.getString(R.string.keycode_delete)
|
||||||
MyKeyboard.KEYCODE_DONE -> context.getString(R.string.keycode_enter)
|
MyKeyboard.KEYCODE_ENTER -> context.getString(R.string.keycode_enter)
|
||||||
MyKeyboard.KEYCODE_MODE_CHANGE -> context.getString(R.string.keycode_mode_change)
|
MyKeyboard.KEYCODE_MODE_CHANGE -> context.getString(R.string.keycode_mode_change)
|
||||||
MyKeyboard.KEYCODE_SHIFT -> context.getString(R.string.keycode_shift)
|
MyKeyboard.KEYCODE_SHIFT -> context.getString(R.string.keycode_shift)
|
||||||
else -> code.toChar().toString()
|
else -> code.toChar().toString()
|
||||||
|
@ -1010,7 +1010,7 @@ class MyKeyboardView @JvmOverloads constructor(context: Context, attrs: Attribut
|
||||||
val keyboard = if (popupKey.popupCharacters != null) {
|
val keyboard = if (popupKey.popupCharacters != null) {
|
||||||
MyKeyboard(context, popupKeyboardId, popupKey.popupCharacters!!)
|
MyKeyboard(context, popupKeyboardId, popupKey.popupCharacters!!)
|
||||||
} else {
|
} else {
|
||||||
MyKeyboard(context, popupKeyboardId)
|
MyKeyboard(context, popupKeyboardId, 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
mMiniKeyboard!!.setKeyboard(keyboard)
|
mMiniKeyboard!!.setKeyboard(keyboard)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||||
|
|
||||||
buildscript {
|
buildscript {
|
||||||
ext.kotlin_version = '1.5.31'
|
ext.kotlin_version = '1.6.10'
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
google()
|
google()
|
||||||
|
@ -9,7 +9,7 @@ buildscript {
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath "com.android.tools.build:gradle:7.0.3"
|
classpath "com.android.tools.build:gradle:7.0.4"
|
||||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||||
|
|
||||||
// NOTE: Do not place your application dependencies here; they belong
|
// NOTE: Do not place your application dependencies here; they belong
|
||||||
|
|
Loading…
Reference in New Issue