diff options
author | Ryan <[email protected]> | 2024-11-10 09:10:10 +1100 |
---|---|---|
committer | GitHub <[email protected]> | 2024-11-09 14:10:10 -0800 |
commit | a3cfb1dab7679a774d8aa09f7b609f3302dad73d (patch) | |
tree | 315e8c7a35ae390b56f84def0d37b867bfa428c7 /quantum/joystick.h | |
parent | 69093f6de9b551bd84ff0a8eabcccca73026d55e (diff) | |
download | qmk_firmware-a3cfb1dab7679a774d8aa09f7b609f3302dad73d.tar.gz qmk_firmware-a3cfb1dab7679a774d8aa09f7b609f3302dad73d.zip |
Joystick: add support for 8-way hat switch (#24515)
Diffstat (limited to 'quantum/joystick.h')
-rw-r--r-- | quantum/joystick.h | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/quantum/joystick.h b/quantum/joystick.h index 5a69ceac64..24f80c1ad6 100644 --- a/quantum/joystick.h +++ b/quantum/joystick.h @@ -52,6 +52,16 @@ #define JOYSTICK_MAX_VALUE ((1L << (JOYSTICK_AXIS_RESOLUTION - 1)) - 1) +#define JOYSTICK_HAT_CENTER -1 +#define JOYSTICK_HAT_NORTH 0 +#define JOYSTICK_HAT_NORTHEAST 1 +#define JOYSTICK_HAT_EAST 2 +#define JOYSTICK_HAT_SOUTHEAST 3 +#define JOYSTICK_HAT_SOUTH 4 +#define JOYSTICK_HAT_SOUTHWEST 5 +#define JOYSTICK_HAT_WEST 6 +#define JOYSTICK_HAT_NORTHWEST 7 + // configure on input_pin of the joystick_axes array entry to NO_PIN // to prevent it from being read from the ADC. This allows outputting forged axis value. #define JOYSTICK_AXIS_VIRTUAL \ @@ -73,7 +83,10 @@ extern joystick_config_t joystick_axes[JOYSTICK_AXIS_COUNT]; typedef struct { uint8_t buttons[(JOYSTICK_BUTTON_COUNT - 1) / 8 + 1]; int16_t axes[JOYSTICK_AXIS_COUNT]; - bool dirty; +#ifdef JOYSTICK_HAS_HAT + int8_t hat; +#endif + bool dirty; } joystick_t; extern joystick_t joystick_state; @@ -129,4 +142,11 @@ void joystick_read_axes(void); */ void joystick_set_axis(uint8_t axis, int16_t value); +/** + * \brief Set the position of the hat switch. + * + * \param value The hat switch position to set. + */ +void joystick_set_hat(int8_t value); + /** \} */ |