// // TOTEM — simple-ass learn-to-type keymap // Base: all letters + minus | UML hold: numbers 1-0 + umlauts (needs German OS layout) // #include #include #define BASE 0 #define UML 1 / { macros { uml_a: uml_a { label = "UMLA"; compatible = "zmk,behavior-macro"; #binding-cells = <0>; bindings = <¯o_press &kp RALT>, <¯o_tap &kp A>, <¯o_release &kp RALT>; }; uml_o: uml_o { label = "UMLO"; compatible = "zmk,behavior-macro"; #binding-cells = <0>; bindings = <¯o_press &kp RALT>, <¯o_tap &kp O>, <¯o_release &kp RALT>; }; uml_u: uml_u { label = "UMLU"; compatible = "zmk,behavior-macro"; #binding-cells = <0>; bindings = <¯o_press &kp RALT>, <¯o_tap &kp U>, <¯o_release &kp RALT>; }; uml_s: uml_s { label = "UMLS"; compatible = "zmk,behavior-macro"; #binding-cells = <0>; bindings = <¯o_press &kp RALT>, <¯o_tap &kp S>, <¯o_release &kp RALT>; }; }; keymap { compatible = "zmk,keymap"; base_layer { // ╔═════════════════════════════════════════╗ label = "BASE"; // ╚═════════════════════════════════════════╝ // ┏━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┓ ┏━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┓ // ┃ Q ┃ W ┃ E ┃ R ┃ T ┃ ┃ Y ┃ U ┃ I ┃ O ┃ P ┃ // ┣━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━┫ ┣━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━┫ // ┃ A ┃ S ┃ D ┃ F ┃ G ┃ ┃ H ┃ J ┃ K ┃ L ┃ - ┃ // ┏━━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━┫ ┣━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━━┓ // ┃ SHIFT ┃ Z ┃ X ┃ C ┃ V ┃ B ┃ ┃ N ┃ M ┃ ┃ ┃ ┃ ┃ // ┗━━━━━━━━━━━━┻━━━━━━━━━━━┻━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━┫ ┣━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━┻━━━━━━━━━━━┻━━━━━━━━━━━━┛ // ┃ SPACE ┃ UML ┃ ENTER ┃ ┃ BACK ┃ . ┃ , ┃ // ┗━━━━━━━━━━━┻━━━━━━━━━━━┻━━━━━━━━━━━┛ ┗━━━━━━━━━━━┻━━━━━━━━━━━┻━━━━━━━━━━━┛ bindings = < // ╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp MINUS &kp LSHFT &kp Z &kp X &kp C &kp V &kp B &kp N &kp M &none &none &none &none &kp SPACE &mo UML &kp RET &kp DOT &kp COMMA &kp BSPC >; }; uml_layer { // ╔═════════════════════════════════════════╗ label = "UML"; // ╚═════════════════════════════════════════╝ // ┏━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┓ ┏━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┓ // ┃ 1 ┃ 2 ┃ 3 ┃ 4 ┃ 5 ┃ ┃ ┃ Ü ┃ ┃ Ö ┃ ┃ // ┣━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━┫ ┣━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━┫ // ┃ Ä ┃ ß ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ // ┏━━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━┫ ┣━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━━┓ // ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ 6 ┃ 7 ┃ 8 ┃ 9 ┃ 0 ┃ ┃ // ┗━━━━━━━━━━━━┻━━━━━━━━━━━┻━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━┫ ┣━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━┻━━━━━━━━━━━┻━━━━━━━━━━━━┛ // ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ // ┗━━━━━━━━━━━┻━━━━━━━━━━━┻━━━━━━━━━━━┛ ┗━━━━━━━━━━━┻━━━━━━━━━━━┻━━━━━━━━━━━┛ bindings = < // ╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &none ¨_u &none ¨_o &none ¨_a ¨_s &none &none &none &none &none &none &none &none &trans &none &none &none &none &none &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &none &trans &trans &trans &trans &trans &trans >; }; }; };