shithub: patch

ref: 97b0f025ed8634b2c7c9a346330226aea0788f82
dir: /npe-modhacks/

View raw version
diff c653369e862d2b2235133cfcb0391bc4809ce4b1 uncommitted
--- a/include/npe/SDL2/SDL_keycode.h
+++ b/include/npe/SDL2/SDL_keycode.h
@@ -79,23 +79,24 @@
 
 	SDLK_LALT = Kalt,
 	SDLK_RALT = Kaltgr, /* FIXME what about keyboards without it? */
-	/* FIXME no distinction */
+	/* FIXME: hacks */
+	Krshift = Spec|0x69,
+	Krctl = Spec|0x6a,
 	SDLK_LSHIFT = Kshift,
-	SDLK_RSHIFT = SDLK_LSHIFT,
+	SDLK_RSHIFT = Krshift,
 	SDLK_LCTRL = Kctl,
-	SDLK_RCTRL = '>', /* FIXME this is a hack */
+	SDLK_RCTRL = Krctl,
+	SDLK_CAPSLOCK = Kcaps,
 
 	/* FIXME not bound to anything */
 	SDLK_UNKNOWN = -99999,
-	SDLK_CAPSLOCK,
 	SDLK_KP_ENTER,
 	SDLK_AC_BACK,
 
-	/* FIXME no distinction */
 	KMOD_LSHIFT = 1<<0,
-	KMOD_RSHIFT = KMOD_LSHIFT,
+	KMOD_RSHIFT = 1<<6,
 	KMOD_LCTRL = 1<<1,
-	KMOD_RCTRL = KMOD_LCTRL,
+	KMOD_RCTRL = 1<<7,
 	KMOD_LALT = 1<<2,
 	KMOD_RALT = 1<<3,
 	KMOD_LGUI = 1<<4,
--- a/libnpe_sdl2/events.c
+++ b/libnpe_sdl2/events.c
@@ -206,6 +206,11 @@
 	if(r == Kalt) return SDL_SCANCODE_LALT;
 	if(r == Kmod4) return SDL_SCANCODE_LGUI;
 	if(r == Kaltgr) return SDL_SCANCODE_RALT;
+	if(r == Kcaps) return SDL_SCANCODE_CAPSLOCK;
+	if(r == Krshift) return SDL_SCANCODE_RSHIFT;
+	if(r == Krctl) return SDL_SCANCODE_RCTRL;
+	if(r == Kvolup) return SDL_SCANCODE_VOLUMEUP;
+	if(r == Kvoldn) return SDL_SCANCODE_VOLUMEDOWN;
 
 	if(r >= (KF|1) && r <= (KF|12)) return SDL_SCANCODE_F1 + r - (KF|1);
 
@@ -294,6 +299,8 @@
 						kmod |= KMOD_LALT;
 					}else if (r == Kshift)
 						kmod |= KMOD_LSHIFT;
+					else if (r == Kcaps)
+						kmod |= KMOD_CAPS;
 					else if(r == Kctl)
 						kmod |= KMOD_LCTRL;
 					else if(r == Kaltgr)
@@ -300,6 +307,10 @@
 						kmod |= KMOD_RALT;
 					else if(r == Kmod4)
 						kmod |= KMOD_LGUI;
+					else if(r == Krshift)
+						kmod |= KMOD_RSHIFT;
+					else if(r == Krctl)
+						kmod |= KMOD_RCTRL;
 					else{
 						o = npe_sdl.textinput ? r : tolowerrune(r);
 						continue;
@@ -323,6 +334,12 @@
 						kmod &= ~KMOD_LSHIFT;
 					else if(r == Kctl)
 						kmod &= ~KMOD_LCTRL;
+					else if (r == Kcaps)
+						kmod &= ~KMOD_CAPS;
+					else if (r == Krshift)
+						kmod &= ~KMOD_RSHIFT;
+					else if (r == Krctl)
+						kmod &= ~KMOD_RCTRL;
 					else{
 						t = Rup;
 						send(salt[Ckey].c, &r);