Browse code

Further fixes to keyboard handling

Andrew Alderwick authored on 20/06/2021 21:38:45
Showing 1 changed files
... ...
@@ -209,11 +209,12 @@ doctrl(Uxn *u, SDL_Event *event, int z)
209 209
 	case SDLK_DOWN: flag = 0x20; break;
210 210
 	case SDLK_LEFT: flag = 0x40; break;
211 211
 	case SDLK_RIGHT: flag = 0x80; break;
212
-	case SDLK_DELETE: devctrl->dat[3] = z ? 0x7f : 0x00; break;
213 212
 	}
214
-	if(z)
213
+	if(z) {
215 214
 		devctrl->dat[2] |= flag;
216
-	else
215
+		if(event->key.keysym.sym < 0x20 || event->key.keysym.sym == SDLK_DELETE)
216
+			devctrl->dat[3] = event->key.keysym.sym;
217
+	} else
217 218
 		devctrl->dat[2] &= ~flag;
218 219
 }
219 220
 
... ...
@@ -360,7 +361,7 @@ start(Uxn *u)
360 361
 				quit();
361 362
 				break;
362 363
 			case SDL_TEXTINPUT:
363
-				devctrl->dat[3] = event.text.text[0];
364
+				devctrl->dat[3] = event.text.text[0]; /* fall-thru */
364 365
 			case SDL_KEYDOWN:
365 366
 			case SDL_KEYUP:
366 367
 				doctrl(u, &event, event.type == SDL_KEYDOWN);