diff --git a/.github/workflows/draw-keymaps.yml b/.github/workflows/draw-keymaps.yml index 8e36497..bf8c8bc 100644 --- a/.github/workflows/draw-keymaps.yml +++ b/.github/workflows/draw-keymaps.yml @@ -16,7 +16,8 @@ jobs: contents: write with: # commit_message: "[Draw] ${{ github.event.head_commit.message }}" - amend_commit: true + # amend_commit: true + install_branch: "main" keymap_patterns: "config/*.keymap" config_path: "keymap-drawer/config.yaml" output_folder: "keymap-drawer" diff --git a/config/combos.dtsi b/config/combos.dtsi new file mode 100644 index 0000000..f718a76 --- /dev/null +++ b/config/combos.dtsi @@ -0,0 +1,76 @@ +/* KEY POSITIONS +34 keys: + + ╭────────────────────╮ ╭────────────────────╮ + │ 0 1 2 3 4 │ │ 5 6 7 8 9 │ + │ 10 11 12 13 14 │ │ 15 16 17 18 19 │ + │ 20 21 22 23 24 │ │ 25 26 27 28 29 │ + ╰───────────╮ 30 31 │ │ 32 33 ╭───────────╯ + ╰────────╯ ╰────────╯ +*/ + +#define COMBO(NAME, BINDINGS, KEYPOS, LAYERS, TIMEOUT, ...) \ + combo_##NAME { \ + timeout-ms = ; \ + bindings = ; \ + key-positions = ; \ + layers = ; \ + require-prior-idle-ms = <150>; \ + __VA_ARGS__ \ + }; + +#define COMBO_TERM_FAST 30 +#define COMBO_TERM_SLOW 40 + +#define HRC_TAB &hml LA(LCTRL) TAB +#define HRC_REPEAT &hml_repeat LS(LCTRL) 0 +#define HRC_LPAR &hmr_lpar_lt LS(LCTRL) 0 +#define HRC_RPAR &hmr_rpar_gt LA(LCTRL) 0 +#define HRC_PAR &hmr_par_lgt LS(LALT) 0 + +/ { + combos { + compatible = "zmk,combos"; + + COMBO(esc, &kp ESC, 1 2, DEF FUN NUM, COMBO_TERM_SLOW) + COMBO(enter, &kp RET, 2 3, DEF FUN NUM, COMBO_TERM_SLOW) + COMBO(ger, &sl GER, 1 3, DEF, COMBO_TERM_SLOW) + + COMBO(tab, HRC_TAB, 11 12, DEF FUN NUM, COMBO_TERM_SLOW) + COMBO(repeat, HRC_REPEAT, 12 13, DEF FUN NUM, COMBO_TERM_SLOW) + + COMBO(lbkt, &lbkt_lbrc, 6 7, DEF, COMBO_TERM_SLOW) + COMBO(rbkt, &rbkt_rbrc, 7 8, DEF, COMBO_TERM_SLOW) + COMBO(bkt, &bkt_brc, 6 8, DEF, COMBO_TERM_SLOW) + + COMBO(lpar, HRC_LPAR, 16 17, DEF, COMBO_TERM_SLOW) + COMBO(rpar, HRC_RPAR, 17 18, DEF, COMBO_TERM_SLOW) + COMBO(par, HRC_PAR, 16 18, DEF, COMBO_TERM_SLOW) + + COMBO(bspc, &kp BSPC, 26 27, DEF FUN NUM, COMBO_TERM_SLOW) + COMBO(del, &kp DEL, 27 28, DEF FUN NUM, COMBO_TERM_SLOW) + + COMBO(prcnt, &kp DE_PRCNT, 4 14, DEF, COMBO_TERM_FAST) + COMBO(dllr, &kp DE_DLLR, 3 13, DEF, COMBO_TERM_FAST) + COMBO(hash, &kp DE_HASH, 2 12, DEF, COMBO_TERM_FAST) + COMBO(at, &kp DE_AT, 1 11, DEF, COMBO_TERM_FAST) + + COMBO(tilde, &kp DE_TILDE, 14 24, DEF, COMBO_TERM_FAST) + COMBO(equal, &kp DE_EQUAL, 13 23, DEF, COMBO_TERM_FAST) + COMBO(bslh, &kp DE_BSLH, 12 22, DEF, COMBO_TERM_FAST) + COMBO(euro, &kp DE_EURO, 11 21, DEF, COMBO_TERM_FAST) + + COMBO(caret, &kp DE_CARET, 5 15, DEF, COMBO_TERM_FAST) + COMBO(plus, &kp DE_PLUS, 6 16, DEF, COMBO_TERM_FAST) + COMBO(star, &kp DE_STAR, 7 17, DEF, COMBO_TERM_FAST) + COMBO(amps, &kp DE_AMPS, 8 18, DEF, COMBO_TERM_FAST) + COMBO(sect, &kp DE_SECT, 9 19, DEF, COMBO_TERM_FAST) + + COMBO(under, &kp DE_UNDER, 15 25, DEF, COMBO_TERM_FAST) + COMBO(minus, &kp DE_MINUS, 16 26, DEF, COMBO_TERM_FAST) + COMBO(fslh, &kp DE_FSLH, 17 27, DEF, COMBO_TERM_FAST) + COMBO(pipe, &kp DE_PIPE, 18 28, DEF, COMBO_TERM_FAST) + COMBO(deg, &kp DE_DEG, 19 29, DEF, COMBO_TERM_FAST) + + }; +}; \ No newline at end of file diff --git a/config/cradio.keymap b/config/cradio.keymap index 87e9f1b..a8cd3f9 100644 --- a/config/cradio.keymap +++ b/config/cradio.keymap @@ -1,18 +1,37 @@ -/* - * Copyright (c) 2020 The ZMK Contributors - * - * SPDX-License-Identifier: MIT +/* + * Copyright (c) 2020 The ZMK Contributors + * + * SPDX-License-Identifier: MIT */ +#ifndef KEYMAP_DRAWER +#include "keys_de.h" +#endif + #include #include -#include "keys_de.h" #include #include #include +#define TO_STRING(x) #x + +#define DEF 0 +#define NAV 1 +#define NUM 2 +#define FUN 3 +#define HW 4 +#define GER 5 +#define MSE 6 + +#define KEYS_L 0 1 2 3 4 10 11 12 13 14 20 21 22 23 24 // left hand +#define KEYS_R 5 6 7 8 9 15 16 17 18 19 25 26 27 28 29 // right hand +#define THUMBS 30 31 32 33 // thumbs + +#include "combos.dtsi" + &caps_word { - continue-list = ; + continue-list = ; }; &sk { @@ -20,458 +39,72 @@ release-after-ms = <900>; }; -&sl { - ignore-modifiers; +&mt { + quick-tap-ms = <220>; + tapping-term-ms = <220>; }; -/ { - combos { - compatible = "zmk,combos"; - - esc { - bindings = <&kp ESC>; - key-positions = <1 2>; - require-prior-idle-ms = <100>; - timeout-ms = <40>; - layers = <0 1 2>; - }; - - enter { - bindings = <&kp RET>; - key-positions = <2 3>; - require-prior-idle-ms = <100>; - timeout-ms = <40>; - layers = <0 1 2>; - }; - - bspc { - bindings = <&kp BSPC>; - key-positions = <26 27>; - timeout-ms = <40>; - require-prior-idle-ms = <100>; - layers = <0 1 2>; - }; - - del { - bindings = <&kp DEL>; - key-positions = <27 28>; - timeout-ms = <40>; - require-prior-idle-ms = <100>; - layers = <0 1 2>; - }; - - tap { - bindings = <&hml LA(LCTRL) TAB>; - key-positions = <12 11>; - timeout-ms = <40>; - require-prior-idle-ms = <100>; - layers = <0 1 2>; - }; - - repeat { - bindings = <&hml_repeat LS(LCTRL) 0>; - key-positions = <12 13>; - timeout-ms = <40>; - require-prior-idle-ms = <100>; - layers = <0 1 2>; - }; - - lpar { - bindings = <&hmr_lpar_lt LS(LCTRL) 0>; - key-positions = <16 17>; - layers = <0>; - timeout-ms = <40>; - require-prior-idle-ms = <100>; - }; - - rpar { - bindings = <&hmr_rpar_gt LA(LCTRL) 0>; - key-positions = <17 18>; - layers = <0>; - timeout-ms = <40>; - require-prior-idle-ms = <100>; - }; - - lbkt { - bindings = <&lbkt_lbrc>; - key-positions = <6 7>; - layers = <0>; - timeout-ms = <40>; - require-prior-idle-ms = <100>; - }; - - rbkt { - bindings = <&rbkt_rbrc>; - key-positions = <8 7>; - layers = <0>; - timeout-ms = <40>; - require-prior-idle-ms = <100>; - }; - - at { - bindings = <&kp DE_AT>; - key-positions = <1 11>; - layers = <0>; - timeout-ms = <35>; - require-prior-idle-ms = <100>; - }; - - hash { - bindings = <&kp DE_HASH>; - key-positions = <12 2>; - layers = <0>; - timeout-ms = <35>; - require-prior-idle-ms = <100>; - }; - - dllr { - bindings = <&kp DE_DLLR>; - key-positions = <3 13>; - layers = <0>; - timeout-ms = <35>; - require-prior-idle-ms = <100>; - }; - - prcnt { - bindings = <&kp DE_PRCNT>; - key-positions = <14 4>; - layers = <0>; - timeout-ms = <35>; - require-prior-idle-ms = <100>; - }; - - bslh { - bindings = <&kp DE_BSLH>; - key-positions = <22 12>; - layers = <0>; - timeout-ms = <35>; - require-prior-idle-ms = <100>; - }; - - equal { - bindings = <&kp DE_EQUAL>; - key-positions = <23 13>; - layers = <0>; - timeout-ms = <35>; - require-prior-idle-ms = <100>; - }; - - tilde { - bindings = <&kp DE_TILDE>; - key-positions = <24 14>; - layers = <0>; - timeout-ms = <35>; - require-prior-idle-ms = <100>; - }; - - caret { - bindings = <&kp DE_CARET>; - key-positions = <15 5>; - layers = <0>; - timeout-ms = <35>; - require-prior-idle-ms = <100>; - }; - - plus { - bindings = <&kp DE_PLUS>; - key-positions = <6 16>; - layers = <0>; - timeout-ms = <35>; - require-prior-idle-ms = <100>; - }; - - star { - bindings = <&kp DE_STAR>; - key-positions = <17 7>; - layers = <0>; - timeout-ms = <35>; - require-prior-idle-ms = <100>; - }; - - amps { - bindings = <&kp DE_AMPS>; - key-positions = <8 18>; - layers = <0>; - timeout-ms = <35>; - require-prior-idle-ms = <100>; - }; - - sect { - bindings = <&kp DE_SECT>; - key-positions = <9 19>; - layers = <0>; - timeout-ms = <35>; - require-prior-idle-ms = <100>; - }; - - under { - bindings = <&kp DE_UNDER>; - key-positions = <25 15>; - layers = <0>; - timeout-ms = <35>; - require-prior-idle-ms = <100>; - }; - - minus { - bindings = <&kp DE_MINUS>; - key-positions = <16 26>; - layers = <0>; - timeout-ms = <35>; - require-prior-idle-ms = <100>; - }; - - fslh { - bindings = <&kp DE_FSLH>; - key-positions = <17 27>; - layers = <0>; - timeout-ms = <35>; - require-prior-idle-ms = <100>; - }; - - pipe { - bindings = <&kp DE_PIPE>; - key-positions = <28 18>; - layers = <0>; - timeout-ms = <35>; - require-prior-idle-ms = <100>; - }; - - deg { - bindings = <&kp DE_DEG>; - key-positions = <19 29>; - layers = <0>; - timeout-ms = <35>; - require-prior-idle-ms = <100>; - }; - - ger { - bindings = <&sl 5>; - key-positions = <3 1>; - timeout-ms = <40>; - require-prior-idle-ms = <100>; - layers = <0>; - }; - - euro { - bindings = <&kp DE_EURO>; - key-positions = <21 11>; - timeout-ms = <35>; - require-prior-idle-ms = <100>; - layers = <0>; - }; - - par { - bindings = <&hmr_par_lgt LS(LALT) 0>; - key-positions = <16 18>; - timeout-ms = <40>; - require-prior-idle-ms = <100>; - layers = <0>; - }; - - bkt { - bindings = <&bkt_brc>; - key-positions = <6 8>; - timeout-ms = <40>; - require-prior-idle-ms = <100>; - layers = <0>; - }; +#define HM(NAME, TAP, HT_KEYPOS) \ + NAME: NAME { \ + compatible = "zmk,behavior-hold-tap"; \ + label = TO_STRING(HM_ ## NAME); \ + #binding-cells = <2>; \ + tapping-term-ms = <280>; \ + quick-tap-ms = <175>; \ + require-prior-idle-ms = <175>; \ + flavor = "balanced"; \ + bindings = <&kp>, ; \ + hold-trigger-key-positions = ; \ + hold-trigger-on-release; \ }; - behaviors { - td_scw: td_shift_caps_word { - compatible = "zmk,behavior-tap-dance"; - label = "shift on tap, caps_word on double-tap"; - #binding-cells = <0>; - bindings = <&kp LSHIFT>, <&caps_word>, <&kp CLCK>; - - tapping-term-ms = <400>; - }; - - sqt_dqt: sqt_dqt { - compatible = "zmk,behavior-mod-morph"; - label = "SQT_DQT"; - bindings = <&kp DE_SQT>, <&kp DE_DQT>; - - #binding-cells = <0>; - mods = <(MOD_RSFT|MOD_LSFT)>; - }; - - qexcl: qexcl { - compatible = "zmk,behavior-mod-morph"; - label = "QEXCL"; - bindings = <&kp DE_QMARK>, <&kp DE_EXCL>; - - #binding-cells = <0>; - mods = <(MOD_RSFT|MOD_LSFT)>; - }; - - hmr: hmr { - compatible = "zmk,behavior-hold-tap"; - label = "HMR"; - bindings = <&kp>, <&kp>; - - #binding-cells = <2>; - tapping-term-ms = <280>; - quick-tap-ms = <175>; - require-prior-idle-ms = <175>; - flavor = "balanced"; - hold-trigger-on-release; - hold-trigger-key-positions = <0 1 2 3 4 10 11 12 13 14 20 21 22 23 24 30 31 32 33>; - }; - - hml: hml { - compatible = "zmk,behavior-hold-tap"; - label = "HML"; - bindings = <&kp>, <&kp>; - - #binding-cells = <2>; - tapping-term-ms = <280>; - quick-tap-ms = <175>; - require-prior-idle-ms = <175>; - flavor = "balanced"; - hold-trigger-on-release; - hold-trigger-key-positions = <5 6 7 8 9 15 16 17 18 19 25 26 27 28 29 32 33 31 30>; - }; - - ht: ht { - compatible = "zmk,behavior-hold-tap"; - label = "HT"; - bindings = <&kp>, <&kp>; - - #binding-cells = <2>; - flavor = "tap-preferred"; - quick-tap-ms = <220>; - tapping-term-ms = <220>; - }; - - masked_home: masked_home { - compatible = "zmk,behavior-mod-morph"; - label = "MASKED_HOME"; - bindings = <&kp HOME>, <&kp HOME>; - - #binding-cells = <0>; - mods = <(MOD_LCTL|MOD_RCTL)>; - }; - - masked_end: masked_end { - compatible = "zmk,behavior-mod-morph"; - label = "MASKED_END"; - bindings = <&kp END>, <&kp END>; - - #binding-cells = <0>; - mods = <(MOD_LCTL|MOD_RCTL)>; - }; - - ht_home: ht_home { - compatible = "zmk,behavior-hold-tap"; - label = "HT_HOME"; - bindings = <&masked_home>, <&kp>; - - #binding-cells = <2>; - flavor = "tap-preferred"; - quick-tap-ms = <220>; - tapping-term-ms = <220>; - }; - - ht_end: ht_end { - compatible = "zmk,behavior-hold-tap"; - label = "HT_END"; - bindings = <&masked_end>, <&kp>; - - #binding-cells = <2>; - flavor = "tap-preferred"; - quick-tap-ms = <220>; - tapping-term-ms = <220>; - }; - - mo_tog: mo_tog { - compatible = "zmk,behavior-hold-tap"; - label = "MO_TOG"; - bindings = <&mo>, <&tog>; - - #binding-cells = <2>; - tapping-term-ms = <100>; - }; - - hml_repeat: hml_repeat { - compatible = "zmk,behavior-hold-tap"; - label = "HML_REPEAT"; - bindings = <&kp>, <&key_repeat>; - - #binding-cells = <2>; - tapping-term-ms = <280>; - quick-tap-ms = <175>; - require-prior-idle-ms = <175>; - flavor = "balanced"; - hold-trigger-on-release; - hold-trigger-key-positions = <5 6 7 8 9 15 16 17 18 19 25 26 27 28 29 32 33 31 30>; - }; - - lpar_lt: lpar_lt { - compatible = "zmk,behavior-mod-morph"; - label = "LPAR_LT"; - bindings = <&kp DE_LPAR>, <&kp DE_LT>; - - #binding-cells = <0>; - mods = <(MOD_RSFT|MOD_LSFT)>; - }; - - rpar_gt: rpar_gt { - compatible = "zmk,behavior-mod-morph"; - label = "RPAR_GT"; - bindings = <&kp DE_RPAR>, <&kp DE_GT>; +#define SM(NAME, TAP, SHIFTED) \ + NAME: NAME { \ + compatible = "zmk,behavior-mod-morph"; \ + label = TO_STRING(SM_ ## NAME); \ + bindings = , ; \ + #binding-cells = <0>; \ + mods = <(MOD_RSFT|MOD_LSFT)>; \ + }; + +#define TD(NAME, T_TERM, TAP1, TAP2, ...) \ + NAME: NAME { \ + compatible = "zmk,behavior-tap-dance"; \ + label = TO_STRING(TD_ ## NAME); \ + #binding-cells = <0>; \ + tapping-term-ms = <270>; \ + bindings = , __VA_OPT__(, <)__VA_ARGS__ __VA_OPT__(>); \ + }; - #binding-cells = <0>; - mods = <(MOD_RSFT|MOD_LSFT)>; - }; +/ { - lbkt_lbrc: lbkt_lbrc { - compatible = "zmk,behavior-mod-morph"; - label = "LBKT_LBRC"; - bindings = <&kp DE_LEFT_BRACKET>, <&kp DE_LBRC>; + behaviors { - #binding-cells = <0>; - mods = <(MOD_RSFT|MOD_LSFT)>; - }; + HM(hml, &kp, KEYS_R) + HM(hml_repeat, &key_repeat, KEYS_R) - rbkt_rbrc: rbkt_rbrc { - compatible = "zmk,behavior-mod-morph"; - label = "RBKT_RBRC"; - bindings = <&kp DE_RBKT>, <&kp DE_RBRC>; + HM(hmr, &kp, KEYS_L) + HM(hmr_lpar_lt, &lpar_lt, KEYS_L) + HM(hmr_rpar_gt, &rpar_gt, KEYS_L) + HM(hmr_par_lgt, &par_lgt, KEYS_L) - #binding-cells = <0>; - mods = <(MOD_RSFT|MOD_LSFT)>; - }; + SM(qexcl, &kp DE_QMARK, &kp DE_EXCL) - hmr_lpar_lt: hmr_lpar_lt { - compatible = "zmk,behavior-hold-tap"; - label = "HMR_LPAR_LT"; - bindings = <&kp>, <&lpar_lt>; + SM(sqt_dqt, &kp DE_SQT, &kp DE_DQT) + SM(sqt_dqt_macro, &sqt_macro, &dqt_macro) - #binding-cells = <2>; - tapping-term-ms = <280>; - quick-tap-ms = <175>; - require-prior-idle-ms = <150>; - flavor = "balanced"; - hold-trigger-on-release; - hold-trigger-key-positions = <0 1 2 3 4 10 11 12 13 14 20 21 22 23 24 30 31 32 33>; - }; + SM(lpar_lt, &kp DE_LPAR, &kp DE_LT) + SM(rpar_gt, &kp DE_RPAR, &kp DE_GT) + SM(par_lgt, &par_macro, &lgt_macro) - hmr_rpar_gt: hmr_rpar_gt { - compatible = "zmk,behavior-hold-tap"; - label = "HMR_RPAR_GT"; - bindings = <&kp>, <&rpar_gt>; + SM(lbkt_lbrc, &kp DE_LBKT, &kp DE_LBRC) + SM(rbkt_rbrc, &kp DE_RBKT, &kp DE_RBRC) + SM(bkt_brc, &bkt_macro, &brc_macro) - #binding-cells = <2>; - tapping-term-ms = <280>; - quick-tap-ms = <175>; - require-prior-idle-ms = <150>; - flavor = "balanced"; - hold-trigger-on-release; - hold-trigger-key-positions = <0 1 2 3 4 10 11 12 13 14 20 21 22 23 24 30 31 32 33>; - }; + TD(td_scw, 400, &kp LSHIFT, &caps_word, &kp CLCK) + TD(td_sqt_dqt, 270, &sqt_dqt, &sqt_dqt_macro) - mt_td_scw: mt_td_scw { + mt_td_scw: mt_td_scw { // wrapper for tap-dance, workaround for #1691 compatible = "zmk,behavior-hold-tap"; label = "MT_TD_SCW"; bindings = <&kp>, <&td_scw>; @@ -479,201 +112,124 @@ #binding-cells = <2>; tapping-term-ms = <200>; }; - - par_lgt: par_lgt { - compatible = "zmk,behavior-mod-morph"; - label = "PAR_LGT"; - bindings = <&par_macro>, <&lgt_macro>; - - #binding-cells = <0>; - mods = <(MOD_RSFT|MOD_LSFT)>; - }; - - bkt_brc: bkt_brc { - compatible = "zmk,behavior-mod-morph"; - label = "BKT_BRC"; - bindings = <&bkt_macro>, <&brc_macro>; - - #binding-cells = <0>; - mods = <(MOD_RSFT|MOD_LSFT)>; - }; - - hmr_par_lgt: hmr_par_lgt { - compatible = "zmk,behavior-hold-tap"; - label = "HMR_PAR_LGT"; - bindings = <&kp>, <&par_lgt>; - - #binding-cells = <2>; - tapping-term-ms = <280>; - quick-tap-ms = <175>; - require-prior-idle-ms = <150>; - flavor = "balanced"; - hold-trigger-on-release; - hold-trigger-key-positions = <0 1 2 3 4 10 11 12 13 14 20 21 22 23 24 30 31 32 33>; - }; - - sqt_dqt_macro: sqt_dqt_macro { - compatible = "zmk,behavior-mod-morph"; - label = "SQT_DQT_MACRO"; - bindings = <&sqt_macro>, <&dqt_macro>; - - #binding-cells = <0>; - mods = <(MOD_RSFT|MOD_LSFT)>; - }; - - td_sqt_dqt: td_sqt_dqt { - compatible = "zmk,behavior-tap-dance"; - label = "TD_SQT_DQT"; - #binding-cells = <0>; - bindings = <&sqt_dqt>, <&sqt_dqt_macro>; - - tapping-term-ms = <270>; - }; }; macros { - par_macro: par_macro { - compatible = "zmk,behavior-macro"; - #binding-cells = <0>; + ZMK_MACRO(par_macro, bindings = <&kp DE_LPAR &kp DE_RPAR &kp LEFT>; - label = "PAR_MACRO"; - }; + ) - bkt_macro: bkt_macro { - compatible = "zmk,behavior-macro"; - #binding-cells = <0>; + ZMK_MACRO(bkt_macro, bindings = <&kp DE_LBKT &kp DE_RBKT &kp LEFT>; - label = "BKT_MACRO"; - }; + ) + + ZMK_MACRO(brc_macro, + bindings = <&kp DE_LBRC &kp DE_RBRC &kp LEFT>; + ) - sqt_macro: sqt_macro { - compatible = "zmk,behavior-macro"; - #binding-cells = <0>; + ZMK_MACRO(sqt_macro, bindings = <&kp DE_SQT &kp DE_SQT &kp LEFT>; - label = "SQT_MACRO"; - }; + ) - dqt_macro: dqt_macro { - compatible = "zmk,behavior-macro"; - #binding-cells = <0>; + ZMK_MACRO(lgt_macro, bindings = - <&kp DE_DQT &kp DE_DQT>, + <&kp DE_LT &kp DE_GT>, <¯o_release>, <&kp LSHFT>, <¯o_tap>, <&kp LEFT>; + ) - label = "DQT_MACRO"; - }; - - brc_macro: brc_macro { - compatible = "zmk,behavior-macro"; - #binding-cells = <0>; - bindings = <&kp DE_LBRC &kp DE_RBRC &kp LEFT>; - label = "BRC_MACRO"; - }; - - lgt_macro: lgt_macro { - compatible = "zmk,behavior-macro"; - #binding-cells = <0>; + ZMK_MACRO(dqt_macro, bindings = - <&kp DE_LT &kp DE_GT>, + <&kp DE_DQT &kp DE_DQT>, <¯o_release>, <&kp LSHFT>, <¯o_tap>, <&kp LEFT>; + ) + }; + + conditional_layers { + compatible = "zmk,conditional-layers"; - label = "LGT_MACRO"; + tri_layer { + if-layers =