| ... | ... |
@@ -16,21 +16,25 @@ WITH REGARD TO THIS SOFTWARE. |
| 16 | 16 |
void |
| 17 | 17 |
controller_down(Device *d, Uint8 mask) |
| 18 | 18 |
{
|
| 19 |
- d->dat[2] |= mask; |
|
| 20 |
- uxn_eval(d->u, d->vector); |
|
| 19 |
+ if(mask) {
|
|
| 20 |
+ d->dat[2] |= mask; |
|
| 21 |
+ uxn_eval(d->u, d->vector); |
|
| 22 |
+ } |
|
| 21 | 23 |
} |
| 22 | 24 |
|
| 23 | 25 |
void |
| 24 | 26 |
controller_up(Device *d, Uint8 mask) |
| 25 | 27 |
{
|
| 26 |
- d->dat[2] &= (~mask); |
|
| 27 |
- uxn_eval(d->u, d->vector); |
|
| 28 |
+ if(mask) {
|
|
| 29 |
+ d->dat[2] &= (~mask); |
|
| 30 |
+ uxn_eval(d->u, d->vector); |
|
| 31 |
+ } |
|
| 28 | 32 |
} |
| 29 | 33 |
|
| 30 | 34 |
void |
| 31 | 35 |
controller_key(Device *d, Uint8 key) |
| 32 | 36 |
{
|
| 33 |
- if(!key) {
|
|
| 37 |
+ if(key) {
|
|
| 34 | 38 |
d->dat[3] = key; |
| 35 | 39 |
uxn_eval(d->u, d->vector); |
| 36 | 40 |
d->dat[3] = 0x00; |
| ... | ... |
@@ -505,14 +505,17 @@ run(Uxn *u) |
| 505 | 505 |
clamp(event.motion.x - PAD, 0, ppu.width - 1), |
| 506 | 506 |
clamp(event.motion.y - PAD, 0, ppu.height - 1)); |
| 507 | 507 |
/* Controller */ |
| 508 |
- else if(event.type == SDL_KEYDOWN) {
|
|
| 509 |
- controller_down(devctrl, get_button(&event)); |
|
| 510 |
- controller_key(devctrl, get_key(&event)); |
|
| 511 |
- do_shortcut(u, &event); |
|
| 508 |
+ else if(event.type == SDL_KEYDOWN || event.type == SDL_TEXTINPUT) {
|
|
| 509 |
+ if(event.type == SDL_TEXTINPUT) |
|
| 510 |
+ controller_key(devctrl, event.text.text[0]); |
|
| 511 |
+ else if(get_key(&event)) |
|
| 512 |
+ controller_key(devctrl, get_key(&event)); |
|
| 513 |
+ else if(get_button(&event)) {
|
|
| 514 |
+ controller_down(devctrl, get_button(&event)); |
|
| 515 |
+ do_shortcut(u, &event); |
|
| 516 |
+ } |
|
| 512 | 517 |
} else if(event.type == SDL_KEYUP) |
| 513 | 518 |
controller_up(devctrl, get_button(&event)); |
| 514 |
- else if(event.type == SDL_TEXTINPUT) |
|
| 515 |
- controller_key(devctrl, event.text.text[0]); |
|
| 516 | 519 |
else if(event.type == SDL_JOYBUTTONDOWN) |
| 517 | 520 |
controller_down(devctrl, get_button_joystick(&event)); |
| 518 | 521 |
else if(event.type == SDL_JOYBUTTONUP) |