commit 96b49d4
neauoire
·
2022-03-28 16:39:05 +0000 UTC
parent 7886b54
Fixed issue with controller/key
3 files changed,
+26,
-21
+1,
-1
1@@ -25,7 +25,7 @@ cc src/devices/datetime.c src/devices/system.c src/devices/file.c src/uxn.c -DND
2 - `20` screen(partial/vector)
3 - `30` audio(missing)
4 - `70` midi(missing)
5-- `80` controller(partial/key)
6+- `80` controller
7 - `90` mouse(partial/scroll)
8 - `a0` file(missing)
9 - `c0` datetime
M
build.sh
+1,
-1
1@@ -15,4 +15,4 @@ gcc -std=c89 -D_POSIX_C_SOURCE=199309L -DDEBUG -Wall -Wno-unknown-pragmas -Wpeda
2 # gcc src/uxn.c src/devices/system.c src/devices/screen.c src/devices/controller.c src/devices/mouse.c src/devices/file.c src/devices/datetime.c src/uxn11.c -o bin/uxn11 -lX11
3
4 echo "Running.."
5-bin/uxn11 etc/mouse.rom
6+bin/uxn11 ~/roms/left.rom # etc/mouse.rom
+24,
-19
1@@ -117,6 +117,22 @@ hide_cursor(void)
2 #define XK_Control 0xffe3
3 #define XK_Alt 0xffe9
4
5+static Uint8
6+get_button(KeySym sym)
7+{
8+ switch(sym) {
9+ case XK_Up: return 0x10;
10+ case XK_Down: return 0x20;
11+ case XK_Left: return 0x40;
12+ case XK_Right: return 0x80;
13+ case XK_Control: return 0x01;
14+ case XK_Alt: return 0x02;
15+ case XK_Shift: return 0x04;
16+ case XK_Home: return 0x08;
17+ }
18+ return 0x00;
19+}
20+
21 static void
22 processEvent(void)
23 {
24@@ -134,29 +150,18 @@ processEvent(void)
25 } break;
26 case KeyPress: {
27 XKeyPressedEvent *e = (XKeyPressedEvent *)&ev;
28+ KeySym sym;
29 char buf[7];
30- if(e->keycode == XKeysymToKeycode(display, XK_Escape)) exit(0);
31- if(e->keycode == XKeysymToKeycode(display, XK_Up)) controller_down(devctrl, 0x10);
32- if(e->keycode == XKeysymToKeycode(display, XK_Down)) controller_down(devctrl, 0x20);
33- if(e->keycode == XKeysymToKeycode(display, XK_Left)) controller_down(devctrl, 0x40);
34- if(e->keycode == XKeysymToKeycode(display, XK_Right)) controller_down(devctrl, 0x80);
35- if(e->keycode == XKeysymToKeycode(display, XK_Control)) controller_down(devctrl, 0x01);
36- if(e->keycode == XKeysymToKeycode(display, XK_Alt)) controller_down(devctrl, 0x02);
37- if(e->keycode == XKeysymToKeycode(display, XK_Shift)) controller_down(devctrl, 0x04);
38- if(e->keycode == XKeysymToKeycode(display, XK_Home)) controller_down(devctrl, 0x08);
39- XLookupString(e, buf, 7, NULL, NULL);
40- controller_key(devctrl, buf[0]);
41+ XLookupString(e, buf, 7, &sym, 0);
42+ controller_down(devctrl, get_button(sym));
43+ controller_key(devctrl, sym < 0x80 ? sym : buf[0]);
44 } break;
45 case KeyRelease: {
46 XKeyPressedEvent *e = (XKeyPressedEvent *)&ev;
47- if(e->keycode == XKeysymToKeycode(display, XK_Up)) controller_up(devctrl, 0x10);
48- if(e->keycode == XKeysymToKeycode(display, XK_Down)) controller_up(devctrl, 0x20);
49- if(e->keycode == XKeysymToKeycode(display, XK_Left)) controller_up(devctrl, 0x40);
50- if(e->keycode == XKeysymToKeycode(display, XK_Right)) controller_up(devctrl, 0x80);
51- if(e->keycode == XKeysymToKeycode(display, XK_Control)) controller_up(devctrl, 0x01);
52- if(e->keycode == XKeysymToKeycode(display, XK_Alt)) controller_up(devctrl, 0x02);
53- if(e->keycode == XKeysymToKeycode(display, XK_Shift)) controller_up(devctrl, 0x04);
54- if(e->keycode == XKeysymToKeycode(display, XK_Home)) controller_up(devctrl, 0x08);
55+ KeySym sym;
56+ char buf[7];
57+ XLookupString(e, buf, 7, &sym, 0);
58+ controller_up(devctrl, get_button(sym));
59 } break;
60 case ButtonPress: {
61 XButtonPressedEvent *e = (XButtonPressedEvent *)&ev;