├── app ├── prj.conf ├── boards │ ├── shields │ │ ├── clog │ │ │ ├── clog.conf │ │ │ ├── clog_left.overlay │ │ │ ├── clog_right.overlay │ │ │ ├── clog.zmk.yml │ │ │ └── Kconfig.shield │ │ ├── eek │ │ │ ├── eek.conf │ │ │ ├── README.md │ │ │ ├── eek.zmk.yml │ │ │ ├── Kconfig.shield │ │ │ └── Kconfig.defconfig │ │ ├── iris │ │ │ ├── iris.conf │ │ │ ├── iris_left.conf │ │ │ ├── iris_right.conf │ │ │ ├── Kconfig.shield │ │ │ └── iris.zmk.yml │ │ ├── jian │ │ │ ├── jian.conf │ │ │ ├── jian_left.conf │ │ │ ├── jian_right.conf │ │ │ ├── jian.zmk.yml │ │ │ ├── Kconfig.shield │ │ │ └── Kconfig.defconfig │ │ ├── m60 │ │ │ ├── m60.conf │ │ │ ├── Kconfig.shield │ │ │ ├── Kconfig.defconfig │ │ │ └── m60.zmk.yml │ │ ├── qaz │ │ │ ├── qaz.conf │ │ │ ├── Kconfig.shield │ │ │ ├── qaz.zmk.yml │ │ │ └── Kconfig.defconfig │ │ ├── contra │ │ │ ├── contra.conf │ │ │ ├── Kconfig.shield │ │ │ ├── contra.zmk.yml │ │ │ └── Kconfig.defconfig │ │ ├── cradio │ │ │ ├── cradio.conf │ │ │ ├── cradio_left.conf │ │ │ ├── cradio_right.conf │ │ │ ├── cradio_left.overlay │ │ │ ├── cradio_right.overlay │ │ │ ├── Kconfig.shield │ │ │ └── cradio.zmk.yml │ │ ├── romac │ │ │ ├── romac.conf │ │ │ ├── Kconfig.shield │ │ │ ├── romac.zmk.yml │ │ │ └── Kconfig.defconfig │ │ ├── bfo9000 │ │ │ ├── bfo9000.conf │ │ │ ├── bfo9000_left.conf │ │ │ ├── bfo9000_right.conf │ │ │ ├── Kconfig.shield │ │ │ └── bfo9000.zmk.yml │ │ ├── corne │ │ │ ├── corne_left.conf │ │ │ ├── corne_right.conf │ │ │ ├── corne.conf │ │ │ ├── Kconfig.shield │ │ │ └── corne.zmk.yml │ │ ├── ergodash │ │ │ ├── ergodash.conf │ │ │ ├── ergodash_left.overlay │ │ │ ├── ergodash_right.overlay │ │ │ ├── ergodash.zmk.yml │ │ │ └── Kconfig.shield │ │ ├── jorne │ │ │ ├── jorne_left.conf │ │ │ ├── jorne_right.conf │ │ │ ├── jorne.conf │ │ │ ├── Kconfig.shield │ │ │ └── jorne.zmk.yml │ │ ├── kyria │ │ │ ├── kyria_left.conf │ │ │ ├── kyria_right.conf │ │ │ └── kyria.zmk.yml │ │ ├── naked60 │ │ │ ├── naked60.conf │ │ │ ├── Kconfig.shield │ │ │ ├── naked60.zmk.yml │ │ │ └── Kconfig.defconfig │ │ ├── osprette │ │ │ ├── osprette.conf │ │ │ ├── Kconfig.shield │ │ │ ├── osprette.zmk.yml │ │ │ └── Kconfig.defconfig │ │ ├── quefrency │ │ │ ├── quefrency.conf │ │ │ ├── quefrency_left.conf │ │ │ ├── quefrency_right.conf │ │ │ ├── Kconfig.shield │ │ │ └── quefrency.zmk.yml │ │ ├── hummingbird │ │ │ ├── hummingbird.conf │ │ │ ├── Kconfig.shield │ │ │ ├── hummingbird.zmk.yml │ │ │ └── Kconfig.defconfig │ │ ├── lily58 │ │ │ ├── lily58_right.conf │ │ │ ├── lily58_left.conf │ │ │ ├── lily58.conf │ │ │ ├── Kconfig.shield │ │ │ └── lily58.zmk.yml │ │ ├── microdox │ │ │ ├── microdox_left.conf │ │ │ ├── microdox_right.conf │ │ │ ├── microdox.conf │ │ │ ├── Kconfig.shield │ │ │ └── microdox.zmk.yml │ │ ├── nibble │ │ │ ├── boards │ │ │ │ ├── proton_c.conf │ │ │ │ └── nice_nano.conf │ │ │ ├── Kconfig.shield │ │ │ ├── nibble.conf │ │ │ └── nibble.zmk.yml │ │ ├── splitreus62 │ │ │ ├── splitreus62.conf │ │ │ ├── splitreus62_left.conf │ │ │ ├── splitreus62_right.conf │ │ │ ├── splitreus62.zmk.yml │ │ │ └── Kconfig.shield │ │ ├── tidbit │ │ │ ├── boards │ │ │ │ ├── proton_c.conf │ │ │ │ └── nice_nano.conf │ │ │ ├── tidbit.overlay │ │ │ ├── Kconfig.shield │ │ │ ├── tidbit_19key.overlay │ │ │ ├── tidbit.zmk.yml │ │ │ └── tidbit.conf │ │ ├── boardsource3x4 │ │ │ ├── boardsource3x4.conf │ │ │ ├── Kconfig.shield │ │ │ ├── Kconfig.defconfig │ │ │ └── boardsource3x4.zmk.yml │ │ ├── boardsource5x12 │ │ │ ├── boardsource5x12.conf │ │ │ ├── Kconfig.shield │ │ │ ├── Kconfig.defconfig │ │ │ └── boardsource5x12.zmk.yml │ │ ├── jiran │ │ │ ├── jiran.conf │ │ │ ├── jiran.zmk.yml │ │ │ └── Kconfig.shield │ │ ├── clueboard_california │ │ │ ├── clueboard_california.conf │ │ │ └── Kconfig.shield │ │ ├── crbn │ │ │ ├── README.md │ │ │ ├── crbn.conf │ │ │ ├── Kconfig.shield │ │ │ ├── Kconfig.defconfig │ │ │ └── crbn.zmk.yml │ │ ├── settings_reset │ │ │ ├── settings_reset.conf │ │ │ ├── Kconfig.shield │ │ │ └── Kconfig.defconfig │ │ ├── sofle │ │ │ ├── sofle_left.conf │ │ │ ├── sofle_right.conf │ │ │ ├── Kconfig.shield │ │ │ ├── sofle.zmk.yml │ │ │ └── sofle.conf │ │ ├── tg4x │ │ │ ├── tg4x.conf │ │ │ ├── Kconfig.shield │ │ │ ├── tg4x.zmk.yml │ │ │ ├── Kconfig.defconfig │ │ │ ├── boards │ │ │ │ └── nice_nano.conf │ │ │ └── README.md │ │ ├── a_dux │ │ │ ├── a_dux.conf │ │ │ ├── a_dux_left.overlay │ │ │ ├── a_dux_right.overlay │ │ │ ├── Kconfig.shield │ │ │ └── a_dux.zmk.yml │ │ ├── murphpad │ │ │ ├── boards │ │ │ │ └── nice_nano.conf │ │ │ ├── Kconfig.shield │ │ │ ├── murphpad.conf │ │ │ └── murphpad.zmk.yml │ │ ├── chalice │ │ │ ├── chalice.conf │ │ │ ├── Kconfig.shield │ │ │ ├── Kconfig.defconfig │ │ │ └── chalice.zmk.yml │ │ ├── redox │ │ │ ├── redox.conf │ │ │ ├── Kconfig.shield │ │ │ └── redox.zmk.yml │ │ ├── reviung41 │ │ │ ├── reviung41.conf │ │ │ ├── Kconfig.shield │ │ │ ├── Kconfig.defconfig │ │ │ └── reviung41.zmk.yml │ │ ├── quick_actions │ │ │ ├── Kconfig.defconfig │ │ │ ├── Kconfig.shield │ │ │ ├── quick_actions.conf │ │ │ └── quick_actions.zmk.yml │ │ ├── Kconfig.shield │ │ ├── bat43 │ │ │ ├── Kconfig.shield │ │ │ ├── bat43.zmk.yml │ │ │ └── Kconfig.defconfig │ │ ├── knob_goblin │ │ │ ├── Kconfig.shield │ │ │ ├── knob_goblin.zmk.yml │ │ │ └── knob_goblin.conf │ │ ├── romac_plus │ │ │ ├── Kconfig.shield │ │ │ ├── Kconfig.defconfig │ │ │ ├── romac_plus.conf │ │ │ └── romac_plus.zmk.yml │ │ ├── two_percent_milk │ │ │ ├── Kconfig.shield │ │ │ ├── Kconfig.defconfig │ │ │ └── two_percent_milk.zmk.yml │ │ ├── helix │ │ │ ├── helix.conf │ │ │ ├── Kconfig.shield │ │ │ └── helix.zmk.yml │ │ ├── elephant42 │ │ │ ├── elephant42.conf │ │ │ ├── Kconfig.shield │ │ │ └── elephant42.zmk.yml │ │ ├── fourier │ │ │ ├── fourier.zmk.yml │ │ │ └── Kconfig.shield │ │ ├── leeloo │ │ │ ├── Kconfig.shield │ │ │ ├── leeloo.zmk.yml │ │ │ └── leeloo.conf │ │ ├── lotus58 │ │ │ ├── Kconfig.shield │ │ │ ├── lotus58.zmk.yml │ │ │ └── lotus58.conf │ │ └── zodiark │ │ │ ├── Kconfig.shield │ │ │ ├── zodiark.conf │ │ │ └── zodiark.zmk.yml │ ├── arm │ │ ├── planck │ │ │ ├── CMakeLists.txt │ │ │ ├── planck_rev6.zmk.yml │ │ │ ├── Kconfig.board │ │ │ ├── board.cmake │ │ │ └── planck_rev6.yaml │ │ ├── mikoto │ │ │ ├── CMakeLists.txt │ │ │ ├── Kconfig.board │ │ │ ├── mikoto_520.zmk.yml │ │ │ ├── board.cmake │ │ │ └── mikoto_520.yaml │ │ ├── nice60 │ │ │ ├── Kconfig.board │ │ │ ├── Kconfig │ │ │ ├── nice60.zmk.yml │ │ │ ├── nice60.yaml │ │ │ ├── README.md │ │ │ └── board.cmake │ │ ├── nrfmicro │ │ │ ├── CMakeLists.txt │ │ │ ├── nrfmicro_11.zmk.yml │ │ │ ├── nrfmicro_13.zmk.yml │ │ │ ├── board.cmake │ │ │ ├── nrfmicro_11_flipped.zmk.yml │ │ │ ├── nrfmicro_11.yaml │ │ │ ├── nrfmicro_13.yaml │ │ │ ├── nrfmicro_11_flipped.yaml │ │ │ └── Kconfig │ │ ├── s40nc │ │ │ ├── Kconfig.board │ │ │ ├── s40nc.zmk.yml │ │ │ ├── s40nc.yaml │ │ │ ├── README.md │ │ │ └── board.cmake │ │ ├── bdn9 │ │ │ ├── bdn9_rev2.conf │ │ │ ├── Kconfig.board │ │ │ ├── bdn9_rev2.yaml │ │ │ ├── bdn9_rev2.yml │ │ │ ├── bdn9_rev2.zmk.yml │ │ │ └── board.cmake │ │ ├── dz60rgb │ │ │ ├── Kconfig.board │ │ │ ├── board.cmake │ │ │ ├── Kconfig.defconfig │ │ │ └── dz60rgb_rev1.yaml │ │ ├── bluemicro840 │ │ │ ├── Kconfig │ │ │ ├── Kconfig.board │ │ │ ├── board.cmake │ │ │ ├── bluemicro840_v1.zmk.yml │ │ │ └── bluemicro840_v1.yaml │ │ ├── bt60 │ │ │ ├── Kconfig │ │ │ ├── bt60_v1.zmk.yml │ │ │ ├── bt60_v1_hs.zmk.yml │ │ │ ├── board.cmake │ │ │ ├── bt60_v1.yaml │ │ │ ├── bt60_v1_hs.yaml │ │ │ └── Kconfig.board │ │ ├── proton_c │ │ │ ├── proton_c.zmk.yml │ │ │ ├── Kconfig.board │ │ │ ├── Kconfig.defconfig │ │ │ ├── proton_c.yaml │ │ │ └── board.cmake │ │ ├── nice_nano │ │ │ ├── Kconfig │ │ │ ├── nice_nano.zmk.yml │ │ │ ├── nice_nano_v2.zmk.yml │ │ │ ├── board.cmake │ │ │ ├── nice_nano.yaml │ │ │ ├── nice_nano_v2.yaml │ │ │ └── Kconfig.board │ │ ├── ferris │ │ │ ├── Kconfig.board │ │ │ ├── ferris_rev02.yaml │ │ │ ├── ferris_rev02.zmk.yml │ │ │ ├── board.cmake │ │ │ └── README.md │ │ ├── nrf52840_m2 │ │ │ ├── Kconfig │ │ │ ├── nrf52840_m2.zmk.yml │ │ │ ├── Kconfig.board │ │ │ ├── nrf52840_m2.yaml │ │ │ └── board.cmake │ │ ├── seeeduino_xiao │ │ │ └── seeeduino_xiao.zmk.yml │ │ └── seeeduino_xiao_ble │ │ │ └── seeeduino_xiao_ble.zmk.yml │ ├── Kconfig │ ├── seeeduino_xiao.conf │ ├── native_posix.conf │ ├── native_posix_64.conf │ └── seeeduino_xiao_ble.conf ├── .gitignore ├── tests │ ├── none │ │ ├── layered │ │ │ ├── keycode_events.snapshot │ │ │ ├── events.patterns │ │ │ └── native_posix_64.keymap │ │ └── normal │ │ │ ├── keycode_events.snapshot │ │ │ ├── events.patterns │ │ │ ├── native_posix.keymap │ │ │ └── native_posix_64.keymap │ ├── transparent │ │ ├── normal │ │ │ ├── keycode_events.snapshot │ │ │ ├── events.patterns │ │ │ └── native_posix_64.keymap │ │ └── layered │ │ │ ├── events.patterns │ │ │ ├── keycode_events.snapshot │ │ │ └── native_posix_64.keymap │ ├── backlight │ │ ├── basic │ │ │ ├── events.patterns │ │ │ └── native_posix_64.conf │ │ ├── cycle │ │ │ ├── events.patterns │ │ │ └── native_posix_64.conf │ │ ├── config-brt │ │ │ ├── events.patterns │ │ │ ├── keycode_events.snapshot │ │ │ ├── native_posix_64.keymap │ │ │ └── native_posix_64.conf │ │ ├── config-on │ │ │ ├── events.patterns │ │ │ ├── keycode_events.snapshot │ │ │ ├── native_posix_64.keymap │ │ │ └── native_posix_64.conf │ │ ├── config-step │ │ │ └── events.patterns │ │ └── low-brightness │ │ │ ├── events.patterns │ │ │ └── native_posix_64.conf │ ├── combo │ │ ├── layer-filter-0 │ │ │ └── events.patterns │ │ ├── layer-filter-1 │ │ │ └── events.patterns │ │ ├── press-release │ │ │ └── events.patterns │ │ ├── press-timeout │ │ │ └── events.patterns │ │ ├── combos-and-holdtaps-1 │ │ │ └── events.patterns │ │ ├── combos-and-holdtaps-2 │ │ │ ├── events.patterns │ │ │ └── keycode_events.snapshot │ │ ├── multiple-timeouts │ │ │ └── events.patterns │ │ ├── overlapping-combos-0 │ │ │ └── events.patterns │ │ ├── overlapping-combos-1 │ │ │ └── events.patterns │ │ ├── overlapping-combos-2 │ │ │ └── events.patterns │ │ ├── overlapping-combos-3 │ │ │ └── events.patterns │ │ ├── combos-and-holdtaps-0 │ │ │ └── events.patterns │ │ ├── slowrelease-disabled │ │ │ └── events.patterns │ │ ├── slowrelease-enabled │ │ │ └── events.patterns │ │ ├── partially-overlapping-combos │ │ │ └── events.patterns │ │ ├── press1-press2-release1-release2 │ │ │ └── events.patterns │ │ ├── press1-release1-press2-release2 │ │ │ └── events.patterns │ │ ├── press-release-long-combo-complete │ │ │ ├── events.patterns │ │ │ └── keycode_events.snapshot │ │ ├── press1-press2-release2-release1 │ │ │ └── events.patterns │ │ ├── press-release-long-combo-incomplete │ │ │ └── events.patterns │ │ └── press-release-long-combo-wrong-last-key │ │ │ └── events.patterns │ ├── macros │ │ ├── press-release │ │ │ └── events.patterns │ │ ├── mo-plus-modifier-macro │ │ │ └── events.patterns │ │ ├── mo-plus-modifier-from-hold-tap │ │ │ └── events.patterns │ │ ├── basic │ │ │ └── events.patterns │ │ ├── press-mid-macro │ │ │ └── events.patterns │ │ ├── timing-override │ │ │ └── events.patterns │ │ └── wait-macro-release │ │ │ └── events.patterns │ ├── sticky-keys │ │ ├── 1-os-dn-up │ │ │ └── events.patterns │ │ ├── 10-sl-sl-kp │ │ │ └── events.patterns │ │ ├── 9-sk-dn-up-dn-up │ │ │ └── events.patterns │ │ ├── 10-callum-mods │ │ │ └── events.patterns │ │ ├── 2-os-dn-up-kcdn-kcup │ │ │ └── events.patterns │ │ ├── 2-sl-dn-up-kcdn-kcup │ │ │ └── events.patterns │ │ ├── 3a-os-dn-kcdn-kcup-up │ │ │ └── events.patterns │ │ ├── 3b-os-dn-kcdn-up-kcup │ │ │ └── events.patterns │ │ ├── 5-os-kcdn-dn-kcup-up │ │ │ └── events.patterns │ │ ├── 4-os-dn-up-kcdn-timer-kcup │ │ │ └── events.patterns │ │ ├── 8-lsk-osk-combination │ │ │ └── events.patterns │ │ ├── 2-os-dn-up-kcdn-kcup-quick-release │ │ │ └── events.patterns │ │ └── 7-os-dn-up-kc1dn-kc2dn-kc1up-kc2up │ │ │ └── events.patterns │ ├── key-repeat │ │ ├── send-nothing-if-no-keys-pressed-yet │ │ │ ├── keycode_events.snapshot │ │ │ ├── events.patterns │ │ │ └── native_posix_64.keymap │ │ ├── ignore-other-usage-page-events │ │ │ └── events.patterns │ │ ├── press-and-release-after-key-usage │ │ │ └── events.patterns │ │ └── press-and-release-with-explicit-modifiers │ │ │ └── events.patterns │ ├── keypress │ │ └── kp-press-release │ │ │ ├── events.patterns │ │ │ ├── native_posix_64.keymap │ │ │ └── keycode_events.snapshot │ ├── keytoggle │ │ ├── kt-press-release │ │ │ ├── events.patterns │ │ │ ├── keycode_events.snapshot │ │ │ └── native_posix_64.keymap │ │ ├── kt-press-release-nkro │ │ │ ├── events.patterns │ │ │ ├── keycode_events.snapshot │ │ │ ├── native_posix_64.conf │ │ │ └── native_posix_64.keymap │ │ ├── kt-alt-tab │ │ │ └── events.patterns │ │ └── kt-modded-alpha │ │ │ └── events.patterns │ ├── gresc │ │ ├── gresc-press-release │ │ │ └── events.patterns │ │ └── gresc-two-instances │ │ │ └── events.patterns │ ├── toggle-layer │ │ ├── normal │ │ │ ├── events.patterns │ │ │ ├── keycode_events.snapshot │ │ │ └── native_posix_64.keymap │ │ └── early-key-release │ │ │ └── events.patterns │ ├── wpm │ │ ├── 1-single_keypress │ │ │ ├── events.patterns │ │ │ ├── native_posix_64.conf │ │ │ └── native_posix_64.keymap │ │ └── 2-multiple_keypress │ │ │ ├── events.patterns │ │ │ ├── native_posix_64.conf │ │ │ └── keycode_events.snapshot │ ├── momentary-layer │ │ ├── 1-normal │ │ │ ├── events.patterns │ │ │ └── keycode_events.snapshot │ │ ├── 2-early-key-release │ │ │ ├── events.patterns │ │ │ └── keycode_events.snapshot │ │ ├── 3-covered │ │ │ ├── keycode_events.snapshot │ │ │ └── events.patterns │ │ ├── 4-nested │ │ │ ├── events.patterns │ │ │ └── keycode_events.snapshot │ │ └── 5-nested-early-key-release │ │ │ └── events.patterns │ ├── tap-dance │ │ ├── 1a-tap1 │ │ │ ├── events.patterns │ │ │ └── native_posix_64.keymap │ │ ├── 1b-tap2 │ │ │ └── events.patterns │ │ ├── 1c-tap3 │ │ │ └── events.patterns │ │ ├── 2a-hold1 │ │ │ ├── events.patterns │ │ │ └── native_posix_64.keymap │ │ ├── 2b-hold2 │ │ │ └── events.patterns │ │ ├── 2c-hold3 │ │ │ └── events.patterns │ │ ├── 4a-single │ │ │ ├── events.patterns │ │ │ └── native_posix_64.keymap │ │ ├── 3a-tap-int-mid │ │ │ └── events.patterns │ │ ├── 3b-tap-int-seq │ │ │ └── events.patterns │ │ ├── 3c-tap-int-after │ │ │ └── events.patterns │ │ ├── 3d-hold-int-mid │ │ │ └── events.patterns │ │ ├── 3e-hold-int-seq │ │ │ └── events.patterns │ │ ├── 5a-tdint-mid │ │ │ └── events.patterns │ │ ├── 5b-tdint-seq │ │ │ └── events.patterns │ │ ├── 5c-tdint-after │ │ │ └── events.patterns │ │ ├── 3f-hold-int-after │ │ │ └── events.patterns │ │ └── 5d-tdint-multiple │ │ │ └── events.patterns │ ├── to-layer │ │ └── normal │ │ │ └── events.patterns │ ├── conditional-layer │ │ ├── tri-layer-lt │ │ │ └── events.patterns │ │ ├── mo-overlap │ │ │ └── events.patterns │ │ ├── quad-layer │ │ │ └── events.patterns │ │ ├── tri-layer │ │ │ └── events.patterns │ │ ├── chained-activation │ │ │ └── events.patterns │ │ ├── multiple-configs │ │ │ └── events.patterns │ │ ├── tri-layer-alt-order │ │ │ └── events.patterns │ │ ├── same-layer-reached-both-ways │ │ │ └── events.patterns │ │ └── same-layer-reached-differently │ │ │ └── events.patterns │ ├── hold-tap │ │ ├── zmk-modtap-proposal.odg │ │ ├── zmk-modtap-proposal.pdf │ │ ├── README.md │ │ ├── balanced │ │ │ ├── 1-dn-up │ │ │ │ ├── events.patterns │ │ │ │ └── native_posix_64.keymap │ │ │ ├── 5-quick-tap │ │ │ │ └── events.patterns │ │ │ ├── many-nested │ │ │ │ └── events.patterns │ │ │ ├── 2-dn-timer-up │ │ │ │ ├── events.patterns │ │ │ │ └── native_posix_64.keymap │ │ │ ├── 3a-moddn-dn-modup-up │ │ │ │ └── events.patterns │ │ │ ├── 3c-kcdn-dn-kcup-up │ │ │ │ └── events.patterns │ │ │ ├── 4c-dn-kcdn-kcup-up │ │ │ │ └── events.patterns │ │ │ ├── 3b-moddn-dn-modup-timer-up │ │ │ │ └── events.patterns │ │ │ ├── 3d-kcdn-dn-kcup-timer-up │ │ │ │ └── events.patterns │ │ │ ├── 4a-dn-htdn-timer-htup-up │ │ │ │ └── events.patterns │ │ │ ├── 4a-dn-kcdn-timer-kcup-up │ │ │ │ └── events.patterns │ │ │ ├── 4b-dn-kcdn-kcup-timer-up │ │ │ │ └── events.patterns │ │ │ ├── 4d-dn-kcdn-timer-up-kcup │ │ │ │ └── events.patterns │ │ │ ├── 7-positional │ │ │ │ ├── 2-dn-timer-up │ │ │ │ │ ├── events.patterns │ │ │ │ │ └── native_posix_64.keymap │ │ │ │ ├── 4a-dn-tgdn-timer-tgup-up │ │ │ │ │ └── events.patterns │ │ │ │ ├── 4a-dn-ntgdn-timer-ntgup-up │ │ │ │ │ └── events.patterns │ │ │ │ └── tgdn-dn-ntgdn-timer-ntgup-tgup-up │ │ │ │ │ └── events.patterns │ │ │ ├── 6-retro-tap │ │ │ │ └── events.patterns │ │ │ └── 8-global-quick-tap │ │ │ │ ├── 1-basic │ │ │ │ └── events.patterns │ │ │ │ └── 2-double-hold │ │ │ │ └── events.patterns │ │ ├── tap-preferred │ │ │ ├── 1-dn-up │ │ │ │ ├── events.patterns │ │ │ │ └── native_posix_64.keymap │ │ │ ├── 5-quick-tap │ │ │ │ └── events.patterns │ │ │ ├── 2-dn-timer-up │ │ │ │ ├── events.patterns │ │ │ │ └── native_posix_64.keymap │ │ │ ├── 6-nested-timeouts │ │ │ │ └── events.patterns │ │ │ ├── 3a-moddn-dn-modup-up │ │ │ │ └── events.patterns │ │ │ ├── 3c-kcdn-dn-kcup-up │ │ │ │ └── events.patterns │ │ │ ├── 4c-dn-kcdn-kcup-up │ │ │ │ └── events.patterns │ │ │ ├── 3b-moddn-dn-modup-timer-up │ │ │ │ └── events.patterns │ │ │ ├── 3d-kcdn-dn-kcup-timer-up │ │ │ │ └── events.patterns │ │ │ ├── 4a-dn-htdn-timer-htup-up │ │ │ │ └── events.patterns │ │ │ ├── 4a-dn-kcdn-timer-kcup-up │ │ │ │ └── events.patterns │ │ │ ├── 4b-dn-kcdn-kcup-timer-up │ │ │ │ └── events.patterns │ │ │ ├── 4d-dn-kcdn-timer-up-kcup │ │ │ │ └── events.patterns │ │ │ ├── 7-positional │ │ │ │ ├── 2-dn-timer-up │ │ │ │ │ ├── events.patterns │ │ │ │ │ └── native_posix_64.keymap │ │ │ │ ├── 4a-dn-tgdn-timer-tgup-up │ │ │ │ │ └── events.patterns │ │ │ │ ├── 4a-dn-ntgdn-timer-ntgup-up │ │ │ │ │ └── events.patterns │ │ │ │ └── tgdn-dn-ntgdn-timer-ntgup-tgup-up │ │ │ │ │ └── events.patterns │ │ │ └── 8-global-quick-tap │ │ │ │ ├── 1-basic │ │ │ │ └── events.patterns │ │ │ │ └── 2-double-hold │ │ │ │ └── events.patterns │ │ ├── hold-preferred │ │ │ ├── 1-dn-up │ │ │ │ ├── events.patterns │ │ │ │ └── native_posix_64.keymap │ │ │ ├── 5-quick-tap │ │ │ │ └── events.patterns │ │ │ ├── 2-dn-timer-up │ │ │ │ ├── events.patterns │ │ │ │ └── native_posix_64.keymap │ │ │ ├── 3a-moddn-dn-modup-up │ │ │ │ └── events.patterns │ │ │ ├── 3c-kcdn-dn-kcup-up │ │ │ │ └── events.patterns │ │ │ ├── 4c-dn-kcdn-kcup-up │ │ │ │ └── events.patterns │ │ │ ├── 3b-moddn-dn-modup-timer-up │ │ │ │ └── events.patterns │ │ │ ├── 3d-kcdn-dn-kcup-timer-up │ │ │ │ └── events.patterns │ │ │ ├── 4a-dn-htdn-timer-htup-up │ │ │ │ └── events.patterns │ │ │ ├── 4a-dn-kcdn-timer-kcup-up │ │ │ │ └── events.patterns │ │ │ ├── 4b-dn-kcdn-kcup-timer-up │ │ │ │ └── events.patterns │ │ │ ├── 4d-dn-kcdn-timer-up-kcup │ │ │ │ └── events.patterns │ │ │ ├── 7-positional │ │ │ │ ├── 2-dn-timer-up │ │ │ │ │ ├── events.patterns │ │ │ │ │ └── native_posix_64.keymap │ │ │ │ ├── 4a-dn-ntgdn-timer-ntgup-up │ │ │ │ │ └── events.patterns │ │ │ │ ├── 4a-dn-tgdn-timer-tgup-up │ │ │ │ │ └── events.patterns │ │ │ │ └── tgdn-dn-ntgdn-timer-ntgup-tgup-up │ │ │ │ │ └── events.patterns │ │ │ ├── 6-retro-tap │ │ │ │ └── events.patterns │ │ │ └── 8-global-quick-tap │ │ │ │ ├── 1-basic │ │ │ │ └── events.patterns │ │ │ │ └── 2-double-hold │ │ │ │ └── events.patterns │ │ └── tap-unless-interrupted │ │ │ ├── 1-dn-up │ │ │ ├── events.patterns │ │ │ └── native_posix_64.keymap │ │ │ ├── 2-dn-timer-up │ │ │ ├── events.patterns │ │ │ └── native_posix_64.keymap │ │ │ ├── 5-quick-tap │ │ │ └── events.patterns │ │ │ ├── 3c-kcdn-dn-kcup-up │ │ │ └── events.patterns │ │ │ ├── 4c-dn-kcdn-kcup-up │ │ │ └── events.patterns │ │ │ ├── 3a-moddn-dn-modup-up │ │ │ └── events.patterns │ │ │ ├── 3b-moddn-dn-modup-timer-up │ │ │ └── events.patterns │ │ │ ├── 3d-kcdn-dn-kcup-timer-up │ │ │ └── events.patterns │ │ │ ├── 4a-dn-htdn-timer-htup-up │ │ │ └── events.patterns │ │ │ ├── 4a-dn-kcdn-timer-kcup-up │ │ │ └── events.patterns │ │ │ ├── 4b-dn-kcdn-kcup-timer-up │ │ │ └── events.patterns │ │ │ ├── 4d-dn-kcdn-timer-up-kcup │ │ │ └── events.patterns │ │ │ └── 6-global-quick-tap │ │ │ ├── 1-basic │ │ │ └── events.patterns │ │ │ └── 2-double-hold │ │ │ └── events.patterns │ ├── caps-word │ │ ├── deactivate-by-second-press │ │ │ └── events.patterns │ │ ├── deactivate-by-non-alpha-non-continuation │ │ │ └── events.patterns │ │ ├── continue-with-modifiers │ │ │ └── events.patterns │ │ ├── continue-with-non-alpha-continue-list-item │ │ │ └── events.patterns │ │ └── continue-with-non-modified-numeric-usage-id │ │ │ └── events.patterns │ └── modifiers │ │ ├── explicit │ │ ├── kp-lctl-dn-lctl-up │ │ │ └── events.patterns │ │ ├── kp-hyper-dn-a-dn-a-up-hyper-up │ │ │ └── events.patterns │ │ ├── kp-lctl-dn-lctl-dn-lctl-up-lctl-up │ │ │ └── events.patterns │ │ ├── kp-lctl-dn-lsft-dn-lctl-up-lsft-up │ │ │ └── events.patterns │ │ └── kp-lctl-dn-lsft-dn-lsft-up-lctl-up │ │ │ └── events.patterns │ │ ├── mixed │ │ ├── kp-lctl-dn-mod-dn-lctl-up-mod-up │ │ │ └── events.patterns │ │ └── kp-lctl-dn-mod-dn-mod-up-lctl-up │ │ │ └── events.patterns │ │ └── implicit │ │ ├── kp-mod1-dn-mod2-dn-mod1-up-mod2-up │ │ └── events.patterns │ │ └── kp-mod1-dn-mod2-dn-mod2-up-mod1-up │ │ └── events.patterns ├── dts │ ├── bindings │ │ ├── vendor-prefixes.txt │ │ ├── behaviors │ │ │ ├── zmk,behavior-to-layer.yaml │ │ │ ├── zmk,behavior-none.yaml │ │ │ ├── zmk,behavior-backlight.yaml │ │ │ ├── zmk,behavior-bluetooth.yaml │ │ │ ├── zmk,behavior-key-toggle.yaml │ │ │ ├── zmk,behavior-outputs.yaml │ │ │ ├── zmk,behavior-toggle-layer.yaml │ │ │ ├── zmk,behavior-key-press.yaml │ │ │ ├── zmk,behavior-ext-power.yaml │ │ │ ├── zmk,behavior-rgb-underglow.yaml │ │ │ ├── zmk,behavior-transparent.yaml │ │ │ ├── zmk,behavior-momentary-layer.yaml │ │ │ ├── zero_param.yaml │ │ │ ├── one_param.yaml │ │ │ ├── zmk,behavior-reset.yaml │ │ │ ├── two_param.yaml │ │ │ └── zmk,behavior-key-repeat.yaml │ │ ├── macros │ │ │ ├── zmk,macro-control-tap-time.yaml │ │ │ ├── zmk,macro-control-wait-time.yaml │ │ │ ├── zmk,macro-control-mode-press.yaml │ │ │ ├── zmk,macro-control-mode-tap.yaml │ │ │ ├── zmk,macro-control-mode-release.yaml │ │ │ └── zmk,macro-pause-for-release.yaml │ │ └── zmk,keymap-sensors.yaml │ └── behaviors │ │ ├── none.dtsi │ │ ├── ext_power.dtsi │ │ ├── backlight.dtsi │ │ ├── bluetooth.dtsi │ │ ├── rgb_underglow.dtsi │ │ ├── to_layer.dtsi │ │ ├── key_toggle.dtsi │ │ └── transparent.dtsi ├── .prettierrc.js ├── drivers │ ├── zephyr │ │ ├── module.yml │ │ └── dts │ │ │ └── bindings │ │ │ └── sensor │ │ │ └── zmk,battery-nrf-vddh.yaml │ ├── gpio │ │ ├── Kconfig │ │ └── CMakeLists.txt │ ├── display │ │ ├── Kconfig │ │ └── CMakeLists.txt │ ├── sensor │ │ ├── Kconfig │ │ ├── CMakeLists.txt │ │ └── ec11 │ │ │ └── CMakeLists.txt │ ├── Kconfig │ └── CMakeLists.txt ├── include │ ├── zmk │ │ ├── wpm.h │ │ ├── kscan.h │ │ ├── battery.h │ │ ├── usb_hid.h │ │ ├── split │ │ │ └── bluetooth │ │ │ │ ├── peripheral.h │ │ │ │ └── central.h │ │ ├── display │ │ │ └── status_screen.h │ │ ├── matrix_transform.h │ │ ├── endpoints_types.h │ │ ├── activity.h │ │ └── ble │ │ │ └── profile.h │ └── dt-bindings │ │ └── zmk │ │ ├── outputs.h │ │ ├── kscan-mock.h │ │ ├── matrix-transform.h │ │ └── matrix_transform.h ├── src │ ├── split │ │ └── CMakeLists.txt │ ├── events │ │ ├── sensor_event.c │ │ ├── wpm_state_changed.c │ │ ├── layer_state_changed.c │ │ ├── activity_state_changed.c │ │ ├── battery_state_changed.c │ │ ├── position_state_changed.c │ │ ├── usb_conn_state_changed.c │ │ ├── keycode_state_changed.c │ │ ├── modifiers_state_changed.c │ │ ├── ble_active_profile_changed.c │ │ ├── endpoint_selection_changed.c │ │ └── split_peripheral_status_changed.c │ └── display │ │ └── CMakeLists.txt └── scripts │ └── requirements.txt ├── docs ├── .nvmrc ├── .eslintignore ├── src │ ├── .gitignore │ ├── data │ │ ├── .gitignore │ │ └── hid-usage-pages.js │ ├── hid-usage.js │ └── groups.js ├── .prettierrc.js ├── docs │ ├── codes │ │ ├── _footnotes │ │ │ ├── ios-power.mdx │ │ │ ├── macos-power.mdx │ │ │ └── ios-application.mdx │ │ ├── _power.mdx │ │ ├── _input-assist.mdx │ │ ├── _editing.mdx │ │ └── _applications.mdx │ └── assets │ │ ├── env-var │ │ ├── env_var.png │ │ ├── gnuarmemb.png │ │ ├── start_menu.png │ │ ├── new_variable.png │ │ └── zephyr_toolchain.png │ │ ├── hold-tap │ │ ├── case1_2.png │ │ ├── comparison.png │ │ └── case_hold_preferred.png │ │ ├── usb-logging │ │ ├── com.jpg │ │ └── putty.jpg │ │ ├── user-setup │ │ ├── firmware-archive.png │ │ └── github-actions-link.png │ │ ├── dev-setup │ │ └── vscode_devcontainer.png │ │ ├── features │ │ ├── beta-testing │ │ │ ├── repo-url.png │ │ │ ├── repo-branch.png │ │ │ └── pr-repo-branch.png │ │ └── keymaps │ │ │ └── layer-diagram.png │ │ ├── troubleshooting │ │ ├── filetransfer │ │ │ ├── mac.png │ │ │ ├── linux.png │ │ │ └── windows.png │ │ └── splitpairing │ │ │ └── corecoverage.png │ │ └── pro-micro │ │ └── pro-micro-pins-labelled.jpg ├── static │ ├── .gitignore │ ├── img │ │ └── favicon.ico │ └── tree-sitter-devicetree.wasm ├── .prettierignore ├── blog │ └── assets │ │ └── 2022-04-21-zmk-2yo │ │ ├── first-zmk-keyboard.jpg │ │ └── kyria-first-split.jpg └── .gitignore ├── .clang-format ├── CODEOWNERS ├── .gitignore ├── .devcontainer ├── Dockerfile └── .bashrc ├── .vscode └── settings.json ├── .gitattributes ├── .github └── dependabot.yml └── .pre-commit-config.yaml /app/prj.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/.nvmrc: -------------------------------------------------------------------------------- 1 | lts/* -------------------------------------------------------------------------------- /app/boards/shields/clog/clog.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/boards/shields/eek/eek.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/boards/shields/iris/iris.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/boards/shields/jian/jian.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/boards/shields/m60/m60.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/boards/shields/qaz/qaz.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/boards/shields/contra/contra.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/boards/shields/cradio/cradio.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/boards/shields/iris/iris_left.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/boards/shields/jian/jian_left.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/boards/shields/romac/romac.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | build/ 2 | node_modules/ 3 | -------------------------------------------------------------------------------- /app/boards/shields/bfo9000/bfo9000.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/boards/shields/corne/corne_left.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/boards/shields/corne/corne_right.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/boards/shields/ergodash/ergodash.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/boards/shields/iris/iris_right.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/boards/shields/jian/jian_right.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/boards/shields/jorne/jorne_left.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/boards/shields/jorne/jorne_right.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/boards/shields/kyria/kyria_left.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/boards/shields/kyria/kyria_right.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/boards/shields/naked60/naked60.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/boards/shields/osprette/osprette.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/boards/shields/quefrency/quefrency.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | build -------------------------------------------------------------------------------- /app/boards/shields/bfo9000/bfo9000_left.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/boards/shields/bfo9000/bfo9000_right.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/boards/shields/hummingbird/hummingbird.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/boards/shields/lily58/lily58_right.conf: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/boards/shields/microdox/microdox_left.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/boards/shields/microdox/microdox_right.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/boards/shields/nibble/boards/proton_c.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/boards/shields/quefrency/quefrency_left.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/boards/shields/splitreus62/splitreus62.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/boards/shields/tidbit/boards/proton_c.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/tests/none/layered/keycode_events.snapshot: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/tests/none/normal/keycode_events.snapshot: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/src/.gitignore: -------------------------------------------------------------------------------- 1 | hardware-metadata.d.ts 2 | -------------------------------------------------------------------------------- /app/boards/shields/boardsource3x4/boardsource3x4.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/boards/shields/quefrency/quefrency_right.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/boards/shields/splitreus62/splitreus62_left.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/boards/shields/splitreus62/splitreus62_right.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/dts/bindings/vendor-prefixes.txt: -------------------------------------------------------------------------------- 1 | zmk ZMK Project -------------------------------------------------------------------------------- /app/tests/transparent/normal/keycode_events.snapshot: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/src/data/.gitignore: -------------------------------------------------------------------------------- 1 | hardware-metadata.json 2 | -------------------------------------------------------------------------------- /app/boards/shields/boardsource5x12/boardsource5x12.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/boards/shields/jiran/jiran.conf: -------------------------------------------------------------------------------- 1 | # CONFIG_ZMK_SLEEP=y -------------------------------------------------------------------------------- /app/boards/shields/clueboard_california/clueboard_california.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/tests/none/layered/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p -------------------------------------------------------------------------------- /app/tests/none/normal/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p -------------------------------------------------------------------------------- /app/tests/transparent/normal/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p -------------------------------------------------------------------------------- /app/.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | endOfLine: "auto", 3 | }; 4 | -------------------------------------------------------------------------------- /app/drivers/zephyr/module.yml: -------------------------------------------------------------------------------- 1 | build: 2 | cmake: . 3 | kconfig: Kconfig 4 | -------------------------------------------------------------------------------- /app/tests/backlight/basic/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*zmk_backlight_update: //p 2 | -------------------------------------------------------------------------------- /app/tests/backlight/cycle/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*zmk_backlight_update: //p 2 | -------------------------------------------------------------------------------- /app/tests/combo/layer-filter-0/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p -------------------------------------------------------------------------------- /app/tests/combo/layer-filter-1/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p -------------------------------------------------------------------------------- /app/tests/combo/press-release/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p 2 | -------------------------------------------------------------------------------- /app/tests/combo/press-timeout/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p 2 | -------------------------------------------------------------------------------- /app/tests/macros/press-release/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p -------------------------------------------------------------------------------- /app/tests/sticky-keys/1-os-dn-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p -------------------------------------------------------------------------------- /app/tests/sticky-keys/10-sl-sl-kp/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p -------------------------------------------------------------------------------- /app/tests/transparent/layered/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p -------------------------------------------------------------------------------- /docs/.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | endOfLine: "auto", 3 | }; 4 | -------------------------------------------------------------------------------- /app/boards/shields/crbn/README.md: -------------------------------------------------------------------------------- 1 | A 40% Ortho keyboard made by Polarity Works 2 | -------------------------------------------------------------------------------- /app/tests/backlight/config-brt/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*zmk_backlight_update: //p 2 | -------------------------------------------------------------------------------- /app/tests/backlight/config-on/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*zmk_backlight_update: //p 2 | -------------------------------------------------------------------------------- /app/tests/backlight/config-step/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*zmk_backlight_update: //p 2 | -------------------------------------------------------------------------------- /app/tests/combo/combos-and-holdtaps-1/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p -------------------------------------------------------------------------------- /app/tests/combo/combos-and-holdtaps-2/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p -------------------------------------------------------------------------------- /app/tests/combo/multiple-timeouts/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p 2 | -------------------------------------------------------------------------------- /app/tests/combo/overlapping-combos-0/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p -------------------------------------------------------------------------------- /app/tests/combo/overlapping-combos-1/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p -------------------------------------------------------------------------------- /app/tests/combo/overlapping-combos-2/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p -------------------------------------------------------------------------------- /app/tests/combo/overlapping-combos-3/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p -------------------------------------------------------------------------------- /app/tests/key-repeat/send-nothing-if-no-keys-pressed-yet/keycode_events.snapshot: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/tests/keypress/kp-press-release/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p -------------------------------------------------------------------------------- /app/tests/keytoggle/kt-press-release/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p -------------------------------------------------------------------------------- /app/tests/sticky-keys/9-sk-dn-up-dn-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p -------------------------------------------------------------------------------- /app/tests/backlight/low-brightness/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*zmk_backlight_update: //p 2 | -------------------------------------------------------------------------------- /app/tests/combo/combos-and-holdtaps-0/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p 2 | -------------------------------------------------------------------------------- /app/tests/combo/slowrelease-disabled/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p 2 | -------------------------------------------------------------------------------- /app/tests/combo/slowrelease-enabled/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p 2 | -------------------------------------------------------------------------------- /app/tests/gresc/gresc-press-release/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p 2 | -------------------------------------------------------------------------------- /app/tests/keytoggle/kt-press-release-nkro/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p -------------------------------------------------------------------------------- /app/tests/macros/mo-plus-modifier-macro/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p -------------------------------------------------------------------------------- /app/tests/sticky-keys/10-callum-mods/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p 2 | -------------------------------------------------------------------------------- /app/tests/sticky-keys/2-os-dn-up-kcdn-kcup/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p -------------------------------------------------------------------------------- /app/tests/sticky-keys/2-sl-dn-up-kcdn-kcup/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p -------------------------------------------------------------------------------- /app/tests/sticky-keys/3a-os-dn-kcdn-kcup-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p -------------------------------------------------------------------------------- /app/tests/sticky-keys/3b-os-dn-kcdn-up-kcup/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p -------------------------------------------------------------------------------- /app/tests/sticky-keys/5-os-kcdn-dn-kcup-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p -------------------------------------------------------------------------------- /docs/docs/codes/_footnotes/ios-power.mdx: -------------------------------------------------------------------------------- 1 | Both iOS power keys lock the home screen. 2 | -------------------------------------------------------------------------------- /app/tests/combo/partially-overlapping-combos/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p 2 | -------------------------------------------------------------------------------- /app/tests/combo/press1-press2-release1-release2/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p -------------------------------------------------------------------------------- /app/tests/combo/press1-release1-press2-release2/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p -------------------------------------------------------------------------------- /app/tests/macros/mo-plus-modifier-from-hold-tap/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p -------------------------------------------------------------------------------- /app/tests/sticky-keys/4-os-dn-up-kcdn-timer-kcup/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p -------------------------------------------------------------------------------- /app/tests/sticky-keys/8-lsk-osk-combination/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p 2 | -------------------------------------------------------------------------------- /app/boards/shields/settings_reset/settings_reset.conf: -------------------------------------------------------------------------------- 1 | CONFIG_ZMK_BLE_CLEAR_BONDS_ON_START=y 2 | -------------------------------------------------------------------------------- /app/tests/combo/press-release-long-combo-complete/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p 2 | -------------------------------------------------------------------------------- /app/tests/combo/press1-press2-release2-release1/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p 2 | -------------------------------------------------------------------------------- /docs/static/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Ignore generated setup script 3 | 4 | setup.ps1 5 | setup.sh 6 | -------------------------------------------------------------------------------- /.clang-format: -------------------------------------------------------------------------------- 1 | BasedOnStyle: LLVM 2 | IndentWidth: 4 3 | ColumnLimit: 100 4 | SortIncludes: false 5 | -------------------------------------------------------------------------------- /app/tests/combo/press-release-long-combo-incomplete/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p 2 | -------------------------------------------------------------------------------- /app/tests/sticky-keys/2-os-dn-up-kcdn-kcup-quick-release/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p -------------------------------------------------------------------------------- /app/tests/sticky-keys/7-os-dn-up-kc1dn-kc2dn-kc1up-kc2up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p -------------------------------------------------------------------------------- /app/tests/combo/press-release-long-combo-wrong-last-key/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p 2 | -------------------------------------------------------------------------------- /app/tests/keytoggle/kt-alt-tab/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*\(hid_listener_keycode_\|hid_implicit_modifiers_\)//p 2 | -------------------------------------------------------------------------------- /app/tests/toggle-layer/normal/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*tog_keymap_binding/tog/p -------------------------------------------------------------------------------- /app/tests/wpm/1-single_keypress/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*wpm_work_handler: //p 2 | s/.*wpm_event_listener: //p -------------------------------------------------------------------------------- /app/tests/wpm/2-multiple_keypress/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*wpm_work_handler: //p 2 | s/.*wpm_event_listener: //p -------------------------------------------------------------------------------- /docs/.prettierignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | build 3 | .docusaurus 4 | *.mustache 5 | hardware-metadata.json 6 | -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @zmkfirmware/core 2 | 3 | /app/boards @zmkfirmware/boards-shields 4 | 5 | /docs @zmkfirmware/docs -------------------------------------------------------------------------------- /app/boards/shields/sofle/sofle_left.conf: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 Ryan Cross 2 | # SPDX-License-Identifier: MIT 3 | -------------------------------------------------------------------------------- /app/boards/shields/sofle/sofle_right.conf: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 Ryan Cross 2 | # SPDX-License-Identifier: MIT 3 | -------------------------------------------------------------------------------- /app/boards/shields/tg4x/tg4x.conf: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT -------------------------------------------------------------------------------- /app/tests/keytoggle/kt-modded-alpha/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*\(hid_listener_keycode_\|hid_implicit_modifiers_\)//p 2 | -------------------------------------------------------------------------------- /app/tests/momentary-layer/1-normal/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p -------------------------------------------------------------------------------- /app/boards/shields/a_dux/a_dux.conf: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | -------------------------------------------------------------------------------- /app/boards/shields/eek/README.md: -------------------------------------------------------------------------------- 1 | A fixed split 36key-board with a typing angle of 90 degrees distributed by cbkbd 2 | -------------------------------------------------------------------------------- /app/tests/tap-dance/1a-tap1/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*on_tap_dance_binding/td_binding/p -------------------------------------------------------------------------------- /app/tests/tap-dance/1b-tap2/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*on_tap_dance_binding/td_binding/p -------------------------------------------------------------------------------- /app/tests/tap-dance/1c-tap3/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*on_tap_dance_binding/td_binding/p -------------------------------------------------------------------------------- /app/tests/tap-dance/2a-hold1/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*on_tap_dance_binding/td_binding/p -------------------------------------------------------------------------------- /app/tests/tap-dance/2b-hold2/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*on_tap_dance_binding/td_binding/p -------------------------------------------------------------------------------- /app/tests/tap-dance/2c-hold3/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*on_tap_dance_binding/td_binding/p -------------------------------------------------------------------------------- /app/tests/tap-dance/4a-single/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*on_tap_dance_binding/td_binding/p -------------------------------------------------------------------------------- /app/tests/toggle-layer/early-key-release/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*tog_keymap_binding/tog/p -------------------------------------------------------------------------------- /app/boards/arm/planck/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: MIT 2 | 3 | list(APPEND EXTRA_DTC_FLAGS "-qq") 4 | 5 | -------------------------------------------------------------------------------- /app/boards/shields/cradio/cradio_left.conf: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | -------------------------------------------------------------------------------- /app/tests/momentary-layer/2-early-key-release/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p -------------------------------------------------------------------------------- /app/tests/tap-dance/3a-tap-int-mid/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*on_tap_dance_binding/td_binding/p -------------------------------------------------------------------------------- /app/tests/tap-dance/3b-tap-int-seq/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*on_tap_dance_binding/td_binding/p -------------------------------------------------------------------------------- /app/tests/tap-dance/3c-tap-int-after/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*on_tap_dance_binding/td_binding/p -------------------------------------------------------------------------------- /app/tests/tap-dance/3d-hold-int-mid/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*on_tap_dance_binding/td_binding/p -------------------------------------------------------------------------------- /app/tests/tap-dance/3e-hold-int-seq/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*on_tap_dance_binding/td_binding/p -------------------------------------------------------------------------------- /app/tests/tap-dance/5a-tdint-mid/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*on_tap_dance_binding/td_binding/p -------------------------------------------------------------------------------- /app/tests/tap-dance/5b-tdint-seq/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*on_tap_dance_binding/td_binding/p -------------------------------------------------------------------------------- /app/tests/tap-dance/5c-tdint-after/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*on_tap_dance_binding/td_binding/p -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /.west 2 | /bootloader 3 | /modules 4 | /tools 5 | /zephyr 6 | /zmk-config 7 | /build 8 | *.DS_Store 9 | __pycache__ -------------------------------------------------------------------------------- /app/boards/shields/cradio/cradio_right.conf: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | -------------------------------------------------------------------------------- /app/tests/gresc/gresc-two-instances/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p 2 | s/.*on_mod_morph_binding_/morph_binding_/p -------------------------------------------------------------------------------- /app/tests/macros/basic/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*behavior_queue_process_next/queue_process_next/p -------------------------------------------------------------------------------- /app/tests/macros/press-mid-macro/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*keymap_apply_position_state/pos_state/p -------------------------------------------------------------------------------- /app/tests/tap-dance/3f-hold-int-after/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*on_tap_dance_binding/td_binding/p -------------------------------------------------------------------------------- /app/tests/tap-dance/5d-tdint-multiple/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*on_tap_dance_binding/td_binding/p -------------------------------------------------------------------------------- /.devcontainer/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM docker.io/zmkfirmware/zmk-dev-arm:3.0 2 | 3 | COPY .bashrc tmp 4 | RUN mv /tmp/.bashrc ~/.bashrc 5 | -------------------------------------------------------------------------------- /app/drivers/gpio/Kconfig: -------------------------------------------------------------------------------- 1 | menuconfig ZMK_DRIVERS_GPIO 2 | bool "GPIO" 3 | 4 | rsource "Kconfig.mcp23017" 5 | rsource "Kconfig.595" -------------------------------------------------------------------------------- /app/tests/key-repeat/ignore-other-usage-page-events/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p 2 | s/.*hid_implicit_modifiers_//p -------------------------------------------------------------------------------- /app/tests/key-repeat/press-and-release-after-key-usage/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p 2 | s/.*hid_implicit_modifiers_//p -------------------------------------------------------------------------------- /app/tests/momentary-layer/3-covered/keycode_events.snapshot: -------------------------------------------------------------------------------- 1 | mo_pressed: position 1 layer 1 2 | mo_released: position 1 layer 1 3 | -------------------------------------------------------------------------------- /docs/static/img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erikdesjardins/zmk_quick_actions/quick_actions/docs/static/img/favicon.ico -------------------------------------------------------------------------------- /app/boards/shields/crbn/crbn.conf: -------------------------------------------------------------------------------- 1 | # Uncomment lines below to enable encoder 2 | # CONFIG_EC11=y 3 | # CONFIG_EC11_TRIGGER_GLOBAL_THREAD=y -------------------------------------------------------------------------------- /app/boards/shields/lily58/lily58_left.conf: -------------------------------------------------------------------------------- 1 | # Uncomment to enable encoder 2 | # CONFIG_EC11=y 3 | # CONFIG_EC11_TRIGGER_GLOBAL_THREAD=y 4 | -------------------------------------------------------------------------------- /app/drivers/display/Kconfig: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | rsource "Kconfig.il0323" -------------------------------------------------------------------------------- /app/tests/key-repeat/send-nothing-if-no-keys-pressed-yet/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p 2 | s/.*hid_implicit_modifiers_//p -------------------------------------------------------------------------------- /app/tests/macros/timing-override/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*behavior_queue_process_next/queue_process_next/p -------------------------------------------------------------------------------- /app/boards/Kconfig: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | rsource "shields/*/Kconfig.shield" 5 | -------------------------------------------------------------------------------- /app/tests/key-repeat/press-and-release-with-explicit-modifiers/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p 2 | s/.*hid_implicit_modifiers_//p -------------------------------------------------------------------------------- /app/tests/to-layer/normal/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*to_keymap_binding/to/p 3 | s/.*layer_changed/layer_changed/p -------------------------------------------------------------------------------- /docs/docs/codes/_power.mdx: -------------------------------------------------------------------------------- 1 | import Table from "@site/src/components/codes/Table"; 2 | 3 | ## Power & Lock 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/boards/shields/murphpad/boards/nice_nano.conf: -------------------------------------------------------------------------------- 1 | # Uncomment both to enable underglow 2 | CONFIG_ZMK_RGB_UNDERGLOW=y 3 | CONFIG_WS2812_STRIP=y 4 | -------------------------------------------------------------------------------- /app/tests/conditional-layer/tri-layer-lt/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*conditional_layer/cl/p -------------------------------------------------------------------------------- /app/boards/seeeduino_xiao.conf: -------------------------------------------------------------------------------- 1 | CONFIG_CONSOLE=n 2 | CONFIG_SERIAL=n 3 | CONFIG_UART_CONSOLE=n 4 | CONFIG_UART_INTERRUPT_DRIVEN=n 5 | CONFIG_ZMK_USB=y 6 | -------------------------------------------------------------------------------- /app/tests/conditional-layer/mo-overlap/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*conditional_layer/cl/p 4 | -------------------------------------------------------------------------------- /app/tests/conditional-layer/quad-layer/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*conditional_layer/cl/p 4 | -------------------------------------------------------------------------------- /app/tests/conditional-layer/tri-layer/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*conditional_layer/cl/p 4 | -------------------------------------------------------------------------------- /docs/docs/assets/env-var/env_var.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erikdesjardins/zmk_quick_actions/quick_actions/docs/docs/assets/env-var/env_var.png -------------------------------------------------------------------------------- /docs/docs/assets/env-var/gnuarmemb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erikdesjardins/zmk_quick_actions/quick_actions/docs/docs/assets/env-var/gnuarmemb.png -------------------------------------------------------------------------------- /docs/docs/assets/hold-tap/case1_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erikdesjardins/zmk_quick_actions/quick_actions/docs/docs/assets/hold-tap/case1_2.png -------------------------------------------------------------------------------- /docs/docs/assets/usb-logging/com.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erikdesjardins/zmk_quick_actions/quick_actions/docs/docs/assets/usb-logging/com.jpg -------------------------------------------------------------------------------- /docs/docs/assets/usb-logging/putty.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erikdesjardins/zmk_quick_actions/quick_actions/docs/docs/assets/usb-logging/putty.jpg -------------------------------------------------------------------------------- /docs/docs/codes/_footnotes/macos-power.mdx: -------------------------------------------------------------------------------- 1 | Both macOS power keys ignore quick presses, sleep on deliberate press, and display a prompt on long-press. 2 | -------------------------------------------------------------------------------- /app/boards/shields/chalice/chalice.conf: -------------------------------------------------------------------------------- 1 | # Uncomment the following lines to enable RGB underglow 2 | # CONFIG_ZMK_RGB_UNDERGLOW=y 3 | # CONFIG_WS2812_STRIP=y -------------------------------------------------------------------------------- /app/tests/conditional-layer/chained-activation/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*conditional_layer/cl/p 4 | -------------------------------------------------------------------------------- /app/tests/conditional-layer/multiple-configs/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*conditional_layer/cl/p 4 | -------------------------------------------------------------------------------- /app/tests/momentary-layer/3-covered/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*keymap_position_state_changed/kp_st/p -------------------------------------------------------------------------------- /app/tests/momentary-layer/4-nested/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*keymap_position_state_changed/kp_st/p -------------------------------------------------------------------------------- /docs/docs/assets/env-var/start_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erikdesjardins/zmk_quick_actions/quick_actions/docs/docs/assets/env-var/start_menu.png -------------------------------------------------------------------------------- /docs/docs/assets/hold-tap/comparison.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erikdesjardins/zmk_quick_actions/quick_actions/docs/docs/assets/hold-tap/comparison.png -------------------------------------------------------------------------------- /docs/docs/codes/_input-assist.mdx: -------------------------------------------------------------------------------- 1 | import Table from "@site/src/components/codes/Table"; 2 | 3 | ## Input Assist 4 | 5 |
6 | -------------------------------------------------------------------------------- /docs/static/tree-sitter-devicetree.wasm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erikdesjardins/zmk_quick_actions/quick_actions/docs/static/tree-sitter-devicetree.wasm -------------------------------------------------------------------------------- /app/boards/shields/redox/redox.conf: -------------------------------------------------------------------------------- 1 | # Uncomment the following lines to enable the Redox RGB Underglow 2 | # CONFIG_ZMK_RGB_UNDERGLOW=y 3 | # CONFIG_WS2812_STRIP=y -------------------------------------------------------------------------------- /app/tests/backlight/config-on/keycode_events.snapshot: -------------------------------------------------------------------------------- 1 | Update backlight brightness: 0% 2 | Update backlight brightness: 40% 3 | Update backlight brightness: 0% 4 | -------------------------------------------------------------------------------- /app/tests/conditional-layer/tri-layer-alt-order/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*conditional_layer/cl/p 4 | -------------------------------------------------------------------------------- /app/tests/hold-tap/zmk-modtap-proposal.odg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erikdesjardins/zmk_quick_actions/quick_actions/app/tests/hold-tap/zmk-modtap-proposal.odg -------------------------------------------------------------------------------- /app/tests/hold-tap/zmk-modtap-proposal.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erikdesjardins/zmk_quick_actions/quick_actions/app/tests/hold-tap/zmk-modtap-proposal.pdf -------------------------------------------------------------------------------- /app/tests/macros/wait-macro-release/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*behavior_queue_process_next/queue_process_next/p 3 | s/.*queue_macro/qm/p -------------------------------------------------------------------------------- /docs/docs/assets/env-var/new_variable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erikdesjardins/zmk_quick_actions/quick_actions/docs/docs/assets/env-var/new_variable.png -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "files.associations": { 3 | "*.overlay": "dts", 4 | "*.keymap": "dts" 5 | }, 6 | "python.formatting.provider": "black" 7 | } -------------------------------------------------------------------------------- /app/boards/shields/reviung41/reviung41.conf: -------------------------------------------------------------------------------- 1 | # Uncomment the following lines to enable RGB underglow 2 | # CONFIG_ZMK_RGB_UNDERGLOW=y 3 | # CONFIG_WS2812_STRIP=y 4 | -------------------------------------------------------------------------------- /app/drivers/display/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | zephyr_sources_ifdef(CONFIG_IL0323 il0323.c) -------------------------------------------------------------------------------- /app/drivers/sensor/Kconfig: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | rsource "battery/Kconfig" 5 | rsource "ec11/Kconfig" -------------------------------------------------------------------------------- /app/tests/backlight/config-brt/keycode_events.snapshot: -------------------------------------------------------------------------------- 1 | Update backlight brightness: 60% 2 | Update backlight brightness: 80% 3 | Update backlight brightness: 60% 4 | -------------------------------------------------------------------------------- /app/tests/conditional-layer/same-layer-reached-both-ways/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*conditional_layer/cl/p 4 | -------------------------------------------------------------------------------- /docs/docs/assets/env-var/zephyr_toolchain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erikdesjardins/zmk_quick_actions/quick_actions/docs/docs/assets/env-var/zephyr_toolchain.png -------------------------------------------------------------------------------- /docs/docs/codes/_footnotes/ios-application.mdx: -------------------------------------------------------------------------------- 1 | Key press is registered, but has no visible effect in tested apps (Gmail, Safari, Notes) 2 | iPhone 6 / iOS 12.4.6 3 | -------------------------------------------------------------------------------- /app/tests/caps-word/deactivate-by-second-press/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p 2 | s/.*hid_implicit_modifiers_//p 3 | s/.*caps_word_enhance_usage/enhance_usage/p -------------------------------------------------------------------------------- /app/tests/conditional-layer/same-layer-reached-differently/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*conditional_layer/cl/p 4 | -------------------------------------------------------------------------------- /docs/docs/assets/user-setup/firmware-archive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erikdesjardins/zmk_quick_actions/quick_actions/docs/docs/assets/user-setup/firmware-archive.png -------------------------------------------------------------------------------- /app/boards/shields/clog/clog_left.overlay: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | #include "clog.dtsi" 8 | -------------------------------------------------------------------------------- /app/boards/shields/tidbit/tidbit.overlay: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | #include "tidbit.dtsi" 8 | -------------------------------------------------------------------------------- /app/include/zmk/wpm.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | #pragma once 8 | 9 | int zmk_wpm_get_state(); -------------------------------------------------------------------------------- /app/tests/hold-tap/README.md: -------------------------------------------------------------------------------- 1 | Refer to the pdf/open document "zmk-modtap-proposal.{pdf,odt}" in this directory for a visual representation of the numbered tests for hold-tap. 2 | -------------------------------------------------------------------------------- /app/tests/momentary-layer/5-nested-early-key-release/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*keymap_position_state_changed/kp_st/p -------------------------------------------------------------------------------- /docs/docs/assets/dev-setup/vscode_devcontainer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erikdesjardins/zmk_quick_actions/quick_actions/docs/docs/assets/dev-setup/vscode_devcontainer.png -------------------------------------------------------------------------------- /docs/docs/assets/hold-tap/case_hold_preferred.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erikdesjardins/zmk_quick_actions/quick_actions/docs/docs/assets/hold-tap/case_hold_preferred.png -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | 3 | # Always use Unix-style line endings for Bash scripts so they work in 4 | # Docker on Windows. 5 | .bashrc text eol=lf 6 | *.sh text eol=lf 7 | -------------------------------------------------------------------------------- /app/boards/shields/a_dux/a_dux_left.overlay: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2021 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | #include "a_dux.dtsi" 8 | -------------------------------------------------------------------------------- /app/boards/shields/cradio/cradio_left.overlay: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | #include "cradio.dtsi" 8 | -------------------------------------------------------------------------------- /app/boards/shields/nibble/boards/nice_nano.conf: -------------------------------------------------------------------------------- 1 | # Enable underglow 2 | CONFIG_ZMK_RGB_UNDERGLOW=y 3 | # Use the STRIP config specific to the LEDs you're using 4 | CONFIG_WS2812_STRIP=y -------------------------------------------------------------------------------- /app/boards/shields/quick_actions/Kconfig.defconfig: -------------------------------------------------------------------------------- 1 | if SHIELD_QUICK_ACTIONS 2 | 3 | config ZMK_KEYBOARD_NAME 4 | default "Quick Actions" 5 | 6 | endif # SHIELD_QUICK_ACTIONS 7 | -------------------------------------------------------------------------------- /app/boards/shields/tidbit/boards/nice_nano.conf: -------------------------------------------------------------------------------- 1 | # Enable underglow 2 | CONFIG_ZMK_RGB_UNDERGLOW=y 3 | # Use the STRIP config specific to the LEDs you're using 4 | CONFIG_WS2812_STRIP=y -------------------------------------------------------------------------------- /docs/docs/assets/features/beta-testing/repo-url.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erikdesjardins/zmk_quick_actions/quick_actions/docs/docs/assets/features/beta-testing/repo-url.png -------------------------------------------------------------------------------- /docs/docs/assets/features/keymaps/layer-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erikdesjardins/zmk_quick_actions/quick_actions/docs/docs/assets/features/keymaps/layer-diagram.png -------------------------------------------------------------------------------- /docs/docs/assets/troubleshooting/filetransfer/mac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erikdesjardins/zmk_quick_actions/quick_actions/docs/docs/assets/troubleshooting/filetransfer/mac.png -------------------------------------------------------------------------------- /docs/docs/assets/user-setup/github-actions-link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erikdesjardins/zmk_quick_actions/quick_actions/docs/docs/assets/user-setup/github-actions-link.png -------------------------------------------------------------------------------- /app/boards/shields/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 Pete Johanson 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_CRADIOS 5 | def_bool $(shields_list_contains,cradios) 6 | -------------------------------------------------------------------------------- /app/boards/shields/m60/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_M60 5 | def_bool $(shields_list_contains,m60) 6 | -------------------------------------------------------------------------------- /app/src/split/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2022 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | if (CONFIG_ZMK_SPLIT_BLE) 5 | add_subdirectory(bluetooth) 6 | endif() -------------------------------------------------------------------------------- /app/tests/caps-word/deactivate-by-non-alpha-non-continuation/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p 2 | s/.*hid_implicit_modifiers_//p 3 | s/.*caps_word_enhance_usage/enhance_usage/p -------------------------------------------------------------------------------- /app/tests/hold-tap/balanced/1-dn-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /docs/docs/assets/features/beta-testing/repo-branch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erikdesjardins/zmk_quick_actions/quick_actions/docs/docs/assets/features/beta-testing/repo-branch.png -------------------------------------------------------------------------------- /docs/docs/assets/pro-micro/pro-micro-pins-labelled.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erikdesjardins/zmk_quick_actions/quick_actions/docs/docs/assets/pro-micro/pro-micro-pins-labelled.jpg -------------------------------------------------------------------------------- /docs/docs/assets/troubleshooting/filetransfer/linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erikdesjardins/zmk_quick_actions/quick_actions/docs/docs/assets/troubleshooting/filetransfer/linux.png -------------------------------------------------------------------------------- /app/boards/arm/mikoto/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | if(CONFIG_PINMUX) 3 | zephyr_library() 4 | zephyr_library_sources(pinmux.c) 5 | zephyr_library_include_directories(${ZEPHYR_BASE}/drivers) 6 | endif() -------------------------------------------------------------------------------- /app/boards/arm/nice60/Kconfig.board: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 Nick Winans 2 | # SPDX-License-Identifier: MIT 3 | 4 | config BOARD_NICE60 5 | bool "nice!60" 6 | depends on SOC_NRF52840_QIAA 7 | -------------------------------------------------------------------------------- /app/boards/arm/nrfmicro/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | if(CONFIG_PINMUX) 3 | zephyr_library() 4 | zephyr_library_sources(pinmux.c) 5 | zephyr_library_include_directories(${ZEPHYR_BASE}/drivers) 6 | endif() -------------------------------------------------------------------------------- /app/boards/shields/contra/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_CONTRA 5 | def_bool $(shields_list_contains,contra) -------------------------------------------------------------------------------- /app/boards/shields/crbn/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_CRBN 5 | def_bool $(shields_list_contains,crbn) 6 | -------------------------------------------------------------------------------- /app/boards/shields/ergodash/ergodash_left.overlay: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | #include "ergodash.dtsi" 8 | 9 | -------------------------------------------------------------------------------- /app/boards/shields/qaz/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_QAZ 5 | def_bool $(shields_list_contains,qaz) 6 | -------------------------------------------------------------------------------- /app/boards/shields/tg4x/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_TG4X 5 | def_bool $(shields_list_contains,tg4x) 6 | -------------------------------------------------------------------------------- /app/tests/hold-tap/balanced/5-quick-tap/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/balanced/many-nested/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/tap-preferred/1-dn-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/wpm/1-single_keypress/native_posix_64.conf: -------------------------------------------------------------------------------- 1 | CONFIG_GPIO=n 2 | CONFIG_ZMK_BLE=n 3 | CONFIG_LOG=y 4 | CONFIG_LOG_BACKEND_SHOW_COLOR=n 5 | CONFIG_ZMK_LOG_LEVEL_DBG=y 6 | CONFIG_ZMK_WPM=y -------------------------------------------------------------------------------- /docs/blog/assets/2022-04-21-zmk-2yo/first-zmk-keyboard.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erikdesjardins/zmk_quick_actions/quick_actions/docs/blog/assets/2022-04-21-zmk-2yo/first-zmk-keyboard.jpg -------------------------------------------------------------------------------- /docs/blog/assets/2022-04-21-zmk-2yo/kyria-first-split.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erikdesjardins/zmk_quick_actions/quick_actions/docs/blog/assets/2022-04-21-zmk-2yo/kyria-first-split.jpg -------------------------------------------------------------------------------- /docs/docs/assets/features/beta-testing/pr-repo-branch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erikdesjardins/zmk_quick_actions/quick_actions/docs/docs/assets/features/beta-testing/pr-repo-branch.png -------------------------------------------------------------------------------- /docs/docs/assets/troubleshooting/filetransfer/windows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erikdesjardins/zmk_quick_actions/quick_actions/docs/docs/assets/troubleshooting/filetransfer/windows.png -------------------------------------------------------------------------------- /app/boards/arm/s40nc/Kconfig.board: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | config BOARD_S40NC 5 | bool "S40NC" 6 | depends on SOC_NRF52840_QIAA 7 | -------------------------------------------------------------------------------- /app/boards/shields/bat43/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_BAT43 5 | def_bool $(shields_list_contains,bat43) 6 | -------------------------------------------------------------------------------- /app/boards/shields/murphpad/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_MURPHPAD 5 | def_bool $(shields_list_contains,murphpad) -------------------------------------------------------------------------------- /app/boards/shields/nibble/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_NIBBLE 5 | def_bool $(shields_list_contains,nibble) 6 | -------------------------------------------------------------------------------- /app/boards/shields/tidbit/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_TIDBIT 5 | def_bool $(shields_list_contains,tidbit) 6 | -------------------------------------------------------------------------------- /app/tests/hold-tap/balanced/2-dn-timer-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/hold-preferred/1-dn-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/hold-preferred/5-quick-tap/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/tap-preferred/5-quick-tap/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/wpm/2-multiple_keypress/native_posix_64.conf: -------------------------------------------------------------------------------- 1 | CONFIG_GPIO=n 2 | CONFIG_ZMK_BLE=n 3 | CONFIG_LOG=y 4 | CONFIG_LOG_BACKEND_SHOW_COLOR=n 5 | CONFIG_ZMK_LOG_LEVEL_DBG=y 6 | CONFIG_ZMK_WPM=y 7 | -------------------------------------------------------------------------------- /app/boards/arm/bdn9/bdn9_rev2.conf: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2022 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | # Uncomment the line below to enable RGB. 5 | # CONFIG_ZMK_RGB_UNDERGLOW=y 6 | -------------------------------------------------------------------------------- /app/boards/shields/bat43/bat43.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: bat43 3 | name: BAT43 4 | type: shield 5 | url: https://kbd.dailycraft.jp/bat43/ 6 | requires: [pro_micro] 7 | features: 8 | - keys 9 | -------------------------------------------------------------------------------- /app/boards/shields/chalice/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_CHALICE 5 | def_bool $(shields_list_contains,chalice) 6 | -------------------------------------------------------------------------------- /app/boards/shields/eek/eek.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: eek 3 | name: eek! 4 | type: shield 5 | url: https://github.com/Klackygears/eek_doc 6 | requires: [pro_micro] 7 | features: 8 | - keys 9 | -------------------------------------------------------------------------------- /app/boards/shields/naked60/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_NAKED60 5 | def_bool $(shields_list_contains,naked60) 6 | -------------------------------------------------------------------------------- /app/boards/shields/nibble/nibble.conf: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | # Enable Encoders 5 | CONFIG_EC11=y 6 | CONFIG_EC11_TRIGGER_GLOBAL_THREAD=y 7 | -------------------------------------------------------------------------------- /app/boards/shields/romac/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 Pete Johanson, Richard Jones 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_ROMAC 5 | def_bool $(shields_list_contains,romac) 6 | -------------------------------------------------------------------------------- /app/boards/shields/tg4x/tg4x.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: tg4x 3 | name: TG4x 4 | type: shield 5 | url: https://github.com/MythosMann/tg4x 6 | requires: [pro_micro] 7 | features: 8 | - keys 9 | -------------------------------------------------------------------------------- /app/include/zmk/kscan.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | #pragma once 8 | 9 | int zmk_kscan_init(char *name); 10 | -------------------------------------------------------------------------------- /app/tests/hold-tap/balanced/3a-moddn-dn-modup-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/balanced/3c-kcdn-dn-kcup-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/balanced/4c-dn-kcdn-kcup-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/hold-preferred/2-dn-timer-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/tap-preferred/2-dn-timer-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/tap-preferred/6-nested-timeouts/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/tap-unless-interrupted/1-dn-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/keypress/kp-press-release/native_posix_64.keymap: -------------------------------------------------------------------------------- 1 | #include "../behavior_keymap.dtsi" 2 | 3 | &kscan { 4 | events = < 5 | ZMK_MOCK_PRESS(0,0,10) 6 | ZMK_MOCK_RELEASE(0,0,10) 7 | >; 8 | }; -------------------------------------------------------------------------------- /docs/docs/assets/troubleshooting/splitpairing/corecoverage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erikdesjardins/zmk_quick_actions/quick_actions/docs/docs/assets/troubleshooting/splitpairing/corecoverage.png -------------------------------------------------------------------------------- /app/boards/shields/contra/contra.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: contra 3 | name: Contra 4 | type: shield 5 | url: https://github.com/ai03-2725/Contra 6 | requires: [pro_micro] 7 | features: 8 | - keys 9 | -------------------------------------------------------------------------------- /app/boards/shields/osprette/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_OSPRETTE 5 | def_bool $(shields_list_contains,osprette) 6 | -------------------------------------------------------------------------------- /app/boards/shields/qaz/qaz.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: qaz 3 | name: QAZ 4 | type: shield 5 | url: https://www.cbkbd.com/product/qaz-keyboard-kit 6 | requires: [pro_micro] 7 | features: 8 | - keys 9 | -------------------------------------------------------------------------------- /app/include/dt-bindings/zmk/outputs.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | #define OUT_TOG 0 8 | #define OUT_USB 1 9 | #define OUT_BLE 2 -------------------------------------------------------------------------------- /app/tests/hold-tap/balanced/3b-moddn-dn-modup-timer-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/balanced/3d-kcdn-dn-kcup-timer-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/balanced/4a-dn-htdn-timer-htup-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/balanced/4a-dn-kcdn-timer-kcup-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/balanced/4b-dn-kcdn-kcup-timer-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/balanced/4d-dn-kcdn-timer-up-kcup/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/balanced/7-positional/2-dn-timer-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/hold-preferred/3a-moddn-dn-modup-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/hold-preferred/3c-kcdn-dn-kcup-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/hold-preferred/4c-dn-kcdn-kcup-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/tap-preferred/3a-moddn-dn-modup-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/tap-preferred/3c-kcdn-dn-kcup-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/tap-preferred/4c-dn-kcdn-kcup-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/tap-unless-interrupted/2-dn-timer-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/tap-unless-interrupted/5-quick-tap/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/boards/arm/dz60rgb/Kconfig.board: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | config BOARD_DZ60RGB_REV1 5 | bool "DZ60RGB Keyboard" 6 | depends on SOC_STM32F303XC 7 | -------------------------------------------------------------------------------- /app/boards/native_posix.conf: -------------------------------------------------------------------------------- 1 | CONFIG_GPIO=n 2 | CONFIG_ZMK_BLE=n 3 | CONFIG_LOG=y 4 | CONFIG_LOG_BACKEND_SHOW_COLOR=n 5 | CONFIG_ZMK_LOG_LEVEL_DBG=y 6 | CONFIG_DEBUG=y 7 | CONFIG_SYS_CLOCK_TICKS_PER_SEC=1000 8 | -------------------------------------------------------------------------------- /app/boards/shields/eek/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2020 The ZMK Contributors 3 | # 4 | # SPDX-License-Identifier: MIT 5 | # 6 | 7 | config SHIELD_EEK 8 | def_bool $(shields_list_contains,eek) -------------------------------------------------------------------------------- /app/boards/shields/knob_goblin/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2022 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_KNOB_GOBLIN 5 | def_bool $(shields_list_contains,knob_goblin) 6 | -------------------------------------------------------------------------------- /app/boards/shields/qaz/Kconfig.defconfig: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | if SHIELD_QAZ 5 | 6 | config ZMK_KEYBOARD_NAME 7 | default "QAZ" 8 | 9 | endif -------------------------------------------------------------------------------- /app/boards/shields/quick_actions/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 Pete Johanson 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_QUICK_ACTIONS 5 | def_bool $(shields_list_contains,quick_actions) 6 | -------------------------------------------------------------------------------- /app/boards/shields/reviung41/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_REVIUNG41 5 | def_bool $(shields_list_contains,reviung41) 6 | -------------------------------------------------------------------------------- /app/boards/shields/romac_plus/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_ROMAC_PLUS 5 | def_bool $(shields_list_contains,romac_plus) 6 | -------------------------------------------------------------------------------- /app/include/zmk/battery.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2021 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | #pragma once 8 | 9 | uint8_t zmk_battery_state_of_charge(); 10 | -------------------------------------------------------------------------------- /app/tests/hold-tap/hold-preferred/3b-moddn-dn-modup-timer-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/hold-preferred/3d-kcdn-dn-kcup-timer-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/hold-preferred/4a-dn-htdn-timer-htup-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/hold-preferred/4a-dn-kcdn-timer-kcup-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/hold-preferred/4b-dn-kcdn-kcup-timer-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/hold-preferred/4d-dn-kcdn-timer-up-kcup/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/hold-preferred/7-positional/2-dn-timer-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/tap-preferred/3b-moddn-dn-modup-timer-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/tap-preferred/3d-kcdn-dn-kcup-timer-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/tap-preferred/4a-dn-htdn-timer-htup-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/tap-preferred/4a-dn-kcdn-timer-kcup-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/tap-preferred/4b-dn-kcdn-kcup-timer-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/tap-preferred/4d-dn-kcdn-timer-up-kcup/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/tap-preferred/7-positional/2-dn-timer-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/tap-unless-interrupted/3c-kcdn-dn-kcup-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/tap-unless-interrupted/4c-dn-kcdn-kcup-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/boards/shields/hummingbird/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2022 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_HUMMINGBIRD 5 | def_bool $(shields_list_contains,hummingbird) 6 | -------------------------------------------------------------------------------- /app/boards/shields/naked60/naked60.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: naked60 3 | name: Naked60 4 | type: shield 5 | url: https://salicylic-acid3.hatenablog.com/ 6 | requires: [pro_micro] 7 | features: 8 | - keys 9 | -------------------------------------------------------------------------------- /app/boards/shields/osprette/osprette.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: osprette 3 | name: Osprette 4 | type: shield 5 | url: https://github.com/smores56/osprette/ 6 | requires: [pro_micro] 7 | features: 8 | - keys 9 | -------------------------------------------------------------------------------- /app/boards/shields/tidbit/tidbit_19key.overlay: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | #include "tidbit.dtsi" 8 | #include "tidbit_19key.keymap" 9 | -------------------------------------------------------------------------------- /app/tests/hold-tap/balanced/7-positional/4a-dn-tgdn-timer-tgup-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/tap-unless-interrupted/3a-moddn-dn-modup-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/boards/arm/bluemicro840/Kconfig: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: MIT 2 | 3 | config BOARD_ENABLE_DCDC 4 | bool "Enable DCDC mode" 5 | select SOC_DCDC_NRF52X 6 | default y 7 | depends on BOARD_BLUEMICRO840_V1 8 | 9 | -------------------------------------------------------------------------------- /app/boards/arm/bt60/Kconfig: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: MIT 2 | 3 | config BOARD_ENABLE_DCDC 4 | bool "Enable DCDC mode" 5 | select SOC_DCDC_NRF52X 6 | default y 7 | depends on (BOARD_BT60_V1_HS || BOARD_BT60_V1) 8 | -------------------------------------------------------------------------------- /app/boards/arm/s40nc/s40nc.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: s40nc 3 | name: S40NC 4 | type: board 5 | arch: arm 6 | features: 7 | - keys 8 | outputs: 9 | - usb 10 | - ble 11 | url: https://mechwild.com 12 | -------------------------------------------------------------------------------- /app/boards/shields/boardsource5x12/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_BOARDSOURCE5X12 5 | def_bool $(shields_list_contains,boardsource5x12) -------------------------------------------------------------------------------- /app/boards/shields/eek/Kconfig.defconfig: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | if SHIELD_EEK 5 | 6 | config ZMK_KEYBOARD_NAME 7 | default "eek! ~ Keyboard" 8 | 9 | endif -------------------------------------------------------------------------------- /app/boards/shields/m60/Kconfig.defconfig: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | if SHIELD_M60 5 | 6 | config ZMK_KEYBOARD_NAME 7 | default "m60" 8 | 9 | endif 10 | -------------------------------------------------------------------------------- /app/boards/shields/settings_reset/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_SETTINGS_RESET 5 | def_bool $(shields_list_contains,settings_reset) 6 | -------------------------------------------------------------------------------- /app/drivers/Kconfig: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | rsource "gpio/Kconfig" 5 | rsource "kscan/Kconfig" 6 | rsource "sensor/Kconfig" 7 | rsource "display/Kconfig" 8 | -------------------------------------------------------------------------------- /app/drivers/sensor/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020-2021 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | add_subdirectory_ifdef(CONFIG_ZMK_BATTERY battery) 5 | add_subdirectory_ifdef(CONFIG_EC11 ec11) -------------------------------------------------------------------------------- /app/include/zmk/usb_hid.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | #pragma once 8 | 9 | int zmk_usb_hid_send_report(const uint8_t *report, size_t len); -------------------------------------------------------------------------------- /app/tests/combo/combos-and-holdtaps-2/keycode_events.snapshot: -------------------------------------------------------------------------------- 1 | pressed: usage_page 0x07 keycode 0xE0 implicit_mods 0x00 explicit_mods 0x00 2 | pressed: usage_page 0x07 keycode 0xE4 implicit_mods 0x00 explicit_mods 0x00 3 | -------------------------------------------------------------------------------- /app/tests/hold-tap/balanced/7-positional/4a-dn-ntgdn-timer-ntgup-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/tap-preferred/7-positional/4a-dn-tgdn-timer-tgup-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/tap-unless-interrupted/3b-moddn-dn-modup-timer-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/tap-unless-interrupted/3d-kcdn-dn-kcup-timer-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/tap-unless-interrupted/4a-dn-htdn-timer-htup-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/tap-unless-interrupted/4a-dn-kcdn-timer-kcup-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/tap-unless-interrupted/4b-dn-kcdn-kcup-timer-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/tap-unless-interrupted/4d-dn-kcdn-timer-up-kcup/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/keypress/kp-press-release/keycode_events.snapshot: -------------------------------------------------------------------------------- 1 | pressed: usage_page 0x07 keycode 0x05 implicit_mods 0x00 explicit_mods 0x00 2 | released: usage_page 0x07 keycode 0x05 implicit_mods 0x00 explicit_mods 0x00 3 | -------------------------------------------------------------------------------- /app/tests/keytoggle/kt-press-release/keycode_events.snapshot: -------------------------------------------------------------------------------- 1 | pressed: usage_page 0x07 keycode 0x05 implicit_mods 0x00 explicit_mods 0x00 2 | released: usage_page 0x07 keycode 0x05 implicit_mods 0x00 explicit_mods 0x00 3 | -------------------------------------------------------------------------------- /app/tests/modifiers/explicit/kp-lctl-dn-lctl-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p 2 | s/.*hid_register_mod/reg/p 3 | s/.*hid_unregister_mod/unreg/p 4 | s/.*zmk_hid_.*Modifiers set to /mods: Modifiers set to /p -------------------------------------------------------------------------------- /app/tests/transparent/layered/keycode_events.snapshot: -------------------------------------------------------------------------------- 1 | kp_pressed: usage_page 0x07 keycode 0x04 implicit_mods 0x00 explicit_mods 0x00 2 | kp_released: usage_page 0x07 keycode 0x04 implicit_mods 0x00 explicit_mods 0x00 3 | -------------------------------------------------------------------------------- /app/boards/arm/proton_c/proton_c.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: proton_c 3 | name: QMK Proton-C 4 | type: board 5 | arch: arm 6 | outputs: 7 | - usb 8 | url: https://qmk.fm/proton-c/ 9 | exposes: [pro_micro] 10 | -------------------------------------------------------------------------------- /app/boards/shields/boardsource3x4/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_BOARDSOURCE3X4 5 | def_bool $(shields_list_contains,boardsource3x4) 6 | 7 | -------------------------------------------------------------------------------- /app/boards/shields/contra/Kconfig.defconfig: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | if SHIELD_CONTRA 5 | 6 | config ZMK_KEYBOARD_NAME 7 | default "Contra Keyboard" 8 | 9 | endif -------------------------------------------------------------------------------- /app/boards/shields/crbn/Kconfig.defconfig: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | if SHIELD_CRBN 5 | 6 | config ZMK_KEYBOARD_NAME 7 | default "CRBN" 8 | 9 | endif 10 | -------------------------------------------------------------------------------- /app/boards/shields/naked60/Kconfig.defconfig: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | if SHIELD_NAKED60 5 | 6 | config ZMK_KEYBOARD_NAME 7 | default "Naked60BMP" 8 | 9 | endif -------------------------------------------------------------------------------- /app/boards/shields/nibble/nibble.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: nibble 3 | name: Nibble 4 | type: shield 5 | url: https://nullbits.co/nibble/ 6 | requires: [pro_micro] 7 | features: 8 | - keys 9 | - encoder 10 | -------------------------------------------------------------------------------- /app/boards/shields/romac_plus/Kconfig.defconfig: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | if SHIELD_ROMAC_PLUS 5 | 6 | config ZMK_KEYBOARD_NAME 7 | default "RoMac+ v4" 8 | 9 | endif -------------------------------------------------------------------------------- /app/boards/shields/romac_plus/romac_plus.conf: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | # Uncomment to enable encoder 5 | #CONFIG_EC11=y 6 | #CONFIG_EC11_TRIGGER_GLOBAL_THREAD=y -------------------------------------------------------------------------------- /app/boards/shields/tg4x/Kconfig.defconfig: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | if SHIELD_TG4X 5 | 6 | config ZMK_KEYBOARD_NAME 7 | default "TG4x" 8 | 9 | endif 10 | -------------------------------------------------------------------------------- /app/boards/shields/two_percent_milk/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2022 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_TWO_PERCENT_MILK 5 | def_bool $(shields_list_contains,two_percent_milk) 6 | -------------------------------------------------------------------------------- /app/include/zmk/split/bluetooth/peripheral.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | #pragma once 8 | 9 | bool zmk_split_bt_peripheral_is_connected(void); -------------------------------------------------------------------------------- /app/tests/caps-word/continue-with-modifiers/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p 2 | s/.*hid_implicit_modifiers_//p 3 | s/.*caps_word_enhance_usage/enhance_usage/p 4 | s/.*caps_word_is_caps_includelist/caps_includelist/p -------------------------------------------------------------------------------- /app/tests/hold-tap/balanced/7-positional/tgdn-dn-ntgdn-timer-ntgup-tgup-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/hold-preferred/7-positional/4a-dn-ntgdn-timer-ntgup-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/hold-preferred/7-positional/4a-dn-tgdn-timer-tgup-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/tap-preferred/7-positional/4a-dn-ntgdn-timer-ntgup-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/keytoggle/kt-press-release-nkro/keycode_events.snapshot: -------------------------------------------------------------------------------- 1 | pressed: usage_page 0x07 keycode 0x05 implicit_mods 0x00 explicit_mods 0x00 2 | released: usage_page 0x07 keycode 0x05 implicit_mods 0x00 explicit_mods 0x00 3 | -------------------------------------------------------------------------------- /docs/docs/codes/_editing.mdx: -------------------------------------------------------------------------------- 1 | import Table from "@site/src/components/codes/Table"; 2 | 3 | ## Cut, Copy, Paste 4 | 5 |
6 | 7 | ## Undo, Redo 8 | 9 |
10 | -------------------------------------------------------------------------------- /app/boards/arm/nice_nano/Kconfig: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: MIT 2 | 3 | config BOARD_ENABLE_DCDC 4 | bool "Enable DCDC mode" 5 | select SOC_DCDC_NRF52X 6 | default y 7 | depends on (BOARD_NICE_NANO || BOARD_NICE_NANO_V2) 8 | -------------------------------------------------------------------------------- /app/boards/shields/bat43/Kconfig.defconfig: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | if SHIELD_BAT43 5 | 6 | config ZMK_KEYBOARD_NAME 7 | default "Bat43" 8 | 9 | endif 10 | -------------------------------------------------------------------------------- /app/boards/shields/clueboard_california/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 Pete Johanson 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_CLUEBOARD_CALIFORNIA 5 | def_bool $(shields_list_contains,clueboard_california) 6 | -------------------------------------------------------------------------------- /app/boards/shields/hummingbird/hummingbird.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: hummingbird 3 | name: Hummingbird 4 | type: shield 5 | url: https://github.com/PJE66/hummingbird 6 | requires: [seeed_xiao] 7 | features: 8 | - keys 9 | -------------------------------------------------------------------------------- /app/boards/shields/romac/romac.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: romac 3 | name: Romac Macropad 4 | type: shield 5 | url: https://mechboards.co.uk/shop/kits/romac-macro-pad/ 6 | requires: [pro_micro] 7 | features: 8 | - keys 9 | -------------------------------------------------------------------------------- /app/tests/hold-tap/hold-preferred/7-positional/tgdn-dn-ntgdn-timer-ntgup-tgup-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/hold-tap/tap-preferred/7-positional/tgdn-dn-ntgdn-timer-ntgup-tgup-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p -------------------------------------------------------------------------------- /app/tests/modifiers/explicit/kp-hyper-dn-a-dn-a-up-hyper-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p 2 | s/.*hid_register_mod/reg/p 3 | s/.*hid_unregister_mod/unreg/p 4 | s/.*zmk_hid_.*Modifiers set to /mods: Modifiers set to /p -------------------------------------------------------------------------------- /app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-lctl-up-mod-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p 2 | s/.*hid_register_mod/reg/p 3 | s/.*hid_unregister_mod/unreg/p 4 | s/.*zmk_hid_.*Modifiers set to /mods: Modifiers set to /p -------------------------------------------------------------------------------- /app/tests/modifiers/mixed/kp-lctl-dn-mod-dn-mod-up-lctl-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p 2 | s/.*hid_register_mod/reg/p 3 | s/.*hid_unregister_mod/unreg/p 4 | s/.*zmk_hid_.*Modifiers set to /mods: Modifiers set to /p -------------------------------------------------------------------------------- /app/tests/wpm/2-multiple_keypress/keycode_events.snapshot: -------------------------------------------------------------------------------- 1 | key_pressed_count 1 keycode 5 2 | Raised WPM state changed 12 wpm_update_counter 1 3 | key_pressed_count 2 keycode 5 4 | Raised WPM state changed 8 wpm_update_counter 3 5 | -------------------------------------------------------------------------------- /app/boards/arm/nice60/Kconfig: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 Nick Winans 2 | # SPDX-License-Identifier: MIT 3 | 4 | config BOARD_ENABLE_DCDC 5 | bool "Enable DCDC mode" 6 | select SOC_DCDC_NRF52X 7 | default y 8 | depends on BOARD_NICE60 9 | -------------------------------------------------------------------------------- /app/boards/shields/chalice/Kconfig.defconfig: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | if SHIELD_CHALICE 5 | 6 | config ZMK_KEYBOARD_NAME 7 | default "Chalice" 8 | 9 | endif 10 | -------------------------------------------------------------------------------- /app/boards/shields/lily58/lily58.conf: -------------------------------------------------------------------------------- 1 | # Uncomment to enable encoder 2 | # CONFIG_EC11=y 3 | # CONFIG_EC11_TRIGGER_GLOBAL_THREAD=y 4 | 5 | # Uncomment the following line to enable the Lily58 OLED Display 6 | # CONFIG_ZMK_DISPLAY=y 7 | -------------------------------------------------------------------------------- /app/boards/shields/m60/m60.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: m60 3 | name: MakerDiary m60 4 | type: shield 5 | url: https://makerdiary.com/pages/m60-mechanical-keyboard 6 | requires: [makerdiary_nrf52840_m2] 7 | features: 8 | - keys 9 | -------------------------------------------------------------------------------- /app/tests/combo/press-release-long-combo-complete/keycode_events.snapshot: -------------------------------------------------------------------------------- 1 | pressed: usage_page 0x07 keycode 0x1D implicit_mods 0x00 explicit_mods 0x00 2 | released: usage_page 0x07 keycode 0x1D implicit_mods 0x00 explicit_mods 0x00 3 | -------------------------------------------------------------------------------- /app/tests/modifiers/explicit/kp-lctl-dn-lctl-dn-lctl-up-lctl-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p 2 | s/.*hid_register_mod/reg/p 3 | s/.*hid_unregister_mod/unreg/p 4 | s/.*zmk_hid_.*Modifiers set to /mods: Modifiers set to /p -------------------------------------------------------------------------------- /app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lctl-up-lsft-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p 2 | s/.*hid_register_mod/reg/p 3 | s/.*hid_unregister_mod/unreg/p 4 | s/.*zmk_hid_.*Modifiers set to /mods: Modifiers set to /p -------------------------------------------------------------------------------- /app/tests/modifiers/explicit/kp-lctl-dn-lsft-dn-lsft-up-lctl-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p 2 | s/.*hid_register_mod/reg/p 3 | s/.*hid_unregister_mod/unreg/p 4 | s/.*zmk_hid_.*Modifiers set to /mods: Modifiers set to /p -------------------------------------------------------------------------------- /app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod1-up-mod2-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p 2 | s/.*hid_register_mod/reg/p 3 | s/.*hid_unregister_mod/unreg/p 4 | s/.*zmk_hid_.*Modifiers set to /mods: Modifiers set to /p -------------------------------------------------------------------------------- /app/tests/modifiers/implicit/kp-mod1-dn-mod2-dn-mod2-up-mod1-up/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p 2 | s/.*hid_register_mod/reg/p 3 | s/.*hid_unregister_mod/unreg/p 4 | s/.*zmk_hid_.*Modifiers set to /mods: Modifiers set to /p -------------------------------------------------------------------------------- /docs/src/hid-usage.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: CC-BY-NC-SA-4.0 5 | */ 6 | 7 | export default function usage(page, id) { 8 | return (page << 16) | id; 9 | } 10 | -------------------------------------------------------------------------------- /app/boards/arm/bdn9/Kconfig.board: -------------------------------------------------------------------------------- 1 | # keeb.io BDN9 board configuration 2 | 3 | # Copyright (c) 2020 The ZMK Contributors 4 | # SPDX-License-Identifier: MIT 5 | 6 | config BOARD_BDN9 7 | bool "BDN9 rev2" 8 | depends on SOC_STM32F072XB 9 | -------------------------------------------------------------------------------- /app/boards/arm/ferris/Kconfig.board: -------------------------------------------------------------------------------- 1 | # Ferris board configuration 2 | 3 | # Copyright (c) 2020 The ZMK Contributors 4 | # SPDX-License-Identifier: MIT 5 | 6 | config BOARD_FERRIS 7 | bool "Ferris rev 0.2" 8 | depends on SOC_STM32F072XB 9 | -------------------------------------------------------------------------------- /app/boards/arm/planck/planck_rev6.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: planck_rev6 3 | name: Planck Rev6 4 | type: board 5 | arch: arm 6 | features: 7 | - keys 8 | outputs: 9 | - usb 10 | url: https://olkb.com/collections/planck 11 | -------------------------------------------------------------------------------- /app/boards/shields/osprette/Kconfig.defconfig: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | if SHIELD_OSPRETTE 5 | 6 | config ZMK_KEYBOARD_NAME 7 | default "Osprette" 8 | 9 | endif 10 | -------------------------------------------------------------------------------- /app/boards/shields/reviung41/Kconfig.defconfig: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | if SHIELD_REVIUNG41 5 | 6 | config ZMK_KEYBOARD_NAME 7 | default "Reviung41" 8 | 9 | endif 10 | -------------------------------------------------------------------------------- /app/boards/shields/reviung41/reviung41.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: reviung41 3 | name: REVIUNG41 4 | type: shield 5 | url: https://github.com/gtips/reviung/tree/master/reviung41 6 | requires: [pro_micro] 7 | features: 8 | - keys 9 | -------------------------------------------------------------------------------- /app/boards/shields/romac/Kconfig.defconfig: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 Pete Johanson, Richard Jones 2 | # SPDX-License-Identifier: MIT 3 | 4 | if SHIELD_ROMAC 5 | 6 | config ZMK_KEYBOARD_NAME 7 | default "RoMac" 8 | 9 | endif 10 | 11 | -------------------------------------------------------------------------------- /app/dts/bindings/behaviors/zmk,behavior-to-layer.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | description: To Layer 5 | 6 | compatible: "zmk,behavior-to-layer" 7 | 8 | include: one_param.yaml 9 | -------------------------------------------------------------------------------- /app/boards/arm/mikoto/Kconfig.board: -------------------------------------------------------------------------------- 1 | # mikoto board configuration 2 | 3 | # Copyright (c) 2020 The ZMK Contributors 4 | # SPDX-License-Identifier: MIT 5 | 6 | config BOARD_MIKOTO_520 7 | bool "mikoto_520" 8 | depends on SOC_NRF52840_QIAA 9 | -------------------------------------------------------------------------------- /app/boards/arm/proton_c/Kconfig.board: -------------------------------------------------------------------------------- 1 | # QMK Proton-C board configuration 2 | 3 | # Copyright (c) 2020 Pete Johanson 4 | # SPDX-License-Identifier: MIT 5 | 6 | config BOARD_QMK_PROTON_C 7 | bool "QMK Proton-C" 8 | depends on SOC_STM32F303XC 9 | -------------------------------------------------------------------------------- /app/boards/shields/boardsource3x4/Kconfig.defconfig: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | if SHIELD_BOARDSOURCE3X4 5 | 6 | config ZMK_KEYBOARD_NAME 7 | default "Boardsource 3x4" 8 | 9 | endif -------------------------------------------------------------------------------- /app/boards/shields/boardsource5x12/Kconfig.defconfig: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | if SHIELD_BOARDSOURCE5X12 5 | 6 | config ZMK_KEYBOARD_NAME 7 | default "boardsource5x12" 8 | 9 | endif -------------------------------------------------------------------------------- /app/boards/shields/helix/helix.conf: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | # Enables RGB functionality (Uncomment lines below to enable.) 5 | # CONFIG_ZMK_RGB_UNDERGLOW=y 6 | # CONFIG_WS2812_STRIP=y -------------------------------------------------------------------------------- /app/include/zmk/display/status_screen.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | #pragma once 8 | 9 | #include 10 | 11 | lv_obj_t *zmk_display_status_screen(); -------------------------------------------------------------------------------- /app/scripts/requirements.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | # Convert YAML to JSON for validation 5 | remarshal>=0.14.0 6 | 7 | # Perform our hardware metadata validation 8 | jsonschema>=3.2.0 -------------------------------------------------------------------------------- /app/tests/caps-word/continue-with-non-alpha-continue-list-item/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p 2 | s/.*hid_implicit_modifiers_//p 3 | s/.*caps_word_enhance_usage/enhance_usage/p 4 | s/.*caps_word_is_caps_includelist/caps_includelist/p -------------------------------------------------------------------------------- /app/tests/caps-word/continue-with-non-modified-numeric-usage-id/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode_//p 2 | s/.*hid_implicit_modifiers_//p 3 | s/.*caps_word_enhance_usage/enhance_usage/p 4 | s/.*caps_word_is_caps_includelist/caps_includelist/p -------------------------------------------------------------------------------- /app/boards/arm/mikoto/mikoto_520.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: mikoto_520 3 | name: Mikoto 5.20 4 | type: board 5 | arch: arm 6 | outputs: 7 | - usb 8 | - ble 9 | url: https://github.com/zhiayang/mikoto 10 | exposes: [pro_micro] 11 | -------------------------------------------------------------------------------- /app/boards/arm/nice_nano/nice_nano.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: nice_nano 3 | name: nice!nano v1 4 | type: board 5 | arch: arm 6 | outputs: 7 | - usb 8 | - ble 9 | url: https://nicekeyboards.com/nice-nano 10 | exposes: [pro_micro] 11 | -------------------------------------------------------------------------------- /app/boards/shields/a_dux/a_dux_right.overlay: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2021 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | #include "a_dux.dtsi" 8 | 9 | &default_transform { 10 | col-offset = <17>; 11 | }; 12 | -------------------------------------------------------------------------------- /app/boards/shields/chalice/chalice.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: chalice 3 | name: Chalice 4 | type: shield 5 | url: https://customkbd.com/products/chalice-pre-order 6 | requires: [pro_micro] 7 | features: 8 | - keys 9 | - underglow 10 | -------------------------------------------------------------------------------- /app/boards/shields/clog/clog_right.overlay: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | #include "clog.dtsi" 8 | 9 | &default_transform { 10 | col-offset = <17>; 11 | }; 12 | -------------------------------------------------------------------------------- /app/boards/shields/hummingbird/Kconfig.defconfig: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2022 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | if SHIELD_HUMMINGBIRD 5 | 6 | config ZMK_KEYBOARD_NAME 7 | default "Hummingbird" 8 | 9 | endif 10 | -------------------------------------------------------------------------------- /app/boards/shields/tidbit/tidbit.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: tidbit 3 | name: Tidbit Numpad 4 | type: shield 5 | url: https://nullbits.co/tidbit/ 6 | requires: [pro_micro] 7 | features: 8 | - keys 9 | - encoder 10 | - display 11 | -------------------------------------------------------------------------------- /app/dts/bindings/behaviors/zmk,behavior-none.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | description: None Binding Behavior 5 | 6 | compatible: "zmk,behavior-none" 7 | 8 | include: zero_param.yaml 9 | -------------------------------------------------------------------------------- /app/include/zmk/matrix_transform.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | #pragma once 8 | 9 | uint32_t zmk_matrix_transform_row_column_to_position(uint32_t row, uint32_t column); -------------------------------------------------------------------------------- /app/src/events/sensor_event.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | #include 8 | #include 9 | 10 | ZMK_EVENT_IMPL(zmk_sensor_event); -------------------------------------------------------------------------------- /app/boards/arm/bt60/bt60_v1.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: bt60_v1 3 | name: BT60 V1 Soldered 4 | type: board 5 | arch: arm 6 | features: 7 | - keys 8 | - encoder 9 | outputs: 10 | - usb 11 | - ble 12 | url: https://polarityworks.com 13 | -------------------------------------------------------------------------------- /app/boards/arm/ferris/ferris_rev02.yaml: -------------------------------------------------------------------------------- 1 | identifier: ferris_rev02 2 | name: Ferris 0.2 3 | type: mcu 4 | arch: arm 5 | toolchain: 6 | - zephyr 7 | - gnuarmemb 8 | - xtools 9 | ram: 40 10 | supported: 11 | - switches 12 | - underglow 13 | -------------------------------------------------------------------------------- /app/boards/arm/nice60/nice60.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: nice60 3 | name: nice!60 4 | type: board 5 | arch: arm 6 | features: 7 | - keys 8 | - underglow 9 | outputs: 10 | - usb 11 | - ble 12 | url: https://nicekeyboards.com/nice-60 13 | -------------------------------------------------------------------------------- /app/boards/arm/nice_nano/nice_nano_v2.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: nice_nano_v2 3 | name: nice!nano v2 4 | type: board 5 | arch: arm 6 | outputs: 7 | - usb 8 | - ble 9 | url: https://nicekeyboards.com/nice-nano 10 | exposes: [pro_micro] 11 | -------------------------------------------------------------------------------- /app/boards/arm/nrf52840_m2/Kconfig: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | config BOARD_ENABLE_DCDC 5 | bool "Enable DCDC mode" 6 | select SOC_DCDC_NRF52X 7 | default y 8 | depends on BOARD_NRF52840_M2 9 | -------------------------------------------------------------------------------- /app/boards/arm/nrfmicro/nrfmicro_11.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: nrfmicro_11 3 | name: nRFMicro 1.1/1.2 4 | type: board 5 | arch: arm 6 | outputs: 7 | - usb 8 | - ble 9 | url: https://github.com/joric/nrfmicro/ 10 | exposes: [pro_micro] 11 | -------------------------------------------------------------------------------- /app/boards/arm/nrfmicro/nrfmicro_13.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: nrfmicro_13 3 | name: nRFMicro 1.3/1.4 4 | type: board 5 | arch: arm 6 | outputs: 7 | - usb 8 | - ble 9 | url: https://github.com/joric/nrfmicro/ 10 | exposes: [pro_micro] 11 | -------------------------------------------------------------------------------- /app/boards/arm/planck/Kconfig.board: -------------------------------------------------------------------------------- 1 | # Planck V6 board configuration 2 | 3 | # Copyright (c) 2020 The ZMK Contributors 4 | # SPDX-License-Identifier: MIT 5 | 6 | config BOARD_PLANCK_REV6 7 | bool "Planck V6 Keyboard" 8 | depends on SOC_STM32F303XC 9 | -------------------------------------------------------------------------------- /app/boards/shields/cradio/cradio_right.overlay: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | #include "cradio.dtsi" 8 | 9 | &default_transform { 10 | col-offset = <17>; 11 | }; 12 | -------------------------------------------------------------------------------- /app/boards/shields/crbn/crbn.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: crbn 3 | name: CRBN Featherlight 4 | type: shield 5 | url: https://github.com/PolarityWorks/CRBN-Featherlight 6 | requires: [pro_micro] 7 | features: 8 | - keys 9 | - encoder 10 | -------------------------------------------------------------------------------- /app/boards/shields/romac_plus/romac_plus.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: romac_plus 3 | name: Romac+ Macropad 4 | type: shield 5 | url: https://example.org 6 | requires: [pro_micro] 7 | features: 8 | - keys 9 | - encoder 10 | - display 11 | -------------------------------------------------------------------------------- /app/boards/shields/two_percent_milk/Kconfig.defconfig: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2022 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | if SHIELD_TWO_PERCENT_MILK 5 | 6 | config ZMK_KEYBOARD_NAME 7 | default "2% Milk" 8 | 9 | endif 10 | -------------------------------------------------------------------------------- /app/drivers/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | add_subdirectory_ifdef(CONFIG_ZMK_DRIVERS_GPIO gpio) 5 | add_subdirectory(kscan) 6 | add_subdirectory(sensor) 7 | add_subdirectory(display) 8 | -------------------------------------------------------------------------------- /app/dts/bindings/behaviors/zmk,behavior-backlight.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | description: Backlight behavior 5 | 6 | compatible: "zmk,behavior-backlight" 7 | 8 | include: two_param.yaml 9 | -------------------------------------------------------------------------------- /app/dts/bindings/behaviors/zmk,behavior-bluetooth.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | description: Bluetooth Behavior 5 | 6 | compatible: "zmk,behavior-bluetooth" 7 | 8 | include: two_param.yaml 9 | -------------------------------------------------------------------------------- /app/dts/bindings/behaviors/zmk,behavior-key-toggle.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2022 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | description: Key toggle behavior 5 | 6 | compatible: "zmk,behavior-key-toggle" 7 | 8 | include: one_param.yaml 9 | -------------------------------------------------------------------------------- /app/dts/bindings/behaviors/zmk,behavior-outputs.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | description: Output Selection Behavior 5 | 6 | compatible: "zmk,behavior-outputs" 7 | 8 | include: one_param.yaml 9 | -------------------------------------------------------------------------------- /app/dts/bindings/behaviors/zmk,behavior-toggle-layer.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | description: Toggle Layer 5 | 6 | compatible: "zmk,behavior-toggle-layer" 7 | 8 | include: one_param.yaml 9 | -------------------------------------------------------------------------------- /app/include/dt-bindings/zmk/kscan-mock.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | #warning "kscan-mock.h has been deprecated and superseded by kscan_mock.h" 8 | 9 | #include "kscan_mock.h" -------------------------------------------------------------------------------- /app/tests/keytoggle/kt-press-release-nkro/native_posix_64.conf: -------------------------------------------------------------------------------- 1 | CONFIG_GPIO=n 2 | CONFIG_LOG=y 3 | CONFIG_LOG_BACKEND_SHOW_COLOR=n 4 | CONFIG_ZMK_LOG_LEVEL_DBG=y 5 | CONFIG_DEBUG=y 6 | CONFIG_SYS_CLOCK_TICKS_PER_SEC=1000 7 | CONFIG_ZMK_HID_REPORT_TYPE_NKRO=y -------------------------------------------------------------------------------- /docs/docs/codes/_applications.mdx: -------------------------------------------------------------------------------- 1 | import Table from "@site/src/components/codes/Table"; 2 | 3 | ## Application Controls 4 | 5 |
6 | 7 | ## Applications (Launch) 8 | 9 |
10 | -------------------------------------------------------------------------------- /app/boards/arm/bt60/bt60_v1_hs.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: bt60_v1_hs 3 | name: BT60 V1 Hotswap 4 | type: board 5 | arch: arm 6 | features: 7 | - keys 8 | - encoder 9 | outputs: 10 | - usb 11 | - ble 12 | url: https://polarityworks.com 13 | -------------------------------------------------------------------------------- /app/boards/shields/clog/clog.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: clog 3 | name: Clog 4 | type: shield 5 | url: https://github.com/smores56/clog 6 | requires: [pro_micro] 7 | features: 8 | - keys 9 | siblings: 10 | - clog_left 11 | - clog_right 12 | -------------------------------------------------------------------------------- /app/boards/shields/ergodash/ergodash_right.overlay: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | #include "ergodash.dtsi" 8 | 9 | &default_transform { 10 | col-offset = <7>; 11 | }; 12 | -------------------------------------------------------------------------------- /app/boards/shields/jian/jian.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: jian 3 | name: Jian 4 | type: shield 5 | url: https://github.com/KGOH/Jian-Info 6 | requires: [pro_micro] 7 | features: 8 | - keys 9 | siblings: 10 | - jian_left 11 | - jian_right 12 | -------------------------------------------------------------------------------- /app/boards/shields/settings_reset/Kconfig.defconfig: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | if SHIELD_SETTINGS_RESET 5 | 6 | config ZMK_KEYBOARD_NAME 7 | default "SETTINGS RESET" 8 | 9 | endif 10 | 11 | -------------------------------------------------------------------------------- /app/dts/bindings/behaviors/zmk,behavior-key-press.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | description: Key press/release behavior 5 | 6 | compatible: "zmk,behavior-key-press" 7 | 8 | include: one_param.yaml 9 | -------------------------------------------------------------------------------- /app/dts/bindings/macros/zmk,macro-control-tap-time.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2022 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | description: Set Macro Tap Duration 5 | 6 | compatible: "zmk,macro-control-tap-time" 7 | 8 | include: one_param.yaml -------------------------------------------------------------------------------- /app/dts/bindings/macros/zmk,macro-control-wait-time.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2022 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | description: Set Macro Wait Duration 5 | 6 | compatible: "zmk,macro-control-wait-time" 7 | 8 | include: one_param.yaml -------------------------------------------------------------------------------- /app/include/zmk/endpoints_types.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2021 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | #pragma once 8 | 9 | enum zmk_endpoint { 10 | ZMK_ENDPOINT_USB, 11 | ZMK_ENDPOINT_BLE, 12 | }; 13 | -------------------------------------------------------------------------------- /app/boards/arm/ferris/ferris_rev02.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: ferris_rev02 3 | name: Ferris 0.2 4 | type: board 5 | arch: arm 6 | features: 7 | - keys 8 | outputs: 9 | - usb 10 | url: https://github.com/pierrechevalier83/ferris/tree/main/0.2 11 | -------------------------------------------------------------------------------- /app/boards/arm/s40nc/s40nc.yaml: -------------------------------------------------------------------------------- 1 | identifier: s40nc 2 | name: S40NC 3 | type: mcu 4 | arch: arm 5 | toolchain: 6 | - zephyr 7 | - gnuarmemb 8 | supported: 9 | - adc 10 | - usb_device 11 | - ble 12 | - ieee802154 13 | - pwm 14 | - watchdog 15 | -------------------------------------------------------------------------------- /app/boards/arm/seeeduino_xiao/seeeduino_xiao.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: seeeduino_xiao 3 | name: Seeeduino XIAO 4 | type: board 5 | arch: arm 6 | outputs: 7 | - usb 8 | url: https://wiki.seeedstudio.com/Seeeduino-XIAO/ 9 | exposes: [seeed_xiao] 10 | -------------------------------------------------------------------------------- /app/boards/shields/boardsource5x12/boardsource5x12.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: boardsource5x12 3 | name: Boardsource 5x12 4 | type: shield 5 | url: https://boardsource.xyz/store/5ecb802c86879c9a0c22db61 6 | requires: [pro_micro] 7 | features: 8 | - keys 9 | -------------------------------------------------------------------------------- /app/boards/shields/corne/corne.conf: -------------------------------------------------------------------------------- 1 | # Uncomment the following lines to enable the Corne RGB Underglow 2 | # CONFIG_ZMK_RGB_UNDERGLOW=y 3 | # CONFIG_WS2812_STRIP=y 4 | 5 | # Uncomment the following line to enable the Corne OLED Display 6 | # CONFIG_ZMK_DISPLAY=y 7 | -------------------------------------------------------------------------------- /app/boards/shields/jiran/jiran.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: jiran 3 | name: Jiran 4 | type: shield 5 | url: https://github.com/Ladniy/jiran 6 | requires: [pro_micro] 7 | features: 8 | - keys 9 | siblings: 10 | - jiran_left 11 | - jiran_right 12 | -------------------------------------------------------------------------------- /app/boards/shields/jorne/jorne.conf: -------------------------------------------------------------------------------- 1 | # Uncomment the following lines to enable the Jorne RGB Underglow 2 | # CONFIG_ZMK_RGB_UNDERGLOW=y 3 | # CONFIG_WS2812_STRIP=y 4 | 5 | # Uncomment the following line to enable the Jorne OLED Display 6 | # CONFIG_ZMK_DISPLAY=y 7 | -------------------------------------------------------------------------------- /app/boards/shields/quick_actions/quick_actions.conf: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2022 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | # Uncomment to enable Encoders 5 | CONFIG_EC11=y 6 | CONFIG_EC11_TRIGGER_GLOBAL_THREAD=y 7 | CONFIG_ZMK_BEHAVIORS_QUEUE_SIZE=512 -------------------------------------------------------------------------------- /app/boards/shields/quick_actions/quick_actions.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: quick_actions 3 | name: Quick Actions 4 | type: shield 5 | url: https://github.com/GreenAirplane/ergogen 6 | requires: [pro_micro] 7 | features: 8 | - keys 9 | - encoder 10 | -------------------------------------------------------------------------------- /app/boards/shields/tg4x/boards/nice_nano.conf: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | # Enable underglow 5 | CONFIG_ZMK_RGB_UNDERGLOW=y 6 | # Use the STRIP config specific to the LEDs you're using 7 | CONFIG_WS2812_STRIP=y -------------------------------------------------------------------------------- /app/dts/bindings/behaviors/zmk,behavior-ext-power.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | description: External power control Behavior 5 | 6 | compatible: "zmk,behavior-ext-power" 7 | 8 | include: one_param.yaml 9 | -------------------------------------------------------------------------------- /app/dts/bindings/behaviors/zmk,behavior-rgb-underglow.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | description: RGB Underglow Action 5 | 6 | compatible: "zmk,behavior-rgb-underglow" 7 | 8 | include: two_param.yaml 9 | -------------------------------------------------------------------------------- /app/dts/bindings/macros/zmk,macro-control-mode-press.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2022 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | description: Set Macro To Press Mode 5 | 6 | compatible: "zmk,macro-control-mode-press" 7 | 8 | include: zero_param.yaml -------------------------------------------------------------------------------- /app/dts/bindings/macros/zmk,macro-control-mode-tap.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2022 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | description: Set Macro To Tap Mode 5 | 6 | compatible: "zmk,macro-control-mode-tap" 7 | 8 | include: zero_param.yaml 9 | -------------------------------------------------------------------------------- /app/src/events/wpm_state_changed.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | #include 8 | #include 9 | 10 | ZMK_EVENT_IMPL(zmk_wpm_state_changed); -------------------------------------------------------------------------------- /docs/src/data/hid-usage-pages.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: CC-BY-NC-SA-4.0 5 | */ 6 | 7 | export const genericDesktop = 0x01; 8 | export const key = 0x07; 9 | export const consumer = 0x0c; 10 | -------------------------------------------------------------------------------- /app/boards/arm/bt60/board.cmake: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: MIT 2 | 3 | board_runner_args(nrfjprog "--nrf-family=NRF52" "--softreset") 4 | include(${ZEPHYR_BASE}/boards/common/blackmagicprobe.board.cmake) 5 | include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake) 6 | -------------------------------------------------------------------------------- /app/boards/arm/mikoto/board.cmake: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: MIT 2 | 3 | board_runner_args(nrfjprog "--nrf-family=NRF52" "--softreset") 4 | include(${ZEPHYR_BASE}/boards/common/blackmagicprobe.board.cmake) 5 | include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake) 6 | -------------------------------------------------------------------------------- /app/boards/arm/nice60/nice60.yaml: -------------------------------------------------------------------------------- 1 | identifier: nice60 2 | name: nice!60 3 | type: mcu 4 | arch: arm 5 | toolchain: 6 | - zephyr 7 | - gnuarmemb 8 | supported: 9 | - adc 10 | - usb_device 11 | - ble 12 | - ieee802154 13 | - pwm 14 | - watchdog 15 | -------------------------------------------------------------------------------- /app/boards/shields/boardsource3x4/boardsource3x4.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: boardsource3x4 3 | name: Boardsource 3x4 Macropad 4 | type: shield 5 | url: https://boardsource.xyz/store/5ecc2008eee64242946c98c1 6 | requires: [pro_micro] 7 | features: 8 | - keys 9 | -------------------------------------------------------------------------------- /app/dts/bindings/behaviors/zmk,behavior-transparent.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | description: Transparent Binding Behavior 5 | 6 | compatible: "zmk,behavior-transparent" 7 | 8 | include: zero_param.yaml 9 | -------------------------------------------------------------------------------- /app/dts/bindings/macros/zmk,macro-control-mode-release.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2022 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | description: Set Macro To Release Mode 5 | 6 | compatible: "zmk,macro-control-mode-release" 7 | 8 | include: zero_param.yaml -------------------------------------------------------------------------------- /app/dts/bindings/macros/zmk,macro-pause-for-release.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2022 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | description: Macro Pause Until Release Marker 5 | 6 | compatible: "zmk,macro-pause-for-release" 7 | 8 | include: zero_param.yaml -------------------------------------------------------------------------------- /app/src/events/layer_state_changed.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | #include 8 | #include 9 | 10 | ZMK_EVENT_IMPL(zmk_layer_state_changed); -------------------------------------------------------------------------------- /app/boards/arm/bluemicro840/Kconfig.board: -------------------------------------------------------------------------------- 1 | # BlueMicro840 board configuration 2 | 3 | # Copyright (c) 2020 Pete Johanson, Derek Schmell 4 | # SPDX-License-Identifier: MIT 5 | 6 | config BOARD_BLUEMICRO840_V1 7 | bool "BlueMicro840_V1" 8 | depends on SOC_NRF52840_QIAA 9 | -------------------------------------------------------------------------------- /app/boards/arm/nice_nano/board.cmake: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: MIT 2 | 3 | board_runner_args(nrfjprog "--nrf-family=NRF52" "--softreset") 4 | include(${ZEPHYR_BASE}/boards/common/blackmagicprobe.board.cmake) 5 | include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake) 6 | -------------------------------------------------------------------------------- /app/boards/arm/nrfmicro/board.cmake: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: MIT 2 | 3 | board_runner_args(nrfjprog "--nrf-family=NRF52" "--softreset") 4 | include(${ZEPHYR_BASE}/boards/common/blackmagicprobe.board.cmake) 5 | include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake) 6 | -------------------------------------------------------------------------------- /app/boards/shields/microdox/microdox.conf: -------------------------------------------------------------------------------- 1 | # Uncomment the following lines to enable the Microdox RGB Underglow 2 | # CONFIG_ZMK_RGB_UNDERGLOW=y 3 | # CONFIG_WS2812_STRIP=y 4 | 5 | # Uncomment the following line to enable the Microdox OLED Display 6 | # CONFIG_ZMK_DISPLAY=y 7 | -------------------------------------------------------------------------------- /app/tests/keytoggle/kt-press-release/native_posix_64.keymap: -------------------------------------------------------------------------------- 1 | #include "../behavior_keymap.dtsi" 2 | 3 | &kscan { 4 | events = < 5 | ZMK_MOCK_PRESS(0,0,10) 6 | ZMK_MOCK_RELEASE(0,0,10) 7 | ZMK_MOCK_PRESS(0,0,10) 8 | ZMK_MOCK_RELEASE(0,0,10) 9 | >; 10 | }; -------------------------------------------------------------------------------- /app/tests/none/normal/native_posix.keymap: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include "../behavior_keymap.dtsi" 5 | 6 | &kscan { 7 | events = ; 8 | }; -------------------------------------------------------------------------------- /docs/src/groups.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: CC-BY-NC-SA-4.0 5 | */ 6 | 7 | import groups from "./data/groups.js"; 8 | 9 | export function getGroup(id) { 10 | return groups[id] ?? null; 11 | } 12 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "github-actions" 4 | directory: "/" 5 | schedule: 6 | interval: "daily" 7 | - package-ecosystem: "npm" 8 | directory: "/docs" 9 | schedule: 10 | interval: "daily" 11 | -------------------------------------------------------------------------------- /app/boards/arm/bdn9/bdn9_rev2.yaml: -------------------------------------------------------------------------------- 1 | identifier: bdn9 2 | name: keeb.io BDN9 3 | type: mcu 4 | arch: arm 5 | toolchain: 6 | - zephyr 7 | - gnuarmemb 8 | - xtools 9 | ram: 40 10 | supported: 11 | - encoders 12 | - switches 13 | - underglow 14 | - per_key 15 | -------------------------------------------------------------------------------- /app/boards/arm/bluemicro840/board.cmake: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: MIT 2 | 3 | board_runner_args(nrfjprog "--nrf-family=NRF52" "--softreset") 4 | include(${ZEPHYR_BASE}/boards/common/blackmagicprobe.board.cmake) 5 | include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake) 6 | -------------------------------------------------------------------------------- /app/boards/arm/nrf52840_m2/nrf52840_m2.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: nrf52840_m2 3 | name: nRF52840 M.2 Module 4 | type: board 5 | arch: arm 6 | outputs: 7 | - usb 8 | - ble 9 | url: https://wiki.makerdiary.com/nrf52840-m2/ 10 | exposes: [makerdiary_nrf52840_m2] 11 | -------------------------------------------------------------------------------- /app/boards/arm/nrfmicro/nrfmicro_11_flipped.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: nrfmicro_11_flipped 3 | name: nRFMicro 1.1 (flipped) 4 | type: board 5 | arch: arm 6 | outputs: 7 | - usb 8 | - ble 9 | url: https://github.com/joric/nrfmicro/ 10 | exposes: [pro_micro] 11 | -------------------------------------------------------------------------------- /app/boards/native_posix_64.conf: -------------------------------------------------------------------------------- 1 | CONFIG_GPIO=n 2 | # Enable to have the native posix build expose USBIP device(s) 3 | # CONFIG_ZMK_USB=y 4 | CONFIG_LOG=y 5 | CONFIG_LOG_BACKEND_SHOW_COLOR=n 6 | CONFIG_ZMK_LOG_LEVEL_DBG=y 7 | CONFIG_DEBUG=y 8 | CONFIG_SYS_CLOCK_TICKS_PER_SEC=1000 9 | -------------------------------------------------------------------------------- /app/boards/shields/corne/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 Pete Johanson 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_CORNE_LEFT 5 | def_bool $(shields_list_contains,corne_left) 6 | 7 | config SHIELD_CORNE_RIGHT 8 | def_bool $(shields_list_contains,corne_right) 9 | -------------------------------------------------------------------------------- /app/boards/shields/elephant42/elephant42.conf: -------------------------------------------------------------------------------- 1 | # Uncomment the following lines to enable the Elephant42 RGB Underglow 2 | # CONFIG_ZMK_RGB_UNDERGLOW=y 3 | # CONFIG_WS2812_STRIP=y 4 | 5 | # Uncomment the following line to enable the Elephant42 OLED Display 6 | # CONFIG_ZMK_DISPLAY=y -------------------------------------------------------------------------------- /app/boards/shields/sofle/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 Ryan Cross 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_SOFLE_LEFT 5 | def_bool $(shields_list_contains,sofle_left) 6 | 7 | config SHIELD_SOFLE_RIGHT 8 | def_bool $(shields_list_contains,sofle_right) 9 | -------------------------------------------------------------------------------- /app/include/dt-bindings/zmk/matrix-transform.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | #warning "matrix-transform.h has been deprecated and superseded by matrix_transform.h" 8 | 9 | #include "matrix_transform.h" -------------------------------------------------------------------------------- /app/src/events/activity_state_changed.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | #include 8 | #include 9 | 10 | ZMK_EVENT_IMPL(zmk_activity_state_changed); -------------------------------------------------------------------------------- /app/src/events/battery_state_changed.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | #include 8 | #include 9 | 10 | ZMK_EVENT_IMPL(zmk_battery_state_changed); -------------------------------------------------------------------------------- /app/src/events/position_state_changed.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | #include 8 | #include 9 | 10 | ZMK_EVENT_IMPL(zmk_position_state_changed); -------------------------------------------------------------------------------- /app/src/events/usb_conn_state_changed.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | #include 8 | #include 9 | 10 | ZMK_EVENT_IMPL(zmk_usb_conn_state_changed); -------------------------------------------------------------------------------- /app/tests/keytoggle/kt-press-release-nkro/native_posix_64.keymap: -------------------------------------------------------------------------------- 1 | #include "../behavior_keymap.dtsi" 2 | 3 | &kscan { 4 | events = < 5 | ZMK_MOCK_PRESS(0,0,10) 6 | ZMK_MOCK_RELEASE(0,0,10) 7 | ZMK_MOCK_PRESS(0,0,10) 8 | ZMK_MOCK_RELEASE(0,0,10) 9 | >; 10 | }; -------------------------------------------------------------------------------- /app/tests/none/normal/native_posix_64.keymap: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include "../behavior_keymap.dtsi" 5 | 6 | &kscan { 7 | events = ; 8 | }; -------------------------------------------------------------------------------- /app/boards/arm/nice60/README.md: -------------------------------------------------------------------------------- 1 | # nice!60 2 | ![nice!60](https://i.imgur.com/0YWv5PE.png) 3 | 4 | The nice!60 is a hotswap 60% made by Nice Keyboards. https://nicekeyboards.com/nice-60 5 | 6 | ## Building nice!60 ZMK firmware 7 | ``` 8 | west build -p -b nice60 9 | ``` 10 | -------------------------------------------------------------------------------- /app/boards/arm/nrf52840_m2/Kconfig.board: -------------------------------------------------------------------------------- 1 | # Maker Diary nrf52840 M.2 board configuration 2 | 3 | # Copyright (c) 2020 The ZMK Contributors 4 | # SPDX-License-Identifier: MIT 5 | 6 | config BOARD_NRF52840_M2 7 | bool "nrf52480_m2" 8 | depends on SOC_NRF52840_QIAA 9 | 10 | -------------------------------------------------------------------------------- /app/boards/shields/clog/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2022 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_CLOG_LEFT 5 | def_bool $(shields_list_contains,clog_left) 6 | 7 | config SHIELD_CLOG_RIGHT 8 | def_bool $(shields_list_contains,clog_right) 9 | -------------------------------------------------------------------------------- /app/boards/shields/ergodash/ergodash.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: ergodash 3 | name: Ergodash 4 | type: shield 5 | url: https://github.com/omkbd/ErgoDash 6 | requires: [pro_micro] 7 | features: 8 | - keys 9 | siblings: 10 | - ergodash_left 11 | - ergodash_right 12 | -------------------------------------------------------------------------------- /app/boards/shields/jian/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_JIAN_LEFT 5 | def_bool $(shields_list_contains,jian_left) 6 | 7 | config SHIELD_JIAN_RIGHT 8 | def_bool $(shields_list_contains,jian_right) 9 | -------------------------------------------------------------------------------- /app/boards/shields/knob_goblin/knob_goblin.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: knob_goblin 3 | name: Knob Goblin 4 | type: shield 5 | url: https://knob-goblin.com/ 6 | requires: [pro_micro] 7 | exposes: [i2c_oled] 8 | features: 9 | - keys 10 | - display 11 | - encoder 12 | -------------------------------------------------------------------------------- /app/boards/shields/lily58/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 Pete Johanson 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_LILY58_LEFT 5 | def_bool $(shields_list_contains,lily58_left) 6 | 7 | config SHIELD_LILY58_RIGHT 8 | def_bool $(shields_list_contains,lily58_right) 9 | -------------------------------------------------------------------------------- /app/boards/shields/redox/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | config SHIELD_REDOX_LEFT 4 | def_bool $(shields_list_contains,redox_left) 5 | 6 | config SHIELD_REDOX_RIGHT 7 | def_bool $(shields_list_contains,redox_right) 8 | -------------------------------------------------------------------------------- /app/boards/shields/two_percent_milk/two_percent_milk.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: two_percent_milk 3 | name: 2% Milk 4 | type: shield 5 | url: https://github.com/Spaceboards/SpaceboardsHardware/tree/master/Keyboards/2%25%20Milk 6 | requires: [pro_micro] 7 | features: 8 | - keys 9 | -------------------------------------------------------------------------------- /app/drivers/sensor/ec11/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | zephyr_include_directories(.) 5 | 6 | zephyr_library() 7 | 8 | zephyr_library_sources(ec11.c) 9 | zephyr_library_sources_ifdef(CONFIG_EC11_TRIGGER ec11_trigger.c) -------------------------------------------------------------------------------- /app/src/events/keycode_state_changed.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | #include 8 | #include 9 | 10 | ZMK_EVENT_IMPL(zmk_keycode_state_changed); 11 | -------------------------------------------------------------------------------- /app/src/events/modifiers_state_changed.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | #include 8 | #include 9 | 10 | ZMK_EVENT_IMPL(zmk_modifiers_state_changed); -------------------------------------------------------------------------------- /app/tests/transparent/normal/native_posix_64.keymap: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include "../behavior_keymap.dtsi" 5 | 6 | &kscan { 7 | events = ; 8 | }; -------------------------------------------------------------------------------- /app/boards/arm/bdn9/bdn9_rev2.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: bdn9_rev2 3 | name: BDN9 Rev2 4 | type: board 5 | arch: arm 6 | features: 7 | - keys 8 | - encoder 9 | outputs: 10 | - usb 11 | url: https://keeb.io/products/bdn9-rev-2-3x3-9-key-macropad-rotary-encoder-and-rgb 12 | -------------------------------------------------------------------------------- /app/boards/arm/bluemicro840/bluemicro840_v1.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: bluemicro840_v1 3 | name: BlueMicro840 v1 4 | type: board 5 | arch: arm 6 | outputs: 7 | - usb 8 | - ble 9 | url: https://nrf52.jpconstantineau.com/docs/bluemicro840_v1/ 10 | exposes: [pro_micro] 11 | -------------------------------------------------------------------------------- /app/boards/arm/s40nc/README.md: -------------------------------------------------------------------------------- 1 | # S40NC 2 | ![S40NC](https://i.imgur.com/fk8587n.jpg) 3 | 4 | Shorty40NoCordy (S40NC) is a limited run 40% bluetooth keyboard originally made and sold by MechWild. 5 | 6 | ## Building S40NC ZMK firmware 7 | ``` 8 | west build -p -b s40nc 9 | ``` 10 | -------------------------------------------------------------------------------- /app/boards/arm/seeeduino_xiao_ble/seeeduino_xiao_ble.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: seeeduino_xiao_ble 3 | name: Seeeduino XIAO BLE 4 | type: board 5 | arch: arm 6 | outputs: 7 | - usb 8 | - ble 9 | url: https://wiki.seeedstudio.com/XIAO_BLE/ 10 | exposes: [seeed_xiao] 11 | -------------------------------------------------------------------------------- /app/boards/shields/a_dux/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_A_DUX_LEFT 5 | def_bool $(shields_list_contains,a_dux_left) 6 | 7 | config SHIELD_A_DUX_RIGHT 8 | def_bool $(shields_list_contains,a_dux_right) 9 | -------------------------------------------------------------------------------- /app/boards/shields/fourier/fourier.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: fourier 3 | name: Fourier Rev. 1 4 | type: shield 5 | url: https://github.com/keebio/fourier 6 | requires: 7 | - pro_micro 8 | features: 9 | - keys 10 | siblings: 11 | - fourier_left 12 | - fourier_right 13 | -------------------------------------------------------------------------------- /app/boards/shields/helix/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_HELIX_LEFT 5 | def_bool $(shields_list_contains,helix_left) 6 | 7 | config SHIELD_HELIX_RIGHT 8 | def_bool $(shields_list_contains,helix_right) -------------------------------------------------------------------------------- /app/boards/shields/iris/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 Pete Johanson, Kurtis Lew 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_IRIS_LEFT 5 | def_bool $(shields_list_contains,iris_left) 6 | 7 | config SHIELD_IRIS_RIGHT 8 | def_bool $(shields_list_contains,iris_right) 9 | -------------------------------------------------------------------------------- /app/boards/shields/jiran/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_JIRAN_LEFT 5 | def_bool $(shields_list_contains,jiran_left) 6 | 7 | config SHIELD_JIRAN_RIGHT 8 | def_bool $(shields_list_contains,jiran_right) 9 | -------------------------------------------------------------------------------- /app/boards/shields/jorne/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_JORNE_LEFT 5 | def_bool $(shields_list_contains,jorne_left) 6 | 7 | config SHIELD_JORNE_RIGHT 8 | def_bool $(shields_list_contains,jorne_right) 9 | -------------------------------------------------------------------------------- /app/dts/bindings/behaviors/zmk,behavior-momentary-layer.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | description: Momentary layer on press/release behavior 5 | 6 | compatible: "zmk,behavior-momentary-layer" 7 | 8 | include: one_param.yaml 9 | -------------------------------------------------------------------------------- /app/include/dt-bindings/zmk/matrix_transform.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | #define KT_ROW(item) (item >> 8) 8 | #define KT_COL(item) (item & 0xFF) 9 | 10 | #define RC(row, col) (((row) << 8) + (col)) -------------------------------------------------------------------------------- /app/tests/toggle-layer/normal/keycode_events.snapshot: -------------------------------------------------------------------------------- 1 | tog_pressed: position 1 layer 1 2 | tog_released: position 1 layer 1 3 | kp_pressed: usage_page 0x0C keycode 0xB5 implicit_mods 0x00 explicit_mods 0x00 4 | kp_released: usage_page 0x0C keycode 0xB5 implicit_mods 0x00 explicit_mods 0x00 5 | -------------------------------------------------------------------------------- /app/boards/arm/bt60/bt60_v1.yaml: -------------------------------------------------------------------------------- 1 | identifier: bt60_v1 2 | name: BT60 V1 Soldered 3 | type: mcu 4 | arch: arm 5 | toolchain: 6 | - zephyr 7 | - gnuarmemb 8 | - xtools 9 | supported: 10 | - adc 11 | - usb_device 12 | - ble 13 | - ieee802154 14 | - pwm 15 | - watchdog 16 | -------------------------------------------------------------------------------- /app/boards/arm/mikoto/mikoto_520.yaml: -------------------------------------------------------------------------------- 1 | identifier: mikoto_520 2 | name: mikoto_520 3 | type: mcu 4 | arch: arm 5 | toolchain: 6 | - zephyr 7 | - gnuarmemb 8 | - xtools 9 | supported: 10 | - adc 11 | - usb_device 12 | - ble 13 | - ieee802154 14 | - pwm 15 | - watchdog 16 | -------------------------------------------------------------------------------- /app/boards/arm/nice_nano/nice_nano.yaml: -------------------------------------------------------------------------------- 1 | identifier: nice_nano 2 | name: nice!nano 3 | type: mcu 4 | arch: arm 5 | toolchain: 6 | - zephyr 7 | - gnuarmemb 8 | - xtools 9 | supported: 10 | - adc 11 | - usb_device 12 | - ble 13 | - ieee802154 14 | - pwm 15 | - watchdog 16 | -------------------------------------------------------------------------------- /app/boards/shields/cradio/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_CRADIO_LEFT 5 | def_bool $(shields_list_contains,cradio_left) 6 | 7 | config SHIELD_CRADIO_RIGHT 8 | def_bool $(shields_list_contains,cradio_right) 9 | -------------------------------------------------------------------------------- /app/boards/shields/leeloo/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2022 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_LEELOO_LEFT 5 | def_bool $(shields_list_contains,leeloo_left) 6 | 7 | config SHIELD_LEELOO_RIGHT 8 | def_bool $(shields_list_contains,leeloo_right) 9 | -------------------------------------------------------------------------------- /app/boards/shields/redox/redox.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: redox 3 | name: Redox 4 | type: shield 5 | url: https://github.com/mattdibi/redox-keyboard 6 | requires: [pro_micro] 7 | features: 8 | - keys 9 | - underglow 10 | siblings: 11 | - redox_left 12 | - redox_right 13 | -------------------------------------------------------------------------------- /app/dts/bindings/behaviors/zero_param.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | properties: 5 | label: 6 | type: string 7 | required: true 8 | "#binding-cells": 9 | type: int 10 | required: true 11 | const: 0 12 | -------------------------------------------------------------------------------- /app/src/events/ble_active_profile_changed.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | #include 8 | #include 9 | 10 | ZMK_EVENT_IMPL(zmk_ble_active_profile_changed); -------------------------------------------------------------------------------- /app/tests/momentary-layer/1-normal/keycode_events.snapshot: -------------------------------------------------------------------------------- 1 | mo_pressed: position 1 layer 1 2 | kp_pressed: usage_page 0x07 keycode 0x06 implicit_mods 0x00 explicit_mods 0x00 3 | kp_released: usage_page 0x07 keycode 0x06 implicit_mods 0x00 explicit_mods 0x00 4 | mo_released: position 1 layer 1 5 | -------------------------------------------------------------------------------- /app/boards/arm/bt60/bt60_v1_hs.yaml: -------------------------------------------------------------------------------- 1 | identifier: bt60_v1_hs 2 | name: BT60 V1 Hotswap 3 | type: mcu 4 | arch: arm 5 | toolchain: 6 | - zephyr 7 | - gnuarmemb 8 | - xtools 9 | supported: 10 | - adc 11 | - usb_device 12 | - ble 13 | - ieee802154 14 | - pwm 15 | - watchdog 16 | -------------------------------------------------------------------------------- /app/boards/arm/nrfmicro/nrfmicro_11.yaml: -------------------------------------------------------------------------------- 1 | identifier: nrfmicro_11 2 | name: nrfmicro_11 3 | type: mcu 4 | arch: arm 5 | toolchain: 6 | - zephyr 7 | - gnuarmemb 8 | - xtools 9 | supported: 10 | - adc 11 | - usb_device 12 | - ble 13 | - ieee802154 14 | - pwm 15 | - watchdog 16 | -------------------------------------------------------------------------------- /app/boards/arm/nrfmicro/nrfmicro_13.yaml: -------------------------------------------------------------------------------- 1 | identifier: nrfmicro_13 2 | name: nrfmicro_13 3 | type: mcu 4 | arch: arm 5 | toolchain: 6 | - zephyr 7 | - gnuarmemb 8 | - xtools 9 | supported: 10 | - adc 11 | - usb_device 12 | - ble 13 | - ieee802154 14 | - pwm 15 | - watchdog 16 | -------------------------------------------------------------------------------- /app/boards/shields/a_dux/a_dux.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: a_dux 3 | name: A. Dux 4 | type: shield 5 | url: https://github.com/tapioki/cephalopoda/tree/main/Architeuthis%20dux 6 | requires: [pro_micro] 7 | features: 8 | - keys 9 | siblings: 10 | - a_dux_left 11 | - a_dux_right 12 | -------------------------------------------------------------------------------- /app/boards/shields/bfo9000/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_BFO9000_LEFT 5 | def_bool $(shields_list_contains,bfo9000_left) 6 | 7 | config SHIELD_BFO9000_RIGHT 8 | def_bool $(shields_list_contains,bfo9000_right) 9 | -------------------------------------------------------------------------------- /app/boards/shields/lotus58/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2022 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_LOTUS58_LEFT 5 | def_bool $(shields_list_contains,lotus58_left) 6 | 7 | config SHIELD_LOTUS58_RIGHT 8 | def_bool $(shields_list_contains,lotus58_right) 9 | -------------------------------------------------------------------------------- /app/boards/shields/murphpad/murphpad.conf: -------------------------------------------------------------------------------- 1 | # Uncomment to turn on logging, and set ZMK logging to debug output 2 | # CONFIG_ZMK_USB_LOGGING=y 3 | 4 | # Uncomment both to enable encoder 5 | CONFIG_EC11=y 6 | CONFIG_EC11_TRIGGER_GLOBAL_THREAD=y 7 | 8 | # Uncomment to enable OLED 9 | CONFIG_ZMK_DISPLAY=y -------------------------------------------------------------------------------- /app/boards/shields/zodiark/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_ZODIARK_LEFT 5 | def_bool $(shields_list_contains,zodiark_left) 6 | 7 | config SHIELD_ZODIARK_RIGHT 8 | def_bool $(shields_list_contains,zodiark_right) 9 | -------------------------------------------------------------------------------- /app/src/events/endpoint_selection_changed.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2021 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | #include 8 | #include 9 | 10 | ZMK_EVENT_IMPL(zmk_endpoint_selection_changed); 11 | -------------------------------------------------------------------------------- /.devcontainer/.bashrc: -------------------------------------------------------------------------------- 1 | export LS_OPTIONS='-F --color=auto' 2 | alias ls='ls $LS_OPTIONS' 3 | if [ "${CODESPACES}" = "true" ]; then 4 | export WORKSPACE_DIR="$HOME/workspace/zmk" 5 | fi 6 | if [ -f "$WORKSPACE_DIR/zephyr/zephyr-env.sh" ]; then 7 | source "$WORKSPACE_DIR/zephyr/zephyr-env.sh" 8 | fi 9 | -------------------------------------------------------------------------------- /app/boards/arm/nice_nano/nice_nano_v2.yaml: -------------------------------------------------------------------------------- 1 | identifier: nice_nano_v2 2 | name: nice!nano v2 3 | type: mcu 4 | arch: arm 5 | toolchain: 6 | - zephyr 7 | - gnuarmemb 8 | - xtools 9 | supported: 10 | - adc 11 | - usb_device 12 | - ble 13 | - ieee802154 14 | - pwm 15 | - watchdog 16 | -------------------------------------------------------------------------------- /app/boards/shields/ergodash/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_ERGODASH_LEFT 5 | def_bool $(shields_list_contains,ergodash_left) 6 | 7 | config SHIELD_ERGODASH_RIGHT 8 | def_bool $(shields_list_contains,ergodash_right) 9 | -------------------------------------------------------------------------------- /app/boards/shields/microdox/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_MICRODOX_LEFT 5 | def_bool $(shields_list_contains,microdox_left) 6 | 7 | config SHIELD_MICRODOX_RIGHT 8 | def_bool $(shields_list_contains,microdox_right) 9 | -------------------------------------------------------------------------------- /app/boards/shields/murphpad/murphpad.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: murphpad 3 | name: MurphPad 4 | type: shield 5 | url: https://mechwild.com/product/murphpad/ 6 | requires: [pro_micro] 7 | exposes: [i2c_oled] 8 | features: 9 | - keys 10 | - display 11 | - encoder 12 | - underglow 13 | -------------------------------------------------------------------------------- /app/boards/shields/splitreus62/splitreus62.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: splitreus62 3 | name: Splitreus62 4 | type: shield 5 | url: https://github.com/Na-Cly/splitreus62 6 | requires: [pro_micro] 7 | features: 8 | - keys 9 | siblings: 10 | - splitreus62_left 11 | - splitreus62_right 12 | -------------------------------------------------------------------------------- /app/tests/momentary-layer/2-early-key-release/keycode_events.snapshot: -------------------------------------------------------------------------------- 1 | kp_pressed: usage_page 0x07 keycode 0x05 implicit_mods 0x00 explicit_mods 0x00 2 | mo_pressed: position 1 layer 1 3 | kp_released: usage_page 0x07 keycode 0x05 implicit_mods 0x00 explicit_mods 0x00 4 | mo_released: position 1 layer 1 5 | -------------------------------------------------------------------------------- /app/boards/shields/cradio/cradio.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: cradio 3 | name: Cradio/Sweep 4 | type: shield 5 | url: https://github.com/davidphilipbarr/Sweep 6 | requires: [pro_micro] 7 | exposes: [i2c_oled] 8 | features: 9 | - keys 10 | siblings: 11 | - cradio_left 12 | - cradio_right 13 | -------------------------------------------------------------------------------- /app/boards/shields/quefrency/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_QUEFRENCY_LEFT 5 | def_bool $(shields_list_contains,quefrency_left) 6 | 7 | config SHIELD_QUEFRENCY_RIGHT 8 | def_bool $(shields_list_contains,quefrency_right) 9 | -------------------------------------------------------------------------------- /app/boards/shields/splitreus62/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 Derek Schmell 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_SPLITREUS62_LEFT 5 | def_bool $(shields_list_contains,splitreus62_left) 6 | 7 | config SHIELD_SPLITREUS62_RIGHT 8 | def_bool $(shields_list_contains,splitreus62_right) 9 | -------------------------------------------------------------------------------- /app/include/zmk/split/bluetooth/central.h: -------------------------------------------------------------------------------- 1 | 2 | #pragma once 3 | 4 | #include 5 | #include 6 | 7 | int zmk_split_bt_invoke_behavior(uint8_t source, struct zmk_behavior_binding *binding, 8 | struct zmk_behavior_binding_event event, bool state); -------------------------------------------------------------------------------- /app/src/events/split_peripheral_status_changed.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | #include 8 | #include 9 | 10 | ZMK_EVENT_IMPL(zmk_split_peripheral_status_changed); -------------------------------------------------------------------------------- /app/tests/backlight/config-brt/native_posix_64.keymap: -------------------------------------------------------------------------------- 1 | #include "../behavior_keymap.dtsi" 2 | 3 | &kscan { 4 | events = < 5 | /* BL_INC */ 6 | ZMK_MOCK_PRESS(0,0,10) 7 | ZMK_MOCK_RELEASE(0,0,10) 8 | /* BL_DEC */ 9 | ZMK_MOCK_PRESS(0,1,10) 10 | ZMK_MOCK_RELEASE(0,1,10) 11 | >; 12 | }; 13 | -------------------------------------------------------------------------------- /app/tests/backlight/config-on/native_posix_64.keymap: -------------------------------------------------------------------------------- 1 | #include "../behavior_keymap.dtsi" 2 | 3 | &kscan { 4 | events = < 5 | /* BL_ON */ 6 | ZMK_MOCK_PRESS(1,0,10) 7 | ZMK_MOCK_RELEASE(1,0,10) 8 | /* BL_OFF */ 9 | ZMK_MOCK_PRESS(1,1,10) 10 | ZMK_MOCK_RELEASE(1,1,10) 11 | >; 12 | }; 13 | -------------------------------------------------------------------------------- /app/tests/hold-tap/balanced/6-retro-tap/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p 5 | s/.*update_hold_status_for_retro_tap/update_hold_status_for_retro_tap/p 6 | s/.*decide_retro_tap/decide_retro_tap/p -------------------------------------------------------------------------------- /app/boards/shields/elephant42/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_ELEPHANT42_LEFT 5 | def_bool $(shields_list_contains,elephant42_left) 6 | 7 | config SHIELD_ELEPHANT42_RIGHT 8 | def_bool $(shields_list_contains,elephant42_right) -------------------------------------------------------------------------------- /app/boards/shields/fourier/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | 5 | config SHIELD_FOURIER_LEFT 6 | def_bool $(shields_list_contains,fourier_left) 7 | 8 | config SHIELD_FOURIER_RIGHT 9 | def_bool $(shields_list_contains,fourier_right) 10 | -------------------------------------------------------------------------------- /app/boards/shields/helix/helix.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: helix 3 | name: Helix 4 | type: shield 5 | url: https://github.com/MakotoKurauchi/helix 6 | requires: [pro_micro] 7 | exposes: [i2c_oled] 8 | features: 9 | - keys 10 | - display 11 | siblings: 12 | - helix_left 13 | - helix_right 14 | -------------------------------------------------------------------------------- /app/boards/shields/jian/Kconfig.defconfig: -------------------------------------------------------------------------------- 1 | 2 | if SHIELD_JIAN_LEFT 3 | 4 | config ZMK_KEYBOARD_NAME 5 | default "Jian" 6 | 7 | config ZMK_SPLIT_ROLE_CENTRAL 8 | default y 9 | 10 | endif 11 | 12 | if SHIELD_JIAN_LEFT || SHIELD_JIAN_RIGHT 13 | 14 | config ZMK_SPLIT 15 | default y 16 | 17 | endif 18 | -------------------------------------------------------------------------------- /app/boards/shields/lily58/lily58.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: lily58 3 | name: Lily58 4 | type: shield 5 | url: https://github.com/kata0510/Lily58 6 | requires: [pro_micro] 7 | exposes: [i2c_oled] 8 | features: 9 | - keys 10 | - display 11 | siblings: 12 | - lily58_left 13 | - lily58_right 14 | -------------------------------------------------------------------------------- /app/include/zmk/activity.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | #pragma once 8 | 9 | enum zmk_activity_state { ZMK_ACTIVITY_ACTIVE, ZMK_ACTIVITY_IDLE, ZMK_ACTIVITY_SLEEP }; 10 | 11 | enum zmk_activity_state zmk_activity_get_state(); -------------------------------------------------------------------------------- /app/tests/backlight/basic/native_posix_64.conf: -------------------------------------------------------------------------------- 1 | CONFIG_GPIO=y 2 | CONFIG_GPIO_EMUL=y 3 | CONFIG_ZMK_BLE=n 4 | CONFIG_LOG=y 5 | CONFIG_LOG_BACKEND_SHOW_COLOR=n 6 | CONFIG_ZMK_LOG_LEVEL_DBG=y 7 | CONFIG_DEBUG=y 8 | CONFIG_SYS_CLOCK_TICKS_PER_SEC=1000 9 | 10 | CONFIG_LED_GPIO=y 11 | CONFIG_ZMK_BACKLIGHT=y 12 | -------------------------------------------------------------------------------- /app/tests/backlight/cycle/native_posix_64.conf: -------------------------------------------------------------------------------- 1 | CONFIG_GPIO=y 2 | CONFIG_GPIO_EMUL=y 3 | CONFIG_ZMK_BLE=n 4 | CONFIG_LOG=y 5 | CONFIG_LOG_BACKEND_SHOW_COLOR=n 6 | CONFIG_ZMK_LOG_LEVEL_DBG=y 7 | CONFIG_DEBUG=y 8 | CONFIG_SYS_CLOCK_TICKS_PER_SEC=1000 9 | 10 | CONFIG_LED_GPIO=y 11 | CONFIG_ZMK_BACKLIGHT=y 12 | -------------------------------------------------------------------------------- /app/tests/hold-tap/hold-preferred/6-retro-tap/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p 5 | s/.*update_hold_status_for_retro_tap/update_hold_status_for_retro_tap/p 6 | s/.*decide_retro_tap/decide_retro_tap/p -------------------------------------------------------------------------------- /app/tests/tap-dance/1a-tap1/native_posix_64.keymap: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include "../behavior_keymap.dtsi" 5 | 6 | &kscan { 7 | events = < 8 | ZMK_MOCK_PRESS(0,0,10) 9 | ZMK_MOCK_RELEASE(0,0,200) 10 | >; 11 | }; -------------------------------------------------------------------------------- /app/tests/tap-dance/4a-single/native_posix_64.keymap: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include "../behavior_keymap.dtsi" 5 | 6 | &kscan { 7 | events = < 8 | ZMK_MOCK_PRESS(0,1,10) 9 | ZMK_MOCK_RELEASE(0,1,10) 10 | >; 11 | }; -------------------------------------------------------------------------------- /app/boards/arm/bdn9/bdn9_rev2.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: bdn9_rev2 3 | name: BDN9 Rev2 4 | type: board 5 | arch: arm 6 | outputs: 7 | - usb 8 | features: 9 | - keys 10 | - encoder 11 | url: https://keeb.io/collections/bdn9-collection/products/bdn9-rev-2-3x3-9-key-macropad-rotary-encoder-and-rgb 12 | -------------------------------------------------------------------------------- /app/boards/arm/bluemicro840/bluemicro840_v1.yaml: -------------------------------------------------------------------------------- 1 | identifier: bluemicro840_v1 2 | name: BlueMicro840_V1 3 | type: mcu 4 | arch: arm 5 | toolchain: 6 | - zephyr 7 | - gnuarmemb 8 | - xtools 9 | supported: 10 | - adc 11 | - usb_device 12 | - ble 13 | - ieee802154 14 | - pwm 15 | - watchdog 16 | -------------------------------------------------------------------------------- /app/tests/tap-dance/2a-hold1/native_posix_64.keymap: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include "../behavior_keymap.dtsi" 5 | 6 | &kscan { 7 | events = < 8 | ZMK_MOCK_PRESS(0,0,400) 9 | ZMK_MOCK_RELEASE(0,0,10) 10 | >; 11 | }; -------------------------------------------------------------------------------- /app/boards/arm/nrf52840_m2/nrf52840_m2.yaml: -------------------------------------------------------------------------------- 1 | identifier: nrf52840_m2 2 | name: Makerdiary nRF52840 M.2 module 3 | type: mcu 4 | arch: arm 5 | toolchain: 6 | - zephyr 7 | - gnuarmemb 8 | - xtools 9 | supported: 10 | - adc 11 | - usb_device 12 | - ble 13 | - ieee802154 14 | - pwm 15 | - watchdog 16 | -------------------------------------------------------------------------------- /app/boards/arm/nrfmicro/nrfmicro_11_flipped.yaml: -------------------------------------------------------------------------------- 1 | identifier: nrfmicro_11_flipped 2 | name: nrfmicro_11_flipped 3 | type: mcu 4 | arch: arm 5 | toolchain: 6 | - zephyr 7 | - gnuarmemb 8 | - xtools 9 | supported: 10 | - adc 11 | - usb_device 12 | - ble 13 | - ieee802154 14 | - pwm 15 | - watchdog 16 | -------------------------------------------------------------------------------- /app/boards/arm/proton_c/Kconfig.defconfig: -------------------------------------------------------------------------------- 1 | # QMK Proton-C board configuration 2 | 3 | # Copyright (c) 2020 Pete Johanson 4 | # SPDX-License-Identifier: MIT 5 | 6 | if BOARD_QMK_PROTON_C 7 | 8 | config BOARD 9 | default "proton_c" 10 | 11 | config ZMK_USB 12 | default y 13 | 14 | endif # BOARD_QMK_PROTON_C 15 | -------------------------------------------------------------------------------- /app/boards/shields/corne/corne.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: corne 3 | name: Corne 4 | type: shield 5 | url: https://github.com/foostan/crkbd/ 6 | requires: [pro_micro] 7 | exposes: [i2c_oled] 8 | features: 9 | - keys 10 | - display 11 | - underglow 12 | siblings: 13 | - corne_left 14 | - corne_right 15 | -------------------------------------------------------------------------------- /app/boards/shields/jorne/jorne.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: jorne 3 | name: Jorne 4 | type: shield 5 | url: https://github.com/joric/jorne 6 | requires: [pro_micro] 7 | exposes: [i2c_oled] 8 | features: 9 | - keys 10 | - display 11 | - underglow 12 | siblings: 13 | - jorne_left 14 | - jorne_right 15 | -------------------------------------------------------------------------------- /app/boards/shields/quefrency/quefrency.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: quefrency 3 | name: Quefrency Rev. 1 4 | type: shield 5 | url: https://github.com/keebio/quefrency-rev1-pcb 6 | requires: [pro_micro] 7 | features: 8 | - keys 9 | - encoder 10 | siblings: 11 | - quefrency_left 12 | - quefrency_right 13 | -------------------------------------------------------------------------------- /app/tests/backlight/low-brightness/native_posix_64.conf: -------------------------------------------------------------------------------- 1 | CONFIG_GPIO=y 2 | CONFIG_GPIO_EMUL=y 3 | CONFIG_ZMK_BLE=n 4 | CONFIG_LOG=y 5 | CONFIG_LOG_BACKEND_SHOW_COLOR=n 6 | CONFIG_ZMK_LOG_LEVEL_DBG=y 7 | CONFIG_DEBUG=y 8 | CONFIG_SYS_CLOCK_TICKS_PER_SEC=1000 9 | 10 | CONFIG_LED_GPIO=y 11 | CONFIG_ZMK_BACKLIGHT=y 12 | -------------------------------------------------------------------------------- /app/tests/hold-tap/balanced/1-dn-up/native_posix_64.keymap: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include "../behavior_keymap.dtsi" 5 | 6 | &kscan { 7 | events = < 8 | ZMK_MOCK_PRESS(0,0,10) 9 | ZMK_MOCK_RELEASE(0,0,10) 10 | >; 11 | }; -------------------------------------------------------------------------------- /app/tests/hold-tap/balanced/8-global-quick-tap/1-basic/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p 5 | s/.*update_hold_status_for_retro_tap/update_hold_status_for_retro_tap/p 6 | s/.*decide_retro_tap/decide_retro_tap/p -------------------------------------------------------------------------------- /app/boards/arm/bt60/Kconfig.board: -------------------------------------------------------------------------------- 1 | # BT60 board configuration 2 | 3 | # Copyright (c) 2021 Polarity Works 4 | # SPDX-License-Identifier: MIT 5 | 6 | config BOARD_BT60_V1 7 | bool "bt60" 8 | depends on SOC_NRF52840_QIAA 9 | 10 | config BOARD_BT60_V1_HS 11 | bool "bt60 hotswap" 12 | depends on SOC_NRF52840_QIAA 13 | -------------------------------------------------------------------------------- /app/boards/arm/nrf52840_m2/board.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | board_runner_args(nrfjprog "--nrf-family=NRF52" "--softreset") 5 | 6 | include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake) 7 | include(${ZEPHYR_BASE}/boards/common/blackmagicprobe.board.cmake) 8 | -------------------------------------------------------------------------------- /app/boards/shields/bfo9000/bfo9000.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: bfo9000 3 | name: BFO-9000 4 | type: shield 5 | url: https://keeb.io/products/bfo-9000-keyboard-customizable-full-size-split-ortholinear 6 | requires: [pro_micro] 7 | features: 8 | - keys 9 | siblings: 10 | - bfo9000_left 11 | - bfo9000_right 12 | -------------------------------------------------------------------------------- /app/tests/hold-tap/balanced/2-dn-timer-up/native_posix_64.keymap: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include "../behavior_keymap.dtsi" 5 | 6 | &kscan { 7 | events = < 8 | ZMK_MOCK_PRESS(0,0,500) 9 | ZMK_MOCK_RELEASE(0,0,10) 10 | >; 11 | }; -------------------------------------------------------------------------------- /app/tests/hold-tap/balanced/8-global-quick-tap/2-double-hold/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p 5 | s/.*update_hold_status_for_retro_tap/update_hold_status_for_retro_tap/p 6 | s/.*decide_retro_tap/decide_retro_tap/p -------------------------------------------------------------------------------- /app/tests/hold-tap/hold-preferred/1-dn-up/native_posix_64.keymap: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include "../behavior_keymap.dtsi" 5 | 6 | &kscan { 7 | events = < 8 | ZMK_MOCK_PRESS(0,0,10) 9 | ZMK_MOCK_RELEASE(0,0,10) 10 | >; 11 | }; -------------------------------------------------------------------------------- /app/tests/hold-tap/hold-preferred/8-global-quick-tap/1-basic/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p 5 | s/.*update_hold_status_for_retro_tap/update_hold_status_for_retro_tap/p 6 | s/.*decide_retro_tap/decide_retro_tap/p -------------------------------------------------------------------------------- /app/tests/hold-tap/tap-preferred/1-dn-up/native_posix_64.keymap: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include "../behavior_keymap.dtsi" 5 | 6 | &kscan { 7 | events = < 8 | ZMK_MOCK_PRESS(0,0,10) 9 | ZMK_MOCK_RELEASE(0,0,10) 10 | >; 11 | }; -------------------------------------------------------------------------------- /app/tests/hold-tap/tap-preferred/8-global-quick-tap/1-basic/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p 5 | s/.*update_hold_status_for_retro_tap/update_hold_status_for_retro_tap/p 6 | s/.*decide_retro_tap/decide_retro_tap/p -------------------------------------------------------------------------------- /app/tests/none/layered/native_posix_64.keymap: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include "../behavior_keymap.dtsi" 5 | 6 | &kscan { 7 | events = ; 8 | }; -------------------------------------------------------------------------------- /app/boards/arm/bdn9/board.cmake: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: MIT 2 | 3 | board_runner_args(dfu-util "--pid=0483:df11" "--alt=0" "--dfuse") 4 | board_runner_args(jlink "--device=STM32F072CB" "--speed=4000") 5 | 6 | include(${ZEPHYR_BASE}/boards/common/dfu-util.board.cmake) 7 | include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) 8 | -------------------------------------------------------------------------------- /app/boards/arm/ferris/board.cmake: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: MIT 2 | 3 | board_runner_args(dfu-util "--pid=0483:df11" "--alt=0" "--dfuse") 4 | board_runner_args(jlink "--device=STM32F072CB" "--speed=4000") 5 | 6 | include(${ZEPHYR_BASE}/boards/common/dfu-util.board.cmake) 7 | include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) 8 | -------------------------------------------------------------------------------- /app/boards/arm/planck/board.cmake: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: MIT 2 | 3 | board_runner_args(dfu-util "--pid=0483:df11" "--alt=0" "--dfuse") 4 | board_runner_args(jlink "--device=STM32F303VC" "--speed=4000") 5 | 6 | include(${ZEPHYR_BASE}/boards/common/dfu-util.board.cmake) 7 | include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) 8 | -------------------------------------------------------------------------------- /app/boards/arm/proton_c/proton_c.yaml: -------------------------------------------------------------------------------- 1 | identifier: proton_c 2 | name: QMK Proton-C 3 | type: mcu 4 | arch: arm 5 | toolchain: 6 | - zephyr 7 | - gnuarmemb 8 | - xtools 9 | ram: 40 10 | supported: 11 | - gpio 12 | - i2c 13 | - counter 14 | - spi 15 | - usb_device 16 | - lsm303dlhc 17 | - nvs 18 | - can 19 | -------------------------------------------------------------------------------- /app/boards/shields/leeloo/leeloo.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: leeloo 3 | name: Leeloo 4 | type: shield 5 | url: https://clicketysplit.ca/pages/leeloo 6 | requires: [pro_micro] 7 | exposes: [i2c_oled] 8 | features: 9 | - keys 10 | - display 11 | - encoder 12 | siblings: 13 | - leeloo_left 14 | - leeloo_right 15 | -------------------------------------------------------------------------------- /app/boards/shields/sofle/sofle.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: sofle 3 | name: Sofle 4 | type: shield 5 | url: https://github.com/josefadamcik/SofleKeyboard 6 | requires: [pro_micro] 7 | exposes: [i2c_oled] 8 | features: 9 | - keys 10 | - display 11 | - encoder 12 | siblings: 13 | - sofle_left 14 | - sofle_right 15 | -------------------------------------------------------------------------------- /app/dts/bindings/behaviors/one_param.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | properties: 5 | label: 6 | type: string 7 | required: true 8 | "#binding-cells": 9 | type: int 10 | required: true 11 | const: 1 12 | 13 | binding-cells: 14 | - param1 15 | -------------------------------------------------------------------------------- /app/dts/bindings/behaviors/zmk,behavior-reset.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | description: Keyboard Reset Behavior 5 | 6 | compatible: "zmk,behavior-reset" 7 | 8 | include: zero_param.yaml 9 | 10 | properties: 11 | type: 12 | type: int 13 | default: 0 14 | -------------------------------------------------------------------------------- /app/src/display/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | target_sources_ifdef(CONFIG_ZMK_DISPLAY app PRIVATE main.c) 5 | target_sources_ifdef(CONFIG_ZMK_DISPLAY_STATUS_SCREEN_BUILT_IN app PRIVATE status_screen.c) 6 | 7 | add_subdirectory_ifdef(CONFIG_ZMK_DISPLAY widgets/) 8 | -------------------------------------------------------------------------------- /app/tests/hold-tap/tap-preferred/2-dn-timer-up/native_posix_64.keymap: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include "../behavior_keymap.dtsi" 5 | 6 | &kscan { 7 | events = < 8 | ZMK_MOCK_PRESS(0,0,500) 9 | ZMK_MOCK_RELEASE(0,0,10) 10 | >; 11 | }; -------------------------------------------------------------------------------- /app/tests/hold-tap/tap-preferred/8-global-quick-tap/2-double-hold/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p 5 | s/.*update_hold_status_for_retro_tap/update_hold_status_for_retro_tap/p 6 | s/.*decide_retro_tap/decide_retro_tap/p -------------------------------------------------------------------------------- /app/tests/toggle-layer/normal/native_posix_64.keymap: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include "../behavior_keymap.dtsi" 5 | 6 | &kscan { 7 | events = ; 8 | }; -------------------------------------------------------------------------------- /app/tests/transparent/layered/native_posix_64.keymap: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include "../behavior_keymap.dtsi" 5 | 6 | &kscan { 7 | events = ; 8 | }; -------------------------------------------------------------------------------- /app/boards/arm/dz60rgb/board.cmake: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: MIT 2 | 3 | board_runner_args(dfu-util "--pid=0483:df11" "--alt=0" "--dfuse") 4 | board_runner_args(jlink "--device=STM32F303CC" "--speed=4000") 5 | 6 | include(${ZEPHYR_BASE}/boards/common/dfu-util.board.cmake) 7 | include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) 8 | -------------------------------------------------------------------------------- /app/boards/arm/proton_c/board.cmake: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: MIT 2 | 3 | board_runner_args(dfu-util "--pid=0483:df11" "--alt=0" "--dfuse") 4 | board_runner_args(jlink "--device=STM32F303CC" "--speed=4000") 5 | 6 | include(${ZEPHYR_BASE}/boards/common/dfu-util.board.cmake) 7 | include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) 8 | -------------------------------------------------------------------------------- /app/boards/shields/knob_goblin/knob_goblin.conf: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2022 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | # Uncomment to enable Encoders 5 | CONFIG_EC11=y 6 | CONFIG_EC11_TRIGGER_GLOBAL_THREAD=y 7 | 8 | # Uncomment the following line to enable the Knob Goblin OLED Display 9 | CONFIG_ZMK_DISPLAY=y 10 | -------------------------------------------------------------------------------- /app/boards/shields/sofle/sofle.conf: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 Ryan Cross 2 | # SPDX-License-Identifier: MIT 3 | 4 | # Uncomment the following line to enable the Sofle OLED Display 5 | # CONFIG_ZMK_DISPLAY=y 6 | 7 | # Uncomment these two lines to add support for encoders 8 | # CONFIG_EC11=y 9 | # CONFIG_EC11_TRIGGER_GLOBAL_THREAD=y 10 | -------------------------------------------------------------------------------- /app/drivers/zephyr/dts/bindings/sensor/zmk,battery-nrf-vddh.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | description: Battery SoC monitoring using nRF VDDH 5 | 6 | compatible: "zmk,battery-nrf-vddh" 7 | 8 | properties: 9 | label: 10 | required: true 11 | type: string 12 | -------------------------------------------------------------------------------- /app/dts/behaviors/none.dtsi: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | / { 8 | behaviors { 9 | /omit-if-no-ref/ none: behavior_none { 10 | compatible = "zmk,behavior-none"; 11 | label = "NONE"; 12 | #binding-cells = <0>; 13 | }; 14 | }; 15 | }; 16 | -------------------------------------------------------------------------------- /app/tests/hold-tap/hold-preferred/2-dn-timer-up/native_posix_64.keymap: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include "../behavior_keymap.dtsi" 5 | 6 | &kscan { 7 | events = < 8 | ZMK_MOCK_PRESS(0,0,500) 9 | ZMK_MOCK_RELEASE(0,0,10) 10 | >; 11 | }; -------------------------------------------------------------------------------- /app/tests/hold-tap/hold-preferred/8-global-quick-tap/2-double-hold/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p 5 | s/.*update_hold_status_for_retro_tap/update_hold_status_for_retro_tap/p 6 | s/.*decide_retro_tap/decide_retro_tap/p -------------------------------------------------------------------------------- /app/tests/hold-tap/tap-unless-interrupted/1-dn-up/native_posix_64.keymap: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include "../behavior_keymap.dtsi" 5 | 6 | &kscan { 7 | events = < 8 | ZMK_MOCK_PRESS(0,0,10) 9 | ZMK_MOCK_RELEASE(0,0,10) 10 | >; 11 | }; -------------------------------------------------------------------------------- /app/tests/hold-tap/tap-unless-interrupted/6-global-quick-tap/1-basic/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p 5 | s/.*update_hold_status_for_retro_tap/update_hold_status_for_retro_tap/p 6 | s/.*decide_retro_tap/decide_retro_tap/p -------------------------------------------------------------------------------- /app/tests/key-repeat/send-nothing-if-no-keys-pressed-yet/native_posix_64.keymap: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include "../behavior_keymap.dtsi" 5 | 6 | &kscan { 7 | events = < 8 | ZMK_MOCK_PRESS(0,0,10) 9 | ZMK_MOCK_RELEASE(0,0,10) 10 | >; 11 | }; -------------------------------------------------------------------------------- /app/tests/wpm/1-single_keypress/native_posix_64.keymap: -------------------------------------------------------------------------------- 1 | #include "../behavior_keymap.dtsi" 2 | 3 | &kscan { 4 | events = < 5 | ZMK_MOCK_PRESS(0,0,10) 6 | ZMK_MOCK_RELEASE(0,0,10) 7 | /* Wait for the worker to trigger and reset after 5 seconds, followed by a 0 at 6 seconds */ 8 | ZMK_MOCK_PRESS(0,0,6000) 9 | >; 10 | }; -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- 1 | fail_fast: false 2 | repos: 3 | - repo: https://github.com/pocc/pre-commit-hooks 4 | rev: v1.1.1 5 | hooks: 6 | - id: clang-format 7 | args: 8 | - -i 9 | - repo: https://github.com/pre-commit/mirrors-prettier 10 | rev: v2.2.1 11 | hooks: 12 | - id: prettier 13 | -------------------------------------------------------------------------------- /app/boards/arm/dz60rgb/Kconfig.defconfig: -------------------------------------------------------------------------------- 1 | # DZ60RGB keyboard configuration 2 | 3 | # Copyright (c) 2020 The ZMK Contributors 4 | # SPDX-License-Identifier: MIT 5 | 6 | if BOARD_DZ60RGB_REV1 7 | 8 | config ZMK_KEYBOARD_NAME 9 | default "DZ60RGB Rev 1" 10 | 11 | config ZMK_USB 12 | default y 13 | 14 | endif # BOARD_DZ60RGB_REV1 15 | -------------------------------------------------------------------------------- /app/boards/arm/nice60/board.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 Nick Winans 2 | # SPDX-License-Identifier: MIT 3 | 4 | set(OPENOCD_NRF5_SUBFAMILY nrf52) 5 | board_runner_args(nrfjprog "--nrf-family=NRF52" "--softreset") 6 | include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake) 7 | include(${ZEPHYR_BASE}/boards/common/openocd-nrf5.board.cmake) 8 | -------------------------------------------------------------------------------- /app/boards/shields/lotus58/lotus58.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: lotus58 3 | name: Lotus58 4 | type: shield 5 | url: https://github.com/TweetyDaBird/Lotus58 6 | requires: [pro_micro] 7 | exposes: [i2c_oled] 8 | features: 9 | - keys 10 | - display 11 | - encoder 12 | siblings: 13 | - lotus58_left 14 | - lotus58_right 15 | -------------------------------------------------------------------------------- /app/boards/shields/microdox/microdox.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: microdox 3 | name: Microdox 4 | type: shield 5 | url: https://boardsource.xyz/store/5f2e7e4a2902de7151494f92 6 | requires: [pro_micro] 7 | exposes: [i2c_oled] 8 | features: 9 | - keys 10 | - display 11 | siblings: 12 | - microdox_left 13 | - microdox_right 14 | -------------------------------------------------------------------------------- /app/dts/behaviors/ext_power.dtsi: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | / { 8 | behaviors { 9 | ext_power: behavior_ext_power { 10 | compatible = "zmk,behavior-ext-power"; 11 | label = "EXTPOWER"; 12 | #binding-cells = <1>; 13 | }; 14 | }; 15 | }; 16 | -------------------------------------------------------------------------------- /app/tests/hold-tap/balanced/7-positional/2-dn-timer-up/native_posix_64.keymap: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include "../behavior_keymap.dtsi" 5 | 6 | &kscan { 7 | events = < 8 | ZMK_MOCK_PRESS(0,0,500) 9 | ZMK_MOCK_RELEASE(0,0,10) 10 | >; 11 | }; -------------------------------------------------------------------------------- /app/tests/hold-tap/tap-unless-interrupted/2-dn-timer-up/native_posix_64.keymap: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include "../behavior_keymap.dtsi" 5 | 6 | &kscan { 7 | events = < 8 | ZMK_MOCK_PRESS(0,0,500) 9 | ZMK_MOCK_RELEASE(0,0,10) 10 | >; 11 | }; -------------------------------------------------------------------------------- /app/tests/hold-tap/tap-unless-interrupted/6-global-quick-tap/2-double-hold/events.patterns: -------------------------------------------------------------------------------- 1 | s/.*hid_listener_keycode/kp/p 2 | s/.*mo_keymap_binding/mo/p 3 | s/.*on_hold_tap_binding/ht_binding/p 4 | s/.*decide_hold_tap/ht_decide/p 5 | s/.*update_hold_status_for_retro_tap/update_hold_status_for_retro_tap/p 6 | s/.*decide_retro_tap/decide_retro_tap/p -------------------------------------------------------------------------------- /app/boards/arm/s40nc/board.cmake: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | set(OPENOCD_NRF5_SUBFAMILY nrf52) 5 | board_runner_args(nrfjprog "--nrf-family=NRF52" "--softreset") 6 | include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake) 7 | include(${ZEPHYR_BASE}/boards/common/openocd-nrf5.board.cmake) 8 | -------------------------------------------------------------------------------- /app/boards/shields/iris/iris.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: iris 3 | name: Iris 4 | type: shield 5 | url: https://keeb.io/products/iris-keyboard-split-ergonomic-keyboard 6 | requires: [pro_micro] 7 | exposes: [i2c_oled] 8 | features: 9 | - keys 10 | - display 11 | - encoder 12 | siblings: 13 | - iris_left 14 | - iris_right 15 | -------------------------------------------------------------------------------- /app/boards/shields/leeloo/leeloo.conf: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2022 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | # Uncomment the following line to enable the OLED Display 5 | # CONFIG_ZMK_DISPLAY=y 6 | 7 | # Uncomment these two lines to add support for encoders 8 | # CONFIG_EC11=y 9 | # CONFIG_EC11_TRIGGER_GLOBAL_THREAD=y 10 | -------------------------------------------------------------------------------- /app/dts/bindings/behaviors/two_param.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | properties: 5 | label: 6 | type: string 7 | required: true 8 | "#binding-cells": 9 | type: int 10 | required: true 11 | const: 2 12 | 13 | binding-cells: 14 | - param1 15 | - param2 16 | -------------------------------------------------------------------------------- /app/tests/hold-tap/hold-preferred/7-positional/2-dn-timer-up/native_posix_64.keymap: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include "../behavior_keymap.dtsi" 5 | 6 | &kscan { 7 | events = < 8 | ZMK_MOCK_PRESS(0,0,500) 9 | ZMK_MOCK_RELEASE(0,0,10) 10 | >; 11 | }; -------------------------------------------------------------------------------- /app/tests/hold-tap/tap-preferred/7-positional/2-dn-timer-up/native_posix_64.keymap: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include "../behavior_keymap.dtsi" 5 | 6 | &kscan { 7 | events = < 8 | ZMK_MOCK_PRESS(0,0,500) 9 | ZMK_MOCK_RELEASE(0,0,10) 10 | >; 11 | }; -------------------------------------------------------------------------------- /docs/.gitignore: -------------------------------------------------------------------------------- 1 | # Dependencies 2 | /node_modules 3 | 4 | # Production 5 | /build 6 | 7 | # Generated files 8 | .docusaurus 9 | .cache-loader 10 | 11 | # Misc 12 | .DS_Store 13 | .env.local 14 | .env.development.local 15 | .env.test.local 16 | .env.production.local 17 | 18 | npm-debug.log* 19 | yarn-debug.log* 20 | yarn-error.log* 21 | -------------------------------------------------------------------------------- /app/boards/arm/nice_nano/Kconfig.board: -------------------------------------------------------------------------------- 1 | # nice!nano board configuration 2 | 3 | # Copyright (c) 2020 Pete Johanson 4 | # SPDX-License-Identifier: MIT 5 | 6 | config BOARD_NICE_NANO 7 | bool "nice!nano" 8 | depends on SOC_NRF52840_QIAA 9 | 10 | config BOARD_NICE_NANO_V2 11 | bool "nice!nano v2" 12 | depends on SOC_NRF52840_QIAA 13 | 14 | -------------------------------------------------------------------------------- /app/boards/arm/nrfmicro/Kconfig: -------------------------------------------------------------------------------- 1 | config BOARD_ENABLE_DCDC 2 | bool "Enable DCDC mode" 3 | select SOC_DCDC_NRF52X 4 | default y 5 | depends on (BOARD_NRFMICRO_11 || BOARD_NRFMICRO_11_FLIPPED || BOARD_NRFMICRO_13) 6 | 7 | config BOARD_NRFMICRO_CHARGER 8 | bool "Enable battery charger" 9 | default y 10 | depends on (BOARD_NRFMICRO_13) 11 | -------------------------------------------------------------------------------- /app/boards/arm/planck/planck_rev6.yaml: -------------------------------------------------------------------------------- 1 | identifier: planck_rev6 2 | name: PLANKREV6 3 | type: keyboard 4 | arch: arm 5 | toolchain: 6 | - zephyr 7 | - gnuarmemb 8 | - xtools 9 | ram: 40 10 | supported: 11 | - gpio 12 | - i2c 13 | - counter 14 | - spi 15 | - usb_device 16 | - lsm303dlhc 17 | - nvs 18 | - can 19 | - kscan 20 | -------------------------------------------------------------------------------- /app/boards/seeeduino_xiao_ble.conf: -------------------------------------------------------------------------------- 1 | 2 | CONFIG_CONSOLE=n 3 | CONFIG_SERIAL=n 4 | CONFIG_UART_CONSOLE=n 5 | CONFIG_UART_INTERRUPT_DRIVEN=n 6 | CONFIG_ZMK_USB=y 7 | CONFIG_ZMK_BLE=y 8 | 9 | 10 | CONFIG_MPU_ALLOW_FLASH_WRITE=y 11 | CONFIG_NVS=y 12 | CONFIG_SETTINGS_NVS=y 13 | CONFIG_FLASH=y 14 | CONFIG_FLASH_PAGE_LAYOUT=y 15 | CONFIG_FLASH_MAP=y -------------------------------------------------------------------------------- /app/boards/shields/kyria/kyria.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: kyria 3 | name: Kyria 4 | type: shield 5 | url: https://splitkb.com/products/kyria-pcb-kit 6 | requires: [pro_micro] 7 | exposes: [i2c_oled] 8 | features: 9 | - keys 10 | - display 11 | - encoder 12 | - underglow 13 | siblings: 14 | - kyria_left 15 | - kyria_right 16 | -------------------------------------------------------------------------------- /app/boards/shields/tg4x/README.md: -------------------------------------------------------------------------------- 1 | # TG4x 2 | 3 | Standard setup for the [TG4x](https://github.com/MythosMann/tg4x/) 40% keyboard. 4 | 5 | ## Board Revision and Layout Notes 6 | 7 | This TG4x implementation is for... 8 | 9 | * rev 2.1 of the board 10 | * Split spacebar with 2.25U on the left and 2.75U on the right 11 | * 2U right shift 12 | -------------------------------------------------------------------------------- /app/dts/behaviors/backlight.dtsi: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2021 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | / { 8 | behaviors { 9 | /omit-if-no-ref/ bl: behavior_backlight { 10 | compatible = "zmk,behavior-backlight"; 11 | label = "BCKLGHT"; 12 | #binding-cells = <2>; 13 | }; 14 | }; 15 | }; 16 | -------------------------------------------------------------------------------- /app/dts/behaviors/bluetooth.dtsi: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | / { 8 | behaviors { 9 | /omit-if-no-ref/ bt: behavior_bluetooth { 10 | compatible = "zmk,behavior-bluetooth"; 11 | label = "BLUETOOTH"; 12 | #binding-cells = <2>; 13 | }; 14 | }; 15 | }; 16 | -------------------------------------------------------------------------------- /app/dts/behaviors/rgb_underglow.dtsi: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | / { 8 | behaviors { 9 | rgb_ug: behavior_rgb_underglow { 10 | compatible = "zmk,behavior-rgb-underglow"; 11 | label = "RGB_UG"; 12 | #binding-cells = <2>; 13 | }; 14 | }; 15 | }; 16 | -------------------------------------------------------------------------------- /app/dts/behaviors/to_layer.dtsi: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | / { 8 | behaviors { 9 | /omit-if-no-ref/ to: behavior_to_layer { 10 | compatible = "zmk,behavior-to-layer"; 11 | label = "TO_LAYER"; 12 | #binding-cells = <1>; 13 | }; 14 | }; 15 | }; 16 | -------------------------------------------------------------------------------- /app/dts/bindings/behaviors/zmk,behavior-key-repeat.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | description: Key repeat behavior 5 | 6 | compatible: "zmk,behavior-key-repeat" 7 | 8 | include: zero_param.yaml 9 | 10 | properties: 11 | usage-pages: 12 | type: array 13 | required: true 14 | -------------------------------------------------------------------------------- /app/dts/bindings/zmk,keymap-sensors.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | description: | 5 | Allows defining the collection of sensors bound in the keymap layers 6 | 7 | compatible: "zmk,keymap-sensors" 8 | 9 | properties: 10 | sensors: 11 | type: phandles 12 | required: true 13 | -------------------------------------------------------------------------------- /app/tests/backlight/config-on/native_posix_64.conf: -------------------------------------------------------------------------------- 1 | CONFIG_GPIO=y 2 | CONFIG_GPIO_EMUL=y 3 | CONFIG_ZMK_BLE=n 4 | CONFIG_LOG=y 5 | CONFIG_LOG_BACKEND_SHOW_COLOR=n 6 | CONFIG_ZMK_LOG_LEVEL_DBG=y 7 | CONFIG_DEBUG=y 8 | CONFIG_SYS_CLOCK_TICKS_PER_SEC=1000 9 | 10 | CONFIG_LED_GPIO=y 11 | CONFIG_ZMK_BACKLIGHT=y 12 | CONFIG_ZMK_BACKLIGHT_ON_START=n 13 | -------------------------------------------------------------------------------- /app/boards/arm/dz60rgb/dz60rgb_rev1.yaml: -------------------------------------------------------------------------------- 1 | identifier: DZ60RGB_rev1 2 | name: DZ60RGBREV1 3 | type: keyboard 4 | arch: arm 5 | toolchain: 6 | - zephyr 7 | - gnuarmemb 8 | - xtools 9 | ram: 40 10 | supported: 11 | - gpio 12 | - i2c 13 | - counter 14 | - spi 15 | - usb_device 16 | - lsm303dlhc 17 | - nvs 18 | - can 19 | - kscan 20 | -------------------------------------------------------------------------------- /app/boards/arm/ferris/README.md: -------------------------------------------------------------------------------- 1 | # Building ZMK for the Ferris 0.2 2 | 3 | 4 | ## Standard Build 5 | 6 | ``` 7 | west build -p -d build/ferris --board ferris_rev02 8 | ``` 9 | 10 | ## Flashing 11 | 12 | `west` can be used to flash the board directly. Press the reset button once, and run: 13 | 14 | ``` 15 | west flash -d build/ferris 16 | ``` 17 | -------------------------------------------------------------------------------- /app/boards/shields/lotus58/lotus58.conf: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2022 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | # Uncomment the following line to enable the Lotus58 OLED Display 5 | # CONFIG_ZMK_DISPLAY=y 6 | 7 | # Uncomment these two lines to add support for encoders 8 | # CONFIG_EC11=y 9 | # CONFIG_EC11_TRIGGER_GLOBAL_THREAD=y 10 | -------------------------------------------------------------------------------- /app/boards/shields/tidbit/tidbit.conf: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | # Enable Encoders 5 | CONFIG_EC11=y 6 | CONFIG_EC11_TRIGGER_GLOBAL_THREAD=y 7 | 8 | # Enable underglow 9 | #CONFIG_ZMK_RGB_UNDERGLOW=y 10 | # Use the STRIP config specific to the LEDs you're using 11 | #CONFIG_WS2812_STRIP=y 12 | -------------------------------------------------------------------------------- /app/boards/shields/zodiark/zodiark.conf: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | # Uncomment the following line to enable the Zodiark OLED Display 5 | # CONFIG_ZMK_DISPLAY=y 6 | 7 | # Uncomment these two lines to add support for encoders 8 | # CONFIG_EC11=y 9 | # CONFIG_EC11_TRIGGER_GLOBAL_THREAD=y 10 | -------------------------------------------------------------------------------- /app/boards/shields/zodiark/zodiark.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: zodiark 3 | name: Zodiark 4 | type: shield 5 | url: https://www.splitlogic.xyz/buildguides/zodiark-build-guide 6 | requires: [pro_micro] 7 | exposes: [i2c_oled] 8 | features: 9 | - keys 10 | - display 11 | - encoder 12 | siblings: 13 | - zodiark_left 14 | - zodiark_right 15 | -------------------------------------------------------------------------------- /app/dts/behaviors/key_toggle.dtsi: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | / { 8 | behaviors { 9 | /omit-if-no-ref/ kt: behavior_key_toggle { 10 | compatible = "zmk,behavior-key-toggle"; 11 | label = "KEY_TOGGLE"; 12 | #binding-cells = <1>; 13 | }; 14 | }; 15 | }; 16 | -------------------------------------------------------------------------------- /app/dts/behaviors/transparent.dtsi: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | / { 8 | behaviors { 9 | /omit-if-no-ref/ trans: behavior_transparent { 10 | compatible = "zmk,behavior-transparent"; 11 | label = "TRANS"; 12 | #binding-cells = <0>; 13 | }; 14 | }; 15 | }; 16 | -------------------------------------------------------------------------------- /app/tests/backlight/config-brt/native_posix_64.conf: -------------------------------------------------------------------------------- 1 | CONFIG_GPIO=y 2 | CONFIG_GPIO_EMUL=y 3 | CONFIG_ZMK_BLE=n 4 | CONFIG_LOG=y 5 | CONFIG_LOG_BACKEND_SHOW_COLOR=n 6 | CONFIG_ZMK_LOG_LEVEL_DBG=y 7 | CONFIG_DEBUG=y 8 | CONFIG_SYS_CLOCK_TICKS_PER_SEC=1000 9 | 10 | CONFIG_LED_GPIO=y 11 | CONFIG_ZMK_BACKLIGHT=y 12 | CONFIG_ZMK_BACKLIGHT_BRT_START=60 13 | -------------------------------------------------------------------------------- /app/boards/shields/elephant42/elephant42.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: elephant42 3 | name: Elephant42 4 | type: shield 5 | url: https://github.com/illness072/elephant42 6 | requires: [pro_micro] 7 | exposes: [i2c_oled] 8 | features: 9 | - keys 10 | - display 11 | - underglow 12 | siblings: 13 | - elephant42_left 14 | - elephant42_right 15 | -------------------------------------------------------------------------------- /app/drivers/gpio/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2020 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | zephyr_library_named(zmk__drivers__gpio) 5 | zephyr_library_include_directories(${CMAKE_SOURCE_DIR}/include) 6 | 7 | zephyr_library_sources_ifdef(CONFIG_GPIO_595 gpio_595.c) 8 | zephyr_library_sources_ifdef(CONFIG_GPIO_MCP23017 gpio_mcp23017.c) 9 | -------------------------------------------------------------------------------- /app/include/zmk/ble/profile.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | #pragma once 8 | 9 | #include 10 | 11 | #define ZMK_BLE_PROFILE_NAME_MAX 15 12 | 13 | struct zmk_ble_profile { 14 | char name[ZMK_BLE_PROFILE_NAME_MAX]; 15 | bt_addr_le_t peer; 16 | }; 17 | -------------------------------------------------------------------------------- /app/tests/momentary-layer/4-nested/keycode_events.snapshot: -------------------------------------------------------------------------------- 1 | mo_pressed: position 1 layer 1 2 | mo_pressed: position 0 layer 2 3 | kp_pressed: usage_page 0x07 keycode 0x05 implicit_mods 0x00 explicit_mods 0x00 4 | kp_released: usage_page 0x07 keycode 0x05 implicit_mods 0x00 explicit_mods 0x00 5 | mo_released: position 0 layer 2 6 | mo_released: position 1 layer 1 7 | --------------------------------------------------------------------------------