Commit Graph

83 Commits

Author SHA1 Message Date
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
Nick Conway edec4595ae fix(behaviors): Fix mod morph description 2022-07-03 09:11:00 -04:00
Peter Johanson 1e8224c296 feat(behaviors): Add DEL/BSPC to continue list.
* Continue caps word on delete/backspace by
  default now.

Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2022-06-04 01:38:42 -04:00
Caleb Goates 0d5bb100ba feat(behavior): Add key toggle 2022-06-03 00:04:41 -04:00
Andrew Rae b5efc7a7eb
feat(behaviors): Add `global-quick-tap` 2022-04-27 13:33:22 +01:00
Peter Johanson f4fb5c6fba fix(build): Add local vendor prefix file.
Properly document `zmk` local vendor prefix.
2022-04-03 00:10:29 -04:00
Peter Johanson 3a6a249ad0 feat(behaviors): Add macro support.
* Fine grainted press/release/tap actions.
* TIming between actions can be controlled.
* Processed async, to avoid blocking.
2022-03-23 23:42:54 -04:00
Kurtis Lew 32ebe2cfb5
feat(behaviors): Add Tap-Dance behavior 2022-03-16 01:08:42 -04:00
okke cfd0d3d81a Behaviors: Add 'ignore-modifiers' option to sticky keys
To combine multiple sticky modifiers, the sticky keys must ignore
other (sticky) modifier keypresses.

This behavior is important for "callum-style mods", where all modifiers
are sticky mods.

Fixes #829
2022-02-07 14:45:07 -05:00
Alessandro Bortolin ce843825e8 refactor(backlight): code cleanup 2022-02-05 23:40:18 -05:00
ReFil 5614a8bb80 feat(backlight): initial split support 2022-02-05 23:40:18 -05:00
Alessandro Bortolin 85b2d30bd5 feat(lighting): add backlight behavior 2022-02-05 23:40:18 -05:00
Peter Johanson 4d55e60adb refactor(behaviors): Always add reset behaviors.
* Don'd omit unreferenced reset behaviors, so they are always
  available in split peripherals.
2022-01-31 23:03:34 -05:00
Peter Johanson e8540f17fc fix: Ensure power and underglow behaviors built.
* Remove `/omit-if-no-ref/` from the behavior nodes.
2022-01-31 23:03:34 -05:00
Pete Johanson 47f873b038 feature(split): behavior locality support.
* GATT characteristic allowing passng data + behavior
  label to invoke the behavior on the peripheral side.
* Behaviors have a locality setting to specify where they run.
* Build reset/power/RGB on peripheral.
2022-01-31 23:03:34 -05:00
Peter Johanson 70bb7c9334 feat(behaviors): `&key_repeat` behavior + tests.
* Add new `&key_repeat` behavior that captures and re-sends
  the most recently triggered keycode.

Closes: #853
2022-01-30 22:47:34 -05:00
Lucas Yunkyu Lee 2666bd622c fix(keymaps): add row-offset property to matrix-transform 2021-12-20 06:14:35 -05:00
Peter Johanson 54dabffd0d feat(behaviors): Add caps word (`&caps_word`).
* Add new `&caps_word` behavior that acts like caps lock, but
  releases automatically when any "break" keycode is pressed.
2021-11-28 22:41:35 -05:00
Jonathan Rascher e9140b2da9 feat(conditional-layers): Implement feature
This is a generalization of the existing concept of tri-layer support
that's already well known. Essentially, a conditional-layer
configuration activates a particular layer (the then-layer) when one or
more other layers (the if-layers) are activated.

This is commonly used on ortho keyboards to activate a third "adjust"
layer while the primary two layers ("lower" and "raise") are active.
2021-11-15 05:49:23 -05:00
jding 4e62319982 feat: hold/tap flavor tap-unless-interrupted
Implements new hold/tap flavor, tap-unless-interrupted
Adds tests
Adds docs
2021-11-09 01:07:05 -05:00
jmding8 19ee7849f8
feat(behaviors) Required keys for tap-hold behaviors
* Add optional `hold-trigger-key-positions` hold-tap configuration
* Leverage configuration for decision making around when to trigger
  hold decision in hold-taps.
* Add docs for new configuration.
* Tests for the new config/decision logic.
2021-11-01 12:37:20 -04:00
Darryldh a124eb9f9e feat(display): IL0323 driver for EPD displays.
* Basic driver, using the GD7965 driver as a basis, since the ICs
  are very similar.
2021-08-24 22:15:42 -04:00
Okke Formsma 89ed816c67 feature(hold-tap): Retro tapping 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
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 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
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
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
Okke Formsma 5eeb310b2f feat(grave-escape): implement grave-escape
closes #85
2021-01-22 19:27:18 -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
Okke Formsma feb0d5b90c feat(combos): initial implementation
closes #45
2021-01-13 21:07:41 -05:00
KemoNine 99f932a47d (feat) Allow setting underglow color by key press 2021-01-08 16:08:13 -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
innovaker 61893e453b
refactor(app): format with prettier (#563)
prettier --write .

PR: #563
2021-01-01 22:55:52 -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
Pete Johanson b3f3362b50 feat(display): Initial widget/status screen work.
* Battery and output status widgets
* Built in status screen combining them.
* Ability to define a custom status screen factory
  function.
2020-12-02 16:04:56 -05:00
Okke Formsma 76a6d7b4c5 feat(sticky keys): initial implementation 2020-11-28 00:58:24 -05:00
Okke Formsma 6dcd06bd46 add license headers to behavior dtsi files 2020-11-16 17:26:42 -05:00
Pete Johanson 7d16186b7a fix(ble): Remove unpair combo code.
* Favor the settings reset images for this.
2020-11-10 14:53:03 -05:00
innovaker 348a44a8a3 refactor(app): Remove obsolete include's of `hid_usage_pages.h`
This should've been done in eff1b8223b.
2020-11-10 14:22:53 -05:00
Pete Johanson eff1b8223b refactor(keys): Unify usage page.
* Remove need for separate `&cp` behavior, but
  keep it for now for backward compat.
* Refactor sensor inc/dec as well.
2020-11-05 14:55:40 -05:00
innovaker e925319e4c refactor(hid): Replace deprecated HID usage page references
Deprecate `USAGE_KEYPAD` and replace with `HID_USAGE_KEY`.

Deprecate `USAGE_CONSUMER` and replace with `HID_USAGE_CONSUMER`.

Closes #217.
2020-11-03 23:50:54 -05:00
Joel Spadin 2fe1fbb526 feat(endpoints): rename behavior to outputs
"Outputs" is probably easier for most people to understand than "endpoints".
2020-10-28 18:15:05 -05:00
Joel Spadin 600bba25f0 feat(endpoints): add preferred endpoint setting
Added a new setting to remember the user's preferred endpoint. When both USB and
BLE are connected, the preferred endpoint will be used.

Added a new behavior to control this setting. It supports commands:

    &end END_USB - Prefer USB output
    &end END_BLE - Prefer BLE output
    &end END_TOG - Toggle between USB and BLE
2020-10-28 18:15:05 -05:00
Mega Mind 2e649b7fd4 Fix compilation errors and minor tweaks 2020-10-13 00:09:57 +08:00
Mega Mind b5e1c8a7ad New behavior for ext power control 2020-10-12 23:42:01 +08:00
Mega Mind 4d81b10ba7 Added driver to control the external power output
This PR adds support to control the external power output from controllers like nice!nano, nRFMicro etc

I have implemented based on my understanding of Pete suggestion on this feature.

Testing done:

    Tested by enabling and disabling the ext_power from application and verified
    Verified the application does not crash with boards that does not have ext_power support
    Note:
    I did not test this in nice!nano since I don't have the boards. Will get help from others once the behavior PR is up

Next Steps:

    Create a behavior PR to control enable/disable ext_power
2020-10-10 08:11:46 +08:00
Pete Johanson cf970efb98 feat(bluetooth): Proper bond management, identity support for non-splits
* Add `bt` behavior that can be used to perform certain actions,
  such as next/prev identity, reset identity, etc.
  NOTE: Multiple identities is only supported for non-split shields,
  due to missing Zephyr identity functionality for dual
  central/peripheral devices.
* Proper bond reset tied to action, that honors peripheral bonds,
  so folks can reset and pair to other hosts, without breaking
  bonds between splt halves.
2020-09-13 22:33:05 -04:00
Pete Johanson 68e72f9275 fix: Switch to single AUTHORS file.* Closes #164 2020-09-10 10:24:23 -04:00