summaryrefslogtreecommitdiff
path: root/sys/src/cmd/aux/kbdfs
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@rei2.9hal>2012-03-12 18:01:20 +0100
committercinap_lenrek <cinap_lenrek@rei2.9hal>2012-03-12 18:01:20 +0100
commitc4831ff2d30b9605b4b894be521d42853b5ca73e (patch)
tree611391c64e757074a31c9a476edc15b8b4297cef /sys/src/cmd/aux/kbdfs
parentd370838368fc578388a6fc414bd9cb621afc6ee6 (diff)
kbdfs: remap old control keys
Diffstat (limited to 'sys/src/cmd/aux/kbdfs')
-rw-r--r--sys/src/cmd/aux/kbdfs/kbdfs.c26
1 files changed, 14 insertions, 12 deletions
diff --git a/sys/src/cmd/aux/kbdfs/kbdfs.c b/sys/src/cmd/aux/kbdfs/kbdfs.c
index 90e22484b..1d84d9f6f 100644
--- a/sys/src/cmd/aux/kbdfs/kbdfs.c
+++ b/sys/src/cmd/aux/kbdfs/kbdfs.c
@@ -259,17 +259,7 @@ kbdputsc(Scan *scan, int c)
else
key.r = kbtab[c];
- switch(key.r){
- case Spec|0x60:
- key.r = Kshift;
- break;
- case Spec|0x62:
- key.r = Kctl;
- break;
- case Spec|0x63:
- key.r = Kalt;
- break;
- }
+ key.r = key.r;
if(scan->esc1 || kbtab[c] == 0)
key.b = key.r;
@@ -825,6 +815,18 @@ kbmapread(Req *req)
respond(req, nil);
}
+Rune
+kbcompat(Rune r)
+{
+ static Rune o = Spec|0x60, tab[] = {
+ Kshift, Kbreak, Kctl, Kalt,
+ Kcaps, Knum, Kmiddle, Kaltgr,
+ };
+ if(r >= o && r < o+nelem(tab))
+ return tab[r - o];
+ return r;
+}
+
void
kbmapwrite(Req *req)
{
@@ -880,7 +882,7 @@ kbmapwrite(Req *req)
r = strtoul(lp, &lp, 0);
else
goto Badarg;
- *rp = r;
+ *rp = kbcompat(r);
lp = line;
}
}