Commit graph

730 commits

Author SHA1 Message Date
Okke Formsma 6b7026cdd1 refactor(hold-tap): simplify flavor enum 2021-02-24 07:24:27 -05:00
Nick Winans 57661362ea refactor(ext-power): Add init-delay-ms option
Co-authored-by: Pete Johanson <peter@peterjohanson.com>
2021-02-16 14:51:32 -05:00
Nick Winans b43fb8502e fix(ext-power): Initialize as soon as settings are available 2021-02-16 14:51:32 -05:00
Pete Johanson ff7891c097 fix(display): Check for display in idle handler.
* Closes #679
2021-02-16 14:21:46 -05:00
Okke Formsma af9d6e9b05 style(hold-tap)!: Write hold-tap params with dashes
tapping_term_ms -> tapping-term-ms
quick_tap_ms -> quick-tap-ms

The old style works, although it's deprecated.
2021-02-10 07:55:12 -05:00
Pete Johanson 2af794eed3 feat(underglow): Convert HSB changes to absolute.
* Public type for HSB led color.
* New API for calculating "next" HSB based on current
  state.
* Update behavior to convert the increment/decrement
  commands to absolute command as well.
2021-02-09 01:27:50 -05:00
Pete Johanson e6f168d6df refactor(behaviors): Convert state dependent params.
* Allow each behavior to map a relative binding, e.g. "toggle",
  to an absolute one, e.g. "on", before being invoked.
2021-02-09 01:27:50 -05:00
Pete Johanson bb2c478af9 refactor(rgb): Expose explicit on/off command/API. 2021-02-09 01:27:50 -05:00
Nick Winans fc5d7bcb78 fix(boards): Remove explicit enable of sensor 2021-02-08 10:50:44 -05:00
Nick Winans 5eace0bbc4 fix(core): Enable sensor by default 2021-02-08 10:50:44 -05:00
KemoNine 0499e7e8ac
Refactor nibble / update to match build docs (#620)
* feat(nibble): add underglow support for nice_nano builds

* feat(nibble): add encoder to top, left most column to match standard assembly documentation

* refactor(nibble): add layer labels

* feat(nibble): add support for optional display ; off by default

* feat(nibble): add README

* fix(nibble): adjust oled rotation for easier reading

* fix(nibble): add additional note about enabling oled

* refactor(nibble): convert keymap to use tabs instead of spaces

* refactor(nibble): enable oled in dts/overlay by default

* refactor(nibble): cleanup alignment and formatting in nibble keymap

* refactor(nibble): re-align top most row of keymap to be sensible

* refactor(nibble): cleanup kscan map alignment

* refactor(nibble): indent first row of map/transform to properly align with physical columns

* fix(nibble): remove dangling code block from readme

Co-authored-by: KemoNine <mcrosson@kemonine.info>
2021-02-04 10:28:02 -06:00
jrhrsmit e40ca1eb7c
fix(power): Add support for capacitors on ADC for BVD
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>
2021-02-04 07:56:27 -05:00
Pete Johanson b84d29c384 refactor(core): Use /omit-if-no-ref/ for behaviors.
* Use lesser-known DT features to skip behaviors not referenced
  in the user keymap
* Update the behaviors to skip code if no nodes found.
* Remove some empty config/data structs where unused in
  behaviors.
2021-02-04 00:52:25 -05:00
mantas b4d63fb52c feat(shields) Add encoder support to CRBN
Pin A maps to A2 (F5), pin B to A3 (F4).
Added keymappings to encoder on default and lower layers.
2021-02-03 23:49:59 -05:00
mantas c94943da1c style(crbn): Unify indentation from spaces to tabs 2021-02-03 23:49:59 -05:00
KemoNine cd503ed17b
Feat combo layers (#661)
feat(combos): add layer filtering

Co-authored-by: KemoNine <mcrosson@kemonine.info>
2021-02-03 23:33:09 -05:00
Okke Formsma 9a7908b632 behaviors(hold-tap): Implement quick_tap_ms (TAPPING_FORCE_HOLD)
Tap-and-hold a hold-tap to hold the tap behavior so it can repeat.
After a tap, if the same key is pressed within `quick_tap_ms`, the
tap behavior is always picked.

This is useful for things like `&ht LSHFT BACKSPACE` where holding
the backspace is required.

Implements #288.
2021-02-02 15:28:16 -05:00
Pete Johanson 6c7ab0ce53 refactor(kscan): Fix polling of GPIO matrices.
* 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
2021-02-02 14:04:10 -05:00
Pete Johanson 2f352788c1 refactor(kscan): Remove explicit default n from kscan configs.
* Actually allow defaulting yes in other places.
2021-02-02 14:04:10 -05:00
Nick Winans 33cd2caced fix(boards): Shorten keyboard names that are too long 2021-02-02 00:59:17 -05:00
Nick Winans 82173f354e fix(core): Assert BLE device name is correct length 2021-02-02 00:59:17 -05:00
Okke Formsma 4e20bf5de1 refactor(behaviors): simplify hold-taps by not using _TRANSFORM_ENTRY 2021-02-02 00:43:26 -05:00
Okke Formsma 84d19fe79b refactor(behaviors): factor out multiple uses of _TRANSFORM_ENTRY 2021-02-02 00:43:26 -05:00
Jeff Rizzo 4f040fecdf Add a missing log_strdup() 2021-01-30 00:31:07 -05:00
Okke Formsma c925cf02dd feature(sticky_keys): add quick-release
when quick-release is enabled, the sticky key is released immediately after another key is pressed
2021-01-28 17:10:04 -05:00
Pete Johanson 7c24ab069c fix(behaviors): Updated grsec snapshots for new log format. 2021-01-25 16:11:01 -05:00
Okke Formsma 7b7701ae90 feature(modifiers): add explicit modifiers
this makes LS(LEFT_CONTROL) work as if shift and control were both
pressed explicitly. Previously, the left shift would have been released
as soon as another key was pressed. The implicit behavior is useful in
case of LS(NUMBER_1) when rolling over to other keys.

Also see #361.
2021-01-24 23:30:41 -05:00
Okke Formsma 0c30b49063 refactor(modifiers): define is_mods function 2021-01-24 23:30:41 -05:00
Okke Formsma df4a5c8613 refactor(hid_listener): pass event struct instead of parameters 2021-01-24 23:30:41 -05:00
Ally Parker a4aaa73f06 feat: Add WPM calculator and display widget 2021-01-23 18:38:31 -05:00
Jeff Rizzo c0cab57c2d run-test.sh: use the POSIX '-L 1' for xargs
This allows tests to be run on platforms where '-l'
isn't implemented, like MacOS.
2021-01-23 18:32:18 -05:00
Okke Formsma 5eeb310b2f feat(grave-escape): implement grave-escape
closes #85
2021-01-22 19:27:18 -05:00
Jay Greco 58ad5d4e86 Fix offset in NIBBLE transformation and keymap
The NIBBLE transformation was missing RC(0,0), which was causing some strange behavior in the kscan driver.
2021-01-22 16:03:14 -05:00
Pete Johanson 3368a81057 refactor(core): Combine is_ and cast_ event functions.
* Use a single `as_foo` generated function to conditionally
  return a certain event type from a generic `zmk_event_t*`
  pointer.
2021-01-20 07:06:11 -05:00
Pete Johanson 3fe2acc2d1 refactor(core): Extra event payloads to own types, refactor API.
* Make it easier to use *just* event payloads by defining the data,
  and then having event manager macros generate "wrapper structs"
* Improve is_*/cast_* APIs to hide details of full event struct.
* Create `zmk_event_t` typedef to pass to event handlers.
* Bring event names inline w/ consistent `zmk_` prefix.
2021-01-20 07:06:11 -05:00
Pete Johanson 003db892ad refactor(core): Extra position state change data struct.
* Separate header and data struct for the event.
* Remove duplicate struct in split code.
2021-01-20 07:06:11 -05:00
Pete Johanson 95acbd8859 fix(shields): Unflip left Microdox OLED. 2021-01-19 15:57:26 -05:00
innovaker 5978990e6d chore(core): replace Pete Johanson with The ZMK Contributors
Does not include boards and shields.
2021-01-16 11:30:37 -05:00
Pete Johanson 65e476df3e fix(splits): Send pos notify from dedicated thread
* Avoid deadlocks by using a deadicated workqueue for sending
  position state notifications from peripherals.
2021-01-15 13:50:36 -05:00
Pete Johanson c11759bc79 fix(hid): Clear all matching usages, not just first.
* If various events get dropped, we can end up with duplicate
  codes in our report, so tweak to ensure we look for all matches
  and clear them when we have a keycode released.
2021-01-15 13:50:36 -05:00
Pete Johanson a0c32bb47e fix(bluetooth): improve LE param update logging 2021-01-15 13:50:36 -05:00
Pete Johanson a5c39dfa76 fix(ble): Perform GATT notifies from dedicated queue.
* Zephyr BT stack frees TX buffers from system workqueue,
  and to avoid blocking waiting to allocate, perform notify
  from a dedicated queue.
2021-01-15 13:50:36 -05:00
Pete Johanson 4aa78a6f8d fix(split): Use queue/work for peripheral events.
* Avoid corruption by using work to process
  peripheral key position events on the main
  work thread, like local kscan events are.
* Fixes #221
2021-01-15 13:50:36 -05:00
Pete Johanson 969e5568af fix(boards): Define but don't enable uart0.
* Set pro-micro TX/RX pins, but don't enable the UART
  by default.
2021-01-15 01:51:44 -05:00
innovaker 1d18900a99 refactor(core): define usage page as uint16_t
Aligns with the HID specification.

Usage page values were sometimes declared as uint8_t and sometimes uint16_t.  This commit aligns all instances with the HID specification for consistency.

PR: #521
2021-01-15 01:48:39 -05:00
Okke Formsma feb0d5b90c feat(combos): initial implementation
closes #45
2021-01-13 21:07:41 -05:00
Nick Winans 002a89765f refactor(Kconfig): Set USB default based on hardware capabilities
Removes the USB default under every split right half in favor of a default based on hardware capabilities in the main app Kconfig.
2021-01-08 16:51:50 -05:00
KemoNine 6345bd5468 Remove setting the animation/effect when setting hsv ; some of the effects like glowing will use the hsv color specified 2021-01-08 16:08:13 -05:00
KemoNine 99f932a47d (feat) Allow setting underglow color by key press 2021-01-08 16:08:13 -05:00
Nick Winans 97ed0cc733 feat(core): Add USB logging Kconfig option 2021-01-08 13:03:39 -05:00
KemoNine 5880a284c1 feat(tg4x): Reconcile with official keymap and tidy-up 2021-01-08 10:14:43 +00:00
KemoNine 28bec8541b style(tg4x): Convert Kconfig spaces to tabs 2021-01-08 10:14:43 +00:00
KemoNine 7fd8561b45 fix(tg4x): Add tg4x.conf to mirror other shield setups 2021-01-08 10:14:43 +00:00
innovaker 7fc28328d0 refactor(tg4x): Cleanup tg4x overlay
Tidies pin definitions and map.
2021-01-08 10:14:43 +00:00
innovaker de6ce05391 chore(tg4x): fix copyright header 2021-01-08 10:14:43 +00:00
KemoNine 185ff462d6 docs(tg4x): Add readme for tg4x 2021-01-08 10:14:43 +00:00
KemoNine cd8567071b fix(tg4x): Fix tg4x keyboard name in Kconfig 2021-01-08 10:14:43 +00:00
KemoNine 3e4f2a3dc3 feat(tg4x): Add underglow support for tg4x + nice_nano 2021-01-08 10:14:43 +00:00
innovaker 561e535a58 refactor(shields): standardize README.md filenames
Renames instances of `readme.md` to `README.md` so that it's easily noticed.

PR: #561
2021-01-07 00:34:04 -05:00
innovaker f17584ca0e chore: standardize # style headers
Changes made with regex plus some manual tweaks.

Find:
/(?:(?<!#!\/bin\/sh\n)(?:^#\n))*^#.*?[Cc]opyright.*?(\d{4}) *([0-9A-z,_\- ]+).*?\n(?:^#\n)*^#.*?SPDX-License-Identifier:? *(.+) *?\n(?:^#\n)*/gm

Replace:
# Copyright (c) $1 $2
# SPDX-License-Identifier: $3

PR: #564
2021-01-06 17:00:44 -05:00
KingCoinless 5c11962d98
feat(shields): add helix shield
PR: #429
2021-01-05 18:56:47 +00:00
Nick Winans e5b1f1e1be fix(shield): BFO9000 uses USB on right 2021-01-04 14:08:00 -05:00
Pete Johanson 992cee1bac feat(display): Show layer label in widget. 2021-01-04 13:02:38 -05:00
Pete Johanson a55b1397c9 feat(keymap): API for retrieving label for a layer 2021-01-04 13:02:38 -05:00
pbz dcd665999a
feat(shields): add bfo9000 shield
PR: #472
2021-01-02 18:52:50 +00:00
Okke Formsma 319ce30270 chore(behavior): use ZMK_BEHAVIOR_OPAQUE in to-layer behavior 2021-01-02 08:08:51 -05:00
Okke Formsma fa07ba9d32 refactor(behaviors): use ZMK_BEHAVIOR_OPAQUE and ZMK_BEHAVIOR_TRANSPARENT
Use these instead of the magic return values 0 and 1 for
behavior_driver_api return values.
2021-01-01 23:07:54 -05:00
Okke Formsma caa285852a refactor(events): return 'ZMK_EV_EVENT_BUBBLE' instead of magic number 0 2021-01-01 23:07:54 -05:00
innovaker 5a72662898 chore: standardize C style headers
Changes made with regex plus some manual tweaks.

Find:
/^\/\*.*\n(?:^\*.*\n)*^.*\*.*?[Cc]opyright.*?(\d{4}) *([0-9A-z,_\- ]+).*?\n(?:^.*\*.*\n)*^.*\*.*?SPDX-License-Identifier:? *(.+) *?\n(?:^.*\*.*\n)*.*\*\//gm

Replace:
/*
 * Copyright (c) $1 $2
 *
 * SPDX-License-Identifier: $3
 */

PR: #565
2021-01-01 23:06:41 -05:00
innovaker 61893e453b
refactor(app): format with prettier (#563)
prettier --write .

PR: #563
2021-01-01 22:55:52 -05:00
KemoNine a3ac0cb5be feat(shields): add ws2812 underglow support to lily58 (nice_nano) 2021-01-01 21:29:22 +00:00
Mango The Fourth 5752b4fbda
feat(shields): add eek shield
PR: #529
2021-01-01 14:33:19 +00:00
Pete Johanson 39490552f2 feat(boards): Add BDN9 Rev2 board.
* Onboard stm32f072.
* 3 possible encoder positions.
* Underglow/per-key not yet support.
2020-12-31 14:46:15 -05:00
Pete Johanson 5072590af5 fix(sensors): Use status filter on sensors node. 2020-12-31 14:46:15 -05:00
Pete Johanson d698847769 fix(power): Fix for 2.4 API changes. 2020-12-30 09:29:57 -05:00
Pete Johanson 1c822754c0 fix(west): Restore atmel west module. 2020-12-29 23:30:30 -05:00
KemoNine d207c3c30f
(feature) Add &to keycode/behavior (#489)
feat(behaviors): Add `&to` behavior to switch to a layer.
2020-12-29 11:57:49 -05:00
Nick Winans 43f6d798be feat(ext-power): Cut power when PM is sleeping 2020-12-29 08:30:57 -05:00
KemoNine 87dbd4ca28
Add uppermost, current layer status widget to oled (#493)
* Add uppermost, current layer status widget to oled

* Run clang format

* Fixup display widget source includes in CMakeLists

* Update layer widget to only be enabled on primary half of a split keyboard and shuffle some of the options specific to the widget to be enabled via the widget

* Update to latest lvgl/zmk/zephyr ; remove version text from oled per PR

* Fixup file names

* Remove last remenants of the version display text from the oled

* Fixup clang-format

Co-authored-by: KemoNine <mcrosson@kemonine.info>
2020-12-28 20:17:32 -05:00
innovaker 0e71dbc860 refactor(app): replace zmk_keymap_layers_state with zmk_keymap_layers_state_t
Aligns with typedef _t convention.

PR: #531
2020-12-28 10:20:12 -05:00
innovaker 87e7c04b00 refactor(app): replace zmk_mod_flags with zmk_mod_flags_t
Aligns with typedef _t convention.

PR: #531
2020-12-28 10:20:12 -05:00
innovaker 05b0d185a8 refactor(app): replace zmk_mod with zmk_mod_t
Aligns with typedef _t convention.

PR: #531
2020-12-28 10:20:12 -05:00
innovaker 87179698b4 refactor(app): replace zmk_key with zmk_key_t
Aligns with typedef _t convention.

PR: #531
2020-12-28 10:20:12 -05:00
Pete Johanson 4fc17e0b3a fix(shields): Enable USB by default on right side.
* Ensures USB power detection for sleep/charging
  is properly detected on the right side by deafult.
2020-12-28 10:16:24 -05:00
Pete Johanson 4db5b169bf refactor(splits): Ability to override split role.
* Move central/peripheral setting to Kconfig.defconfig
  files to allow left/right .conf files to override
  central/peripheral role for splits.
2020-12-28 10:16:24 -05:00
innovaker 842aa5a842 refactor: replace filename hyphens with underscores
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
2020-12-28 01:15:35 -05:00
Okke Formsma 6927abee6e chore(tests): remove useless &cp test 2020-12-28 00:39:53 -05:00
innovaker 2233f457b2 chore(display): add header to CMakeLists.txt
PR: #533
2020-12-21 23:42:55 -05:00
innovaker f8e43932ba refactor(app): remove zmk_action
zmk_action isn't referenced anywhere.

PR: #530
2020-12-21 23:34:40 -05:00
innovaker aa8efa7078 chore(display): add header to Kconfig
PR: #534
2020-12-21 23:30:25 -05:00
innovaker 1f5680f0df refactor(app): remove handlers.h
handlers.h isn't referenced elsewhere.

PR: #526
2020-12-21 23:26:52 -05:00
innovaker 0d52915756 chore(display): align status_screen copyright
PR: #535
2020-12-21 23:15:53 -05:00
innovaker 89532eadeb fix(sticky keys): add 0xFF mask to usage_page
Aligns unpacking of usage_page with its equivalent line in keycode-state-changed.h

PR: #520
2020-12-17 16:52:15 -05:00
innovaker e2aef89d99 refactor(endpoints): rename usage_report parameter to usage_page
Aligns zmk_endpoints_send_report function declaration with its definition.

PR: #522
2020-12-17 16:40:59 -05:00
KemoNine 565a72bf95 feat(shields): add tidbit and tidbit_19key shields 2020-12-17 10:57:06 +00:00
Okke Formsma b115f16f4c refactor(sticky keys): use DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT) instead of DT_NODE_EXISTS(DT_DRV_INST(0)) 2020-12-15 13:59:03 -05:00
Okke Formsma 1c2796d1c9 refactor(sticky keys): use pointer to avoid repetition in store_sticky_key 2020-12-15 13:59:03 -05:00
Okke Formsma bc8803ba50 refactor(sticky keys): rename ZMK_BHV_STICKY_KEY_POSITION_NOT_USED to ZMK_BHV_STICKY_KEY_POSITION_FREE 2020-12-15 13:59:03 -05:00
Okke Formsma 26af11b390 refactor(sticky keys): rename timer_is_started to timer_started 2020-12-15 13:59:03 -05:00
Nick ae63ce5ee7 fix(settings): Add missing err handlers on settings_register 2020-12-14 22:46:49 -05:00