Skip to content

add keysym and RimeModifier enums to rime_api.keysym - #420

Open
fxliang wants to merge 2 commits into
hchunhui:masterfrom
fxliang:keysymdefs
Open

fxliang wants to merge 2 commits into
hchunhui:masterfrom
fxliang:keysymdefs

Conversation

@fxliang

@fxliang fxliang commented Aug 21, 2025

Copy link
Copy Markdown
Contributor

No description provided.

@hchunhui

Copy link
Copy Markdown
Owner

应用场景是什么? KeyEvent 似乎已经可以处理

@fxliang

fxliang commented Sep 20, 2025

Copy link
Copy Markdown
Contributor Author

应用场景是什么? KeyEvent 似乎已经可以处理

应用场景是processor中可以直接使用这些Rime里预定义的keycode/modifier常量,不用手工设置。这些在KeyEvent中是没有的

另外更新了下让rime_api.keysym只读

@shewer

shewer commented Sep 21, 2025

Copy link
Copy Markdown
Contributor
 k1 = KeyEvent("Shift+BackSpace") -- kk.keycode = BackSpace kk.modifier=1
 k2 = KeyEvent(k1.keycode, 0)
 k2:repr() -- "BackSpace"

@fxliang

fxliang commented Sep 21, 2025

Copy link
Copy Markdown
Contributor Author

为了在processor里比较一个键值比较常量,这么绕是不是太低效了。这些本来在C++里就是个宏而已

@shewer

shewer commented Sep 22, 2025

Copy link
Copy Markdown
Contributor

librime 中的 key_table.h key_table.cc 已經建了一份

直接用lua script load keycode table.lua 除了載入時比C++長 其他無異
rime_api.keytable = require 'key_table"

在Processor 中 比較 KeyEvent 我可能會在env中先初始化 被比較的key
還有是如果只比較keycode 必須要在前面先檢查 modifier 才保險
當我 按 Ctrl+c 時 ,會產生下面的 4 keyevent 只比較 keycode 在2 3 是一樣的
{Control_L}{Control+c}{Control+Release+c}{Control+Release+Control_L}
1 2 3 4

或許可以在rime_api 中實現
RIME_DLL int RimeGetKeycodeByName(const char* name);
RIME_DLL const char* RimeGetKeyName(int keycode);

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants