aboutsummaryrefslogtreecommitdiffstats
path: root/src/main.c
diff options
context:
space:
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 }