Commit Graph

367 Commits

Author SHA1 Message Date
Peter Johanson
a6787b08c7 refactor(underglow): Tad more logging. 2023-04-25 23:53:17 -07:00
Joel Spadin
94061bb916 refactor: Replace tabs with spaces
Standardized indentation to use spaces with a new pre-commit hook.
2023-04-24 16:07:04 -07:00
Joel Spadin
32ae776c42 refactor: Add more checks to pre-commit
Updated existing pre-commit hooks and added some new hooks:

- Remove trailing whitespace
- Ensure every non-empty file ends with a new line
- Check YAML file validity
- Prevent adding large files
- Ensure any scripts with shebangs are executable

Added a GitHub action to run pre-commit on every commit. Removed any
existing actions which duplicate pre-commit.

Ran pre-commit on the codebase.
2023-04-24 16:07:04 -07:00
Nick Conway
3db163aa2c feat(behaviors): Add reusable sensor behaviors.
* Add new sensor behaviors that either take full bindings
  add definition, or accept parameters when bound in the
  keymap.
* Remove existing hard-coded key press sensor behavior
  and instead leverage new generic sensor behaviors to
  achieve the same functionality.

Co-authored-by: nick@conway.dev
2023-04-21 21:13:31 -07:00
Joel Spadin
5c6f21b0e0 fix: Fix compiler warnings in sensor code 2023-04-18 00:20:57 -07:00
Joel Spadin
e7a6e4016d feat(behaviors): Add key position to key events
Extended the virtual key position system from combos so that each sensor
also gets a virtual key position. This allows sensor behaviors to use
the behavior queue API.
2023-04-16 23:53:12 -07:00
Purdea Andrei
309359b32f
fix(keymaps): fix keypresses that are not in the transform
Before this change, if a matrix position was not present in the transform,
various incorrect behaviors would happen:

1) In some cases out-of-bounds accesses:

Note that the size of the`transform[]` array does not necessarily match
the size of the matrix. So for example if key position
(ZMK_MATRIX_COLS-1, ZMK_MATRIX_ROWS-1) is not present in the transform,
but ends up being pressed, then the array will be accessed beyond its
size, and any data could be returned.

2) In other cases the 0th position in the keymap will be used because
the `transform[]` array is initialized to all zeros.
2023-04-10 03:27:19 -04:00
Cem Aksoylar
3c8f55ede0 fix(display): Do not override font size in status screen 2023-04-09 21:36:43 -07:00
Joel Spadin
064aff6bc0 fix(behaviors): Fix use after free in sticky key
Fixed an issue where the sticky key behavior would call
ZMK_EVENT_RAISE_AFTER(), which would free the provided event, but then
it would keep using that now-freed event data.
2023-04-09 20:17:40 -07:00
Peter Johanson
518f9a550f fix(underglow): Use DT_HAS_CHOSEN properly. 2023-04-05 22:55:38 -07:00
Peter Johanson
09ed79a867 refactor: Move away from deprecated label usages.
* Move away from DT_LABEL.
* Move to DEVICE_DT_GET for non-behavior device access.
* Move various drivers to `gpio_spec_dt` and `DT` related macros.
* Remove mcp23017 while at it, since better upstream driver is
  available.
2023-04-05 22:55:38 -07:00
Peter Johanson
062f94d014 refactor: Remove v1 logging vestiges. 2023-04-05 22:55:38 -07:00
Peter Johanson
3a958c667f refactor: Move to zephyr/ include paths.
* Zephyr moved to properly namespaced headers, so major "rip
  the bandaid" commit to move us to those everywhere.
2023-04-05 22:55:38 -07:00
Peter Johanson
4f2f9db1d4 refactor(ble): New callback API for pairing complete. 2023-04-05 22:55:38 -07:00
Peter Johanson
d513dc1766 refactor: Move to new PM API. 2023-04-05 22:55:38 -07:00
Peter Johanson
243a227ff9 refactor: Move to LISTIFY/DT_FOREACH_PROP_ELEM macros. 2023-04-05 22:55:38 -07:00
Peter Johanson
69a4c3200d refactor(display): Updates for LVGL v8.x changes.
* LV_ prefix from new LVGL official Kconfig now used.
* API changes for themes, container object removal, etc.
* Add our own Kconfig and code for theme default small font.
* Remove some hardcoded sizes.
2023-04-05 22:55:38 -07:00
Robert U
6cb42a8060
feat(behaviors): On-release option for positional-hold-taps 2023-03-12 12:24:00 -04:00
Xudong Zheng
8904407983 feat(underglow): use float for HSB to RGB calculation 2023-02-25 01:44:00 -05:00
Joel Spadin
3eb06f137b feat: Add global macro timing configs
Added ZMK_MACRO_DEFAULT_WAIT_MS and ZMK_MACRO_DEFAULT_TAP_MS to set
global defaults for the wait-ms and tap-ms properties of macros.

Also reduced the default timings for macros, since it's been reported
many times that 100 ms is too slow.
2022-12-20 20:34:25 -06:00
Cem Aksoylar
5cbe572f7d fix(display): Re-default to blank on idle for OLEDs 2022-12-18 16:34:27 -06:00
Darryldh
4a3e783f32
feat(boards): Add Corne-ish zen v2
Co-authored-by: Pete Johanson <peter@peterjohanson.com>
2022-12-16 10:57:25 -06:00
Cem Aksoylar
58eb7a3305 feat(display): Add config to show battery level in percentage 2022-12-10 17:08:37 -06:00
Xudong Zheng
c7fdce863a fix(usb): add USB_DC_CLEAR_HALT to supported states
See https://manpages.debian.org/testing/linux-manual-4.9/usb_clear_halt.9 for
information on halted USB endpoints
2022-11-17 22:52:32 -06:00
Nick Winans
d3d5b8eb8a
fix(displays): Adjust alignment and spacing
* Adjust alignment and spacing
* Fix char array lengths
2022-10-21 23:10:55 -04:00
Robert U
ef2e6e9156
feat(behaviors): Add mod-morph keep-mods
* Update docs for mod-morph
* Add unit tests for mod-morph
* Add keep-mods to DT binding

Co-authored-by: Martin Aumüller <aumuell@reserv.at>
Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2022-10-14 20:40:28 -05:00
ReFil
cc6dd5fc49 chore(lighting): fix deprecation
Removed deprecated macros, replace with correct Zephyr 3 implementation
2022-09-13 09:51:46 -04:00
John Drogo
6124d254f9 fix(usb): add USB_DC_RESUME to supported states
All credit for this one goes to @xudongzheng (thanks for helping debug
this!). Should fix the issue where keyboards go unresponsive after their
host machine wakes from sleep due to the USB driver entering an error
state. I was able to both reliably reproduce the issue before the patch
goes in and confirmed it no longer occurs post patch.

The `USB_DC_RESUME` state indicates the host event has resumed the connection.
Adding it to the list of valid connection states to prevent the error
when waking from sleep.

Zephyr API Link:
https://docs.zephyrproject.org/apidoc/latest/group____usb__device__controller__api.html#gac09e3e0af1a2b41a5bfbad91f900baf7

fixes #1372
2022-09-11 13:00:20 -04:00
Pete Johanson
fc511e40cc
fix(behaviors): Fixing erroneous combo triggering, hold-taps sticking
* This is a very simple fix to a rather complicated issue. Essentially,
hold-taps will "release" (raise) their captured keys before actually
telling the event manager they have captured a key. This means the event
manager ends up assigning the `last_listener_index` to the hold-tap
subscription rather than the combo. So when the combo calls
`ZMK_EVENT_RELEASE` it raises after the hold-tap instead of after the
combo as the combo code expects.
* The corresponding test (which fails without this change) has also been added.
* An event can be captured and released in the same event handler, before
the last_listener_index would have been updated. This causes some handlers
to be triggered multiple times.
* The solution is to update the last_listener_index before calling the next
event handler, so capturing and releasing within an event handler is harmless.
* Also see discussion at https://github.com/zmkfirmware/zmk/pull/1401
* If our handler dedides our undedided hold-tap,
  return early before continuing.
* Fix incorrect pointer logic, resulting in combo
  candidate filtering leaving incorrect timeout details.

Co-authored-by: Andrew Rae <ajrae.nv@gmail.com>
Co-authored-by: okke <okke@formsma.nl>
2022-08-03 20:09:50 -04:00
Peter Johanson
90b45a1284 feat(display): Blank on idle optionally.
* Add new defaulted-on Kconfig option to control if displays
  are blanked/unblanked on idle/activity.
2022-07-26 14:12:38 -04:00
Peter Johanson
c4a47c08de fix(display): Initialize display on queue as well. 2022-07-26 14:12:38 -04:00
ReFil
90e070b427
feat(underglow): Add RGB auto off timeout on idle and on usb disconnect
Two new options for functionality to enable/disable RGB for
USB status or idle events.

Co-authored-by: Pete Johanson <peter@peterjohanson.com>
Co-authored-by: ReFil <harryherring@gmail.com>
2022-06-25 10:56:36 -04:00
ReFil
38e079ef37 fix(backlight): Improve initial power on behaviour 2022-06-25 00:37:00 -04:00
Peter Johanson
d7bd81e5c4 fix(usb): Correctly detect USB connection status.
* Fix detection of USB power vs. configuration, to ensure endpoint
  selection works properly with power-only USB attached.
2022-06-16 00:50:04 -04:00
Peter Johanson
3d2bd01747 fix(split): Raise release events on disconnect.
* When a peripheral disconnects from a centraly, raise position events
  to release any active positions from that
  peripheral.
2022-06-12 22:53:02 -04:00
WSTRN
53bec710d8
fix(displays): Proper battery charge icon sizing 2022-06-09 13:54:36 -04:00
Peter Johanson
4af3d272fc fix(keymaps): Handle matching then-layers.
* Proporly handle multiple  conditonal layers w/ the same target
  `then-layer` values.
* Move handling to work callback, to avoid re-entrance for cascading
  layers enabling other layers.
2022-06-07 23:41:52 -04:00
Peter Johanson
b3c9c18fee feat(behaviors): Continue on mods in caps word.
* Continue caps word when mods are changed, and
  match the continue list on combination of
    explicit and implicit modifiers.
2022-06-04 01:38:42 -04:00
Caleb Goates
0d5bb100ba feat(behavior): Add key toggle 2022-06-03 00:04:41 -04:00
Okke Formsma
c5922fae56 refactor(hid): add mask to HID_USAGE_PAGE macro 2022-06-03 00:04:41 -04:00
Okke Formsma
57fca34dc0 refactor(hid): Move hid logic into hid.c
Move the logic for picking the correct hid function into hid.c.
2022-06-03 00:04:41 -04:00
Peter Johanson
4f503246a3 refactor(split): cmake split clean up.
* Cleaner cmake setup for split build.
2022-05-29 19:18:09 -04:00
Peter Johanson
6539b3ae25 refactor(split): Clean up Kconfig organization.
* Seperated configs for split role (central/peripheral)
  and transport (BLE only for now).
* Split the configs to align on structure.
2022-05-29 19:18:09 -04:00
Peter Johanson
16ab6df18d feat(display): Add new peripheral status/display
* Add new API/status to track state of the
  peripheral connection to the central.
* Add new peripheral status widget for displaying
  the current status of the connection to
  the central.
2022-05-17 13:09:21 -04:00
Peter Johanson
0a40f922b5 refactor(split): Seperate peripheral BLE handling.
* Move foundational BLE code for split
  peripherals to a dedicated file to avoid
  tons of conditionals and awkward code.
2022-05-17 13:09:21 -04:00
Cem Aksoylar
25f89ee6ab feat(battery): Add Kconfig setting for battery level report interval 2022-05-17 12:03:57 -04:00
Nick Winans
54747a52f9 fix(sleep): use pm_power_state_force for proper device power management 2022-05-17 00:30:47 -04:00
Andrew Rae
b5efc7a7eb
feat(behaviors): Add global-quick-tap 2022-04-27 13:33:22 +01:00
Nick Winans
2c7e5b9232 refactor(ble): Use auto phy/conn for split 2022-04-24 18:29:18 -04:00
Joel Spadin
f91472fbe5 fix(battery): Warn if using deprecated battery label 2022-04-17 11:30:57 -04:00