diff c33588da6fc879d6c355cd1df29b4c1a8f75f854 uncommitted --- a/sys/src/cmd/aux/kbdfs/kbdfs.c +++ b/sys/src/cmd/aux/kbdfs/kbdfs.c @@ -131,7 +131,7 @@ * these to Kdown and Kup. The jp kbmap will instead map these * (along with 0x70) to control characters that ktrans understands. */ -Rune kbtab[Nscan] = +Rune akbtab[Nscan] = { [0x00] 0, Kesc, '1', '2', '3', '4', '5', '6', [0x08] '7', '8', '9', '0', '-', '=', '\b', '\t', @@ -151,7 +151,7 @@ [0x78] 0, Kdown, 0, Kup, 0, 0, 0, 0, }; -Rune kbtabshift[Nscan] = +Rune akbtabshift[Nscan] = { [0x00] 0, Kesc, '!', '@', '#', '', '%', '^', [0x08] '&', '*', '(', ')', '_', '+', '\b', '\t', @@ -171,7 +171,7 @@ [0x78] 0, Kdown, 0, Kup, 0, 0, 0, 0, }; -Rune kbtabesc1[Nscan] = +Rune akbtabesc1[Nscan] = { [0x00] 0, 0, 0, 0, 0, 0, 0, 0, [0x08] 0, 0, 0, 0, 0, 0, 0, 0, @@ -191,7 +191,7 @@ [0x78] 0, Kup, 0, 0, 0, 0, 0, 0, }; -Rune kbtabshiftesc1[Nscan] = +Rune akbtabshiftesc1[Nscan] = { [0x00] 0, 0, 0, 0, 0, 0, 0, 0, [0x08] 0, 0, 0, 0, 0, 0, 0, 0, @@ -211,7 +211,7 @@ [0x78] 0, Kup, 0, 0, 0, 0, 0, 0, }; -Rune kbtabctrlesc1[Nscan] = +Rune akbtabctrlesc1[Nscan] = { [0x00] 0, 0, 0, 0, 0, 0, 0, 0, [0x08] 0, 0, 0, 0, 0, 0, 0, 0, @@ -231,7 +231,7 @@ [0x78] 0, Kup, 0, 0, 0, 0, 0, 0, }; -Rune kbtabaltgr[Nscan] = +Rune akbtabaltgr[Nscan] = { [0x00] 0, 0, 0, 0, 0, 0, 0, 0, [0x08] 0, 0, 0, 0, 0, 0, 0, 0, @@ -251,7 +251,7 @@ [0x78] 0, Kup, 0, 0, 0, 0, 0, 0, }; -Rune kbtabctl[Nscan] = +Rune akbtabctl[Nscan] = { [0x00] 0, '', '', '', '', '', '', '', [0x08] '', '', '', '', '', '', '\b', '\t', @@ -271,7 +271,7 @@ [0x78] 0, '', 0, '\b', 0, 0, 0, 0, }; -Rune kbtabshiftaltgr[Nscan] = +Rune akbtabshiftaltgr[Nscan] = { [0x00] 0, 0, 0, 0, 0, 0, 0, 0, [0x08] 0, 0, 0, 0, 0, 0, 0, 0, @@ -291,7 +291,7 @@ [0x78] 0, 0, 0, 0, 0, 0, 0, 0, }; -Rune kbtabmod4[Nscan] = +Rune akbtabmod4[Nscan] = { [0x00] 0, 0, 0, 0, 0, 0, 0, 0, [0x08] 0, 0, 0, 0, 0, 0, 0, 0, @@ -311,7 +311,7 @@ [0x78] 0, 0, 0, 0, 0, 0, 0, 0, }; -Rune kbtabaltgrmod4[Nscan] = +Rune akbtabaltgrmod4[Nscan] = { [0x00] 0, 0, 0, 0, 0, 0, 0, 0, [0x08] 0, 0, 0, 0, 0, 0, 0, 0, @@ -331,6 +331,32 @@ [0x78] 0, 0, 0, 0, 0, 0, 0, 0, }; +Rune kbtab[Nscan]; +Rune kbtabshift[Nscan]; +Rune kbtabesc1[Nscan]; +Rune kbtabshiftesc1[Nscan]; +Rune kbtabctrlesc1[Nscan]; +Rune kbtabaltgr[Nscan]; +Rune kbtabctl[Nscan]; +Rune kbtabshiftaltgr[Nscan]; +Rune kbtabmod4[Nscan]; +Rune kbtabaltgrmod4[Nscan]; + +void +resetmap(void) +{ + memcpy(kbtab, akbtab, sizeof kbtab); + memcpy(kbtabshift, akbtabshift, sizeof kbtabshift); + memcpy(kbtabesc1, akbtabesc1, sizeof kbtabesc1); + memcpy(kbtabshiftesc1, akbtabshiftesc1, sizeof kbtabshiftesc1); + memcpy(kbtabctrlesc1, akbtabctrlesc1, sizeof kbtabctrlesc1); + memcpy(kbtabaltgr, akbtabaltgr, sizeof kbtabaltgr); + memcpy(kbtabctl, akbtabctl, sizeof kbtabctl); + memcpy(kbtabshiftaltgr, akbtabshiftaltgr, sizeof kbtabshiftaltgr); + memcpy(kbtabmod4, akbtabmod4, sizeof kbtabmod4); + memcpy(kbtabaltgrmod4, akbtabaltgrmod4, sizeof kbtabaltgrmod4); +} + char* dev(char *file) { @@ -1359,6 +1385,10 @@ else{ f->aux = nil; switch((ulong)f->qid.path){ + case Qkbmap: + if(r->ifcall.mode & OTRUNC) + resetmap(); + break; case Qkbd: if(kbdopen){ respond(r, Einuse); @@ -1562,6 +1592,7 @@ { killfd = procopen(getpid(), "notepg", OWRITE); elevate(); + resetmap(); proccreate(ctlproc, nil, STACK); }