engine: the Japanese keyboard's own keys; keypad arrows move through candidates

半角/全角, ひらがな/カタカナ, 変換, and 無変換 committed the reading and did
nothing, like any function key.  They now stand for what a Japanese
keyboard means by them: toggling Japanese and English, switching kana
modes, converting (or turning Japanese on), and turning it off; the
Korean keys became a switch of the same shape.  The keypad's arrows
and page keys, with NumLock off, fold onto the plain ones as its Enter
and Tab already did.
This commit is contained in:
2026-08-17 01:29:07 +09:00
parent 1c8d9fac07
commit 97a838eda1
6 changed files with 53 additions and 9 deletions

11
ipc.c
View File

@@ -166,7 +166,8 @@ ipcconnect(void)
/*
* Engine key for an X keysym and its Unicode value: printable characters
* as themselves, the function keysyms 0xff00-0xffff as Kspec+offset.
* The keypad and Shift+Tab (ISO_Left_Tab) variants fold onto Enter and Tab.
* The keypad keys and Shift+Tab (ISO_Left_Tab) fold onto their plain
* counterparts.
*/
uint32_t
ipckeysym(uint32_t sym, uint32_t unicode)
@@ -179,6 +180,14 @@ ipckeysym(uint32_t sym, uint32_t unicode)
return Ktab;
case 0xff8d:
return Kret;
case 0xff97:
return Kup;
case 0xff99:
return Kdown;
case 0xff9a:
return Kpgup;
case 0xff9b:
return Kpgdown;
}
if(sym >= 0xff00 && sym <= 0xffff)
return Kspec + (sym - 0xff00);