ZMK (Zephyr Mechanical Keyboard) Firmware is an [[MIT License]] licensed keyboard firmware written in LANG. - [Website](https://zmk.dev) - [GitHub](https://github.com/zmkfirmware/zmk) - [Documentation](https://zmk.dev/docs) - Configurator (weirdly none!) > it's extremely customizable and was designed with wireless in mind \- via SliceMK's [Firmware Page](https://www.slicemk.com/pages/zmk-firmware) # Notability Used on the [[Corne-ish Zen Keyboard]] that I own. I think [[Zephyr]] is neat. # Philosophy ## General To be honest, there is something *off* about ZMK. If [[QMK]] was a bit unsettling because it was fork by and for manufacturers, ZMK is weirder because it was made apparently as a free hobby project but started with a very libertarian mentality and has since been picked up by individuals and companies who seem to not be very interested in collaboration or support. ## GitHub Actions ZMK *requires* GitHub Actions to build. It is designed on top of a huge tower of complexity. ## License Misconceptions > Designed for the future, including wireless support. Other than the desire to build on top of a homogenous and well supported system like [[Zephyr]] the creators believed that an [[MIT License]] firmware was needed to ship binary blobs such as those provided with many [[Bluetooth]] drivers. > [[MIT License]]d to remove any future limitations in innovation. > Just like other open source firmware, ZMK is all about the free and the sharing. However, some other projects use the GPL license which prevents integration of libraries and drivers whose licenses are not GPL-compatible (such as some embedded BLE drivers). ZMK uses the permissive [MIT](https://github.com/zmkfirmware/zmk/blob/main/LICENSE) license which doesn’t have this limitation. \- from home page and docs This description of the GPL family of licenses is obviously false. The language used when talking about in the license is very odd coming from someone who is supposedly a former [[Gentoo]] core contributor. ## Keymap Editor Bizarrely, there is no official maintained graphical keyboard configurator (both [[TMK]] and [[QMK]] have them), but there are several disparate ones in various states of maintenance by unrelated developers, ~~but none of them have broad support for different layouts~~. # Hardware Support Supports many different [boards](https://zmk.dev/docs/hardware) and underlying [[ISA]]s, but there are a few limitations. > Sorry, Zephyr™ only supports 32-bit and 64-bit platforms. \- Official Documentation > ZMK only supports wireless split, but wired split is possible and we welcome contributions! \- Official Documentation as of [[2023-11-01]] While [[Zephyr]] itself supports [[Teensy]] 4.x boards, and its predecessors QMK and TMK support the 2.x (8-bit) line, ZMK does *not* support any Teensy boards. ## Keyboards - [[Corne-ish Zen Keyboard]] - [[Kenesis Advantage360 Professional]] (the [wireless](https://kinesis-ergo.com/shop/adv360pro/) version of their split keyboard) - As of [[2023-11-01]] has contributed only $650 to the developer via his Open Collective [page](https://opencollective.com/zmkfirmware) - Uses a [fork](https://kinesiscorporation.github.io/Adv360-Pro-GUI/) of Nick's Keymap Editor # Features Built on top of the [[Zephyr]] embedded operating system. Fully programmable and able to send every [keycode](https://zmk.dev/docs/codes) supported by the USB HID standard. # Tips # Resources ## Keymap Editors ### Nick Coutsos' Keymap Editor - https://nickcoutsos.github.io/keymap-editor/ - https://github.com/nickcoutsos/keymap-editor While the developer has [stopped](https://github.com/nickcoutsos/keymap-editor/wiki/Source-Code-Updates) public development to prevent predatory companies from profiting off of his work he does still maintain it. A lesson in why developers should not choose [[MIT License]] for anything they wouldn't feel comfortable being stolen. Most online keymap editors hosted on various manufacturer's sites are forks of an old version of this. Dev still heavily contributes to ZMK itself. ### SliceMK Configurator [[SliceMK ErgoDox]] Configurator is only for their own Ergo-Dox variant keyboard. - https://config.slicemk.com/zmk/keymap/?keyboard=ergodox # References