feat: add support for zmk studio

This commit is contained in:
Bartosz Nowak 2025-08-22 00:17:56 +02:00
parent e34793e8c7
commit 2da1f0c49c
12 changed files with 575 additions and 16 deletions

View File

@ -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)

View File

@ -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

View File

@ -0,0 +1,419 @@
/*
* Copyright (c) 2020 The ZMK Contributors
*
* SPDX-License-Identifier: MIT
*/
#include <physical_layouts.dtsi>
/ {
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>
;
};
};

View File

@ -0,0 +1,5 @@
#
# Copyright (c) 2020 The ZMK Contributors
#
# SPDX-License-Identifier: MIT
#

View File

@ -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)
>;
};

View File

@ -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
>;
};
};

View File

@ -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"
}
}

View File

@ -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

View File

@ -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

View File

@ -4,5 +4,6 @@
* SPDX-License-Identifier: MIT
*/
#include "ergodash.dtsi"
#include "ergodash-layouts.dtsi"
#include "ergodash.dtsi"

View File

@ -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

View File

@ -4,6 +4,8 @@
* SPDX-License-Identifier: MIT
*/
#include "ergodash-layouts.dtsi"
#include "ergodash.dtsi"
&default_transform {