[Bug 265260] HANGEUL and HANJA on Korean keyboards do not work.

From: <bugzilla-noreply_at_freebsd.org>
Date: Mon, 18 Jul 2022 19:50:09 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=265260

--- Comment #1 from warioburn <warioburn@yahoo.co.jp> ---
Oops, There was a mistake.
Chinese key is 0xF1, hanyoung key is 0xf2, as opposed to usb.

Anyway, I found a workaround about xorg-xf86-input-keyboard.

static int
isKoreankey(unsigned char c)
{
        return c == 0xF1 || c== 0xF2;
}

static void
stdReadInput(InputInfoPtr pInfo)
{
    KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
    unsigned char rBuf[64];
    int nBytes, i;
    if ((nBytes = read( pInfo->fd, (char *)rBuf, sizeof(rBuf))) > 0) {
       for (i = 0; i < nBytes; i++)
                if(isKoreankey(rBuf[i])){
                  pKbd->PostEvent(pInfo, rBuf[i], TRUE);
                  pKbd->PostEvent(pInfo, rBuf[i], FALSE);
                 }else{
                        pKbd->PostEvent(pInfo, rBuf[i] & 0x7f,
                        rBuf[i] & 0x80 ? FALSE : TRUE);
                }
       }
}

It's not pretty code, but it seems to work. If there is no problem, I'll make a
bug report about it later.


It's not ideal, but I think there is no choice but to take the same approach
for evdev .

if (keycode != KEY_RESERVED) {
 if(Korean key){
  evdev_push_event(state->ks_evdev, EV_KEY,(uint16_t)keycode, 1);
  evdev_push_event(state->ks_evdev, EV_KEY,(uint16_t)keycode, 0);
  evdev_sync(state->ks_evdev);

 }else{

  //do like before

 }

}

K_CODE mode also similar code.

/* keycode to key action */

action = genkbd_keyaction(kbd, keycode, scancode & 0x80,

&state->ks_state, &state->ks_accents);

The workaround will be similar.

-- 
You are receiving this mail because:
You are the assignee for the bug.