This module is a collection of drivers, behaviors and input-processors to support Hall-effect switches and features commonly found on HE keyboards
- Adjustable actuation
- Rapid Trigger
- SOCD
- Dynamic keystroke
- Mouse input
- Gamepad input
he,kscan-direct-pulsed
: Each HE sensor is wired directly to an adc channel, supports the use of an enable pin to power the sensor only when it needs to be read.
Generates input events with typeINPUT_EV_HE
but can also generate kscan events withhe,kscan-forwarder
(this allows the input processors to use the normal keymap)
This was designed to work with my custom HE keyboard, if you need another driver(e.g. using analog multiplexers), you can open an issue (note that i have no way to test other drivers at the moment)
zmk,battery-nrf-vddh-channel
: Has the same functionality aszmk,battery-nrf-vddh
but you can select which adc channel gets used
Note
There is a problem with many nrf52840 chips where if you switch between single channel and multi-channel mode, the adc subsystem stops working, this is caused by anomaly 212 on chips with build codes CKAA-Dx0 or QIAA-Dx0.
Currently if you have an affected chip and enable both drivers using non-overlapping channels (which is necessary to enable both), everything stops working.
he,raw-signal-processor
: Apply a SOS filter to the input signal, this is used to reduce the noise of the sensorhe,input-processor-matrix-offset
: Add an offset in position to the received inputs (the value of the input remains the same, only moves the matrix position)he,input-processor-keymap
: The analog equivalent ofzmk,keymap
, passes a received value to the processor for the corresponding key, uses input-processors instead of behaviorshe,input-processor-adjustable-actuation
: Press a key(triggers the behavior inzmk,keymap
) or some explicit behaviors when the switch passes a certain height, supports multiple actuation points and unidirectional triggershe,input-processor-rapid-trigger
: Rapid Trigger(press or release a key when the switch changes direction), only supports continuous modehe,input-processor-socd
: SOCD (Simultaneous Opposing Cardinal Directions), supports 4 priority modes:last key
,first key
,deeper key
ordirection
(a combination of last key and rapid trigger)he,input-processor-blank-he
: The analog equivalent of&trans
and&none
behaviors, can log when it receives a valuehe,input-processor-gamepad-forwarder
: Send a joystick or analog trigger event proportional to the switch height, emulating a gamepadhe,input-processor-mouse-forwarder
: Send X,Y, vertical or horizontal wheel event proportional to the switch height
he,behavior-gamepad-btn
: Send a gamepad button eventhe,behavior-pulse-set
: Set the pulse mode ofhe,kscan-direct-pulsed
(turn off the enable pin after the read is done / keep the enable pin always on)
he,input-listener
: Same aszmk,input-listener
but it executes the input-processors of the parent before going to the ones in the layers and stops when receiving anyZMK_INPUT_PROC_STOP
he,input-split
: Same aszmk,input-split
but doesn't send the input when it receives aZMK_INPUT_PROC_STOP
(only for the peripheral side)he,kscan-forwarder
: Allows for external control ofhe,kscan-direct-pulsed
(generate kscan events outside of the driver)he,pulse-set-forwarder
: Allows for external control ofhe,kscan-direct-pulsed
(control how thekscan-direct-pulsed driver
works)