diff --git a/common_features.mk b/common_features.mk index 7b1ee2e742..07e26a9446 100644 --- a/common_features.mk +++ b/common_features.mk @@ -109,7 +109,6 @@ ifeq ($(strip $(MOUSEKEY_ENABLE)), yes) endif VALID_POINTING_DEVICE_DRIVER_TYPES := adns5050 adns9800 analog_joystick cirque_pinnacle_i2c cirque_pinnacle_spi pmw3360 pmw3389 pimoroni_trackball custom -POINTING_DEVICE_DRIVER ?= custom ifeq ($(strip $(POINTING_DEVICE_ENABLE)), yes) ifeq ($(filter $(POINTING_DEVICE_DRIVER),$(VALID_POINTING_DEVICE_DRIVER_TYPES)),) $(call CATASTROPHIC_ERROR,Invalid POINTING_DEVICE_DRIVER,POINTING_DEVICE_DRIVER="$(POINTING_DEVICE_DRIVER)" is not a valid pointing device type) diff --git a/docs/feature_pointing_device.md b/docs/feature_pointing_device.md index 1972406ff7..4b39599f8a 100644 --- a/docs/feature_pointing_device.md +++ b/docs/feature_pointing_device.md @@ -2,7 +2,7 @@ Pointing Device is a generic name for a feature intended to be generic: moving the system pointer around. There are certainly other options for it - like mousekeys - but this aims to be easily modifiable and hardware driven. You can implement custom keys to control functionality, or you can gather information from other peripherals and insert it directly here - let QMK handle the processing for you. -To enable Pointing Device, uncomment the following line in your rules.mk: +To enable Pointing Device, add the following line in your rules.mk and specify one of the driver options below. ```make POINTING_DEVICE_ENABLE = yes @@ -181,7 +181,13 @@ The CPI range is 50-16000, in increments of 50. Defaults to 2000 CPI. ### Custom Driver -If you have a sensor type that isn't supported here, you can manually implement it, by adding these functions (with the correct implementation for your device): +If you have a sensor type that isn't supported above, a custom option is available by adding the following to your `rules.mk` + +```make +POINTING_DEVICE_DRIVER = custom +``` + +Using the custom driver will require implementing the following functions: ```c void pointing_device_driver_init(void) {} diff --git a/keyboards/3w6/rev2/keymaps/default_pimoroni/rules.mk b/keyboards/3w6/rev2/keymaps/default_pimoroni/rules.mk index 231a883719..5b5f23fbce 100644 --- a/keyboards/3w6/rev2/keymaps/default_pimoroni/rules.mk +++ b/keyboards/3w6/rev2/keymaps/default_pimoroni/rules.mk @@ -1,3 +1,4 @@ POINTING_DEVICE_ENABLE = yes +POINTING_DEVICE_DRIVER = custom SRC += pimoroni_trackball.c MOUSEKEY_ENABLE = no diff --git a/keyboards/crkbd/keymaps/vlukash_trackpad_right/rules.mk b/keyboards/crkbd/keymaps/vlukash_trackpad_right/rules.mk index bd53c19211..92ded45e93 100644 --- a/keyboards/crkbd/keymaps/vlukash_trackpad_right/rules.mk +++ b/keyboards/crkbd/keymaps/vlukash_trackpad_right/rules.mk @@ -1,5 +1,6 @@ # Build Options POINTING_DEVICE_ENABLE = yes # Generic Pointer, not as big as mouse keys hopefully. +POINTING_DEVICE_DRIVER = custom MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. diff --git a/keyboards/dichotomy/rules.mk b/keyboards/dichotomy/rules.mk index a6029e3dbf..420e409e43 100755 --- a/keyboards/dichotomy/rules.mk +++ b/keyboards/dichotomy/rules.mk @@ -10,6 +10,7 @@ BOOTLOADER = caterina BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite #MOUSEKEY_ENABLE = yes # Mouse keys POINTING_DEVICE_ENABLE = yes # Generic Pointer, not as big as mouse keys hopefully. +POINTING_DEVICE_DRIVER = custom EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration diff --git a/keyboards/gergo/keymaps/abstractkb/rules.mk b/keyboards/gergo/keymaps/abstractkb/rules.mk index b87e599734..4b4e56c4a0 100644 --- a/keyboards/gergo/keymaps/abstractkb/rules.mk +++ b/keyboards/gergo/keymaps/abstractkb/rules.mk @@ -27,6 +27,7 @@ ifneq ($(strip $(SCROLLSTEP)),) endif ifeq ($(strip $(BALLER)), yes) POINTING_DEVICE_ENABLE = yes + POINTING_DEVICE_DRIVER = custom OPT_DEFS += -DBALLER endif ifeq ($(strip $(DEBUG_BALLER)), yes) diff --git a/keyboards/gergo/keymaps/default/rules.mk b/keyboards/gergo/keymaps/default/rules.mk index 351c525583..bc2b3cf43b 100644 --- a/keyboards/gergo/keymaps/default/rules.mk +++ b/keyboards/gergo/keymaps/default/rules.mk @@ -27,6 +27,7 @@ ifneq ($(strip $(SCROLLSTEP)),) endif ifeq ($(strip $(BALLER)), yes) POINTING_DEVICE_ENABLE = yes + POINTING_DEVICE_DRIVER = custom OPT_DEFS += -DBALLER endif ifeq ($(strip $(DEBUG_BALLER)), yes) diff --git a/keyboards/gergo/keymaps/germ/rules.mk b/keyboards/gergo/keymaps/germ/rules.mk index badfe7bb99..0fd941bb53 100644 --- a/keyboards/gergo/keymaps/germ/rules.mk +++ b/keyboards/gergo/keymaps/germ/rules.mk @@ -28,6 +28,7 @@ endif ifeq ($(strip $(BALLER)), yes) OPT_DEFS += -DBALLER POINTING_DEVICE_ENABLE = yes + POINTING_DEVICE_DRIVER = custom endif ifeq ($(strip $(DEBUG_BALLER)), yes) OPT_DEFS += -DDEBUG_BALLER diff --git a/keyboards/gergo/keymaps/gotham/rules.mk b/keyboards/gergo/keymaps/gotham/rules.mk index 351c525583..bc2b3cf43b 100644 --- a/keyboards/gergo/keymaps/gotham/rules.mk +++ b/keyboards/gergo/keymaps/gotham/rules.mk @@ -27,6 +27,7 @@ ifneq ($(strip $(SCROLLSTEP)),) endif ifeq ($(strip $(BALLER)), yes) POINTING_DEVICE_ENABLE = yes + POINTING_DEVICE_DRIVER = custom OPT_DEFS += -DBALLER endif ifeq ($(strip $(DEBUG_BALLER)), yes) diff --git a/keyboards/gergo/keymaps/oled/rules.mk b/keyboards/gergo/keymaps/oled/rules.mk index 6318088988..7880416719 100644 --- a/keyboards/gergo/keymaps/oled/rules.mk +++ b/keyboards/gergo/keymaps/oled/rules.mk @@ -29,6 +29,7 @@ ifneq ($(strip $(SCROLLSTEP)),) endif ifeq ($(strip $(BALLER)), yes) POINTING_DEVICE_ENABLE = yes + POINTING_DEVICE_DRIVER = custom OPT_DEFS += -DBALLER endif ifeq ($(strip $(DEBUG_BALLER)), yes) diff --git a/keyboards/honeycomb/rules.mk b/keyboards/honeycomb/rules.mk index a6029e3dbf..420e409e43 100755 --- a/keyboards/honeycomb/rules.mk +++ b/keyboards/honeycomb/rules.mk @@ -10,6 +10,7 @@ BOOTLOADER = caterina BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite #MOUSEKEY_ENABLE = yes # Mouse keys POINTING_DEVICE_ENABLE = yes # Generic Pointer, not as big as mouse keys hopefully. +POINTING_DEVICE_DRIVER = custom EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = yes # Console for debug COMMAND_ENABLE = yes # Commands for debug and configuration diff --git a/keyboards/molecule/rules.mk b/keyboards/molecule/rules.mk index c4e48dfa15..8573995efb 100755 --- a/keyboards/molecule/rules.mk +++ b/keyboards/molecule/rules.mk @@ -19,5 +19,6 @@ AUDIO_ENABLE = no # Audio output # Add trackball support POINTING_DEVICE_ENABLE = yes +POINTING_DEVICE_DRIVER = custom SRC += adns.c QUANTUM_LIB_SRC += spi_master.c diff --git a/keyboards/splitkb/kyria/keymaps/gotham/rules.mk b/keyboards/splitkb/kyria/keymaps/gotham/rules.mk index 81b7123ba5..be3789ce9b 100644 --- a/keyboards/splitkb/kyria/keymaps/gotham/rules.mk +++ b/keyboards/splitkb/kyria/keymaps/gotham/rules.mk @@ -16,6 +16,7 @@ endif ifeq ($(strip $(THUMBSTICK_ENABLE)), yes) POINTING_DEVICE_ENABLE = yes + POINTING_DEVICE_DRIVER = custom OPT_DEFS += -DTHUMBSTICK_ENABLE SRC += analog.c SRC += thumbstick.c