@@ -13,29 +13,35 @@ import androidx.savedstate.SavedStateRegistry
1313import androidx.savedstate.SavedStateRegistryController
1414import androidx.savedstate.SavedStateRegistryOwner
1515import androidx.savedstate.setViewTreeSavedStateRegistryOwner
16- import com.thelightphone.lp3Keyboard.ui.DefaultLp3KeyboardViewModel
16+ import com.thelightphone.lp3Keyboard.ui.Lp3KeyboardSwipeCallback
1717import com.thelightphone.lp3Keyboard.ui.Lp3KeyboardView
18- import com.thelightphone.lp3Keyboard.ui.Lp3RepeatableKeyboardCallback
1918import com.thelightphone.lp3Keyboard.ui.SpecialKey
19+ import com.thelightphone.lp3Keyboard.ui.viewmodel.EnQwertyLp3KeyboardViewModel
20+ import com.thelightphone.lp3Keyboard.ui.viewmodel.Lp3RepeatableKeyboardCallback
2021
2122class IMEService : LifecycleInputMethodService (),
2223 ViewModelStoreOwner ,
2324 SavedStateRegistryOwner ,
2425 Lp3RepeatableKeyboardCallback {
2526
26- private val viewModel: DefaultLp3KeyboardViewModel by lazy {
27+ private val viewModel: EnQwertyLp3KeyboardViewModel < * > by lazy {
2728 val factory = object : ViewModelProvider .Factory {
2829 @Suppress(" UNCHECKED_CAST" )
2930 override fun <T : androidx.lifecycle.ViewModel > create (modelClass : Class <T >): T {
30- return DefaultLp3KeyboardViewModel (this @IMEService, ::tick) as T
31+ val dummySwipeCallback = object : Lp3KeyboardSwipeCallback <Unit > {}
32+ return EnQwertyLp3KeyboardViewModel (
33+ this @IMEService,
34+ dummySwipeCallback,
35+ ::tick
36+ ) as T
3137 }
3238 }
33- ViewModelProvider (store, factory)[DefaultLp3KeyboardViewModel ::class .java]
39+ ViewModelProvider (store, factory)[EnQwertyLp3KeyboardViewModel ::class .java]
3440 }
3541
3642 override fun onCreateInputView (): View {
3743 val view = Lp3KeyboardView (this , viewModel)
38- setCandidatesViewShown(false );
44+ setCandidatesViewShown(false )
3945 window?.window?.apply {
4046 decorView.let { decorView ->
4147 decorView.setViewTreeLifecycleOwner(this @IMEService)
@@ -65,7 +71,7 @@ class IMEService : LifecycleInputMethodService(),
6571 private val vibrator by lazy { getSystemService(Vibrator ::class .java) }
6672
6773 private fun tick () {
68- // 50ms feels good on LP# , other device motors may allow faster buzz
74+ // 50ms feels good on LP3 , other device motors may allow faster buzz
6975 vibrator.vibrate(50 )
7076 }
7177
@@ -94,6 +100,10 @@ class IMEService : LifecycleInputMethodService(),
94100 override fun onKeyPressed (code : Int ) {
95101 }
96102
103+ override fun onSubmitWord (word : CharSequence ) {
104+ currentInputConnection?.commitText(" $word " , 1 )
105+ }
106+
97107 override fun onSpecialKeyPressed (key : SpecialKey ) {
98108 when (key) {
99109 SpecialKey .Space -> {
@@ -116,7 +126,8 @@ class IMEService : LifecycleInputMethodService(),
116126 SpecialKey .Backspace -> {
117127 val ic = currentInputConnection ? : return
118128 val before = ic.getTextBeforeCursor(1 , 0 )
119- val charsToDelete = if (before != null && before.isNotEmpty() && Character .isLowSurrogate(before[0 ])) 2 else 1
129+ val charsToDelete =
130+ if (! before.isNullOrEmpty() && Character .isLowSurrogate(before[0 ])) 2 else 1
120131 ic.deleteSurroundingText(charsToDelete, 0 )
121132 updateCapsMode()
122133 }
@@ -168,6 +179,7 @@ class IMEService : LifecycleInputMethodService(),
168179 currentInputConnection?.commitText(" " , 1 )
169180 updateCapsMode()
170181 }
182+
171183 SpecialKey .Backspace -> {
172184 deletePrecedingWord()
173185 }
0 commit comments