Skip to content

Commit e45399d

Browse files
committed
refactor: judge key up state by modifiers
1 parent 19c5cab commit e45399d

File tree

5 files changed

+8
-14
lines changed

5 files changed

+8
-14
lines changed

app/src/main/java/com/osfans/trime/core/KeyModifier.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ value class KeyModifiers(
6565
val meta get() = has(KeyModifier.Meta)
6666
val capsLock get() = has(KeyModifier.Lock)
6767

68+
val release get() = has(KeyModifier.Release)
69+
6870
val metaState: Int get() {
6971
var metaState = 0
7072
if (alt) metaState = KeyEvent.META_ALT_ON or KeyEvent.META_ALT_LEFT_ON

app/src/main/java/com/osfans/trime/core/Rime.kt

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -77,29 +77,27 @@ class Rime :
7777
override suspend fun processKey(
7878
value: Int,
7979
modifiers: UInt,
80-
up: Boolean,
8180
): Boolean =
8281
withRimeContext {
8382
processRimeKey(value, modifiers.toInt()).also {
8483
if (it) {
8584
ipcResponseCallback()
8685
} else {
87-
keyEventCallback(KeyValue(value), KeyModifiers(modifiers), up)
86+
keyEventCallback(KeyValue(value), KeyModifiers(modifiers))
8887
}
8988
}
9089
}
9190

9291
override suspend fun processKey(
9392
value: KeyValue,
9493
modifiers: KeyModifiers,
95-
up: Boolean,
9694
): Boolean =
9795
withRimeContext {
9896
processRimeKey(value.value, modifiers.toInt()).also {
9997
if (it) {
10098
ipcResponseCallback()
10199
} else {
102-
keyEventCallback(value, modifiers, up)
100+
keyEventCallback(value, modifiers)
103101
}
104102
}
105103
}
@@ -468,9 +466,8 @@ class Rime :
468466
private fun keyEventCallback(
469467
value: KeyValue,
470468
modifiers: KeyModifiers,
471-
up: Boolean,
472469
) {
473-
handleRimeEvent(RimeEvent.EventType.Key, RimeEvent.KeyEvent.Data(value, modifiers, value.value, up))
470+
handleRimeEvent(RimeEvent.EventType.Key, RimeEvent.KeyEvent.Data(value, modifiers, value.value))
474471
}
475472

476473
private fun <T> handleRimeEvent(

app/src/main/java/com/osfans/trime/core/RimeApi.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,11 @@ interface RimeApi {
2222
suspend fun processKey(
2323
value: Int,
2424
modifiers: UInt = 0u,
25-
up: Boolean = false,
2625
): Boolean
2726

2827
suspend fun processKey(
2928
value: KeyValue,
3029
modifiers: KeyModifiers,
31-
up: Boolean = false,
3230
): Boolean
3331

3432
suspend fun selectCandidate(idx: Int): Boolean

app/src/main/java/com/osfans/trime/core/RimeEvent.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ sealed class RimeEvent<T>(
3131
val value: KeyValue,
3232
val modifiers: KeyModifiers,
3333
val unicode: Int,
34-
val up: Boolean,
3534
)
3635
}
3736

app/src/main/java/com/osfans/trime/ime/core/TrimeInputMethodService.kt

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import android.text.InputType
1616
import android.view.InputDevice
1717
import android.view.KeyCharacterMap
1818
import android.view.KeyEvent
19-
import android.view.MotionEvent
2019
import android.view.View
2120
import android.view.ViewGroup
2221
import android.view.Window
@@ -245,7 +244,7 @@ open class TrimeInputMethodService : LifecycleInputMethodService() {
245244
return
246245
}
247246
val eventTime = SystemClock.uptimeMillis()
248-
if (it.up) {
247+
if (it.modifiers.release) {
249248
sendUpKeyEvent(eventTime, keyCode, it.modifiers.metaState)
250249
} else {
251250
sendDownKeyEvent(eventTime, keyCode, it.modifiers.metaState)
@@ -714,19 +713,18 @@ open class TrimeInputMethodService : LifecycleInputMethodService() {
714713
}
715714

716715
private fun forwardKeyEvent(event: KeyEvent): Boolean {
717-
val up = event.action == MotionEvent.ACTION_UP
718716
val modifiers = KeyModifiers.fromKeyEvent(event)
719717
val charCode = event.unicodeChar
720718
if (charCode > 0 && charCode != '\t'.code && charCode != '\n'.code) {
721719
postRimeJob {
722-
processKey(charCode, modifiers.modifiers, up)
720+
processKey(charCode, modifiers.modifiers)
723721
}
724722
return true
725723
}
726724
val keyVal = KeyValue.fromKeyEvent(event)
727725
if (keyVal.value != RimeKeyMapping.RimeKey_VoidSymbol) {
728726
postRimeJob {
729-
processKey(keyVal, modifiers, up)
727+
processKey(keyVal, modifiers)
730728
}
731729
return true
732730
}

0 commit comments

Comments
 (0)