aboutsummaryrefslogtreecommitdiffstats
path: root/src/main.c
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2021-05-23 20:42:54 +0200
committerBad Diode <bd@badd10de.dev>2021-05-23 20:42:54 +0200
commit596ef772d75b6ec50f196c1f9288d3dc5391b8d6 (patch)
tree473e1223a46086a1b99e3f77b42158da4d410d1f /src/main.c
parent8d601a590bd0f920423ca217d6f1473952edd4eb (diff)
downloaduxngba-596ef772d75b6ec50f196c1f9288d3dc5391b8d6.tar.gz
uxngba-596ef772d75b6ec50f196c1f9288d3dc5391b8d6.zip
Fix control keys on keyboard mode
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c31
1 files changed, 30 insertions, 1 deletions
diff --git a/src/main.c b/src/main.c
index 17e0127..b075f4a 100644
--- a/src/main.c
+++ b/src/main.c
@@ -288,7 +288,36 @@ handle_input(Uxn *u) {
288 update_cursor(cursor_position + KEYBOARD_ROW_SIZE); 288 update_cursor(cursor_position + KEYBOARD_ROW_SIZE);
289 } 289 }
290 if (key_tap(KEY_B)) { 290 if (key_tap(KEY_B)) {
291 devctrl->dat[3] = keyboard[cursor_position].symbol; 291 u8 symbol = keyboard[cursor_position].symbol;
292 switch (symbol) {
293 case 0x7f: {
294 // Backspace.
295 devctrl->dat[3] = 0x08;
296 } break;
297 case 0x14: {
298 // New line.
299 devctrl->dat[3] = 0x0d;
300 } break;
301 case 0x18: {
302 // Arrow up.
303 devctrl->dat[2] = 0x10;
304 } break;
305 case 0x19: {
306 // Arrow down.
307 devctrl->dat[2] = 0x20;
308 } break;
309 case 0x1b: {
310 // Arrow left.
311 devctrl->dat[2] = 0x40;
312 } break;
313 case 0x1a: {
314 // Arrow right.
315 devctrl->dat[2] = 0x80;
316 } break;
317 default: {
318 devctrl->dat[3] = symbol;
319 } break;
320 }
292 evaluxn(u, mempeek16(devctrl->dat, 0)); 321 evaluxn(u, mempeek16(devctrl->dat, 0));
293 devctrl->dat[3] = 0; 322 devctrl->dat[3] = 0;
294 } 323 }