Get initial sentence position state
This commit is contained in:
parent
3b0ce64b09
commit
0ec4f4b262
@ -31,7 +31,6 @@ interface IME {
|
|||||||
|
|
||||||
fun onDeleteText(beforeCursor: Int = 0, afterCursor: Int = 0, finishComposing: Boolean = false)
|
fun onDeleteText(beforeCursor: Int = 0, afterCursor: Int = 0, finishComposing: Boolean = false)
|
||||||
|
|
||||||
fun onGetTextBeforeCursor(n: Int): CharSequence?
|
|
||||||
|
|
||||||
fun onSwitchInputHandler(inputMode: InputMode)
|
fun onSwitchInputHandler(inputMode: InputMode)
|
||||||
|
|
||||||
|
@ -112,10 +112,6 @@ class WKT9IME: IME, InputMethodService() {
|
|||||||
inputHandler?.onDeleteWord(word)
|
inputHandler?.onDeleteWord(word)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onGetTextBeforeCursor(n: Int): CharSequence? {
|
|
||||||
return this.currentInputConnection?.getTextBeforeCursor(n, 0)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
|
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
|
||||||
if (keyDownStats.keyCode != keyCode) {
|
if (keyDownStats.keyCode != keyCode) {
|
||||||
keyDownStats.keyCode = keyCode
|
keyDownStats.keyCode = keyCode
|
||||||
|
@ -19,14 +19,29 @@ open class DefaultInputHandler(
|
|||||||
private var currentCapMode: Int? = null
|
private var currentCapMode: Int? = null
|
||||||
|
|
||||||
protected val punctuationMarks = listOf(" ", ". ", "? ", "! ", ", ", ": ", "; ")
|
protected val punctuationMarks = listOf(" ", ". ", "? ", "! ", ", ", ": ", "; ")
|
||||||
|
protected val sentenceDelimiters = listOf('.', '?', '!')
|
||||||
|
protected val wordDelimiters = listOf('\t', '\n', ' ', ',', ':', ';')
|
||||||
|
|
||||||
protected val tag = "WKT9"
|
protected val tag = "WKT9"
|
||||||
protected val keypad: Keypad = Keypad()
|
protected val keypad: Keypad = Keypad()
|
||||||
|
|
||||||
protected var wordStart: Boolean = true
|
protected var wordStart: Boolean = false
|
||||||
protected var sentenceStart: Boolean = true
|
protected var sentenceStart: Boolean = false
|
||||||
|
|
||||||
init {
|
init {
|
||||||
|
val textBeforeCursor = getTextBeforeCursor(15)
|
||||||
|
|
||||||
|
if (
|
||||||
|
textBeforeCursor.isNullOrEmpty() ||
|
||||||
|
textBeforeCursor.trim().isEmpty() ||
|
||||||
|
sentenceDelimiters.contains(textBeforeCursor.trim().last())
|
||||||
|
) {
|
||||||
|
sentenceStart = true
|
||||||
|
wordStart = true
|
||||||
|
} else if (wordDelimiters.contains(textBeforeCursor.last())) {
|
||||||
|
wordStart = true
|
||||||
|
}
|
||||||
|
|
||||||
wkt9.currentInputEditorInfo?.let {
|
wkt9.currentInputEditorInfo?.let {
|
||||||
val inputType = it.inputType
|
val inputType = it.inputType
|
||||||
val typeFlags = inputType.and(InputType.TYPE_MASK_FLAGS)
|
val typeFlags = inputType.and(InputType.TYPE_MASK_FLAGS)
|
||||||
@ -83,4 +98,8 @@ open class DefaultInputHandler(
|
|||||||
protected fun triggerOriginalKeyEvent(key: Key) {
|
protected fun triggerOriginalKeyEvent(key: Key) {
|
||||||
triggerKeyEvent(key.keyCode)
|
triggerKeyEvent(key.keyCode)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected fun getTextBeforeCursor(count: Int): CharSequence? {
|
||||||
|
return wkt9.currentInputConnection?.getTextBeforeCursor(count, 0)
|
||||||
|
}
|
||||||
}
|
}
|
@ -30,7 +30,7 @@ class LetterInputHandler(
|
|||||||
val ime: IME,
|
val ime: IME,
|
||||||
private var wkt9: WKT9IME,
|
private var wkt9: WKT9IME,
|
||||||
private var locale: Locale,
|
private var locale: Locale,
|
||||||
private var composeTimeout: Long
|
private var composeTimeout: Long,
|
||||||
): SpellCheckerSession.SpellCheckerSessionListener, DefaultInputHandler(wkt9), InputHandler {
|
): SpellCheckerSession.SpellCheckerSessionListener, DefaultInputHandler(wkt9), InputHandler {
|
||||||
private val db = AppDatabase.getInstance(wkt9)
|
private val db = AppDatabase.getInstance(wkt9)
|
||||||
private val wordDao = db.getWordDao()
|
private val wordDao = db.getWordDao()
|
||||||
@ -163,9 +163,6 @@ class LetterInputHandler(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun finishComposingChar() {
|
private fun finishComposingChar() {
|
||||||
val wordDelimiters = listOf(' ', ',', ':', ';')
|
|
||||||
val sentenceDelimiters = listOf('.', '?', '!')
|
|
||||||
|
|
||||||
wkt9.onCommit()
|
wkt9.onCommit()
|
||||||
|
|
||||||
if (sentenceDelimiters.contains(lastComposeChar)) {
|
if (sentenceDelimiters.contains(lastComposeChar)) {
|
||||||
|
@ -23,7 +23,7 @@ import java.util.Locale
|
|||||||
class WordInputHandler(
|
class WordInputHandler(
|
||||||
val ime: IME,
|
val ime: IME,
|
||||||
private var wkt9: WKT9IME,
|
private var wkt9: WKT9IME,
|
||||||
private var locale: Locale,
|
private var locale: Locale
|
||||||
) : DefaultInputHandler(wkt9), InputHandler {
|
) : DefaultInputHandler(wkt9), InputHandler {
|
||||||
private val codeword = StringBuilder()
|
private val codeword = StringBuilder()
|
||||||
private var staleCodeword = false
|
private var staleCodeword = false
|
||||||
|
Loading…
x
Reference in New Issue
Block a user