Add pages for esc1+shift and esc1+ctrl - some UK USB keyboards (Dell) and it seems some German ones: https://groups.google.com/forum/#!topic/comp.os.plan9/ycok6NTCWCg seem to generate an esc1 + code scancode combination for the pipe/backslash key. Seems like overkill to add two whole pages for just two keys, but there again RAM is cheap these days. Probably should take the changes across to omap/kbd.c (and by extension bcm/kbd.c) but the changes are trivial. Notes: Mon Mar 17 16:52:57 EDT 2014 geoff obsoleted by later patch omap_pi-kbmap, I hope. Reference: /n/sources/patch/sorry/kbmap-uk-weird Date: Thu Nov 7 16:06:32 CET 2013 Signed-off-by: steve@quintile.net Reviewed-by: geoff --- /sys/lib/kbmap/uk Thu Nov 7 16:01:31 2013 +++ /sys/lib/kbmap/uk Thu Nov 7 16:01:23 2013 @@ -6,3 +6,7 @@ 0 86 '\ 4 86 ^\ 1 86 '| + +2 86 '\ +5 86 ^\ +6 86 '| --- /sys/src/9/pc/kbd.c Thu Nov 7 16:01:50 2013 +++ /sys/src/9/pc/kbd.c Thu Nov 7 16:01:39 2013 @@ -123,6 +123,46 @@ [0x78] No, Up, No, No, No, No, No, No, }; +Rune kbtabshiftesc1[Nscan] = +{ +[0x00] No, No, No, No, No, No, No, No, +[0x08] No, No, No, No, No, No, No, No, +[0x10] No, No, No, No, No, No, No, No, +[0x18] No, No, No, No, No, No, No, No, +[0x20] No, No, No, No, No, No, No, No, +[0x28] No, No, No, No, No, No, No, No, +[0x30] No, No, No, No, No, No, No, No, +[0x38] No, No, No, No, No, No, No, No, +[0x40] No, No, No, No, No, No, No, No, +[0x48] Up, No, No, No, No, No, No, No, +[0x50] No, No, No, No, No, No, No, No, +[0x58] No, No, No, No, No, No, No, No, +[0x60] No, No, No, No, No, No, No, No, +[0x68] No, No, No, No, No, No, No, No, +[0x70] No, No, No, No, No, No, No, No, +[0x78] No, Up, No, No, No, No, No, No, +}; + +Rune kbtabctrlesc1[Nscan] = +{ +[0x00] No, No, No, No, No, No, No, No, +[0x08] No, No, No, No, No, No, No, No, +[0x10] No, No, No, No, No, No, No, No, +[0x18] No, No, No, No, No, No, No, No, +[0x20] No, No, No, No, No, No, No, No, +[0x28] No, No, No, No, No, No, No, No, +[0x30] No, No, No, No, No, No, No, No, +[0x38] No, No, No, No, No, No, No, No, +[0x40] No, No, No, No, No, No, No, No, +[0x48] Up, No, No, No, No, No, No, No, +[0x50] No, No, No, No, No, No, No, No, +[0x58] No, No, No, No, No, No, No, No, +[0x60] No, No, No, No, No, No, No, No, +[0x68] No, No, No, No, No, No, No, No, +[0x70] No, No, No, No, No, No, No, No, +[0x78] No, Up, No, No, No, No, No, No, +}; + Rune kbtabaltgr[Nscan] = { [0x00] No, No, No, No, No, No, No, No, @@ -412,7 +452,13 @@ return; } - if(kbscan->esc1){ + if(kbscan->esc1 && kbscan->ctl){ + c = kbtabctrlesc1[c]; + kbscan->esc1 = 0; + } else if(kbscan->esc1 && kbscan->shift){ + c = kbtabshiftesc1[c]; + kbscan->esc1 = 0; + } else if(kbscan->esc1){ c = kbtabesc1[c]; kbscan->esc1 = 0; } else if(kbscan->esc2){ @@ -709,6 +755,12 @@ case 4: kbtabctrl[scanc] = r; break; + case 5: + kbtabctrlesc1[scanc] = r; + break; + case 6: + kbtabshiftesc1[scanc] = r; + break; } } @@ -736,6 +788,12 @@ return 1; case 4: *r = kbtabctrl[*sc]; + return 1; + case 5: + *r = kbtabctrlesc1[*sc]; + return 1; + case 6: + *r = kbtabshiftesc1[*sc]; return 1; } }