summaryrefslogtreecommitdiff
path: root/app/drivers/zephyr/dts
diff options
context:
space:
mode:
authorJoel Spadin <joelspadin@gmail.com>2021-07-31 01:23:33 -0500
committerPete Johanson <peter@peterjohanson.com>2021-10-26 23:52:13 -0400
commitf946dc68931a712bae1c2be0ed1581815ccc8767 (patch)
treeb31c6b75f45ea912ba1bb1d7ce733d2d2b3fe8cd /app/drivers/zephyr/dts
parent5cc7c280a5d97df99e08bace0e373e24cad13abd (diff)
feat(kscan): Improve matrix debouncing
Switched the GPIO matrix driver to debouncing using a simple integrator algorithm. Whenever a key is pressed, we now scan at a rate controlled by debounce-scan-period-ms (default 1 ms) until all keys are released, then return to either waiting for an interrupt or polling more slowly. The timers for key press and release can now be controlled separately, so debounce-period is deprecated in favor of debounce-press-ms and debounce-release-ms. Global Kconfig options ZMK_KSCAN_DEBOUNCE_PRESS_MS and ZMK_KSCAN_DEBOUNCE_RELEASE_MS are also added to make these easier to set. Added documentation for debouncing options.
Diffstat (limited to 'app/drivers/zephyr/dts')
-rw-r--r--app/drivers/zephyr/dts/bindings/kscan/zmk,kscan-gpio-matrix.yaml17
1 files changed, 15 insertions, 2 deletions
diff --git a/app/drivers/zephyr/dts/bindings/kscan/zmk,kscan-gpio-matrix.yaml b/app/drivers/zephyr/dts/bindings/kscan/zmk,kscan-gpio-matrix.yaml
index 20ee4ac..2ec6dc6 100644
--- a/app/drivers/zephyr/dts/bindings/kscan/zmk,kscan-gpio-matrix.yaml
+++ b/app/drivers/zephyr/dts/bindings/kscan/zmk,kscan-gpio-matrix.yaml
@@ -16,12 +16,25 @@ properties:
required: true
debounce-period:
type: int
+ required: false
+ deprecated: true
+ description: Deprecated. Use debounce-press-ms and debounce-release-ms instead.
+ debounce-press-ms:
+ type: int
+ default: 5
+ description: Debounce time for key press in milliseconds. Use 0 for eager debouncing.
+ debounce-release-ms:
+ type: int
default: 5
- description: Debounce time in milliseconds
+ description: Debounce time for key release in milliseconds.
+ debounce-scan-period-ms:
+ type: int
+ default: 1
+ description: Time between reads in milliseconds when any key is pressed.
poll-period-ms:
type: int
default: 10
- description: Time between reads in milliseconds when polling is enabled
+ description: Time between reads in milliseconds when no key is pressed and ZMK_KSCAN_MATRIX_POLLING is enabled.
diode-direction:
type: string
default: row2col