M common_features.mk => common_features.mk +13 -9
@@ 698,19 698,23 @@ ifeq ($(strip $(AUTO_SHIFT_ENABLE)), yes)
endif
JOYSTICK_ENABLE ?= no
-ifneq ($(strip $(JOYSTICK_ENABLE)), no)
+VALID_JOYSTICK_TYPES := analog digital
+JOYSTICK_DRIVER ?= analog
+ifeq ($(strip $(JOYSTICK_ENABLE)), yes)
+ ifeq ($(filter $(JOYSTICK_DRIVER),$(VALID_JOYSTICK_TYPES)),)
+ $(error "$(JOYSTICK_DRIVER)" is not a valid joystick driver)
+ endif
OPT_DEFS += -DJOYSTICK_ENABLE
SRC += $(QUANTUM_DIR)/process_keycode/process_joystick.c
SRC += $(QUANTUM_DIR)/joystick.c
-endif
-
-ifeq ($(strip $(JOYSTICK_ENABLE)), analog)
- OPT_DEFS += -DANALOG_JOYSTICK_ENABLE
- SRC += analog.c
-endif
-ifeq ($(strip $(JOYSTICK_ENABLE)), digital)
- OPT_DEFS += -DDIGITAL_JOYSTICK_ENABLE
+ ifeq ($(strip $(JOYSTICK_DRIVER)), analog)
+ OPT_DEFS += -DANALOG_JOYSTICK_ENABLE
+ SRC += analog.c
+ endif
+ ifeq ($(strip $(JOYSTICK_DRIVER)), digital)
+ OPT_DEFS += -DDIGITAL_JOYSTICK_ENABLE
+ endif
endif
DIGITIZER_ENABLE ?= no
M docs/feature_joystick.md => docs/feature_joystick.md +2 -3
@@ 2,8 2,6 @@
The keyboard can be made to be recognized as a joystick HID device by the operating system.
-This is enabled by adding `JOYSTICK_ENABLE` to `rules.mk`. You can set this value to `analog`, `digital`, or `no`.
-
!> Joystick support is not currently available on V-USB devices.
The joystick feature provides two services:
@@ 18,7 16,8 @@ or send gamepad reports based on values computed by the keyboard.
To use analog input you must first enable it in `rules.mk`:
```makefile
-JOYSTICK_ENABLE = analog
+JOYSTICK_ENABLE = yes
+JOYSTICK_DRIVER = analog # or 'digital'
```
An analog device such as a potentiometer found on a gamepad's analog axes is based on a [voltage divider](https://en.wikipedia.org/wiki/Voltage_divider).
M keyboards/handwired/onekey/keymaps/joystick/rules.mk => keyboards/handwired/onekey/keymaps/joystick/rules.mk +1 -1
@@ 1,1 1,1 @@
-JOYSTICK_ENABLE = analog
+JOYSTICK_ENABLE = yes