| ... | ... |
@@ -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); |