Skip to content

Commit

Permalink
refactor: remove rime keycode to unicode mapping
Browse files Browse the repository at this point in the history
We don't actually need this.

- Move external functions about key event into RimeKeyEvent
  • Loading branch information
WhiredPlanck committed Jan 19, 2025
1 parent 5fb4323 commit 1332be0
Show file tree
Hide file tree
Showing 9 changed files with 30 additions and 967 deletions.
11 changes: 1 addition & 10 deletions app/src/main/java/com/osfans/trime/core/Rime.kt
Original file line number Diff line number Diff line change
Expand Up @@ -414,14 +414,6 @@ class Rime :
external fun getRimeUserId(): String?

// key_table
@JvmStatic
external fun getRimeModifierByName(name: String): Int

@JvmStatic
external fun getRimeKeycodeByName(name: String): Int

@JvmStatic
external fun getRimeKeyUnicode(keycode: Int): Int

@JvmStatic
external fun getAvailableRimeSchemaList(): Array<SchemaItem>
Expand Down Expand Up @@ -470,10 +462,9 @@ class Rime :
value: Int,
modifiers: Int,
) {
val unicode = getRimeKeyUnicode(value)
handleRimeMessage(
5, // RimeMessage.MessageType.Key,
arrayOf(value, modifiers, unicode),
arrayOf(value, modifiers),
)
}

Expand Down
6 changes: 6 additions & 0 deletions app/src/main/java/com/osfans/trime/core/RimeKeyEvent.kt
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,11 @@ data class RimeKeyEvent(

@JvmStatic
external fun parse(repr: String): RimeKeyEvent

@JvmStatic
external fun getKeycodeByName(name: String): Int

@JvmStatic
external fun getModifierByName(name: String): Int
}
}
2 changes: 0 additions & 2 deletions app/src/main/java/com/osfans/trime/core/RimeMessage.kt
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,6 @@ sealed class RimeMessage<T>(
data class Data(
val value: KeyValue,
val modifiers: KeyModifiers,
val unicode: Int,
)
}

Expand Down Expand Up @@ -139,7 +138,6 @@ sealed class RimeMessage<T>(
KeyMessage.Data(
KeyValue(params[0] as Int),
KeyModifiers.of(params[1] as Int),
params[2] as Int,
),
)
else -> UnknownMessage(params)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -270,8 +270,11 @@ open class TrimeInputMethodService : LifecycleInputMethodService() {
}
}
} else {
if (!it.modifiers.release && it.unicode > 0) {
commitText(Char(it.unicode).toString())
if (!it.modifiers.release && it.value.value > 0) {
try {
commitText(Char(it.value.value).toString())
} catch (_: Exception) {
}
} else {
Timber.w("Unhandled Rime KeyEvent: $it")
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import com.osfans.trime.core.KeyModifier
import com.osfans.trime.core.KeyModifiers
import com.osfans.trime.core.Rime
import com.osfans.trime.core.RimeApi
import com.osfans.trime.core.RimeKeyEvent
import com.osfans.trime.core.RimeKeyMapping
import com.osfans.trime.daemon.RimeSession
import com.osfans.trime.daemon.launchOnReady
Expand Down Expand Up @@ -288,7 +289,7 @@ class CommonKeyboardActionListener(
RimeKeyMapping
.keyCodeToVal(keyEventCode)
.takeIf { it != RimeKeyMapping.RimeKey_VoidSymbol }
?: Rime.getRimeKeycodeByName(Keycode.keyNameOf(keyEventCode))
?: RimeKeyEvent.getKeycodeByName(Keycode.keyNameOf(keyEventCode))
val modifiers = KeyModifiers.fromMetaState(metaState).modifiers
service.postRimeJob {
if (service.hookKeyboard(keyEventCode, metaState)) {
Expand Down
8 changes: 1 addition & 7 deletions app/src/main/jni/librime_jni/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,7 @@

find_package(Opencc REQUIRED)

set(RIME_JNI_SOURCES
key.cc
key_table.cc
levers.cc
opencc.cc
rime_jni.cc
)
aux_source_directory(. RIME_JNI_SOURCES)
add_library(rime_jni SHARED ${RIME_JNI_SOURCES})
target_link_libraries(rime_jni rime-static ${Opencc_LIBRARY})
target_include_directories(rime_jni PRIVATE
Expand Down
15 changes: 15 additions & 0 deletions app/src/main/jni/librime_jni/key.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
// SPDX-License-Identifier: GPL-3.0-or-later

#include <rime/key_event.h>
#include <rime/key_table.h>

#include "jni-utils.h"

Expand All @@ -13,3 +14,17 @@ Java_com_osfans_trime_core_RimeKeyEvent_parse(JNIEnv *env, jclass clazz,
return env->NewObject(GlobalRef->KeyEvent, GlobalRef->KeyEventInit,
ke.keycode(), ke.modifier(), *JString(env, ke.repr()));
}

extern "C" JNIEXPORT jint JNICALL
Java_com_osfans_trime_core_RimeKeyEvent_getModifierByName(JNIEnv *env,
jclass /* thiz */,
jstring name) {
return RimeGetModifierByName(CString(env, name));
}

extern "C" JNIEXPORT jint JNICALL
Java_com_osfans_trime_core_RimeKeyEvent_getKeycodeByName(JNIEnv *env,
jclass /* thiz */,
jstring name) {
return RimeGetKeycodeByName(CString(env, name));
}
29 changes: 0 additions & 29 deletions app/src/main/jni/librime_jni/key_table.cc

This file was deleted.

Loading

0 comments on commit 1332be0

Please sign in to comment.