Get initial sentence position state

This commit is contained in:
Nehemiah of Zebulun 2023-12-04 05:19:38 -05:00
parent 3b0ce64b09
commit 0ec4f4b262
5 changed files with 24 additions and 13 deletions

View File

@ -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)

View File

@ -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

View File

@ -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)
}
} }

View File

@ -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)) {

View File

@ -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