From c23d752917774bc740c791e2f7eeef6f8f9e1033 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Fri, 19 Jun 2020 15:32:33 -0400 Subject: Some initial work on behavior bindings for keymaps --- app/dts/behaviors/key_press.dtsi | 9 +++++++++ app/dts/behaviors/reset.dtsi | 9 +++++++++ app/dts/bindings/behaviors/one_param.yaml | 14 ++++++++++++++ app/dts/bindings/behaviors/two_param.yaml | 15 +++++++++++++++ app/dts/bindings/behaviors/zero_param.yaml | 11 +++++++++++ app/dts/bindings/behaviors/zmk,behavior-key-press.yaml | 8 ++++++++ app/dts/bindings/behaviors/zmk,behavior-reset.yaml | 8 ++++++++ app/dts/bindings/zmk,layers.yaml | 3 ++- 8 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 app/dts/behaviors/key_press.dtsi create mode 100644 app/dts/behaviors/reset.dtsi create mode 100644 app/dts/bindings/behaviors/one_param.yaml create mode 100644 app/dts/bindings/behaviors/two_param.yaml create mode 100644 app/dts/bindings/behaviors/zero_param.yaml create mode 100644 app/dts/bindings/behaviors/zmk,behavior-key-press.yaml create mode 100644 app/dts/bindings/behaviors/zmk,behavior-reset.yaml (limited to 'app/dts') diff --git a/app/dts/behaviors/key_press.dtsi b/app/dts/behaviors/key_press.dtsi new file mode 100644 index 0000000..7c7ac5b --- /dev/null +++ b/app/dts/behaviors/key_press.dtsi @@ -0,0 +1,9 @@ +/ { + behaviors { + kp: behavior_key_press { + compatible = "zmk,behavior-key-press"; + label = "KEY_PRESS"; + #binding-cells = <1>; + }; + }; +}; diff --git a/app/dts/behaviors/reset.dtsi b/app/dts/behaviors/reset.dtsi new file mode 100644 index 0000000..4e3b444 --- /dev/null +++ b/app/dts/behaviors/reset.dtsi @@ -0,0 +1,9 @@ +/ { + behaviors { + reset: behavior_reset { + compatible = "zmk,behavior-reset"; + label = "RESET"; + #binding-cells = <0>; + }; + }; +}; diff --git a/app/dts/bindings/behaviors/one_param.yaml b/app/dts/bindings/behaviors/one_param.yaml new file mode 100644 index 0000000..1f33aee --- /dev/null +++ b/app/dts/bindings/behaviors/one_param.yaml @@ -0,0 +1,14 @@ +# Copyright (c) 2020, Pete Johanson +# SPDX-License-Identifier: MIT + +properties: + label: + type: string + required: true + "#binding-cells": + type: int + required: true + const: 1 + +binding-cells: + - param1 diff --git a/app/dts/bindings/behaviors/two_param.yaml b/app/dts/bindings/behaviors/two_param.yaml new file mode 100644 index 0000000..f8b3af9 --- /dev/null +++ b/app/dts/bindings/behaviors/two_param.yaml @@ -0,0 +1,15 @@ +# Copyright (c) 2020, Pete Johanson +# SPDX-License-Identifier: MIT + +properties: + label: + type: string + required: true + "#binding-cells": + type: int + required: true + const: 2 + +binding-cells: + - param1 + - param2 diff --git a/app/dts/bindings/behaviors/zero_param.yaml b/app/dts/bindings/behaviors/zero_param.yaml new file mode 100644 index 0000000..20f1528 --- /dev/null +++ b/app/dts/bindings/behaviors/zero_param.yaml @@ -0,0 +1,11 @@ +# Copyright (c) 2020, Pete Johanson +# SPDX-License-Identifier: MIT + +properties: + label: + type: string + required: true + "#binding-cells": + type: int + required: true + const: 0 diff --git a/app/dts/bindings/behaviors/zmk,behavior-key-press.yaml b/app/dts/bindings/behaviors/zmk,behavior-key-press.yaml new file mode 100644 index 0000000..0169d7d --- /dev/null +++ b/app/dts/bindings/behaviors/zmk,behavior-key-press.yaml @@ -0,0 +1,8 @@ +# Copyright (c) 2020, Pete Johanson +# SPDX-License-Identifier: MIT + +description: Key press/release behavior + +compatible: "zmk,behavior-key-press" + +include: one_param.yaml diff --git a/app/dts/bindings/behaviors/zmk,behavior-reset.yaml b/app/dts/bindings/behaviors/zmk,behavior-reset.yaml new file mode 100644 index 0000000..c8e5e6f --- /dev/null +++ b/app/dts/bindings/behaviors/zmk,behavior-reset.yaml @@ -0,0 +1,8 @@ +# Copyright (c) 2020, Pete Johanson +# SPDX-License-Identifier: MIT + +description: Keyboard Reset Behavior + +compatible: "zmk,behavior-reset" + +include: zero_param.yaml diff --git a/app/dts/bindings/zmk,layers.yaml b/app/dts/bindings/zmk,layers.yaml index c9b462a..2bbb023 100644 --- a/app/dts/bindings/zmk,layers.yaml +++ b/app/dts/bindings/zmk,layers.yaml @@ -11,4 +11,5 @@ child-binding: type: string keys: type: array - + bindings: + type: phandle-array -- cgit v1.2.3 From d65629b9a0b79b6e294419fe9a4118fb09491c91 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Sat, 20 Jun 2020 00:11:39 -0400 Subject: Lots more pieces toward HID working again. --- app/dts/behaviors/hid.dtsi | 9 +++++++++ app/dts/behaviors/keymap.dtsi | 9 +++++++++ app/dts/bindings/behaviors/zmk,behavior-hid.yaml | 8 ++++++++ app/dts/bindings/behaviors/zmk,behavior-keymap.yaml | 8 ++++++++ app/dts/bindings/zmk,global-bindings.yaml | 9 +++++++++ 5 files changed, 43 insertions(+) create mode 100644 app/dts/behaviors/hid.dtsi create mode 100644 app/dts/behaviors/keymap.dtsi create mode 100644 app/dts/bindings/behaviors/zmk,behavior-hid.yaml create mode 100644 app/dts/bindings/behaviors/zmk,behavior-keymap.yaml create mode 100644 app/dts/bindings/zmk,global-bindings.yaml (limited to 'app/dts') diff --git a/app/dts/behaviors/hid.dtsi b/app/dts/behaviors/hid.dtsi new file mode 100644 index 0000000..d859c37 --- /dev/null +++ b/app/dts/behaviors/hid.dtsi @@ -0,0 +1,9 @@ +/ { + behaviors { + hid_behavior: behavior_hid { + compatible = "zmk,behavior-hid"; + label = "HID"; + #binding-cells = <0>; + }; + }; +}; diff --git a/app/dts/behaviors/keymap.dtsi b/app/dts/behaviors/keymap.dtsi new file mode 100644 index 0000000..87b2f41 --- /dev/null +++ b/app/dts/behaviors/keymap.dtsi @@ -0,0 +1,9 @@ +/ { + behaviors { + keymap_behavior: behavior_keymap { + compatible = "zmk,behavior-keymap"; + label = "KEYMAP"; + #binding-cells = <0>; + }; + }; +}; diff --git a/app/dts/bindings/behaviors/zmk,behavior-hid.yaml b/app/dts/bindings/behaviors/zmk,behavior-hid.yaml new file mode 100644 index 0000000..f3e0603 --- /dev/null +++ b/app/dts/bindings/behaviors/zmk,behavior-hid.yaml @@ -0,0 +1,8 @@ +# Copyright (c) 2020, Pete Johanson +# SPDX-License-Identifier: MIT + +description: HID Report Behavior + +compatible: "zmk,behavior-hid" + +include: zero_param.yaml diff --git a/app/dts/bindings/behaviors/zmk,behavior-keymap.yaml b/app/dts/bindings/behaviors/zmk,behavior-keymap.yaml new file mode 100644 index 0000000..1d8a51f --- /dev/null +++ b/app/dts/bindings/behaviors/zmk,behavior-keymap.yaml @@ -0,0 +1,8 @@ +# Copyright (c) 2020, Pete Johanson +# SPDX-License-Identifier: MIT + +description: Keymap Behavior + +compatible: "zmk,behavior-keymap" + +include: zero_param.yaml diff --git a/app/dts/bindings/zmk,global-bindings.yaml b/app/dts/bindings/zmk,global-bindings.yaml new file mode 100644 index 0000000..69e79cd --- /dev/null +++ b/app/dts/bindings/zmk,global-bindings.yaml @@ -0,0 +1,9 @@ +description: | + Specify the the global behaviors bound to state changes + +compatible: "zmk,global-bindings" + +properties: + bindings: + type: phandles + required: true -- cgit v1.2.3 From 223edf05ad08938b066f9187668ebfae43c5e91a Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Sun, 21 Jun 2020 21:43:44 -0400 Subject: Refactor global bindings, implement mod-tap. * Use extra comptible = "zmk,behavior-global" to add behaviors to global bindings for event notification. * Implement mod-tap, as a keymap binding and global one to skip tap if other keycode pressed while held. --- app/dts/behaviors/hid.dtsi | 2 +- app/dts/behaviors/keymap.dtsi | 2 +- app/dts/behaviors/mod_tap.dtsi | 9 +++++++++ app/dts/bindings/behaviors/zmk,behavior-mod-tap.yaml | 8 ++++++++ app/dts/bindings/zmk,global-bindings.yaml | 9 --------- 5 files changed, 19 insertions(+), 11 deletions(-) create mode 100644 app/dts/behaviors/mod_tap.dtsi create mode 100644 app/dts/bindings/behaviors/zmk,behavior-mod-tap.yaml delete mode 100644 app/dts/bindings/zmk,global-bindings.yaml (limited to 'app/dts') diff --git a/app/dts/behaviors/hid.dtsi b/app/dts/behaviors/hid.dtsi index d859c37..30ebb09 100644 --- a/app/dts/behaviors/hid.dtsi +++ b/app/dts/behaviors/hid.dtsi @@ -1,7 +1,7 @@ / { behaviors { hid_behavior: behavior_hid { - compatible = "zmk,behavior-hid"; + compatible = "zmk,behavior-hid", "zmk,behavior-global"; label = "HID"; #binding-cells = <0>; }; diff --git a/app/dts/behaviors/keymap.dtsi b/app/dts/behaviors/keymap.dtsi index 87b2f41..ec434d5 100644 --- a/app/dts/behaviors/keymap.dtsi +++ b/app/dts/behaviors/keymap.dtsi @@ -1,7 +1,7 @@ / { behaviors { keymap_behavior: behavior_keymap { - compatible = "zmk,behavior-keymap"; + compatible = "zmk,behavior-keymap", "zmk,behavior-global"; label = "KEYMAP"; #binding-cells = <0>; }; diff --git a/app/dts/behaviors/mod_tap.dtsi b/app/dts/behaviors/mod_tap.dtsi new file mode 100644 index 0000000..1be7db6 --- /dev/null +++ b/app/dts/behaviors/mod_tap.dtsi @@ -0,0 +1,9 @@ +/ { + behaviors { + mt: behavior_mod_tap { + compatible = "zmk,behavior-mod-tap", "zmk,behavior-global"; + label = "MOD_TAP"; + #binding-cells = <2>; + }; + }; +}; diff --git a/app/dts/bindings/behaviors/zmk,behavior-mod-tap.yaml b/app/dts/bindings/behaviors/zmk,behavior-mod-tap.yaml new file mode 100644 index 0000000..7911082 --- /dev/null +++ b/app/dts/bindings/behaviors/zmk,behavior-mod-tap.yaml @@ -0,0 +1,8 @@ +# Copyright (c) 2020, Pete Johanson +# SPDX-License-Identifier: MIT + +description: Mod-Tap Beavhior + +compatible: "zmk,behavior-mod-tap" + +include: two_param.yaml diff --git a/app/dts/bindings/zmk,global-bindings.yaml b/app/dts/bindings/zmk,global-bindings.yaml deleted file mode 100644 index 69e79cd..0000000 --- a/app/dts/bindings/zmk,global-bindings.yaml +++ /dev/null @@ -1,9 +0,0 @@ -description: | - Specify the the global behaviors bound to state changes - -compatible: "zmk,global-bindings" - -properties: - bindings: - type: phandles - required: true -- cgit v1.2.3 From 93635077e600e269aa905a0558c07acf0efebffb Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Sun, 21 Jun 2020 21:56:49 -0400 Subject: Implement momentary layer + transparent behaviors * Implement "momentary layer" behavior with `&mo` reference. * Implement basic "transparent" behavior with `&trans` reference. --- app/dts/behaviors/momentary_layer.dtsi | 9 +++++++++ app/dts/behaviors/transparent.dtsi | 9 +++++++++ app/dts/bindings/behaviors/zmk,behavior-momentary-layer.yaml | 8 ++++++++ app/dts/bindings/behaviors/zmk,behavior-transparent.yaml | 8 ++++++++ 4 files changed, 34 insertions(+) create mode 100644 app/dts/behaviors/momentary_layer.dtsi create mode 100644 app/dts/behaviors/transparent.dtsi create mode 100644 app/dts/bindings/behaviors/zmk,behavior-momentary-layer.yaml create mode 100644 app/dts/bindings/behaviors/zmk,behavior-transparent.yaml (limited to 'app/dts') diff --git a/app/dts/behaviors/momentary_layer.dtsi b/app/dts/behaviors/momentary_layer.dtsi new file mode 100644 index 0000000..e5b6c3c --- /dev/null +++ b/app/dts/behaviors/momentary_layer.dtsi @@ -0,0 +1,9 @@ +/ { + behaviors { + mo: behavior_momentary_layer { + compatible = "zmk,behavior-momentary-layer"; + label = "MO"; + #binding-cells = <1>; + }; + }; +}; diff --git a/app/dts/behaviors/transparent.dtsi b/app/dts/behaviors/transparent.dtsi new file mode 100644 index 0000000..ddd0522 --- /dev/null +++ b/app/dts/behaviors/transparent.dtsi @@ -0,0 +1,9 @@ +/ { + behaviors { + trans: behavior_transparent { + compatible = "zmk,behavior-transparent"; + label = "TRANS"; + #binding-cells = <0>; + }; + }; +}; diff --git a/app/dts/bindings/behaviors/zmk,behavior-momentary-layer.yaml b/app/dts/bindings/behaviors/zmk,behavior-momentary-layer.yaml new file mode 100644 index 0000000..70c7c7f --- /dev/null +++ b/app/dts/bindings/behaviors/zmk,behavior-momentary-layer.yaml @@ -0,0 +1,8 @@ +# Copyright (c) 2020, Pete Johanson +# SPDX-License-Identifier: MIT + +description: Momentary layer on press/release behavior + +compatible: "zmk,behavior-momentary-layer" + +include: one_param.yaml diff --git a/app/dts/bindings/behaviors/zmk,behavior-transparent.yaml b/app/dts/bindings/behaviors/zmk,behavior-transparent.yaml new file mode 100644 index 0000000..33f1aba --- /dev/null +++ b/app/dts/bindings/behaviors/zmk,behavior-transparent.yaml @@ -0,0 +1,8 @@ +# Copyright (c) 2020, Pete Johanson +# SPDX-License-Identifier: MIT + +description: Transparent Binding Behavior + +compatible: "zmk,behavior-transparent" + +include: zero_param.yaml -- cgit v1.2.3 From c6625169e5f6cfc8641fc08662f59935abf11588 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Sun, 21 Jun 2020 22:05:11 -0400 Subject: Refactor to single include. --- app/dts/behaviors.dtsi | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 app/dts/behaviors.dtsi (limited to 'app/dts') diff --git a/app/dts/behaviors.dtsi b/app/dts/behaviors.dtsi new file mode 100644 index 0000000..cd5a3ab --- /dev/null +++ b/app/dts/behaviors.dtsi @@ -0,0 +1,7 @@ +#include +#include +#include +#include +#include +#include +#include \ No newline at end of file -- cgit v1.2.3 From ec663310c1682f55578b1b6d886ebcae4965425c Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Sun, 21 Jun 2020 22:46:27 -0400 Subject: Clean up after refactor, better HID constants. --- app/dts/bindings/zmk,layers.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'app/dts') diff --git a/app/dts/bindings/zmk,layers.yaml b/app/dts/bindings/zmk,layers.yaml index 2bbb023..34cbb95 100644 --- a/app/dts/bindings/zmk,layers.yaml +++ b/app/dts/bindings/zmk,layers.yaml @@ -9,7 +9,7 @@ child-binding: properties: label: type: string - keys: - type: array + required: true bindings: type: phandle-array + required: true -- cgit v1.2.3 From 55cf9db564e66e2804f2d3f2201c55c3c86a90d7 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Mon, 22 Jun 2020 11:06:01 -0400 Subject: Fix consumer keys w/ refactored behaviors. --- app/dts/behaviors/key_press.dtsi | 10 ++++++++++ app/dts/bindings/behaviors/zmk,behavior-key-press.yaml | 5 +++++ 2 files changed, 15 insertions(+) (limited to 'app/dts') diff --git a/app/dts/behaviors/key_press.dtsi b/app/dts/behaviors/key_press.dtsi index 7c7ac5b..5a01953 100644 --- a/app/dts/behaviors/key_press.dtsi +++ b/app/dts/behaviors/key_press.dtsi @@ -1,8 +1,18 @@ +#include + / { behaviors { kp: behavior_key_press { compatible = "zmk,behavior-key-press"; label = "KEY_PRESS"; + usage_page = ; + #binding-cells = <1>; + }; + + cp: behavior_consumer_press { + compatible = "zmk,behavior-key-press"; + label = "CONSUMER_PRESS"; + usage_page = ; #binding-cells = <1>; }; }; diff --git a/app/dts/bindings/behaviors/zmk,behavior-key-press.yaml b/app/dts/bindings/behaviors/zmk,behavior-key-press.yaml index 0169d7d..7ec5494 100644 --- a/app/dts/bindings/behaviors/zmk,behavior-key-press.yaml +++ b/app/dts/bindings/behaviors/zmk,behavior-key-press.yaml @@ -6,3 +6,8 @@ description: Key press/release behavior compatible: "zmk,behavior-key-press" include: one_param.yaml + +properties: + usage_page: + type: int + default: 0 -- cgit v1.2.3