git: 9front

Download patch

ref: d9cd615a1b935ae366c0db27382ab1a451eaecaf
parent: 8a6877af2a2c318c5631ced1649f4632a4b7ef25
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;
 		}
 	}
--