By the way, are you sure 'pckbd_set_xtscancode' in sys/dev/pckbc/pckbd.c
is correct?
This function tries to check for scancode set 3 using


                        cmd[0] = KBC_SETTABLE;
                        cmd[1] = 0;
                        if (pckbc_poll_cmd(kbctag, kbcslot, cmd, 2, 1, resp, 
0)) {
                                /*
                                 * query failed, step down to table 2 to be
                                 * safe.
                                 */
#ifdef DEBUG
                                printf("pckbd: table 3 verification failed\n");
#endif
                                continue;
                        } else if (resp[0] == 3) {
#ifdef DEBUG
                                printf("pckbd: settling on table 3\n");
#endif
                                break;
                        }
#ifdef DEBUG
                        else
                                printf("pckbd: table \"%x\" != 3, trying 2\n",
                                        resp[0]);


However, http://www.win.tue.nl/~aeb/linux/kbd/scancodes-10.html says:

"The usual PC keyboards are capable of producing three sets of
scancodes. Writing 0xf0 followed by 1, 2 or 3 to port 0x60 will put the
keyboard in scancode mode 1, 2 or 3. Writing 0xf0 followed by 0 queries
the mode, resulting in a scancode byte 43, 41 or 3f from the keyboard."

So "resp[0] == 3" always fails and the code falls back to using scancode
set 2.

Reply via email to