ref: c2103276d324781df709f39564f54da596f302d8
dir: /kbdfs-keys/
diff 2d28717d80571e9469a59098150996b28404709f uncommitted
--- a/sys/include/keyboard.h
+++ b/sys/include/keyboard.h
@@ -54,6 +54,9 @@
Kbrtdn= KF|0x28, /* brightness decrement */
Kbrtup= KF|0x29, /* brightness increment */
+ Krshift= KF|0x30,
+ Krctl= KF|0x31,
+
Ksoh= 0x01,
Kstx= 0x02,
Ketx= 0x03,
--- a/sys/src/cmd/aux/kbdfs/kbdfs.c
+++ b/sys/src/cmd/aux/kbdfs/kbdfs.c
@@ -167,7 +167,7 @@
[0x18] 'o', 'p', '[', ']', '\n', Kctl, 'a', 's',
[0x20] 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';',
[0x28] '\'', '`', Kshift, '\\', 'z', 'x', 'c', 'v',
- [0x30] 'b', 'n', 'm', ',', '.', '/', Kshift, '*',
+ [0x30] 'b', 'n', 'm', ',', '.', '/', Krshift,'*',
[0x38] Kalt, ' ', Kctl, KF|1, KF|2, KF|3, KF|4, KF|5,
[0x40] KF|6, KF|7, KF|8, KF|9, KF|10, Knum, Kscroll,'7',
[0x48] '8', '9', '-', '4', '5', '6', '+', '1',
@@ -187,7 +187,7 @@
[0x18] 'O', 'P', '{', '}', '\n', Kctl, 'A', 'S',
[0x20] 'D', 'F', 'G', 'H', 'J', 'K', 'L', ':',
[0x28] '"', '~', Kshift, '|', 'Z', 'X', 'C', 'V',
- [0x30] 'B', 'N', 'M', '<', '>', '?', Kshift, '*',
+ [0x30] 'B', 'N', 'M', '<', '>', '?', Krshift,'*',
[0x38] Kalt, ' ', Kctl, KF|1, KF|2, KF|3, KF|4, KF|5,
[0x40] KF|6, KF|7, KF|8, KF|9, KF|10, Knum, Kscroll,'7',
[0x48] '8', '9', '-', '4', '5', '6', '+', '1',
@@ -204,7 +204,7 @@
[0x00] 0, 0, 0, 0, 0, 0, 0, 0,
[0x08] 0, 0, 0, 0, 0, 0, 0, 0,
[0x10] Ksbwd, Kbrtdn, 0, 0, 0, 0, 0, 0,
- [0x18] 0, Ksfwd, Kbrtup, 0, '\n', Kctl, 0, 0,
+ [0x18] 0, Ksfwd, Kbrtup, 0, '\n', Krctl, 0, 0,
[0x20] Kmute, 0, Kpause, 0, 0, 0, 0, 0,
[0x28] 0, 0, 0, 0, 0, 0, Kvoldn, 0,
[0x30] Kvolup, 0, 0, 0, 0, '/', 0, Kprint,
@@ -224,7 +224,7 @@
[0x00] 0, 0, 0, 0, 0, 0, 0, 0,
[0x08] 0, 0, 0, 0, 0, 0, 0, 0,
[0x10] 0, 0, 0, 0, 0, 0, 0, 0,
- [0x18] 0, 0, 0, 0, 0, 0, 0, 0,
+ [0x18] 0, 0, 0, 0, 0, Krctl, 0, 0,
[0x20] 0, 0, 0, 0, 0, 0, 0, 0,
[0x28] 0, 0, 0, 0, 0, 0, 0, 0,
[0x30] 0, 0, 0, 0, 0, 0, 0, 0,
@@ -244,7 +244,7 @@
[0x00] 0, 0, 0, 0, 0, 0, 0, 0,
[0x08] 0, 0, 0, 0, 0, 0, 0, 0,
[0x10] 0, 0, 0, 0, 0, 0, 0, 0,
- [0x18] 0, 0, 0, 0, 0, 0, 0, 0,
+ [0x18] 0, 0, 0, 0, 0, Krctl, 0, 0,
[0x20] 0, 0, 0, 0, 0, 0, 0, 0,
[0x28] 0, 0, 0, 0, 0, 0, 0, 0,
[0x30] 0, 0, 0, 0, 0, 0, 0, 0,
@@ -487,9 +487,11 @@
switch(key.r){
case Kshift:
+ case Krshift:
scan->shift = key.down;
break;
case Kctl:
+ case Krctl:
scan->ctl = key.down;
break;
case Kaltgr:
@@ -566,13 +568,13 @@
/* button unknown to kbtab, use rune if no modifier keys are active */
if(k.b == 0 && !a->shift && !a->altgr && !a->ctl)
k.b = k.r;
- if(k.r == Kshift)
+ if(k.r == Kshift || k.r == Krshift)
a->shift = k.down;
else if(k.r == Kaltgr)
a->altgr = k.down;
else if(k.r == Kmod4)
a->mod4 = k.down;
- else if(k.r == Kctl)
+ else if(k.r == Kctl || k.r == Krctl)
a->ctl = k.down;
send(keychan, &k);
break;
@@ -765,6 +767,7 @@
case Kcaps:
case Knum:
case Kshift:
+ case Krshift:
case Kaltgr:
case Kmod4:
/* ignore modifiers */
@@ -771,6 +774,7 @@
continue;
case Kctl:
+ case Krctl:
case Kalt:
/* composing escapes */
return 1;
@@ -809,7 +813,7 @@
continue;
}
- if(r == Kctl){
+ if(r == Kctl || r == Krctl){
ctl = 1;
continue;
}
@@ -907,7 +911,7 @@
break;
}
- if(mctlfd >= 0 && key.r == Kshift){
+ if(mctlfd >= 0 && (key.r == Kshift || key.r == Krshift)){
if(key.down){
fprint(mctlfd, "buttonmap 132");
} else {
--- a/sys/src/cmd/evdump.c
+++ b/sys/src/cmd/evdump.c
@@ -64,7 +64,9 @@
case Kpgdown: return "Kpgdown";
case Kpgup: return "Kpgup";
case Kprint: return "Kprint";
+ case Krctl: return "Krctl";
case Kright: return "Kright";
+ case Krshift: return "Krshift";
case Kscroll: return "Kscroll";
case Kscrollonedown: return "Kscrollonedown";
case Kscrolloneup: return "Kscrolloneup";
--- a/sys/src/cmd/rio/wind.c
+++ b/sys/src/cmd/rio/wind.c
@@ -854,6 +854,8 @@
case Kalt:
case Kctl:
case Kaltgr:
+ case Krctl:
+ case Krshift:
return;
}
--- a/sys/src/cmd/riow.c
+++ b/sys/src/cmd/riow.c
@@ -405,7 +405,7 @@
mod = 0;
if(utfrune(s+1, Kmod4) != nil)
mod |= Mmod4;
- if(utfrune(s+1, Kctl) != nil)
+ if(utfrune(s+1, Kctl) != nil || utfrune(s+1, Krctl) != nil)
mod |= Mctl;
if(utfrune(s+1, Kshift) != nil)
mod |= Mshift;
--- a/sys/src/cmd/vnc/kbds.c
+++ b/sys/src/cmd/vnc/kbds.c
@@ -39,7 +39,7 @@
[0xc8] 0, 0, 0, 0, 0, 0, 0, 0,
[0xd0] 0, 0, 0, 0, 0, 0, 0, 0,
[0xd8] 0, 0, 0, 0, 0, 0, 0, 0,
-[0xe0] 0, Kshift, Kshift, Kctl, Kctl, Kcaps, Kcaps, 0,
+[0xe0] 0, Kshift, Krshift, Kctl, Krctl, Kcaps, Kcaps, 0,
[0xe8] 0, Kalt, Kalt, 0, 0, 0, 0, 0,
[0xf0] 0, 0, 0, 0, 0, 0, 0, 0,
[0xf8] 0, 0, 0, 0, 0, 0, 0, Kdel,
--- a/sys/src/cmd/vnc/kbdv.c
+++ b/sys/src/cmd/vnc/kbdv.c
@@ -4,7 +4,9 @@
enum {
Xshift = 0xFFE1,
+ Xrshift = 0xFFE2,
Xctl = 0xFFE3,
+ Xrctl = 0xFFE4,
Xmeta = 0xFFE7,
Xalt = 0xFFE9,
Xsuper = 0xFFEB,
@@ -44,10 +46,12 @@
{KF|12, 0xffc9},
{Kshift, Xshift},
+ {Krshift, Xrshift},
{Kalt, Xalt},
{Kaltgr, Xmeta},
{Kmod4, Xsuper},
{Kctl, Xctl},
+ {Krctl, Xrctl},
};
static char shiftkey[128] = {
@@ -129,10 +133,12 @@
keyevent(v, Xalt, alt);
break;
case Kctl:
+ case Krctl:
ctl = !ctl;
keyevent(v, Xctl, ctl);
break;
case Kshift:
+ case Krshift:
shift = !shift;
keyevent(v, Xshift, shift);
break;
@@ -236,7 +242,9 @@
s += chartorune(&r, s);
if(utfrune(buf2+1, r) == nil)
if((r == Kshift) ||
+ utfrune(buf+1, Krshift) ||
utfrune(buf+1, Kctl) ||
+ utfrune(buf+1, Krctl) ||
utfrune(buf+1, Kalt) ||
utfrune(buf+1, Kmod4) ||
utfrune(buf+1, Kaltgr))
--- a/sys/src/games/doom/i_video.c
+++ b/sys/src/games/doom/i_video.c
@@ -218,9 +218,9 @@
case Kdown:
return KEY_DOWNARROW;
- case Kshift:
+ case Krshift:
return KEY_RSHIFT;
- case Kctl:
+ case Krctl:
return KEY_RCTRL;
case Kalt:
return KEY_LALT;