From 2da1f0c49cef9e850602150a038d93501bbcde99 Mon Sep 17 00:00:00 2001 From: Bartosz Nowak <9051964+DuMaM@users.noreply.github.com> Date: Fri, 22 Aug 2025 00:17:56 +0200 Subject: [PATCH 01/17] feat: add support for zmk studio --- app/boards/shields/ergodash/Kconfig.shield | 2 + app/boards/shields/ergodash/build.yaml | 22 + .../shields/ergodash/ergodash-layouts.dtsi | 419 ++++++++++++++++++ app/boards/shields/ergodash/ergodash.conf | 5 + app/boards/shields/ergodash/ergodash.dtsi | 52 ++- app/boards/shields/ergodash/ergodash.keymap | 16 +- .../shields/ergodash/ergodash.studio.json | 12 + app/boards/shields/ergodash/ergodash.zmk.yml | 7 + .../shields/ergodash/ergodash_left.conf | 25 ++ .../shields/ergodash/ergodash_left.overlay | 3 +- .../shields/ergodash/ergodash_right.conf | 26 ++ .../shields/ergodash/ergodash_right.overlay | 2 + 12 files changed, 575 insertions(+), 16 deletions(-) create mode 100644 app/boards/shields/ergodash/build.yaml create mode 100644 app/boards/shields/ergodash/ergodash-layouts.dtsi create mode 100644 app/boards/shields/ergodash/ergodash.studio.json create mode 100644 app/boards/shields/ergodash/ergodash_left.conf create mode 100644 app/boards/shields/ergodash/ergodash_right.conf diff --git a/app/boards/shields/ergodash/Kconfig.shield b/app/boards/shields/ergodash/Kconfig.shield index 5814e21ef..f6dbd51c9 100644 --- a/app/boards/shields/ergodash/Kconfig.shield +++ b/app/boards/shields/ergodash/Kconfig.shield @@ -3,6 +3,8 @@ config SHIELD_ERGODASH_LEFT def_bool $(shields_list_contains,ergodash_left) + select ZMK_STUDIO + select ZMK_STUDIO_TRANSPORT_BLE config SHIELD_ERGODASH_RIGHT def_bool $(shields_list_contains,ergodash_right) diff --git a/app/boards/shields/ergodash/build.yaml b/app/boards/shields/ergodash/build.yaml new file mode 100644 index 000000000..eb81bb2cc --- /dev/null +++ b/app/boards/shields/ergodash/build.yaml @@ -0,0 +1,22 @@ +# +# Copyright (c) 2020 The ZMK Contributors +# +# SPDX-License-Identifier: MIT +# + +# ZMK Studio support build configuration for Ergodash shield +# See: https://zmk.dev/docs/features/studio#adding-zmk-studio-support-to-a-keyboard + +# Example for left (central) side with Studio support +default: + board: nice_nano_v2 + shield: ergodash_left + snippets: + - studio-rpc-usb-uart + cmake-args: + - -DCONFIG_ZMK_STUDIO=y + +# Example for right side (no Studio needed) +right: + board: nice_nano_v2 + shield: ergodash_right diff --git a/app/boards/shields/ergodash/ergodash-layouts.dtsi b/app/boards/shields/ergodash/ergodash-layouts.dtsi new file mode 100644 index 000000000..c15f1d278 --- /dev/null +++ b/app/boards/shields/ergodash/ergodash-layouts.dtsi @@ -0,0 +1,419 @@ +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT + */ + +#include + +/ { + + chosen { + zmk,physical-layout = &ergodash_physical_layout_4key; + }; + + ergodash_physical_layout_4key: ergodash_physical_layout_4key { + compatible = "zmk,physical-layout"; + display-name = "LAYOUT_4key"; + + kscan = <&kscan0>; + transform = <&default_transform>; + + keys // w h x y rot rx ry + = <&key_physical_attrs 100 100 0 38 0 0 0> + , <&key_physical_attrs 100 100 100 38 0 0 0> + , <&key_physical_attrs 100 100 200 12 0 0 0> + , <&key_physical_attrs 100 100 300 0 0 0 0> + , <&key_physical_attrs 100 100 400 12 0 0 0> + , <&key_physical_attrs 100 100 500 25 0 0 0> + , <&key_physical_attrs 100 100 600 75 0 0 0> + , <&key_physical_attrs 100 100 1150 75 0 0 0> + , <&key_physical_attrs 100 100 1250 25 0 0 0> + , <&key_physical_attrs 100 100 1350 12 0 0 0> + , <&key_physical_attrs 100 100 1450 0 0 0 0> + , <&key_physical_attrs 100 100 1550 12 0 0 0> + , <&key_physical_attrs 100 100 1650 38 0 0 0> + , <&key_physical_attrs 100 100 1750 38 0 0 0> + , <&key_physical_attrs 100 100 0 138 0 0 0> + , <&key_physical_attrs 100 100 100 138 0 0 0> + , <&key_physical_attrs 100 100 200 112 0 0 0> + , <&key_physical_attrs 100 100 300 100 0 0 0> + , <&key_physical_attrs 100 100 400 112 0 0 0> + , <&key_physical_attrs 100 100 500 125 0 0 0> + , <&key_physical_attrs 100 100 600 175 0 0 0> + , <&key_physical_attrs 100 100 1150 175 0 0 0> + , <&key_physical_attrs 100 100 1250 125 0 0 0> + , <&key_physical_attrs 100 100 1350 112 0 0 0> + , <&key_physical_attrs 100 100 1450 100 0 0 0> + , <&key_physical_attrs 100 100 1550 112 0 0 0> + , <&key_physical_attrs 100 100 1650 138 0 0 0> + , <&key_physical_attrs 100 100 1750 138 0 0 0> + , <&key_physical_attrs 100 100 0 238 0 0 0> + , <&key_physical_attrs 100 100 100 238 0 0 0> + , <&key_physical_attrs 100 100 200 212 0 0 0> + , <&key_physical_attrs 100 100 300 200 0 0 0> + , <&key_physical_attrs 100 100 400 212 0 0 0> + , <&key_physical_attrs 100 100 500 225 0 0 0> + , <&key_physical_attrs 100 100 600 275 0 0 0> + , <&key_physical_attrs 100 100 1150 275 0 0 0> + , <&key_physical_attrs 100 100 1250 225 0 0 0> + , <&key_physical_attrs 100 100 1350 212 0 0 0> + , <&key_physical_attrs 100 100 1450 200 0 0 0> + , <&key_physical_attrs 100 100 1550 212 0 0 0> + , <&key_physical_attrs 100 100 1650 238 0 0 0> + , <&key_physical_attrs 100 100 1750 238 0 0 0> + , <&key_physical_attrs 100 100 0 338 0 0 0> + , <&key_physical_attrs 100 100 100 338 0 0 0> + , <&key_physical_attrs 100 100 200 312 0 0 0> + , <&key_physical_attrs 100 100 300 300 0 0 0> + , <&key_physical_attrs 100 100 400 312 0 0 0> + , <&key_physical_attrs 100 100 500 325 0 0 0> + , <&key_physical_attrs 100 100 600 400 0 0 0> + , <&key_physical_attrs 100 100 1150 400 0 0 0> + , <&key_physical_attrs 100 100 1250 325 0 0 0> + , <&key_physical_attrs 100 100 1350 312 0 0 0> + , <&key_physical_attrs 100 100 1450 300 0 0 0> + , <&key_physical_attrs 100 100 1550 312 0 0 0> + , <&key_physical_attrs 100 100 1650 338 0 0 0> + , <&key_physical_attrs 100 100 1750 338 0 0 0> + , <&key_physical_attrs 100 100 0 438 0 0 0> + , <&key_physical_attrs 100 100 100 438 0 0 0> + , <&key_physical_attrs 100 100 200 412 0 0 0> + , <&key_physical_attrs 100 100 300 400 0 0 0> + , <&key_physical_attrs 100 100 500 500 0 0 0> + , <&key_physical_attrs 100 100 600 500 0 0 0> + , <&key_physical_attrs 100 200 700 400 0 0 0> + , <&key_physical_attrs 100 200 1050 400 0 0 0> + , <&key_physical_attrs 100 100 1150 500 0 0 0> + , <&key_physical_attrs 100 100 1250 500 0 0 0> + , <&key_physical_attrs 100 100 1450 400 0 0 0> + , <&key_physical_attrs 100 100 1550 412 0 0 0> + , <&key_physical_attrs 100 100 1650 438 0 0 0> + , <&key_physical_attrs 100 100 1750 438 0 0 0> + ; + }; + + ergodash_physical_layout_4key_2u_inner: ergodash_physical_layout_4key_2u_inner { + compatible = "zmk,physical-layout"; + display-name = "LAYOUT_4key_2u_inner"; + + kscan = <&kscan0>; + transform = <&default_transform>; + + keys // w h x y rot rx ry + = <&key_physical_attrs 100 100 0 38 0 0 0> + , <&key_physical_attrs 100 100 100 38 0 0 0> + , <&key_physical_attrs 100 100 200 12 0 0 0> + , <&key_physical_attrs 100 100 300 0 0 0 0> + , <&key_physical_attrs 100 100 400 12 0 0 0> + , <&key_physical_attrs 100 100 500 25 0 0 0> + , <&key_physical_attrs 100 100 600 75 0 0 0> + , <&key_physical_attrs 100 100 1150 75 0 0 0> + , <&key_physical_attrs 100 100 1250 25 0 0 0> + , <&key_physical_attrs 100 100 1350 12 0 0 0> + , <&key_physical_attrs 100 100 1450 0 0 0 0> + , <&key_physical_attrs 100 100 1550 12 0 0 0> + , <&key_physical_attrs 100 100 1650 38 0 0 0> + , <&key_physical_attrs 100 100 1750 38 0 0 0> + , <&key_physical_attrs 100 100 0 138 0 0 0> + , <&key_physical_attrs 100 100 100 138 0 0 0> + , <&key_physical_attrs 100 100 200 112 0 0 0> + , <&key_physical_attrs 100 100 300 100 0 0 0> + , <&key_physical_attrs 100 100 400 112 0 0 0> + , <&key_physical_attrs 100 100 500 125 0 0 0> + , <&key_physical_attrs 100 100 600 175 0 0 0> + , <&key_physical_attrs 100 100 1150 175 0 0 0> + , <&key_physical_attrs 100 100 1250 125 0 0 0> + , <&key_physical_attrs 100 100 1350 112 0 0 0> + , <&key_physical_attrs 100 100 1450 100 0 0 0> + , <&key_physical_attrs 100 100 1550 112 0 0 0> + , <&key_physical_attrs 100 100 1650 138 0 0 0> + , <&key_physical_attrs 100 100 1750 138 0 0 0> + , <&key_physical_attrs 100 100 0 238 0 0 0> + , <&key_physical_attrs 100 100 100 238 0 0 0> + , <&key_physical_attrs 100 100 200 212 0 0 0> + , <&key_physical_attrs 100 100 300 200 0 0 0> + , <&key_physical_attrs 100 100 400 212 0 0 0> + , <&key_physical_attrs 100 100 500 225 0 0 0> + , <&key_physical_attrs 100 100 600 275 0 0 0> + , <&key_physical_attrs 100 100 1150 275 0 0 0> + , <&key_physical_attrs 100 100 1250 225 0 0 0> + , <&key_physical_attrs 100 100 1350 212 0 0 0> + , <&key_physical_attrs 100 100 1450 200 0 0 0> + , <&key_physical_attrs 100 100 1550 212 0 0 0> + , <&key_physical_attrs 100 100 1650 238 0 0 0> + , <&key_physical_attrs 100 100 1750 238 0 0 0> + , <&key_physical_attrs 100 100 0 338 0 0 0> + , <&key_physical_attrs 100 100 100 338 0 0 0> + , <&key_physical_attrs 100 100 200 312 0 0 0> + , <&key_physical_attrs 100 100 300 300 0 0 0> + , <&key_physical_attrs 100 100 400 312 0 0 0> + , <&key_physical_attrs 100 100 500 325 0 0 0> + , <&key_physical_attrs 100 100 700 400 0 0 0> + , <&key_physical_attrs 100 100 1050 400 0 0 0> + , <&key_physical_attrs 100 100 1250 325 0 0 0> + , <&key_physical_attrs 100 100 1350 312 0 0 0> + , <&key_physical_attrs 100 100 1450 300 0 0 0> + , <&key_physical_attrs 100 100 1550 312 0 0 0> + , <&key_physical_attrs 100 100 1650 338 0 0 0> + , <&key_physical_attrs 100 100 1750 338 0 0 0> + , <&key_physical_attrs 100 100 0 438 0 0 0> + , <&key_physical_attrs 100 100 100 438 0 0 0> + , <&key_physical_attrs 100 100 200 412 0 0 0> + , <&key_physical_attrs 100 100 300 400 0 0 0> + , <&key_physical_attrs 100 100 500 500 0 0 0> + , <&key_physical_attrs 100 200 600 400 0 0 0> + , <&key_physical_attrs 100 100 700 500 0 0 0> + , <&key_physical_attrs 100 100 1050 500 0 0 0> + , <&key_physical_attrs 100 200 1150 400 0 0 0> + , <&key_physical_attrs 100 100 1250 500 0 0 0> + , <&key_physical_attrs 100 100 1450 400 0 0 0> + , <&key_physical_attrs 100 100 1550 412 0 0 0> + , <&key_physical_attrs 100 100 1650 438 0 0 0> + , <&key_physical_attrs 100 100 1750 438 0 0 0> + ; + }; + + ergodash_physical_layout_3key_2us: ergodash_physical_layout_3key_2us { + compatible = "zmk,physical-layout"; + display-name = "LAYOUT_3key_2us"; + + kscan = <&kscan0>; + transform = <&default_transform_3key>; + + keys // w h x y rot rx ry + = <&key_physical_attrs 100 100 0 38 0 0 0> + , <&key_physical_attrs 100 100 100 38 0 0 0> + , <&key_physical_attrs 100 100 200 12 0 0 0> + , <&key_physical_attrs 100 100 300 0 0 0 0> + , <&key_physical_attrs 100 100 400 12 0 0 0> + , <&key_physical_attrs 100 100 500 25 0 0 0> + , <&key_physical_attrs 100 100 600 75 0 0 0> + , <&key_physical_attrs 100 100 1150 75 0 0 0> + , <&key_physical_attrs 100 100 1250 25 0 0 0> + , <&key_physical_attrs 100 100 1350 12 0 0 0> + , <&key_physical_attrs 100 100 1450 0 0 0 0> + , <&key_physical_attrs 100 100 1550 12 0 0 0> + , <&key_physical_attrs 100 100 1650 38 0 0 0> + , <&key_physical_attrs 100 100 1750 38 0 0 0> + , <&key_physical_attrs 100 100 0 138 0 0 0> + , <&key_physical_attrs 100 100 100 138 0 0 0> + , <&key_physical_attrs 100 100 200 112 0 0 0> + , <&key_physical_attrs 100 100 300 100 0 0 0> + , <&key_physical_attrs 100 100 400 112 0 0 0> + , <&key_physical_attrs 100 100 500 125 0 0 0> + , <&key_physical_attrs 100 100 600 175 0 0 0> + , <&key_physical_attrs 100 100 1150 175 0 0 0> + , <&key_physical_attrs 100 100 1250 125 0 0 0> + , <&key_physical_attrs 100 100 1350 112 0 0 0> + , <&key_physical_attrs 100 100 1450 100 0 0 0> + , <&key_physical_attrs 100 100 1550 112 0 0 0> + , <&key_physical_attrs 100 100 1650 138 0 0 0> + , <&key_physical_attrs 100 100 1750 138 0 0 0> + , <&key_physical_attrs 100 100 0 238 0 0 0> + , <&key_physical_attrs 100 100 100 238 0 0 0> + , <&key_physical_attrs 100 100 200 212 0 0 0> + , <&key_physical_attrs 100 100 300 200 0 0 0> + , <&key_physical_attrs 100 100 400 212 0 0 0> + , <&key_physical_attrs 100 100 500 225 0 0 0> + , <&key_physical_attrs 100 100 600 275 0 0 0> + , <&key_physical_attrs 100 100 1150 275 0 0 0> + , <&key_physical_attrs 100 100 1250 225 0 0 0> + , <&key_physical_attrs 100 100 1350 212 0 0 0> + , <&key_physical_attrs 100 100 1450 200 0 0 0> + , <&key_physical_attrs 100 100 1550 212 0 0 0> + , <&key_physical_attrs 100 100 1650 238 0 0 0> + , <&key_physical_attrs 100 100 1750 238 0 0 0> + , <&key_physical_attrs 100 100 0 338 0 0 0> + , <&key_physical_attrs 100 100 100 338 0 0 0> + , <&key_physical_attrs 100 100 200 312 0 0 0> + , <&key_physical_attrs 100 100 300 300 0 0 0> + , <&key_physical_attrs 100 100 400 312 0 0 0> + , <&key_physical_attrs 100 100 500 325 0 0 0> + , <&key_physical_attrs 100 100 1250 325 0 0 0> + , <&key_physical_attrs 100 100 1350 312 0 0 0> + , <&key_physical_attrs 100 100 1450 300 0 0 0> + , <&key_physical_attrs 100 100 1550 312 0 0 0> + , <&key_physical_attrs 100 100 1650 338 0 0 0> + , <&key_physical_attrs 100 100 1750 338 0 0 0> + , <&key_physical_attrs 100 100 0 438 0 0 0> + , <&key_physical_attrs 100 100 100 438 0 0 0> + , <&key_physical_attrs 100 100 200 412 0 0 0> + , <&key_physical_attrs 100 100 300 400 0 0 0> + , <&key_physical_attrs 100 100 500 500 0 0 0> + , <&key_physical_attrs 100 200 600 400 0 0 0> + , <&key_physical_attrs 100 200 700 400 0 0 0> + , <&key_physical_attrs 100 200 1050 400 0 0 0> + , <&key_physical_attrs 100 200 1150 400 0 0 0> + , <&key_physical_attrs 100 100 1250 500 0 0 0> + , <&key_physical_attrs 100 100 1450 400 0 0 0> + , <&key_physical_attrs 100 100 1550 412 0 0 0> + , <&key_physical_attrs 100 100 1650 438 0 0 0> + , <&key_physical_attrs 100 100 1750 438 0 0 0> + ; + }; + + ergodash_physical_layout_3key_1us: ergodash_physical_layout_3key_1us { + compatible = "zmk,physical-layout"; + display-name = "LAYOUT_3key_1us"; + + kscan = <&kscan0>; + transform = <&default_transform_3key>; + + keys // w h x y rot rx ry + = <&key_physical_attrs 100 100 0 38 0 0 0> + , <&key_physical_attrs 100 100 100 38 0 0 0> + , <&key_physical_attrs 100 100 200 12 0 0 0> + , <&key_physical_attrs 100 100 300 0 0 0 0> + , <&key_physical_attrs 100 100 400 12 0 0 0> + , <&key_physical_attrs 100 100 500 25 0 0 0> + , <&key_physical_attrs 100 100 600 75 0 0 0> + , <&key_physical_attrs 100 100 1150 75 0 0 0> + , <&key_physical_attrs 100 100 1250 25 0 0 0> + , <&key_physical_attrs 100 100 1350 12 0 0 0> + , <&key_physical_attrs 100 100 1450 0 0 0 0> + , <&key_physical_attrs 100 100 1550 12 0 0 0> + , <&key_physical_attrs 100 100 1650 38 0 0 0> + , <&key_physical_attrs 100 100 1750 38 0 0 0> + , <&key_physical_attrs 100 100 0 138 0 0 0> + , <&key_physical_attrs 100 100 100 138 0 0 0> + , <&key_physical_attrs 100 100 200 112 0 0 0> + , <&key_physical_attrs 100 100 300 100 0 0 0> + , <&key_physical_attrs 100 100 400 112 0 0 0> + , <&key_physical_attrs 100 100 500 125 0 0 0> + , <&key_physical_attrs 100 100 600 175 0 0 0> + , <&key_physical_attrs 100 100 1150 175 0 0 0> + , <&key_physical_attrs 100 100 1250 125 0 0 0> + , <&key_physical_attrs 100 100 1350 112 0 0 0> + , <&key_physical_attrs 100 100 1450 100 0 0 0> + , <&key_physical_attrs 100 100 1550 112 0 0 0> + , <&key_physical_attrs 100 100 1650 138 0 0 0> + , <&key_physical_attrs 100 100 1750 138 0 0 0> + , <&key_physical_attrs 100 100 0 238 0 0 0> + , <&key_physical_attrs 100 100 100 238 0 0 0> + , <&key_physical_attrs 100 100 200 212 0 0 0> + , <&key_physical_attrs 100 100 300 200 0 0 0> + , <&key_physical_attrs 100 100 400 212 0 0 0> + , <&key_physical_attrs 100 100 500 225 0 0 0> + , <&key_physical_attrs 100 100 600 275 0 0 0> + , <&key_physical_attrs 100 100 1150 275 0 0 0> + , <&key_physical_attrs 100 100 1250 225 0 0 0> + , <&key_physical_attrs 100 100 1350 212 0 0 0> + , <&key_physical_attrs 100 100 1450 200 0 0 0> + , <&key_physical_attrs 100 100 1550 212 0 0 0> + , <&key_physical_attrs 100 100 1650 238 0 0 0> + , <&key_physical_attrs 100 100 1750 238 0 0 0> + , <&key_physical_attrs 100 100 0 338 0 0 0> + , <&key_physical_attrs 100 100 100 338 0 0 0> + , <&key_physical_attrs 100 100 200 312 0 0 0> + , <&key_physical_attrs 100 100 300 300 0 0 0> + , <&key_physical_attrs 100 100 400 312 0 0 0> + , <&key_physical_attrs 100 100 500 325 0 0 0> + , <&key_physical_attrs 100 100 600 400 0 0 0> + , <&key_physical_attrs 100 100 1150 400 0 0 0> + , <&key_physical_attrs 100 100 1250 325 0 0 0> + , <&key_physical_attrs 100 100 1350 312 0 0 0> + , <&key_physical_attrs 100 100 1450 300 0 0 0> + , <&key_physical_attrs 100 100 1550 312 0 0 0> + , <&key_physical_attrs 100 100 1650 338 0 0 0> + , <&key_physical_attrs 100 100 1750 338 0 0 0> + , <&key_physical_attrs 100 100 0 438 0 0 0> + , <&key_physical_attrs 100 100 100 438 0 0 0> + , <&key_physical_attrs 100 100 200 412 0 0 0> + , <&key_physical_attrs 100 100 300 400 0 0 0> + , <&key_physical_attrs 100 100 500 500 0 0 0> + , <&key_physical_attrs 100 100 600 500 0 0 0> + , <&key_physical_attrs 100 100 1150 500 0 0 0> + , <&key_physical_attrs 100 100 1250 500 0 0 0> + , <&key_physical_attrs 100 100 1450 400 0 0 0> + , <&key_physical_attrs 100 100 1550 412 0 0 0> + , <&key_physical_attrs 100 100 1650 438 0 0 0> + , <&key_physical_attrs 100 100 1750 438 0 0 0> + ; + }; + + ergodash_physical_layout_2key: ergodash_physical_layout_2key { + compatible = "zmk,physical-layout"; + display-name = "LAYOUT_2key"; + + kscan = <&kscan0>; + transform = <&default_transform_2key>; + + keys // w h x y rot rx ry + = <&key_physical_attrs 100 100 0 38 0 0 0> + , <&key_physical_attrs 100 100 100 38 0 0 0> + , <&key_physical_attrs 100 100 200 12 0 0 0> + , <&key_physical_attrs 100 100 300 0 0 0 0> + , <&key_physical_attrs 100 100 400 12 0 0 0> + , <&key_physical_attrs 100 100 500 25 0 0 0> + , <&key_physical_attrs 100 100 600 75 0 0 0> + , <&key_physical_attrs 100 100 1150 75 0 0 0> + , <&key_physical_attrs 100 100 1250 25 0 0 0> + , <&key_physical_attrs 100 100 1350 12 0 0 0> + , <&key_physical_attrs 100 100 1450 0 0 0 0> + , <&key_physical_attrs 100 100 1550 12 0 0 0> + , <&key_physical_attrs 100 100 1650 38 0 0 0> + , <&key_physical_attrs 100 100 1750 38 0 0 0> + , <&key_physical_attrs 100 100 0 138 0 0 0> + , <&key_physical_attrs 100 100 100 138 0 0 0> + , <&key_physical_attrs 100 100 200 112 0 0 0> + , <&key_physical_attrs 100 100 300 100 0 0 0> + , <&key_physical_attrs 100 100 400 112 0 0 0> + , <&key_physical_attrs 100 100 500 125 0 0 0> + , <&key_physical_attrs 100 100 600 175 0 0 0> + , <&key_physical_attrs 100 100 1150 175 0 0 0> + , <&key_physical_attrs 100 100 1250 125 0 0 0> + , <&key_physical_attrs 100 100 1350 112 0 0 0> + , <&key_physical_attrs 100 100 1450 100 0 0 0> + , <&key_physical_attrs 100 100 1550 112 0 0 0> + , <&key_physical_attrs 100 100 1650 138 0 0 0> + , <&key_physical_attrs 100 100 1750 138 0 0 0> + , <&key_physical_attrs 100 100 0 238 0 0 0> + , <&key_physical_attrs 100 100 100 238 0 0 0> + , <&key_physical_attrs 100 100 200 212 0 0 0> + , <&key_physical_attrs 100 100 300 200 0 0 0> + , <&key_physical_attrs 100 100 400 212 0 0 0> + , <&key_physical_attrs 100 100 500 225 0 0 0> + , <&key_physical_attrs 100 100 600 275 0 0 0> + , <&key_physical_attrs 100 100 1150 275 0 0 0> + , <&key_physical_attrs 100 100 1250 225 0 0 0> + , <&key_physical_attrs 100 100 1350 212 0 0 0> + , <&key_physical_attrs 100 100 1450 200 0 0 0> + , <&key_physical_attrs 100 100 1550 212 0 0 0> + , <&key_physical_attrs 100 100 1650 238 0 0 0> + , <&key_physical_attrs 100 100 1750 238 0 0 0> + , <&key_physical_attrs 100 100 0 338 0 0 0> + , <&key_physical_attrs 100 100 100 338 0 0 0> + , <&key_physical_attrs 100 100 200 312 0 0 0> + , <&key_physical_attrs 100 100 300 300 0 0 0> + , <&key_physical_attrs 100 100 400 312 0 0 0> + , <&key_physical_attrs 100 100 500 325 0 0 0> + , <&key_physical_attrs 100 100 1250 325 0 0 0> + , <&key_physical_attrs 100 100 1350 312 0 0 0> + , <&key_physical_attrs 100 100 1450 300 0 0 0> + , <&key_physical_attrs 100 100 1550 312 0 0 0> + , <&key_physical_attrs 100 100 1650 338 0 0 0> + , <&key_physical_attrs 100 100 1750 338 0 0 0> + , <&key_physical_attrs 100 100 0 438 0 0 0> + , <&key_physical_attrs 100 100 100 438 0 0 0> + , <&key_physical_attrs 100 100 200 412 0 0 0> + , <&key_physical_attrs 100 100 300 400 0 0 0> + , <&key_physical_attrs 100 100 500 500 0 0 0> + , <&key_physical_attrs 100 200 600 400 0 0 0> + , <&key_physical_attrs 100 200 1150 400 0 0 0> + , <&key_physical_attrs 100 100 1250 500 0 0 0> + , <&key_physical_attrs 100 100 1450 400 0 0 0> + , <&key_physical_attrs 100 100 1550 412 0 0 0> + , <&key_physical_attrs 100 100 1650 438 0 0 0> + , <&key_physical_attrs 100 100 1750 438 0 0 0> + ; + }; +}; + + + + + + + + diff --git a/app/boards/shields/ergodash/ergodash.conf b/app/boards/shields/ergodash/ergodash.conf index e69de29bb..25b16f6de 100644 --- a/app/boards/shields/ergodash/ergodash.conf +++ b/app/boards/shields/ergodash/ergodash.conf @@ -0,0 +1,5 @@ +# +# Copyright (c) 2020 The ZMK Contributors +# +# SPDX-License-Identifier: MIT +# \ No newline at end of file diff --git a/app/boards/shields/ergodash/ergodash.dtsi b/app/boards/shields/ergodash/ergodash.dtsi index b6ef7fc41..570f941a0 100644 --- a/app/boards/shields/ergodash/ergodash.dtsi +++ b/app/boards/shields/ergodash/ergodash.dtsi @@ -9,7 +9,6 @@ / { chosen { zmk,kscan = &kscan0; - zmk,matrix-transform = &default_transform; }; default_transform: keymap_transform_0 { @@ -18,18 +17,57 @@ rows = <5>; // Numbering based on rev 1.2 schema // * keys that can be in different positions are denoted as MW -// * MW40 can be broken off // | SW1 | SW5 | SW9 | SW13 | SW17 | SW21 | SW25 | | | | SW25 | SW21 | SW17 | SW13 | SW9 | SW5 | SW1 | // | SW2 | SW6 | SW10 | SW14 | SW18 | SW22 | SW26 | | | | SW26 | SW22 | SW18 | SW14 | SW10 | SW6 | SW2 | // | SW3 | SW7 | SW11 | SW15 | SW19 | SW23 | SW27 | | | | SW27 | SW23 | SW19 | SW15 | SW11 | SW7 | SW3 | // | SW4 | SW8 | SW12 | SW16 | SW20 | SW24 | | MW28 | | MW28 | | SW24 | SW20 | SW16 | SW12 | SW8 | SW4 | // | SW30 | SW31 | SW32 | MW33 | SW34 | | MW35 | MW40 | | MW40 | MW35 | | SW34 | MW33 | SW32 | SW31 | SW30 | map = < -RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,6) RC(0,13) RC(0,12) RC(0,11) RC(0,10) RC(0,9) RC(0,8) RC(0,7) -RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,6) RC(1,13) RC(1,12) RC(1,11) RC(1,10) RC(1,9) RC(1,8) RC(1,7) -RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,6) RC(2,13) RC(2,12) RC(2,11) RC(2,10) RC(2,9) RC(2,8) RC(2,7) -RC(3,0) RC(3,1) RC(3,2) RC(3,3) RC(3,4) RC(3,5) RC(3,6) RC(3,13) RC(3,12) RC(3,11) RC(3,10) RC(3,9) RC(3,8) RC(3,7) -RC(4,0) RC(4,1) RC(4,2) RC(4,3) RC(4,4) RC(4,5) RC(4,6) RC(4,13) RC(4,12) RC(4,11) RC(4,10) RC(4,9) RC(4,8) RC(4,7) +RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,6) RC(0,13) RC(0,12) RC(0,11) RC(0,10) RC(0,9) RC(0,8) RC(0,7) +RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,6) RC(1,13) RC(1,12) RC(1,11) RC(1,10) RC(1,9) RC(1,8) RC(1,7) +RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,6) RC(2,13) RC(2,12) RC(2,11) RC(2,10) RC(2,9) RC(2,8) RC(2,7) +RC(3,0) RC(3,1) RC(3,2) RC(3,3) RC(3,4) RC(3,5) RC(3,6) RC(3,13) RC(3,12) RC(3,11) RC(3,10) RC(3,9) RC(3,8) RC(3,7) +RC(4,0) RC(4,1) RC(4,2) RC(4,3) RC(4,4) RC(4,5) RC(4,6) RC(4,13) RC(4,12) RC(4,11) RC(4,10) RC(4,9) RC(4,8) RC(4,7) + >; + }; + + default_transform_3key: keymap_transform_3key { + compatible = "zmk,matrix-transform"; + columns = <14>; + rows = <5>; +// Numbering based on rev 1.2 schema +// * keys that can be in different positions are denoted as MW +// | SW1 | SW5 | SW9 | SW13 | SW17 | SW21 | SW25 | | | | SW25 | SW21 | SW17 | SW13 | SW9 | SW5 | SW1 | +// | SW2 | SW6 | SW10 | SW14 | SW18 | SW22 | SW26 | | | | SW26 | SW22 | SW18 | SW14 | SW10 | SW6 | SW2 | +// | SW3 | SW7 | SW11 | SW15 | SW19 | SW23 | SW27 | | | | SW27 | SW23 | SW19 | SW15 | SW11 | SW7 | SW3 | +// | SW4 | SW8 | SW12 | SW16 | SW20 | SW24 | | MW28 | | MW28 | | SW24 | SW20 | SW16 | SW12 | SW8 | SW4 | +// | SW30 | SW31 | SW32 | MW33 | SW34 | | MW35 | | | | MW35 | | SW34 | MW33 | SW32 | SW31 | SW30 | + map = < +RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,6) RC(0,13) RC(0,12) RC(0,11) RC(0,10) RC(0,9) RC(0,8) RC(0,7) +RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,6) RC(1,13) RC(1,12) RC(1,11) RC(1,10) RC(1,9) RC(1,8) RC(1,7) +RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,6) RC(2,13) RC(2,12) RC(2,11) RC(2,10) RC(2,9) RC(2,8) RC(2,7) +RC(3,0) RC(3,1) RC(3,2) RC(3,3) RC(3,4) RC(3,5) RC(3,6) RC(3,13) RC(3,12) RC(3,11) RC(3,10) RC(3,9) RC(3,8) RC(3,7) +RC(4,0) RC(4,1) RC(4,2) RC(4,3) RC(4,4) RC(4,5) RC(4,12) RC(4,11) RC(4,10) RC(4,9) RC(4,8) RC(4,7) + >; + }; + + default_transform_2key: keymap_transform_2key { + compatible = "zmk,matrix-transform"; + columns = <14>; + rows = <5>; +// Numbering based on rev 1.2 schema +// * keys that can be in different positions are denoted as MW +// | SW1 | SW5 | SW9 | SW13 | SW17 | SW21 | SW25 | | | | SW25 | SW21 | SW17 | SW13 | SW9 | SW5 | SW1 | +// | SW2 | SW6 | SW10 | SW14 | SW18 | SW22 | SW26 | | | | SW26 | SW22 | SW18 | SW14 | SW10 | SW6 | SW2 | +// | SW3 | SW7 | SW11 | SW15 | SW19 | SW23 | SW27 | | | | SW27 | SW23 | SW19 | SW15 | SW11 | SW7 | SW3 | +// | SW4 | SW8 | SW12 | SW16 | SW20 | SW24 | | | | | | SW24 | SW20 | SW16 | SW12 | SW8 | SW4 | +// | SW30 | SW31 | SW32 | MW33 | SW34 | | MW35 | | | | MW35 | | SW34 | MW33 | SW32 | SW31 | SW30 | + map = < +RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,6) RC(0,13) RC(0,12) RC(0,11) RC(0,10) RC(0,9) RC(0,8) RC(0,7) +RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,6) RC(1,13) RC(1,12) RC(1,11) RC(1,10) RC(1,9) RC(1,8) RC(1,7) +RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,6) RC(2,13) RC(2,12) RC(2,11) RC(2,10) RC(2,9) RC(2,8) RC(2,7) +RC(3,0) RC(3,1) RC(3,2) RC(3,3) RC(3,4) RC(3,5) RC(3,12) RC(3,11) RC(3,10) RC(3,9) RC(3,8) RC(3,7) +RC(4,0) RC(4,1) RC(4,2) RC(4,3) RC(4,4) RC(4,5) RC(4,12) RC(4,11) RC(4,10) RC(4,9) RC(4,8) RC(4,7) >; }; diff --git a/app/boards/shields/ergodash/ergodash.keymap b/app/boards/shields/ergodash/ergodash.keymap index 45b712964..315dc4c92 100644 --- a/app/boards/shields/ergodash/ergodash.keymap +++ b/app/boards/shields/ergodash/ergodash.keymap @@ -33,11 +33,11 @@ * .----------------------------------------------------------------------------------------------------------------------. */ bindings = < -&kp GRAVE &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp LBKT &kp RBKT &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &kp PSCRN -&kp ESC &kp Q &kp W &kp E &kp R &kp T &kp MINUS &kp EQUAL &kp Y &kp U &kp I &kp O &kp P &kp BSLH -&kp TAB &kp A &kp S &kp D &kp F &kp G &kp DEL &kp BSPC &kp H &kp J &kp K &kp L &kp SEMI &kp SQT -&kp LSHFT &kp Z &kp X &kp C &kp V &kp B &kp END &kp HOME &kp N &kp M &kp COMMA &kp DOT &kp SLASH &kp RSHFT -&kp LCTRL &none &kp PG_DN &kp LMETA &kp LALT &kp SPACE &mo LOWER &mo RAISE &kp RET &kp RALT &none &kp PG_UP &kp INS &kp RCTRL +&kp GRAVE &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp LBKT &kp RBKT &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &kp PSCRN +&kp ESC &kp Q &kp W &kp E &kp R &kp T &kp MINUS &kp EQUAL &kp Y &kp U &kp I &kp O &kp P &kp BSLH +&kp TAB &kp A &kp S &kp D &kp F &kp G &kp DEL &kp BSPC &kp H &kp J &kp K &kp L &kp SEMI &kp SQT +&kp LSHFT &kp Z &kp X &kp C &kp V &kp B &kp END &kp HOME &kp N &kp M &kp COMMA &kp DOT &kp SLASH &kp RSHFT +&kp LCTRL &studio_unlock &kp PG_DN &kp LMETA &kp LALT &kp SPACE &mo LOWER &mo RAISE &kp RET &kp RALT &none &kp PG_UP &kp INS &kp RCTRL >; }; lower_layer { @@ -58,7 +58,7 @@ &kp F11 &kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &none &none &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &kp F12 &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none -&trans &bootloader &sys_reset &none &none &none &none &none &none &none &none &none &none &trans +&trans &bootloader &sys_reset &none &none &none &none &none &none &none &none &none &none &trans &trans &none &none &trans &trans &none &trans &trans &none &trans &none &none &none &trans >; }; @@ -80,8 +80,8 @@ &none &bt BT_SEL 0 &bt BT_SEL 1 &bt BT_SEL 2 &bt BT_SEL 3 &none &bt BT_CLR &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none -&trans &none &none &none &none &none &none &none &none &none &none &bootloader &sys_reset &trans -&trans &none &none &trans &trans &none &trans &trans &none &trans &none &none &none &trans +&trans &none &none &none &none &none &none &none &none &none &none &bootloader &sys_reset &trans +&trans &bt BT_PRV &bt BT_NXT &trans &trans &none &trans &trans &none &trans &none &none &none &trans >; }; }; diff --git a/app/boards/shields/ergodash/ergodash.studio.json b/app/boards/shields/ergodash/ergodash.studio.json new file mode 100644 index 000000000..13f965ce6 --- /dev/null +++ b/app/boards/shields/ergodash/ergodash.studio.json @@ -0,0 +1,12 @@ +{ + "file_format": "1", + "id": "ergodash", + "name": "Ergodash", + "description": "A split ergonomic keyboard with support for ZMK Studio.", + "url": "https://github.com/omkbd/ErgoDash", + "image": "https://raw.githubusercontent.com/omkbd/ErgoDash/master/images/ergodash.jpg", + "features": ["keys", "studio"], + "studio": { + "physicalLayout": "ergodash_physical_layout" + } +} diff --git a/app/boards/shields/ergodash/ergodash.zmk.yml b/app/boards/shields/ergodash/ergodash.zmk.yml index 376831a67..ced4cbbba 100644 --- a/app/boards/shields/ergodash/ergodash.zmk.yml +++ b/app/boards/shields/ergodash/ergodash.zmk.yml @@ -1,3 +1,9 @@ +# +# Copyright (c) 2020 The ZMK Contributors +# +# SPDX-License-Identifier: MIT +# + file_format: "1" id: ergodash name: Ergodash @@ -6,6 +12,7 @@ url: https://github.com/omkbd/ErgoDash requires: [pro_micro] features: - keys + - studio siblings: - ergodash_left - ergodash_right diff --git a/app/boards/shields/ergodash/ergodash_left.conf b/app/boards/shields/ergodash/ergodash_left.conf new file mode 100644 index 000000000..4763f03c1 --- /dev/null +++ b/app/boards/shields/ergodash/ergodash_left.conf @@ -0,0 +1,25 @@ +# +# Copyright (c) 2020 The ZMK Contributors +# +# SPDX-License-Identifier: MIT +# + +CONFIG_BT=y +CONFIG_BT_LL_SW_SPLIT=y + +# Windows Bluetooth connectivity fixes +# Disable PHY 2M to fix pairing issues with Windows (Realtek and Intel chips) +CONFIG_BT_CTLR_PHY_2M=n + +# Fix Windows battery notification bug +CONFIG_BT_GATT_ENFORCE_SUBSCRIPTION=n + +# Enable experimental connection stability improvements +CONFIG_ZMK_BLE_EXPERIMENTAL_CONN=y +CONFIG_ZMK_BLE_EXPERIMENTAL_FEATURES=y + +# Enable passkey entry for better compatibility with Windows (especially work-managed PCs) +CONFIG_ZMK_BLE_PASSKEY_ENTRY=n + +# Uncomment to boost BLE transmit power for improved range (may increase power consumption) +# CONFIG_BT_CTLR_TX_PWR_PLUS_8=y diff --git a/app/boards/shields/ergodash/ergodash_left.overlay b/app/boards/shields/ergodash/ergodash_left.overlay index 40263aa4b..d8c194325 100644 --- a/app/boards/shields/ergodash/ergodash_left.overlay +++ b/app/boards/shields/ergodash/ergodash_left.overlay @@ -4,5 +4,6 @@ * SPDX-License-Identifier: MIT */ -#include "ergodash.dtsi" +#include "ergodash-layouts.dtsi" +#include "ergodash.dtsi" diff --git a/app/boards/shields/ergodash/ergodash_right.conf b/app/boards/shields/ergodash/ergodash_right.conf new file mode 100644 index 000000000..ebc4c5a00 --- /dev/null +++ b/app/boards/shields/ergodash/ergodash_right.conf @@ -0,0 +1,26 @@ +# +# Copyright (c) 2020 The ZMK Contributors +# +# SPDX-License-Identifier: MIT +# + +CONFIG_BT=y +CONFIG_BT_LL_SW_SPLIT=y + +# Windows Bluetooth connectivity fixes +# Disable PHY 2M to fix pairing issues with Windows (Realtek and Intel chips) +CONFIG_BT_CTLR_PHY_2M=n + +# Fix Windows battery notification bug +CONFIG_BT_GATT_ENFORCE_SUBSCRIPTION=n + +# Enable experimental connection stability improvements +CONFIG_ZMK_BLE_EXPERIMENTAL_CONN=y +CONFIG_ZMK_BLE_EXPERIMENTAL_FEATURES=y + +# Enable passkey entry for better compatibility with Windows (especially work-managed PCs) +CONFIG_ZMK_BLE_PASSKEY_ENTRY=n + + +# Uncomment to boost BLE transmit power for improved range (may increase power consumption) +# CONFIG_BT_CTLR_TX_PWR_PLUS_8=y diff --git a/app/boards/shields/ergodash/ergodash_right.overlay b/app/boards/shields/ergodash/ergodash_right.overlay index 07fbbb70b..482bbf825 100644 --- a/app/boards/shields/ergodash/ergodash_right.overlay +++ b/app/boards/shields/ergodash/ergodash_right.overlay @@ -4,6 +4,8 @@ * SPDX-License-Identifier: MIT */ + +#include "ergodash-layouts.dtsi" #include "ergodash.dtsi" &default_transform { From 9e17928b1b0269748d20d73fc22a80cebbf716e6 Mon Sep 17 00:00:00 2001 From: Bartosz Nowak <9051964+DuMaM@users.noreply.github.com> Date: Mon, 1 Dec 2025 23:20:14 +0100 Subject: [PATCH 02/17] Delete app/boards/shields/ergodash/build.yaml --- app/boards/shields/ergodash/build.yaml | 22 ---------------------- 1 file changed, 22 deletions(-) delete mode 100644 app/boards/shields/ergodash/build.yaml diff --git a/app/boards/shields/ergodash/build.yaml b/app/boards/shields/ergodash/build.yaml deleted file mode 100644 index eb81bb2cc..000000000 --- a/app/boards/shields/ergodash/build.yaml +++ /dev/null @@ -1,22 +0,0 @@ -# -# Copyright (c) 2020 The ZMK Contributors -# -# SPDX-License-Identifier: MIT -# - -# ZMK Studio support build configuration for Ergodash shield -# See: https://zmk.dev/docs/features/studio#adding-zmk-studio-support-to-a-keyboard - -# Example for left (central) side with Studio support -default: - board: nice_nano_v2 - shield: ergodash_left - snippets: - - studio-rpc-usb-uart - cmake-args: - - -DCONFIG_ZMK_STUDIO=y - -# Example for right side (no Studio needed) -right: - board: nice_nano_v2 - shield: ergodash_right From 4eece778fd50a8a51bbb274df156390ca9a4e59f Mon Sep 17 00:00:00 2001 From: Bartosz Nowak <9051964+DuMaM@users.noreply.github.com> Date: Mon, 1 Dec 2025 23:20:26 +0100 Subject: [PATCH 03/17] Update app/boards/shields/ergodash/Kconfig.shield --- app/boards/shields/ergodash/Kconfig.shield | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/boards/shields/ergodash/Kconfig.shield b/app/boards/shields/ergodash/Kconfig.shield index f6dbd51c9..5814e21ef 100644 --- a/app/boards/shields/ergodash/Kconfig.shield +++ b/app/boards/shields/ergodash/Kconfig.shield @@ -3,8 +3,6 @@ config SHIELD_ERGODASH_LEFT def_bool $(shields_list_contains,ergodash_left) - select ZMK_STUDIO - select ZMK_STUDIO_TRANSPORT_BLE config SHIELD_ERGODASH_RIGHT def_bool $(shields_list_contains,ergodash_right) From 21f7decd38848721ca125d7a355527bdf7e89919 Mon Sep 17 00:00:00 2001 From: Bartosz Nowak <9051964+DuMaM@users.noreply.github.com> Date: Mon, 1 Dec 2025 23:20:44 +0100 Subject: [PATCH 04/17] Delete app/boards/shields/ergodash/ergodash.conf --- app/boards/shields/ergodash/ergodash.conf | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 app/boards/shields/ergodash/ergodash.conf diff --git a/app/boards/shields/ergodash/ergodash.conf b/app/boards/shields/ergodash/ergodash.conf deleted file mode 100644 index 25b16f6de..000000000 --- a/app/boards/shields/ergodash/ergodash.conf +++ /dev/null @@ -1,5 +0,0 @@ -# -# Copyright (c) 2020 The ZMK Contributors -# -# SPDX-License-Identifier: MIT -# \ No newline at end of file From c4bec82d8041d07514d875f089546b015ab77dae Mon Sep 17 00:00:00 2001 From: Bartosz Nowak <9051964+DuMaM@users.noreply.github.com> Date: Mon, 1 Dec 2025 23:21:44 +0100 Subject: [PATCH 05/17] Modify ergodash keymap for button functionality --- app/boards/shields/ergodash/ergodash.keymap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/boards/shields/ergodash/ergodash.keymap b/app/boards/shields/ergodash/ergodash.keymap index 315dc4c92..95fc4aca0 100644 --- a/app/boards/shields/ergodash/ergodash.keymap +++ b/app/boards/shields/ergodash/ergodash.keymap @@ -81,7 +81,7 @@ &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &trans &none &none &none &none &none &none &none &none &none &none &bootloader &sys_reset &trans -&trans &bt BT_PRV &bt BT_NXT &trans &trans &none &trans &trans &none &trans &none &none &none &trans +&trans &none &none &trans &trans &none &trans &trans &none &trans &none &none &none &trans >; }; }; From 730ddb853116f0a120e87d31044a4451c9b88d49 Mon Sep 17 00:00:00 2001 From: Bartosz Nowak <9051964+DuMaM@users.noreply.github.com> Date: Mon, 1 Dec 2025 23:22:54 +0100 Subject: [PATCH 06/17] Update app/boards/shields/ergodash/ergodash.zmk.yml --- app/boards/shields/ergodash/ergodash.zmk.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/app/boards/shields/ergodash/ergodash.zmk.yml b/app/boards/shields/ergodash/ergodash.zmk.yml index ced4cbbba..0cd2d22b7 100644 --- a/app/boards/shields/ergodash/ergodash.zmk.yml +++ b/app/boards/shields/ergodash/ergodash.zmk.yml @@ -1,9 +1,3 @@ -# -# Copyright (c) 2020 The ZMK Contributors -# -# SPDX-License-Identifier: MIT -# - file_format: "1" id: ergodash name: Ergodash From ff0f6d452b1358a30c06e150141b625f4678ac4f Mon Sep 17 00:00:00 2001 From: Bartosz Nowak <9051964+DuMaM@users.noreply.github.com> Date: Mon, 1 Dec 2025 23:23:44 +0100 Subject: [PATCH 07/17] Delete app/boards/shields/ergodash/ergodash.studio.json --- app/boards/shields/ergodash/ergodash.studio.json | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 app/boards/shields/ergodash/ergodash.studio.json diff --git a/app/boards/shields/ergodash/ergodash.studio.json b/app/boards/shields/ergodash/ergodash.studio.json deleted file mode 100644 index 13f965ce6..000000000 --- a/app/boards/shields/ergodash/ergodash.studio.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "file_format": "1", - "id": "ergodash", - "name": "Ergodash", - "description": "A split ergonomic keyboard with support for ZMK Studio.", - "url": "https://github.com/omkbd/ErgoDash", - "image": "https://raw.githubusercontent.com/omkbd/ErgoDash/master/images/ergodash.jpg", - "features": ["keys", "studio"], - "studio": { - "physicalLayout": "ergodash_physical_layout" - } -} From b149264a7cc1224d9942137f5bcf48154d95dcdf Mon Sep 17 00:00:00 2001 From: Bartosz Nowak <9051964+DuMaM@users.noreply.github.com> Date: Mon, 1 Dec 2025 23:24:14 +0100 Subject: [PATCH 08/17] Delete app/boards/shields/ergodash/ergodash_left.conf --- .../shields/ergodash/ergodash_left.conf | 25 ------------------- 1 file changed, 25 deletions(-) delete mode 100644 app/boards/shields/ergodash/ergodash_left.conf diff --git a/app/boards/shields/ergodash/ergodash_left.conf b/app/boards/shields/ergodash/ergodash_left.conf deleted file mode 100644 index 4763f03c1..000000000 --- a/app/boards/shields/ergodash/ergodash_left.conf +++ /dev/null @@ -1,25 +0,0 @@ -# -# Copyright (c) 2020 The ZMK Contributors -# -# SPDX-License-Identifier: MIT -# - -CONFIG_BT=y -CONFIG_BT_LL_SW_SPLIT=y - -# Windows Bluetooth connectivity fixes -# Disable PHY 2M to fix pairing issues with Windows (Realtek and Intel chips) -CONFIG_BT_CTLR_PHY_2M=n - -# Fix Windows battery notification bug -CONFIG_BT_GATT_ENFORCE_SUBSCRIPTION=n - -# Enable experimental connection stability improvements -CONFIG_ZMK_BLE_EXPERIMENTAL_CONN=y -CONFIG_ZMK_BLE_EXPERIMENTAL_FEATURES=y - -# Enable passkey entry for better compatibility with Windows (especially work-managed PCs) -CONFIG_ZMK_BLE_PASSKEY_ENTRY=n - -# Uncomment to boost BLE transmit power for improved range (may increase power consumption) -# CONFIG_BT_CTLR_TX_PWR_PLUS_8=y From 8e7d8ddde8e90b6dbfd1e26c585393c3df253583 Mon Sep 17 00:00:00 2001 From: Bartosz Nowak <9051964+DuMaM@users.noreply.github.com> Date: Mon, 1 Dec 2025 23:24:32 +0100 Subject: [PATCH 09/17] Delete app/boards/shields/ergodash/ergodash_right.conf --- .../shields/ergodash/ergodash_right.conf | 26 ------------------- 1 file changed, 26 deletions(-) delete mode 100644 app/boards/shields/ergodash/ergodash_right.conf diff --git a/app/boards/shields/ergodash/ergodash_right.conf b/app/boards/shields/ergodash/ergodash_right.conf deleted file mode 100644 index ebc4c5a00..000000000 --- a/app/boards/shields/ergodash/ergodash_right.conf +++ /dev/null @@ -1,26 +0,0 @@ -# -# Copyright (c) 2020 The ZMK Contributors -# -# SPDX-License-Identifier: MIT -# - -CONFIG_BT=y -CONFIG_BT_LL_SW_SPLIT=y - -# Windows Bluetooth connectivity fixes -# Disable PHY 2M to fix pairing issues with Windows (Realtek and Intel chips) -CONFIG_BT_CTLR_PHY_2M=n - -# Fix Windows battery notification bug -CONFIG_BT_GATT_ENFORCE_SUBSCRIPTION=n - -# Enable experimental connection stability improvements -CONFIG_ZMK_BLE_EXPERIMENTAL_CONN=y -CONFIG_ZMK_BLE_EXPERIMENTAL_FEATURES=y - -# Enable passkey entry for better compatibility with Windows (especially work-managed PCs) -CONFIG_ZMK_BLE_PASSKEY_ENTRY=n - - -# Uncomment to boost BLE transmit power for improved range (may increase power consumption) -# CONFIG_BT_CTLR_TX_PWR_PLUS_8=y From fdf667edce6076aed62bac0fd3dad7df830e3efd Mon Sep 17 00:00:00 2001 From: Bartosz Nowak <9051964+DuMaM@users.noreply.github.com> Date: Mon, 1 Dec 2025 23:25:57 +0100 Subject: [PATCH 10/17] Update app/boards/shields/ergodash/ergodash-layouts.dtsi Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- app/boards/shields/ergodash/ergodash-layouts.dtsi | 8 -------- 1 file changed, 8 deletions(-) diff --git a/app/boards/shields/ergodash/ergodash-layouts.dtsi b/app/boards/shields/ergodash/ergodash-layouts.dtsi index c15f1d278..3144f8759 100644 --- a/app/boards/shields/ergodash/ergodash-layouts.dtsi +++ b/app/boards/shields/ergodash/ergodash-layouts.dtsi @@ -409,11 +409,3 @@ ; }; }; - - - - - - - - From 0e86d0d90c60940a9b0d4c5cd5b531c7e45b1d65 Mon Sep 17 00:00:00 2001 From: Bartosz Nowak <9051964+DuMaM@users.noreply.github.com> Date: Mon, 1 Dec 2025 23:26:05 +0100 Subject: [PATCH 11/17] Update app/boards/shields/ergodash/ergodash_right.overlay Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- app/boards/shields/ergodash/ergodash_right.overlay | 1 - 1 file changed, 1 deletion(-) diff --git a/app/boards/shields/ergodash/ergodash_right.overlay b/app/boards/shields/ergodash/ergodash_right.overlay index 482bbf825..f97a7fa40 100644 --- a/app/boards/shields/ergodash/ergodash_right.overlay +++ b/app/boards/shields/ergodash/ergodash_right.overlay @@ -4,7 +4,6 @@ * SPDX-License-Identifier: MIT */ - #include "ergodash-layouts.dtsi" #include "ergodash.dtsi" From 86e92682b01d585725558791157304cf96ab0f12 Mon Sep 17 00:00:00 2001 From: Bartosz Nowak <9051964+DuMaM@users.noreply.github.com> Date: Mon, 1 Dec 2025 23:26:30 +0100 Subject: [PATCH 12/17] Update app/boards/shields/ergodash/ergodash_left.overlay Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- app/boards/shields/ergodash/ergodash_left.overlay | 1 - 1 file changed, 1 deletion(-) diff --git a/app/boards/shields/ergodash/ergodash_left.overlay b/app/boards/shields/ergodash/ergodash_left.overlay index d8c194325..3848c7dea 100644 --- a/app/boards/shields/ergodash/ergodash_left.overlay +++ b/app/boards/shields/ergodash/ergodash_left.overlay @@ -4,6 +4,5 @@ * SPDX-License-Identifier: MIT */ - #include "ergodash-layouts.dtsi" #include "ergodash.dtsi" From b2af481b564294a3c12aafcbf11c98641d1d7611 Mon Sep 17 00:00:00 2001 From: Bartosz Nowak <9051964+DuMaM@users.noreply.github.com> Date: Tue, 2 Dec 2025 23:06:37 +0100 Subject: [PATCH 13/17] Add support for new 3key_2us transform in ergodash layout --- app/boards/shields/ergodash/ergodash.dtsi | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/app/boards/shields/ergodash/ergodash.dtsi b/app/boards/shields/ergodash/ergodash.dtsi index 570f941a0..32c1ee369 100644 --- a/app/boards/shields/ergodash/ergodash.dtsi +++ b/app/boards/shields/ergodash/ergodash.dtsi @@ -11,6 +11,19 @@ zmk,kscan = &kscan0; }; + + // NOTE: Thumb cluster electrical connections: + // Bellow you can find phicial key positions as well as their + // corresponding switch numbers (SWxx) based on the rev 1.2 schema + // + // | SW28 1u --> SW39 1u | row 3 col 6 (this means you need to use at least one 2u key on the thumb cluster) + // | SW36 2u | SW41 2u | SW36 + SW35 are connected to row 4 col 5 + // | V | V | SW41 + SW40 is connected to row 4 col 6 + // | SW35 1u | SW40 1u | + // + + + // 4key thumb cluster layout transform default_transform: keymap_transform_0 { compatible = "zmk,matrix-transform"; columns = <14>; From b3702ba6c2e71f01041d038b549eaf3c777a74b5 Mon Sep 17 00:00:00 2001 From: Bartosz Nowak <9051964+DuMaM@users.noreply.github.com> Date: Tue, 2 Dec 2025 23:21:37 +0100 Subject: [PATCH 14/17] Update transform for 3key_2us layout and fix typo in ergodash.dtsi --- app/boards/shields/ergodash/ergodash-layouts.dtsi | 2 +- app/boards/shields/ergodash/ergodash.dtsi | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/boards/shields/ergodash/ergodash-layouts.dtsi b/app/boards/shields/ergodash/ergodash-layouts.dtsi index 3144f8759..e42f9fa79 100644 --- a/app/boards/shields/ergodash/ergodash-layouts.dtsi +++ b/app/boards/shields/ergodash/ergodash-layouts.dtsi @@ -179,7 +179,7 @@ display-name = "LAYOUT_3key_2us"; kscan = <&kscan0>; - transform = <&default_transform_3key>; + transform = <&keymap_transform_0>; // NOTE: SW28 and SW39 are not used here keys // w h x y rot rx ry = <&key_physical_attrs 100 100 0 38 0 0 0> diff --git a/app/boards/shields/ergodash/ergodash.dtsi b/app/boards/shields/ergodash/ergodash.dtsi index 32c1ee369..fbe0ec151 100644 --- a/app/boards/shields/ergodash/ergodash.dtsi +++ b/app/boards/shields/ergodash/ergodash.dtsi @@ -13,7 +13,7 @@ // NOTE: Thumb cluster electrical connections: - // Bellow you can find phicial key positions as well as their + // Bellow you can find physical key positions as well as their // corresponding switch numbers (SWxx) based on the rev 1.2 schema // // | SW28 1u --> SW39 1u | row 3 col 6 (this means you need to use at least one 2u key on the thumb cluster) From 0ec15b5e3c844c838ca5357fd85f730408fbd06a Mon Sep 17 00:00:00 2001 From: Bartosz Nowak <9051964+DuMaM@users.noreply.github.com> Date: Tue, 2 Dec 2025 23:31:54 +0100 Subject: [PATCH 15/17] Refactor ergodash layout keys for clarity and update transform for 3key_2us layout --- app/boards/shields/ergodash/ergodash-layouts.dtsi | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app/boards/shields/ergodash/ergodash-layouts.dtsi b/app/boards/shields/ergodash/ergodash-layouts.dtsi index e42f9fa79..4cc361a0a 100644 --- a/app/boards/shields/ergodash/ergodash-layouts.dtsi +++ b/app/boards/shields/ergodash/ergodash-layouts.dtsi @@ -19,7 +19,8 @@ kscan = <&kscan0>; transform = <&default_transform>; - keys // w h x y rot rx ry + keys// w h x y rot rx ry + // row0 = <&key_physical_attrs 100 100 0 38 0 0 0> , <&key_physical_attrs 100 100 100 38 0 0 0> , <&key_physical_attrs 100 100 200 12 0 0 0> @@ -34,6 +35,7 @@ , <&key_physical_attrs 100 100 1550 12 0 0 0> , <&key_physical_attrs 100 100 1650 38 0 0 0> , <&key_physical_attrs 100 100 1750 38 0 0 0> + // row1 , <&key_physical_attrs 100 100 0 138 0 0 0> , <&key_physical_attrs 100 100 100 138 0 0 0> , <&key_physical_attrs 100 100 200 112 0 0 0> @@ -48,6 +50,7 @@ , <&key_physical_attrs 100 100 1550 112 0 0 0> , <&key_physical_attrs 100 100 1650 138 0 0 0> , <&key_physical_attrs 100 100 1750 138 0 0 0> + // row2 , <&key_physical_attrs 100 100 0 238 0 0 0> , <&key_physical_attrs 100 100 100 238 0 0 0> , <&key_physical_attrs 100 100 200 212 0 0 0> @@ -62,6 +65,7 @@ , <&key_physical_attrs 100 100 1550 212 0 0 0> , <&key_physical_attrs 100 100 1650 238 0 0 0> , <&key_physical_attrs 100 100 1750 238 0 0 0> + // row3 , <&key_physical_attrs 100 100 0 338 0 0 0> , <&key_physical_attrs 100 100 100 338 0 0 0> , <&key_physical_attrs 100 100 200 312 0 0 0> @@ -76,6 +80,7 @@ , <&key_physical_attrs 100 100 1550 312 0 0 0> , <&key_physical_attrs 100 100 1650 338 0 0 0> , <&key_physical_attrs 100 100 1750 338 0 0 0> + // row4 , <&key_physical_attrs 100 100 0 438 0 0 0> , <&key_physical_attrs 100 100 100 438 0 0 0> , <&key_physical_attrs 100 100 200 412 0 0 0> @@ -179,7 +184,7 @@ display-name = "LAYOUT_3key_2us"; kscan = <&kscan0>; - transform = <&keymap_transform_0>; // NOTE: SW28 and SW39 are not used here + transform = <&default_transform_3key>; // NOTE: SW28 and SW39 are not used here keys // w h x y rot rx ry = <&key_physical_attrs 100 100 0 38 0 0 0> From c451cbc918318ea733200a28e2d63f12931ff860 Mon Sep 17 00:00:00 2001 From: Bartosz Nowak <9051964+DuMaM@users.noreply.github.com> Date: Tue, 2 Dec 2025 23:40:28 +0100 Subject: [PATCH 16/17] Update transform for 3key_2us layout and add key row comments in ergodash-layouts.dtsi --- app/boards/shields/ergodash/ergodash-layouts.dtsi | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/app/boards/shields/ergodash/ergodash-layouts.dtsi b/app/boards/shields/ergodash/ergodash-layouts.dtsi index 4cc361a0a..47b191a66 100644 --- a/app/boards/shields/ergodash/ergodash-layouts.dtsi +++ b/app/boards/shields/ergodash/ergodash-layouts.dtsi @@ -184,9 +184,10 @@ display-name = "LAYOUT_3key_2us"; kscan = <&kscan0>; - transform = <&default_transform_3key>; // NOTE: SW28 and SW39 are not used here + transform = <&default_transform>; // NOTE: SW28 and SW39 are not used here keys // w h x y rot rx ry + // row0 = <&key_physical_attrs 100 100 0 38 0 0 0> , <&key_physical_attrs 100 100 100 38 0 0 0> , <&key_physical_attrs 100 100 200 12 0 0 0> @@ -201,6 +202,7 @@ , <&key_physical_attrs 100 100 1550 12 0 0 0> , <&key_physical_attrs 100 100 1650 38 0 0 0> , <&key_physical_attrs 100 100 1750 38 0 0 0> + // row1 , <&key_physical_attrs 100 100 0 138 0 0 0> , <&key_physical_attrs 100 100 100 138 0 0 0> , <&key_physical_attrs 100 100 200 112 0 0 0> @@ -215,6 +217,7 @@ , <&key_physical_attrs 100 100 1550 112 0 0 0> , <&key_physical_attrs 100 100 1650 138 0 0 0> , <&key_physical_attrs 100 100 1750 138 0 0 0> + // row2 , <&key_physical_attrs 100 100 0 238 0 0 0> , <&key_physical_attrs 100 100 100 238 0 0 0> , <&key_physical_attrs 100 100 200 212 0 0 0> @@ -229,11 +232,14 @@ , <&key_physical_attrs 100 100 1550 212 0 0 0> , <&key_physical_attrs 100 100 1650 238 0 0 0> , <&key_physical_attrs 100 100 1750 238 0 0 0> + // row3 , <&key_physical_attrs 100 100 0 338 0 0 0> , <&key_physical_attrs 100 100 100 338 0 0 0> , <&key_physical_attrs 100 100 200 312 0 0 0> , <&key_physical_attrs 100 100 300 300 0 0 0> , <&key_physical_attrs 100 100 400 312 0 0 0> + , <&key_physical_attrs 0 0 0 0 0 0 0> // stub for unused key + , <&key_physical_attrs 0 0 0 0 0 0 0> // stub for unused key , <&key_physical_attrs 100 100 500 325 0 0 0> , <&key_physical_attrs 100 100 1250 325 0 0 0> , <&key_physical_attrs 100 100 1350 312 0 0 0> @@ -241,6 +247,7 @@ , <&key_physical_attrs 100 100 1550 312 0 0 0> , <&key_physical_attrs 100 100 1650 338 0 0 0> , <&key_physical_attrs 100 100 1750 338 0 0 0> + // row4 , <&key_physical_attrs 100 100 0 438 0 0 0> , <&key_physical_attrs 100 100 100 438 0 0 0> , <&key_physical_attrs 100 100 200 412 0 0 0> @@ -280,6 +287,7 @@ , <&key_physical_attrs 100 100 1550 12 0 0 0> , <&key_physical_attrs 100 100 1650 38 0 0 0> , <&key_physical_attrs 100 100 1750 38 0 0 0> + // row1 , <&key_physical_attrs 100 100 0 138 0 0 0> , <&key_physical_attrs 100 100 100 138 0 0 0> , <&key_physical_attrs 100 100 200 112 0 0 0> @@ -294,6 +302,7 @@ , <&key_physical_attrs 100 100 1550 112 0 0 0> , <&key_physical_attrs 100 100 1650 138 0 0 0> , <&key_physical_attrs 100 100 1750 138 0 0 0> + // row2 , <&key_physical_attrs 100 100 0 238 0 0 0> , <&key_physical_attrs 100 100 100 238 0 0 0> , <&key_physical_attrs 100 100 200 212 0 0 0> @@ -308,6 +317,7 @@ , <&key_physical_attrs 100 100 1550 212 0 0 0> , <&key_physical_attrs 100 100 1650 238 0 0 0> , <&key_physical_attrs 100 100 1750 238 0 0 0> + // row3 , <&key_physical_attrs 100 100 0 338 0 0 0> , <&key_physical_attrs 100 100 100 338 0 0 0> , <&key_physical_attrs 100 100 200 312 0 0 0> @@ -322,6 +332,7 @@ , <&key_physical_attrs 100 100 1550 312 0 0 0> , <&key_physical_attrs 100 100 1650 338 0 0 0> , <&key_physical_attrs 100 100 1750 338 0 0 0> + // row4 , <&key_physical_attrs 100 100 0 438 0 0 0> , <&key_physical_attrs 100 100 100 438 0 0 0> , <&key_physical_attrs 100 100 200 412 0 0 0> From 1e996322e46835647a5d11341507f47d88b79be9 Mon Sep 17 00:00:00 2001 From: Bartosz Nowak <9051964+DuMaM@users.noreply.github.com> Date: Tue, 2 Dec 2025 23:57:50 +0100 Subject: [PATCH 17/17] feat: add alt 3key keymap --- .../shields/ergodash/ergodash-layouts.dtsi | 4 +- app/boards/shields/ergodash/ergodash.dtsi | 41 ++++++++++++++----- 2 files changed, 32 insertions(+), 13 deletions(-) diff --git a/app/boards/shields/ergodash/ergodash-layouts.dtsi b/app/boards/shields/ergodash/ergodash-layouts.dtsi index 47b191a66..a728f6391 100644 --- a/app/boards/shields/ergodash/ergodash-layouts.dtsi +++ b/app/boards/shields/ergodash/ergodash-layouts.dtsi @@ -184,7 +184,7 @@ display-name = "LAYOUT_3key_2us"; kscan = <&kscan0>; - transform = <&default_transform>; // NOTE: SW28 and SW39 are not used here + transform = <&default_transform_3key_alt>; keys // w h x y rot rx ry // row0 @@ -238,8 +238,6 @@ , <&key_physical_attrs 100 100 200 312 0 0 0> , <&key_physical_attrs 100 100 300 300 0 0 0> , <&key_physical_attrs 100 100 400 312 0 0 0> - , <&key_physical_attrs 0 0 0 0 0 0 0> // stub for unused key - , <&key_physical_attrs 0 0 0 0 0 0 0> // stub for unused key , <&key_physical_attrs 100 100 500 325 0 0 0> , <&key_physical_attrs 100 100 1250 325 0 0 0> , <&key_physical_attrs 100 100 1350 312 0 0 0> diff --git a/app/boards/shields/ergodash/ergodash.dtsi b/app/boards/shields/ergodash/ergodash.dtsi index fbe0ec151..bc18e320b 100644 --- a/app/boards/shields/ergodash/ergodash.dtsi +++ b/app/boards/shields/ergodash/ergodash.dtsi @@ -56,11 +56,32 @@ RC(4,0) RC(4,1) RC(4,2) RC(4,3) RC(4,4) RC(4,5) RC(4,6) RC(4,13) // | SW4 | SW8 | SW12 | SW16 | SW20 | SW24 | | MW28 | | MW28 | | SW24 | SW20 | SW16 | SW12 | SW8 | SW4 | // | SW30 | SW31 | SW32 | MW33 | SW34 | | MW35 | | | | MW35 | | SW34 | MW33 | SW32 | SW31 | SW30 | map = < -RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,6) RC(0,13) RC(0,12) RC(0,11) RC(0,10) RC(0,9) RC(0,8) RC(0,7) -RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,6) RC(1,13) RC(1,12) RC(1,11) RC(1,10) RC(1,9) RC(1,8) RC(1,7) -RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,6) RC(2,13) RC(2,12) RC(2,11) RC(2,10) RC(2,9) RC(2,8) RC(2,7) -RC(3,0) RC(3,1) RC(3,2) RC(3,3) RC(3,4) RC(3,5) RC(3,6) RC(3,13) RC(3,12) RC(3,11) RC(3,10) RC(3,9) RC(3,8) RC(3,7) -RC(4,0) RC(4,1) RC(4,2) RC(4,3) RC(4,4) RC(4,5) RC(4,12) RC(4,11) RC(4,10) RC(4,9) RC(4,8) RC(4,7) +RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,6) RC(0,13) RC(0,12) RC(0,11) RC(0,10) RC(0,9) RC(0,8) RC(0,7) +RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,6) RC(1,13) RC(1,12) RC(1,11) RC(1,10) RC(1,9) RC(1,8) RC(1,7) +RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,6) RC(2,13) RC(2,12) RC(2,11) RC(2,10) RC(2,9) RC(2,8) RC(2,7) +RC(3,0) RC(3,1) RC(3,2) RC(3,3) RC(3,4) RC(3,5) RC(3,6) RC(3,13) RC(3,12) RC(3,11) RC(3,10) RC(3,9) RC(3,8) RC(3,7) +RC(4,0) RC(4,1) RC(4,2) RC(4,3) RC(4,4) RC(4,5) RC(4,12) RC(4,11) RC(4,10) RC(4,9) RC(4,8) RC(4,7) + >; + }; + + // with 2x 2u thumb key + default_transform_3key_alt: keymap_transform_3key_alt { + compatible = "zmk,matrix-transform"; + columns = <14>; + rows = <5>; +// Numbering based on rev 1.2 schema +// * keys that can be in different positions are denoted as MW +// | SW1 | SW5 | SW9 | SW13 | SW17 | SW21 | SW25 | | | | SW25 | SW21 | SW17 | SW13 | SW9 | SW5 | SW1 | +// | SW2 | SW6 | SW10 | SW14 | SW18 | SW22 | SW26 | | | | SW26 | SW22 | SW18 | SW14 | SW10 | SW6 | SW2 | +// | SW3 | SW7 | SW11 | SW15 | SW19 | SW23 | SW27 | | | | SW27 | SW23 | SW19 | SW15 | SW11 | SW7 | SW3 | +// | SW4 | SW8 | SW12 | SW16 | SW20 | SW24 | | | | | | SW24 | SW20 | SW16 | SW12 | SW8 | SW4 | +// | SW30 | SW31 | SW32 | MW33 | SW34 | | MW35 | MW40 | | MW40 | MW35 | | SW34 | MW33 | SW32 | SW31 | SW30 | + map = < +RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,6) RC(0,13) RC(0,12) RC(0,11) RC(0,10) RC(0,9) RC(0,8) RC(0,7) +RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,6) RC(1,13) RC(1,12) RC(1,11) RC(1,10) RC(1,9) RC(1,8) RC(1,7) +RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,6) RC(2,13) RC(2,12) RC(2,11) RC(2,10) RC(2,9) RC(2,8) RC(2,7) +RC(3,0) RC(3,1) RC(3,2) RC(3,3) RC(3,4) RC(3,5) RC(3,12) RC(3,11) RC(3,10) RC(3,9) RC(3,8) RC(3,7) +RC(4,0) RC(4,1) RC(4,2) RC(4,3) RC(4,4) RC(4,5) RC(4,6) RC(4,13) RC(4,12) RC(4,11) RC(4,10) RC(4,9) RC(4,8) RC(4,7) >; }; @@ -76,11 +97,11 @@ RC(4,0) RC(4,1) RC(4,2) RC(4,3) RC(4,4) RC(4,5) RC(4,12) RC(4,11 // | SW4 | SW8 | SW12 | SW16 | SW20 | SW24 | | | | | | SW24 | SW20 | SW16 | SW12 | SW8 | SW4 | // | SW30 | SW31 | SW32 | MW33 | SW34 | | MW35 | | | | MW35 | | SW34 | MW33 | SW32 | SW31 | SW30 | map = < -RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,6) RC(0,13) RC(0,12) RC(0,11) RC(0,10) RC(0,9) RC(0,8) RC(0,7) -RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,6) RC(1,13) RC(1,12) RC(1,11) RC(1,10) RC(1,9) RC(1,8) RC(1,7) -RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,6) RC(2,13) RC(2,12) RC(2,11) RC(2,10) RC(2,9) RC(2,8) RC(2,7) -RC(3,0) RC(3,1) RC(3,2) RC(3,3) RC(3,4) RC(3,5) RC(3,12) RC(3,11) RC(3,10) RC(3,9) RC(3,8) RC(3,7) -RC(4,0) RC(4,1) RC(4,2) RC(4,3) RC(4,4) RC(4,5) RC(4,12) RC(4,11) RC(4,10) RC(4,9) RC(4,8) RC(4,7) +RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,6) RC(0,13) RC(0,12) RC(0,11) RC(0,10) RC(0,9) RC(0,8) RC(0,7) +RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,6) RC(1,13) RC(1,12) RC(1,11) RC(1,10) RC(1,9) RC(1,8) RC(1,7) +RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,6) RC(2,13) RC(2,12) RC(2,11) RC(2,10) RC(2,9) RC(2,8) RC(2,7) +RC(3,0) RC(3,1) RC(3,2) RC(3,3) RC(3,4) RC(3,5) RC(3,12) RC(3,11) RC(3,10) RC(3,9) RC(3,8) RC(3,7) +RC(4,0) RC(4,1) RC(4,2) RC(4,3) RC(4,4) RC(4,5) RC(4,12) RC(4,11) RC(4,10) RC(4,9) RC(4,8) RC(4,7) >; };