shithub: patch

ref: c2103276d324781df709f39564f54da596f302d8
dir: /npe-modhacks/

View raw version
diff 65ce57807eaac59d51b30ba4b9c9e56e31ad3701 uncommitted
--- a/libnpe_sdl2/events.c
+++ b/libnpe_sdl2/events.c
@@ -444,7 +444,7 @@
 kbdproc(void *)
 {
 	char buf[128], buf2[128], *s;
-	int kfd, n, kbin, t;
+	int kfd, n, kbin, t, ign;
 	Rune r, scan, o;
 
 	threadsetname("kbdproc");
@@ -456,6 +456,7 @@
 	buf2[1] = 0;
 	buf[0] = 0;
 	kmod = 0;
+	ign = 0;
 	for(;;){
 		if(buf[0] != 0){
 			n = strlen(buf)+1;
@@ -472,8 +473,12 @@
 		switch(buf[0]){
 		case 'c':
 			if(chartorune(&r, buf+1) > 0 && r != Runeerror){
-				if(ISTEXT(r))
-					o = r;
+				if(ign){
+					ign = 0;
+					break;
+				}
+				if(npe_sdl.textinput && ISTEXT(r))
+					o = tolowerrune(r);
 				send(salt[Ckey].c, &o);
 				send(salt[Ckeytype].c, &t);
 				t = Rrepeat;
@@ -510,14 +515,17 @@
 						kmod |= KMOD_RSHIFT;
 					else if(r == Krctl)
 						kmod |= KMOD_RCTRL;
+					/*
 					else{
 						o = npe_sdl.textinput ? r : tolowerrune(r);
 						continue;
 					}
+					*/
 					o = r;
 					send(salt[Ckey].c, &r);
 					send(salt[Ckeytype].c, &t);
 					t = Rrepeat;
+					ign = 1;
 				}
 			}
 			break;
@@ -551,6 +559,7 @@
 					t = Rup;
 					send(salt[Ckey].c, &r);
 					send(salt[Ckeytype].c, &t);
+					ign = 0;
 				}
 			}
 			break;