From 2871dca9bfce2588e23da0905d7142ef5ff1c1a1 Mon Sep 17 00:00:00 2001 From: innovaker <66737976+innovaker@users.noreply.github.com> Date: Wed, 11 Nov 2020 21:25:32 +0000 Subject: refactor(docs): Change `behavior` to `behaviors` Makes a better URL. --- docs/blog/2020-09-21-zmk-sotf-2.md | 8 +-- docs/blog/2020-11-09-zmk-sotf-3.md | 4 +- docs/docs/behavior/bluetooth.md | 76 ------------------------- docs/docs/behavior/hold-tap.md | 69 ----------------------- docs/docs/behavior/key-press.md | 59 -------------------- docs/docs/behavior/layers.md | 110 ------------------------------------- docs/docs/behavior/lighting.md | 51 ----------------- docs/docs/behavior/misc.md | 42 -------------- docs/docs/behavior/mod-tap.md | 42 -------------- docs/docs/behavior/outputs.md | 59 -------------------- docs/docs/behavior/power.md | 64 --------------------- docs/docs/behavior/reset.md | 43 --------------- docs/docs/behaviors/bluetooth.md | 76 +++++++++++++++++++++++++ docs/docs/behaviors/hold-tap.md | 69 +++++++++++++++++++++++ docs/docs/behaviors/key-press.md | 59 ++++++++++++++++++++ docs/docs/behaviors/layers.md | 110 +++++++++++++++++++++++++++++++++++++ docs/docs/behaviors/lighting.md | 51 +++++++++++++++++ docs/docs/behaviors/misc.md | 42 ++++++++++++++ docs/docs/behaviors/mod-tap.md | 42 ++++++++++++++ docs/docs/behaviors/outputs.md | 59 ++++++++++++++++++++ docs/docs/behaviors/power.md | 64 +++++++++++++++++++++ docs/docs/behaviors/reset.md | 43 +++++++++++++++ docs/docs/features/encoders.md | 2 +- docs/docs/features/keymaps.md | 4 +- docs/docs/intro.md | 52 +++++++++--------- docs/sidebars.js | 20 +++---- 26 files changed, 660 insertions(+), 660 deletions(-) delete mode 100644 docs/docs/behavior/bluetooth.md delete mode 100644 docs/docs/behavior/hold-tap.md delete mode 100644 docs/docs/behavior/key-press.md delete mode 100644 docs/docs/behavior/layers.md delete mode 100644 docs/docs/behavior/lighting.md delete mode 100644 docs/docs/behavior/misc.md delete mode 100644 docs/docs/behavior/mod-tap.md delete mode 100644 docs/docs/behavior/outputs.md delete mode 100644 docs/docs/behavior/power.md delete mode 100644 docs/docs/behavior/reset.md create mode 100644 docs/docs/behaviors/bluetooth.md create mode 100644 docs/docs/behaviors/hold-tap.md create mode 100644 docs/docs/behaviors/key-press.md create mode 100644 docs/docs/behaviors/layers.md create mode 100644 docs/docs/behaviors/lighting.md create mode 100644 docs/docs/behaviors/misc.md create mode 100644 docs/docs/behaviors/mod-tap.md create mode 100644 docs/docs/behaviors/outputs.md create mode 100644 docs/docs/behaviors/power.md create mode 100644 docs/docs/behaviors/reset.md (limited to 'docs') diff --git a/docs/blog/2020-09-21-zmk-sotf-2.md b/docs/blog/2020-09-21-zmk-sotf-2.md index 06c64f0..1ce61c9 100644 --- a/docs/blog/2020-09-21-zmk-sotf-2.md +++ b/docs/blog/2020-09-21-zmk-sotf-2.md @@ -16,16 +16,16 @@ Hacktoberfest activity, and a current open call for community feedback on a ZMK So much going on in ZMK! -- Added a new generic [Hold Tap behavior](https://zmkfirmware.dev/docs/behavior/hold-tap) +- Added a new generic [Hold Tap behavior](https://zmkfirmware.dev/docs/behaviors/hold-tap) in [#146](https://github.com/zmkfirmware/zmk/pull/146) which now powers mod-tap, layer-tap, etc. - [okke-formsma] -- [BLE profile/connection management](https://zmkfirmware.dev/docs/behavior/bluetooth) +- [BLE profile/connection management](https://zmkfirmware.dev/docs/behaviors/bluetooth) in [#133](https://github.com/zmkfirmware/zmk/pull/133) - [petejohanson] - Integration tests were added to automate testing of behaviors in [#131](https://github.com/zmkfirmware/zmk/pull/131) by [BrainWart] & [petejohanson] -- [Toggle layer behavior](https://zmkfirmware.dev/docs/behavior/layers#toggle-layer), e.g. `&tog LOWER`, in +- [Toggle layer behavior](https://zmkfirmware.dev/docs/behaviors/layers#toggle-layer), e.g. `&tog LOWER`, in [#98](https://github.com/zmkfirmware/zmk/pull/98) - [BrainWart] - Key fix for dropped press/release over HID [#93](https://github.com/zmkfirmware/zmk/pull/93)/[#96](https://github.com/zmkfirmware/zmk/pull/96) - [careyk007](https://github.com/careyk007) & [petejohanson] - Code formatting standardized using `clang-format` in [#183](https://github.com/zmkfirmware/zmk/pull/183) - [petejohanson] -- [Bootloader reset behavior](https://zmkfirmware.dev/docs/behavior/reset#bootloader-reset), e.g. `&bootloader`, in [#116](https://github.com/zmkfirmware/zmk/pull/116) - [petejohanson] +- [Bootloader reset behavior](https://zmkfirmware.dev/docs/behaviors/reset#bootloader-reset), e.g. `&bootloader`, in [#116](https://github.com/zmkfirmware/zmk/pull/116) - [petejohanson] - Various bug fixes and documentation ## New Shields diff --git a/docs/blog/2020-11-09-zmk-sotf-3.md b/docs/blog/2020-11-09-zmk-sotf-3.md index 8752065..9e250a9 100644 --- a/docs/blog/2020-11-09-zmk-sotf-3.md +++ b/docs/blog/2020-11-09-zmk-sotf-3.md @@ -67,7 +67,7 @@ With this change, you can add &ext_power EP_TOG ``` -to toggle (on/off) the power to external hardware like RGB underglow or OLEDs. Check out the [external power control](/docs/behavior/power#external-power-control) docs for more info. +to toggle (on/off) the power to external hardware like RGB underglow or OLEDs. Check out the [external power control](/docs/behaviors/power#external-power-control) docs for more info. #### Deep Sleep @@ -78,7 +78,7 @@ included some automatic power savings by switching to PORT events on the nRF52 c #### Output Selection -[joelspadin] added [output selection](/docs/behavior/outputs) to allow selecting whether to send output over USB or BLE if both are connected. This should now help avoid having "double keypresses" when your keyboard is plugged into a host. +[joelspadin] added [output selection](/docs/behaviors/outputs) to allow selecting whether to send output over USB or BLE if both are connected. This should now help avoid having "double keypresses" when your keyboard is plugged into a host. #### Bootloader Corruption Fix diff --git a/docs/docs/behavior/bluetooth.md b/docs/docs/behavior/bluetooth.md deleted file mode 100644 index be0fb23..0000000 --- a/docs/docs/behavior/bluetooth.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: Bluetooth Behavior -sidebar_label: Bluetooth ---- - -## Summary - -The bluetooth behavior allows management of various settings and states related to the bluetooth connection(s) -between the keyboard and the host. By default, ZMK supports five "profiles" for selecting which bonded host -computer/laptop/keyboard should receive the keyboard input; many of the commands here operation on those profiles. - -## Bluetooth Command Defines - -Bluetooth command defines are provided through the [`dt-bindings/zmk/bt.h`](https://github.com/zmkfirmware/zmk/blob/main/app/include/dt-bindings/zmk/bt.h) header, -which is added at the top of the keymap file: - -``` -#include -``` - -This will allow you to reference the actions defined in this header such as `BT_CLR_CMD`. - -Here is a table describing the command for each define: - -| Define | Action | -| ------------ | ---------------------------------------------------------------------------------------------- | -| `BT_CLR_CMD` | Clear bond information between the keyboard and host for the selected profile. | -| `BT_NXT_CMD` | Switch to the next profile, cycling through to the first one when the end is reached. | -| `BT_PRV_CMD` | Switch to the previous profile, cycling through to the last one when the beginning is reached. | -| `BT_SEL_CMD` | Select the 0-indexed profile by number. | - -Because at least one bluetooth commands takes an additional parameter, it is recommended to use -the following aliases in your keymap to avoid having to specify an ignored second parameter: - -| Define | Action | -| -------- | -------------------------------------------------------------------------------- | -| `BT_CLR` | Alias for `BT_CLR_CMD 0` to clear the current profile's bond to the current host | -| `BT_NXT` | Alias for `BT_NXT_CMD 0` to select the next profile | -| `BT_PRV` | Alias for `BT_PRV_CMD 0` to select the previous profile | -| `BT_SEL` | Alias for `BT_SEL_CMD` to select the given profile, e.g. `&bt BT_SEL 1` | - -## Bluetooth Behavior - -The bluetooth behavior completes an bluetooth action given on press. - -### Behavior Binding - -- Reference: `&bt` -- Parameter #1: The bluetooth command define, e.g. `BT_CLR_CMD` -- Parameter #2: (Reserved for future bluetooth command types) - -### Examples - -1. Behavior binding to clear the paired host for the selected profile: - - ``` - &bt BT_CLR - ``` - -1. Behavior binding to select the next profile: - - ``` - &bt BT_NXT - ``` - -1. Behavior binding to select the previous profile: - - ``` - &bt BT_PRV - ``` - -1. Behavior binding to select the 2nd profile (passed parameters are [zero based](https://en.wikipedia.org/wiki/Zero-based_numbering)): - - ``` - &bt BT_SEL 1 - ``` diff --git a/docs/docs/behavior/hold-tap.md b/docs/docs/behavior/hold-tap.md deleted file mode 100644 index 7ae5fc0..0000000 --- a/docs/docs/behavior/hold-tap.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: Hold-tap behavior -sidebar_label: Hold-Tap ---- - -## Summary - -Hold-tap is the basis for other behaviors such as layer-tap and mod-tap. - -Simply put, the hold-tap key will output the 'hold' behavior if it's held for a while, and output the 'tap' behavior when it's tapped quickly. - -### Hold-Tap - -The `tapping_term_ms` parameter decides between a 'tap' and a 'hold'. - -![Simple behavior](../assets/hold-tap/case1_2.png) - -By default, the hold-tap is configured to also select the 'hold' functionality if another key is tapped while it's active: - -![Hold preferred behavior](../assets/hold-tap/case1_2.png) - -We call this the 'hold-preferred' flavor of hold-taps. While this flavor may work very well for a ctrl/escape key, it's not very well suited for home-row mods or layer-taps. That's why there are two more flavors to choose from: 'tap-preferred' and 'balanced'. - -![Hold-tap comparison](../assets/hold-tap/comparison.png) - -### Basic usage - -For basic usage, please see [mod-tap](./mod-tap.md) and [layer-tap](./layers.md) pages. - -### Advanced Configuration - -A code example which configures a mod-tap setting that works with homerow mods: - -``` -#include -#include - -/ { - behaviors { - hm: homerow_mods { - compatible = "zmk,behavior-hold-tap"; - label = "HOMEROW_MODS"; - #binding-cells = <2>; - tapping_term_ms = <175>; - flavor = "balanced"; - bindings = <&kp>, <&kp>; - }; - }; - - keymap { - compatible = "zmk,keymap"; - - default_layer { - bindings = < - &hm LCTRL A &hm LGUI S &hm LALT D &hm LSHFT F - >; - }; - }; -}; - -``` - -If this config does not work for you, try the flavor "tap-preferred" and a short tapping_term_ms such as 120ms. - -If you want to use a tap-hold with a keycode from a different code page, you have to define another behavior with another "bindings" parameter.For example, if you want to use SHIFT and volume up, define the bindings like `bindings = <&kp>, <&kp>;`. Only single-argument behaviors are supported at the moment. - -#### Comparison to QMK - -The hold-preferred flavor works similar to the `HOLD_ON_OTHER_KEY_PRESS` setting in QMK. The 'balanced' flavor is similar to the `PERMISSIVE_HOLD` setting, and the `tap-preferred` flavor is similar to `IGNORE_MOD_TAP_INTERRUPT`. diff --git a/docs/docs/behavior/key-press.md b/docs/docs/behavior/key-press.md deleted file mode 100644 index dcf1a13..0000000 --- a/docs/docs/behavior/key-press.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: Key Press Behaviors -sidebar_label: Key Press ---- - -## Summary - -The most basic of behaviors, is the ability to send certain keycode presses and releases in response to activating -a certain key. - -The categories of supported codes are: - -- [Keyboard & Keypad](../codes/keyboard-keypad) -- [Editing](../codes/editing) -- [Media](../codes/media) -- [Applications](../codes/applications) -- [Input Assist](../codes/input-assist) -- [Power](../codes/power) - -Please visit the [codes](../codes) section for a comprehensive list. - -For advanced users, user-defined HID codes are also supported but must be encoded, please see [`dt-bindings/zmk/keys.h`](https://github.com/zmkfirmware/zmk/blob/main/app/include/dt-bindings/zmk/keys.h) for further insight. - -## Keycode Defines - -To make it easier to encode the HID keycode numeric values, most keymaps include -the [`dt-bindings/zmk/keys.h`](https://github.com/zmkfirmware/zmk/blob/main/app/include/dt-bindings/zmk/keys.h) header -provided by ZMK near the top: - -``` -#include -``` - -Doing so makes a set of defines such as `A`, `N1`, etc. available for use with these behaviors - -:::note -There is an [open issue](https://github.com/zmkfirmware/zmk/issues/21) to provide a more comprehensive, and -complete set of defines for the full keypad and consumer usage pages in the future for ZMK. -::: - -### Improperly defined keymap - `dtlib.DTError: .dts.pre.tmp:` - -When compiling firmware from a keymap, it may be common to encounter an error in the form of a`dtlib.DTError: .dts.pre.tmp:`. -For instructions to resolve such an error, click [here](../troubleshooting###Improperly-defined-keymap) - -## Keypad Key Press - -The "keypad key press" behavior sends standard keypad keycodes on press/release. - -### Behavior Binding - -- Reference: `&kp` -- Parameter: The keycode usage ID from the keypad usage page, e.g. `4` or `A` - -Example: - -``` -&kp A -``` diff --git a/docs/docs/behavior/layers.md b/docs/docs/behavior/layers.md deleted file mode 100644 index fcfdc93..0000000 --- a/docs/docs/behavior/layers.md +++ /dev/null @@ -1,110 +0,0 @@ ---- -title: Layer Behaviors -sidebar_label: Layers ---- - -## Summary - -Often, you may want a certain key position to alter which layers are enabled, change the default layer, etc. -Some of those behaviors are still in the works; the ones that are working now are documented here. - -## Defines To Refer To Layers - -When working with layers, you may have several different key positions with bindings that enable/disable those layers. -To make it easier to refer to those layers in your key bindings, and to change which layers are where later, you can -add a set of `#define`s at the top of your keymap file, and use those layer in your keymap. - -For example, if you have three layers, you can add the following to the top of your keymap: - -``` -#define DEFAULT 0 -#define LOWER 1 -#define RAISE 2 -``` - -This allows you to use those defines, e.g. `LOWER` later in your keymap. - -## Momentary Layer - -The "momentary layer" behavior enables a layer while a certain key is pressed. Immediately upon -activation of the key, the layer is enabled, and immediately open release of the key, the layer is disabled -again. - -### Behavior Binding - -- Reference: `&mo` -- Parameter: The layer number to enable/disable, e.g. `1` - -Example: - -``` -&mo LOWER -``` - -## Layer-tap - -The "layer-tap" behavior enables a layer when a key is held, and output another key when the key is only tapped for a short time. For more information on the inner workings of layer-tap, see [hold-tap](./hold-tap.md). - -### Behavior Binding - -- Reference: `<` -- Parameter: The layer number to enable when held, e.g. `1` -- Parameter: The keycode to send when tapped, e.g. `A` - -Example: - -``` -< LOWER SPACE -``` - -## Toggle Layer - -The "toggle layer" behavior enables a layer until the layer is manually disabled. - -### Behavior Binding - -- Reference: `&tog` -- Parameter: The layer number to enable/disable, e.g. `1` - -Example: - -``` -&tog LOWER -``` - -"Toggle layer" for a : - -``` -#define DEFAULT 0 -#define NAVI 1 - -#define NONE 0 - -/ { - keymap { - compatible = "zmk,keymap"; - - default_layer { - bindings = < - &tog NAVI &kp KP_DIVIDE &kp KP_MULTIPLY &kp KP_MINUS - &kp NUMBER_7 &kp NUMBER_8 &kp NUMBER_9 &kp KP_PLUS - &kp NUMBER_4 &kp NUMBER_5 &kp NUMBER_6 &kp KP_PLUS - &kp NUMBER_1 &kp NUMBER_2 &kp NUMBER_3 &kp RETURN - &kp NUMBER_0 &kp NUMBER_0 &kp DOT &kp RETURN - >; - }; - - nav_layer { - bindings = < - &tog NAVI &kp KP_DIVIDE &kp KP_MULTIPLY &kp KP_MINUS - &kp HOME &kp UP &kp PAGE_UP &kp KP_PLUS - &kp LEFT &none &kp RIGHT &kp KP_PLUS - &kp END &kp DOWN &kp PAGE_DOWN &kp RETURN - &kp INSERT &kp INSERT &kp DEL &kp RETURN - >; - }; - }; -}; -``` - -It is possible to use "toggle layer" to have keys that raise and lower the layers as well. diff --git a/docs/docs/behavior/lighting.md b/docs/docs/behavior/lighting.md deleted file mode 100644 index 2d4f532..0000000 --- a/docs/docs/behavior/lighting.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: Lighting Behavior -sidebar_label: Lighting ---- - -## Summary - -Lighting is often used for either aesthetics or for the practical purposes of lighting up keys in the dark. -Currently ZMK supports RGB underglow, which can be changed and configured using its behavior. - -## RGB Action Defines - -RGB actions defines are provided through the [`dt-bindings/zmk/rgb.h`](https://github.com/zmkfirmware/zmk/blob/main/app/include/dt-bindings/zmk/rgb.h) header, -which is added at the top of the keymap file: - -``` -#include -``` - -This will allow you to reference the actions defined in this header such as `RGB_TOG`. - -Here is a table describing the action for each define: - -| Define | Action | -| --------- | --------------------------------------------------------- | -| `RGB_TOG` | Toggles the RGB feature on and off | -| `RGB_HUI` | Increases the hue of the RGB feature | -| `RGB_HUD` | Decreases the hue of the RGB feature | -| `RGB_SAI` | Increases the saturation of the RGB feature | -| `RGB_SAD` | Decreases the saturation of the RGB feature | -| `RGB_BRI` | Increases the brightness of the RGB feature | -| `RGB_BRD` | Decreases the brightness of the RGB feature | -| `RGB_SPI` | Increases the speed of the RGB feature effect's animation | -| `RGB_SPD` | Decreases the speed of the RGB feature effect's animation | -| `RGB_EFF` | Cycles the RGB feature's effect forwards | -| `RGB_EFR` | Cycles the RGB feature's effect reverse | - -## RGB Underglow - -The "RGB underglow" behavior completes an RGB action given on press. - -### Behavior Binding - -- Reference: `&rgb_ug` -- Parameter: The RGB action define, e.g. `RGB_TOG` or `RGB_BRI` - -Example: - -``` -&rgb_ug RGB_TOG -``` diff --git a/docs/docs/behavior/misc.md b/docs/docs/behavior/misc.md deleted file mode 100644 index 446ba33..0000000 --- a/docs/docs/behavior/misc.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Miscellaneous Behaviors -sidebar_label: Miscellaneous ---- - -## Summary - -There are a few miscellaneous behaviors that are helpful when working with layers in keymaps, -in particular, with handling what happens in higher layers, and if events are passed to -the next layer or not - -## Transparent - -The transparent behavior simply ignores key position presses/releases, so they will be -passed down to the next active layer in the stack. - -### Behavior Binding - -- Reference: `&trans` -- Parameters: None - -Example: - -``` -&trans -``` - -## None - -The none behavior simply swallows and stops key position presses/releases, so they will **not** -be passed down to the next active layer in the stack. - -### Behavior Binding - -- Reference: `&none` -- Parameters: None - -Example: - -``` -&none -``` diff --git a/docs/docs/behavior/mod-tap.md b/docs/docs/behavior/mod-tap.md deleted file mode 100644 index da8b438..0000000 --- a/docs/docs/behavior/mod-tap.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Mod-Tap Behavior -sidebar_label: Mod-Tap ---- - -## Summary - -The Mod-Tap sends a different keypress, if it's tapped or held. When you tap the key shortly, the first keycode is sent. If you hold the key for longer than 200ms, the second keycode is sent. - -If you press another key within the 200ms, the 'mod' behavior is also activated. - -## Mod-Tap - -The Mod-Tap behavior either acts as a held modifier, or as a tapped keycode. - -### Behavior Binding - -- Reference: `&mt` -- Parameter #1: The keycode to be sent when activating as a modifier, e.g. `LSHFT` -- Parameter #2: The keycode to sent when used as a tap, e.g. `A`, `B`. - -Example: - -``` -&mt LSHFT A -``` - -### Configuration - -You can configure a different tapping term in your keymap: - -``` -&mt { - tapping_term_ms = <400>; -}; - -/ { - keymap { - ... - } -} -``` diff --git a/docs/docs/behavior/outputs.md b/docs/docs/behavior/outputs.md deleted file mode 100644 index ae81249..0000000 --- a/docs/docs/behavior/outputs.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: Output Selection Behavior -sidebar_label: Output Selection ---- - -## Summary - -The output behavior allows selecting whether keyboard output is sent to the -USB or bluetooth connection when both are connected. This allows connecting a -keyboard to USB for power but outputting to a different device over bluetooth. - -By default, output is sent to USB when both USB and BLE are connected. -Once you select a different output, it will be remembered until you change it again. - -## Output Command Defines - -Output command defines are provided through the [`dt-bindings/zmk/outputs.h`](https://github.com/zmkfirmware/zmk/blob/main/app/include/dt-bindings/zmk/outputs.h) -header, which is added at the top of the keymap file: - -``` -#include -``` - -This allows you to reference the actions defined in this header: - -| Define | Action | -| --------- | ----------------------------------------------- | -| `OUT_USB` | Prefer sending to USB | -| `OUT_BLE` | Prefer sending to the current bluetooth profile | -| `OUT_TOG` | Toggle between USB and BLE | - -## Output Selection Behavior - -The output selection behavior changes the preferred output on press. - -### Behavior Binding - -- Reference: `&out` -- Parameter #1: Command, e.g. `OUT_BLE` - -### Examples - -1. Behavior binding to prefer sending keyboard output to USB - - ``` - &out OUT_USB - ``` - -1. Behavior binding to prefer sending keyboard output to the current bluetooth profile - - ``` - &out OUT_BLE - ``` - -1. Behavior binding to toggle between preferring USB and BLE - - ``` - &out OUT_TOG - ``` diff --git a/docs/docs/behavior/power.md b/docs/docs/behavior/power.md deleted file mode 100644 index 0de5055..0000000 --- a/docs/docs/behavior/power.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: Power Management Behaviors -sidebar_label: Power Management ---- - -## Summary - -These page contains some of the power management behaviors currently supported by ZMK. - -## External Power Control - -The External power control behavior allows enabling or disabling the VCC power output -to save power. Some of the LEDs will consume power even in OFF state. To preserve -battery life in this scenario, some controller boards have support to disable the -external power completely. - -The following boards currently support this feature: - -- nRFMicro -- nice!nano - -## External Power Control Command Defines - -External power control command defines are provided through the [`dt-bindings/zmk/ext_power.h`](https://github.com/zmkfirmware/zmk/blob/main/app/include/dt-bindings/zmk/ext_power.h) header, -which is added at the top of the keymap file: - -``` -#include -``` - -This will allow you to reference the actions defined in this header such as `EXT_POWER_OFF_CMD`. - -Here is a table describing the command for each define: - -| Define | Action | Alias | -| ---------------------- | --------------------------- | -------- | -| `EXT_POWER_OFF_CMD` | Disable the external power. | `EP_OFF` | -| `EXT_POWER_ON_CMD` | Enable the external power. | `EP_ON` | -| `EXT_POWER_TOGGLE_CMD` | Toggle the external power. | `EP_TOG` | - -### Behavior Binding - -- Reference: `&ext_power` -- Parameter#1: Command, e.g `EP_ON` - -### Example: - -1. Behavior binding to enable the external power - - ``` - &ext_power EP_ON - ``` - -1. Behavior binding to disable the external power - - ``` - &ext_power EP_OFF - ``` - -1. Behavior binding to toggle the external power - - ``` - &ext_power EP_TOG - ``` diff --git a/docs/docs/behavior/reset.md b/docs/docs/behavior/reset.md deleted file mode 100644 index 8cf122b..0000000 --- a/docs/docs/behavior/reset.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: Reset Behaviors -sidebar_label: Reset ---- - -## Summary - -There are two available behaviors that can be used to trigger a reset of the keyboard. -The first is a soft reset, that will simply reset and re-run the currently flashed -firmware; the second when triggered will reset into the bootloader, allowing you to -flash a new firmware to the keyboard. - -## Reset - -The basic reset behavior will reset the keyboard and re-run the firmware flashed -to the device - -### Behavior Binding - -- Reference: `&reset` -- Parameters: None - -Example: - -``` -&reset -``` - -## Bootloader Reset - -The bootloader reset behavior will reset the keyboard and put it into bootloader mode, allowing -you to flash a new firmware. - -### Behavior Binding - -- Reference: `&bootloader` -- Parameters: None - -Example: - -``` -&bootloader -``` diff --git a/docs/docs/behaviors/bluetooth.md b/docs/docs/behaviors/bluetooth.md new file mode 100644 index 0000000..be0fb23 --- /dev/null +++ b/docs/docs/behaviors/bluetooth.md @@ -0,0 +1,76 @@ +--- +title: Bluetooth Behavior +sidebar_label: Bluetooth +--- + +## Summary + +The bluetooth behavior allows management of various settings and states related to the bluetooth connection(s) +between the keyboard and the host. By default, ZMK supports five "profiles" for selecting which bonded host +computer/laptop/keyboard should receive the keyboard input; many of the commands here operation on those profiles. + +## Bluetooth Command Defines + +Bluetooth command defines are provided through the [`dt-bindings/zmk/bt.h`](https://github.com/zmkfirmware/zmk/blob/main/app/include/dt-bindings/zmk/bt.h) header, +which is added at the top of the keymap file: + +``` +#include +``` + +This will allow you to reference the actions defined in this header such as `BT_CLR_CMD`. + +Here is a table describing the command for each define: + +| Define | Action | +| ------------ | ---------------------------------------------------------------------------------------------- | +| `BT_CLR_CMD` | Clear bond information between the keyboard and host for the selected profile. | +| `BT_NXT_CMD` | Switch to the next profile, cycling through to the first one when the end is reached. | +| `BT_PRV_CMD` | Switch to the previous profile, cycling through to the last one when the beginning is reached. | +| `BT_SEL_CMD` | Select the 0-indexed profile by number. | + +Because at least one bluetooth commands takes an additional parameter, it is recommended to use +the following aliases in your keymap to avoid having to specify an ignored second parameter: + +| Define | Action | +| -------- | -------------------------------------------------------------------------------- | +| `BT_CLR` | Alias for `BT_CLR_CMD 0` to clear the current profile's bond to the current host | +| `BT_NXT` | Alias for `BT_NXT_CMD 0` to select the next profile | +| `BT_PRV` | Alias for `BT_PRV_CMD 0` to select the previous profile | +| `BT_SEL` | Alias for `BT_SEL_CMD` to select the given profile, e.g. `&bt BT_SEL 1` | + +## Bluetooth Behavior + +The bluetooth behavior completes an bluetooth action given on press. + +### Behavior Binding + +- Reference: `&bt` +- Parameter #1: The bluetooth command define, e.g. `BT_CLR_CMD` +- Parameter #2: (Reserved for future bluetooth command types) + +### Examples + +1. Behavior binding to clear the paired host for the selected profile: + + ``` + &bt BT_CLR + ``` + +1. Behavior binding to select the next profile: + + ``` + &bt BT_NXT + ``` + +1. Behavior binding to select the previous profile: + + ``` + &bt BT_PRV + ``` + +1. Behavior binding to select the 2nd profile (passed parameters are [zero based](https://en.wikipedia.org/wiki/Zero-based_numbering)): + + ``` + &bt BT_SEL 1 + ``` diff --git a/docs/docs/behaviors/hold-tap.md b/docs/docs/behaviors/hold-tap.md new file mode 100644 index 0000000..7ae5fc0 --- /dev/null +++ b/docs/docs/behaviors/hold-tap.md @@ -0,0 +1,69 @@ +--- +title: Hold-tap behavior +sidebar_label: Hold-Tap +--- + +## Summary + +Hold-tap is the basis for other behaviors such as layer-tap and mod-tap. + +Simply put, the hold-tap key will output the 'hold' behavior if it's held for a while, and output the 'tap' behavior when it's tapped quickly. + +### Hold-Tap + +The `tapping_term_ms` parameter decides between a 'tap' and a 'hold'. + +![Simple behavior](../assets/hold-tap/case1_2.png) + +By default, the hold-tap is configured to also select the 'hold' functionality if another key is tapped while it's active: + +![Hold preferred behavior](../assets/hold-tap/case1_2.png) + +We call this the 'hold-preferred' flavor of hold-taps. While this flavor may work very well for a ctrl/escape key, it's not very well suited for home-row mods or layer-taps. That's why there are two more flavors to choose from: 'tap-preferred' and 'balanced'. + +![Hold-tap comparison](../assets/hold-tap/comparison.png) + +### Basic usage + +For basic usage, please see [mod-tap](./mod-tap.md) and [layer-tap](./layers.md) pages. + +### Advanced Configuration + +A code example which configures a mod-tap setting that works with homerow mods: + +``` +#include +#include + +/ { + behaviors { + hm: homerow_mods { + compatible = "zmk,behavior-hold-tap"; + label = "HOMEROW_MODS"; + #binding-cells = <2>; + tapping_term_ms = <175>; + flavor = "balanced"; + bindings = <&kp>, <&kp>; + }; + }; + + keymap { + compatible = "zmk,keymap"; + + default_layer { + bindings = < + &hm LCTRL A &hm LGUI S &hm LALT D &hm LSHFT F + >; + }; + }; +}; + +``` + +If this config does not work for you, try the flavor "tap-preferred" and a short tapping_term_ms such as 120ms. + +If you want to use a tap-hold with a keycode from a different code page, you have to define another behavior with another "bindings" parameter.For example, if you want to use SHIFT and volume up, define the bindings like `bindings = <&kp>, <&kp>;`. Only single-argument behaviors are supported at the moment. + +#### Comparison to QMK + +The hold-preferred flavor works similar to the `HOLD_ON_OTHER_KEY_PRESS` setting in QMK. The 'balanced' flavor is similar to the `PERMISSIVE_HOLD` setting, and the `tap-preferred` flavor is similar to `IGNORE_MOD_TAP_INTERRUPT`. diff --git a/docs/docs/behaviors/key-press.md b/docs/docs/behaviors/key-press.md new file mode 100644 index 0000000..dcf1a13 --- /dev/null +++ b/docs/docs/behaviors/key-press.md @@ -0,0 +1,59 @@ +--- +title: Key Press Behaviors +sidebar_label: Key Press +--- + +## Summary + +The most basic of behaviors, is the ability to send certain keycode presses and releases in response to activating +a certain key. + +The categories of supported codes are: + +- [Keyboard & Keypad](../codes/keyboard-keypad) +- [Editing](../codes/editing) +- [Media](../codes/media) +- [Applications](../codes/applications) +- [Input Assist](../codes/input-assist) +- [Power](../codes/power) + +Please visit the [codes](../codes) section for a comprehensive list. + +For advanced users, user-defined HID codes are also supported but must be encoded, please see [`dt-bindings/zmk/keys.h`](https://github.com/zmkfirmware/zmk/blob/main/app/include/dt-bindings/zmk/keys.h) for further insight. + +## Keycode Defines + +To make it easier to encode the HID keycode numeric values, most keymaps include +the [`dt-bindings/zmk/keys.h`](https://github.com/zmkfirmware/zmk/blob/main/app/include/dt-bindings/zmk/keys.h) header +provided by ZMK near the top: + +``` +#include +``` + +Doing so makes a set of defines such as `A`, `N1`, etc. available for use with these behaviors + +:::note +There is an [open issue](https://github.com/zmkfirmware/zmk/issues/21) to provide a more comprehensive, and +complete set of defines for the full keypad and consumer usage pages in the future for ZMK. +::: + +### Improperly defined keymap - `dtlib.DTError: .dts.pre.tmp:` + +When compiling firmware from a keymap, it may be common to encounter an error in the form of a`dtlib.DTError: .dts.pre.tmp:`. +For instructions to resolve such an error, click [here](../troubleshooting###Improperly-defined-keymap) + +## Keypad Key Press + +The "keypad key press" behavior sends standard keypad keycodes on press/release. + +### Behavior Binding + +- Reference: `&kp` +- Parameter: The keycode usage ID from the keypad usage page, e.g. `4` or `A` + +Example: + +``` +&kp A +``` diff --git a/docs/docs/behaviors/layers.md b/docs/docs/behaviors/layers.md new file mode 100644 index 0000000..fcfdc93 --- /dev/null +++ b/docs/docs/behaviors/layers.md @@ -0,0 +1,110 @@ +--- +title: Layer Behaviors +sidebar_label: Layers +--- + +## Summary + +Often, you may want a certain key position to alter which layers are enabled, change the default layer, etc. +Some of those behaviors are still in the works; the ones that are working now are documented here. + +## Defines To Refer To Layers + +When working with layers, you may have several different key positions with bindings that enable/disable those layers. +To make it easier to refer to those layers in your key bindings, and to change which layers are where later, you can +add a set of `#define`s at the top of your keymap file, and use those layer in your keymap. + +For example, if you have three layers, you can add the following to the top of your keymap: + +``` +#define DEFAULT 0 +#define LOWER 1 +#define RAISE 2 +``` + +This allows you to use those defines, e.g. `LOWER` later in your keymap. + +## Momentary Layer + +The "momentary layer" behavior enables a layer while a certain key is pressed. Immediately upon +activation of the key, the layer is enabled, and immediately open release of the key, the layer is disabled +again. + +### Behavior Binding + +- Reference: `&mo` +- Parameter: The layer number to enable/disable, e.g. `1` + +Example: + +``` +&mo LOWER +``` + +## Layer-tap + +The "layer-tap" behavior enables a layer when a key is held, and output another key when the key is only tapped for a short time. For more information on the inner workings of layer-tap, see [hold-tap](./hold-tap.md). + +### Behavior Binding + +- Reference: `<` +- Parameter: The layer number to enable when held, e.g. `1` +- Parameter: The keycode to send when tapped, e.g. `A` + +Example: + +``` +< LOWER SPACE +``` + +## Toggle Layer + +The "toggle layer" behavior enables a layer until the layer is manually disabled. + +### Behavior Binding + +- Reference: `&tog` +- Parameter: The layer number to enable/disable, e.g. `1` + +Example: + +``` +&tog LOWER +``` + +"Toggle layer" for a : + +``` +#define DEFAULT 0 +#define NAVI 1 + +#define NONE 0 + +/ { + keymap { + compatible = "zmk,keymap"; + + default_layer { + bindings = < + &tog NAVI &kp KP_DIVIDE &kp KP_MULTIPLY &kp KP_MINUS + &kp NUMBER_7 &kp NUMBER_8 &kp NUMBER_9 &kp KP_PLUS + &kp NUMBER_4 &kp NUMBER_5 &kp NUMBER_6 &kp KP_PLUS + &kp NUMBER_1 &kp NUMBER_2 &kp NUMBER_3 &kp RETURN + &kp NUMBER_0 &kp NUMBER_0 &kp DOT &kp RETURN + >; + }; + + nav_layer { + bindings = < + &tog NAVI &kp KP_DIVIDE &kp KP_MULTIPLY &kp KP_MINUS + &kp HOME &kp UP &kp PAGE_UP &kp KP_PLUS + &kp LEFT &none &kp RIGHT &kp KP_PLUS + &kp END &kp DOWN &kp PAGE_DOWN &kp RETURN + &kp INSERT &kp INSERT &kp DEL &kp RETURN + >; + }; + }; +}; +``` + +It is possible to use "toggle layer" to have keys that raise and lower the layers as well. diff --git a/docs/docs/behaviors/lighting.md b/docs/docs/behaviors/lighting.md new file mode 100644 index 0000000..2d4f532 --- /dev/null +++ b/docs/docs/behaviors/lighting.md @@ -0,0 +1,51 @@ +--- +title: Lighting Behavior +sidebar_label: Lighting +--- + +## Summary + +Lighting is often used for either aesthetics or for the practical purposes of lighting up keys in the dark. +Currently ZMK supports RGB underglow, which can be changed and configured using its behavior. + +## RGB Action Defines + +RGB actions defines are provided through the [`dt-bindings/zmk/rgb.h`](https://github.com/zmkfirmware/zmk/blob/main/app/include/dt-bindings/zmk/rgb.h) header, +which is added at the top of the keymap file: + +``` +#include +``` + +This will allow you to reference the actions defined in this header such as `RGB_TOG`. + +Here is a table describing the action for each define: + +| Define | Action | +| --------- | --------------------------------------------------------- | +| `RGB_TOG` | Toggles the RGB feature on and off | +| `RGB_HUI` | Increases the hue of the RGB feature | +| `RGB_HUD` | Decreases the hue of the RGB feature | +| `RGB_SAI` | Increases the saturation of the RGB feature | +| `RGB_SAD` | Decreases the saturation of the RGB feature | +| `RGB_BRI` | Increases the brightness of the RGB feature | +| `RGB_BRD` | Decreases the brightness of the RGB feature | +| `RGB_SPI` | Increases the speed of the RGB feature effect's animation | +| `RGB_SPD` | Decreases the speed of the RGB feature effect's animation | +| `RGB_EFF` | Cycles the RGB feature's effect forwards | +| `RGB_EFR` | Cycles the RGB feature's effect reverse | + +## RGB Underglow + +The "RGB underglow" behavior completes an RGB action given on press. + +### Behavior Binding + +- Reference: `&rgb_ug` +- Parameter: The RGB action define, e.g. `RGB_TOG` or `RGB_BRI` + +Example: + +``` +&rgb_ug RGB_TOG +``` diff --git a/docs/docs/behaviors/misc.md b/docs/docs/behaviors/misc.md new file mode 100644 index 0000000..446ba33 --- /dev/null +++ b/docs/docs/behaviors/misc.md @@ -0,0 +1,42 @@ +--- +title: Miscellaneous Behaviors +sidebar_label: Miscellaneous +--- + +## Summary + +There are a few miscellaneous behaviors that are helpful when working with layers in keymaps, +in particular, with handling what happens in higher layers, and if events are passed to +the next layer or not + +## Transparent + +The transparent behavior simply ignores key position presses/releases, so they will be +passed down to the next active layer in the stack. + +### Behavior Binding + +- Reference: `&trans` +- Parameters: None + +Example: + +``` +&trans +``` + +## None + +The none behavior simply swallows and stops key position presses/releases, so they will **not** +be passed down to the next active layer in the stack. + +### Behavior Binding + +- Reference: `&none` +- Parameters: None + +Example: + +``` +&none +``` diff --git a/docs/docs/behaviors/mod-tap.md b/docs/docs/behaviors/mod-tap.md new file mode 100644 index 0000000..da8b438 --- /dev/null +++ b/docs/docs/behaviors/mod-tap.md @@ -0,0 +1,42 @@ +--- +title: Mod-Tap Behavior +sidebar_label: Mod-Tap +--- + +## Summary + +The Mod-Tap sends a different keypress, if it's tapped or held. When you tap the key shortly, the first keycode is sent. If you hold the key for longer than 200ms, the second keycode is sent. + +If you press another key within the 200ms, the 'mod' behavior is also activated. + +## Mod-Tap + +The Mod-Tap behavior either acts as a held modifier, or as a tapped keycode. + +### Behavior Binding + +- Reference: `&mt` +- Parameter #1: The keycode to be sent when activating as a modifier, e.g. `LSHFT` +- Parameter #2: The keycode to sent when used as a tap, e.g. `A`, `B`. + +Example: + +``` +&mt LSHFT A +``` + +### Configuration + +You can configure a different tapping term in your keymap: + +``` +&mt { + tapping_term_ms = <400>; +}; + +/ { + keymap { + ... + } +} +``` diff --git a/docs/docs/behaviors/outputs.md b/docs/docs/behaviors/outputs.md new file mode 100644 index 0000000..ae81249 --- /dev/null +++ b/docs/docs/behaviors/outputs.md @@ -0,0 +1,59 @@ +--- +title: Output Selection Behavior +sidebar_label: Output Selection +--- + +## Summary + +The output behavior allows selecting whether keyboard output is sent to the +USB or bluetooth connection when both are connected. This allows connecting a +keyboard to USB for power but outputting to a different device over bluetooth. + +By default, output is sent to USB when both USB and BLE are connected. +Once you select a different output, it will be remembered until you change it again. + +## Output Command Defines + +Output command defines are provided through the [`dt-bindings/zmk/outputs.h`](https://github.com/zmkfirmware/zmk/blob/main/app/include/dt-bindings/zmk/outputs.h) +header, which is added at the top of the keymap file: + +``` +#include +``` + +This allows you to reference the actions defined in this header: + +| Define | Action | +| --------- | ----------------------------------------------- | +| `OUT_USB` | Prefer sending to USB | +| `OUT_BLE` | Prefer sending to the current bluetooth profile | +| `OUT_TOG` | Toggle between USB and BLE | + +## Output Selection Behavior + +The output selection behavior changes the preferred output on press. + +### Behavior Binding + +- Reference: `&out` +- Parameter #1: Command, e.g. `OUT_BLE` + +### Examples + +1. Behavior binding to prefer sending keyboard output to USB + + ``` + &out OUT_USB + ``` + +1. Behavior binding to prefer sending keyboard output to the current bluetooth profile + + ``` + &out OUT_BLE + ``` + +1. Behavior binding to toggle between preferring USB and BLE + + ``` + &out OUT_TOG + ``` diff --git a/docs/docs/behaviors/power.md b/docs/docs/behaviors/power.md new file mode 100644 index 0000000..0de5055 --- /dev/null +++ b/docs/docs/behaviors/power.md @@ -0,0 +1,64 @@ +--- +title: Power Management Behaviors +sidebar_label: Power Management +--- + +## Summary + +These page contains some of the power management behaviors currently supported by ZMK. + +## External Power Control + +The External power control behavior allows enabling or disabling the VCC power output +to save power. Some of the LEDs will consume power even in OFF state. To preserve +battery life in this scenario, some controller boards have support to disable the +external power completely. + +The following boards currently support this feature: + +- nRFMicro +- nice!nano + +## External Power Control Command Defines + +External power control command defines are provided through the [`dt-bindings/zmk/ext_power.h`](https://github.com/zmkfirmware/zmk/blob/main/app/include/dt-bindings/zmk/ext_power.h) header, +which is added at the top of the keymap file: + +``` +#include +``` + +This will allow you to reference the actions defined in this header such as `EXT_POWER_OFF_CMD`. + +Here is a table describing the command for each define: + +| Define | Action | Alias | +| ---------------------- | --------------------------- | -------- | +| `EXT_POWER_OFF_CMD` | Disable the external power. | `EP_OFF` | +| `EXT_POWER_ON_CMD` | Enable the external power. | `EP_ON` | +| `EXT_POWER_TOGGLE_CMD` | Toggle the external power. | `EP_TOG` | + +### Behavior Binding + +- Reference: `&ext_power` +- Parameter#1: Command, e.g `EP_ON` + +### Example: + +1. Behavior binding to enable the external power + + ``` + &ext_power EP_ON + ``` + +1. Behavior binding to disable the external power + + ``` + &ext_power EP_OFF + ``` + +1. Behavior binding to toggle the external power + + ``` + &ext_power EP_TOG + ``` diff --git a/docs/docs/behaviors/reset.md b/docs/docs/behaviors/reset.md new file mode 100644 index 0000000..8cf122b --- /dev/null +++ b/docs/docs/behaviors/reset.md @@ -0,0 +1,43 @@ +--- +title: Reset Behaviors +sidebar_label: Reset +--- + +## Summary + +There are two available behaviors that can be used to trigger a reset of the keyboard. +The first is a soft reset, that will simply reset and re-run the currently flashed +firmware; the second when triggered will reset into the bootloader, allowing you to +flash a new firmware to the keyboard. + +## Reset + +The basic reset behavior will reset the keyboard and re-run the firmware flashed +to the device + +### Behavior Binding + +- Reference: `&reset` +- Parameters: None + +Example: + +``` +&reset +``` + +## Bootloader Reset + +The bootloader reset behavior will reset the keyboard and put it into bootloader mode, allowing +you to flash a new firmware. + +### Behavior Binding + +- Reference: `&bootloader` +- Parameters: None + +Example: + +``` +&bootloader +``` diff --git a/docs/docs/features/encoders.md b/docs/docs/features/encoders.md index b78f89e..52a4357 100644 --- a/docs/docs/features/encoders.md +++ b/docs/docs/features/encoders.md @@ -25,7 +25,7 @@ Rotation is handled separately as a type of sensor. The behavior for this is set sensor-bindings = ; ``` -- `BINDING`, for now, has only one behavior available; `&inc_dec_kp` for key presses (see [Key Press](/docs/behavior/key-press) for details on available keycodes). +- `BINDING`, for now, has only one behavior available; `&inc_dec_kp` for key presses (see [Key Press](/docs/behaviors/key-press) for details on available keycodes). - `CW_KEY` is the keycode activated by a clockwise turn. - `CCW_KEY` is the keycode activated by a counter-clockwise turn. diff --git a/docs/docs/features/keymaps.md b/docs/docs/features/keymaps.md index c4c16c3..b5cae3c 100644 --- a/docs/docs/features/keymaps.md +++ b/docs/docs/features/keymaps.md @@ -30,7 +30,7 @@ For example, the simplest behavior in ZMK is the "key press" behavior, which res (a certain spot on the keyboard), and when that position is pressed, send a keycode to the host, and when the key position is released, updates the host to notify of the keycode being released. -For the full set of possible behaviors, start at the [Key Press](/docs/behavior/key-press) behavior. +For the full set of possible behaviors, start at the [Key Press](/docs/behaviors/key-press) behavior. ## Layers @@ -148,7 +148,7 @@ Each layer should have: 1. A `bindings` property this will be a list of behaviour bindings, one for each key position for the keyboard. 1. (Optional) A `sensor-bindings` property that will be a list of behavior bindings for each sensor on the keyboard. (Currently, only encoders are supported as sensor hardware, but in the future devices like trackpoints would be supported the same way) -For the full set of possible behaviors, start at the [Key Press](/docs/behavior/key-press) behavior. +For the full set of possible behaviors, start at the [Key Press](/docs/behaviors/key-press) behavior. ### Complete Example diff --git a/docs/docs/intro.md b/docs/docs/intro.md index 55456d3..564eedb 100644 --- a/docs/docs/intro.md +++ b/docs/docs/intro.md @@ -11,32 +11,32 @@ firmware built on the [Zephyr™ Project](https://zephyrproject.org/) Real Time ZMK is currently missing some features found in other popular firmware. This table compares the features supported by ZMK, BlueMicro and QMK: -| **Feature** | ZMK | BlueMicro | QMK | -| ---------------------------------------------------------------------------------------------------------------------- | :-: | :-------: | :-: | -| Low Latency BLE Support | ✅ | ✅ | | -| Multi-Device BLE Support | ✅ | | | -| [USB Connectivity](behavior/outputs) | ✅ | | ✅ | -| User Configuration Repositories | ✅ | | | -| Split Keyboard Support | ✅ | ✅ | ✅ | -| [Keymaps and Layers](behavior/layers) | ✅ | ✅ | ✅ | -| [Hold-Tap](behavior/hold-tap) (which includes [Mod-Tap](behavior/mod-tap) and [Layer-Tap](behavior/layers/#layer-tap)) | ✅ | ✅ | ✅ | -| [Keyboard Codes](codes/#keyboard) | ✅ | ✅ | ✅ | -| [Media](codes/#media-controls) & [Consumer](codes/#consumer-controls) Codes | ✅ | ✅ | ✅ | -| [Encoders](features/encoders)[^1] | ✅ | | ✅ | -| [OLED Display Support](features/displays)[^2] | 🚧 | 🚧 | ✅ | -| [RGB Underglow](features/underglow) | ✅ | ✅ | ✅ | -| One Shot Keys | 🚧 | ✅ | ✅ | -| Combo Keys | 🚧 | | ✅ | -| Macros | 🚧 | ✅ | ✅ | -| Mouse Keys | | ✅ | ✅ | -| Low Active Power Usage | ✅ | | | -| [Low Power Sleep States](https://github.com/zmkfirmware/zmk/pull/211) | 🚧 | ✅ | | -| [Low Power Mode (VCC Shutoff)](https://github.com/zmkfirmware/zmk/pull/242) | 🚧 | | | -| [Battery Reporting](https://github.com/zmkfirmware/zmk/issues/47) | 🚧 | ✅ | | -| Shell over BLE | | | | -| Realtime Keymap Updating | 💡 | | ✅ | -| AVR/8 Bit | | | ✅ | -| [Wide Range of ARM Chips Supported](https://docs.zephyrproject.org/latest/boards/index.html) | ✅ | | | +| **Feature** | ZMK | BlueMicro | QMK | +| ------------------------------------------------------------------------------------------------------------------------- | :-: | :-------: | :-: | +| Low Latency BLE Support | ✅ | ✅ | | +| Multi-Device BLE Support | ✅ | | | +| [USB Connectivity](behaviors/outputs) | ✅ | | ✅ | +| User Configuration Repositories | ✅ | | | +| Split Keyboard Support | ✅ | ✅ | ✅ | +| [Keymaps and Layers](behaviors/layers) | ✅ | ✅ | ✅ | +| [Hold-Tap](behaviors/hold-tap) (which includes [Mod-Tap](behaviors/mod-tap) and [Layer-Tap](behaviors/layers/#layer-tap)) | ✅ | ✅ | ✅ | +| [Keyboard Codes](codes/#keyboard) | ✅ | ✅ | ✅ | +| [Media](codes/#media-controls) & [Consumer](codes/#consumer-controls) Codes | ✅ | ✅ | ✅ | +| [Encoders](features/encoders)[^1] | ✅ | | ✅ | +| [OLED Display Support](features/displays)[^2] | 🚧 | 🚧 | ✅ | +| [RGB Underglow](features/underglow) | ✅ | ✅ | ✅ | +| One Shot Keys | 🚧 | ✅ | ✅ | +| Combo Keys | 🚧 | | ✅ | +| Macros | 🚧 | ✅ | ✅ | +| Mouse Keys | | ✅ | ✅ | +| Low Active Power Usage | ✅ | | | +| [Low Power Sleep States](https://github.com/zmkfirmware/zmk/pull/211) | 🚧 | ✅ | | +| [Low Power Mode (VCC Shutoff)](https://github.com/zmkfirmware/zmk/pull/242) | 🚧 | | | +| [Battery Reporting](https://github.com/zmkfirmware/zmk/issues/47) | 🚧 | ✅ | | +| Shell over BLE | | | | +| Realtime Keymap Updating | 💡 | | ✅ | +| AVR/8 Bit | | | ✅ | +| [Wide Range of ARM Chips Supported](https://docs.zephyrproject.org/latest/boards/index.html) | ✅ | | | [^2]: Encoders are not currently supported on peripheral side splits. [^1]: OLEDs are currently proof of concept in ZMK. diff --git a/docs/sidebars.js b/docs/sidebars.js index d64d96c..9add949 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -15,16 +15,16 @@ module.exports = { "features/underglow", ], Behaviors: [ - "behavior/key-press", - "behavior/layers", - "behavior/misc", - "behavior/hold-tap", - "behavior/mod-tap", - "behavior/reset", - "behavior/bluetooth", - "behavior/outputs", - "behavior/lighting", - "behavior/power", + "behaviors/key-press", + "behaviors/layers", + "behaviors/misc", + "behaviors/hold-tap", + "behaviors/mod-tap", + "behaviors/reset", + "behaviors/bluetooth", + "behaviors/outputs", + "behaviors/lighting", + "behaviors/power", ], Codes: [ "codes/index", -- cgit v1.2.3