Skip to content

Commit 1332be0

Browse files
committed
refactor: remove rime keycode to unicode mapping
We don't actually need this. - Move external functions about key event into RimeKeyEvent
1 parent 5fb4323 commit 1332be0

File tree

9 files changed

+30
-967
lines changed

9 files changed

+30
-967
lines changed

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

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -414,14 +414,6 @@ class Rime :
414414
external fun getRimeUserId(): String?
415415

416416
// key_table
417-
@JvmStatic
418-
external fun getRimeModifierByName(name: String): Int
419-
420-
@JvmStatic
421-
external fun getRimeKeycodeByName(name: String): Int
422-
423-
@JvmStatic
424-
external fun getRimeKeyUnicode(keycode: Int): Int
425417

426418
@JvmStatic
427419
external fun getAvailableRimeSchemaList(): Array<SchemaItem>
@@ -470,10 +462,9 @@ class Rime :
470462
value: Int,
471463
modifiers: Int,
472464
) {
473-
val unicode = getRimeKeyUnicode(value)
474465
handleRimeMessage(
475466
5, // RimeMessage.MessageType.Key,
476-
arrayOf(value, modifiers, unicode),
467+
arrayOf(value, modifiers),
477468
)
478469
}
479470

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,11 @@ data class RimeKeyEvent(
2121

2222
@JvmStatic
2323
external fun parse(repr: String): RimeKeyEvent
24+
25+
@JvmStatic
26+
external fun getKeycodeByName(name: String): Int
27+
28+
@JvmStatic
29+
external fun getModifierByName(name: String): Int
2430
}
2531
}

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,6 @@ sealed class RimeMessage<T>(
8989
data class Data(
9090
val value: KeyValue,
9191
val modifiers: KeyModifiers,
92-
val unicode: Int,
9392
)
9493
}
9594

@@ -139,7 +138,6 @@ sealed class RimeMessage<T>(
139138
KeyMessage.Data(
140139
KeyValue(params[0] as Int),
141140
KeyModifiers.of(params[1] as Int),
142-
params[2] as Int,
143141
),
144142
)
145143
else -> UnknownMessage(params)

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -270,8 +270,11 @@ open class TrimeInputMethodService : LifecycleInputMethodService() {
270270
}
271271
}
272272
} else {
273-
if (!it.modifiers.release && it.unicode > 0) {
274-
commitText(Char(it.unicode).toString())
273+
if (!it.modifiers.release && it.value.value > 0) {
274+
try {
275+
commitText(Char(it.value.value).toString())
276+
} catch (_: Exception) {
277+
}
275278
} else {
276279
Timber.w("Unhandled Rime KeyEvent: $it")
277280
}

app/src/main/java/com/osfans/trime/ime/keyboard/CommonKeyboardActionListener.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import com.osfans.trime.core.KeyModifier
1515
import com.osfans.trime.core.KeyModifiers
1616
import com.osfans.trime.core.Rime
1717
import com.osfans.trime.core.RimeApi
18+
import com.osfans.trime.core.RimeKeyEvent
1819
import com.osfans.trime.core.RimeKeyMapping
1920
import com.osfans.trime.daemon.RimeSession
2021
import com.osfans.trime.daemon.launchOnReady
@@ -288,7 +289,7 @@ class CommonKeyboardActionListener(
288289
RimeKeyMapping
289290
.keyCodeToVal(keyEventCode)
290291
.takeIf { it != RimeKeyMapping.RimeKey_VoidSymbol }
291-
?: Rime.getRimeKeycodeByName(Keycode.keyNameOf(keyEventCode))
292+
?: RimeKeyEvent.getKeycodeByName(Keycode.keyNameOf(keyEventCode))
292293
val modifiers = KeyModifiers.fromMetaState(metaState).modifiers
293294
service.postRimeJob {
294295
if (service.hookKeyboard(keyEventCode, metaState)) {

app/src/main/jni/librime_jni/CMakeLists.txt

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,7 @@
44

55
find_package(Opencc REQUIRED)
66

7-
set(RIME_JNI_SOURCES
8-
key.cc
9-
key_table.cc
10-
levers.cc
11-
opencc.cc
12-
rime_jni.cc
13-
)
7+
aux_source_directory(. RIME_JNI_SOURCES)
148
add_library(rime_jni SHARED ${RIME_JNI_SOURCES})
159
target_link_libraries(rime_jni rime-static ${Opencc_LIBRARY})
1610
target_include_directories(rime_jni PRIVATE

app/src/main/jni/librime_jni/key.cc

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// SPDX-License-Identifier: GPL-3.0-or-later
33

44
#include <rime/key_event.h>
5+
#include <rime/key_table.h>
56

67
#include "jni-utils.h"
78

@@ -13,3 +14,17 @@ Java_com_osfans_trime_core_RimeKeyEvent_parse(JNIEnv *env, jclass clazz,
1314
return env->NewObject(GlobalRef->KeyEvent, GlobalRef->KeyEventInit,
1415
ke.keycode(), ke.modifier(), *JString(env, ke.repr()));
1516
}
17+
18+
extern "C" JNIEXPORT jint JNICALL
19+
Java_com_osfans_trime_core_RimeKeyEvent_getModifierByName(JNIEnv *env,
20+
jclass /* thiz */,
21+
jstring name) {
22+
return RimeGetModifierByName(CString(env, name));
23+
}
24+
25+
extern "C" JNIEXPORT jint JNICALL
26+
Java_com_osfans_trime_core_RimeKeyEvent_getKeycodeByName(JNIEnv *env,
27+
jclass /* thiz */,
28+
jstring name) {
29+
return RimeGetKeycodeByName(CString(env, name));
30+
}

app/src/main/jni/librime_jni/key_table.cc

Lines changed: 0 additions & 29 deletions
This file was deleted.

0 commit comments

Comments
 (0)