Age | Commit message (Collapse) | Author |
|
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.
|
|
For split keyboards using an IO expander over TRRS/i2c, if the
right half isn't connected, we should be able to gracefully
fallback to the left side still working.
|
|
* Upstream Zephyr has in progress driver, so doing this locally here,
until we can move over to that driver.
|
|
Refactored the GPIO matrix kscan driver so that only the data and config
structures are defined in the foreach macro. Functionality is unchanged
except for the addition of DT properties to adjust polling speed.
This should make it easier to add other enhancements later, like
improved and customizable debounce behavior.
|
|
* Basic driver, using the GD7965 driver as a basis, since the ICs
are very similar.
|
|
Added a driver which uses the nRF52's ADC channel on the VDDH pin to
read the battery voltage when using high voltage mode.
|
|
* Move to `DEVICE_DT_INST_DEFINE` everywhere.
See: https://docs.zephyrproject.org/2.5.0/releases/release-notes-2.5.html#deprecated-in-this-release
PR: https://github.com/zmkfirmware/zmk/pull/736
|
|
+ Add a 1us sleep to let the column selection settle in order to avoid spurious keypresses when row capacitance is high (like on the encoder row)
|
|
|
|
|
|
|
|
Add a little delay so any capacitors connected to the ADC for the BVD can charge up when using power_gpios
Co-authored-by: Jasper Smit <jrhrsmit@gmail.com>
|
|
* Add easier macros for conditional polling/interrupt code.
* Properly continue polling on intervals, without extra
enable/disable code for pins that is superfluous when not trying to
deal with interupts firing.
* Fix to allow multiple GPIO drivers when doing splits w/ IO expanders
|
|
* Actually allow defaulting yes in other places.
|
|
prettier --write .
PR: #563
|
|
Aligns *.h and *.c to underscore naming convention.
These were kept (with warnings) for backwards compatibility with external boards/shields:
- kscan-mock.h
- matrix-transform.h
They should be removed in the future.
PR: #523
|
|
See: https://docs.zephyrproject.org/latest/releases/release-notes-2.4.html
PR: #467
|
|
Replaced with RegExp: /(?<!const )(struct device \*)/g
See: https://docs.zephyrproject.org/latest/releases/release-notes-2.4.html
PR: #467
|
|
See: https://docs.zephyrproject.org/latest/releases/release-notes-2.4.html
PR: #467
|
|
See: https://docs.zephyrproject.org/latest/releases/release-notes-2.4.html
PR: #467
|
|
u8_t → uint8_t
u16_t → uint16_t
u32_t → uint32_t
u64_t → uint64_t
s8_t → int8_t
s16_t → int16_t
s32_t → int32_t
s64_t → int64_t
Prerequisite for #223
See: https://github.com/zephyrproject-rtos/zephyr/releases/tag/zephyr-v2.4.0
PR: #467
|
|
|
|
|
|
PR: #400
|
|
* Switch interrupt configuration so nRF52 uses
PORT events for lower power use, and wake
from deep sleep.
* Closes #272
|
|
Updated function calls with missing reference. GPIO missing.
To my understanding:
DT_INST_GPIO_PIN() should be called instead if DT_INST_PIN()
DT_INST_GPIO_FLAGS() should be called instead if DT_INST_GPIO_FLAGS()
Current implementation does not compile when using control pin.
|
|
|
|
module.yaml is not a valid module filename.
See Zephyr `scripts/zephyr_module.py`
|
|
|
|
- Remove kscan_gpio_irq_callback
- Remove kscan_gpio_irq_callback_handler
- Remove irq_callbacks
+ Add TODO noting timer and sleep state interactions
|
|
+ zmk,kscan_gpio_demux is now a compatible kscan option
+ kscan_gpio_demux is based heavily off of the implementation of
kscan_gpio_matrix, modified to address cols using an n-to-1
demultiplexer chip instead of discrete IO
+ Added zmk,kscan_gpio_demux.yaml file
* modified CMakeLists to include new source files
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Use PORT events for kscan matrix interrupts, add option for deep sleep.
|
|
* New ZMK_SLEEP Kconfig symbol to enable the functionality.
* Switch to PORT events that allows wake from deep sleep.
* Initial basic power management policy, with idle ms,
and ignoring deep sleep if we detect a USB connection.
|
|
* Lower power usage compared to regular interrupts on nrf52.
|
|
Fixed initializing interrupts for direct GPIO when
CONFIG_ZMK_KSCAN_DIRECT_POLLING is not enabled. IS_ENABLED() is needed to map
the possibly-undefined value to 0 or 1 so COND_CODE_0() and COND_CODE_1() work.
|
|
Fixes "device.h:101:11: error: redefinition of '__device_ec11'" in firmware that
has more than one encoder.
|
|
|
|
|
|
Zephyr macros where appropriate.
|
|
|