summaryrefslogtreecommitdiffstats
path: root/src/cmd/devdraw/x11-screen.c
diff options
context:
space:
mode:
authorbt <bt@rctt.net>2026-02-20 16:04:44 +0100
committerbt <bt@rctt.net>2026-02-24 22:55:48 +0100
commite14493abb20ab0c808f109bb56aaf141ad08d178 (patch)
treefbfed0aae4d4cca733a2ecbcb7fa92c2a35cfeb2 /src/cmd/devdraw/x11-screen.c
parentcb7001c8d27f22f7229be302f53012bb1db52418 (diff)
downloadplan9port-patch.tar.gz
plan9port-patch.zip
Custom shortcuts and other minor changespatch
Diffstat (limited to 'src/cmd/devdraw/x11-screen.c')
-rw-r--r--src/cmd/devdraw/x11-screen.c23
1 files changed, 22 insertions, 1 deletions
diff --git a/src/cmd/devdraw/x11-screen.c b/src/cmd/devdraw/x11-screen.c
index 7fa86ddf..8475690b 100644
--- a/src/cmd/devdraw/x11-screen.c
+++ b/src/cmd/devdraw/x11-screen.c
@@ -12,6 +12,7 @@
#include <thread.h>
#include "x11-memdraw.h"
#include "devdraw.h"
+#include "keyboard-extras.h"
#undef time
@@ -1277,12 +1278,32 @@ _xtoplan9kbd(XEvent *e)
if(k == XK_hyphen)
k = XK_minus;
/* Do control mapping ourselves if translator doesn't */
- if(e->xkey.state&ControlMask)
+ if(e->xkey.state&ControlMask) {
k &= 0x9f;
+ if (k == '\n')
+ k = Kcret;
+ }
if(k == NoSymbol) {
return -1;
}
+ /* Mod4 + key */
+ if(e->xkey.state&Mod4Mask)
+ k += Kmod4;
+
+ /* Shift modified bindings */
+ if(e->xkey.state&ShiftMask) {
+ /* Ctrl + Shift + Key, Shift + Left/Right/Delete */
+ if(k == Kleft
+ || k == Kright
+ || k == Kdel
+ || k == Kup
+ || k == Kdown
+ || k == Kcret
+ || e->xkey.state&ControlMask)
+ k += Ksh;
+ }
+
return k+0;
}