shithub: riscv

Download patch

ref: c4831ff2d30b9605b4b894be521d42853b5ca73e
parent: d370838368fc578388a6fc414bd9cb621afc6ee6
author: cinap_lenrek <cinap_lenrek@rei2.9hal>
date: Mon Mar 12 14:01:20 EDT 2012

kbdfs: remap old control keys

--- a/sys/src/cmd/aux/kbdfs/kbdfs.c
+++ b/sys/src/cmd/aux/kbdfs/kbdfs.c
@@ -259,17 +259,7 @@
 	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 @@
 	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 @@
 				r = strtoul(lp, &lp, 0);
 			else
 				goto Badarg;
-			*rp = r;
+			*rp = kbcompat(r);
 			lp = line;
 		}
 	}
--