diff options
author | cinap_lenrek <cinap_lenrek@rei2.9hal> | 2012-03-12 18:01:20 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@rei2.9hal> | 2012-03-12 18:01:20 +0100 |
commit | c4831ff2d30b9605b4b894be521d42853b5ca73e (patch) | |
tree | 611391c64e757074a31c9a476edc15b8b4297cef /sys/src/cmd/aux/kbdfs/kbdfs.c | |
parent | d370838368fc578388a6fc414bd9cb621afc6ee6 (diff) |
kbdfs: remap old control keys
Diffstat (limited to 'sys/src/cmd/aux/kbdfs/kbdfs.c')
-rw-r--r-- | sys/src/cmd/aux/kbdfs/kbdfs.c | 26 |
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; } } |