shithub: patch

Download patch

ref: ee964740e9e1e607fc444460f81866e0f9363103
parent: 0fc1eba1fc07cb52940e2f55e19e5efa97ae229b
author: qwx <qwx@sciops.net>
date: Mon Nov 3 04:19:36 EST 2025

add kbdfs-keys: add rshift, rctl

--- /dev/null
+++ b/kbdfs-keys
@@ -1,0 +1,229 @@
+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;
--