More info about joyhats in SDL2:
https://wiki.libsdl.org/SDL2/SDL_JoyHatEvent
| ... | ... |
@@ -436,6 +436,42 @@ handle_events(Uxn *u) |
| 436 | 436 |
controller_down(u, &u->dev[0x80], get_button_joystick(&event)); |
| 437 | 437 |
else if(event.type == SDL_JOYBUTTONUP) |
| 438 | 438 |
controller_up(u, &u->dev[0x80], get_button_joystick(&event)); |
| 439 |
+ else if(event.type == SDL_JOYHATMOTION) {
|
|
| 440 |
+ /* NOTE: Assuming there is only one joyhat in the controller */ |
|
| 441 |
+ switch(event.jhat.value) {
|
|
| 442 |
+ case SDL_HAT_UP: |
|
| 443 |
+ controller_down(u, &u->dev[0x80], 0x10); |
|
| 444 |
+ break; |
|
| 445 |
+ case SDL_HAT_DOWN: |
|
| 446 |
+ controller_down(u, &u->dev[0x80], 0x20); |
|
| 447 |
+ break; |
|
| 448 |
+ case SDL_HAT_LEFT: |
|
| 449 |
+ controller_down(u, &u->dev[0x80], 0x40); |
|
| 450 |
+ break; |
|
| 451 |
+ case SDL_HAT_RIGHT: |
|
| 452 |
+ controller_down(u, &u->dev[0x80], 0x80); |
|
| 453 |
+ break; |
|
| 454 |
+ case SDL_HAT_LEFTDOWN: |
|
| 455 |
+ controller_down(u, &u->dev[0x80], 0x40 | 0x20); |
|
| 456 |
+ break; |
|
| 457 |
+ case SDL_HAT_LEFTUP: |
|
| 458 |
+ controller_down(u, &u->dev[0x80], 0x40 | 0x10); |
|
| 459 |
+ break; |
|
| 460 |
+ case SDL_HAT_RIGHTDOWN: |
|
| 461 |
+ controller_down(u, &u->dev[0x80], 0x80 | 0x20); |
|
| 462 |
+ break; |
|
| 463 |
+ case SDL_HAT_RIGHTUP: |
|
| 464 |
+ controller_down(u, &u->dev[0x80], 0x80 | 0x10); |
|
| 465 |
+ break; |
|
| 466 |
+ case SDL_HAT_CENTERED: |
|
| 467 |
+ /* Set all directions to down */ |
|
| 468 |
+ controller_up(u, &u->dev[0x80], 0x10 | 0x20 | 0x40 | 0x80); |
|
| 469 |
+ break; |
|
| 470 |
+ default: |
|
| 471 |
+ /* Ignore */ |
|
| 472 |
+ break; |
|
| 473 |
+ } |
|
| 474 |
+ } |
|
| 439 | 475 |
/* Console */ |
| 440 | 476 |
else if(event.type == stdin_event) |
| 441 | 477 |
console_input(u, event.cbutton.button); |