on my t23, which has physical german keyboard layout, the scancode
for the [<>|] key left to the [Y] key is 0x56 (86 decimal), which
is not mapped with us layout.

tho this is mapped in german keyboard layout:

term% grep '    86' /sys/lib/kbmap/de
0       86      '<
1       86      '>
2       86      0
3       86      '|
4       86      0

running the following on my t23 maps it.

term% echo '0 0x56 ''<' > /dev/kbmap
term% echo '1 0x56 ''>' > /dev/kbmap
term% echo '3 0x56 ''|' > /dev/kbmap

maybe your keyboard produces a different scancode?

you can attach ratrace to kbdfs [scanproc] pid and look what
it reads back from /dev/scancode for a ps2 keyboard.
usb keyboards work differently.

you can bring back that scancode debug thing with F11/F12
with the following patch which should work for both ps2 and usb
keyboards.

--- a/sys/src/cmd/aux/kbdfs/kbdfs.c     Thu Jul 25 17:44:47 2019 +0200
+++ b/sys/src/cmd/aux/kbdfs/kbdfs.c     Sat Jul 27 11:12:20 2019 +0200
@@ -43,6 +43,7 @@
        int     alt;
        int     altgr;
        int     leds;
+       int     debug;
 };
 
 struct Qtab {
@@ -337,6 +338,9 @@
 {
        Key key;
 
+       if(scan->debug)
+               fprint(2, "kbdputsc %#p sc %x esc1 %d esc2 %d\n", scan, c, 
scan->esc1, scan->esc2);
+
        /*
         *  e0's is the first of a 2 character sequence, e1 and e2 the first
         *  of a 3 character sequence (on the safari)
@@ -390,6 +394,13 @@
        if(scan->ctl && scan->alt && key.r == Kdel)
                reboot();
 
+       if(key.down){
+               if(key.b == (KF|11))
+                       scan->debug = 1;
+               if(key.b == (KF|12))
+                       scan->debug = 0;
+       }
+
        if(key.b)
                send(keychan, &key);

after applying that change, run mk install in /sys/src/cmd/aux/kbdfs
and then rebuild the kernel (as kbdfs gets included into the kernel image).

--
cinap

Reply via email to