[Bug 265260] HANGEUL and HANJA on Korean keyboards do not work.
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 265260] HANGEUL and HANJA on Korean keyboards do not work."
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 265260] HANGEUL and HANJA on Korean keyboards do not work."
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 265260] HANGEUL and HANJA on Korean keyboards do not work."
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 265260] HANGEUL and HANJA on Korean keyboards do not work."
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 265260] HANGEUL and HANJA on Korean keyboards do not work."
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 265260] HANGEUL and HANJA on Korean keyboards do not work."
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sun, 17 Jul 2022 07:23:32 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=265260 Bug ID: 265260 Summary: HANGEUL and HANJA on Korean keyboards do not work. Product: Base System Version: 13.1-RELEASE Hardware: Any OS: Any Status: New Severity: Affects Some People Priority: --- Component: kern Assignee: bugs@FreeBSD.org Reporter: warioburn@yahoo.co.jp Korean keyboard have Hanyoung key (sometimes called Hanguel key) witch toggle Korean/English input mode and a Hanja key witch covert korean letter to chinese letter. Unlike before, x11's keycode conversion is done by evdev. That's why I'm reporting here. When tested with evtest, they are not recognized. in /sys/dev/atkbdc/atkbd.c There are several mode. Especially, K_CODE, K_RAW,K_ASCII, EVDEV. Hanyoung and Hanja key is not recognized in all modes, but I will report mainly EVDEV part because it's most relevant. First, the Hanyoung key is 0xF1 and the Hanja key is 0xF2. Hanyoung/Hanja keys are generally greater than 0x80, which is genarlly considered a release key. And it does not repeat or generate a release key. Reference:https://www.win.tue.nl/~aeb/linux/kbd/scancodes-9.html #ifdef EVDEV_SUPPORT /* push evdev event */ if (evdev_rcpt_mask & EVDEV_RCPT_HW_KBD && state->ks_evdev != NULL) { keycode = evdev_scancode2key(&state->ks_evdev_state, scancode); if (keycode != KEY_RESERVED) { evdev_push_event(state->ks_evdev, EV_KEY, (uint16_t)keycode, scancode & 0x80 ? 0 : 1); evdev_sync(state->ks_evdev); } } #endif After digging with atkbd driver source, it looks like this part is related. There seems to be no problem that returning the keycode from evdev_scancode2key and the definition is already in place with KEY_HANGEUL, KEY_HANJA. evdev_push_event(state->ks_evdev, EV_KEY, (uint16_t)keycode, scancode & 0x80 ? 0 : 1); But here, if the scan code is greater than 0x80, evdev_push_event -> evdev_send_event ->evdev_sparse_event through these codes, EV_SKIP_EVENT is returned, it will be ignored. So, wouldn't special processing for Hangul keys be necessary somewhere? Notes on other parts. K_CODE also has a similar problem, but even if it's not fixed, There is no big problem. because, without ime, Hanyoung/Hanja key is meaningless. But it's pretty much the same problem, so it shouldn't be difficult to fix. For previously used xorg-xf86-input-keyboard package(This is how it worked before,), receives the scan code through K_RAW and converts it to an X11 key code. I guess adding Hanyoung keys in the wsXtMap of bsd_KbdMap.c table, make it work, but I can't make it sucess. -- You are receiving this mail because: You are the assignee for the bug.