similar change to the one I submitted recently, add kbmap tables for ctrl-esc and shift-esc as some UK keyboards use these for the pipe and backslash keys. Patch fse with the Raspberry Pi and should also work on the sheeva et al. Reference: /n/sources/patch/applied/omap_pi-kbmap Date: Tue Dec 10 15:05:50 CET 2013 Signed-off-by: steve@quintile.net --- /sys/src/9/omap/kbd.c Tue Dec 10 15:00:57 2013 +++ /sys/src/9/omap/kbd.c Tue Dec 10 15:00:26 2013 @@ -111,6 +111,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, @@ -211,7 +251,10 @@ return; } - if(kbscan->esc1){ + 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){ @@ -378,6 +421,12 @@ case 4: kbtabctrl[scanc] = r; break; + case 5: + kbtabctrlesc1[scanc] = r; + break; + case 6: + kbtabshiftesc1[scanc] = r; + break; } } @@ -405,6 +454,12 @@ return 1; case 4: *r = kbtabctrl[*sc]; + return 1; + case 5: + *r = kbtabctrlesc1[*sc]; + return 1; + case 6: + *r = kbtabshiftesc1[*sc]; return 1; } }