// Copyright (c) 2022 The ZMK Contributors // SPDX-License-Identifier: MIT #include #include #include // Home row mods macro #define HRML(k1,k2,k3,k4) &ht LSHFT k1 &ht LALT k2 &ht LCTRL k3 &ht LGUI k4 #define HRMR(k1,k2,k3,k4) &ht RGUI k1 &ht RCTRL k2 &ht RALT k3 &ht RSHFT k4 / { left_key_matrix { compatible = "zmk,matrix-transform"; rows = <4>; // 3 rows columns = <6>; // 3 columns row-gpios = <&gpio0 1 GPIO_ACTIVE_LOW>, // Pin for row 1 <&gpio0 0 GPIO_ACTIVE_LOW>, // Pin for row 2 <&gpio0 2 GPIO_ACTIVE_LOW>, // Pin for row 3 <&gpio0 3 GPIO_ACTIVE_LOW>; // Pin for row 4 col-gpios = <&gpio0 19 GPIO_ACTIVE_LOW>, // Pin for column 1 <&gpio0 18 GPIO_ACTIVE_LOW>, // Pin for column 2 <&gpio0 15 GPIO_ACTIVE_LOW>, // Pin for column 3 <&gpio0 14 GPIO_ACTIVE_LOW>, // Pin for column 4 <&gpio0 16 GPIO_ACTIVE_LOW>, // Pin for column 5 <&gpio0 10 GPIO_ACTIVE_LOW>; // Pin for column 6 // The map property defines the row/column positions for the key matrix map = <0 0>, <0 1>, <0 2>, <0 3>, <0 4>, // Row 0 <1 0>, <1 1>, <1 2>, <1 3>, <1 4>, // Row 1 <2 0>, <2 1>, <2 2>, <2 3>, <2 4>, // Row 2 <3 3>, <3 4>, <3 5>; // Row 3 aka thumb cluster }; right_key_matrix { compatible = "zmk,matrix-transform"; rows = <4>; // 3 rows columns = <6>; // 3 columns row-gpios = <&gpio0 1 GPIO_ACTIVE_LOW>, // Pin for row 1 <&gpio0 0 GPIO_ACTIVE_LOW>, // Pin for row 2 <&gpio0 2 GPIO_ACTIVE_LOW>, // Pin for row 3 <&gpio0 3 GPIO_ACTIVE_LOW>; // Pin for row 4 col-gpios = <&gpio0 19 GPIO_ACTIVE_LOW>, // Pin for column 1 <&gpio0 18 GPIO_ACTIVE_LOW>, // Pin for column 2 <&gpio0 15 GPIO_ACTIVE_LOW>, // Pin for column 3 <&gpio0 14 GPIO_ACTIVE_LOW>, // Pin for column 4 <&gpio0 16 GPIO_ACTIVE_LOW>, // Pin for column 5 <&gpio0 10 GPIO_ACTIVE_LOW>; // Pin for column 6 // The map property defines the row/column positions for the key matrix map = <0 1>, <0 2>, <0 3>, <0 4>, <0 5>, // Row 0 <1 1>, <1 2>, <1 3>, <1 4>, <1 5>, // Row 1 <2 1>, <2 2>, <2 3>, <2 4>, <2 5>, // Row 2 <3 0>, <3 1>, <3 2>; // Row 3 aka thumb cluster }; behaviors { ht: hold_tap { compatible = "zmk,behavior-hold-tap"; #binding-cells = <2>; flavor = "tap-preferred"; tapping-term-ms = <220>; quick-tap-ms = <150>; require-prior-idle-ms = <100>; bindings = <&kp>, <&kp>; }; }; conditional_layers { compatible = "zmk,conditional-layers"; tri_layer { if-layers = <1 2>; then-layer = <3>; }; }; keymap { compatible = "zmk,keymap"; default_layer { bindings = < //╭──────────┬──────────┬──────────┬──────────┬──────────╮ ╭──────────┬──────────┬──────────┬──────────┬──────────╮ //│ Q │ W │ E │ R │ T │ │ Y │ U │ I │ O │ P │ &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P //├──────────┼──────────┼──────────┼──────────┼──────────┤ ├──────────┼──────────┼──────────┼──────────┼──────────┤ //│ A │ S │ D │ F │ G │ │ H │ J │ K │ L │ ' " │ HRML(A, S, D, F) &kp G &kp H HRMR(J, K, L, SQT) //├──────────┼──────────┼──────────┼──────────┼──────────┤ ├──────────┼──────────┼──────────┼──────────┼──────────┤ //│ Z │ X │ C │ V │ B │ │ N │ M │ , < │ . > │ / ? │ &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &kp COMMA &kp DOT &kp FSLH //╰──────────┴──────────┴──────────┼──────────┼──────────┼──────────╮ ╭──────────┼──────────┼──────────┴──────────┴──────────┴──────────╯ < 2 TAB &kp ENTER &kp ENTER &kp SPACE &kp SPACE < 1 BSPC // ╰──────────┴──────────┴──────────╯ ╰──────────┴──────────┴──────────╯ >; }; right_layer { bindings = < //╭──────────┬──────────┬──────────┬──────────┬──────────╮ ╭──────────┬──────────┬──────────┬──────────┬──────────╮ //│ INSERT │ 1 │ 2 │ 3 │ │ │ HOME │ PAGE DN │ PAGE UP │ END │ : │ &kp INS &kp N1 &kp N2 &kp N3 &trans &kp HOME &kp PG_DN &kp PG_UP &kp END &kp COLON //├──────────┼──────────┼──────────┼──────────┼──────────┤ ├──────────┼──────────┼──────────┼──────────┼──────────┤ //│ DELETE │ 4 │ 5 │ 6 │ │ │ LEFT │ DOWN │ UP │ RIGHT │ ; │ &kp DEL &kp N4 &kp N5 &kp N6 &trans &kp LEFT &kp DOWN &kp UP &kp RIGHT &kp SEMI //├──────────┼──────────┼──────────┼──────────┼──────────┤ ├──────────┼──────────┼──────────┼──────────┼──────────┤ //│ CAPS │ 7 │ 8 │ 9 │ 0 │ │ │ │ │ │ │ &caps_word &kp N7 &kp N8 &kp N9 &kp N0 &trans &trans &trans &trans &trans //╰──────────┴──────────┴──────────┼──────────┼──────────┤ ├──────────┼──────────┼──────────┴──────────┴──────────╯ &trans &kp ESC &trans &trans // ╰──────────┴──────────╯ ╰──────────┴──────────╯ >; }; left_layer { bindings = < //╭──────────┬──────────┬──────────┬──────────┬──────────╮ ╭──────────┬──────────┬──────────┬──────────┬──────────╮ //│ │ [ │ { │ } │ │ │ ^ │ ( │ ) │ ] │ ~ │ &trans &kp LBKT &kp LBRC &kp RBRC &trans &kp CARET &kp LPAR &kp RPAR &kp RBKT &kp TILDE //├──────────┼──────────┼──────────┼──────────┼──────────┤ ├──────────┼──────────┼──────────┼──────────┼──────────┤ //│ ! │ @ │ # │ $ │ % │ │ * │ - │ = │ \ │ ` │ &kp EXCL &kp AT &kp HASH &kp DLLR &kp PRCNT &kp ASTRK &kp MINUS &kp EQUAL &kp BSLH &kp GRAVE //├──────────┼──────────┼──────────┼──────────┼──────────┤ ├──────────┼──────────┼──────────┼──────────┼──────────┤ //│ │ │ │ │ │ │ & │ _ │ + │ │ │ │ &trans &trans &trans &trans &trans &kp AMPS &kp UNDER &kp PLUS &kp PIPE &trans //╰──────────┴──────────┴──────────┼──────────┼──────────┤ ├──────────┼──────────┼──────────┴──────────┴──────────╯ &trans &trans &trans &trans // ╰──────────┴──────────╯ ╰──────────┴──────────╯ >; }; tri_layer { bindings = < //╭──────────┬──────────┬──────────┬──────────┬──────────╮ ╭──────────┬──────────┬──────────┬──────────┬──────────╮ //│ RESET │ │ │ │PROFILE 0 │ │ │ │ │ │ RESET │ &sys_reset &trans &trans &trans &bt BT_SEL 0 &trans &trans &trans &trans &sys_reset //├──────────┼──────────┼──────────┼──────────┼──────────┤ ├──────────┼──────────┼──────────┼──────────┼──────────┤ //│BOOTLOADER│ │ │ │PROFILE 1 │ │ │ │ │ │BOOTLOADER│ &bootloader &trans &trans &trans &bt BT_SEL 1 &trans &trans &trans &trans &bootloader //├──────────┼──────────┼──────────┼──────────┼──────────┤ ├──────────┼──────────┼──────────┼──────────┼──────────┤ //│ │ │ │ CLEAR BT │PROFILE 2 │ │ │ │ │ │ │ &trans &trans &trans &bt BT_CLR &bt BT_SEL 2 &trans &trans &trans &trans &trans //╰──────────┴──────────┴──────────┼──────────┼──────────┤ ├──────────┼──────────┼──────────┴──────────┴──────────╯ &trans &trans &trans &trans // ╰──────────┴──────────╯ ╰──────────┴──────────╯ >; }; }; };