210 lines
12 KiB
Markdown
210 lines
12 KiB
Markdown
---
|
|
title: "ZMK State Of The Firmware #6"
|
|
author: Cem Aksoylar
|
|
author_title: Documentation maintainer
|
|
author_url: https://github.com/caksoylar
|
|
author_image_url: https://avatars.githubusercontent.com/u/7876996
|
|
tags: [SOTF, keyboards, firmware, oss, ble]
|
|
---
|
|
|
|
Welcome to the sixth ZMK "State Of The Firmware" (SOTF)!
|
|
|
|
This update will cover all the major activity since [SOTF #5](/blog/2022/04/10/zmk-sotf-5). That was over a year ago (again!), so there are many new exciting features and plenty of improvements to cover!
|
|
|
|
## Recent Activity
|
|
|
|
Here's a summary of the various major changes since last time, broken down by theme:
|
|
|
|
### Keymaps/Behaviors
|
|
|
|
#### Hold-tap improvements
|
|
|
|
[andrewjrae] added the [global quick tap property](../docs/behaviors/hold-tap.md#global-quick-tap) to the hold-tap behavior in [#1187](https://github.com/zmkfirmware/zmk/pull/1187), which prevents the hold behavior from triggering if it hasn't been a certain duration since the last key press. This is a useful feature to prevent accidental hold activations during quick typing and made its way into many keymaps!
|
|
|
|
[urob] added the [`hold-trigger-on-release` property](../docs/behaviors/hold-tap.md#positional-hold-tap-and-hold-trigger-key-positions) in [#1423](https://github.com/zmkfirmware/zmk/pull/1423). This significantly increases the usefulness of positional constraints on hold-taps, since it allows combining multiple holds such as different modifiers for home-row mods usage.
|
|
|
|
#### Masking mods in mod-morphs
|
|
|
|
[aumuell], [vrinek] and [urob] contributed to improving the behavior of [mod-morphs](../docs/behaviors/mod-morph.md) by masking the triggering modifiers and added `keep-mods` property in [#1412](https://github.com/zmkfirmware/zmk/pull/1412). This unlocks more use cases for mod-morphs, since you are no longer constrained to emitting keycodes that work well with the triggering modifier keycodes.
|
|
|
|
#### Parameterized macros
|
|
|
|
[petejohanson] added [macros that can be parameterized](../docs/behaviors/macros.md#parameterized-macros) with one or two parameters in [#1232](https://github.com/zmkfirmware/zmk/pull/1232). This allows users to define macros in a more modular way and is a nice quality-of-life improvement.
|
|
|
|
#### Arbitrary behaviors on encoder rotation
|
|
|
|
[nickconway] and [petejohanson] added [sensor rotation behaviors](../docs/behaviors/sensor-rotate.md) to allow invoking arbitrary behaviors from encoders [#1758](https://github.com/zmkfirmware/zmk/pull/1758). Previously encoder rotations could only invoke the key-press behavior `&kp` through the `&inc_dec_kp` binding, whereas now you can define new sensor rotation behaviors to invoke others.
|
|
|
|
(Note that currently behaviors that have "locality" such as `&rgb_ug` do not work as expected via encoder rotation bindings in split keyboards, due to issue [#1494](https://github.com/zmkfirmware/zmk/issues/1494).)
|
|
|
|
#### Key toggle behavior
|
|
|
|
[cgoates] added the [key toggle behavior](../docs/behaviors/key-toggle.md) in [#1278](https://github.com/zmkfirmware/zmk/pull/1278), which can be used via its `&kt` binding to toggle the state of a key between pressed and released.
|
|
|
|
#### Bug fixes and other improvements
|
|
|
|
[petejohanson], [andrewjrae] and [okke-formsma] tracked down and fixed an issue causing stuck keys when there are combos on key positions involving hold-tap behaviors in [#1411](https://github.com/zmkfirmware/zmk/pull/1411). This was an elusive bug that took a lot of effort from the community to nail down and fix!
|
|
|
|
[nguyendown] and [joelspadin] tracked down and fixed a couple tricky issues causing stuck keys with [sticky keys](../docs/behaviors/sticky-key.md) in [#1586](https://github.com/zmkfirmware/zmk/pull/1586), [#1745](https://github.com/zmkfirmware/zmk/pull/1745).
|
|
|
|
[okke-formsma] fixed an issue allowing tap dances to be invoked by combos in [#1518](https://github.com/zmkfirmware/zmk/pull/1518).
|
|
|
|
[petejohanson] tweaked the caps word behavior to ignore modifiers in [#1330](https://github.com/zmkfirmware/zmk/pull/1330).
|
|
|
|
### Bluetooth and Split Improvements
|
|
|
|
Release held keys on peripheral disconnect [#1340](https://github.com/zmkfirmware/zmk/pull/1340)
|
|
|
|
Connections status check fix [#1810](https://github.com/zmkfirmware/zmk/pull/1810)
|
|
|
|
Option to require passkey input on pairing [#1822](https://github.com/zmkfirmware/zmk/pull/1822)
|
|
|
|
Multiple peripherals support [#836](https://github.com/zmkfirmware/zmk/pull/836)
|
|
|
|
Improve `settings_reset` shield by making it clear bonds more reliably, and allow it to build for all boards [#1879](https://github.com/zmkfirmware/zmk/pull/1879)
|
|
|
|
Use directed advertising for split communication and more robust central scanning [#1913](https://github.com/zmkfirmware/zmk/pull/1913) [#1912](https://github.com/zmkfirmware/zmk/pull/1912)
|
|
|
|
### Hardware Support
|
|
|
|
Encoder support refactor [#1039](https://github.com/zmkfirmware/zmk/pull/1039)
|
|
|
|
Encoder support in split peripheral halves [#728](https://github.com/zmkfirmware/zmk/pull/728) [#1841](https://github.com/zmkfirmware/zmk/pull/1841)
|
|
|
|
Debouncing for direct GPIO driver [#1288](https://github.com/zmkfirmware/zmk/pull/1288)
|
|
|
|
Add toggle mode support for direct GPIO driver [#1305](https://github.com/zmkfirmware/zmk/pull/1305)
|
|
|
|
595 shift register driver [#1325](https://github.com/zmkfirmware/zmk/pull/1325)
|
|
|
|
Add RGB auto off options using idle timeout and USB status [#1010](https://github.com/zmkfirmware/zmk/pull/1010)
|
|
|
|
EPD initialization improvements [#1098](https://github.com/zmkfirmware/zmk/pull/1098)
|
|
|
|
MAX7318 GPIO expander driver [#1295](https://github.com/zmkfirmware/zmk/pull/1295)
|
|
|
|
nice!view support [#1462](https://github.com/zmkfirmware/zmk/pull/1462) with custom status screen [#1768](https://github.com/zmkfirmware/zmk/pull/1768)
|
|
|
|
Improvements for Seeeduino Xiao BLE [#1293](https://github.com/zmkfirmware/zmk/pull/1293), [d0176f36], [#1545](https://github.com/zmkfirmware/zmk/pull/1545), [#1927](https://github.com/zmkfirmware/zmk/pull/1927)
|
|
|
|
Wait options during matrix reads and writes [#1385](https://github.com/zmkfirmware/zmk/pull/1385), [#1473](https://github.com/zmkfirmware/zmk/pull/1473) ?
|
|
|
|
### Miscellaneous
|
|
|
|
Improved customer page support [#1227](https://github.com/zmkfirmware/zmk/pull/1227)
|
|
|
|
Switch to a reusable user config workflow [#1183](https://github.com/zmkfirmware/zmk/pull/1183) [#1258](https://github.com/zmkfirmware/zmk/pull/1258)
|
|
|
|
Pre-commit setup and standardize formatting [#1651](https://github.com/zmkfirmware/zmk/pull/1651)
|
|
|
|
Refactors by Joel [#1269](https://github.com/zmkfirmware/zmk/pull/1269) [#1255](https://github.com/zmkfirmware/zmk/pull/1255) ?
|
|
|
|
Allow setting BLE connection intervals [#862](https://github.com/zmkfirmware/zmk/pull/862) ?
|
|
|
|
Default to 1ms USB HID interval [#1271](https://github.com/zmkfirmware/zmk/pull/1271) ?
|
|
|
|
Allow configuring battery level report interval [#1303](https://github.com/zmkfirmware/zmk/pull/1303) ?
|
|
|
|
#### Display Features
|
|
|
|
Add setting to invert display colors [#1754](https://github.com/zmkfirmware/zmk/pull/1754)
|
|
|
|
Add battery percentage option for battery widget [#1563](https://github.com/zmkfirmware/zmk/pull/1563) ?
|
|
|
|
Refactor to create new peripheral status widget [#1263](https://github.com/zmkfirmware/zmk/pull/1263) ?
|
|
|
|
#### Zephyr 3.2
|
|
|
|
<!-- TODO -->
|
|
|
|
[petejohanson] helped prepare and test the upgrade of ZMK to Zephyr 3.2 in [#1499](https://github.com/zmkfirmware/zmk/pull/1499)(https://github.com/zmkfirmware/zmk/pull/1499). <!--The updated Zephyr release brings with it some key BLE stability fixes, as well as various other core improvements that improve ZMK. This was a huge undertaking!-->
|
|
|
|
### Documentation
|
|
|
|
Configuration options [#722](https://github.com/zmkfirmware/zmk/pull/722)
|
|
|
|
Battery sensor documentation [#868](https://github.com/zmkfirmware/zmk/pull/868)
|
|
|
|
New behavior guide [#1268](https://github.com/zmkfirmware/zmk/pull/1268)
|
|
|
|
Tap dance and hold-tap documentation improvements [#1298](https://github.com/zmkfirmware/zmk/pull/1298)
|
|
|
|
New shield docs for other interconnects including Xiao, Arduino Uno and Blackpill [#1607](https://github.com/zmkfirmware/zmk/pull/1607)
|
|
|
|
A new Bluetooth feature page [#1499](https://github.com/zmkfirmware/zmk/pull/1499)
|
|
|
|
Various improvements and fixes by kurtis-lew, joelspadin, filterpaper, byran.tech, dxmh, caksoylar and many others
|
|
|
|
## New Shields
|
|
|
|
- Eternal keypad [#1136](https://github.com/zmkfirmware/zmk/pull/1136) - [halcyonCorsair](https://github.com/halcyonCorsair)
|
|
- nullbits SNAP [#1319](https://github.com/zmkfirmware/zmk/pull/1319) - [jaygreco](https://github.com/jaygreco)
|
|
- Aurora Sweep [#1504](https://github.com/zmkfirmware/zmk/pull/1504) - [petejohanson]
|
|
- Aurora Corne [#1520](https://github.com/zmkfirmware/zmk/pull/1520) - [petejohanson]
|
|
- Aurora Lily58 [#1553](https://github.com/zmkfirmware/zmk/pull/1553) - [petejohanson]
|
|
- Aurora Sofle [#1864](https://github.com/zmkfirmware/zmk/pull/1864) - [petejohanson]
|
|
- Aurora Helix [#1873](https://github.com/zmkfirmware/zmk/pull/1873) - [petejohanson]
|
|
- ZMK Uno shield [#1576](https://github.com/zmkfirmware/zmk/pull/1576) - [petejohanson]
|
|
- Waterfowl [#1554](https://github.com/zmkfirmware/zmk/pull/1554) - [JW2586](https://github.com/JW2586)
|
|
- Kyria Rev 3 [#1627](https://github.com/zmkfirmware/zmk/pull/1627) - [petejohanson]
|
|
- Leeloo v2 and Leeloo-Micro [#1762](https://github.com/zmkfirmware/zmk/pull/1762) - [ClicketySplit](https://github.com/ClicketySplit)
|
|
- Spaceman Pancake [#1400](https://github.com/zmkfirmware/zmk/pull/1400) - [jasonhazel](https://github.com/jasonhazel)
|
|
- Reviung5 [#1548](https://github.com/zmkfirmware/zmk/pull/1548) - [zblesk](https://github.com/zblesk)
|
|
|
|
## New Boards
|
|
|
|
- RP2040 boards, including Sparkfun Pro Micro, Adafruit KB2040, Seeeduino Xiao RP2040 were added as part of the Zephyr 3.2 upgrade [#1499](https://github.com/zmkfirmware/zmk/pull/1499) - [petejohanson]
|
|
- Puchi BLE [#1445](https://github.com/zmkfirmware/zmk/pull/1445) - [BenRoe](https://github.com/BenRoe)
|
|
- nRFMicro 1.3/1.4 (nRF52833) [#912](https://github.com/zmkfirmware/zmk/pull/912) - [pashutk](https://github.com/pashutk)
|
|
- nRF5340 DK [#1562](https://github.com/zmkfirmware/zmk/pull/1562) - [joelspadin]
|
|
- PillBug [#1530](https://github.com/zmkfirmware/zmk/pull/1530) - [kylemccreery](https://github.com/kylemccreery)
|
|
- Preonic Rev 3 [#1575](https://github.com/zmkfirmware/zmk/pull/1575) - [jeromeOlivier](https://github.com/jeromeOlivier)
|
|
- Corne-ish Zen v2 [#1498](https://github.com/zmkfirmware/zmk/pull/1498) and v1 [#1593](https://github.com/zmkfirmware/zmk/pull/1593) - [petejohanson] and [caksoylar]
|
|
- Polarity Works CKP family of boards [#1547](https://github.com/zmkfirmware/zmk/pull/1547) - [ReFil](https://github.com/ReFil)
|
|
|
|
## Coming Soon!
|
|
|
|
<!-- TODO -->
|
|
|
|
Some items listed in the last coming soon section are still under active development.
|
|
|
|
- Caps/Scroll/Num Lock LED support
|
|
- Mouse Keys
|
|
- Wired split support
|
|
- More modular approach to external boards/shields, custom code, user keymaps, etc.
|
|
- More shields and boards
|
|
|
|
## Statistics
|
|
|
|
Some statistics of interest for ZMK:
|
|
|
|
- GitHub (lifetime stats)
|
|
- 163 Contributors
|
|
- 1239 Closed PRs
|
|
- 1845 Stars
|
|
- 1918 Forks
|
|
- Discord Chat
|
|
- 7865 total registered (130% up from last SOTF!)
|
|
- Website (last 30 days) <!-- TODO -->
|
|
- 35.9K page views
|
|
- 3.29K new users
|
|
|
|
## Sponsorship
|
|
|
|
[Open Collective](https://opencollective.com/zmkfirmware)
|
|
[Pete Johanson](https://github.com/sponsors/petejohanson)
|
|
(detail what is used for what)
|
|
|
|
## Thanks!
|
|
|
|
<!-- TODO -->
|
|
|
|
As we approach the two year birthday for ZMK, I am reminded of how far we have come in such a short time, in large part thanks to the _amazing_ community that has grown around it. I am so grateful to have so many contributors, testers, and user believing in the project and helping make it a joy to work on.
|
|
|
|
[okke-formsma]: https://github.com/okke-formsma
|
|
[nicell]: https://github.com/Nicell
|
|
[petejohanson]: https://github.com/petejohanson
|
|
[kurtis-lew]: https://github.com/kurtis-lew
|
|
[joelspadin]: https://github.com/joelspadin
|
|
[dxmh]: https://github.com/dxmh
|
|
[caksoylar]: https://github.com/caksoylar
|