diff options
Diffstat (limited to 'quantum/joystick.c')
-rw-r--r-- | quantum/joystick.c | 37 |
1 files changed, 31 insertions, 6 deletions
diff --git a/quantum/joystick.c b/quantum/joystick.c index 7b87201aef..86b2c64036 100644 --- a/quantum/joystick.c +++ b/quantum/joystick.c @@ -1,13 +1,38 @@ #include "joystick.h" -joystick_t joystick_status = {.buttons = {0}, - .axes = - { +// clang-format off +joystick_t joystick_status = { + .buttons = {0}, + .axes = { #if JOYSTICK_AXES_COUNT > 0 - 0 + 0 #endif - }, - .status = 0}; + }, + .status = 0 +}; +// clang-format on // array defining the reading of analog values for each axis __attribute__((weak)) joystick_config_t joystick_axes[JOYSTICK_AXES_COUNT] = {}; + +// to be implemented in the hid protocol library +void send_joystick_packet(joystick_t *joystick); + +void joystick_flush(void) { + if ((joystick_status.status & JS_UPDATED) > 0) { + send_joystick_packet(&joystick_status); + joystick_status.status &= ~JS_UPDATED; + } +} + +void register_joystick_button(uint8_t button) { + joystick_status.buttons[button / 8] |= 1 << (button % 8); + joystick_status.status |= JS_UPDATED; + joystick_flush(); +} + +void unregister_joystick_button(uint8_t button) { + joystick_status.buttons[button / 8] &= ~(1 << (button % 8)); + joystick_status.status |= JS_UPDATED; + joystick_flush(); +} |