diff --git a/app/boards/shields/ergodash/Kconfig.shield b/app/boards/shields/ergodash/Kconfig.shield index 5814e21ef55..f6dbd51c925 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 00000000000..eb81bb2cc52 --- /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 00000000000..c15f1d278c7 --- /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 e69de29bb2d..25b16f6de24 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 b6ef7fc41c2..570f941a04b 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 e384e504fbe..0e3f18c0de9 100644 --- a/app/boards/shields/ergodash/ergodash.keymap +++ b/app/boards/shields/ergodash/ergodash.keymap @@ -32,11 +32,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 { @@ -56,7 +56,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 >; }; @@ -77,8 +77,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 00000000000..13f965ce6c4 --- /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 376831a6786..ced4cbbbacb 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 00000000000..4763f03c140 --- /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 40263aa4b5d..d8c194325f3 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 00000000000..ebc4c5a00e5 --- /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 07fbbb70bf9..482bbf825cf 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 {