ref: 479e7f58195320ba9695279fa7e9e57028b60759
parent: 4e4e787ffc668f37caea7ec8cc00e817a4500772
author: qwx <qwx@sciops.net>
date: Sat Oct 8 05:22:20 EDT 2022
add npe-modhacks: keyboard hacks for modifier keys, pending additions to kbdfs maybe
--- /dev/null
+++ b/npe-modhacks
@@ -1,0 +1,75 @@
+diff c653369e862d2b2235133cfcb0391bc4809ce4b1 uncommitted
+--- a/include/npe/SDL2/SDL_keycode.h
++++ b/include/npe/SDL2/SDL_keycode.h
+@@ -81,21 +81,21 @@
+ SDLK_RALT = Kaltgr, /* FIXME what about keyboards without it? */
+ /* FIXME no distinction */
+ SDLK_LSHIFT = Kshift,
+- SDLK_RSHIFT = SDLK_LSHIFT,
++ SDLK_RSHIFT = Spec|0x69, /* hack */
+ SDLK_LCTRL = Kctl,
+- SDLK_RCTRL = '>', /* FIXME this is a hack */
++ SDLK_RCTRL = Spec|0x6a, /* hack */
++ 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<<7,
+ KMOD_LCTRL = 1<<1,
+- KMOD_RCTRL = KMOD_LCTRL,
++ KMOD_RCTRL = 1<<6,
+ 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,9 @@
+ 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 == Spec|0x69) return SDL_SCANCODE_RSHIFT;
++ if(r == Spec|0x6a) return SDL_SCANCODE_RCTRL;
+
+ if(r >= (KF|1) && r <= (KF|12)) return SDL_SCANCODE_F1 + r - (KF|1);
+
+@@ -294,6 +297,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 +305,10 @@
+ kmod |= KMOD_RALT;
+ else if(r == Kmod4)
+ kmod |= KMOD_LGUI;
++ else if(r == Spec|0x6a)
++ kmod |= KMOD_RCTRL;
++ else if (r == Spec|0x69)
++ kmod |= KMOD_RSHIFT;
+ else{
+ o = npe_sdl.textinput ? r : tolowerrune(r);
+ continue;
+@@ -323,6 +332,12 @@
+ kmod &= ~KMOD_LSHIFT;
+ else if(r == Kctl)
+ kmod &= ~KMOD_LCTRL;
++ else if (r == Kcaps)
++ kmod &= ~KMOD_CAPS;
++ else if(r == Spec|0x6a)
++ kmod &= ~KMOD_RCTRL;
++ else if (r == Spec|0x69)
++ kmod &= ~KMOD_RSHIFT;
+ else{
+ t = Rup;
+ send(salt[Ckey].c, &r);