552347b8a4
* Composite kscan needs a dedicated priority to be sure it is initialized after the other kscan instances.
132 lines
4.6 KiB
Plaintext
132 lines
4.6 KiB
Plaintext
# Copyright (c) 2020 The ZMK Contributors
|
|
# SPDX-License-Identifier: MIT
|
|
|
|
DT_COMPAT_ZMK_KSCAN_COMPOSITE := zmk,kscan-composite
|
|
DT_COMPAT_ZMK_KSCAN_GPIO_DEMUX := zmk,kscan-gpio-demux
|
|
DT_COMPAT_ZMK_KSCAN_GPIO_DIRECT := zmk,kscan-gpio-direct
|
|
DT_COMPAT_ZMK_KSCAN_GPIO_MATRIX := zmk,kscan-gpio-matrix
|
|
DT_COMPAT_ZMK_KSCAN_GPIO_CHARLIEPLEX := zmk,kscan-gpio-charlieplex
|
|
DT_COMPAT_ZMK_KSCAN_MOCK := zmk,kscan-mock
|
|
|
|
if KSCAN
|
|
|
|
config ZMK_KSCAN_COMPOSITE_DRIVER
|
|
bool
|
|
default $(dt_compat_enabled,$(DT_COMPAT_ZMK_KSCAN_COMPOSITE))
|
|
|
|
if ZMK_KSCAN_COMPOSITE_DRIVER
|
|
|
|
config ZMK_KSCAN_COMPOSITE_INIT_PRIORITY
|
|
int "Init Priority for the composite kscan driver"
|
|
default 95
|
|
|
|
endif
|
|
|
|
config ZMK_KSCAN_GPIO_DRIVER
|
|
bool
|
|
select GPIO
|
|
select ZMK_DEBOUNCE
|
|
|
|
config ZMK_KSCAN_GPIO_DEMUX
|
|
bool
|
|
default $(dt_compat_enabled,$(DT_COMPAT_ZMK_KSCAN_GPIO_DEMUX))
|
|
select ZMK_KSCAN_GPIO_DRIVER
|
|
|
|
config ZMK_KSCAN_GPIO_DIRECT
|
|
bool
|
|
default $(dt_compat_enabled,$(DT_COMPAT_ZMK_KSCAN_GPIO_DIRECT))
|
|
select ZMK_KSCAN_GPIO_DRIVER
|
|
|
|
config ZMK_KSCAN_GPIO_MATRIX
|
|
bool
|
|
default $(dt_compat_enabled,$(DT_COMPAT_ZMK_KSCAN_GPIO_MATRIX))
|
|
select ZMK_KSCAN_GPIO_DRIVER
|
|
|
|
config ZMK_KSCAN_GPIO_CHARLIEPLEX
|
|
bool
|
|
default $(dt_compat_enabled,$(DT_COMPAT_ZMK_KSCAN_GPIO_CHARLIEPLEX))
|
|
select ZMK_KSCAN_GPIO_DRIVER
|
|
|
|
if ZMK_KSCAN_GPIO_MATRIX
|
|
|
|
config ZMK_KSCAN_MATRIX_WAIT_BEFORE_INPUTS
|
|
int "Ticks to wait before reading inputs after an output set active"
|
|
default 0
|
|
help
|
|
When iterating over each output to drive it active, read inputs, then set
|
|
inactive again, some boards may take time for output to propagate to the
|
|
inputs. In that scenario, set this value to a positive value to configure
|
|
the number of ticks to wait after setting an output active before reading
|
|
the inputs for their active state.
|
|
|
|
config ZMK_KSCAN_MATRIX_WAIT_BETWEEN_OUTPUTS
|
|
int "Ticks to wait between each output when scanning"
|
|
default 1 if SOC_RP2040
|
|
default 0
|
|
help
|
|
When iterating over each output to drive it active, read inputs, then set
|
|
inactive again, some boards may take time for the previous output to
|
|
"settle" before reading inputs for the next active output column. In that
|
|
scenario, set this value to a positive value to configure the number of
|
|
ticks to wait after reading each column of keys.
|
|
|
|
endif # ZMK_KSCAN_GPIO_MATRIX
|
|
|
|
if ZMK_KSCAN_GPIO_CHARLIEPLEX
|
|
|
|
config ZMK_KSCAN_CHARLIEPLEX_WAIT_BEFORE_INPUTS
|
|
int "Ticks to wait before reading inputs after an output set active"
|
|
default 0
|
|
help
|
|
When iterating over each output to drive it active, read inputs, then set
|
|
inactive again, some boards may take time for output to propagate to the
|
|
inputs. In that scenario, set this value to a positive value to configure
|
|
the number of ticks to wait after setting an output active before reading
|
|
the inputs for their active state.
|
|
|
|
config ZMK_KSCAN_CHARLIEPLEX_WAIT_BETWEEN_OUTPUTS
|
|
int "Ticks to wait between each output when scanning charlieplex matrix"
|
|
default 0
|
|
help
|
|
When iterating over each output to drive it active, read inputs, then set
|
|
inactive again, some boards may take time for the previous output to
|
|
"settle" before reading inputs for the next active output column. In that
|
|
scenario, set this value to a positive value to configure the number of
|
|
usecs to wait after reading each column of keys.
|
|
|
|
endif # ZMK_KSCAN_GPIO_CHARLIEPLEX
|
|
|
|
config ZMK_KSCAN_MOCK_DRIVER
|
|
bool
|
|
default $(dt_compat_enabled,$(DT_COMPAT_ZMK_KSCAN_MOCK))
|
|
|
|
if ZMK_KSCAN_GPIO_DRIVER
|
|
|
|
config ZMK_KSCAN_MATRIX_POLLING
|
|
bool "Poll for key event triggers instead of using interrupts on matrix boards."
|
|
|
|
config ZMK_KSCAN_DIRECT_POLLING
|
|
bool "Poll for key event triggers instead of using interrupts on direct wired boards."
|
|
|
|
config ZMK_KSCAN_DEBOUNCE_PRESS_MS
|
|
int "Debounce time for key press in milliseconds."
|
|
default -1
|
|
help
|
|
Global debounce time for key press in milliseconds.
|
|
If this is -1, the debounce time is controlled by the debounce-press-ms
|
|
Devicetree property, which defaults to 5 ms. Otherwise this overrides the
|
|
debounce time for all key scan drivers to the chosen value.
|
|
|
|
config ZMK_KSCAN_DEBOUNCE_RELEASE_MS
|
|
int "Debounce time for key release in milliseconds."
|
|
default -1
|
|
help
|
|
Global debounce time for key release in milliseconds.
|
|
If this is -1, the debounce time is controlled by the debounce-release-ms
|
|
Devicetree property, which defaults to 5 ms. Otherwise this overrides the
|
|
debounce time for all key scan drivers to the chosen value.
|
|
|
|
endif
|
|
|
|
endif # KSCAN
|