Welcome to the fourth ZMK "State Of The Firmware" (SOTF)!
This update will cover all the major activity since SOTF #3.
Recent Activity
Here's a summary of the various major changes since last time, broken down by theme:
Keymaps/Behaviors
Since last time, there have been several new powerful keymap features and behaviors added, including one of the most asked for features, combos!
Combos
The initial combos work has landed! The amazing okke-formsma has once again delivered another powerful feature for ZMK. Combos are "position based", and are configured in a new toplevel node next to they keymap
node in user's keymap files.
An example, that would send the ESC
keycode when pressing both the first and second positions on your keyboard:
/ {
combos {
compatible = "zmk,combos";
combo_esc {
timeout-ms = <50>;
key-positions = <0 1>;
bindings = <&kp ESC>;
};
};
};
Combos currently are "global", and not scoped to a given active layer. There is future planned work to allow enabling a certain combo for only certain active layers.
Sticky Keys (One-Shot Mods/Layers) Behavior
okke-formsma also contributed the initial "sticky keys" behavior, which can be used for functionality sometimes called "one shot mods" or "one shot layers". In your keymap, this would like like:
&sk LEFT_CONTROL
for a sticky key/modifier, or:
&sl NAV
for a sticky layer.
&to
Layer Behavior
mcrosson contributed the new &to
layer related behavior. This can be used to completely replace the active layer with a new one.
This is most frequently used when using multiple core base layers with different layouts, e.g. QWERTY and DVORAK, to switch between them.
Grave Escape Behavior
okke-formsma added an implementation of the "Grave Escape" behavior, developing a more generic "mod-morph" behavior to do so. Adding
&gresc
to your keymap will send ESC
when pressed on its own, but will send `
when pressed with a GUI or Shift modifier held.
RGB Underglow Color Selection
mcrosson updated the RGB Underglow behavior to allow binding an explicit color selection to a key position.
Keymap Upgrader
joelspadin completed the Keymap Upgrader which can be used to update your keymap to using the latest supported codes, and move away from the old deprecated codes.
If you've made keymap customizations, please make sure to run your keymaps through the upgrader, since the old deprecated codes will be removed in a future version of ZMK.
Displays
There has been lots of work to get display support complete enough for use by end users. Although not quite ready for prime time, it is incredibly close, and we are looking forward to having the last few items completed and the feature documented!
Idle Blanking
petejohanson added idle blanking for displays, which ensures they will go blank, and into low power mode, after a short period of inactivity from the user. This ensures we avoid burn-in for OLEDs, and helps improve battery life.