/* * Copyright (c) 2020 The ZMK Contributors * Copyright (c) 2023 Innaworks Development Limited, trading as MoErgo * * SPDX-License-Identifier: MIT */ /* THIS FILE WAS GENERATED BY GLOVE80 LAYOUT EDITOR * * This file was generated automatically. You may or may not want to * edit it directly. */ #include /* Include all behavior includes needed */ #include #include #include #include /* Automatically generated layer name #define */ #define LAYER_QWERTY 0 #define LAYER_Engrammer 1 #define LAYER_Engram 2 #define LAYER_Dvorak 3 #define LAYER_ColemakDHm 4 #define LAYER_Colemak 5 #define LAYER_Norman 6 #define LAYER_Workman 7 #define LAYER_Halmak 8 #define LAYER_Typing 9 #define LAYER_LeftPinky 10 #define LAYER_LeftRing1 11 #define LAYER_LeftRing2 12 #define LAYER_LeftMiddy 13 #define LAYER_LeftIndex 14 #define LAYER_RightPinky 15 #define LAYER_RightRing1 16 #define LAYER_RightRing2 17 #define LAYER_RightMiddy 18 #define LAYER_RightIndex 19 #define LAYER_Cursor 20 #define LAYER_Number 21 #define LAYER_Function 22 #define LAYER_Emoji 23 #define LAYER_Symbol 24 #define LAYER_Mouse 25 #define LAYER_System 26 #define LAYER_World 27 #define LAYER_Gaming 28 #define LAYER_Factory 29 #define LAYER_Lower 30 #define LAYER_Magic 31 /* To deal with the situation where there is no Lower layer, to keep &lower happy */ #ifndef LAYER_Lower #define LAYER_Lower 0 #endif /* Custom Device-tree */ /* Glove80 system behavior & macros */ / { behaviors { // For the "layer" key, it'd nice to be able to use it as either a shift or a toggle. // Configure it as a tap dance, so the first tap (or hold) is a &mo and the second tap is a &to lower: lower { compatible = "zmk,behavior-tap-dance"; label = "LAYER_TAP_DANCE"; #binding-cells = <0>; tapping-term-ms = <200>; bindings = <&mo LAYER_Lower>, <&to LAYER_Lower>; }; }; }; / { macros { rgb_ug_status_macro: rgb_ug_status_macro { label = "RGB_UG_STATUS"; compatible = "zmk,behavior-macro"; #binding-cells = <0>; bindings = <&rgb_ug RGB_STATUS>; }; }; }; / { #ifdef BT_DISC_CMD behaviors { bt_0: bt_0 { compatible = "zmk,behavior-tap-dance"; label = "BT_0"; #binding-cells = <0>; tapping-term-ms = <200>; bindings = <&bt_select_0>, <&bt BT_DISC 0>; }; bt_1: bt_1 { compatible = "zmk,behavior-tap-dance"; label = "BT_1"; #binding-cells = <0>; tapping-term-ms = <200>; bindings = <&bt_select_1>, <&bt BT_DISC 1>; }; bt_2: bt_2 { compatible = "zmk,behavior-tap-dance"; label = "BT_2"; #binding-cells = <0>; tapping-term-ms = <200>; bindings = <&bt_select_2>, <&bt BT_DISC 2>; }; bt_3: bt_3 { compatible = "zmk,behavior-tap-dance"; label = "BT_3"; #binding-cells = <0>; tapping-term-ms = <200>; bindings = <&bt_select_3>, <&bt BT_DISC 3>; }; }; macros { bt_select_0: bt_select_0 { label = "BT_SELECT_0"; compatible = "zmk,behavior-macro"; #binding-cells = <0>; bindings = <&out OUT_BLE>, <&bt BT_SEL 0>; }; bt_select_1: bt_select_1 { label = "BT_SELECT_1"; compatible = "zmk,behavior-macro"; #binding-cells = <0>; bindings = <&out OUT_BLE>, <&bt BT_SEL 1>; }; bt_select_2: bt_select_2 { label = "BT_SELECT_2"; compatible = "zmk,behavior-macro"; #binding-cells = <0>; bindings = <&out OUT_BLE>, <&bt BT_SEL 2>; }; bt_select_3: bt_select_3 { label = "BT_SELECT_3"; compatible = "zmk,behavior-macro"; #binding-cells = <0>; bindings = <&out OUT_BLE>, <&bt BT_SEL 3>; }; }; #else macros { bt_0: bt_0 { label = "BT_0"; compatible = "zmk,behavior-macro"; #binding-cells = <0>; bindings = <&out OUT_BLE>, <&bt BT_SEL 0>; }; bt_1: bt_1 { label = "BT_1"; compatible = "zmk,behavior-macro"; #binding-cells = <0>; bindings = <&out OUT_BLE>, <&bt BT_SEL 1>; }; bt_2: bt_2 { label = "BT_2"; compatible = "zmk,behavior-macro"; #binding-cells = <0>; bindings = <&out OUT_BLE>, <&bt BT_SEL 2>; }; bt_3: bt_3 { label = "BT_3"; compatible = "zmk,behavior-macro"; #binding-cells = <0>; bindings = <&out OUT_BLE>, <&bt BT_SEL 3>; }; }; #endif }; / { behaviors { magic: magic { compatible = "zmk,behavior-hold-tap"; label = "MAGIC_HOLD_TAP"; #binding-cells = <2>; flavor = "tap-preferred"; tapping-term-ms = <200>; bindings = <&mo>, <&rgb_ug_status_macro>; }; }; }; /* #define for key positions */ #define POS_LH_T1 52 #define POS_LH_T2 53 #define POS_LH_T3 54 #define POS_LH_T4 69 #define POS_LH_T5 70 #define POS_LH_T6 71 #define POS_LH_C1R2 15 #define POS_LH_C1R3 27 #define POS_LH_C1R4 39 #define POS_LH_C1R5 51 #define POS_LH_C2R1 4 #define POS_LH_C2R2 14 #define POS_LH_C2R3 26 #define POS_LH_C2R4 38 #define POS_LH_C2R5 50 #define POS_LH_C2R6 68 #define POS_LH_C3R1 3 #define POS_LH_C3R2 13 #define POS_LH_C3R3 25 #define POS_LH_C3R4 37 #define POS_LH_C3R5 49 #define POS_LH_C3R6 67 #define POS_LH_C4R1 2 #define POS_LH_C4R2 12 #define POS_LH_C4R3 24 #define POS_LH_C4R4 36 #define POS_LH_C4R5 48 #define POS_LH_C4R6 66 #define POS_LH_C5R1 1 #define POS_LH_C5R2 11 #define POS_LH_C5R3 23 #define POS_LH_C5R4 35 #define POS_LH_C5R5 47 #define POS_LH_C5R6 65 #define POS_LH_C6R1 0 #define POS_LH_C6R2 10 #define POS_LH_C6R3 22 #define POS_LH_C6R4 34 #define POS_LH_C6R5 46 #define POS_LH_C6R6 64 #define POS_RH_T1 57 #define POS_RH_T2 56 #define POS_RH_T3 55 #define POS_RH_T4 74 #define POS_RH_T5 73 #define POS_RH_T6 72 #define POS_RH_C1R2 16 #define POS_RH_C1R3 28 #define POS_RH_C1R4 40 #define POS_RH_C1R5 58 #define POS_RH_C2R1 5 #define POS_RH_C2R2 17 #define POS_RH_C2R3 29 #define POS_RH_C2R4 41 #define POS_RH_C2R5 59 #define POS_RH_C2R6 75 #define POS_RH_C3R1 6 #define POS_RH_C3R2 18 #define POS_RH_C3R3 30 #define POS_RH_C3R4 42 #define POS_RH_C3R5 60 #define POS_RH_C3R6 76 #define POS_RH_C4R1 7 #define POS_RH_C4R2 19 #define POS_RH_C4R3 31 #define POS_RH_C4R4 43 #define POS_RH_C4R5 61 #define POS_RH_C4R6 77 #define POS_RH_C5R1 8 #define POS_RH_C5R2 20 #define POS_RH_C5R3 32 #define POS_RH_C5R4 44 #define POS_RH_C5R5 62 #define POS_RH_C5R6 78 #define POS_RH_C6R1 9 #define POS_RH_C6R2 21 #define POS_RH_C6R3 33 #define POS_RH_C6R4 45 #define POS_RH_C6R5 63 #define POS_RH_C6R6 79 /* Custom Defined Behaviors */ / { // NOTE: Use the `#define` settings below to customize this keymap! // For example, here are the main optional features you can enable: #define DIFFICULTY_LEVEL 4 // 0:custom, 1:easy -> 5:hard (see below) #define ENFORCE_BILATERAL // cancels single-handed home row mod+tap #define WORLD_USE_COMPOSE // use native Compose in place of Unicode #define OPERATING_SYSTEM 'L' // linux // TIP: Add more setting overrides here instead of editing them below. // Swap the shift and ctrl keys. #define LEFT_MIDDY_MOD LSHFT #define RIGHT_MIDDY_MOD RSHFT #define LEFT_INDEX_MOD LCTRL #define RIGHT_INDEX_MOD RCTRL ////////////////////////////////////////////////////////////////////////////// // // Sunaku's Keymap v36 -- "Glorious Engrammer" // - https://github.com/sunaku/glove80-keymaps // ////////////////////////////////////////////////////////////////////////////// // // DIFFICULTY_LEVEL specifies your level of expertise with this keymap. // It's meant to help newcomers gradually work their way up to mastery. // You can disable this setting by omitting it or assigning a `0` zero. // // #define DIFFICULTY_LEVEL 0 // custom (see defaults below) // #define DIFFICULTY_LEVEL 1 // novice (500ms) // #define DIFFICULTY_LEVEL 2 // slower (400ms) // #define DIFFICULTY_LEVEL 3 // normal (300ms) // #define DIFFICULTY_LEVEL 4 // faster (200ms) // #define DIFFICULTY_LEVEL 5 // expert (100ms) // #if defined(DIFFICULTY_LEVEL) && DIFFICULTY_LEVEL > 0 #define DIFFICULTY_LEVEL_HOLDING_TIME ((6 - DIFFICULTY_LEVEL) * 100) #define DIFFICULTY_LEVEL_STREAK_DECAY (((6 - DIFFICULTY_LEVEL) * 50) + 100) #ifndef HOMEY_HOLDING_TIME #define HOMEY_HOLDING_TIME DIFFICULTY_LEVEL_HOLDING_TIME #endif #ifndef HOMEY_STREAK_DECAY #define HOMEY_STREAK_DECAY DIFFICULTY_LEVEL_STREAK_DECAY #endif #ifndef INDEX_HOLDING_TIME #define INDEX_HOLDING_TIME DIFFICULTY_LEVEL_HOLDING_TIME #endif #ifndef INDEX_STREAK_DECAY #define INDEX_STREAK_DECAY DIFFICULTY_LEVEL_STREAK_DECAY #endif #ifndef PLAIN_HOLDING_TIME #define PLAIN_HOLDING_TIME DIFFICULTY_LEVEL_HOLDING_TIME #endif #ifndef PLAIN_STREAK_DECAY #define PLAIN_STREAK_DECAY DIFFICULTY_LEVEL_STREAK_DECAY #endif #ifndef SPACE_HOLDING_TIME #define SPACE_HOLDING_TIME DIFFICULTY_LEVEL_HOLDING_TIME #endif #ifndef SPACE_STREAK_DECAY #define SPACE_STREAK_DECAY DIFFICULTY_LEVEL_STREAK_DECAY #endif #endif // // OPERATING_SYSTEM defines which operating system you intend to use // with this keymap, because shortcuts vary across operating systems. // // - https://zmk.dev/docs/codes // - https://en.wikipedia.org/wiki/Table_of_keyboard_shortcuts // #ifndef OPERATING_SYSTEM #define OPERATING_SYSTEM 'L' // linux //#define OPERATING_SYSTEM 'M' // macos //#define OPERATING_SYSTEM 'W' // windows #endif #if OPERATING_SYSTEM == 'M' #define _C LG #define _A_TAB LGUI #define _G_TAB LALT #define _REDO _C(LS(Z)) #define _POWER K_POWER #define _W LA #define _HOME _C(LEFT) #define _END _C(RIGHT) #else #define _C LC #define _A_TAB LALT #define _G_TAB LGUI #define _REDO _C(Y) #define _POWER C_POWER #define _W _C #define _HOME HOME #define _END END #endif #define _SLEEP C_SLEEP #if OPERATING_SYSTEM == 'W' #define _LOCK LG(L) #elif OPERATING_SYSTEM == 'M' #define _LOCK _C(LC(Q)) #elif OPERATING_SYSTEM == 'L' #define _LOCK K_LOCK #endif #define _UNDO _C(Z) #define _CUT _C(X) #define _COPY _C(C) #define _PASTE _C(V) #define _FIND _C(F) #define _FIND_NEXT _C(G) #define _FIND_PREV _C(LS(G)) // // USE_NUMPAD_KEYCODES puts `KP_*` keycodes into the Number layer. // #ifdef USE_NUMPAD_KEYCODES #define _KP_N0 KP_N0 #define _KP_N1 KP_N1 #define _KP_N2 KP_N2 #define _KP_N3 KP_N3 #define _KP_N4 KP_N4 #define _KP_N5 KP_N5 #define _KP_N6 KP_N6 #define _KP_N7 KP_N7 #define _KP_N8 KP_N8 #define _KP_N9 KP_N9 #define _KP_PLUS KP_PLUS #define _KP_MINUS KP_MINUS #define _KP_ASTERISK KP_ASTERISK #define _KP_SLASH KP_SLASH #define _KP_COMMA KP_COMMA #define _KP_DOT KP_DOT #define _KP_EQUAL KP_EQUAL #define _KP_ENTER KP_ENTER #else #define _KP_N0 N0 #define _KP_N1 N1 #define _KP_N2 N2 #define _KP_N3 N3 #define _KP_N4 N4 #define _KP_N5 N5 #define _KP_N6 N6 #define _KP_N7 N7 #define _KP_N8 N8 #define _KP_N9 N9 #define _KP_PLUS PLUS #define _KP_MINUS MINUS #define _KP_ASTERISK ASTERISK #define _KP_SLASH SLASH #define _KP_COMMA COMMA #define _KP_DOT DOT #define _KP_EQUAL EQUAL #define _KP_ENTER ENTER #endif // // Glove80 specific symbol overrides to support non "en-US" locales // #undef AMPS #define AMPS LS(N7) #undef AT #define AT LS(N2) #undef CARET #define CARET LS(N6) #undef COLON #define COLON LS(SEMI) #undef DLLR #define DLLR LS(N4) #undef DQT #define DQT LS(SQT) #undef EXCL #define EXCL LS(N1) #undef GT #define GT LS(DOT) #undef HASH #define HASH LS(N3) #undef LBRC #define LBRC LS(LBKT) #undef LPAR #define LPAR LS(N9) #undef LT #define LT LS(COMMA) #undef PIPE #define PIPE LS(BSLH) #undef PLUS #define PLUS LS(EQUAL) #undef PRCNT #define PRCNT LS(N5) #undef QMARK #define QMARK LS(FSLH) #undef RBRC #define RBRC LS(RBKT) #undef RPAR #define RPAR LS(N0) #undef STAR #define STAR LS(N8) #undef TILDE #define TILDE LS(GRAVE) #undef UNDER #define UNDER LS(MINUS) // // Keymap specific knowledge of the base layer's alpha + ZMK layout // #if defined(LAYER_Engrammer) && LAYER_Engrammer == 0 #define KEY_LH_C6R1 F1 #define KEY_LH_C5R1 F2 #define KEY_LH_C4R1 F3 #define KEY_LH_C3R1 F4 #define KEY_LH_C2R1 F5 #define KEY_RH_C2R1 F6 #define KEY_RH_C3R1 F7 #define KEY_RH_C4R1 F8 #define KEY_RH_C5R1 F9 #define KEY_RH_C6R1 F10 #define KEY_LH_C6R2 EQUAL #define KEY_LH_C5R2 N1 #define KEY_LH_C4R2 N2 #define KEY_LH_C3R2 N3 #define KEY_LH_C2R2 N4 #define KEY_LH_C1R2 N5 #define KEY_RH_C1R2 N6 #define KEY_RH_C2R2 N7 #define KEY_RH_C3R2 N8 #define KEY_RH_C4R2 N9 #define KEY_RH_C5R2 N0 #define KEY_RH_C6R2 BSLH #define KEY_LH_C6R3 GRAVE #define KEY_LH_C5R3 B #define KEY_LH_C4R3 Y #define KEY_LH_C3R3 O #define KEY_LH_C2R3 U #define KEY_LH_C1R3 SQT #define KEY_RH_C1R3 SEMI #define KEY_RH_C2R3 L #define KEY_RH_C3R3 D #define KEY_RH_C4R3 W #define KEY_RH_C5R3 V #define KEY_RH_C6R3 Z #define KEY_LH_C6R4 0 #define KEY_LH_C5R4 C #define KEY_LH_C4R4 I #define KEY_LH_C3R4 E #define KEY_LH_C2R4 A #define KEY_LH_C1R4 COMMA #define KEY_RH_C1R4 DOT #define KEY_RH_C2R4 H #define KEY_RH_C3R4 T #define KEY_RH_C4R4 S #define KEY_RH_C5R4 N #define KEY_RH_C6R4 Q #define KEY_LH_C6R5 LSHFT #define KEY_LH_C5R5 G #define KEY_LH_C4R5 X #define KEY_LH_C3R5 J #define KEY_LH_C2R5 K #define KEY_LH_C1R5 MINUS #define KEY_LH_T1 ESC #define KEY_LH_T2 UP #define KEY_LH_T3 DOWN #define KEY_RH_T3 LEFT #define KEY_RH_T2 RIGHT #define KEY_RH_T1 ENTER #define KEY_RH_C1R5 FSLH #define KEY_RH_C2R5 R #define KEY_RH_C3R5 M #define KEY_RH_C4R5 F #define KEY_RH_C5R5 P #define KEY_RH_C6R5 RSHFT #define KEY_LH_C6R6 0 #define KEY_LH_C5R6 HOME #define KEY_LH_C4R6 PG_UP #define KEY_LH_C3R6 PG_DN #define KEY_LH_C2R6 END #define KEY_LH_T4 BACKSPACE #define KEY_LH_T5 DELETE #define KEY_LH_T6 LSFT #define KEY_RH_T6 LSFT #define KEY_RH_T5 TAB #define KEY_RH_T4 SPACE #define KEY_RH_C2R6 LPAR #define KEY_RH_C3R6 LBKT #define KEY_RH_C4R6 RBKT #define KEY_RH_C5R6 RPAR #define KEY_RH_C6R6 0 #endif #if defined(LAYER_Engram) && LAYER_Engram == 0 #define KEY_LH_C6R1 F1 #define KEY_LH_C5R1 F2 #define KEY_LH_C4R1 F3 #define KEY_LH_C3R1 F4 #define KEY_LH_C2R1 F5 #define KEY_RH_C2R1 F6 #define KEY_RH_C3R1 F7 #define KEY_RH_C4R1 F8 #define KEY_RH_C5R1 F9 #define KEY_RH_C6R1 F10 #define KEY_LH_C6R2 LBKT #define KEY_LH_C5R2 N1 #define KEY_LH_C4R2 N2 #define KEY_LH_C3R2 N3 #define KEY_LH_C2R2 N4 #define KEY_LH_C1R2 N5 #define KEY_RH_C1R2 N6 #define KEY_RH_C2R2 N7 #define KEY_RH_C3R2 N8 #define KEY_RH_C4R2 N9 #define KEY_RH_C5R2 N0 #define KEY_RH_C6R2 RBKT #define KEY_LH_C6R3 AT #define KEY_LH_C5R3 B #define KEY_LH_C4R3 Y #define KEY_LH_C3R3 O #define KEY_LH_C2R3 U #define KEY_LH_C1R3 SQT #define KEY_RH_C1R3 DQT #define KEY_RH_C2R3 L #define KEY_RH_C3R3 D #define KEY_RH_C4R3 W #define KEY_RH_C5R3 V #define KEY_RH_C6R3 Z #define KEY_LH_C6R4 0 #define KEY_LH_C5R4 C #define KEY_LH_C4R4 I #define KEY_LH_C3R4 E #define KEY_LH_C2R4 A #define KEY_LH_C1R4 COMMA #define KEY_RH_C1R4 DOT #define KEY_RH_C2R4 H #define KEY_RH_C3R4 T #define KEY_RH_C4R4 S #define KEY_RH_C5R4 N #define KEY_RH_C6R4 Q #define KEY_LH_C6R5 LSHFT #define KEY_LH_C5R5 G #define KEY_LH_C4R5 X #define KEY_LH_C3R5 J #define KEY_LH_C2R5 K #define KEY_LH_C1R5 MINUS #define KEY_LH_T1 ESC #define KEY_LH_T2 UP #define KEY_LH_T3 DOWN #define KEY_RH_T3 LEFT #define KEY_RH_T2 RIGHT #define KEY_RH_T1 ENTER #define KEY_RH_C1R5 QMARK #define KEY_RH_C2R5 R #define KEY_RH_C3R5 M #define KEY_RH_C4R5 F #define KEY_RH_C5R5 P #define KEY_RH_C6R5 RSHFT #define KEY_LH_C6R6 0 #define KEY_LH_C5R6 HOME #define KEY_LH_C4R6 PG_UP #define KEY_LH_C3R6 PG_DN #define KEY_LH_C2R6 END #define KEY_LH_T4 BACKSPACE #define KEY_LH_T5 DELETE #define KEY_LH_T6 LSFT #define KEY_RH_T6 LSFT #define KEY_RH_T5 TAB #define KEY_RH_T4 SPACE #define KEY_RH_C2R6 LPAR #define KEY_RH_C3R6 HASH #define KEY_RH_C4R6 FSLH #define KEY_RH_C5R6 RPAR #define KEY_RH_C6R6 0 #endif #if defined(LAYER_Dvorak) && LAYER_Dvorak == 0 #define KEY_LH_C6R1 F1 #define KEY_LH_C5R1 F2 #define KEY_LH_C4R1 F3 #define KEY_LH_C3R1 F4 #define KEY_LH_C2R1 F5 #define KEY_RH_C2R1 F6 #define KEY_RH_C3R1 F7 #define KEY_RH_C4R1 F8 #define KEY_RH_C5R1 F9 #define KEY_RH_C6R1 F10 #define KEY_LH_C6R2 EQUAL #define KEY_LH_C5R2 N1 #define KEY_LH_C4R2 N2 #define KEY_LH_C3R2 N3 #define KEY_LH_C2R2 N4 #define KEY_LH_C1R2 N5 #define KEY_RH_C1R2 N6 #define KEY_RH_C2R2 N7 #define KEY_RH_C3R2 N8 #define KEY_RH_C4R2 N9 #define KEY_RH_C5R2 N0 #define KEY_RH_C6R2 BSLH #define KEY_LH_C6R3 GRAVE #define KEY_LH_C5R3 SQT #define KEY_LH_C4R3 COMMA #define KEY_LH_C3R3 DOT #define KEY_LH_C2R3 P #define KEY_LH_C1R3 Y #define KEY_RH_C1R3 F #define KEY_RH_C2R3 G #define KEY_RH_C3R3 C #define KEY_RH_C4R3 R #define KEY_RH_C5R3 L #define KEY_RH_C6R3 SLASH #define KEY_LH_C6R4 0 #define KEY_LH_C5R4 A #define KEY_LH_C4R4 O #define KEY_LH_C3R4 E #define KEY_LH_C2R4 U #define KEY_LH_C1R4 I #define KEY_RH_C1R4 D #define KEY_RH_C2R4 H #define KEY_RH_C3R4 T #define KEY_RH_C4R4 N #define KEY_RH_C5R4 S #define KEY_RH_C6R4 MINUS #define KEY_LH_C6R5 LSHFT #define KEY_LH_C5R5 SEMI #define KEY_LH_C4R5 Q #define KEY_LH_C3R5 J #define KEY_LH_C2R5 K #define KEY_LH_C1R5 X #define KEY_LH_T1 ESC #define KEY_LH_T2 UP #define KEY_LH_T3 DOWN #define KEY_RH_T3 LEFT #define KEY_RH_T2 RIGHT #define KEY_RH_T1 ENTER #define KEY_RH_C1R5 B #define KEY_RH_C2R5 M #define KEY_RH_C3R5 W #define KEY_RH_C4R5 V #define KEY_RH_C5R5 Z #define KEY_RH_C6R5 RSHFT #define KEY_LH_C6R6 0 #define KEY_LH_C5R6 HOME #define KEY_LH_C4R6 PG_UP #define KEY_LH_C3R6 PG_DN #define KEY_LH_C2R6 END #define KEY_LH_T4 BACKSPACE #define KEY_LH_T5 DELETE #define KEY_LH_T6 LSFT #define KEY_RH_T6 LSFT #define KEY_RH_T5 TAB #define KEY_RH_T4 SPACE #define KEY_RH_C2R6 LPAR #define KEY_RH_C3R6 LBKT #define KEY_RH_C4R6 RBKT #define KEY_RH_C5R6 RPAR #define KEY_RH_C6R6 0 #endif #if defined(LAYER_ColemakDHm) && LAYER_ColemakDHm == 0 #define KEY_LH_C6R1 F1 #define KEY_LH_C5R1 F2 #define KEY_LH_C4R1 F3 #define KEY_LH_C3R1 F4 #define KEY_LH_C2R1 F5 #define KEY_RH_C2R1 F6 #define KEY_RH_C3R1 F7 #define KEY_RH_C4R1 F8 #define KEY_RH_C5R1 F9 #define KEY_RH_C6R1 F10 #define KEY_LH_C6R2 EQUAL #define KEY_LH_C5R2 N1 #define KEY_LH_C4R2 N2 #define KEY_LH_C3R2 N3 #define KEY_LH_C2R2 N4 #define KEY_LH_C1R2 N5 #define KEY_RH_C1R2 N6 #define KEY_RH_C2R2 N7 #define KEY_RH_C3R2 N8 #define KEY_RH_C4R2 N9 #define KEY_RH_C5R2 N0 #define KEY_RH_C6R2 BSLH #define KEY_LH_C6R3 GRAVE #define KEY_LH_C5R3 Q #define KEY_LH_C4R3 W #define KEY_LH_C3R3 F #define KEY_LH_C2R3 P #define KEY_LH_C1R3 B #define KEY_RH_C1R3 J #define KEY_RH_C2R3 L #define KEY_RH_C3R3 U #define KEY_RH_C4R3 Y #define KEY_RH_C5R3 SEMI #define KEY_RH_C6R3 MINUS #define KEY_LH_C6R4 0 #define KEY_LH_C5R4 A #define KEY_LH_C4R4 R #define KEY_LH_C3R4 S #define KEY_LH_C2R4 T #define KEY_LH_C1R4 G #define KEY_RH_C1R4 M #define KEY_RH_C2R4 N #define KEY_RH_C3R4 E #define KEY_RH_C4R4 I #define KEY_RH_C5R4 O #define KEY_RH_C6R4 SQT #define KEY_LH_C6R5 LSHFT #define KEY_LH_C5R5 Z #define KEY_LH_C4R5 X #define KEY_LH_C3R5 C #define KEY_LH_C2R5 D #define KEY_LH_C1R5 V #define KEY_LH_T1 ESC #define KEY_LH_T2 UP #define KEY_LH_T3 DOWN #define KEY_RH_T3 LEFT #define KEY_RH_T2 RIGHT #define KEY_RH_T1 ENTER #define KEY_RH_C1R5 K #define KEY_RH_C2R5 H #define KEY_RH_C3R5 COMMA #define KEY_RH_C4R5 DOT #define KEY_RH_C5R5 FSLH #define KEY_RH_C6R5 RSHFT #define KEY_LH_C6R6 0 #define KEY_LH_C5R6 HOME #define KEY_LH_C4R6 PG_UP #define KEY_LH_C3R6 PG_DN #define KEY_LH_C2R6 END #define KEY_LH_T4 BACKSPACE #define KEY_LH_T5 DELETE #define KEY_LH_T6 LSFT #define KEY_RH_T6 LSFT #define KEY_RH_T5 TAB #define KEY_RH_T4 SPACE #define KEY_RH_C2R6 LPAR #define KEY_RH_C3R6 LBKT #define KEY_RH_C4R6 RBKT #define KEY_RH_C5R6 RPAR #define KEY_RH_C6R6 0 #endif #if defined(LAYER_Colemak) && LAYER_Colemak == 0 #define KEY_LH_C6R1 F1 #define KEY_LH_C5R1 F2 #define KEY_LH_C4R1 F3 #define KEY_LH_C3R1 F4 #define KEY_LH_C2R1 F5 #define KEY_RH_C2R1 F6 #define KEY_RH_C3R1 F7 #define KEY_RH_C4R1 F8 #define KEY_RH_C5R1 F9 #define KEY_RH_C6R1 F10 #define KEY_LH_C6R2 EQUAL #define KEY_LH_C5R2 N1 #define KEY_LH_C4R2 N2 #define KEY_LH_C3R2 N3 #define KEY_LH_C2R2 N4 #define KEY_LH_C1R2 N5 #define KEY_RH_C1R2 N6 #define KEY_RH_C2R2 N7 #define KEY_RH_C3R2 N8 #define KEY_RH_C4R2 N9 #define KEY_RH_C5R2 N0 #define KEY_RH_C6R2 BSLH #define KEY_LH_C6R3 GRAVE #define KEY_LH_C5R3 Q #define KEY_LH_C4R3 W #define KEY_LH_C3R3 F #define KEY_LH_C2R3 P #define KEY_LH_C1R3 G #define KEY_RH_C1R3 J #define KEY_RH_C2R3 L #define KEY_RH_C3R3 U #define KEY_RH_C4R3 Y #define KEY_RH_C5R3 SEMI #define KEY_RH_C6R3 MINUS #define KEY_LH_C6R4 0 #define KEY_LH_C5R4 A #define KEY_LH_C4R4 R #define KEY_LH_C3R4 S #define KEY_LH_C2R4 T #define KEY_LH_C1R4 D #define KEY_RH_C1R4 H #define KEY_RH_C2R4 N #define KEY_RH_C3R4 E #define KEY_RH_C4R4 I #define KEY_RH_C5R4 O #define KEY_RH_C6R4 SQT #define KEY_LH_C6R5 LSHFT #define KEY_LH_C5R5 Z #define KEY_LH_C4R5 X #define KEY_LH_C3R5 C #define KEY_LH_C2R5 V #define KEY_LH_C1R5 B #define KEY_LH_T1 ESC #define KEY_LH_T2 UP #define KEY_LH_T3 DOWN #define KEY_RH_T3 LEFT #define KEY_RH_T2 RIGHT #define KEY_RH_T1 ENTER #define KEY_RH_C1R5 K #define KEY_RH_C2R5 M #define KEY_RH_C3R5 COMMA #define KEY_RH_C4R5 DOT #define KEY_RH_C5R5 FSLH #define KEY_RH_C6R5 RSHFT #define KEY_LH_C6R6 0 #define KEY_LH_C5R6 HOME #define KEY_LH_C4R6 PG_UP #define KEY_LH_C3R6 PG_DN #define KEY_LH_C2R6 END #define KEY_LH_T4 BACKSPACE #define KEY_LH_T5 DELETE #define KEY_LH_T6 LSFT #define KEY_RH_T6 LSFT #define KEY_RH_T5 TAB #define KEY_RH_T4 SPACE #define KEY_RH_C2R6 LPAR #define KEY_RH_C3R6 LBKT #define KEY_RH_C4R6 RBKT #define KEY_RH_C5R6 RPAR #define KEY_RH_C6R6 0 #endif #if defined(LAYER_QWERTY) && LAYER_QWERTY == 0 #define KEY_LH_C6R1 F1 #define KEY_LH_C5R1 F2 #define KEY_LH_C4R1 F3 #define KEY_LH_C3R1 F4 #define KEY_LH_C2R1 F5 #define KEY_RH_C2R1 F6 #define KEY_RH_C3R1 F7 #define KEY_RH_C4R1 F8 #define KEY_RH_C5R1 F9 #define KEY_RH_C6R1 F10 #define KEY_LH_C6R2 EQUAL #define KEY_LH_C5R2 N1 #define KEY_LH_C4R2 N2 #define KEY_LH_C3R2 N3 #define KEY_LH_C2R2 N4 #define KEY_LH_C1R2 N5 #define KEY_RH_C1R2 N6 #define KEY_RH_C2R2 N7 #define KEY_RH_C3R2 N8 #define KEY_RH_C4R2 N9 #define KEY_RH_C5R2 N0 #define KEY_RH_C6R2 BSLH #define KEY_LH_C6R3 GRAVE #define KEY_LH_C5R3 Q #define KEY_LH_C4R3 W #define KEY_LH_C3R3 E #define KEY_LH_C2R3 R #define KEY_LH_C1R3 T #define KEY_RH_C1R3 Y #define KEY_RH_C2R3 U #define KEY_RH_C3R3 I #define KEY_RH_C4R3 O #define KEY_RH_C5R3 P #define KEY_RH_C6R3 MINUS #define KEY_LH_C6R4 0 #define KEY_LH_C5R4 A #define KEY_LH_C4R4 S #define KEY_LH_C3R4 D #define KEY_LH_C2R4 F #define KEY_LH_C1R4 G #define KEY_RH_C1R4 H #define KEY_RH_C2R4 J #define KEY_RH_C3R4 K #define KEY_RH_C4R4 L #define KEY_RH_C5R4 SEMI #define KEY_RH_C6R4 SQT #define KEY_LH_C6R5 LSHFT #define KEY_LH_C5R5 Z #define KEY_LH_C4R5 X #define KEY_LH_C3R5 C #define KEY_LH_C2R5 V #define KEY_LH_C1R5 B #define KEY_LH_T1 ESC #define KEY_LH_T2 UP #define KEY_LH_T3 DOWN #define KEY_RH_T3 LEFT #define KEY_RH_T2 RIGHT #define KEY_RH_T1 ENTER #define KEY_RH_C1R5 N #define KEY_RH_C2R5 M #define KEY_RH_C3R5 COMMA #define KEY_RH_C4R5 DOT #define KEY_RH_C5R5 FSLH #define KEY_RH_C6R5 RSHFT #define KEY_LH_C6R6 0 #define KEY_LH_C5R6 HOME #define KEY_LH_C4R6 PG_UP #define KEY_LH_C3R6 PG_DN #define KEY_LH_C2R6 END #define KEY_LH_T4 BACKSPACE #define KEY_LH_T5 DELETE #define KEY_LH_T6 LSFT #define KEY_RH_T6 LSFT #define KEY_RH_T5 TAB #define KEY_RH_T4 SPACE #define KEY_RH_C2R6 LPAR #define KEY_RH_C3R6 LBKT #define KEY_RH_C4R6 RBKT #define KEY_RH_C5R6 RPAR #define KEY_RH_C6R6 0 #endif #if defined(LAYER_Norman) && LAYER_Norman == 0 #define KEY_LH_C6R1 F1 #define KEY_LH_C5R1 F2 #define KEY_LH_C4R1 F3 #define KEY_LH_C3R1 F4 #define KEY_LH_C2R1 F5 #define KEY_RH_C2R1 F6 #define KEY_RH_C3R1 F7 #define KEY_RH_C4R1 F8 #define KEY_RH_C5R1 F9 #define KEY_RH_C6R1 F10 #define KEY_LH_C6R2 EQUAL #define KEY_LH_C5R2 N1 #define KEY_LH_C4R2 N2 #define KEY_LH_C3R2 N3 #define KEY_LH_C2R2 N4 #define KEY_LH_C1R2 N5 #define KEY_RH_C1R2 N6 #define KEY_RH_C2R2 N7 #define KEY_RH_C3R2 N8 #define KEY_RH_C4R2 N9 #define KEY_RH_C5R2 N0 #define KEY_RH_C6R2 BSLH #define KEY_LH_C6R3 GRAVE #define KEY_LH_C5R3 Q #define KEY_LH_C4R3 W #define KEY_LH_C3R3 D #define KEY_LH_C2R3 F #define KEY_LH_C1R3 K #define KEY_RH_C1R3 J #define KEY_RH_C2R3 U #define KEY_RH_C3R3 R #define KEY_RH_C4R3 L #define KEY_RH_C5R3 SEMI #define KEY_RH_C6R3 MINUS #define KEY_LH_C6R4 0 #define KEY_LH_C5R4 A #define KEY_LH_C4R4 S #define KEY_LH_C3R4 E #define KEY_LH_C2R4 T #define KEY_LH_C1R4 G #define KEY_RH_C1R4 Y #define KEY_RH_C2R4 N #define KEY_RH_C3R4 I #define KEY_RH_C4R4 O #define KEY_RH_C5R4 H #define KEY_RH_C6R4 SQT #define KEY_LH_C6R5 LSHFT #define KEY_LH_C5R5 Z #define KEY_LH_C4R5 X #define KEY_LH_C3R5 C #define KEY_LH_C2R5 V #define KEY_LH_C1R5 B #define KEY_LH_T1 ESC #define KEY_LH_T2 UP #define KEY_LH_T3 DOWN #define KEY_RH_T3 LEFT #define KEY_RH_T2 RIGHT #define KEY_RH_T1 ENTER #define KEY_RH_C1R5 P #define KEY_RH_C2R5 M #define KEY_RH_C3R5 COMMA #define KEY_RH_C4R5 DOT #define KEY_RH_C5R5 FSLH #define KEY_RH_C6R5 RSHFT #define KEY_LH_C6R6 0 #define KEY_LH_C5R6 HOME #define KEY_LH_C4R6 PG_UP #define KEY_LH_C3R6 PG_DN #define KEY_LH_C2R6 END #define KEY_LH_T4 BACKSPACE #define KEY_LH_T5 DELETE #define KEY_LH_T6 LSFT #define KEY_RH_T6 LSFT #define KEY_RH_T5 TAB #define KEY_RH_T4 SPACE #define KEY_RH_C2R6 LPAR #define KEY_RH_C3R6 LBKT #define KEY_RH_C4R6 RBKT #define KEY_RH_C5R6 RPAR #define KEY_RH_C6R6 0 #endif #if defined(LAYER_Workman) && LAYER_Workman == 0 #define KEY_LH_C6R1 F1 #define KEY_LH_C5R1 F2 #define KEY_LH_C4R1 F3 #define KEY_LH_C3R1 F4 #define KEY_LH_C2R1 F5 #define KEY_RH_C2R1 F6 #define KEY_RH_C3R1 F7 #define KEY_RH_C4R1 F8 #define KEY_RH_C5R1 F9 #define KEY_RH_C6R1 F10 #define KEY_LH_C6R2 EQUAL #define KEY_LH_C5R2 N1 #define KEY_LH_C4R2 N2 #define KEY_LH_C3R2 N3 #define KEY_LH_C2R2 N4 #define KEY_LH_C1R2 N5 #define KEY_RH_C1R2 N6 #define KEY_RH_C2R2 N7 #define KEY_RH_C3R2 N8 #define KEY_RH_C4R2 N9 #define KEY_RH_C5R2 N0 #define KEY_RH_C6R2 BSLH #define KEY_LH_C6R3 GRAVE #define KEY_LH_C5R3 Q #define KEY_LH_C4R3 D #define KEY_LH_C3R3 R #define KEY_LH_C2R3 W #define KEY_LH_C1R3 B #define KEY_RH_C1R3 J #define KEY_RH_C2R3 F #define KEY_RH_C3R3 U #define KEY_RH_C4R3 P #define KEY_RH_C5R3 SEMI #define KEY_RH_C6R3 MINUS #define KEY_LH_C6R4 0 #define KEY_LH_C5R4 A #define KEY_LH_C4R4 S #define KEY_LH_C3R4 H #define KEY_LH_C2R4 T #define KEY_LH_C1R4 G #define KEY_RH_C1R4 Y #define KEY_RH_C2R4 N #define KEY_RH_C3R4 E #define KEY_RH_C4R4 O #define KEY_RH_C5R4 I #define KEY_RH_C6R4 SQT #define KEY_LH_C6R5 LSHFT #define KEY_LH_C5R5 Z #define KEY_LH_C4R5 X #define KEY_LH_C3R5 M #define KEY_LH_C2R5 C #define KEY_LH_C1R5 V #define KEY_LH_T1 ESC #define KEY_LH_T2 UP #define KEY_LH_T3 DOWN #define KEY_RH_T3 LEFT #define KEY_RH_T2 RIGHT #define KEY_RH_T1 ENTER #define KEY_RH_C1R5 K #define KEY_RH_C2R5 L #define KEY_RH_C3R5 COMMA #define KEY_RH_C4R5 DOT #define KEY_RH_C5R5 FSLH #define KEY_RH_C6R5 RSHFT #define KEY_LH_C6R6 0 #define KEY_LH_C5R6 HOME #define KEY_LH_C4R6 PG_UP #define KEY_LH_C3R6 PG_DN #define KEY_LH_C2R6 END #define KEY_LH_T4 BACKSPACE #define KEY_LH_T5 DELETE #define KEY_LH_T6 LSFT #define KEY_RH_T6 LSFT #define KEY_RH_T5 TAB #define KEY_RH_T4 SPACE #define KEY_RH_C2R6 LPAR #define KEY_RH_C3R6 LBKT #define KEY_RH_C4R6 RBKT #define KEY_RH_C5R6 RPAR #define KEY_RH_C6R6 0 #endif #if defined(LAYER_Halmak) && LAYER_Halmak == 0 #define KEY_LH_C6R1 F1 #define KEY_LH_C5R1 F2 #define KEY_LH_C4R1 F3 #define KEY_LH_C3R1 F4 #define KEY_LH_C2R1 F5 #define KEY_RH_C2R1 F6 #define KEY_RH_C3R1 F7 #define KEY_RH_C4R1 F8 #define KEY_RH_C5R1 F9 #define KEY_RH_C6R1 F10 #define KEY_LH_C6R2 EQUAL #define KEY_LH_C5R2 N1 #define KEY_LH_C4R2 N2 #define KEY_LH_C3R2 N3 #define KEY_LH_C2R2 N4 #define KEY_LH_C1R2 N5 #define KEY_RH_C1R2 N6 #define KEY_RH_C2R2 N7 #define KEY_RH_C3R2 N8 #define KEY_RH_C4R2 N9 #define KEY_RH_C5R2 N0 #define KEY_RH_C6R2 BSLH #define KEY_LH_C6R3 GRAVE #define KEY_LH_C5R3 W #define KEY_LH_C4R3 L #define KEY_LH_C3R3 R #define KEY_LH_C2R3 B #define KEY_LH_C1R3 Z #define KEY_RH_C1R3 SEMI #define KEY_RH_C2R3 Q #define KEY_RH_C3R3 U #define KEY_RH_C4R3 D #define KEY_RH_C5R3 J #define KEY_RH_C6R3 MINUS #define KEY_LH_C6R4 0 #define KEY_LH_C5R4 S #define KEY_LH_C4R4 H #define KEY_LH_C3R4 N #define KEY_LH_C2R4 T #define KEY_LH_C1R4 COMMA #define KEY_RH_C1R4 DOT #define KEY_RH_C2R4 A #define KEY_RH_C3R4 E #define KEY_RH_C4R4 O #define KEY_RH_C5R4 I #define KEY_RH_C6R4 SQT #define KEY_LH_C6R5 LSHFT #define KEY_LH_C5R5 F #define KEY_LH_C4R5 M #define KEY_LH_C3R5 V #define KEY_LH_C2R5 C #define KEY_LH_C1R5 FSLH #define KEY_LH_T1 ESC #define KEY_LH_T2 UP #define KEY_LH_T3 DOWN #define KEY_RH_T3 LEFT #define KEY_RH_T2 RIGHT #define KEY_RH_T1 ENTER #define KEY_RH_C1R5 G #define KEY_RH_C2R5 P #define KEY_RH_C3R5 X #define KEY_RH_C4R5 K #define KEY_RH_C5R5 Y #define KEY_RH_C6R5 RSHFT #define KEY_LH_C6R6 0 #define KEY_LH_C5R6 HOME #define KEY_LH_C4R6 PG_UP #define KEY_LH_C3R6 PG_DN #define KEY_LH_C2R6 END #define KEY_LH_T4 BACKSPACE #define KEY_LH_T5 DELETE #define KEY_LH_T6 LSFT #define KEY_RH_T6 LSFT #define KEY_RH_T5 TAB #define KEY_RH_T4 SPACE #define KEY_RH_C2R6 LPAR #define KEY_RH_C3R6 LBKT #define KEY_RH_C4R6 RBKT #define KEY_RH_C5R6 RPAR #define KEY_RH_C6R6 0 #endif combos { compatible = "zmk,combos"; // // COMBO_FIRING_DECAY defines how much time you have left (milliseconds) // after pressing the first key in a ZMK combo to finish the whole chord. // #ifndef COMBO_FIRING_DECAY #define COMBO_FIRING_DECAY 50 #endif #ifdef LAYER_Gaming combo_gaming_layer_toggle { timeout-ms = ; key-positions = ; bindings = <&tog LAYER_Gaming>; layers = <0 LAYER_Gaming>; }; #endif #ifdef _A_TAB combo_alt_tab_switcher { timeout-ms = ; key-positions = ; bindings = <&mod_tab_chord _A_TAB LAYER_Cursor>; layers = <0 1 2 3 4 5 6 7 8>; }; #endif }; behaviors { ////////////////////////////////////////////////////////////////////////// // // Miryoku layers and home row mods (ported from my QMK endgame) // - https://sunaku.github.io/home-row-mods.html#porting-to-zmk // - https://github.com/urob/zmk-config#timeless-homerow-mods // ////////////////////////////////////////////////////////////////////////// // // ENFORCE_BILATERAL cancels out single-handed home row mods activation by // releasing any currently pressed mods and replacing them with plain taps. // // NOTE: You may still encounter "flashing mods" where an operating system // action is triggered by the release of mods, such as LGUI which launches // the Windows Start Menu and LALT which opens the Microsoft Office Ribbon. // //#define ENFORCE_BILATERAL // // The *_FINGER_MOD specify which modifiers are used by home row mod keys. // Here, we use Miryoku's "GACS" (Win, Alt, Ctrl, Shift) order by default, // unless OPERATING_SYSTEM is macOS, in which case Win & Ctrl are swapped. // #ifndef PINKY_FINGER_MOD #if OPERATING_SYSTEM == 'M' #define PINKY_FINGER_MOD LCTL #else #define PINKY_FINGER_MOD LGUI #endif #endif #ifndef RING1_FINGER_MOD #define RING1_FINGER_MOD LALT #endif #ifndef RING2_FINGER_MOD #define RING2_FINGER_MOD RALT #endif #ifndef MIDDY_FINGER_MOD #if OPERATING_SYSTEM == 'M' #define MIDDY_FINGER_MOD LGUI #else #define MIDDY_FINGER_MOD LCTL #endif #endif #ifndef INDEX_FINGER_MOD #define INDEX_FINGER_MOD LSFT #endif // // The following settings let you configure mods individually, per finger: // #ifndef LEFT_PINKY_MOD #define LEFT_PINKY_MOD PINKY_FINGER_MOD #endif #ifndef RIGHT_PINKY_MOD #define RIGHT_PINKY_MOD PINKY_FINGER_MOD #endif #ifndef LEFT_RING1_MOD #define LEFT_RING1_MOD RING1_FINGER_MOD #endif #ifndef RIGHT_RING1_MOD #define RIGHT_RING1_MOD RING1_FINGER_MOD #endif #ifndef LEFT_RING2_MOD #define LEFT_RING2_MOD RING2_FINGER_MOD #endif #ifndef RIGHT_RING2_MOD #define RIGHT_RING2_MOD RING2_FINGER_MOD #endif #ifndef LEFT_MIDDY_MOD #define LEFT_MIDDY_MOD MIDDY_FINGER_MOD #endif #ifndef RIGHT_MIDDY_MOD #define RIGHT_MIDDY_MOD MIDDY_FINGER_MOD #endif #ifndef LEFT_INDEX_MOD #define LEFT_INDEX_MOD INDEX_FINGER_MOD #endif #ifndef RIGHT_INDEX_MOD #define RIGHT_INDEX_MOD INDEX_FINGER_MOD #endif // // HOMEY_HOLDING_TYPE defines the flavor of ZMK hold-tap behavior to use // for the pinky, ring, and middle fingers (which are assigned to Super, // Alt, and Ctrl respectively in the Miryoku system) on home row keys. // #ifndef HOMEY_HOLDING_TYPE #define HOMEY_HOLDING_TYPE "tap-preferred" #endif // // HOMEY_HOLDING_TIME defines how long you need to hold (milliseconds) // home row mod keys in order to send their modifiers to the computer // (i.e. "register" them) for mod-click mouse usage (e.g. Ctrl-Click). // #ifndef HOMEY_HOLDING_TIME #define HOMEY_HOLDING_TIME 240 // TAPPING_TERM + ALLOW_CROSSOVER_AFTER #endif // // HOMEY_STREAK_DECAY defines how long you need to wait (milliseconds) // after typing before you can use home row mods again. It prevents // unintended activation of home row mods when you're actively typing. // #ifndef HOMEY_STREAK_DECAY #define HOMEY_STREAK_DECAY 160 #endif // // HOMEY_REPEAT_DECAY defines how much time you have left (milliseconds) // after tapping a key to hold it again in order to make it auto-repeat. // #ifndef HOMEY_REPEAT_DECAY #define HOMEY_REPEAT_DECAY 300 // "tap then hold" for key auto-repeat #endif // // CHORD_HOLDING_TYPE defines the flavor of ZMK hold-tap behavior to use // for chorded home row mods (secondary keypresses in multi-mod chords). // #ifndef CHORD_HOLDING_TYPE #define CHORD_HOLDING_TYPE HOMEY_HOLDING_TYPE #endif // // CHORD_HOLDING_TIME defines how long you need to hold (milliseconds) // home row mod keys in order to send their modifiers to the computer // (i.e. "register" them) for mod-click mouse usage (e.g. Ctrl-Click). // This is specifically for secondary keypresses in multi-mod chords. // #ifndef CHORD_HOLDING_TIME #define CHORD_HOLDING_TIME 150 #endif // // CHORD_STREAK_DECAY defines how long you need to wait (milliseconds) // after typing before you can use home row mods again. It prevents // unintended activation of home row mods when you're actively typing // This is specifically for secondary keypresses in multi-mod chords. // #ifndef CHORD_STREAK_DECAY #define CHORD_STREAK_DECAY HOMEY_STREAK_DECAY #endif // // CHORD_REPEAT_DECAY defines how much time you have left (milliseconds) // after tapping a key to hold it again in order to make it auto-repeat. // This is specifically for secondary keypresses in multi-mod chords. // #ifndef CHORD_REPEAT_DECAY #define CHORD_REPEAT_DECAY HOMEY_REPEAT_DECAY #endif // // INDEX_HOLDING_TYPE defines the flavor of ZMK hold-tap behavior to use // for index fingers (which Miryoku assigns to Shift) on home row keys. // // NOTE: The "tap-preferred" flavor of ZMK hold-tap for index finger keys // allows faster activation of the Shift modifier (without having to wait // for the modified key to be released as the "balanced" flavor requires). // Typing streaks and the `hold-trigger-on-release` setting are disabled // for the index fingers so as not to hinder their speed and dexterity. // #ifndef INDEX_HOLDING_TYPE #define INDEX_HOLDING_TYPE "tap-preferred" #endif // // INDEX_HOLDING_TIME defines how long you need to hold (milliseconds) // index finger keys in order to send their modifiers to the computer // (i.e. "register" them) for mod-click mouse usage (e.g. Shift-Click). // #ifndef INDEX_HOLDING_TIME #define INDEX_HOLDING_TIME 180 #endif // // INDEX_STREAK_DECAY defines how long you need to wait (milliseconds) // after typing before you can use home row mods again. It prevents // unintended activation of home row mods when you're actively typing. // #ifndef INDEX_STREAK_DECAY #define INDEX_STREAK_DECAY 100 #endif // // INDEX_REPEAT_DECAY defines how much time you have left (milliseconds) // after tapping a key to hold it again in order to make it auto-repeat. // #ifndef INDEX_REPEAT_DECAY #define INDEX_REPEAT_DECAY 300 // "tap then hold" for key auto-repeat #endif // // PLAIN_HOLDING_TYPE defines the flavor of ZMK hold-tap behavior to use // for index fingers (which Miryoku assigns to Shift) on home row keys. // // NOTE: The "tap-preferred" flavor of ZMK hold-tap for index finger keys // allows faster activation of the Shift modifier (without having to wait // for the modified key to be released as the "balanced" flavor requires). // Typing streaks and the `hold-trigger-on-release` setting are disabled // for the index fingers so as not to hinder their speed and dexterity. // #ifndef PLAIN_HOLDING_TYPE #define PLAIN_HOLDING_TYPE HOMEY_HOLDING_TYPE #endif // // PLAIN_HOLDING_TIME defines how long you need to hold (milliseconds) // index finger keys in order to send their modifiers to the computer // (i.e. "register" them) for mod-click mouse usage (e.g. Shift-Click). // #ifndef PLAIN_HOLDING_TIME #define PLAIN_HOLDING_TIME HOMEY_HOLDING_TIME #endif // // PLAIN_STREAK_DECAY defines how long you need to wait (milliseconds) // after typing before you can use home row mods again. It prevents // unintended activation of home row mods when you're actively typing. // #ifndef PLAIN_STREAK_DECAY #define PLAIN_STREAK_DECAY HOMEY_STREAK_DECAY #endif // // PLAIN_REPEAT_DECAY defines how much time you have left (milliseconds) // after tapping a key to hold it again in order to make it auto-repeat. // #ifndef PLAIN_REPEAT_DECAY #define PLAIN_REPEAT_DECAY 300 // "tap then hold" for key auto-repeat #endif // // THUMB_HOLDING_TYPE defines the flavor of ZMK hold-tap behavior to use // for the thumbs (which are assigned to 6 layers in the Miryoku system). // // NOTE: The "balanced" flavor of ZMK hold-tap provides instant modifier // activation for the symbol layer (if the tapped symbol key is released // while the thumb layer key is still held down) for quicker programming. // #ifndef THUMB_HOLDING_TYPE #define THUMB_HOLDING_TYPE "balanced" #endif // // THUMB_HOLDING_TIME defines how long you need to hold (milliseconds) // a thumb key to activate a layer. Shorter holds are treated as taps. // #ifndef THUMB_HOLDING_TIME #define THUMB_HOLDING_TIME 200 #endif // // THUMB_REPEAT_DECAY defines how much time you have left (milliseconds) // after tapping a key to hold it again in order to make it auto-repeat. // #ifndef THUMB_REPEAT_DECAY #define THUMB_REPEAT_DECAY 300 // "tap then hold" for key auto-repeat #endif // // SPACE_HOLDING_TYPE defines the flavor of ZMK hold-tap behavior to use // for spacebar (assigned to the right thumb's home position by default). // // NOTE: The "balanced" flavor of ZMK hold-tap provides instant modifier // activation for the symbol layer (if the tapped symbol key is released // while the thumb layer key is still held down) for quicker programming. // #ifndef SPACE_HOLDING_TYPE #define SPACE_HOLDING_TYPE THUMB_HOLDING_TYPE #endif // // SPACE_HOLDING_TIME defines how long you need to hold (milliseconds) // the space thumb key to activate. Shorter holds are treated as taps. // #ifndef SPACE_HOLDING_TIME #define SPACE_HOLDING_TIME THUMB_HOLDING_TIME #endif // // SPACE_REPEAT_DECAY defines how much time you have left (milliseconds) // after tapping a key to hold it again in order to make it auto-repeat. // #ifndef SPACE_REPEAT_DECAY #define SPACE_REPEAT_DECAY 150 #endif // // Glove80 key positions index for positional hold-tap // - https://discord.com/channels/877392805654306816/937645688244826154/1066713913351221248 // - https://media.discordapp.net/attachments/937645688244826154/1066713913133121556/image.png // // |------------------------|------------------------| // | LEFT_HAND_KEYS | RIGHT_HAND_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 | // | 34 35 36 37 38 39 | 40 41 42 43 44 45 | // | 46 47 48 49 50 51 | 58 59 60 61 62 63 | // | 64 65 66 67 68 | 75 76 77 78 79 | // | 69 52 | 57 74 | // | 70 53 | 56 73 | // | 71 54 | 55 72 | // |------------------------|------------------------| // #define LEFT_HAND_KEYS \ 0 1 2 3 4 \ 10 11 12 13 14 15 \ 22 23 24 25 26 27 \ 34 35 36 37 38 39 \ 46 47 48 49 50 51 \ 64 65 66 67 68 #define RIGHT_HAND_KEYS \ 5 6 7 8 9 \ 16 17 18 19 20 21 \ 28 29 30 31 32 33 \ 40 41 42 43 44 45 \ 58 59 60 61 62 63 \ 75 76 77 78 79 #define THUMB_KEYS \ 69 52 57 74 \ 70 53 56 73 \ 71 54 55 72 #define LEFT_PINKY_KEY KEY_LH_C5R4 #define LEFT_RING1_KEY KEY_LH_C4R4 #define LEFT_RING2_KEY KEY_LH_C4R3 #define LEFT_MIDDY_KEY KEY_LH_C3R4 #define LEFT_INDEX_KEY KEY_LH_C2R4 #define LEFT_PLAIN_KEY KEY_LH_C1R4 #define RIGHT_PINKY_KEY KEY_RH_C5R4 #define RIGHT_RING1_KEY KEY_RH_C4R4 #define RIGHT_RING2_KEY KEY_RH_C4R3 #define RIGHT_MIDDY_KEY KEY_RH_C3R4 #define RIGHT_INDEX_KEY KEY_RH_C2R4 #define RIGHT_PLAIN_KEY KEY_RH_C1R4 #if defined(LAYER_Engram) && LAYER_Engram == 0 #define LeftPlainKey engram_COMMA #define RightPlainKey engram_DOT #else #define LeftPlainKey kp LEFT_PLAIN_KEY #define RightPlainKey kp RIGHT_PLAIN_KEY #endif // // Home row mods with bilateral combinations support // #ifndef PINKY_HOLDING_TYPE #define PINKY_HOLDING_TYPE HOMEY_HOLDING_TYPE #endif #ifndef PINKY_CHORD_HOLDING_TYPE #define PINKY_CHORD_HOLDING_TYPE CHORD_HOLDING_TYPE #endif #ifndef LEFT_PINKY_CHORD_HOLDING_TYPE #define LEFT_PINKY_CHORD_HOLDING_TYPE PINKY_CHORD_HOLDING_TYPE #endif #ifndef RIGHT_PINKY_CHORD_HOLDING_TYPE #define RIGHT_PINKY_CHORD_HOLDING_TYPE PINKY_CHORD_HOLDING_TYPE #endif #ifndef PINKY_HOLDING_TIME #define PINKY_HOLDING_TIME HOMEY_HOLDING_TIME #endif #ifndef PINKY_CHORD_HOLDING_TIME #define PINKY_CHORD_HOLDING_TIME CHORD_HOLDING_TIME #endif #ifndef LEFT_PINKY_CHORD_HOLDING_TIME #define LEFT_PINKY_CHORD_HOLDING_TIME PINKY_CHORD_HOLDING_TIME #endif #ifndef RIGHT_PINKY_CHORD_HOLDING_TIME #define RIGHT_PINKY_CHORD_HOLDING_TIME PINKY_CHORD_HOLDING_TIME #endif #ifndef PINKY_STREAK_DECAY #define PINKY_STREAK_DECAY HOMEY_STREAK_DECAY #endif #ifndef PINKY_CHORD_STREAK_DECAY #define PINKY_CHORD_STREAK_DECAY CHORD_STREAK_DECAY #endif #ifndef LEFT_PINKY_CHORD_STREAK_DECAY #define LEFT_PINKY_CHORD_STREAK_DECAY PINKY_CHORD_STREAK_DECAY #endif #ifndef RIGHT_PINKY_CHORD_STREAK_DECAY #define RIGHT_PINKY_CHORD_STREAK_DECAY PINKY_CHORD_STREAK_DECAY #endif #ifndef PINKY_REPEAT_DECAY #define PINKY_REPEAT_DECAY HOMEY_REPEAT_DECAY #endif #ifndef PINKY_CHORD_REPEAT_DECAY #define PINKY_CHORD_REPEAT_DECAY CHORD_REPEAT_DECAY #endif #ifndef LEFT_PINKY_CHORD_REPEAT_DECAY #define LEFT_PINKY_CHORD_REPEAT_DECAY PINKY_CHORD_REPEAT_DECAY #endif #ifndef RIGHT_PINKY_CHORD_REPEAT_DECAY #define RIGHT_PINKY_CHORD_REPEAT_DECAY PINKY_CHORD_REPEAT_DECAY #endif #ifndef RING1_HOLDING_TYPE #define RING1_HOLDING_TYPE HOMEY_HOLDING_TYPE #endif #ifndef RING1_CHORD_HOLDING_TYPE #define RING1_CHORD_HOLDING_TYPE CHORD_HOLDING_TYPE #endif #ifndef LEFT_RING1_CHORD_HOLDING_TYPE #define LEFT_RING1_CHORD_HOLDING_TYPE RING1_CHORD_HOLDING_TYPE #endif #ifndef RIGHT_RING1_CHORD_HOLDING_TYPE #define RIGHT_RING1_CHORD_HOLDING_TYPE RING1_CHORD_HOLDING_TYPE #endif #ifndef RING1_HOLDING_TIME #define RING1_HOLDING_TIME HOMEY_HOLDING_TIME #endif #ifndef RING1_CHORD_HOLDING_TIME #define RING1_CHORD_HOLDING_TIME CHORD_HOLDING_TIME #endif #ifndef LEFT_RING1_CHORD_HOLDING_TIME #define LEFT_RING1_CHORD_HOLDING_TIME RING1_CHORD_HOLDING_TIME #endif #ifndef RIGHT_RING1_CHORD_HOLDING_TIME #define RIGHT_RING1_CHORD_HOLDING_TIME RING1_CHORD_HOLDING_TIME #endif #ifndef RING1_STREAK_DECAY #define RING1_STREAK_DECAY HOMEY_STREAK_DECAY #endif #ifndef RING1_CHORD_STREAK_DECAY #define RING1_CHORD_STREAK_DECAY CHORD_STREAK_DECAY #endif #ifndef LEFT_RING1_CHORD_STREAK_DECAY #define LEFT_RING1_CHORD_STREAK_DECAY RING1_CHORD_STREAK_DECAY #endif #ifndef RIGHT_RING1_CHORD_STREAK_DECAY #define RIGHT_RING1_CHORD_STREAK_DECAY RING1_CHORD_STREAK_DECAY #endif #ifndef RING1_REPEAT_DECAY #define RING1_REPEAT_DECAY HOMEY_REPEAT_DECAY #endif #ifndef RING1_CHORD_REPEAT_DECAY #define RING1_CHORD_REPEAT_DECAY CHORD_REPEAT_DECAY #endif #ifndef LEFT_RING1_CHORD_REPEAT_DECAY #define LEFT_RING1_CHORD_REPEAT_DECAY RING1_CHORD_REPEAT_DECAY #endif #ifndef RIGHT_RING1_CHORD_REPEAT_DECAY #define RIGHT_RING1_CHORD_REPEAT_DECAY RING1_CHORD_REPEAT_DECAY #endif #ifndef RING2_HOLDING_TYPE #define RING2_HOLDING_TYPE HOMEY_HOLDING_TYPE #endif #ifndef RING2_CHORD_HOLDING_TYPE #define RING2_CHORD_HOLDING_TYPE CHORD_HOLDING_TYPE #endif #ifndef LEFT_RING2_CHORD_HOLDING_TYPE #define LEFT_RING2_CHORD_HOLDING_TYPE RING2_CHORD_HOLDING_TYPE #endif #ifndef RIGHT_RING2_CHORD_HOLDING_TYPE #define RIGHT_RING2_CHORD_HOLDING_TYPE RING2_CHORD_HOLDING_TYPE #endif #ifndef RING2_HOLDING_TIME #define RING2_HOLDING_TIME HOMEY_HOLDING_TIME #endif #ifndef RING2_CHORD_HOLDING_TIME #define RING2_CHORD_HOLDING_TIME CHORD_HOLDING_TIME #endif #ifndef LEFT_RING2_CHORD_HOLDING_TIME #define LEFT_RING2_CHORD_HOLDING_TIME RING2_CHORD_HOLDING_TIME #endif #ifndef RIGHT_RING2_CHORD_HOLDING_TIME #define RIGHT_RING2_CHORD_HOLDING_TIME RING2_CHORD_HOLDING_TIME #endif #ifndef RING2_STREAK_DECAY #define RING2_STREAK_DECAY HOMEY_STREAK_DECAY #endif #ifndef RING2_CHORD_STREAK_DECAY #define RING2_CHORD_STREAK_DECAY CHORD_STREAK_DECAY #endif #ifndef LEFT_RING2_CHORD_STREAK_DECAY #define LEFT_RING2_CHORD_STREAK_DECAY RING2_CHORD_STREAK_DECAY #endif #ifndef RIGHT_RING2_CHORD_STREAK_DECAY #define RIGHT_RING2_CHORD_STREAK_DECAY RING2_CHORD_STREAK_DECAY #endif #ifndef RING2_REPEAT_DECAY #define RING2_REPEAT_DECAY HOMEY_REPEAT_DECAY #endif #ifndef RING2_CHORD_REPEAT_DECAY #define RING2_CHORD_REPEAT_DECAY CHORD_REPEAT_DECAY #endif #ifndef LEFT_RING2_CHORD_REPEAT_DECAY #define LEFT_RING2_CHORD_REPEAT_DECAY RING2_CHORD_REPEAT_DECAY #endif #ifndef RIGHT_RING2_CHORD_REPEAT_DECAY #define RIGHT_RING2_CHORD_REPEAT_DECAY RING2_CHORD_REPEAT_DECAY #endif #ifndef MIDDY_HOLDING_TYPE #define MIDDY_HOLDING_TYPE HOMEY_HOLDING_TYPE #endif #ifndef MIDDY_CHORD_HOLDING_TYPE #define MIDDY_CHORD_HOLDING_TYPE CHORD_HOLDING_TYPE #endif #ifndef LEFT_MIDDY_CHORD_HOLDING_TYPE #define LEFT_MIDDY_CHORD_HOLDING_TYPE MIDDY_CHORD_HOLDING_TYPE #endif #ifndef RIGHT_MIDDY_CHORD_HOLDING_TYPE #define RIGHT_MIDDY_CHORD_HOLDING_TYPE MIDDY_CHORD_HOLDING_TYPE #endif #ifndef MIDDY_HOLDING_TIME #define MIDDY_HOLDING_TIME HOMEY_HOLDING_TIME #endif #ifndef MIDDY_CHORD_HOLDING_TIME #define MIDDY_CHORD_HOLDING_TIME CHORD_HOLDING_TIME #endif #ifndef LEFT_MIDDY_CHORD_HOLDING_TIME #define LEFT_MIDDY_CHORD_HOLDING_TIME MIDDY_CHORD_HOLDING_TIME #endif #ifndef RIGHT_MIDDY_CHORD_HOLDING_TIME #define RIGHT_MIDDY_CHORD_HOLDING_TIME MIDDY_CHORD_HOLDING_TIME #endif #ifndef MIDDY_STREAK_DECAY #define MIDDY_STREAK_DECAY HOMEY_STREAK_DECAY #endif #ifndef MIDDY_CHORD_STREAK_DECAY #define MIDDY_CHORD_STREAK_DECAY CHORD_STREAK_DECAY #endif #ifndef LEFT_MIDDY_CHORD_STREAK_DECAY #define LEFT_MIDDY_CHORD_STREAK_DECAY MIDDY_CHORD_STREAK_DECAY #endif #ifndef RIGHT_MIDDY_CHORD_STREAK_DECAY #define RIGHT_MIDDY_CHORD_STREAK_DECAY MIDDY_CHORD_STREAK_DECAY #endif #ifndef MIDDY_REPEAT_DECAY #define MIDDY_REPEAT_DECAY HOMEY_REPEAT_DECAY #endif #ifndef MIDDY_CHORD_REPEAT_DECAY #define MIDDY_CHORD_REPEAT_DECAY CHORD_REPEAT_DECAY #endif #ifndef LEFT_MIDDY_CHORD_REPEAT_DECAY #define LEFT_MIDDY_CHORD_REPEAT_DECAY MIDDY_CHORD_REPEAT_DECAY #endif #ifndef RIGHT_MIDDY_CHORD_REPEAT_DECAY #define RIGHT_MIDDY_CHORD_REPEAT_DECAY MIDDY_CHORD_REPEAT_DECAY #endif #ifndef INDEX_HOLDING_TYPE #define INDEX_HOLDING_TYPE HOMEY_HOLDING_TYPE #endif #ifndef INDEX_CHORD_HOLDING_TYPE #define INDEX_CHORD_HOLDING_TYPE CHORD_HOLDING_TYPE #endif #ifndef LEFT_INDEX_CHORD_HOLDING_TYPE #define LEFT_INDEX_CHORD_HOLDING_TYPE INDEX_CHORD_HOLDING_TYPE #endif #ifndef RIGHT_INDEX_CHORD_HOLDING_TYPE #define RIGHT_INDEX_CHORD_HOLDING_TYPE INDEX_CHORD_HOLDING_TYPE #endif #ifndef INDEX_HOLDING_TIME #define INDEX_HOLDING_TIME HOMEY_HOLDING_TIME #endif #ifndef INDEX_CHORD_HOLDING_TIME #define INDEX_CHORD_HOLDING_TIME CHORD_HOLDING_TIME #endif #ifndef LEFT_INDEX_CHORD_HOLDING_TIME #define LEFT_INDEX_CHORD_HOLDING_TIME INDEX_CHORD_HOLDING_TIME #endif #ifndef RIGHT_INDEX_CHORD_HOLDING_TIME #define RIGHT_INDEX_CHORD_HOLDING_TIME INDEX_CHORD_HOLDING_TIME #endif #ifndef INDEX_STREAK_DECAY #define INDEX_STREAK_DECAY HOMEY_STREAK_DECAY #endif #ifndef INDEX_CHORD_STREAK_DECAY #define INDEX_CHORD_STREAK_DECAY CHORD_STREAK_DECAY #endif #ifndef LEFT_INDEX_CHORD_STREAK_DECAY #define LEFT_INDEX_CHORD_STREAK_DECAY INDEX_CHORD_STREAK_DECAY #endif #ifndef RIGHT_INDEX_CHORD_STREAK_DECAY #define RIGHT_INDEX_CHORD_STREAK_DECAY INDEX_CHORD_STREAK_DECAY #endif #ifndef INDEX_REPEAT_DECAY #define INDEX_REPEAT_DECAY HOMEY_REPEAT_DECAY #endif #ifndef INDEX_CHORD_REPEAT_DECAY #define INDEX_CHORD_REPEAT_DECAY CHORD_REPEAT_DECAY #endif #ifndef LEFT_INDEX_CHORD_REPEAT_DECAY #define LEFT_INDEX_CHORD_REPEAT_DECAY INDEX_CHORD_REPEAT_DECAY #endif #ifndef RIGHT_INDEX_CHORD_REPEAT_DECAY #define RIGHT_INDEX_CHORD_REPEAT_DECAY INDEX_CHORD_REPEAT_DECAY #endif #ifndef LEFT_PINKY_HOLDING_TYPE #define LEFT_PINKY_HOLDING_TYPE PINKY_HOLDING_TYPE #endif #ifndef LEFT_PINKY_HOLDING_TIME #define LEFT_PINKY_HOLDING_TIME PINKY_HOLDING_TIME #endif #ifndef LEFT_PINKY_STREAK_DECAY #define LEFT_PINKY_STREAK_DECAY PINKY_STREAK_DECAY #endif #ifndef LEFT_PINKY_REPEAT_DECAY #define LEFT_PINKY_REPEAT_DECAY PINKY_REPEAT_DECAY #endif left_pinky: homey_left_pinky { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_PINKY_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; left_pinky_bilateral: homey_left_pinky_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_PINKY_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&left_pinky_hold>, <&kp>; }; left_pinky_hold: homey_left_pinky_hold { compatible = "zmk,behavior-macro-one-param"; wait-ms = <0>; tap-ms = <0>; #binding-cells = <1>; bindings = <¯o_param_1to1> , <¯o_press &kp MACRO_PLACEHOLDER> #ifdef LAYER_LeftPinky , <¯o_press &mo LAYER_LeftPinky> #endif , <¯o_pause_for_release> , <¯o_param_1to1> , <¯o_release &kp MACRO_PLACEHOLDER> #ifdef LAYER_LeftPinky , <¯o_release &mo LAYER_LeftPinky> #endif ; }; left_pinky_tap: homey_left_pinky_tap { compatible = "zmk,behavior-macro-one-param"; wait-ms = <0>; tap-ms = <0>; #binding-cells = <1>; bindings = <¯o_release &kp LSFT &kp RSFT &kp LALT &kp RALT &kp LCTL &kp RCTL &kp LGUI &kp RGUI> , <¯o_tap &kp LEFT_PINKY_KEY> , <¯o_param_1to1> , <¯o_tap &kp MACRO_PLACEHOLDER> ; }; #define LeftPinky(key, layer_index) LeftPinky_unroll(layer_index) (key) #define LeftPinky_unroll(layer_index) LeftPinky_concat(LeftPinky_layer, layer_index) #define LeftPinky_concat(prefix, layer_index) prefix ## layer_index #ifdef ENFORCE_BILATERAL #define left_pinky_layer0_variant left_pinky_bilateral #else #define left_pinky_layer0_variant left_pinky #endif #define LeftPinky_layer0(key) left_pinky_layer0_variant LEFT_PINKY_MOD key #define LeftPinky_layer1(key) left_pinky LEFT_PINKY_MOD key #define LeftPinky_layer2(key) left_pinky LEFT_PINKY_MOD key #define LeftPinky_layer3(key) left_pinky LEFT_PINKY_MOD key #define LeftPinky_layer4(key) left_pinky LEFT_PINKY_MOD key #define LeftPinky_layer5(key) left_pinky LEFT_PINKY_MOD key #define LeftPinky_layer6(key) left_pinky LEFT_PINKY_MOD key #define LeftPinky_layer7(key) left_pinky LEFT_PINKY_MOD key #define LeftPinky_layer8(key) left_pinky LEFT_PINKY_MOD key #ifndef RIGHT_PINKY_HOLDING_TYPE #define RIGHT_PINKY_HOLDING_TYPE PINKY_HOLDING_TYPE #endif #ifndef RIGHT_PINKY_HOLDING_TIME #define RIGHT_PINKY_HOLDING_TIME PINKY_HOLDING_TIME #endif #ifndef RIGHT_PINKY_STREAK_DECAY #define RIGHT_PINKY_STREAK_DECAY PINKY_STREAK_DECAY #endif #ifndef RIGHT_PINKY_REPEAT_DECAY #define RIGHT_PINKY_REPEAT_DECAY PINKY_REPEAT_DECAY #endif right_pinky: homey_right_pinky { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_PINKY_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; right_pinky_bilateral: homey_right_pinky_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_PINKY_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&right_pinky_hold>, <&kp>; }; right_pinky_hold: homey_right_pinky_hold { compatible = "zmk,behavior-macro-one-param"; wait-ms = <0>; tap-ms = <0>; #binding-cells = <1>; bindings = <¯o_param_1to1> , <¯o_press &kp MACRO_PLACEHOLDER> #ifdef LAYER_RightPinky , <¯o_press &mo LAYER_RightPinky> #endif , <¯o_pause_for_release> , <¯o_param_1to1> , <¯o_release &kp MACRO_PLACEHOLDER> #ifdef LAYER_RightPinky , <¯o_release &mo LAYER_RightPinky> #endif ; }; right_pinky_tap: homey_right_pinky_tap { compatible = "zmk,behavior-macro-one-param"; wait-ms = <0>; tap-ms = <0>; #binding-cells = <1>; bindings = <¯o_release &kp LSFT &kp RSFT &kp LALT &kp RALT &kp LCTL &kp RCTL &kp LGUI &kp RGUI> , <¯o_tap &kp RIGHT_PINKY_KEY> , <¯o_param_1to1> , <¯o_tap &kp MACRO_PLACEHOLDER> ; }; #define RightPinky(key, layer_index) RightPinky_unroll(layer_index) (key) #define RightPinky_unroll(layer_index) RightPinky_concat(RightPinky_layer, layer_index) #define RightPinky_concat(prefix, layer_index) prefix ## layer_index #ifdef ENFORCE_BILATERAL #define right_pinky_layer0_variant right_pinky_bilateral #else #define right_pinky_layer0_variant right_pinky #endif #define RightPinky_layer0(key) right_pinky_layer0_variant RIGHT_PINKY_MOD key #define RightPinky_layer1(key) right_pinky RIGHT_PINKY_MOD key #define RightPinky_layer2(key) right_pinky RIGHT_PINKY_MOD key #define RightPinky_layer3(key) right_pinky RIGHT_PINKY_MOD key #define RightPinky_layer4(key) right_pinky RIGHT_PINKY_MOD key #define RightPinky_layer5(key) right_pinky RIGHT_PINKY_MOD key #define RightPinky_layer6(key) right_pinky RIGHT_PINKY_MOD key #define RightPinky_layer7(key) right_pinky RIGHT_PINKY_MOD key #define RightPinky_layer8(key) right_pinky RIGHT_PINKY_MOD key #ifndef LEFT_RING1_HOLDING_TYPE #define LEFT_RING1_HOLDING_TYPE RING1_HOLDING_TYPE #endif #ifndef LEFT_RING1_HOLDING_TIME #define LEFT_RING1_HOLDING_TIME RING1_HOLDING_TIME #endif #ifndef LEFT_RING1_STREAK_DECAY #define LEFT_RING1_STREAK_DECAY RING1_STREAK_DECAY #endif #ifndef LEFT_RING1_REPEAT_DECAY #define LEFT_RING1_REPEAT_DECAY RING1_REPEAT_DECAY #endif left_ring1: homey_left_ring1 { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_RING1_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; left_ring1_bilateral: homey_left_ring1_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_RING1_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&left_ring1_hold>, <&kp>; }; left_ring1_hold: homey_left_ring1_hold { compatible = "zmk,behavior-macro-one-param"; wait-ms = <0>; tap-ms = <0>; #binding-cells = <1>; bindings = <¯o_param_1to1> , <¯o_press &kp MACRO_PLACEHOLDER> #ifdef LAYER_LeftRing1 , <¯o_press &mo LAYER_LeftRing1> #endif , <¯o_pause_for_release> , <¯o_param_1to1> , <¯o_release &kp MACRO_PLACEHOLDER> #ifdef LAYER_LeftRing1 , <¯o_release &mo LAYER_LeftRing1> #endif ; }; left_ring1_tap: homey_left_ring1_tap { compatible = "zmk,behavior-macro-one-param"; wait-ms = <0>; tap-ms = <0>; #binding-cells = <1>; bindings = <¯o_release &kp LSFT &kp RSFT &kp LALT &kp RALT &kp LCTL &kp RCTL &kp LGUI &kp RGUI> , <¯o_tap &kp LEFT_RING1_KEY> , <¯o_param_1to1> , <¯o_tap &kp MACRO_PLACEHOLDER> ; }; #define LeftRing1(key, layer_index) LeftRing1_unroll(layer_index) (key) #define LeftRing1_unroll(layer_index) LeftRing1_concat(LeftRing1_layer, layer_index) #define LeftRing1_concat(prefix, layer_index) prefix ## layer_index #ifdef ENFORCE_BILATERAL #define left_ring1_layer0_variant left_ring1_bilateral #else #define left_ring1_layer0_variant left_ring1 #endif #define LeftRing1_layer0(key) left_ring1_layer0_variant LEFT_RING1_MOD key #define LeftRing1_layer1(key) left_ring1 LEFT_RING1_MOD key #define LeftRing1_layer2(key) left_ring1 LEFT_RING1_MOD key #define LeftRing1_layer3(key) left_ring1 LEFT_RING1_MOD key #define LeftRing1_layer4(key) left_ring1 LEFT_RING1_MOD key #define LeftRing1_layer5(key) left_ring1 LEFT_RING1_MOD key #define LeftRing1_layer6(key) left_ring1 LEFT_RING1_MOD key #define LeftRing1_layer7(key) left_ring1 LEFT_RING1_MOD key #define LeftRing1_layer8(key) left_ring1 LEFT_RING1_MOD key #ifndef RIGHT_RING1_HOLDING_TYPE #define RIGHT_RING1_HOLDING_TYPE RING1_HOLDING_TYPE #endif #ifndef RIGHT_RING1_HOLDING_TIME #define RIGHT_RING1_HOLDING_TIME RING1_HOLDING_TIME #endif #ifndef RIGHT_RING1_STREAK_DECAY #define RIGHT_RING1_STREAK_DECAY RING1_STREAK_DECAY #endif #ifndef RIGHT_RING1_REPEAT_DECAY #define RIGHT_RING1_REPEAT_DECAY RING1_REPEAT_DECAY #endif right_ring1: homey_right_ring1 { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_RING1_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; right_ring1_bilateral: homey_right_ring1_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_RING1_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&right_ring1_hold>, <&kp>; }; right_ring1_hold: homey_right_ring1_hold { compatible = "zmk,behavior-macro-one-param"; wait-ms = <0>; tap-ms = <0>; #binding-cells = <1>; bindings = <¯o_param_1to1> , <¯o_press &kp MACRO_PLACEHOLDER> #ifdef LAYER_RightRing1 , <¯o_press &mo LAYER_RightRing1> #endif , <¯o_pause_for_release> , <¯o_param_1to1> , <¯o_release &kp MACRO_PLACEHOLDER> #ifdef LAYER_RightRing1 , <¯o_release &mo LAYER_RightRing1> #endif ; }; right_ring1_tap: homey_right_ring1_tap { compatible = "zmk,behavior-macro-one-param"; wait-ms = <0>; tap-ms = <0>; #binding-cells = <1>; bindings = <¯o_release &kp LSFT &kp RSFT &kp LALT &kp RALT &kp LCTL &kp RCTL &kp LGUI &kp RGUI> , <¯o_tap &kp RIGHT_RING1_KEY> , <¯o_param_1to1> , <¯o_tap &kp MACRO_PLACEHOLDER> ; }; #define RightRing1(key, layer_index) RightRing1_unroll(layer_index) (key) #define RightRing1_unroll(layer_index) RightRing1_concat(RightRing1_layer, layer_index) #define RightRing1_concat(prefix, layer_index) prefix ## layer_index #ifdef ENFORCE_BILATERAL #define right_ring1_layer0_variant right_ring1_bilateral #else #define right_ring1_layer0_variant right_ring1 #endif #define RightRing1_layer0(key) right_ring1_layer0_variant RIGHT_RING1_MOD key #define RightRing1_layer1(key) right_ring1 RIGHT_RING1_MOD key #define RightRing1_layer2(key) right_ring1 RIGHT_RING1_MOD key #define RightRing1_layer3(key) right_ring1 RIGHT_RING1_MOD key #define RightRing1_layer4(key) right_ring1 RIGHT_RING1_MOD key #define RightRing1_layer5(key) right_ring1 RIGHT_RING1_MOD key #define RightRing1_layer6(key) right_ring1 RIGHT_RING1_MOD key #define RightRing1_layer7(key) right_ring1 RIGHT_RING1_MOD key #define RightRing1_layer8(key) right_ring1 RIGHT_RING1_MOD key #ifndef LEFT_RING2_HOLDING_TYPE #define LEFT_RING2_HOLDING_TYPE RING2_HOLDING_TYPE #endif #ifndef LEFT_RING2_HOLDING_TIME #define LEFT_RING2_HOLDING_TIME RING2_HOLDING_TIME #endif #ifndef LEFT_RING2_STREAK_DECAY #define LEFT_RING2_STREAK_DECAY RING2_STREAK_DECAY #endif #ifndef LEFT_RING2_REPEAT_DECAY #define LEFT_RING2_REPEAT_DECAY RING2_REPEAT_DECAY #endif left_ring2: homey_left_ring2 { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_RING2_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; left_ring2_bilateral: homey_left_ring2_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_RING2_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&left_ring2_hold>, <&kp>; }; left_ring2_hold: homey_left_ring2_hold { compatible = "zmk,behavior-macro-one-param"; wait-ms = <0>; tap-ms = <0>; #binding-cells = <1>; bindings = <¯o_param_1to1> , <¯o_press &kp MACRO_PLACEHOLDER> #ifdef LAYER_LeftRing2 , <¯o_press &mo LAYER_LeftRing2> #endif , <¯o_pause_for_release> , <¯o_param_1to1> , <¯o_release &kp MACRO_PLACEHOLDER> #ifdef LAYER_LeftRing2 , <¯o_release &mo LAYER_LeftRing2> #endif ; }; left_ring2_tap: homey_left_ring2_tap { compatible = "zmk,behavior-macro-one-param"; wait-ms = <0>; tap-ms = <0>; #binding-cells = <1>; bindings = <¯o_release &kp LSFT &kp RSFT &kp LALT &kp RALT &kp LCTL &kp RCTL &kp LGUI &kp RGUI> , <¯o_tap &kp LEFT_RING2_KEY> , <¯o_param_1to1> , <¯o_tap &kp MACRO_PLACEHOLDER> ; }; #define LeftRing2(key, layer_index) LeftRing2_unroll(layer_index) (key) #define LeftRing2_unroll(layer_index) LeftRing2_concat(LeftRing2_layer, layer_index) #define LeftRing2_concat(prefix, layer_index) prefix ## layer_index #ifdef ENFORCE_BILATERAL #define left_ring2_layer0_variant left_ring2_bilateral #else #define left_ring2_layer0_variant left_ring2 #endif #define LeftRing2_layer0(key) left_ring2_layer0_variant LEFT_RING2_MOD key #define LeftRing2_layer1(key) left_ring2 LEFT_RING2_MOD key #define LeftRing2_layer2(key) left_ring2 LEFT_RING2_MOD key #define LeftRing2_layer3(key) left_ring2 LEFT_RING2_MOD key #define LeftRing2_layer4(key) left_ring2 LEFT_RING2_MOD key #define LeftRing2_layer5(key) left_ring2 LEFT_RING2_MOD key #define LeftRing2_layer6(key) left_ring2 LEFT_RING2_MOD key #define LeftRing2_layer7(key) left_ring2 LEFT_RING2_MOD key #define LeftRing2_layer8(key) left_ring2 LEFT_RING2_MOD key #ifndef RIGHT_RING2_HOLDING_TYPE #define RIGHT_RING2_HOLDING_TYPE RING2_HOLDING_TYPE #endif #ifndef RIGHT_RING2_HOLDING_TIME #define RIGHT_RING2_HOLDING_TIME RING2_HOLDING_TIME #endif #ifndef RIGHT_RING2_STREAK_DECAY #define RIGHT_RING2_STREAK_DECAY RING2_STREAK_DECAY #endif #ifndef RIGHT_RING2_REPEAT_DECAY #define RIGHT_RING2_REPEAT_DECAY RING2_REPEAT_DECAY #endif right_ring2: homey_right_ring2 { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_RING2_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; right_ring2_bilateral: homey_right_ring2_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_RING2_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&right_ring2_hold>, <&kp>; }; right_ring2_hold: homey_right_ring2_hold { compatible = "zmk,behavior-macro-one-param"; wait-ms = <0>; tap-ms = <0>; #binding-cells = <1>; bindings = <¯o_param_1to1> , <¯o_press &kp MACRO_PLACEHOLDER> #ifdef LAYER_RightRing2 , <¯o_press &mo LAYER_RightRing2> #endif , <¯o_pause_for_release> , <¯o_param_1to1> , <¯o_release &kp MACRO_PLACEHOLDER> #ifdef LAYER_RightRing2 , <¯o_release &mo LAYER_RightRing2> #endif ; }; right_ring2_tap: homey_right_ring2_tap { compatible = "zmk,behavior-macro-one-param"; wait-ms = <0>; tap-ms = <0>; #binding-cells = <1>; bindings = <¯o_release &kp LSFT &kp RSFT &kp LALT &kp RALT &kp LCTL &kp RCTL &kp LGUI &kp RGUI> , <¯o_tap &kp RIGHT_RING2_KEY> , <¯o_param_1to1> , <¯o_tap &kp MACRO_PLACEHOLDER> ; }; #define RightRing2(key, layer_index) RightRing2_unroll(layer_index) (key) #define RightRing2_unroll(layer_index) RightRing2_concat(RightRing2_layer, layer_index) #define RightRing2_concat(prefix, layer_index) prefix ## layer_index #ifdef ENFORCE_BILATERAL #define right_ring2_layer0_variant right_ring2_bilateral #else #define right_ring2_layer0_variant right_ring2 #endif #define RightRing2_layer0(key) right_ring2_layer0_variant RIGHT_RING2_MOD key #define RightRing2_layer1(key) right_ring2 RIGHT_RING2_MOD key #define RightRing2_layer2(key) right_ring2 RIGHT_RING2_MOD key #define RightRing2_layer3(key) right_ring2 RIGHT_RING2_MOD key #define RightRing2_layer4(key) right_ring2 RIGHT_RING2_MOD key #define RightRing2_layer5(key) right_ring2 RIGHT_RING2_MOD key #define RightRing2_layer6(key) right_ring2 RIGHT_RING2_MOD key #define RightRing2_layer7(key) right_ring2 RIGHT_RING2_MOD key #define RightRing2_layer8(key) right_ring2 RIGHT_RING2_MOD key #ifndef LEFT_MIDDY_HOLDING_TYPE #define LEFT_MIDDY_HOLDING_TYPE MIDDY_HOLDING_TYPE #endif #ifndef LEFT_MIDDY_HOLDING_TIME #define LEFT_MIDDY_HOLDING_TIME MIDDY_HOLDING_TIME #endif #ifndef LEFT_MIDDY_STREAK_DECAY #define LEFT_MIDDY_STREAK_DECAY MIDDY_STREAK_DECAY #endif #ifndef LEFT_MIDDY_REPEAT_DECAY #define LEFT_MIDDY_REPEAT_DECAY MIDDY_REPEAT_DECAY #endif left_middy: homey_left_middy { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_MIDDY_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; left_middy_bilateral: homey_left_middy_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_MIDDY_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&left_middy_hold>, <&kp>; }; left_middy_hold: homey_left_middy_hold { compatible = "zmk,behavior-macro-one-param"; wait-ms = <0>; tap-ms = <0>; #binding-cells = <1>; bindings = <¯o_param_1to1> , <¯o_press &kp MACRO_PLACEHOLDER> #ifdef LAYER_LeftMiddy , <¯o_press &mo LAYER_LeftMiddy> #endif , <¯o_pause_for_release> , <¯o_param_1to1> , <¯o_release &kp MACRO_PLACEHOLDER> #ifdef LAYER_LeftMiddy , <¯o_release &mo LAYER_LeftMiddy> #endif ; }; left_middy_tap: homey_left_middy_tap { compatible = "zmk,behavior-macro-one-param"; wait-ms = <0>; tap-ms = <0>; #binding-cells = <1>; bindings = <¯o_release &kp LSFT &kp RSFT &kp LALT &kp RALT &kp LCTL &kp RCTL &kp LGUI &kp RGUI> , <¯o_tap &kp LEFT_MIDDY_KEY> , <¯o_param_1to1> , <¯o_tap &kp MACRO_PLACEHOLDER> ; }; #define LeftMiddy(key, layer_index) LeftMiddy_unroll(layer_index) (key) #define LeftMiddy_unroll(layer_index) LeftMiddy_concat(LeftMiddy_layer, layer_index) #define LeftMiddy_concat(prefix, layer_index) prefix ## layer_index #ifdef ENFORCE_BILATERAL #define left_middy_layer0_variant left_middy_bilateral #else #define left_middy_layer0_variant left_middy #endif #define LeftMiddy_layer0(key) left_middy_layer0_variant LEFT_MIDDY_MOD key #define LeftMiddy_layer1(key) left_middy LEFT_MIDDY_MOD key #define LeftMiddy_layer2(key) left_middy LEFT_MIDDY_MOD key #define LeftMiddy_layer3(key) left_middy LEFT_MIDDY_MOD key #define LeftMiddy_layer4(key) left_middy LEFT_MIDDY_MOD key #define LeftMiddy_layer5(key) left_middy LEFT_MIDDY_MOD key #define LeftMiddy_layer6(key) left_middy LEFT_MIDDY_MOD key #define LeftMiddy_layer7(key) left_middy LEFT_MIDDY_MOD key #define LeftMiddy_layer8(key) left_middy LEFT_MIDDY_MOD key #ifndef RIGHT_MIDDY_HOLDING_TYPE #define RIGHT_MIDDY_HOLDING_TYPE MIDDY_HOLDING_TYPE #endif #ifndef RIGHT_MIDDY_HOLDING_TIME #define RIGHT_MIDDY_HOLDING_TIME MIDDY_HOLDING_TIME #endif #ifndef RIGHT_MIDDY_STREAK_DECAY #define RIGHT_MIDDY_STREAK_DECAY MIDDY_STREAK_DECAY #endif #ifndef RIGHT_MIDDY_REPEAT_DECAY #define RIGHT_MIDDY_REPEAT_DECAY MIDDY_REPEAT_DECAY #endif right_middy: homey_right_middy { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_MIDDY_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; right_middy_bilateral: homey_right_middy_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_MIDDY_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&right_middy_hold>, <&kp>; }; right_middy_hold: homey_right_middy_hold { compatible = "zmk,behavior-macro-one-param"; wait-ms = <0>; tap-ms = <0>; #binding-cells = <1>; bindings = <¯o_param_1to1> , <¯o_press &kp MACRO_PLACEHOLDER> #ifdef LAYER_RightMiddy , <¯o_press &mo LAYER_RightMiddy> #endif , <¯o_pause_for_release> , <¯o_param_1to1> , <¯o_release &kp MACRO_PLACEHOLDER> #ifdef LAYER_RightMiddy , <¯o_release &mo LAYER_RightMiddy> #endif ; }; right_middy_tap: homey_right_middy_tap { compatible = "zmk,behavior-macro-one-param"; wait-ms = <0>; tap-ms = <0>; #binding-cells = <1>; bindings = <¯o_release &kp LSFT &kp RSFT &kp LALT &kp RALT &kp LCTL &kp RCTL &kp LGUI &kp RGUI> , <¯o_tap &kp RIGHT_MIDDY_KEY> , <¯o_param_1to1> , <¯o_tap &kp MACRO_PLACEHOLDER> ; }; #define RightMiddy(key, layer_index) RightMiddy_unroll(layer_index) (key) #define RightMiddy_unroll(layer_index) RightMiddy_concat(RightMiddy_layer, layer_index) #define RightMiddy_concat(prefix, layer_index) prefix ## layer_index #ifdef ENFORCE_BILATERAL #define right_middy_layer0_variant right_middy_bilateral #else #define right_middy_layer0_variant right_middy #endif #define RightMiddy_layer0(key) right_middy_layer0_variant RIGHT_MIDDY_MOD key #define RightMiddy_layer1(key) right_middy RIGHT_MIDDY_MOD key #define RightMiddy_layer2(key) right_middy RIGHT_MIDDY_MOD key #define RightMiddy_layer3(key) right_middy RIGHT_MIDDY_MOD key #define RightMiddy_layer4(key) right_middy RIGHT_MIDDY_MOD key #define RightMiddy_layer5(key) right_middy RIGHT_MIDDY_MOD key #define RightMiddy_layer6(key) right_middy RIGHT_MIDDY_MOD key #define RightMiddy_layer7(key) right_middy RIGHT_MIDDY_MOD key #define RightMiddy_layer8(key) right_middy RIGHT_MIDDY_MOD key #ifndef LEFT_INDEX_HOLDING_TYPE #define LEFT_INDEX_HOLDING_TYPE INDEX_HOLDING_TYPE #endif #ifndef LEFT_INDEX_HOLDING_TIME #define LEFT_INDEX_HOLDING_TIME INDEX_HOLDING_TIME #endif #ifndef LEFT_INDEX_STREAK_DECAY #define LEFT_INDEX_STREAK_DECAY INDEX_STREAK_DECAY #endif #ifndef LEFT_INDEX_REPEAT_DECAY #define LEFT_INDEX_REPEAT_DECAY INDEX_REPEAT_DECAY #endif left_index: homey_left_index { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_INDEX_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; left_index_bilateral: homey_left_index_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_INDEX_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&left_index_hold>, <&kp>; }; left_index_hold: homey_left_index_hold { compatible = "zmk,behavior-macro-one-param"; wait-ms = <0>; tap-ms = <0>; #binding-cells = <1>; bindings = <¯o_param_1to1> , <¯o_press &kp MACRO_PLACEHOLDER> #ifdef LAYER_LeftIndex , <¯o_press &mo LAYER_LeftIndex> #endif , <¯o_pause_for_release> , <¯o_param_1to1> , <¯o_release &kp MACRO_PLACEHOLDER> #ifdef LAYER_LeftIndex , <¯o_release &mo LAYER_LeftIndex> #endif ; }; left_index_tap: homey_left_index_tap { compatible = "zmk,behavior-macro-one-param"; wait-ms = <0>; tap-ms = <0>; #binding-cells = <1>; bindings = <¯o_release &kp LSFT &kp RSFT &kp LALT &kp RALT &kp LCTL &kp RCTL &kp LGUI &kp RGUI> , <¯o_tap &kp LEFT_INDEX_KEY> , <¯o_param_1to1> , <¯o_tap &kp MACRO_PLACEHOLDER> ; }; #define LeftIndex(key, layer_index) LeftIndex_unroll(layer_index) (key) #define LeftIndex_unroll(layer_index) LeftIndex_concat(LeftIndex_layer, layer_index) #define LeftIndex_concat(prefix, layer_index) prefix ## layer_index #ifdef ENFORCE_BILATERAL #define left_index_layer0_variant left_index_bilateral #else #define left_index_layer0_variant left_index #endif #define LeftIndex_layer0(key) left_index_layer0_variant LEFT_INDEX_MOD key #define LeftIndex_layer1(key) left_index LEFT_INDEX_MOD key #define LeftIndex_layer2(key) left_index LEFT_INDEX_MOD key #define LeftIndex_layer3(key) left_index LEFT_INDEX_MOD key #define LeftIndex_layer4(key) left_index LEFT_INDEX_MOD key #define LeftIndex_layer5(key) left_index LEFT_INDEX_MOD key #define LeftIndex_layer6(key) left_index LEFT_INDEX_MOD key #define LeftIndex_layer7(key) left_index LEFT_INDEX_MOD key #define LeftIndex_layer8(key) left_index LEFT_INDEX_MOD key #ifndef RIGHT_INDEX_HOLDING_TYPE #define RIGHT_INDEX_HOLDING_TYPE INDEX_HOLDING_TYPE #endif #ifndef RIGHT_INDEX_HOLDING_TIME #define RIGHT_INDEX_HOLDING_TIME INDEX_HOLDING_TIME #endif #ifndef RIGHT_INDEX_STREAK_DECAY #define RIGHT_INDEX_STREAK_DECAY INDEX_STREAK_DECAY #endif #ifndef RIGHT_INDEX_REPEAT_DECAY #define RIGHT_INDEX_REPEAT_DECAY INDEX_REPEAT_DECAY #endif right_index: homey_right_index { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_INDEX_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; right_index_bilateral: homey_right_index_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_INDEX_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&right_index_hold>, <&kp>; }; right_index_hold: homey_right_index_hold { compatible = "zmk,behavior-macro-one-param"; wait-ms = <0>; tap-ms = <0>; #binding-cells = <1>; bindings = <¯o_param_1to1> , <¯o_press &kp MACRO_PLACEHOLDER> #ifdef LAYER_RightIndex , <¯o_press &mo LAYER_RightIndex> #endif , <¯o_pause_for_release> , <¯o_param_1to1> , <¯o_release &kp MACRO_PLACEHOLDER> #ifdef LAYER_RightIndex , <¯o_release &mo LAYER_RightIndex> #endif ; }; right_index_tap: homey_right_index_tap { compatible = "zmk,behavior-macro-one-param"; wait-ms = <0>; tap-ms = <0>; #binding-cells = <1>; bindings = <¯o_release &kp LSFT &kp RSFT &kp LALT &kp RALT &kp LCTL &kp RCTL &kp LGUI &kp RGUI> , <¯o_tap &kp RIGHT_INDEX_KEY> , <¯o_param_1to1> , <¯o_tap &kp MACRO_PLACEHOLDER> ; }; #define RightIndex(key, layer_index) RightIndex_unroll(layer_index) (key) #define RightIndex_unroll(layer_index) RightIndex_concat(RightIndex_layer, layer_index) #define RightIndex_concat(prefix, layer_index) prefix ## layer_index #ifdef ENFORCE_BILATERAL #define right_index_layer0_variant right_index_bilateral #else #define right_index_layer0_variant right_index #endif #define RightIndex_layer0(key) right_index_layer0_variant RIGHT_INDEX_MOD key #define RightIndex_layer1(key) right_index RIGHT_INDEX_MOD key #define RightIndex_layer2(key) right_index RIGHT_INDEX_MOD key #define RightIndex_layer3(key) right_index RIGHT_INDEX_MOD key #define RightIndex_layer4(key) right_index RIGHT_INDEX_MOD key #define RightIndex_layer5(key) right_index RIGHT_INDEX_MOD key #define RightIndex_layer6(key) right_index RIGHT_INDEX_MOD key #define RightIndex_layer7(key) right_index RIGHT_INDEX_MOD key #define RightIndex_layer8(key) right_index RIGHT_INDEX_MOD key #ifndef LEFT_RING1_PINKY_HOLDING_TYPE #define LEFT_RING1_PINKY_HOLDING_TYPE LEFT_RING1_CHORD_HOLDING_TYPE #endif #ifndef LEFT_RING1_PINKY_HOLDING_TIME #define LEFT_RING1_PINKY_HOLDING_TIME LEFT_RING1_CHORD_HOLDING_TIME #endif #ifndef LEFT_RING1_PINKY_STREAK_DECAY #define LEFT_RING1_PINKY_STREAK_DECAY LEFT_RING1_CHORD_STREAK_DECAY #endif #ifndef LEFT_RING1_PINKY_REPEAT_DECAY #define LEFT_RING1_PINKY_REPEAT_DECAY LEFT_RING1_CHORD_REPEAT_DECAY #endif left_ring1_pinky: homey_left_ring1_pinky { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_RING1_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; left_ring1_pinky_bilateral: homey_left_ring1_pinky_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_RING1_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&left_ring1_tap>; }; #define LeftRing1Pinky left_ring1_pinky_bilateral LEFT_PINKY_MOD LEFT_PINKY_KEY #ifndef LEFT_RING2_PINKY_HOLDING_TYPE #define LEFT_RING2_PINKY_HOLDING_TYPE LEFT_RING2_CHORD_HOLDING_TYPE #endif #ifndef LEFT_RING2_PINKY_HOLDING_TIME #define LEFT_RING2_PINKY_HOLDING_TIME LEFT_RING2_CHORD_HOLDING_TIME #endif #ifndef LEFT_RING2_PINKY_STREAK_DECAY #define LEFT_RING2_PINKY_STREAK_DECAY LEFT_RING2_CHORD_STREAK_DECAY #endif #ifndef LEFT_RING2_PINKY_REPEAT_DECAY #define LEFT_RING2_PINKY_REPEAT_DECAY LEFT_RING2_CHORD_REPEAT_DECAY #endif left_ring2_pinky: homey_left_ring2_pinky { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_RING2_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; left_ring2_pinky_bilateral: homey_left_ring2_pinky_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_RING2_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&left_ring2_tap>; }; #define LeftRing2Pinky left_ring2_pinky_bilateral LEFT_PINKY_MOD LEFT_PINKY_KEY #ifndef LEFT_MIDDY_PINKY_HOLDING_TYPE #define LEFT_MIDDY_PINKY_HOLDING_TYPE LEFT_MIDDY_CHORD_HOLDING_TYPE #endif #ifndef LEFT_MIDDY_PINKY_HOLDING_TIME #define LEFT_MIDDY_PINKY_HOLDING_TIME LEFT_MIDDY_CHORD_HOLDING_TIME #endif #ifndef LEFT_MIDDY_PINKY_STREAK_DECAY #define LEFT_MIDDY_PINKY_STREAK_DECAY LEFT_MIDDY_CHORD_STREAK_DECAY #endif #ifndef LEFT_MIDDY_PINKY_REPEAT_DECAY #define LEFT_MIDDY_PINKY_REPEAT_DECAY LEFT_MIDDY_CHORD_REPEAT_DECAY #endif left_middy_pinky: homey_left_middy_pinky { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_MIDDY_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; left_middy_pinky_bilateral: homey_left_middy_pinky_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_MIDDY_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&left_middy_tap>; }; #define LeftMiddyPinky left_middy_pinky_bilateral LEFT_PINKY_MOD LEFT_PINKY_KEY #ifndef LEFT_INDEX_PINKY_HOLDING_TYPE #define LEFT_INDEX_PINKY_HOLDING_TYPE LEFT_INDEX_CHORD_HOLDING_TYPE #endif #ifndef LEFT_INDEX_PINKY_HOLDING_TIME #define LEFT_INDEX_PINKY_HOLDING_TIME LEFT_INDEX_CHORD_HOLDING_TIME #endif #ifndef LEFT_INDEX_PINKY_STREAK_DECAY #define LEFT_INDEX_PINKY_STREAK_DECAY LEFT_INDEX_CHORD_STREAK_DECAY #endif #ifndef LEFT_INDEX_PINKY_REPEAT_DECAY #define LEFT_INDEX_PINKY_REPEAT_DECAY LEFT_INDEX_CHORD_REPEAT_DECAY #endif left_index_pinky: homey_left_index_pinky { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_INDEX_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; left_index_pinky_bilateral: homey_left_index_pinky_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_INDEX_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&left_index_tap>; }; #define LeftIndexPinky left_index_pinky_bilateral LEFT_PINKY_MOD LEFT_PINKY_KEY #ifndef RIGHT_RING1_PINKY_HOLDING_TYPE #define RIGHT_RING1_PINKY_HOLDING_TYPE RIGHT_RING1_CHORD_HOLDING_TYPE #endif #ifndef RIGHT_RING1_PINKY_HOLDING_TIME #define RIGHT_RING1_PINKY_HOLDING_TIME RIGHT_RING1_CHORD_HOLDING_TIME #endif #ifndef RIGHT_RING1_PINKY_STREAK_DECAY #define RIGHT_RING1_PINKY_STREAK_DECAY RIGHT_RING1_CHORD_STREAK_DECAY #endif #ifndef RIGHT_RING1_PINKY_REPEAT_DECAY #define RIGHT_RING1_PINKY_REPEAT_DECAY RIGHT_RING1_CHORD_REPEAT_DECAY #endif right_ring1_pinky: homey_right_ring1_pinky { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_RING1_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; right_ring1_pinky_bilateral: homey_right_ring1_pinky_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_RING1_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&right_ring1_tap>; }; #define RightRing1Pinky right_ring1_pinky_bilateral RIGHT_PINKY_MOD RIGHT_PINKY_KEY #ifndef RIGHT_RING2_PINKY_HOLDING_TYPE #define RIGHT_RING2_PINKY_HOLDING_TYPE RIGHT_RING2_CHORD_HOLDING_TYPE #endif #ifndef RIGHT_RING2_PINKY_HOLDING_TIME #define RIGHT_RING2_PINKY_HOLDING_TIME RIGHT_RING2_CHORD_HOLDING_TIME #endif #ifndef RIGHT_RING2_PINKY_STREAK_DECAY #define RIGHT_RING2_PINKY_STREAK_DECAY RIGHT_RING2_CHORD_STREAK_DECAY #endif #ifndef RIGHT_RING2_PINKY_REPEAT_DECAY #define RIGHT_RING2_PINKY_REPEAT_DECAY RIGHT_RING2_CHORD_REPEAT_DECAY #endif right_ring2_pinky: homey_right_ring2_pinky { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_RING2_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; right_ring2_pinky_bilateral: homey_right_ring2_pinky_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_RING2_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&right_ring2_tap>; }; #define RightRing2Pinky right_ring2_pinky_bilateral RIGHT_PINKY_MOD RIGHT_PINKY_KEY #ifndef RIGHT_MIDDY_PINKY_HOLDING_TYPE #define RIGHT_MIDDY_PINKY_HOLDING_TYPE RIGHT_MIDDY_CHORD_HOLDING_TYPE #endif #ifndef RIGHT_MIDDY_PINKY_HOLDING_TIME #define RIGHT_MIDDY_PINKY_HOLDING_TIME RIGHT_MIDDY_CHORD_HOLDING_TIME #endif #ifndef RIGHT_MIDDY_PINKY_STREAK_DECAY #define RIGHT_MIDDY_PINKY_STREAK_DECAY RIGHT_MIDDY_CHORD_STREAK_DECAY #endif #ifndef RIGHT_MIDDY_PINKY_REPEAT_DECAY #define RIGHT_MIDDY_PINKY_REPEAT_DECAY RIGHT_MIDDY_CHORD_REPEAT_DECAY #endif right_middy_pinky: homey_right_middy_pinky { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_MIDDY_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; right_middy_pinky_bilateral: homey_right_middy_pinky_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_MIDDY_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&right_middy_tap>; }; #define RightMiddyPinky right_middy_pinky_bilateral RIGHT_PINKY_MOD RIGHT_PINKY_KEY #ifndef RIGHT_INDEX_PINKY_HOLDING_TYPE #define RIGHT_INDEX_PINKY_HOLDING_TYPE RIGHT_INDEX_CHORD_HOLDING_TYPE #endif #ifndef RIGHT_INDEX_PINKY_HOLDING_TIME #define RIGHT_INDEX_PINKY_HOLDING_TIME RIGHT_INDEX_CHORD_HOLDING_TIME #endif #ifndef RIGHT_INDEX_PINKY_STREAK_DECAY #define RIGHT_INDEX_PINKY_STREAK_DECAY RIGHT_INDEX_CHORD_STREAK_DECAY #endif #ifndef RIGHT_INDEX_PINKY_REPEAT_DECAY #define RIGHT_INDEX_PINKY_REPEAT_DECAY RIGHT_INDEX_CHORD_REPEAT_DECAY #endif right_index_pinky: homey_right_index_pinky { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_INDEX_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; right_index_pinky_bilateral: homey_right_index_pinky_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_INDEX_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&right_index_tap>; }; #define RightIndexPinky right_index_pinky_bilateral RIGHT_PINKY_MOD RIGHT_PINKY_KEY #ifndef LEFT_PINKY_RING1_HOLDING_TYPE #define LEFT_PINKY_RING1_HOLDING_TYPE LEFT_PINKY_CHORD_HOLDING_TYPE #endif #ifndef LEFT_PINKY_RING1_HOLDING_TIME #define LEFT_PINKY_RING1_HOLDING_TIME LEFT_PINKY_CHORD_HOLDING_TIME #endif #ifndef LEFT_PINKY_RING1_STREAK_DECAY #define LEFT_PINKY_RING1_STREAK_DECAY LEFT_PINKY_CHORD_STREAK_DECAY #endif #ifndef LEFT_PINKY_RING1_REPEAT_DECAY #define LEFT_PINKY_RING1_REPEAT_DECAY LEFT_PINKY_CHORD_REPEAT_DECAY #endif left_pinky_ring1: homey_left_pinky_ring1 { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_PINKY_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; left_pinky_ring1_bilateral: homey_left_pinky_ring1_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_PINKY_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&left_pinky_tap>; }; #define LeftPinkyRing1 left_pinky_ring1_bilateral LEFT_RING1_MOD LEFT_RING1_KEY #ifndef LEFT_RING2_RING1_HOLDING_TYPE #define LEFT_RING2_RING1_HOLDING_TYPE LEFT_RING2_CHORD_HOLDING_TYPE #endif #ifndef LEFT_RING2_RING1_HOLDING_TIME #define LEFT_RING2_RING1_HOLDING_TIME LEFT_RING2_CHORD_HOLDING_TIME #endif #ifndef LEFT_RING2_RING1_STREAK_DECAY #define LEFT_RING2_RING1_STREAK_DECAY LEFT_RING2_CHORD_STREAK_DECAY #endif #ifndef LEFT_RING2_RING1_REPEAT_DECAY #define LEFT_RING2_RING1_REPEAT_DECAY LEFT_RING2_CHORD_REPEAT_DECAY #endif left_ring2_ring1: homey_left_ring2_ring1 { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_RING2_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; left_ring2_ring1_bilateral: homey_left_ring2_ring1_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_RING2_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&left_ring2_tap>; }; #define LeftRing2Ring1 left_ring2_ring1_bilateral LEFT_RING1_MOD LEFT_RING1_KEY #ifndef LEFT_MIDDY_RING1_HOLDING_TYPE #define LEFT_MIDDY_RING1_HOLDING_TYPE LEFT_MIDDY_CHORD_HOLDING_TYPE #endif #ifndef LEFT_MIDDY_RING1_HOLDING_TIME #define LEFT_MIDDY_RING1_HOLDING_TIME LEFT_MIDDY_CHORD_HOLDING_TIME #endif #ifndef LEFT_MIDDY_RING1_STREAK_DECAY #define LEFT_MIDDY_RING1_STREAK_DECAY LEFT_MIDDY_CHORD_STREAK_DECAY #endif #ifndef LEFT_MIDDY_RING1_REPEAT_DECAY #define LEFT_MIDDY_RING1_REPEAT_DECAY LEFT_MIDDY_CHORD_REPEAT_DECAY #endif left_middy_ring1: homey_left_middy_ring1 { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_MIDDY_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; left_middy_ring1_bilateral: homey_left_middy_ring1_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_MIDDY_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&left_middy_tap>; }; #define LeftMiddyRing1 left_middy_ring1_bilateral LEFT_RING1_MOD LEFT_RING1_KEY #ifndef LEFT_INDEX_RING1_HOLDING_TYPE #define LEFT_INDEX_RING1_HOLDING_TYPE LEFT_INDEX_CHORD_HOLDING_TYPE #endif #ifndef LEFT_INDEX_RING1_HOLDING_TIME #define LEFT_INDEX_RING1_HOLDING_TIME LEFT_INDEX_CHORD_HOLDING_TIME #endif #ifndef LEFT_INDEX_RING1_STREAK_DECAY #define LEFT_INDEX_RING1_STREAK_DECAY LEFT_INDEX_CHORD_STREAK_DECAY #endif #ifndef LEFT_INDEX_RING1_REPEAT_DECAY #define LEFT_INDEX_RING1_REPEAT_DECAY LEFT_INDEX_CHORD_REPEAT_DECAY #endif left_index_ring1: homey_left_index_ring1 { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_INDEX_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; left_index_ring1_bilateral: homey_left_index_ring1_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_INDEX_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&left_index_tap>; }; #define LeftIndexRing1 left_index_ring1_bilateral LEFT_RING1_MOD LEFT_RING1_KEY #ifndef RIGHT_PINKY_RING1_HOLDING_TYPE #define RIGHT_PINKY_RING1_HOLDING_TYPE RIGHT_PINKY_CHORD_HOLDING_TYPE #endif #ifndef RIGHT_PINKY_RING1_HOLDING_TIME #define RIGHT_PINKY_RING1_HOLDING_TIME RIGHT_PINKY_CHORD_HOLDING_TIME #endif #ifndef RIGHT_PINKY_RING1_STREAK_DECAY #define RIGHT_PINKY_RING1_STREAK_DECAY RIGHT_PINKY_CHORD_STREAK_DECAY #endif #ifndef RIGHT_PINKY_RING1_REPEAT_DECAY #define RIGHT_PINKY_RING1_REPEAT_DECAY RIGHT_PINKY_CHORD_REPEAT_DECAY #endif right_pinky_ring1: homey_right_pinky_ring1 { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_PINKY_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; right_pinky_ring1_bilateral: homey_right_pinky_ring1_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_PINKY_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&right_pinky_tap>; }; #define RightPinkyRing1 right_pinky_ring1_bilateral RIGHT_RING1_MOD RIGHT_RING1_KEY #ifndef RIGHT_RING2_RING1_HOLDING_TYPE #define RIGHT_RING2_RING1_HOLDING_TYPE RIGHT_RING2_CHORD_HOLDING_TYPE #endif #ifndef RIGHT_RING2_RING1_HOLDING_TIME #define RIGHT_RING2_RING1_HOLDING_TIME RIGHT_RING2_CHORD_HOLDING_TIME #endif #ifndef RIGHT_RING2_RING1_STREAK_DECAY #define RIGHT_RING2_RING1_STREAK_DECAY RIGHT_RING2_CHORD_STREAK_DECAY #endif #ifndef RIGHT_RING2_RING1_REPEAT_DECAY #define RIGHT_RING2_RING1_REPEAT_DECAY RIGHT_RING2_CHORD_REPEAT_DECAY #endif right_ring2_ring1: homey_right_ring2_ring1 { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_RING2_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; right_ring2_ring1_bilateral: homey_right_ring2_ring1_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_RING2_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&right_ring2_tap>; }; #define RightRing2Ring1 right_ring2_ring1_bilateral RIGHT_RING1_MOD RIGHT_RING1_KEY #ifndef RIGHT_MIDDY_RING1_HOLDING_TYPE #define RIGHT_MIDDY_RING1_HOLDING_TYPE RIGHT_MIDDY_CHORD_HOLDING_TYPE #endif #ifndef RIGHT_MIDDY_RING1_HOLDING_TIME #define RIGHT_MIDDY_RING1_HOLDING_TIME RIGHT_MIDDY_CHORD_HOLDING_TIME #endif #ifndef RIGHT_MIDDY_RING1_STREAK_DECAY #define RIGHT_MIDDY_RING1_STREAK_DECAY RIGHT_MIDDY_CHORD_STREAK_DECAY #endif #ifndef RIGHT_MIDDY_RING1_REPEAT_DECAY #define RIGHT_MIDDY_RING1_REPEAT_DECAY RIGHT_MIDDY_CHORD_REPEAT_DECAY #endif right_middy_ring1: homey_right_middy_ring1 { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_MIDDY_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; right_middy_ring1_bilateral: homey_right_middy_ring1_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_MIDDY_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&right_middy_tap>; }; #define RightMiddyRing1 right_middy_ring1_bilateral RIGHT_RING1_MOD RIGHT_RING1_KEY #ifndef RIGHT_INDEX_RING1_HOLDING_TYPE #define RIGHT_INDEX_RING1_HOLDING_TYPE RIGHT_INDEX_CHORD_HOLDING_TYPE #endif #ifndef RIGHT_INDEX_RING1_HOLDING_TIME #define RIGHT_INDEX_RING1_HOLDING_TIME RIGHT_INDEX_CHORD_HOLDING_TIME #endif #ifndef RIGHT_INDEX_RING1_STREAK_DECAY #define RIGHT_INDEX_RING1_STREAK_DECAY RIGHT_INDEX_CHORD_STREAK_DECAY #endif #ifndef RIGHT_INDEX_RING1_REPEAT_DECAY #define RIGHT_INDEX_RING1_REPEAT_DECAY RIGHT_INDEX_CHORD_REPEAT_DECAY #endif right_index_ring1: homey_right_index_ring1 { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_INDEX_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; right_index_ring1_bilateral: homey_right_index_ring1_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_INDEX_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&right_index_tap>; }; #define RightIndexRing1 right_index_ring1_bilateral RIGHT_RING1_MOD RIGHT_RING1_KEY #ifndef LEFT_PINKY_RING2_HOLDING_TYPE #define LEFT_PINKY_RING2_HOLDING_TYPE LEFT_PINKY_CHORD_HOLDING_TYPE #endif #ifndef LEFT_PINKY_RING2_HOLDING_TIME #define LEFT_PINKY_RING2_HOLDING_TIME LEFT_PINKY_CHORD_HOLDING_TIME #endif #ifndef LEFT_PINKY_RING2_STREAK_DECAY #define LEFT_PINKY_RING2_STREAK_DECAY LEFT_PINKY_CHORD_STREAK_DECAY #endif #ifndef LEFT_PINKY_RING2_REPEAT_DECAY #define LEFT_PINKY_RING2_REPEAT_DECAY LEFT_PINKY_CHORD_REPEAT_DECAY #endif left_pinky_ring2: homey_left_pinky_ring2 { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_PINKY_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; left_pinky_ring2_bilateral: homey_left_pinky_ring2_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_PINKY_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&left_pinky_tap>; }; #define LeftPinkyRing2 left_pinky_ring2_bilateral LEFT_RING2_MOD LEFT_RING2_KEY #ifndef LEFT_RING1_RING2_HOLDING_TYPE #define LEFT_RING1_RING2_HOLDING_TYPE LEFT_RING1_CHORD_HOLDING_TYPE #endif #ifndef LEFT_RING1_RING2_HOLDING_TIME #define LEFT_RING1_RING2_HOLDING_TIME LEFT_RING1_CHORD_HOLDING_TIME #endif #ifndef LEFT_RING1_RING2_STREAK_DECAY #define LEFT_RING1_RING2_STREAK_DECAY LEFT_RING1_CHORD_STREAK_DECAY #endif #ifndef LEFT_RING1_RING2_REPEAT_DECAY #define LEFT_RING1_RING2_REPEAT_DECAY LEFT_RING1_CHORD_REPEAT_DECAY #endif left_ring1_ring2: homey_left_ring1_ring2 { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_RING1_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; left_ring1_ring2_bilateral: homey_left_ring1_ring2_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_RING1_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&left_ring1_tap>; }; #define LeftRing1Ring2 left_ring1_ring2_bilateral LEFT_RING2_MOD LEFT_RING2_KEY #ifndef LEFT_MIDDY_RING2_HOLDING_TYPE #define LEFT_MIDDY_RING2_HOLDING_TYPE LEFT_MIDDY_CHORD_HOLDING_TYPE #endif #ifndef LEFT_MIDDY_RING2_HOLDING_TIME #define LEFT_MIDDY_RING2_HOLDING_TIME LEFT_MIDDY_CHORD_HOLDING_TIME #endif #ifndef LEFT_MIDDY_RING2_STREAK_DECAY #define LEFT_MIDDY_RING2_STREAK_DECAY LEFT_MIDDY_CHORD_STREAK_DECAY #endif #ifndef LEFT_MIDDY_RING2_REPEAT_DECAY #define LEFT_MIDDY_RING2_REPEAT_DECAY LEFT_MIDDY_CHORD_REPEAT_DECAY #endif left_middy_ring2: homey_left_middy_ring2 { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_MIDDY_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; left_middy_ring2_bilateral: homey_left_middy_ring2_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_MIDDY_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&left_middy_tap>; }; #define LeftMiddyRing2 left_middy_ring2_bilateral LEFT_RING2_MOD LEFT_RING2_KEY #ifndef LEFT_INDEX_RING2_HOLDING_TYPE #define LEFT_INDEX_RING2_HOLDING_TYPE LEFT_INDEX_CHORD_HOLDING_TYPE #endif #ifndef LEFT_INDEX_RING2_HOLDING_TIME #define LEFT_INDEX_RING2_HOLDING_TIME LEFT_INDEX_CHORD_HOLDING_TIME #endif #ifndef LEFT_INDEX_RING2_STREAK_DECAY #define LEFT_INDEX_RING2_STREAK_DECAY LEFT_INDEX_CHORD_STREAK_DECAY #endif #ifndef LEFT_INDEX_RING2_REPEAT_DECAY #define LEFT_INDEX_RING2_REPEAT_DECAY LEFT_INDEX_CHORD_REPEAT_DECAY #endif left_index_ring2: homey_left_index_ring2 { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_INDEX_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; left_index_ring2_bilateral: homey_left_index_ring2_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_INDEX_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&left_index_tap>; }; #define LeftIndexRing2 left_index_ring2_bilateral LEFT_RING2_MOD LEFT_RING2_KEY #ifndef RIGHT_PINKY_RING2_HOLDING_TYPE #define RIGHT_PINKY_RING2_HOLDING_TYPE RIGHT_PINKY_CHORD_HOLDING_TYPE #endif #ifndef RIGHT_PINKY_RING2_HOLDING_TIME #define RIGHT_PINKY_RING2_HOLDING_TIME RIGHT_PINKY_CHORD_HOLDING_TIME #endif #ifndef RIGHT_PINKY_RING2_STREAK_DECAY #define RIGHT_PINKY_RING2_STREAK_DECAY RIGHT_PINKY_CHORD_STREAK_DECAY #endif #ifndef RIGHT_PINKY_RING2_REPEAT_DECAY #define RIGHT_PINKY_RING2_REPEAT_DECAY RIGHT_PINKY_CHORD_REPEAT_DECAY #endif right_pinky_ring2: homey_right_pinky_ring2 { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_PINKY_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; right_pinky_ring2_bilateral: homey_right_pinky_ring2_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_PINKY_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&right_pinky_tap>; }; #define RightPinkyRing2 right_pinky_ring2_bilateral RIGHT_RING2_MOD RIGHT_RING2_KEY #ifndef RIGHT_RING1_RING2_HOLDING_TYPE #define RIGHT_RING1_RING2_HOLDING_TYPE RIGHT_RING1_CHORD_HOLDING_TYPE #endif #ifndef RIGHT_RING1_RING2_HOLDING_TIME #define RIGHT_RING1_RING2_HOLDING_TIME RIGHT_RING1_CHORD_HOLDING_TIME #endif #ifndef RIGHT_RING1_RING2_STREAK_DECAY #define RIGHT_RING1_RING2_STREAK_DECAY RIGHT_RING1_CHORD_STREAK_DECAY #endif #ifndef RIGHT_RING1_RING2_REPEAT_DECAY #define RIGHT_RING1_RING2_REPEAT_DECAY RIGHT_RING1_CHORD_REPEAT_DECAY #endif right_ring1_ring2: homey_right_ring1_ring2 { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_RING1_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; right_ring1_ring2_bilateral: homey_right_ring1_ring2_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_RING1_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&right_ring1_tap>; }; #define RightRing1Ring2 right_ring1_ring2_bilateral RIGHT_RING2_MOD RIGHT_RING2_KEY #ifndef RIGHT_MIDDY_RING2_HOLDING_TYPE #define RIGHT_MIDDY_RING2_HOLDING_TYPE RIGHT_MIDDY_CHORD_HOLDING_TYPE #endif #ifndef RIGHT_MIDDY_RING2_HOLDING_TIME #define RIGHT_MIDDY_RING2_HOLDING_TIME RIGHT_MIDDY_CHORD_HOLDING_TIME #endif #ifndef RIGHT_MIDDY_RING2_STREAK_DECAY #define RIGHT_MIDDY_RING2_STREAK_DECAY RIGHT_MIDDY_CHORD_STREAK_DECAY #endif #ifndef RIGHT_MIDDY_RING2_REPEAT_DECAY #define RIGHT_MIDDY_RING2_REPEAT_DECAY RIGHT_MIDDY_CHORD_REPEAT_DECAY #endif right_middy_ring2: homey_right_middy_ring2 { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_MIDDY_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; right_middy_ring2_bilateral: homey_right_middy_ring2_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_MIDDY_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&right_middy_tap>; }; #define RightMiddyRing2 right_middy_ring2_bilateral RIGHT_RING2_MOD RIGHT_RING2_KEY #ifndef RIGHT_INDEX_RING2_HOLDING_TYPE #define RIGHT_INDEX_RING2_HOLDING_TYPE RIGHT_INDEX_CHORD_HOLDING_TYPE #endif #ifndef RIGHT_INDEX_RING2_HOLDING_TIME #define RIGHT_INDEX_RING2_HOLDING_TIME RIGHT_INDEX_CHORD_HOLDING_TIME #endif #ifndef RIGHT_INDEX_RING2_STREAK_DECAY #define RIGHT_INDEX_RING2_STREAK_DECAY RIGHT_INDEX_CHORD_STREAK_DECAY #endif #ifndef RIGHT_INDEX_RING2_REPEAT_DECAY #define RIGHT_INDEX_RING2_REPEAT_DECAY RIGHT_INDEX_CHORD_REPEAT_DECAY #endif right_index_ring2: homey_right_index_ring2 { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_INDEX_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; right_index_ring2_bilateral: homey_right_index_ring2_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_INDEX_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&right_index_tap>; }; #define RightIndexRing2 right_index_ring2_bilateral RIGHT_RING2_MOD RIGHT_RING2_KEY #ifndef LEFT_PINKY_MIDDY_HOLDING_TYPE #define LEFT_PINKY_MIDDY_HOLDING_TYPE LEFT_PINKY_CHORD_HOLDING_TYPE #endif #ifndef LEFT_PINKY_MIDDY_HOLDING_TIME #define LEFT_PINKY_MIDDY_HOLDING_TIME LEFT_PINKY_CHORD_HOLDING_TIME #endif #ifndef LEFT_PINKY_MIDDY_STREAK_DECAY #define LEFT_PINKY_MIDDY_STREAK_DECAY LEFT_PINKY_CHORD_STREAK_DECAY #endif #ifndef LEFT_PINKY_MIDDY_REPEAT_DECAY #define LEFT_PINKY_MIDDY_REPEAT_DECAY LEFT_PINKY_CHORD_REPEAT_DECAY #endif left_pinky_middy: homey_left_pinky_middy { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_PINKY_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; left_pinky_middy_bilateral: homey_left_pinky_middy_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_PINKY_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&left_pinky_tap>; }; #define LeftPinkyMiddy left_pinky_middy_bilateral LEFT_MIDDY_MOD LEFT_MIDDY_KEY #ifndef LEFT_RING1_MIDDY_HOLDING_TYPE #define LEFT_RING1_MIDDY_HOLDING_TYPE LEFT_RING1_CHORD_HOLDING_TYPE #endif #ifndef LEFT_RING1_MIDDY_HOLDING_TIME #define LEFT_RING1_MIDDY_HOLDING_TIME LEFT_RING1_CHORD_HOLDING_TIME #endif #ifndef LEFT_RING1_MIDDY_STREAK_DECAY #define LEFT_RING1_MIDDY_STREAK_DECAY LEFT_RING1_CHORD_STREAK_DECAY #endif #ifndef LEFT_RING1_MIDDY_REPEAT_DECAY #define LEFT_RING1_MIDDY_REPEAT_DECAY LEFT_RING1_CHORD_REPEAT_DECAY #endif left_ring1_middy: homey_left_ring1_middy { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_RING1_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; left_ring1_middy_bilateral: homey_left_ring1_middy_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_RING1_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&left_ring1_tap>; }; #define LeftRing1Middy left_ring1_middy_bilateral LEFT_MIDDY_MOD LEFT_MIDDY_KEY #ifndef LEFT_RING2_MIDDY_HOLDING_TYPE #define LEFT_RING2_MIDDY_HOLDING_TYPE LEFT_RING2_CHORD_HOLDING_TYPE #endif #ifndef LEFT_RING2_MIDDY_HOLDING_TIME #define LEFT_RING2_MIDDY_HOLDING_TIME LEFT_RING2_CHORD_HOLDING_TIME #endif #ifndef LEFT_RING2_MIDDY_STREAK_DECAY #define LEFT_RING2_MIDDY_STREAK_DECAY LEFT_RING2_CHORD_STREAK_DECAY #endif #ifndef LEFT_RING2_MIDDY_REPEAT_DECAY #define LEFT_RING2_MIDDY_REPEAT_DECAY LEFT_RING2_CHORD_REPEAT_DECAY #endif left_ring2_middy: homey_left_ring2_middy { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_RING2_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; left_ring2_middy_bilateral: homey_left_ring2_middy_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_RING2_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&left_ring2_tap>; }; #define LeftRing2Middy left_ring2_middy_bilateral LEFT_MIDDY_MOD LEFT_MIDDY_KEY #ifndef LEFT_INDEX_MIDDY_HOLDING_TYPE #define LEFT_INDEX_MIDDY_HOLDING_TYPE LEFT_INDEX_CHORD_HOLDING_TYPE #endif #ifndef LEFT_INDEX_MIDDY_HOLDING_TIME #define LEFT_INDEX_MIDDY_HOLDING_TIME LEFT_INDEX_CHORD_HOLDING_TIME #endif #ifndef LEFT_INDEX_MIDDY_STREAK_DECAY #define LEFT_INDEX_MIDDY_STREAK_DECAY LEFT_INDEX_CHORD_STREAK_DECAY #endif #ifndef LEFT_INDEX_MIDDY_REPEAT_DECAY #define LEFT_INDEX_MIDDY_REPEAT_DECAY LEFT_INDEX_CHORD_REPEAT_DECAY #endif left_index_middy: homey_left_index_middy { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_INDEX_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; left_index_middy_bilateral: homey_left_index_middy_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_INDEX_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&left_index_tap>; }; #define LeftIndexMiddy left_index_middy_bilateral LEFT_MIDDY_MOD LEFT_MIDDY_KEY #ifndef RIGHT_PINKY_MIDDY_HOLDING_TYPE #define RIGHT_PINKY_MIDDY_HOLDING_TYPE RIGHT_PINKY_CHORD_HOLDING_TYPE #endif #ifndef RIGHT_PINKY_MIDDY_HOLDING_TIME #define RIGHT_PINKY_MIDDY_HOLDING_TIME RIGHT_PINKY_CHORD_HOLDING_TIME #endif #ifndef RIGHT_PINKY_MIDDY_STREAK_DECAY #define RIGHT_PINKY_MIDDY_STREAK_DECAY RIGHT_PINKY_CHORD_STREAK_DECAY #endif #ifndef RIGHT_PINKY_MIDDY_REPEAT_DECAY #define RIGHT_PINKY_MIDDY_REPEAT_DECAY RIGHT_PINKY_CHORD_REPEAT_DECAY #endif right_pinky_middy: homey_right_pinky_middy { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_PINKY_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; right_pinky_middy_bilateral: homey_right_pinky_middy_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_PINKY_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&right_pinky_tap>; }; #define RightPinkyMiddy right_pinky_middy_bilateral RIGHT_MIDDY_MOD RIGHT_MIDDY_KEY #ifndef RIGHT_RING1_MIDDY_HOLDING_TYPE #define RIGHT_RING1_MIDDY_HOLDING_TYPE RIGHT_RING1_CHORD_HOLDING_TYPE #endif #ifndef RIGHT_RING1_MIDDY_HOLDING_TIME #define RIGHT_RING1_MIDDY_HOLDING_TIME RIGHT_RING1_CHORD_HOLDING_TIME #endif #ifndef RIGHT_RING1_MIDDY_STREAK_DECAY #define RIGHT_RING1_MIDDY_STREAK_DECAY RIGHT_RING1_CHORD_STREAK_DECAY #endif #ifndef RIGHT_RING1_MIDDY_REPEAT_DECAY #define RIGHT_RING1_MIDDY_REPEAT_DECAY RIGHT_RING1_CHORD_REPEAT_DECAY #endif right_ring1_middy: homey_right_ring1_middy { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_RING1_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; right_ring1_middy_bilateral: homey_right_ring1_middy_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_RING1_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&right_ring1_tap>; }; #define RightRing1Middy right_ring1_middy_bilateral RIGHT_MIDDY_MOD RIGHT_MIDDY_KEY #ifndef RIGHT_RING2_MIDDY_HOLDING_TYPE #define RIGHT_RING2_MIDDY_HOLDING_TYPE RIGHT_RING2_CHORD_HOLDING_TYPE #endif #ifndef RIGHT_RING2_MIDDY_HOLDING_TIME #define RIGHT_RING2_MIDDY_HOLDING_TIME RIGHT_RING2_CHORD_HOLDING_TIME #endif #ifndef RIGHT_RING2_MIDDY_STREAK_DECAY #define RIGHT_RING2_MIDDY_STREAK_DECAY RIGHT_RING2_CHORD_STREAK_DECAY #endif #ifndef RIGHT_RING2_MIDDY_REPEAT_DECAY #define RIGHT_RING2_MIDDY_REPEAT_DECAY RIGHT_RING2_CHORD_REPEAT_DECAY #endif right_ring2_middy: homey_right_ring2_middy { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_RING2_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; right_ring2_middy_bilateral: homey_right_ring2_middy_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_RING2_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&right_ring2_tap>; }; #define RightRing2Middy right_ring2_middy_bilateral RIGHT_MIDDY_MOD RIGHT_MIDDY_KEY #ifndef RIGHT_INDEX_MIDDY_HOLDING_TYPE #define RIGHT_INDEX_MIDDY_HOLDING_TYPE RIGHT_INDEX_CHORD_HOLDING_TYPE #endif #ifndef RIGHT_INDEX_MIDDY_HOLDING_TIME #define RIGHT_INDEX_MIDDY_HOLDING_TIME RIGHT_INDEX_CHORD_HOLDING_TIME #endif #ifndef RIGHT_INDEX_MIDDY_STREAK_DECAY #define RIGHT_INDEX_MIDDY_STREAK_DECAY RIGHT_INDEX_CHORD_STREAK_DECAY #endif #ifndef RIGHT_INDEX_MIDDY_REPEAT_DECAY #define RIGHT_INDEX_MIDDY_REPEAT_DECAY RIGHT_INDEX_CHORD_REPEAT_DECAY #endif right_index_middy: homey_right_index_middy { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_INDEX_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; right_index_middy_bilateral: homey_right_index_middy_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_INDEX_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&right_index_tap>; }; #define RightIndexMiddy right_index_middy_bilateral RIGHT_MIDDY_MOD RIGHT_MIDDY_KEY #ifndef LEFT_PINKY_INDEX_HOLDING_TYPE #define LEFT_PINKY_INDEX_HOLDING_TYPE LEFT_PINKY_CHORD_HOLDING_TYPE #endif #ifndef LEFT_PINKY_INDEX_HOLDING_TIME #define LEFT_PINKY_INDEX_HOLDING_TIME LEFT_PINKY_CHORD_HOLDING_TIME #endif #ifndef LEFT_PINKY_INDEX_STREAK_DECAY #define LEFT_PINKY_INDEX_STREAK_DECAY LEFT_PINKY_CHORD_STREAK_DECAY #endif #ifndef LEFT_PINKY_INDEX_REPEAT_DECAY #define LEFT_PINKY_INDEX_REPEAT_DECAY LEFT_PINKY_CHORD_REPEAT_DECAY #endif left_pinky_index: homey_left_pinky_index { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_PINKY_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; left_pinky_index_bilateral: homey_left_pinky_index_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_PINKY_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&left_pinky_tap>; }; #define LeftPinkyIndex left_pinky_index_bilateral LEFT_INDEX_MOD LEFT_INDEX_KEY #ifndef LEFT_RING1_INDEX_HOLDING_TYPE #define LEFT_RING1_INDEX_HOLDING_TYPE LEFT_RING1_CHORD_HOLDING_TYPE #endif #ifndef LEFT_RING1_INDEX_HOLDING_TIME #define LEFT_RING1_INDEX_HOLDING_TIME LEFT_RING1_CHORD_HOLDING_TIME #endif #ifndef LEFT_RING1_INDEX_STREAK_DECAY #define LEFT_RING1_INDEX_STREAK_DECAY LEFT_RING1_CHORD_STREAK_DECAY #endif #ifndef LEFT_RING1_INDEX_REPEAT_DECAY #define LEFT_RING1_INDEX_REPEAT_DECAY LEFT_RING1_CHORD_REPEAT_DECAY #endif left_ring1_index: homey_left_ring1_index { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_RING1_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; left_ring1_index_bilateral: homey_left_ring1_index_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_RING1_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&left_ring1_tap>; }; #define LeftRing1Index left_ring1_index_bilateral LEFT_INDEX_MOD LEFT_INDEX_KEY #ifndef LEFT_RING2_INDEX_HOLDING_TYPE #define LEFT_RING2_INDEX_HOLDING_TYPE LEFT_RING2_CHORD_HOLDING_TYPE #endif #ifndef LEFT_RING2_INDEX_HOLDING_TIME #define LEFT_RING2_INDEX_HOLDING_TIME LEFT_RING2_CHORD_HOLDING_TIME #endif #ifndef LEFT_RING2_INDEX_STREAK_DECAY #define LEFT_RING2_INDEX_STREAK_DECAY LEFT_RING2_CHORD_STREAK_DECAY #endif #ifndef LEFT_RING2_INDEX_REPEAT_DECAY #define LEFT_RING2_INDEX_REPEAT_DECAY LEFT_RING2_CHORD_REPEAT_DECAY #endif left_ring2_index: homey_left_ring2_index { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_RING2_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; left_ring2_index_bilateral: homey_left_ring2_index_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_RING2_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&left_ring2_tap>; }; #define LeftRing2Index left_ring2_index_bilateral LEFT_INDEX_MOD LEFT_INDEX_KEY #ifndef LEFT_MIDDY_INDEX_HOLDING_TYPE #define LEFT_MIDDY_INDEX_HOLDING_TYPE LEFT_MIDDY_CHORD_HOLDING_TYPE #endif #ifndef LEFT_MIDDY_INDEX_HOLDING_TIME #define LEFT_MIDDY_INDEX_HOLDING_TIME LEFT_MIDDY_CHORD_HOLDING_TIME #endif #ifndef LEFT_MIDDY_INDEX_STREAK_DECAY #define LEFT_MIDDY_INDEX_STREAK_DECAY LEFT_MIDDY_CHORD_STREAK_DECAY #endif #ifndef LEFT_MIDDY_INDEX_REPEAT_DECAY #define LEFT_MIDDY_INDEX_REPEAT_DECAY LEFT_MIDDY_CHORD_REPEAT_DECAY #endif left_middy_index: homey_left_middy_index { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_MIDDY_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; left_middy_index_bilateral: homey_left_middy_index_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = LEFT_MIDDY_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&left_middy_tap>; }; #define LeftMiddyIndex left_middy_index_bilateral LEFT_INDEX_MOD LEFT_INDEX_KEY #ifndef RIGHT_PINKY_INDEX_HOLDING_TYPE #define RIGHT_PINKY_INDEX_HOLDING_TYPE RIGHT_PINKY_CHORD_HOLDING_TYPE #endif #ifndef RIGHT_PINKY_INDEX_HOLDING_TIME #define RIGHT_PINKY_INDEX_HOLDING_TIME RIGHT_PINKY_CHORD_HOLDING_TIME #endif #ifndef RIGHT_PINKY_INDEX_STREAK_DECAY #define RIGHT_PINKY_INDEX_STREAK_DECAY RIGHT_PINKY_CHORD_STREAK_DECAY #endif #ifndef RIGHT_PINKY_INDEX_REPEAT_DECAY #define RIGHT_PINKY_INDEX_REPEAT_DECAY RIGHT_PINKY_CHORD_REPEAT_DECAY #endif right_pinky_index: homey_right_pinky_index { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_PINKY_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; right_pinky_index_bilateral: homey_right_pinky_index_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_PINKY_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&right_pinky_tap>; }; #define RightPinkyIndex right_pinky_index_bilateral RIGHT_INDEX_MOD RIGHT_INDEX_KEY #ifndef RIGHT_RING1_INDEX_HOLDING_TYPE #define RIGHT_RING1_INDEX_HOLDING_TYPE RIGHT_RING1_CHORD_HOLDING_TYPE #endif #ifndef RIGHT_RING1_INDEX_HOLDING_TIME #define RIGHT_RING1_INDEX_HOLDING_TIME RIGHT_RING1_CHORD_HOLDING_TIME #endif #ifndef RIGHT_RING1_INDEX_STREAK_DECAY #define RIGHT_RING1_INDEX_STREAK_DECAY RIGHT_RING1_CHORD_STREAK_DECAY #endif #ifndef RIGHT_RING1_INDEX_REPEAT_DECAY #define RIGHT_RING1_INDEX_REPEAT_DECAY RIGHT_RING1_CHORD_REPEAT_DECAY #endif right_ring1_index: homey_right_ring1_index { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_RING1_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; right_ring1_index_bilateral: homey_right_ring1_index_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_RING1_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&right_ring1_tap>; }; #define RightRing1Index right_ring1_index_bilateral RIGHT_INDEX_MOD RIGHT_INDEX_KEY #ifndef RIGHT_RING2_INDEX_HOLDING_TYPE #define RIGHT_RING2_INDEX_HOLDING_TYPE RIGHT_RING2_CHORD_HOLDING_TYPE #endif #ifndef RIGHT_RING2_INDEX_HOLDING_TIME #define RIGHT_RING2_INDEX_HOLDING_TIME RIGHT_RING2_CHORD_HOLDING_TIME #endif #ifndef RIGHT_RING2_INDEX_STREAK_DECAY #define RIGHT_RING2_INDEX_STREAK_DECAY RIGHT_RING2_CHORD_STREAK_DECAY #endif #ifndef RIGHT_RING2_INDEX_REPEAT_DECAY #define RIGHT_RING2_INDEX_REPEAT_DECAY RIGHT_RING2_CHORD_REPEAT_DECAY #endif right_ring2_index: homey_right_ring2_index { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_RING2_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; right_ring2_index_bilateral: homey_right_ring2_index_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_RING2_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&right_ring2_tap>; }; #define RightRing2Index right_ring2_index_bilateral RIGHT_INDEX_MOD RIGHT_INDEX_KEY #ifndef RIGHT_MIDDY_INDEX_HOLDING_TYPE #define RIGHT_MIDDY_INDEX_HOLDING_TYPE RIGHT_MIDDY_CHORD_HOLDING_TYPE #endif #ifndef RIGHT_MIDDY_INDEX_HOLDING_TIME #define RIGHT_MIDDY_INDEX_HOLDING_TIME RIGHT_MIDDY_CHORD_HOLDING_TIME #endif #ifndef RIGHT_MIDDY_INDEX_STREAK_DECAY #define RIGHT_MIDDY_INDEX_STREAK_DECAY RIGHT_MIDDY_CHORD_STREAK_DECAY #endif #ifndef RIGHT_MIDDY_INDEX_REPEAT_DECAY #define RIGHT_MIDDY_INDEX_REPEAT_DECAY RIGHT_MIDDY_CHORD_REPEAT_DECAY #endif right_middy_index: homey_right_middy_index { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_MIDDY_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&kp>; }; right_middy_index_bilateral: homey_right_middy_index_bilateral { compatible = "zmk,behavior-hold-tap"; flavor = RIGHT_MIDDY_HOLDING_TYPE; hold-trigger-key-positions = ; hold-trigger-on-release; // wait for other home row mods tapping-term-ms = ; quick-tap-ms = ; require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&kp>, <&right_middy_tap>; }; #define RightMiddyIndex right_middy_index_bilateral RIGHT_INDEX_MOD RIGHT_INDEX_KEY // // Key repetition access keys on the index fingers // plain: plain_typing_layer { compatible = "zmk,behavior-hold-tap"; flavor = PLAIN_HOLDING_TYPE; tapping-term-ms = ; quick-tap-ms = ; // enable repeat require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&mo>, <&kp>; retro-tap; // tap on standalone hold }; plain_engram_COMMA: plain_typing_layer_engram_COMMA { compatible = "zmk,behavior-hold-tap"; flavor = PLAIN_HOLDING_TYPE; tapping-term-ms = ; quick-tap-ms = ; // enable repeat require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&mo>, <&engram_COMMA>; retro-tap; // tap on standalone hold }; plain_engram_DOT: plain_typing_layer_engram_DOT { compatible = "zmk,behavior-hold-tap"; flavor = PLAIN_HOLDING_TYPE; tapping-term-ms = ; quick-tap-ms = ; // enable repeat require-prior-idle-ms = ; #binding-cells = <2>; bindings = <&mo>, <&engram_DOT>; retro-tap; // tap on standalone hold }; // // Thumb cluster hold-tap keys for Miryoku layers // thumb: thumb_layer_access { compatible = "zmk,behavior-hold-tap"; flavor = THUMB_HOLDING_TYPE; tapping-term-ms = ; quick-tap-ms = ; // enable repeat #binding-cells = <2>; bindings = <&mo>, <&kp>; }; thumb_parang_left: thumb_layer_access_parang_left { compatible = "zmk,behavior-hold-tap"; flavor = THUMB_HOLDING_TYPE; tapping-term-ms = ; quick-tap-ms = ; // enable repeat #binding-cells = <2>; bindings = <&mo>, <¶ng_left>; }; thumb_lower_shift: lower_layer_or_sticky_shift { compatible = "zmk,behavior-hold-tap"; flavor = "tap-preferred"; tapping-term-ms = ; #binding-cells = <2>; bindings = <&mo>, <&sticky_key_oneshot>; }; space: thumb_layer_access_spacebar { compatible = "zmk,behavior-hold-tap"; flavor = SPACE_HOLDING_TYPE; tapping-term-ms = ; quick-tap-ms = ; // enable repeat #binding-cells = <2>; bindings = <&mo>, <&kp>; }; // // Shift + LEFT_PARENTHESIS = LESS_THAN // parang_left: left_parenthesis_and_less_than { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&kp LPAR>, <&kp LT>; mods = <(MOD_LSFT|MOD_RSFT)>; }; // // Shift + RIGHT_PARENTHESIS = GREATER_THAN // parang_right: right_parenthesis_and_greater_than { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&kp RPAR>, <&kp GT>; mods = <(MOD_LSFT|MOD_RSFT)>; }; // // Custom shifted pairs for the Engram layout // - https://engram.dev/ // - https://sunaku.github.io/engram-keyboard-layout.html // engram_N1: engram_shift_N1_PIPE { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&kp N1>, <&kp PIPE>; mods = <(MOD_LSFT|MOD_RSFT)>; }; engram_N2: engram_shift_N2_EQUAL { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&kp N2>, <&kp EQUAL>; mods = <(MOD_LSFT|MOD_RSFT)>; }; engram_N3: engram_shift_N3_TILDE { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&kp N3>, <&kp TILDE>; mods = <(MOD_LSFT|MOD_RSFT)>; }; engram_N4: engram_shift_N4_PLUS { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&kp N4>, <&kp PLUS>; mods = <(MOD_LSFT|MOD_RSFT)>; }; engram_N5: engram_shift_N5_LT { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&kp N5>, <&kp LT>; mods = <(MOD_LSFT|MOD_RSFT)>; }; engram_N6: engram_shift_N6_GT { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&kp N6>, <&kp GT>; mods = <(MOD_LSFT|MOD_RSFT)>; }; engram_N7: engram_shift_N7_CARET { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&kp N7>, <&kp CARET>; mods = <(MOD_LSFT|MOD_RSFT)>; }; engram_N8: engram_shift_N8_AMPS { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&kp N8>, <&kp AMPS>; mods = <(MOD_LSFT|MOD_RSFT)>; }; engram_N9: engram_shift_N9_PRCNT { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&kp N9>, <&kp PRCNT>; mods = <(MOD_LSFT|MOD_RSFT)>; }; engram_N0: engram_shift_N0_STAR { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&kp N0>, <&kp STAR>; mods = <(MOD_LSFT|MOD_RSFT)>; }; engram_SQT: engram_shift_SQT_LPAR { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&kp SQT>, <&kp LPAR>; mods = <(MOD_LSFT|MOD_RSFT)>; }; engram_DQT: engram_shift_DQT_RPAR { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&kp DQT>, <&kp RPAR>; mods = <(MOD_LSFT|MOD_RSFT)>; }; engram_COMMA: engram_shift_COMMA_SEMI { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&kp COMMA>, <&kp SEMI>; mods = <(MOD_LSFT|MOD_RSFT)>; }; engram_DOT: engram_shift_DOT_COLON { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&kp DOT>, <&kp COLON>; mods = <(MOD_LSFT|MOD_RSFT)>; }; engram_QMARK: engram_shift_QMARK_EXCL { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&kp QMARK>, <&kp EXCL>; mods = <(MOD_LSFT|MOD_RSFT)>; }; engram_HASH: engram_shift_HASH_DLLR { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&kp HASH>, <&kp DLLR>; mods = <(MOD_LSFT|MOD_RSFT)>; }; engram_AT: engram_shift_AT_GRAVE { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&kp AT>, <&kp GRAVE>; mods = <(MOD_LSFT|MOD_RSFT)>; }; engram_FSLH: engram_shift_FSLH_BSLH { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&kp FSLH>, <&kp BSLH>; mods = <(MOD_LSFT|MOD_RSFT)>; }; ////////////////////////////////////////////////////////////////////////// // // &sk (sticky key) variant that is truly one-shot // ////////////////////////////////////////////////////////////////////////// // // STICKY_1SHOT_DECAY defines how much time you have left (milliseconds) // after tapping a sticky key before it expires (won't apply to next tap). // #ifndef STICKY_1SHOT_DECAY #define STICKY_1SHOT_DECAY 500 #endif sticky_key_oneshot: sticky_key_oneshot_macro { compatible = "zmk,behavior-macro-one-param"; wait-ms = <0>; tap-ms = <0>; #binding-cells = <1>; bindings = <¯o_param_1to1> , <¯o_tap &sticky_key_quickrel MACRO_PLACEHOLDER> ; }; sticky_key_quickrel: sticky_key_quick_release { compatible = "zmk,behavior-sticky-key"; #binding-cells = <1>; bindings = <&kp>; release-after-ms = ; quick-release; ignore-modifiers; }; ////////////////////////////////////////////////////////////////////////// // // ZMK global overrides // ////////////////////////////////////////////////////////////////////////// // // CapsWord - ported from Pascal Getreuer's extension for QMK // - https://zmk.dev/docs/behaviors/caps-word // - https://getreuer.info/posts/keyboards/caps-word/index.html // behavior_caps_word { continue-list = < UNDERSCORE MINUS BACKSPACE DELETE N1 N2 N3 N4 N5 N6 N7 N8 N9 N0 >; }; }; macros { // // Linux Magic System Request Key - hold this down and type REISUB // - https://www.kernel.org/doc/html/latest/admin-guide/sysrq.html // - https://github.com/manna-harbour/miryoku/discussions/259 // ZMK_MACRO(linux_magic_sysrq, wait-ms = <0>; tap-ms = <0>; bindings = <¯o_press &mo 0 &kp RALT> , <¯o_tap &kp PRINTSCREEN> , <¯o_pause_for_release> , <¯o_release &mo 0 &kp RALT> ; ) // // Mod+Tab application switcher - hold this down to keep menu open // mod_tab: mod_tab_switcher { compatible = "zmk,behavior-macro-one-param"; wait-ms = <0>; tap-ms = <0>; #binding-cells = <1>; bindings = <¯o_param_1to1> , <¯o_press &kp MACRO_PLACEHOLDER> , <¯o_tap &kp TAB> , <¯o_pause_for_release> , <¯o_param_1to1> , <¯o_release &kp MACRO_PLACEHOLDER> ; }; mod_tab_chord: mod_tab_switcher_chord { compatible = "zmk,behavior-macro-two-param"; wait-ms = <0>; tap-ms = <0>; #binding-cells = <2>; bindings = <¯o_param_2to1> , <¯o_press &mo MACRO_PLACEHOLDER> , <¯o_param_1to1> , <¯o_press &mod_tab MACRO_PLACEHOLDER> , <¯o_pause_for_release> , <¯o_param_1to1> , <¯o_release &mod_tab MACRO_PLACEHOLDER> , <¯o_param_2to1> , <¯o_release &mo MACRO_PLACEHOLDER> ; }; ////////////////////////////////////////////////////////////////////////// // // Approximation of Pascal Getreuer's Select Word macro from QMK // - https://getreuer.info/posts/keyboards/select-word/index.html // ////////////////////////////////////////////////////////////////////////// // // SELECT_WORD_DELAY defines how long the macro waits (milliseconds) // after moving the cursor before it selects a word. A larger delay // may allow the macro to move to the next word upon each invocation. // #ifndef SELECT_WORD_DELAY #define SELECT_WORD_DELAY 1 #endif ZMK_MACRO(select_none, wait-ms = ; tap-ms = ; bindings = <&kp DOWN &kp UP &kp RIGHT &kp LEFT>; ) // // select a word (jumps to next word upon each successive invocation) // select_word: select_word { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&select_word_right>, <&select_word_left>; mods = <(MOD_LSFT|MOD_RSFT)>; }; ZMK_MACRO(select_word_right, wait-ms = ; tap-ms = ; bindings = <&kp _W(RIGHT) &kp _W(LEFT) &kp _W(LS(RIGHT))>; ) ZMK_MACRO(select_word_left, wait-ms = ; tap-ms = ; bindings = <&kp _W(LEFT) &kp _W(RIGHT) &kp _W(LS(LEFT))>; ) // // extend current selection by one word // extend_word: extend_word { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&extend_word_right>, <&extend_word_left>; mods = <(MOD_LSFT|MOD_RSFT)>; }; ZMK_MACRO(extend_word_right, wait-ms = ; tap-ms = ; bindings = <&kp _W(LS(RIGHT))>; ) ZMK_MACRO(extend_word_left, wait-ms = ; tap-ms = ; bindings = <&kp _W(LS(LEFT))>; ) // // select current line // select_line: select_line { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&select_line_right>, <&select_line_left>; mods = <(MOD_LSFT|MOD_RSFT)>; }; ZMK_MACRO(select_line_right, wait-ms = ; tap-ms = ; bindings = <&kp _HOME &kp LS(_END)>; ) ZMK_MACRO(select_line_left, wait-ms = ; tap-ms = ; bindings = <&kp _END &kp LS(_HOME)>; ) // // extend current selection by one line // extend_line: extend_line { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&extend_line_right>, <&extend_line_left>; mods = <(MOD_LSFT|MOD_RSFT)>; }; ZMK_MACRO(extend_line_right, wait-ms = ; tap-ms = ; bindings = <&kp LS(DOWN) &kp LS(_END)>; ) ZMK_MACRO(extend_line_left, wait-ms = ; tap-ms = ; bindings = <&kp LS(UP) &kp LS(_HOME)>; ) ////////////////////////////////////////////////////////////////////////// // // World layer - international characters // ////////////////////////////////////////////////////////////////////////// // // WORLD_USE_COMPOSE uses OS-native Compose keycodes instead of Unicode // for characters in the "localizing" section of the `world.yaml` file. // //#define WORLD_USE_COMPOSE // // UNICODE_TARGET_OS defines which operating system you're targeting // for the UNICODE() preprocessor macro to be used on, since each OS // has different shortcuts for typing Unicode characters as hexcodes. // // NOTE: You may need to enable Unicode hexadecimal input in your OS: // - (macOS) https://sevenseacat.net/posts/2018/unicode-in-qmk-on-osx/ // - (Linux) https://help.ubuntu.com/stable/ubuntu-help/tips-specialchars.html.en#ctrlshiftu // - (Windows) https://github.com/samhocevar/wincompose // // Specifically, Windows users should be running the WinCompose tool, // which lets you type Unicode characters via hexadecimal codepoints. // #ifndef UNICODE_TARGET_OS #define UNICODE_TARGET_OS OPERATING_SYSTEM #endif // // UNICODE_TAP_DELAY defines how long the macro waits (milliseconds) // between keystrokes while inputting the Unicode codepoint shortcut. // #ifndef UNICODE_TAP_DELAY #define UNICODE_TAP_DELAY 1 #endif // // UNICODE_SEQ_DELAY defines how long the macro waits (milliseconds) // between emitting Unicode codepoints in multi-codepoint characters. // #ifndef UNICODE_SEQ_DELAY #define UNICODE_SEQ_DELAY 10 #endif #define UNICODE(name, ...) \ ZMK_MACRO(name, \ wait-ms = ; \ tap-ms = ; \ bindings = __VA_ARGS__; \ ) // // UNICODE_SEQ_LINUX() specifies how Unicode hexadecimal codepoint // keystrokes are transformed into Unicode characters under Linux. // #ifndef UNICODE_SEQ_LINUX #define UNICODE_SEQ_LINUX(keystrokes) \ <¯o_tap &kp LC(LS(U)) keystrokes &kp ENTER> #endif // // UNICODE_SEQ_MACOS() specifies how Unicode hexadecimal codepoint // keystrokes are transformed into Unicode characters under macOS. // #ifndef UNICODE_SEQ_MACOS #define UNICODE_SEQ_MACOS(keystrokes) \ <¯o_press &kp LALT> ,\ <¯o_tap keystrokes> ,\ <¯o_release &kp LALT> #endif // // UNICODE_SEQ_WINDOWS() specifies how Unicode hexadecimal codepoint // keystrokes are transformed into Unicode characters under Windows. // // If you've configured WinCompose to use a different trigger hotkey, // such as F13 instead of the default RA(U) shortcut, simply override // this definition to adapt all UNICODE() function calls accordingly. // #ifndef UNICODE_SEQ_WINDOWS #define UNICODE_SEQ_WINDOWS(keystrokes) \ <¯o_tap &kp RALT &kp U keystrokes &kp ENTER> #endif // // COMPOSE_KEY_LINUX specifies the keycode for Compose key in Linux, // which may be RALT by default but can be reconfigured as follows: // // $ setxkbmap -option compose:sclk # use ScrollLock as Compose key // // See xkeyboard-config(7) for possible choices for the Compose key: // https://manpages.debian.org/stable/xkb-data/xkeyboard-config.7.en.html#Position_of_Compose_key // // #define COMPOSE_KEY_LINUX RALT // compose:ralt // #define COMPOSE_KEY_LINUX LGUI // compose:lwin // #define COMPOSE_KEY_LINUX RA(LGUI) // compose:lwin-altgr // #define COMPOSE_KEY_LINUX RGUI // compose:rwin // #define COMPOSE_KEY_LINUX RA(RGUI) // compose:rwin-altgr // #define COMPOSE_KEY_LINUX K_MENU // compose:menu // #define COMPOSE_KEY_LINUX RA(K_MENU) // compose:menu-altgr // #define COMPOSE_KEY_LINUX LCTL // compose:lctrl // #define COMPOSE_KEY_LINUX RA(LCTL) // compose:lctrl-altgr // #define COMPOSE_KEY_LINUX RCTL // compose:rctrl // #define COMPOSE_KEY_LINUX RA(RCTL) // compose:rctrl-altgr // #define COMPOSE_KEY_LINUX CAPS // compose:caps // #define COMPOSE_KEY_LINUX RA(CAPS) // compose:caps-altgr // #define COMPOSE_KEY_LINUX NON_US_BSLH // compose:102 // #define COMPOSE_KEY_LINUX RA(NON_US_BSLH) // compose:102-altgr // #define COMPOSE_KEY_LINUX PAUSE_BREAK // compose:paus // #define COMPOSE_KEY_LINUX PSCRN // compose:prsc // #define COMPOSE_KEY_LINUX SLCK // compose:sclk // #ifndef COMPOSE_KEY_LINUX #define COMPOSE_KEY_LINUX RALT #endif // // COMPOSE_SEQ_LINUX() prefixes keystrokes with the Linux Compose key. // #ifndef COMPOSE_SEQ_LINUX #define COMPOSE_SEQ_LINUX(keystrokes) \ <¯o_tap &kp COMPOSE_KEY_LINUX keystrokes> #endif // // COMPOSE_SEQ_MACOS() formats keystrokes for macOS character entry. // #ifndef COMPOSE_SEQ_MACOS #define COMPOSE_SEQ_MACOS(keystrokes) \ <¯o_tap keystrokes> #endif // // COMPOSE_SEQ_WINDOWS() wraps keystrokes in Windows AltCode sequence. // #ifndef COMPOSE_SEQ_WINDOWS #define COMPOSE_SEQ_WINDOWS(keystrokes) \ <¯o_press &kp LALT>, \ <¯o_tap keystrokes>, \ <¯o_release &kp LALT> #endif #if UNICODE_TARGET_OS == 'L' #define UNICODE_MORPH_MODS (MOD_LCTL|MOD_LSFT) #elif UNICODE_TARGET_OS == 'M' #define UNICODE_MORPH_MODS MOD_LALT #elif UNICODE_TARGET_OS == 'W' #define UNICODE_MORPH_MODS MOD_RALT #endif #if UNICODE_TARGET_OS == 'L' // $ grep "compose:" /usr/share/X11/xkb/rules/base.lst // compose:ralt Right Alt #if COMPOSE_KEY_LINUX == RALT #define COMPOSE_MORPH_MODS MOD_RALT // compose:lwin Left Win #elif COMPOSE_KEY_LINUX == LGUI #define COMPOSE_MORPH_MODS MOD_LGUI // compose:lwin-altgr 3rd level of Left Win #elif COMPOSE_KEY_LINUX == RA(LGUI) #define COMPOSE_MORPH_MODS (MOD_LGUI|MOD_RALT) // compose:rwin Right Win #elif COMPOSE_KEY_LINUX == RGUI #define COMPOSE_MORPH_MODS MOD_RGUI // compose:rwin-altgr 3rd level of Right Win #elif COMPOSE_KEY_LINUX == RA(RGUI) #define COMPOSE_MORPH_MODS (MOD_RGUI|MOD_RALT) // compose:menu Menu // compose:menu-altgr 3rd level of Menu #elif COMPOSE_KEY_LINUX == RA(K_MENU) #define COMPOSE_MORPH_MODS MOD_RALT // compose:lctrl Left Ctrl #elif COMPOSE_KEY_LINUX == LCTL #define COMPOSE_MORPH_MODS MOD_LCTL // compose:lctrl-altgr 3rd level of Left Ctrl #elif COMPOSE_KEY_LINUX == RA(LCTL) #define COMPOSE_MORPH_MODS (MOD_LCTL|MOD_RALT) // compose:rctrl Right Ctrl #elif COMPOSE_KEY_LINUX == RCTL #define COMPOSE_MORPH_MODS MOD_RCTL // compose:rctrl-altgr 3rd level of Right Ctrl #elif COMPOSE_KEY_LINUX == RA(RCTL) #define COMPOSE_MORPH_MODS (MOD_RCTL|MOD_RALT) // compose:caps Caps Lock // compose:caps-altgr 3rd level of Caps Lock #elif COMPOSE_KEY_LINUX == RA(CAPS) #define COMPOSE_MORPH_MODS MOD_RALT // compose:102 The "< >" key // compose:102-altgr 3rd level of the "< >" key #elif COMPOSE_KEY_LINUX == RA(NON_US_BSLH) #define COMPOSE_MORPH_MODS MOD_RALT // compose:paus Pause // compose:prsc PrtSc // compose:sclk Scroll Lock #else #define COMPOSE_MORPH_MODS 0 #endif #elif UNICODE_TARGET_OS == 'M' #define COMPOSE_MORPH_MODS 0 #elif UNICODE_TARGET_OS == 'W' #define COMPOSE_MORPH_MODS MOD_LALT #endif // // NOTE: edit the world.yaml file and run `rake` to generate this: // // // codepoints // UNICODE(world_degree_sign_macro, /* ° */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_degree_sign COMPOSE_SEQ_LINUX(&kp O &kp O) #else UNICODE_SEQ_LINUX(&kp B &kp N0) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_degree_sign COMPOSE_SEQ_MACOS(&kp LA(LS(N8))) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp B &kp N0) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_degree_sign COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N1 &kp KP_N7 &kp KP_N6) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp B &kp N0) #endif #endif ) world_degree_sign: world_degree_sign { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_degree_sign_macro>, <&world_degree_sign_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_degree_sign COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_section_sign_macro, /* § */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_section_sign COMPOSE_SEQ_LINUX(&kp S &kp O) #else UNICODE_SEQ_LINUX(&kp A &kp N7) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_section_sign COMPOSE_SEQ_MACOS(&kp LA(N6)) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp A &kp N7) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_section_sign COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N1 &kp KP_N6 &kp KP_N7) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp A &kp N7) #endif #endif ) world_section_sign: world_section_sign { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_section_sign_macro>, <&world_section_sign_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_section_sign COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_paragraph_sign_macro, /* ¶ */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_paragraph_sign COMPOSE_SEQ_LINUX(&kp P &kp EXCL) #else UNICODE_SEQ_LINUX(&kp B &kp N6) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_paragraph_sign COMPOSE_SEQ_MACOS(&kp LA(N7)) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp B &kp N6) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_paragraph_sign COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N1 &kp KP_N8 &kp KP_N2) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp B &kp N6) #endif #endif ) world_paragraph_sign: world_paragraph_sign { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_paragraph_sign_macro>, <&world_paragraph_sign_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_paragraph_sign COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_o_ordinal_macro, /* º */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_o_ordinal COMPOSE_SEQ_LINUX(&kp CARET &kp UNDER &kp O) #else UNICODE_SEQ_LINUX(&kp B &kp A) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_o_ordinal COMPOSE_SEQ_MACOS(&kp LA(N0)) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp B &kp A) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_o_ordinal COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N1 &kp KP_N8 &kp KP_N6) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp B &kp A) #endif #endif ) world_o_ordinal: world_o_ordinal { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_o_ordinal_macro>, <&world_o_ordinal_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_o_ordinal COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_a_ordinal_macro, /* ª */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_a_ordinal COMPOSE_SEQ_LINUX(&kp CARET &kp UNDER &kp A) #else UNICODE_SEQ_LINUX(&kp A &kp A) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_a_ordinal COMPOSE_SEQ_MACOS(&kp LA(N9)) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp A &kp A) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_a_ordinal COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N1 &kp KP_N7 &kp KP_N0) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp A &kp A) #endif #endif ) world_a_ordinal: world_a_ordinal { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_a_ordinal_macro>, <&world_a_ordinal_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_a_ordinal COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_exclaim_left_macro, /* ¡ */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp A &kp N1) #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_exclaim_left COMPOSE_SEQ_MACOS(&kp LA(N1)) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp A &kp N1) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_exclaim_left COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N1 &kp KP_N6 &kp KP_N1) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp A &kp N1) #endif #endif ) world_exclaim_left: world_exclaim_left { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_exclaim_left_macro>, <&world_exclaim_left_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_exclaim_left COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_question_left_macro, /* ¿ */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_question_left COMPOSE_SEQ_LINUX(&kp EXCL &kp EXCL) #else UNICODE_SEQ_LINUX(&kp B &kp F) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_question_left COMPOSE_SEQ_MACOS(&kp LA(LS(FSLH))) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp B &kp F) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_question_left COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N1 &kp KP_N9 &kp KP_N1) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp B &kp F) #endif #endif ) world_question_left: world_question_left { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_question_left_macro>, <&world_question_left_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_question_left COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_currency_crypto_macro, /* ₿ */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N2 &kp N0 &kp B &kp F) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp N2 &kp N0 &kp B &kp F) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N0 &kp B &kp F) #endif ) world_currency_crypto: world_currency_crypto { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_currency_crypto_macro>, <&world_currency_crypto_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_currency_crypto COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_currency_cent_macro, /* ¢ */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp A &kp N2) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp A &kp N2) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp A &kp N2) #endif ) world_currency_cent: world_currency_cent { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_currency_cent_macro>, <&world_currency_cent_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_currency_cent COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_currency_sign_macro, /* ¤ */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp A &kp N4) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp A &kp N4) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp A &kp N4) #endif ) world_currency_sign: world_currency_sign { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_currency_sign_macro>, <&world_currency_sign_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_currency_sign COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_micro_sign_macro, /* µ */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_micro_sign COMPOSE_SEQ_LINUX(&kp M &kp U) #else UNICODE_SEQ_LINUX(&kp B &kp N5) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_micro_sign COMPOSE_SEQ_MACOS(&kp LA(M)) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp B &kp N5) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_micro_sign COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N1 &kp KP_N8 &kp KP_N1) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp B &kp N5) #endif #endif ) world_micro_sign: world_micro_sign { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_micro_sign_macro>, <&world_micro_sign_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_micro_sign COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; // // characters // UNICODE(world_i_acute_lower_macro, /* í */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_i_acute_lower COMPOSE_SEQ_LINUX(&kp SQT &kp I) #else UNICODE_SEQ_LINUX(&kp E &kp D) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_i_acute_lower COMPOSE_SEQ_MACOS(&kp LA(E) &kp I) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp E &kp D) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_i_acute_lower COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N3 &kp KP_N7) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp E &kp D) #endif #endif ) world_i_acute_lower: world_i_acute_lower { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_i_acute_lower_macro>, <&world_i_acute_lower_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_i_acute_lower COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_i_acute_upper_macro, /* Í */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_i_acute_upper COMPOSE_SEQ_LINUX(&kp SQT &kp LS(I)) #else UNICODE_SEQ_LINUX(&kp C &kp D) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_i_acute_upper COMPOSE_SEQ_MACOS(&kp LA(E) &kp LS(I)) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp C &kp D) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_i_acute_upper COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N0 &kp KP_N5) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp C &kp D) #endif #endif ) world_i_acute_upper: world_i_acute_upper { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_i_acute_upper_macro>, <&world_i_acute_upper_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_i_acute_upper COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; world_i_acute: world_i_acute { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_i_acute_lower>, <&world_i_acute_upper>; mods = ; }; UNICODE(world_i_diaeresis_lower_macro, /* ï */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_i_diaeresis_lower COMPOSE_SEQ_LINUX(&kp DQT &kp I) #else UNICODE_SEQ_LINUX(&kp E &kp F) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_i_diaeresis_lower COMPOSE_SEQ_MACOS(&kp LA(U) &kp I) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp E &kp F) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_i_diaeresis_lower COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N3 &kp KP_N9) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp E &kp F) #endif #endif ) world_i_diaeresis_lower: world_i_diaeresis_lower { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_i_diaeresis_lower_macro>, <&world_i_diaeresis_lower_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_i_diaeresis_lower COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_i_diaeresis_upper_macro, /* Ï */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_i_diaeresis_upper COMPOSE_SEQ_LINUX(&kp DQT &kp LS(I)) #else UNICODE_SEQ_LINUX(&kp C &kp F) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_i_diaeresis_upper COMPOSE_SEQ_MACOS(&kp LA(U) &kp LS(I)) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp C &kp F) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_i_diaeresis_upper COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N0 &kp KP_N7) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp C &kp F) #endif #endif ) world_i_diaeresis_upper: world_i_diaeresis_upper { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_i_diaeresis_upper_macro>, <&world_i_diaeresis_upper_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_i_diaeresis_upper COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; world_i_diaeresis: world_i_diaeresis { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_i_diaeresis_lower>, <&world_i_diaeresis_upper>; mods = ; }; UNICODE(world_i_circumflex_lower_macro, /* î */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_i_circumflex_lower COMPOSE_SEQ_LINUX(&kp CARET &kp I) #else UNICODE_SEQ_LINUX(&kp E &kp E) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_i_circumflex_lower COMPOSE_SEQ_MACOS(&kp LA(I) &kp I) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp E &kp E) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_i_circumflex_lower COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N3 &kp KP_N8) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp E &kp E) #endif #endif ) world_i_circumflex_lower: world_i_circumflex_lower { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_i_circumflex_lower_macro>, <&world_i_circumflex_lower_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_i_circumflex_lower COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_i_circumflex_upper_macro, /* Î */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_i_circumflex_upper COMPOSE_SEQ_LINUX(&kp CARET &kp LS(I)) #else UNICODE_SEQ_LINUX(&kp C &kp E) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_i_circumflex_upper COMPOSE_SEQ_MACOS(&kp LA(I) &kp LS(I)) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp C &kp E) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_i_circumflex_upper COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N0 &kp KP_N6) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp C &kp E) #endif #endif ) world_i_circumflex_upper: world_i_circumflex_upper { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_i_circumflex_upper_macro>, <&world_i_circumflex_upper_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_i_circumflex_upper COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; world_i_circumflex: world_i_circumflex { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_i_circumflex_lower>, <&world_i_circumflex_upper>; mods = ; }; UNICODE(world_i_grave_lower_macro, /* ì */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_i_grave_lower COMPOSE_SEQ_LINUX(&kp GRAVE &kp I) #else UNICODE_SEQ_LINUX(&kp E &kp C) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_i_grave_lower COMPOSE_SEQ_MACOS(&kp LA(GRAVE) &kp I) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp E &kp C) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_i_grave_lower COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N3 &kp KP_N6) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp E &kp C) #endif #endif ) world_i_grave_lower: world_i_grave_lower { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_i_grave_lower_macro>, <&world_i_grave_lower_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_i_grave_lower COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_i_grave_upper_macro, /* Ì */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_i_grave_upper COMPOSE_SEQ_LINUX(&kp GRAVE &kp LS(I)) #else UNICODE_SEQ_LINUX(&kp C &kp C) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_i_grave_upper COMPOSE_SEQ_MACOS(&kp LA(GRAVE) &kp LS(I)) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp C &kp C) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_i_grave_upper COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N0 &kp KP_N6) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp C &kp C) #endif #endif ) world_i_grave_upper: world_i_grave_upper { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_i_grave_upper_macro>, <&world_i_grave_upper_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_i_grave_upper COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; world_i_grave: world_i_grave { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_i_grave_lower>, <&world_i_grave_upper>; mods = ; }; UNICODE(world_e_acute_lower_macro, /* é */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_e_acute_lower COMPOSE_SEQ_LINUX(&kp SQT &kp E) #else UNICODE_SEQ_LINUX(&kp E &kp N9) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_e_acute_lower COMPOSE_SEQ_MACOS(&kp LA(E) &kp E) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp E &kp N9) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_e_acute_lower COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N3 &kp KP_N3) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp E &kp N9) #endif #endif ) world_e_acute_lower: world_e_acute_lower { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_e_acute_lower_macro>, <&world_e_acute_lower_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_e_acute_lower COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_e_acute_upper_macro, /* É */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_e_acute_upper COMPOSE_SEQ_LINUX(&kp SQT &kp LS(E)) #else UNICODE_SEQ_LINUX(&kp C &kp N9) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_e_acute_upper COMPOSE_SEQ_MACOS(&kp LA(E) &kp LS(E)) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp C &kp N9) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_e_acute_upper COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N0 &kp KP_N1) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp C &kp N9) #endif #endif ) world_e_acute_upper: world_e_acute_upper { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_e_acute_upper_macro>, <&world_e_acute_upper_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_e_acute_upper COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; world_e_acute: world_e_acute { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_e_acute_lower>, <&world_e_acute_upper>; mods = ; }; UNICODE(world_e_diaeresis_lower_macro, /* ë */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_e_diaeresis_lower COMPOSE_SEQ_LINUX(&kp DQT &kp E) #else UNICODE_SEQ_LINUX(&kp E &kp B) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_e_diaeresis_lower COMPOSE_SEQ_MACOS(&kp LA(U) &kp E) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp E &kp B) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_e_diaeresis_lower COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N3 &kp KP_N5) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp E &kp B) #endif #endif ) world_e_diaeresis_lower: world_e_diaeresis_lower { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_e_diaeresis_lower_macro>, <&world_e_diaeresis_lower_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_e_diaeresis_lower COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_e_diaeresis_upper_macro, /* Ë */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_e_diaeresis_upper COMPOSE_SEQ_LINUX(&kp DQT &kp LS(E)) #else UNICODE_SEQ_LINUX(&kp C &kp B) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_e_diaeresis_upper COMPOSE_SEQ_MACOS(&kp LA(U) &kp LS(E)) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp C &kp B) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_e_diaeresis_upper COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N0 &kp KP_N3) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp C &kp B) #endif #endif ) world_e_diaeresis_upper: world_e_diaeresis_upper { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_e_diaeresis_upper_macro>, <&world_e_diaeresis_upper_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_e_diaeresis_upper COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; world_e_diaeresis: world_e_diaeresis { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_e_diaeresis_lower>, <&world_e_diaeresis_upper>; mods = ; }; UNICODE(world_e_circumflex_lower_macro, /* ê */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_e_circumflex_lower COMPOSE_SEQ_LINUX(&kp CARET &kp E) #else UNICODE_SEQ_LINUX(&kp E &kp A) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_e_circumflex_lower COMPOSE_SEQ_MACOS(&kp LA(I) &kp E) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp E &kp A) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_e_circumflex_lower COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N3 &kp KP_N4) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp E &kp A) #endif #endif ) world_e_circumflex_lower: world_e_circumflex_lower { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_e_circumflex_lower_macro>, <&world_e_circumflex_lower_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_e_circumflex_lower COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_e_circumflex_upper_macro, /* Ê */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_e_circumflex_upper COMPOSE_SEQ_LINUX(&kp CARET &kp LS(E)) #else UNICODE_SEQ_LINUX(&kp C &kp A) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_e_circumflex_upper COMPOSE_SEQ_MACOS(&kp LA(I) &kp LS(E)) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp C &kp A) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_e_circumflex_upper COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N0 &kp KP_N2) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp C &kp A) #endif #endif ) world_e_circumflex_upper: world_e_circumflex_upper { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_e_circumflex_upper_macro>, <&world_e_circumflex_upper_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_e_circumflex_upper COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; world_e_circumflex: world_e_circumflex { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_e_circumflex_lower>, <&world_e_circumflex_upper>; mods = ; }; UNICODE(world_e_grave_lower_macro, /* è */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_e_grave_lower COMPOSE_SEQ_LINUX(&kp GRAVE &kp E) #else UNICODE_SEQ_LINUX(&kp E &kp N8) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_e_grave_lower COMPOSE_SEQ_MACOS(&kp LA(GRAVE) &kp E) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp E &kp N8) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_e_grave_lower COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N3 &kp KP_N2) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp E &kp N8) #endif #endif ) world_e_grave_lower: world_e_grave_lower { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_e_grave_lower_macro>, <&world_e_grave_lower_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_e_grave_lower COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_e_grave_upper_macro, /* È */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_e_grave_upper COMPOSE_SEQ_LINUX(&kp GRAVE &kp LS(E)) #else UNICODE_SEQ_LINUX(&kp C &kp N8) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_e_grave_upper COMPOSE_SEQ_MACOS(&kp LA(GRAVE) &kp LS(E)) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp C &kp N8) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_e_grave_upper COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N0 &kp KP_N0) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp C &kp N8) #endif #endif ) world_e_grave_upper: world_e_grave_upper { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_e_grave_upper_macro>, <&world_e_grave_upper_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_e_grave_upper COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; world_e_grave: world_e_grave { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_e_grave_lower>, <&world_e_grave_upper>; mods = ; }; UNICODE(world_e_ae_lower_macro, /* æ */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_e_ae_lower COMPOSE_SEQ_LINUX(&kp A &kp E) #else UNICODE_SEQ_LINUX(&kp E &kp N6) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_e_ae_lower COMPOSE_SEQ_MACOS(&kp LA(SQT)) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp E &kp N6) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_e_ae_lower COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N3 &kp KP_N0) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp E &kp N6) #endif #endif ) world_e_ae_lower: world_e_ae_lower { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_e_ae_lower_macro>, <&world_e_ae_lower_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_e_ae_lower COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_e_ae_upper_macro, /* Æ */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_e_ae_upper COMPOSE_SEQ_LINUX(&kp LS(A) &kp LS(E)) #else UNICODE_SEQ_LINUX(&kp C &kp N6) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_e_ae_upper COMPOSE_SEQ_MACOS(&kp LA(LS(SQT))) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp C &kp N6) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_e_ae_upper COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N1 &kp KP_N9 &kp KP_N8) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp C &kp N6) #endif #endif ) world_e_ae_upper: world_e_ae_upper { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_e_ae_upper_macro>, <&world_e_ae_upper_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_e_ae_upper COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; world_e_ae: world_e_ae { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_e_ae_lower>, <&world_e_ae_upper>; mods = ; }; UNICODE(world_a_acute_lower_macro, /* á */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_a_acute_lower COMPOSE_SEQ_LINUX(&kp SQT &kp A) #else UNICODE_SEQ_LINUX(&kp E &kp N1) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_a_acute_lower COMPOSE_SEQ_MACOS(&kp LA(E) &kp A) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp E &kp N1) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_a_acute_lower COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N2 &kp KP_N5) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp E &kp N1) #endif #endif ) world_a_acute_lower: world_a_acute_lower { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_a_acute_lower_macro>, <&world_a_acute_lower_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_a_acute_lower COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_a_acute_upper_macro, /* Á */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_a_acute_upper COMPOSE_SEQ_LINUX(&kp SQT &kp LS(A)) #else UNICODE_SEQ_LINUX(&kp C &kp N1) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_a_acute_upper COMPOSE_SEQ_MACOS(&kp LA(E) &kp LS(A)) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp C &kp N1) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_a_acute_upper COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N1 &kp KP_N9 &kp KP_N3) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp C &kp N1) #endif #endif ) world_a_acute_upper: world_a_acute_upper { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_a_acute_upper_macro>, <&world_a_acute_upper_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_a_acute_upper COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; world_a_acute: world_a_acute { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_a_acute_lower>, <&world_a_acute_upper>; mods = ; }; UNICODE(world_a_diaeresis_lower_macro, /* ä */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_a_diaeresis_lower COMPOSE_SEQ_LINUX(&kp DQT &kp A) #else UNICODE_SEQ_LINUX(&kp E &kp N4) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_a_diaeresis_lower COMPOSE_SEQ_MACOS(&kp LA(U) &kp A) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp E &kp N4) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_a_diaeresis_lower COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N2 &kp KP_N8) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp E &kp N4) #endif #endif ) world_a_diaeresis_lower: world_a_diaeresis_lower { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_a_diaeresis_lower_macro>, <&world_a_diaeresis_lower_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_a_diaeresis_lower COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_a_diaeresis_upper_macro, /* Ä */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_a_diaeresis_upper COMPOSE_SEQ_LINUX(&kp DQT &kp LS(A)) #else UNICODE_SEQ_LINUX(&kp C &kp N4) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_a_diaeresis_upper COMPOSE_SEQ_MACOS(&kp LA(U) &kp LS(A)) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp C &kp N4) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_a_diaeresis_upper COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N1 &kp KP_N9 &kp KP_N6) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp C &kp N4) #endif #endif ) world_a_diaeresis_upper: world_a_diaeresis_upper { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_a_diaeresis_upper_macro>, <&world_a_diaeresis_upper_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_a_diaeresis_upper COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; world_a_diaeresis: world_a_diaeresis { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_a_diaeresis_lower>, <&world_a_diaeresis_upper>; mods = ; }; UNICODE(world_a_circumflex_lower_macro, /* â */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_a_circumflex_lower COMPOSE_SEQ_LINUX(&kp CARET &kp A) #else UNICODE_SEQ_LINUX(&kp E &kp N2) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_a_circumflex_lower COMPOSE_SEQ_MACOS(&kp LA(I) &kp A) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp E &kp N2) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_a_circumflex_lower COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N2 &kp KP_N6) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp E &kp N2) #endif #endif ) world_a_circumflex_lower: world_a_circumflex_lower { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_a_circumflex_lower_macro>, <&world_a_circumflex_lower_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_a_circumflex_lower COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_a_circumflex_upper_macro, /* Â */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_a_circumflex_upper COMPOSE_SEQ_LINUX(&kp CARET &kp LS(A)) #else UNICODE_SEQ_LINUX(&kp C &kp N2) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_a_circumflex_upper COMPOSE_SEQ_MACOS(&kp LA(I) &kp LS(A)) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp C &kp N2) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_a_circumflex_upper COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N1 &kp KP_N9 &kp KP_N4) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp C &kp N2) #endif #endif ) world_a_circumflex_upper: world_a_circumflex_upper { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_a_circumflex_upper_macro>, <&world_a_circumflex_upper_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_a_circumflex_upper COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; world_a_circumflex: world_a_circumflex { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_a_circumflex_lower>, <&world_a_circumflex_upper>; mods = ; }; UNICODE(world_a_grave_lower_macro, /* à */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_a_grave_lower COMPOSE_SEQ_LINUX(&kp GRAVE &kp A) #else UNICODE_SEQ_LINUX(&kp E &kp N0) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_a_grave_lower COMPOSE_SEQ_MACOS(&kp LA(GRAVE) &kp A) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp E &kp N0) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_a_grave_lower COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N2 &kp KP_N4) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp E &kp N0) #endif #endif ) world_a_grave_lower: world_a_grave_lower { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_a_grave_lower_macro>, <&world_a_grave_lower_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_a_grave_lower COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_a_grave_upper_macro, /* À */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_a_grave_upper COMPOSE_SEQ_LINUX(&kp GRAVE &kp LS(A)) #else UNICODE_SEQ_LINUX(&kp C &kp N0) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_a_grave_upper COMPOSE_SEQ_MACOS(&kp LA(GRAVE) &kp LS(A)) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp C &kp N0) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_a_grave_upper COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N1 &kp KP_N9 &kp KP_N2) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp C &kp N0) #endif #endif ) world_a_grave_upper: world_a_grave_upper { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_a_grave_upper_macro>, <&world_a_grave_upper_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_a_grave_upper COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; world_a_grave: world_a_grave { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_a_grave_lower>, <&world_a_grave_upper>; mods = ; }; UNICODE(world_a_tilde_lower_macro, /* ã */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_a_tilde_lower COMPOSE_SEQ_LINUX(&kp TILDE &kp A) #else UNICODE_SEQ_LINUX(&kp E &kp N3) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_a_tilde_lower COMPOSE_SEQ_MACOS(&kp LA(N) &kp A) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp E &kp N3) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_a_tilde_lower COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N2 &kp KP_N7) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp E &kp N3) #endif #endif ) world_a_tilde_lower: world_a_tilde_lower { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_a_tilde_lower_macro>, <&world_a_tilde_lower_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_a_tilde_lower COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_a_tilde_upper_macro, /* Ã */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_a_tilde_upper COMPOSE_SEQ_LINUX(&kp TILDE &kp LS(A)) #else UNICODE_SEQ_LINUX(&kp C &kp N3) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_a_tilde_upper COMPOSE_SEQ_MACOS(&kp LA(N) &kp LS(A)) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp C &kp N3) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_a_tilde_upper COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N1 &kp KP_N9 &kp KP_N5) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp C &kp N3) #endif #endif ) world_a_tilde_upper: world_a_tilde_upper { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_a_tilde_upper_macro>, <&world_a_tilde_upper_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_a_tilde_upper COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; world_a_tilde: world_a_tilde { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_a_tilde_lower>, <&world_a_tilde_upper>; mods = ; }; UNICODE(world_a_ring_lower_macro, /* å */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_a_ring_lower COMPOSE_SEQ_LINUX(&kp O &kp A) #else UNICODE_SEQ_LINUX(&kp E &kp N5) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_a_ring_lower COMPOSE_SEQ_MACOS(&kp LA(A)) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp E &kp N5) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_a_ring_lower COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N2 &kp KP_N9) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp E &kp N5) #endif #endif ) world_a_ring_lower: world_a_ring_lower { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_a_ring_lower_macro>, <&world_a_ring_lower_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_a_ring_lower COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_a_ring_upper_macro, /* Å */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_a_ring_upper COMPOSE_SEQ_LINUX(&kp O &kp LS(A)) #else UNICODE_SEQ_LINUX(&kp C &kp N5) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_a_ring_upper COMPOSE_SEQ_MACOS(&kp LA(LS(A))) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp C &kp N5) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_a_ring_upper COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N1 &kp KP_N9 &kp KP_N7) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp C &kp N5) #endif #endif ) world_a_ring_upper: world_a_ring_upper { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_a_ring_upper_macro>, <&world_a_ring_upper_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_a_ring_upper COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; world_a_ring: world_a_ring { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_a_ring_lower>, <&world_a_ring_upper>; mods = ; }; UNICODE(world_y_acute_lower_macro, /* ý */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_y_acute_lower COMPOSE_SEQ_LINUX(&kp SQT &kp Y) #else UNICODE_SEQ_LINUX(&kp F &kp D) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_y_acute_lower COMPOSE_SEQ_MACOS(&kp LA(E) &kp Y) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp F &kp D) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_y_acute_lower COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N5 &kp KP_N3) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp D) #endif #endif ) world_y_acute_lower: world_y_acute_lower { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_y_acute_lower_macro>, <&world_y_acute_lower_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_y_acute_lower COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_y_acute_upper_macro, /* Ý */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_y_acute_upper COMPOSE_SEQ_LINUX(&kp SQT &kp LS(Y)) #else UNICODE_SEQ_LINUX(&kp D &kp D) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_y_acute_upper COMPOSE_SEQ_MACOS(&kp LA(E) &kp LS(Y)) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp D &kp D) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_y_acute_upper COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N2 &kp KP_N1) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp D &kp D) #endif #endif ) world_y_acute_upper: world_y_acute_upper { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_y_acute_upper_macro>, <&world_y_acute_upper_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_y_acute_upper COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; world_y_acute: world_y_acute { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_y_acute_lower>, <&world_y_acute_upper>; mods = ; }; UNICODE(world_y_diaeresis_lower_macro, /* ÿ */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_y_diaeresis_lower COMPOSE_SEQ_LINUX(&kp DQT &kp Y) #else UNICODE_SEQ_LINUX(&kp F &kp F) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_y_diaeresis_lower COMPOSE_SEQ_MACOS(&kp LA(U) &kp Y) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp F &kp F) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_y_diaeresis_lower COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N5 &kp KP_N5) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp F) #endif #endif ) world_y_diaeresis_lower: world_y_diaeresis_lower { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_y_diaeresis_lower_macro>, <&world_y_diaeresis_lower_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_y_diaeresis_lower COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_y_diaeresis_upper_macro, /* Ÿ */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_y_diaeresis_upper COMPOSE_SEQ_LINUX(&kp DQT &kp LS(Y)) #else UNICODE_SEQ_LINUX(&kp N1 &kp N7 &kp N8) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_y_diaeresis_upper COMPOSE_SEQ_MACOS(&kp LA(U) &kp LS(Y)) #else UNICODE_SEQ_MACOS(&kp N0 &kp N1 &kp N7 &kp N8) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_y_diaeresis_upper COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N1 &kp KP_N5 &kp KP_N9) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp N7 &kp N8) #endif #endif ) world_y_diaeresis_upper: world_y_diaeresis_upper { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_y_diaeresis_upper_macro>, <&world_y_diaeresis_upper_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_y_diaeresis_upper COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; world_y_diaeresis: world_y_diaeresis { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_y_diaeresis_lower>, <&world_y_diaeresis_upper>; mods = ; }; UNICODE(world_o_acute_lower_macro, /* ó */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_o_acute_lower COMPOSE_SEQ_LINUX(&kp SQT &kp O) #else UNICODE_SEQ_LINUX(&kp F &kp N3) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_o_acute_lower COMPOSE_SEQ_MACOS(&kp LA(E) &kp O) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp F &kp N3) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_o_acute_lower COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N4 &kp KP_N3) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp N3) #endif #endif ) world_o_acute_lower: world_o_acute_lower { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_o_acute_lower_macro>, <&world_o_acute_lower_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_o_acute_lower COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_o_acute_upper_macro, /* Ó */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_o_acute_upper COMPOSE_SEQ_LINUX(&kp SQT &kp LS(O)) #else UNICODE_SEQ_LINUX(&kp D &kp N3) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_o_acute_upper COMPOSE_SEQ_MACOS(&kp LA(E) &kp LS(O)) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp D &kp N3) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_o_acute_upper COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N1 &kp KP_N1) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp D &kp N3) #endif #endif ) world_o_acute_upper: world_o_acute_upper { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_o_acute_upper_macro>, <&world_o_acute_upper_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_o_acute_upper COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; world_o_acute: world_o_acute { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_o_acute_lower>, <&world_o_acute_upper>; mods = ; }; UNICODE(world_o_diaeresis_lower_macro, /* ö */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_o_diaeresis_lower COMPOSE_SEQ_LINUX(&kp DQT &kp O) #else UNICODE_SEQ_LINUX(&kp F &kp N6) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_o_diaeresis_lower COMPOSE_SEQ_MACOS(&kp LA(U) &kp O) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp F &kp N6) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_o_diaeresis_lower COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N4 &kp KP_N6) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp N6) #endif #endif ) world_o_diaeresis_lower: world_o_diaeresis_lower { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_o_diaeresis_lower_macro>, <&world_o_diaeresis_lower_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_o_diaeresis_lower COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_o_diaeresis_upper_macro, /* Ö */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_o_diaeresis_upper COMPOSE_SEQ_LINUX(&kp DQT &kp LS(O)) #else UNICODE_SEQ_LINUX(&kp D &kp N6) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_o_diaeresis_upper COMPOSE_SEQ_MACOS(&kp LA(U) &kp LS(O)) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp D &kp N6) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_o_diaeresis_upper COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N1 &kp KP_N4) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp D &kp N6) #endif #endif ) world_o_diaeresis_upper: world_o_diaeresis_upper { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_o_diaeresis_upper_macro>, <&world_o_diaeresis_upper_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_o_diaeresis_upper COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; world_o_diaeresis: world_o_diaeresis { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_o_diaeresis_lower>, <&world_o_diaeresis_upper>; mods = ; }; UNICODE(world_o_circumflex_lower_macro, /* ô */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_o_circumflex_lower COMPOSE_SEQ_LINUX(&kp CARET &kp O) #else UNICODE_SEQ_LINUX(&kp F &kp N4) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_o_circumflex_lower COMPOSE_SEQ_MACOS(&kp LA(I) &kp O) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp F &kp N4) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_o_circumflex_lower COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N4 &kp KP_N4) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp N4) #endif #endif ) world_o_circumflex_lower: world_o_circumflex_lower { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_o_circumflex_lower_macro>, <&world_o_circumflex_lower_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_o_circumflex_lower COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_o_circumflex_upper_macro, /* Ô */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_o_circumflex_upper COMPOSE_SEQ_LINUX(&kp CARET &kp LS(O)) #else UNICODE_SEQ_LINUX(&kp D &kp N4) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_o_circumflex_upper COMPOSE_SEQ_MACOS(&kp LA(I) &kp LS(O)) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp D &kp N4) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_o_circumflex_upper COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N1 &kp KP_N2) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp D &kp N4) #endif #endif ) world_o_circumflex_upper: world_o_circumflex_upper { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_o_circumflex_upper_macro>, <&world_o_circumflex_upper_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_o_circumflex_upper COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; world_o_circumflex: world_o_circumflex { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_o_circumflex_lower>, <&world_o_circumflex_upper>; mods = ; }; UNICODE(world_o_grave_lower_macro, /* ò */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_o_grave_lower COMPOSE_SEQ_LINUX(&kp GRAVE &kp O) #else UNICODE_SEQ_LINUX(&kp F &kp N2) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_o_grave_lower COMPOSE_SEQ_MACOS(&kp LA(GRAVE) &kp O) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp F &kp N2) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_o_grave_lower COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N4 &kp KP_N2) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp N2) #endif #endif ) world_o_grave_lower: world_o_grave_lower { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_o_grave_lower_macro>, <&world_o_grave_lower_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_o_grave_lower COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_o_grave_upper_macro, /* Ò */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_o_grave_upper COMPOSE_SEQ_LINUX(&kp GRAVE &kp LS(O)) #else UNICODE_SEQ_LINUX(&kp D &kp N2) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_o_grave_upper COMPOSE_SEQ_MACOS(&kp LA(GRAVE) &kp LS(O)) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp D &kp N2) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_o_grave_upper COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N1 &kp KP_N0) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp D &kp N2) #endif #endif ) world_o_grave_upper: world_o_grave_upper { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_o_grave_upper_macro>, <&world_o_grave_upper_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_o_grave_upper COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; world_o_grave: world_o_grave { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_o_grave_lower>, <&world_o_grave_upper>; mods = ; }; UNICODE(world_o_tilde_lower_macro, /* õ */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_o_tilde_lower COMPOSE_SEQ_LINUX(&kp TILDE &kp O) #else UNICODE_SEQ_LINUX(&kp F &kp N5) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_o_tilde_lower COMPOSE_SEQ_MACOS(&kp LA(N) &kp O) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp F &kp N5) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_o_tilde_lower COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N4 &kp KP_N5) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp N5) #endif #endif ) world_o_tilde_lower: world_o_tilde_lower { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_o_tilde_lower_macro>, <&world_o_tilde_lower_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_o_tilde_lower COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_o_tilde_upper_macro, /* Õ */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_o_tilde_upper COMPOSE_SEQ_LINUX(&kp TILDE &kp LS(O)) #else UNICODE_SEQ_LINUX(&kp D &kp N5) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_o_tilde_upper COMPOSE_SEQ_MACOS(&kp LA(N) &kp LS(O)) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp D &kp N5) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_o_tilde_upper COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N1 &kp KP_N3) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp D &kp N5) #endif #endif ) world_o_tilde_upper: world_o_tilde_upper { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_o_tilde_upper_macro>, <&world_o_tilde_upper_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_o_tilde_upper COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; world_o_tilde: world_o_tilde { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_o_tilde_lower>, <&world_o_tilde_upper>; mods = ; }; UNICODE(world_o_slash_lower_macro, /* ø */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_o_slash_lower COMPOSE_SEQ_LINUX(&kp FSLH &kp O) #else UNICODE_SEQ_LINUX(&kp F &kp N8) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_o_slash_lower COMPOSE_SEQ_MACOS(&kp LA(O)) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp F &kp N8) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_o_slash_lower COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N4 &kp KP_N8) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp N8) #endif #endif ) world_o_slash_lower: world_o_slash_lower { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_o_slash_lower_macro>, <&world_o_slash_lower_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_o_slash_lower COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_o_slash_upper_macro, /* Ø */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_o_slash_upper COMPOSE_SEQ_LINUX(&kp FSLH &kp LS(O)) #else UNICODE_SEQ_LINUX(&kp D &kp N8) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_o_slash_upper COMPOSE_SEQ_MACOS(&kp LA(LS(O))) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp D &kp N8) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_o_slash_upper COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N1 &kp KP_N6) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp D &kp N8) #endif #endif ) world_o_slash_upper: world_o_slash_upper { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_o_slash_upper_macro>, <&world_o_slash_upper_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_o_slash_upper COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; world_o_slash: world_o_slash { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_o_slash_lower>, <&world_o_slash_upper>; mods = ; }; UNICODE(world_u_acute_lower_macro, /* ú */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_u_acute_lower COMPOSE_SEQ_LINUX(&kp SQT &kp U) #else UNICODE_SEQ_LINUX(&kp F &kp A) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_u_acute_lower COMPOSE_SEQ_MACOS(&kp LA(E) &kp U) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp F &kp A) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_u_acute_lower COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N5 &kp KP_N0) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp A) #endif #endif ) world_u_acute_lower: world_u_acute_lower { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_u_acute_lower_macro>, <&world_u_acute_lower_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_u_acute_lower COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_u_acute_upper_macro, /* Ú */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_u_acute_upper COMPOSE_SEQ_LINUX(&kp SQT &kp LS(U)) #else UNICODE_SEQ_LINUX(&kp D &kp A) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_u_acute_upper COMPOSE_SEQ_MACOS(&kp LA(E) &kp LS(U)) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp D &kp A) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_u_acute_upper COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N1 &kp KP_N8) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp D &kp A) #endif #endif ) world_u_acute_upper: world_u_acute_upper { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_u_acute_upper_macro>, <&world_u_acute_upper_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_u_acute_upper COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; world_u_acute: world_u_acute { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_u_acute_lower>, <&world_u_acute_upper>; mods = ; }; UNICODE(world_u_diaeresis_lower_macro, /* ü */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_u_diaeresis_lower COMPOSE_SEQ_LINUX(&kp DQT &kp U) #else UNICODE_SEQ_LINUX(&kp F &kp C) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_u_diaeresis_lower COMPOSE_SEQ_MACOS(&kp LA(U) &kp U) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp F &kp C) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_u_diaeresis_lower COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N5 &kp KP_N2) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp C) #endif #endif ) world_u_diaeresis_lower: world_u_diaeresis_lower { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_u_diaeresis_lower_macro>, <&world_u_diaeresis_lower_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_u_diaeresis_lower COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_u_diaeresis_upper_macro, /* Ü */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_u_diaeresis_upper COMPOSE_SEQ_LINUX(&kp DQT &kp LS(U)) #else UNICODE_SEQ_LINUX(&kp D &kp C) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_u_diaeresis_upper COMPOSE_SEQ_MACOS(&kp LA(U) &kp LS(U)) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp D &kp C) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_u_diaeresis_upper COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N2 &kp KP_N0) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp D &kp C) #endif #endif ) world_u_diaeresis_upper: world_u_diaeresis_upper { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_u_diaeresis_upper_macro>, <&world_u_diaeresis_upper_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_u_diaeresis_upper COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; world_u_diaeresis: world_u_diaeresis { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_u_diaeresis_lower>, <&world_u_diaeresis_upper>; mods = ; }; UNICODE(world_u_circumflex_lower_macro, /* û */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_u_circumflex_lower COMPOSE_SEQ_LINUX(&kp CARET &kp U) #else UNICODE_SEQ_LINUX(&kp F &kp B) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_u_circumflex_lower COMPOSE_SEQ_MACOS(&kp LA(I) &kp U) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp F &kp B) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_u_circumflex_lower COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N5 &kp KP_N1) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp B) #endif #endif ) world_u_circumflex_lower: world_u_circumflex_lower { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_u_circumflex_lower_macro>, <&world_u_circumflex_lower_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_u_circumflex_lower COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_u_circumflex_upper_macro, /* Û */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_u_circumflex_upper COMPOSE_SEQ_LINUX(&kp CARET &kp LS(U)) #else UNICODE_SEQ_LINUX(&kp D &kp B) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_u_circumflex_upper COMPOSE_SEQ_MACOS(&kp LA(I) &kp LS(U)) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp D &kp B) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_u_circumflex_upper COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N1 &kp KP_N9) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp D &kp B) #endif #endif ) world_u_circumflex_upper: world_u_circumflex_upper { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_u_circumflex_upper_macro>, <&world_u_circumflex_upper_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_u_circumflex_upper COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; world_u_circumflex: world_u_circumflex { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_u_circumflex_lower>, <&world_u_circumflex_upper>; mods = ; }; UNICODE(world_u_grave_lower_macro, /* ù */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_u_grave_lower COMPOSE_SEQ_LINUX(&kp GRAVE &kp U) #else UNICODE_SEQ_LINUX(&kp F &kp N9) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_u_grave_lower COMPOSE_SEQ_MACOS(&kp LA(GRAVE) &kp U) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp F &kp N9) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_u_grave_lower COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N4 &kp KP_N9) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp N9) #endif #endif ) world_u_grave_lower: world_u_grave_lower { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_u_grave_lower_macro>, <&world_u_grave_lower_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_u_grave_lower COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_u_grave_upper_macro, /* Ù */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_u_grave_upper COMPOSE_SEQ_LINUX(&kp GRAVE &kp LS(U)) #else UNICODE_SEQ_LINUX(&kp D &kp N9) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_u_grave_upper COMPOSE_SEQ_MACOS(&kp LA(GRAVE) &kp LS(U)) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp D &kp N9) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_u_grave_upper COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N1 &kp KP_N7) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp D &kp N9) #endif #endif ) world_u_grave_upper: world_u_grave_upper { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_u_grave_upper_macro>, <&world_u_grave_upper_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_u_grave_upper COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; world_u_grave: world_u_grave { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_u_grave_lower>, <&world_u_grave_upper>; mods = ; }; UNICODE(world_consonants_cedilla_lower_macro, /* ç */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_consonants_cedilla_lower COMPOSE_SEQ_LINUX(&kp COMMA &kp C) #else UNICODE_SEQ_LINUX(&kp E &kp N7) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_consonants_cedilla_lower COMPOSE_SEQ_MACOS(&kp LA(C)) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp E &kp N7) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_consonants_cedilla_lower COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N3 &kp KP_N1) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp E &kp N7) #endif #endif ) world_consonants_cedilla_lower: world_consonants_cedilla_lower { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_consonants_cedilla_lower_macro>, <&world_consonants_cedilla_lower_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_consonants_cedilla_lower COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_consonants_cedilla_upper_macro, /* Ç */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_consonants_cedilla_upper COMPOSE_SEQ_LINUX(&kp COMMA &kp LS(C)) #else UNICODE_SEQ_LINUX(&kp C &kp N7) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_consonants_cedilla_upper COMPOSE_SEQ_MACOS(&kp LA(LS(C))) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp C &kp N7) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_consonants_cedilla_upper COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N1 &kp KP_N9 &kp KP_N9) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp C &kp N7) #endif #endif ) world_consonants_cedilla_upper: world_consonants_cedilla_upper { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_consonants_cedilla_upper_macro>, <&world_consonants_cedilla_upper_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_consonants_cedilla_upper COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; world_consonants_cedilla: world_consonants_cedilla { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_consonants_cedilla_lower>, <&world_consonants_cedilla_upper>; mods = ; }; UNICODE(world_consonants_eszett_lower_macro, /* ß */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_consonants_eszett_lower COMPOSE_SEQ_LINUX(&kp S &kp S) #else UNICODE_SEQ_LINUX(&kp D &kp F) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_consonants_eszett_lower COMPOSE_SEQ_MACOS(&kp LA(S)) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp D &kp F) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_consonants_eszett_lower COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N2 &kp KP_N3) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp D &kp F) #endif #endif ) world_consonants_eszett_lower: world_consonants_eszett_lower { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_consonants_eszett_lower_macro>, <&world_consonants_eszett_lower_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_consonants_eszett_lower COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_consonants_eszett_upper_macro, /* ẞ */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_consonants_eszett_upper COMPOSE_SEQ_LINUX(&kp LS(S) &kp LS(S)) #else UNICODE_SEQ_LINUX(&kp N1 &kp E &kp N9 &kp E) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_consonants_eszett_upper COMPOSE_SEQ_MACOS(&kp LA(LS(S))) #else UNICODE_SEQ_MACOS(&kp N1 &kp E &kp N9 &kp E) #endif #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp E &kp N9 &kp E) #endif ) world_consonants_eszett_upper: world_consonants_eszett_upper { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_consonants_eszett_upper_macro>, <&world_consonants_eszett_upper_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_consonants_eszett_upper COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; world_consonants_eszett: world_consonants_eszett { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_consonants_eszett_lower>, <&world_consonants_eszett_upper>; mods = ; }; UNICODE(world_consonants_ntilde_lower_macro, /* ñ */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_consonants_ntilde_lower COMPOSE_SEQ_LINUX(&kp TILDE &kp N) #else UNICODE_SEQ_LINUX(&kp F &kp N1) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_consonants_ntilde_lower COMPOSE_SEQ_MACOS(&kp LA(N) &kp N) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp F &kp N1) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_consonants_ntilde_lower COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N4 &kp KP_N1) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp N1) #endif #endif ) world_consonants_ntilde_lower: world_consonants_ntilde_lower { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_consonants_ntilde_lower_macro>, <&world_consonants_ntilde_lower_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_consonants_ntilde_lower COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_consonants_ntilde_upper_macro, /* Ñ */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_consonants_ntilde_upper COMPOSE_SEQ_LINUX(&kp TILDE &kp LS(N)) #else UNICODE_SEQ_LINUX(&kp D &kp N1) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_consonants_ntilde_upper COMPOSE_SEQ_MACOS(&kp LA(N) &kp LS(N)) #else UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp D &kp N1) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_consonants_ntilde_upper COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N0 &kp KP_N9) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp D &kp N1) #endif #endif ) world_consonants_ntilde_upper: world_consonants_ntilde_upper { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_consonants_ntilde_upper_macro>, <&world_consonants_ntilde_upper_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_consonants_ntilde_upper COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; world_consonants_ntilde: world_consonants_ntilde { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_consonants_ntilde_lower>, <&world_consonants_ntilde_upper>; mods = ; }; UNICODE(world_quotes_left_angle_lower_macro, /* ‹ */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N2 &kp N0 &kp N3 &kp N9) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp N2 &kp N0 &kp N3 &kp N9) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N0 &kp N3 &kp N9) #endif ) world_quotes_left_angle_lower: world_quotes_left_angle_lower { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_quotes_left_angle_lower_macro>, <&world_quotes_left_angle_lower_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_quotes_left_angle_lower COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_quotes_left_angle_upper_macro, /* « */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp A &kp B) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp A &kp B) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp A &kp B) #endif ) world_quotes_left_angle_upper: world_quotes_left_angle_upper { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_quotes_left_angle_upper_macro>, <&world_quotes_left_angle_upper_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_quotes_left_angle_upper COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; world_quotes_left_angle: world_quotes_left_angle { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_quotes_left_angle_lower>, <&world_quotes_left_angle_upper>; mods = ; }; UNICODE(world_quotes_left_curly_lower_macro, /* ‘ */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N2 &kp N0 &kp N1 &kp N8) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp N2 &kp N0 &kp N1 &kp N8) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N0 &kp N1 &kp N8) #endif ) world_quotes_left_curly_lower: world_quotes_left_curly_lower { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_quotes_left_curly_lower_macro>, <&world_quotes_left_curly_lower_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_quotes_left_curly_lower COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_quotes_left_curly_upper_macro, /* “ */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N2 &kp N0 &kp N1 &kp C) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp N2 &kp N0 &kp N1 &kp C) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N0 &kp N1 &kp C) #endif ) world_quotes_left_curly_upper: world_quotes_left_curly_upper { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_quotes_left_curly_upper_macro>, <&world_quotes_left_curly_upper_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_quotes_left_curly_upper COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; world_quotes_left_curly: world_quotes_left_curly { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_quotes_left_curly_lower>, <&world_quotes_left_curly_upper>; mods = ; }; UNICODE(world_quotes_left_low_lower_macro, /* ‚ */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N2 &kp N0 &kp N1 &kp A) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp N2 &kp N0 &kp N1 &kp A) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N0 &kp N1 &kp A) #endif ) world_quotes_left_low_lower: world_quotes_left_low_lower { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_quotes_left_low_lower_macro>, <&world_quotes_left_low_lower_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_quotes_left_low_lower COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_quotes_left_low_upper_macro, /* „ */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N2 &kp N0 &kp N1 &kp E) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp N2 &kp N0 &kp N1 &kp E) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N0 &kp N1 &kp E) #endif ) world_quotes_left_low_upper: world_quotes_left_low_upper { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_quotes_left_low_upper_macro>, <&world_quotes_left_low_upper_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_quotes_left_low_upper COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; world_quotes_left_low: world_quotes_left_low { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_quotes_left_low_lower>, <&world_quotes_left_low_upper>; mods = ; }; UNICODE(world_quotes_left_corner1_lower_macro, /* 「 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N3 &kp N0 &kp N0 &kp C) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp N3 &kp N0 &kp N0 &kp C) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N3 &kp N0 &kp N0 &kp C) #endif ) world_quotes_left_corner1_lower: world_quotes_left_corner1_lower { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_quotes_left_corner1_lower_macro>, <&world_quotes_left_corner1_lower_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_quotes_left_corner1_lower COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_quotes_left_corner1_upper_macro, /* ﹁ */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp F &kp E &kp N4 &kp N1) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp F &kp E &kp N4 &kp N1) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp E &kp N4 &kp N1) #endif ) world_quotes_left_corner1_upper: world_quotes_left_corner1_upper { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_quotes_left_corner1_upper_macro>, <&world_quotes_left_corner1_upper_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_quotes_left_corner1_upper COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; world_quotes_left_corner1: world_quotes_left_corner1 { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_quotes_left_corner1_lower>, <&world_quotes_left_corner1_upper>; mods = ; }; UNICODE(world_quotes_left_corner2_lower_macro, /* 『 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N3 &kp N0 &kp N0 &kp E) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp N3 &kp N0 &kp N0 &kp E) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N3 &kp N0 &kp N0 &kp E) #endif ) world_quotes_left_corner2_lower: world_quotes_left_corner2_lower { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_quotes_left_corner2_lower_macro>, <&world_quotes_left_corner2_lower_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_quotes_left_corner2_lower COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_quotes_left_corner2_upper_macro, /* ﹃ */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp F &kp E &kp N4 &kp N3) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp F &kp E &kp N4 &kp N3) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp E &kp N4 &kp N3) #endif ) world_quotes_left_corner2_upper: world_quotes_left_corner2_upper { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_quotes_left_corner2_upper_macro>, <&world_quotes_left_corner2_upper_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_quotes_left_corner2_upper COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; world_quotes_left_corner2: world_quotes_left_corner2 { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_quotes_left_corner2_lower>, <&world_quotes_left_corner2_upper>; mods = ; }; UNICODE(world_quotes_left_grave_macro, /* ` */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N6 &kp N0) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp N6 &kp N0) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N6 &kp N0) #endif ) world_quotes_left_grave: world_quotes_left_grave { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_quotes_left_grave_macro>, <&world_quotes_left_grave_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_quotes_left_grave COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_quotes_right_angle_lower_macro, /* › */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N2 &kp N0 &kp N3 &kp A) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp N2 &kp N0 &kp N3 &kp A) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N0 &kp N3 &kp A) #endif ) world_quotes_right_angle_lower: world_quotes_right_angle_lower { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_quotes_right_angle_lower_macro>, <&world_quotes_right_angle_lower_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_quotes_right_angle_lower COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_quotes_right_angle_upper_macro, /* » */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp B &kp B) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp B &kp B) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp B &kp B) #endif ) world_quotes_right_angle_upper: world_quotes_right_angle_upper { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_quotes_right_angle_upper_macro>, <&world_quotes_right_angle_upper_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_quotes_right_angle_upper COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; world_quotes_right_angle: world_quotes_right_angle { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_quotes_right_angle_lower>, <&world_quotes_right_angle_upper>; mods = ; }; UNICODE(world_quotes_right_curly_lower_macro, /* ’ */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N2 &kp N0 &kp N1 &kp N9) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp N2 &kp N0 &kp N1 &kp N9) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N0 &kp N1 &kp N9) #endif ) world_quotes_right_curly_lower: world_quotes_right_curly_lower { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_quotes_right_curly_lower_macro>, <&world_quotes_right_curly_lower_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_quotes_right_curly_lower COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_quotes_right_curly_upper_macro, /* ” */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N2 &kp N0 &kp N1 &kp D) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp N2 &kp N0 &kp N1 &kp D) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N0 &kp N1 &kp D) #endif ) world_quotes_right_curly_upper: world_quotes_right_curly_upper { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_quotes_right_curly_upper_macro>, <&world_quotes_right_curly_upper_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_quotes_right_curly_upper COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; world_quotes_right_curly: world_quotes_right_curly { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_quotes_right_curly_lower>, <&world_quotes_right_curly_upper>; mods = ; }; world_quotes_right_low: world_quotes_right_low { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_quotes_left_low_lower>, <&world_quotes_left_low_upper>; mods = ; }; UNICODE(world_quotes_right_corner1_lower_macro, /* 」 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N3 &kp N0 &kp N0 &kp D) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp N3 &kp N0 &kp N0 &kp D) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N3 &kp N0 &kp N0 &kp D) #endif ) world_quotes_right_corner1_lower: world_quotes_right_corner1_lower { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_quotes_right_corner1_lower_macro>, <&world_quotes_right_corner1_lower_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_quotes_right_corner1_lower COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_quotes_right_corner1_upper_macro, /* ﹂ */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp F &kp E &kp N4 &kp N2) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp F &kp E &kp N4 &kp N2) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp E &kp N4 &kp N2) #endif ) world_quotes_right_corner1_upper: world_quotes_right_corner1_upper { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_quotes_right_corner1_upper_macro>, <&world_quotes_right_corner1_upper_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_quotes_right_corner1_upper COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; world_quotes_right_corner1: world_quotes_right_corner1 { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_quotes_right_corner1_lower>, <&world_quotes_right_corner1_upper>; mods = ; }; UNICODE(world_quotes_right_corner2_lower_macro, /* 』 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N3 &kp N0 &kp N0 &kp F) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp N3 &kp N0 &kp N0 &kp F) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N3 &kp N0 &kp N0 &kp F) #endif ) world_quotes_right_corner2_lower: world_quotes_right_corner2_lower { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_quotes_right_corner2_lower_macro>, <&world_quotes_right_corner2_lower_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_quotes_right_corner2_lower COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_quotes_right_corner2_upper_macro, /* ﹄ */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp F &kp E &kp N4 &kp N4) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp F &kp E &kp N4 &kp N4) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp E &kp N4 &kp N4) #endif ) world_quotes_right_corner2_upper: world_quotes_right_corner2_upper { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_quotes_right_corner2_upper_macro>, <&world_quotes_right_corner2_upper_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_quotes_right_corner2_upper COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; world_quotes_right_corner2: world_quotes_right_corner2 { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_quotes_right_corner2_lower>, <&world_quotes_right_corner2_upper>; mods = ; }; UNICODE(world_quotes_right_grave_macro, /* ´ */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp B &kp N4) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp B &kp N4) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp B &kp N4) #endif ) world_quotes_right_grave: world_quotes_right_grave { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_quotes_right_grave_macro>, <&world_quotes_right_grave_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_quotes_right_grave COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_currency_dollar_lower_macro, /* $ */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N2 &kp N4) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp N2 &kp N4) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N4) #endif ) world_currency_dollar_lower: world_currency_dollar_lower { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_currency_dollar_lower_macro>, <&world_currency_dollar_lower_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_currency_dollar_lower COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; world_currency_dollar: world_currency_dollar { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_currency_dollar_lower>, <&world_currency_cent>; mods = ; }; UNICODE(world_currency_yen_macro, /* ¥ */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp A &kp N5) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp A &kp N5) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp A &kp N5) #endif ) world_currency_yen: world_currency_yen { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_currency_yen_macro>, <&world_currency_yen_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_currency_yen COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_currency_euro_macro, /* € */ #if UNICODE_TARGET_OS == 'L' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_currency_euro COMPOSE_SEQ_LINUX(&kp E &kp EQUAL) #else UNICODE_SEQ_LINUX(&kp N2 &kp N0 &kp A &kp C) #endif #elif UNICODE_TARGET_OS == 'M' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_currency_euro COMPOSE_SEQ_MACOS(&kp LA(LS(N2))) #else UNICODE_SEQ_MACOS(&kp N2 &kp N0 &kp A &kp C) #endif #elif UNICODE_TARGET_OS == 'W' #ifdef WORLD_USE_COMPOSE #define WORLD_USE_COMPOSE_FOR_world_currency_euro COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N1 &kp KP_N2 &kp KP_N8) #else UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N0 &kp A &kp C) #endif #endif ) world_currency_euro: world_currency_euro { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_currency_euro_macro>, <&world_currency_euro_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_currency_euro COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_currency_won_macro, /* ₩ */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N2 &kp N0 &kp A &kp N9) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp N2 &kp N0 &kp A &kp N9) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N0 &kp A &kp N9) #endif ) world_currency_won: world_currency_won { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_currency_won_macro>, <&world_currency_won_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_currency_won COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(world_currency_pound_macro, /* £ */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp A &kp N3) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp A &kp N3) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp A &kp N3) #endif ) world_currency_pound: world_currency_pound { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_currency_pound_macro>, <&world_currency_pound_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_world_currency_pound COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; world_currency_generic: world_currency_generic { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_currency_sign>, <&world_currency_crypto>; mods = ; }; // // transforms // world_i_base: world_i_base { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_i_acute>, <&world_i_LCTL>; mods = <(MOD_LCTL|MOD_RCTL|MOD_RSFT)>; }; world_i_LCTL: world_i_LCTL { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_i_diaeresis>, <&world_i_RCTL>; mods = <(MOD_RCTL|MOD_RSFT)>; }; world_i_RCTL: world_i_RCTL { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_i_circumflex>, <&world_i_grave>; mods = <(MOD_RSFT)>; }; world_e_base: world_e_base { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_e_acute>, <&world_e_RALT>; mods = <(MOD_RALT|MOD_LCTL|MOD_RCTL|MOD_RSFT)>; }; world_e_RALT: world_e_RALT { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_e_ae>, <&world_e_LCTL>; mods = <(MOD_LCTL|MOD_RCTL|MOD_RSFT)>; }; world_e_LCTL: world_e_LCTL { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_e_diaeresis>, <&world_e_RCTL>; mods = <(MOD_RCTL|MOD_RSFT)>; }; world_e_RCTL: world_e_RCTL { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_e_circumflex>, <&world_e_grave>; mods = <(MOD_RSFT)>; }; world_a_base: world_a_base { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_a_acute>, <&world_a_LALT>; mods = <(MOD_LALT|MOD_RALT|MOD_LCTL|MOD_RCTL|MOD_RSFT)>; }; world_a_LALT: world_a_LALT { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_a_tilde>, <&world_a_RALT>; mods = <(MOD_RALT|MOD_LCTL|MOD_RCTL|MOD_RSFT)>; }; world_a_RALT: world_a_RALT { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_a_ring>, <&world_a_LCTL>; mods = <(MOD_LCTL|MOD_RCTL|MOD_RSFT)>; }; world_a_LCTL: world_a_LCTL { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_a_diaeresis>, <&world_a_RCTL>; mods = <(MOD_RCTL|MOD_RSFT)>; }; world_a_RCTL: world_a_RCTL { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_a_circumflex>, <&world_a_grave>; mods = <(MOD_RSFT)>; }; world_y_base: world_y_base { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_y_acute>, <&world_y_diaeresis>; mods = <(MOD_LCTL)>; }; world_o_base: world_o_base { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_o_acute>, <&world_o_LALT>; mods = <(MOD_LALT|MOD_RALT|MOD_LCTL|MOD_RCTL|MOD_RSFT)>; }; world_o_LALT: world_o_LALT { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_o_tilde>, <&world_o_RALT>; mods = <(MOD_RALT|MOD_LCTL|MOD_RCTL|MOD_RSFT)>; }; world_o_RALT: world_o_RALT { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_o_slash>, <&world_o_LCTL>; mods = <(MOD_LCTL|MOD_RCTL|MOD_RSFT)>; }; world_o_LCTL: world_o_LCTL { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_o_diaeresis>, <&world_o_RCTL>; mods = <(MOD_RCTL|MOD_RSFT)>; }; world_o_RCTL: world_o_RCTL { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_o_circumflex>, <&world_o_grave>; mods = <(MOD_RSFT)>; }; world_u_base: world_u_base { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_u_acute>, <&world_u_LCTL>; mods = <(MOD_LCTL|MOD_RCTL|MOD_RSFT)>; }; world_u_LCTL: world_u_LCTL { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_u_diaeresis>, <&world_u_RCTL>; mods = <(MOD_RCTL|MOD_RSFT)>; }; world_u_RCTL: world_u_RCTL { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_u_circumflex>, <&world_u_grave>; mods = <(MOD_RSFT)>; }; world_consonants_base: world_consonants_base { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_consonants_cedilla>, <&world_consonants_LCTL>; mods = <(MOD_LCTL|MOD_RCTL)>; }; world_consonants_LCTL: world_consonants_LCTL { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_consonants_ntilde>, <&world_consonants_eszett>; mods = <(MOD_RCTL)>; }; world_quotes_left_base: world_quotes_left_base { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_quotes_left_angle>, <&world_quotes_left_LALT>; mods = <(MOD_LALT|MOD_RALT|MOD_LCTL|MOD_RCTL|MOD_RSFT)>; }; world_quotes_left_LALT: world_quotes_left_LALT { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_quotes_left_corner1>, <&world_quotes_left_RALT>; mods = <(MOD_RALT|MOD_LCTL|MOD_RCTL|MOD_RSFT)>; }; world_quotes_left_RALT: world_quotes_left_RALT { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_quotes_left_corner2>, <&world_quotes_left_LCTL>; mods = <(MOD_LCTL|MOD_RCTL|MOD_RSFT)>; }; world_quotes_left_LCTL: world_quotes_left_LCTL { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_quotes_left_curly>, <&world_quotes_left_RCTL>; mods = <(MOD_RCTL|MOD_RSFT)>; }; world_quotes_left_RCTL: world_quotes_left_RCTL { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_quotes_left_low>, <&world_quotes_left_grave>; mods = <(MOD_RSFT)>; }; world_quotes_right_base: world_quotes_right_base { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_quotes_right_angle>, <&world_quotes_right_LALT>; mods = <(MOD_LALT|MOD_RALT|MOD_LCTL|MOD_RCTL|MOD_RSFT)>; }; world_quotes_right_LALT: world_quotes_right_LALT { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_quotes_right_corner1>, <&world_quotes_right_RALT>; mods = <(MOD_RALT|MOD_LCTL|MOD_RCTL|MOD_RSFT)>; }; world_quotes_right_RALT: world_quotes_right_RALT { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_quotes_right_corner2>, <&world_quotes_right_LCTL>; mods = <(MOD_LCTL|MOD_RCTL|MOD_RSFT)>; }; world_quotes_right_LCTL: world_quotes_right_LCTL { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_quotes_right_curly>, <&world_quotes_right_RCTL>; mods = <(MOD_RCTL|MOD_RSFT)>; }; world_quotes_right_RCTL: world_quotes_right_RCTL { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_quotes_right_low>, <&world_quotes_right_grave>; mods = <(MOD_RSFT)>; }; world_currency_base: world_currency_base { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_currency_dollar>, <&world_currency_LALT>; mods = <(MOD_LALT|MOD_RALT|MOD_LCTL|MOD_RCTL|MOD_RSFT)>; }; world_currency_LALT: world_currency_LALT { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_currency_yen>, <&world_currency_RALT>; mods = <(MOD_RALT|MOD_LCTL|MOD_RCTL|MOD_RSFT)>; }; world_currency_RALT: world_currency_RALT { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_currency_won>, <&world_currency_LCTL>; mods = <(MOD_LCTL|MOD_RCTL|MOD_RSFT)>; }; world_currency_LCTL: world_currency_LCTL { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_currency_euro>, <&world_currency_RCTL>; mods = <(MOD_RCTL|MOD_RSFT)>; }; world_currency_RCTL: world_currency_RCTL { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&world_currency_pound>, <&world_currency_generic>; mods = <(MOD_RSFT)>; }; ////////////////////////////////////////////////////////////////////////// // // Emoji layer - modern age pictograms // ////////////////////////////////////////////////////////////////////////// // // EMOJI_GENDER_SIGN_PRESET defines an Emoji gender sign for use as a // convenient inward-rolling shortcut on the home row of the layer. // #ifndef EMOJI_GENDER_SIGN_PRESET #define EMOJI_GENDER_SIGN_PRESET 'N' // neutral //#define EMOJI_GENDER_SIGN_PRESET 'M' // male //#define EMOJI_GENDER_SIGN_PRESET 'F' // female #endif // // EMOJI_SKIN_TONE_PRESET defines an Emoji skin tone for use as a // convenient inward-rolling shortcut on the home row of the layer. // #ifndef EMOJI_SKIN_TONE_PRESET #define EMOJI_SKIN_TONE_PRESET 'N' // neutral //#define EMOJI_SKIN_TONE_PRESET 'L' // light_skin_tone //#define EMOJI_SKIN_TONE_PRESET 'l' // medium_light_skin_tone //#define EMOJI_SKIN_TONE_PRESET 'M' // medium_skin_tone //#define EMOJI_SKIN_TONE_PRESET 'd' // medium_dark_skin_tone //#define EMOJI_SKIN_TONE_PRESET 'D' // dark_skin_tone #endif // // EMOJI_HAIR_STYLE_PRESET defines an Emoji hair style for use as a // convenient inward-rolling shortcut on the home row of the layer. // #ifndef EMOJI_HAIR_STYLE_PRESET #define EMOJI_HAIR_STYLE_PRESET 'N' // neutral //#define EMOJI_HAIR_STYLE_PRESET 'B' // bald //#define EMOJI_HAIR_STYLE_PRESET 'R' // red_hair //#define EMOJI_HAIR_STYLE_PRESET 'C' // curly_hair //#define EMOJI_HAIR_STYLE_PRESET 'W' // white_hair #endif // // NOTE: edit the emoji.yaml file and run `rake` to generate this: // // // codepoints // UNICODE(emoji_zwj_macro, /* ‍ */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N2 &kp N0 &kp N0 &kp D) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp N2 &kp N0 &kp N0 &kp D) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N0 &kp N0 &kp D) #endif ) emoji_zwj: emoji_zwj { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_zwj_macro>, <&emoji_zwj_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_zwj COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_male_sign_macro, /* ♂️ */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N2 &kp N6 &kp N4 &kp N2), <¯o_wait_time UNICODE_SEQ_DELAY>, UNICODE_SEQ_LINUX(&kp F &kp E &kp N0 &kp F) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp N2 &kp N6 &kp N4 &kp N2), <¯o_wait_time UNICODE_SEQ_DELAY>, UNICODE_SEQ_MACOS(&kp F &kp E &kp N0 &kp F) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N6 &kp N4 &kp N2), <¯o_wait_time UNICODE_SEQ_DELAY>, UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp E &kp N0 &kp F) #endif ) emoji_male_sign: emoji_male_sign { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_male_sign_macro>, <&emoji_male_sign_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_male_sign COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_female_sign_macro, /* ♀️ */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N2 &kp N6 &kp N4 &kp N0), <¯o_wait_time UNICODE_SEQ_DELAY>, UNICODE_SEQ_LINUX(&kp F &kp E &kp N0 &kp F) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp N2 &kp N6 &kp N4 &kp N0), <¯o_wait_time UNICODE_SEQ_DELAY>, UNICODE_SEQ_MACOS(&kp F &kp E &kp N0 &kp F) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N6 &kp N4 &kp N0), <¯o_wait_time UNICODE_SEQ_DELAY>, UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp E &kp N0 &kp F) #endif ) emoji_female_sign: emoji_female_sign { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_female_sign_macro>, <&emoji_female_sign_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_female_sign COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_right_arrow_macro, /* ➡️ */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N2 &kp N7 &kp A &kp N1), <¯o_wait_time UNICODE_SEQ_DELAY>, UNICODE_SEQ_LINUX(&kp F &kp E &kp N0 &kp F) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp N2 &kp N7 &kp A &kp N1), <¯o_wait_time UNICODE_SEQ_DELAY>, UNICODE_SEQ_MACOS(&kp F &kp E &kp N0 &kp F) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N7 &kp A &kp N1), <¯o_wait_time UNICODE_SEQ_DELAY>, UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp E &kp N0 &kp F) #endif ) emoji_right_arrow: emoji_right_arrow { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_right_arrow_macro>, <&emoji_right_arrow_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_right_arrow COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_left_arrow_macro, /* ⬅️ */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N2 &kp B &kp N0 &kp N5), <¯o_wait_time UNICODE_SEQ_DELAY>, UNICODE_SEQ_LINUX(&kp F &kp E &kp N0 &kp F) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp N2 &kp B &kp N0 &kp N5), <¯o_wait_time UNICODE_SEQ_DELAY>, UNICODE_SEQ_MACOS(&kp F &kp E &kp N0 &kp F) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp B &kp N0 &kp N5), <¯o_wait_time UNICODE_SEQ_DELAY>, UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp E &kp N0 &kp F) #endif ) emoji_left_arrow: emoji_left_arrow { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_left_arrow_macro>, <&emoji_left_arrow_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_left_arrow COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_rainbow_macro, /* 🌈 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp N0 &kp N8) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp N0 &kp N8) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp N0 &kp N8) #endif ) emoji_rainbow: emoji_rainbow { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_rainbow_macro>, <&emoji_rainbow_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_rainbow COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_cloudy_macro, /* ️☁️ */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp F &kp E &kp N0 &kp F), <¯o_wait_time UNICODE_SEQ_DELAY>, UNICODE_SEQ_LINUX(&kp N2 &kp N6 &kp N0 &kp N1), UNICODE_SEQ_LINUX(&kp F &kp E &kp N0 &kp F) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp F &kp E &kp N0 &kp F), <¯o_wait_time UNICODE_SEQ_DELAY>, UNICODE_SEQ_MACOS(&kp N2 &kp N6 &kp N0 &kp N1), UNICODE_SEQ_MACOS(&kp F &kp E &kp N0 &kp F) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp E &kp N0 &kp F), <¯o_wait_time UNICODE_SEQ_DELAY>, UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N6 &kp N0 &kp N1), UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp E &kp N0 &kp F) #endif ) emoji_cloudy: emoji_cloudy { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_cloudy_macro>, <&emoji_cloudy_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_cloudy COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_mostly_cloudy_macro, /* 🌥 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp N2 &kp N5) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp N2 &kp N5) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp N2 &kp N5) #endif ) emoji_mostly_cloudy: emoji_mostly_cloudy { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_mostly_cloudy_macro>, <&emoji_mostly_cloudy_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_mostly_cloudy COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_partly_cloudy_macro, /* ⛅ */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N2 &kp N6 &kp C &kp N5) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp N2 &kp N6 &kp C &kp N5) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N6 &kp C &kp N5) #endif ) emoji_partly_cloudy: emoji_partly_cloudy { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_partly_cloudy_macro>, <&emoji_partly_cloudy_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_partly_cloudy COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_mostly_sunny_macro, /* ️🌤️ */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp F &kp E &kp N0 &kp F), <¯o_wait_time UNICODE_SEQ_DELAY>, UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp N2 &kp N4), UNICODE_SEQ_LINUX(&kp F &kp E &kp N0 &kp F) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp F &kp E &kp N0 &kp F), <¯o_wait_time UNICODE_SEQ_DELAY>, UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp N2 &kp N4), UNICODE_SEQ_MACOS(&kp F &kp E &kp N0 &kp F) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp E &kp N0 &kp F), <¯o_wait_time UNICODE_SEQ_DELAY>, UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp N2 &kp N4), UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp E &kp N0 &kp F) #endif ) emoji_mostly_sunny: emoji_mostly_sunny { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_mostly_sunny_macro>, <&emoji_mostly_sunny_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_mostly_sunny COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_sunny_macro, /* ☀️ */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N2 &kp N6 &kp N0 &kp N0), <¯o_wait_time UNICODE_SEQ_DELAY>, UNICODE_SEQ_LINUX(&kp F &kp E &kp N0 &kp F) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp N2 &kp N6 &kp N0 &kp N0), <¯o_wait_time UNICODE_SEQ_DELAY>, UNICODE_SEQ_MACOS(&kp F &kp E &kp N0 &kp F) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N6 &kp N0 &kp N0), <¯o_wait_time UNICODE_SEQ_DELAY>, UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp E &kp N0 &kp F) #endif ) emoji_sunny: emoji_sunny { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_sunny_macro>, <&emoji_sunny_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_sunny COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_sunrise_macro, /* 🌅 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp N0 &kp N5) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp N0 &kp N5) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp N0 &kp N5) #endif ) emoji_sunrise: emoji_sunrise { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_sunrise_macro>, <&emoji_sunrise_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_sunrise COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_sunrise_mountains_macro, /* 🌄 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp N0 &kp N4) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp N0 &kp N4) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp N0 &kp N4) #endif ) emoji_sunrise_mountains: emoji_sunrise_mountains { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_sunrise_mountains_macro>, <&emoji_sunrise_mountains_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_sunrise_mountains COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_cityscape_macro, /* ️🏙️ */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp F &kp E &kp N0 &kp F), <¯o_wait_time UNICODE_SEQ_DELAY>, UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp D &kp N9), UNICODE_SEQ_LINUX(&kp F &kp E &kp N0 &kp F) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp F &kp E &kp N0 &kp F), <¯o_wait_time UNICODE_SEQ_DELAY>, UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp D &kp N9), UNICODE_SEQ_MACOS(&kp F &kp E &kp N0 &kp F) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp E &kp N0 &kp F), <¯o_wait_time UNICODE_SEQ_DELAY>, UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp D &kp N9), UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp E &kp N0 &kp F) #endif ) emoji_cityscape: emoji_cityscape { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_cityscape_macro>, <&emoji_cityscape_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_cityscape COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_cityscape_dusk_macro, /* ️🌇 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp F &kp E &kp N0 &kp F), <¯o_wait_time UNICODE_SEQ_DELAY>, UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp N0 &kp N7) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp F &kp E &kp N0 &kp F), <¯o_wait_time UNICODE_SEQ_DELAY>, UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp N0 &kp N7) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp E &kp N0 &kp F), <¯o_wait_time UNICODE_SEQ_DELAY>, UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp N0 &kp N7) #endif ) emoji_cityscape_dusk: emoji_cityscape_dusk { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_cityscape_dusk_macro>, <&emoji_cityscape_dusk_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_cityscape_dusk COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_cityscape_night_macro, /* 🌃 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp N0 &kp N3) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp N0 &kp N3) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp N0 &kp N3) #endif ) emoji_cityscape_night: emoji_cityscape_night { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_cityscape_night_macro>, <&emoji_cityscape_night_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_cityscape_night COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_light_skin_tone_macro, /* 🏻 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp F &kp B) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp F &kp B) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp F &kp B) #endif ) emoji_light_skin_tone: emoji_light_skin_tone { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_light_skin_tone_macro>, <&emoji_light_skin_tone_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_light_skin_tone COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_medium_light_skin_tone_macro, /* 🏼 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp F &kp C) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp F &kp C) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp F &kp C) #endif ) emoji_medium_light_skin_tone: emoji_medium_light_skin_tone { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_medium_light_skin_tone_macro>, <&emoji_medium_light_skin_tone_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_medium_light_skin_tone COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_medium_skin_tone_macro, /* 🏽 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp F &kp D) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp F &kp D) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp F &kp D) #endif ) emoji_medium_skin_tone: emoji_medium_skin_tone { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_medium_skin_tone_macro>, <&emoji_medium_skin_tone_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_medium_skin_tone COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_medium_dark_skin_tone_macro, /* 🏾 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp F &kp E) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp F &kp E) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp F &kp E) #endif ) emoji_medium_dark_skin_tone: emoji_medium_dark_skin_tone { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_medium_dark_skin_tone_macro>, <&emoji_medium_dark_skin_tone_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_medium_dark_skin_tone COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_dark_skin_tone_macro, /* 🏿 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp F &kp F) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp F &kp F) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp F &kp F) #endif ) emoji_dark_skin_tone: emoji_dark_skin_tone { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_dark_skin_tone_macro>, <&emoji_dark_skin_tone_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_dark_skin_tone COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_baby_bottle_macro, /* 🍼 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp N7 &kp C) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp N7 &kp C) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp N7 &kp C) #endif ) emoji_baby_bottle: emoji_baby_bottle { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_baby_bottle_macro>, <&emoji_baby_bottle_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_baby_bottle COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_baby_macro, /* 👶 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N4 &kp N7 &kp N6) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp C &kp N7 &kp N6) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N4 &kp N7 &kp N6) #endif ) emoji_baby: emoji_baby { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_baby_macro>, <&emoji_baby_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_baby COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_boy_macro, /* 👦 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N4 &kp N6 &kp N6) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp C &kp N6 &kp N6) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N4 &kp N6 &kp N6) #endif ) emoji_boy: emoji_boy { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_boy_macro>, <&emoji_boy_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_boy COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_girl_macro, /* 👧 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N4 &kp N6 &kp N7) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp C &kp N6 &kp N7) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N4 &kp N6 &kp N7) #endif ) emoji_girl: emoji_girl { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_girl_macro>, <&emoji_girl_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_girl COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_man_macro, /* 👨 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N4 &kp N6 &kp N8) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp C &kp N6 &kp N8) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N4 &kp N6 &kp N8) #endif ) emoji_man: emoji_man { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_man_macro>, <&emoji_man_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_man COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_woman_macro, /* 👩 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N4 &kp N6 &kp N9) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp C &kp N6 &kp N9) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N4 &kp N6 &kp N9) #endif ) emoji_woman: emoji_woman { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_woman_macro>, <&emoji_woman_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_woman COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_old_man_macro, /* 👴 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N4 &kp N7 &kp N4) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp C &kp N7 &kp N4) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N4 &kp N7 &kp N4) #endif ) emoji_old_man: emoji_old_man { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_old_man_macro>, <&emoji_old_man_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_old_man COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_old_woman_macro, /* 👵 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N4 &kp N7 &kp N5) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp C &kp N7 &kp N5) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N4 &kp N7 &kp N5) #endif ) emoji_old_woman: emoji_old_woman { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_old_woman_macro>, <&emoji_old_woman_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_old_woman COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_white_hair_macro, /* 🦳 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N9 &kp B &kp N3) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp E &kp D &kp D &kp B &kp N3) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N9 &kp B &kp N3) #endif ) emoji_white_hair: emoji_white_hair { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_white_hair_macro>, <&emoji_white_hair_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_white_hair COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_curly_hair_macro, /* 🦱 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N9 &kp B &kp N1) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp E &kp D &kp D &kp B &kp N1) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N9 &kp B &kp N1) #endif ) emoji_curly_hair: emoji_curly_hair { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_curly_hair_macro>, <&emoji_curly_hair_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_curly_hair COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_red_hair_macro, /* 🦰 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N9 &kp B &kp N0) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp E &kp D &kp D &kp B &kp N0) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N9 &kp B &kp N0) #endif ) emoji_red_hair: emoji_red_hair { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_red_hair_macro>, <&emoji_red_hair_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_red_hair COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_bald_macro, /* 🦲 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N9 &kp B &kp N2) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp E &kp D &kp D &kp B &kp N2) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N9 &kp B &kp N2) #endif ) emoji_bald: emoji_bald { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_bald_macro>, <&emoji_bald_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_bald COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_new_moon_macro, /* 🌑 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp N1 &kp N1) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp N1 &kp N1) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp N1 &kp N1) #endif ) emoji_new_moon: emoji_new_moon { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_new_moon_macro>, <&emoji_new_moon_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_new_moon COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_waxing_crescent_moon_macro, /* 🌒 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp N1 &kp N2) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp N1 &kp N2) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp N1 &kp N2) #endif ) emoji_waxing_crescent_moon: emoji_waxing_crescent_moon { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_waxing_crescent_moon_macro>, <&emoji_waxing_crescent_moon_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_waxing_crescent_moon COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_first_quarter_moon_macro, /* 🌓 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp N1 &kp N3) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp N1 &kp N3) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp N1 &kp N3) #endif ) emoji_first_quarter_moon: emoji_first_quarter_moon { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_first_quarter_moon_macro>, <&emoji_first_quarter_moon_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_first_quarter_moon COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_waxing_gibbous_moon_macro, /* 🌔 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp N1 &kp N4) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp N1 &kp N4) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp N1 &kp N4) #endif ) emoji_waxing_gibbous_moon: emoji_waxing_gibbous_moon { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_waxing_gibbous_moon_macro>, <&emoji_waxing_gibbous_moon_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_waxing_gibbous_moon COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_full_moon_macro, /* 🌕 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp N1 &kp N5) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp N1 &kp N5) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp N1 &kp N5) #endif ) emoji_full_moon: emoji_full_moon { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_full_moon_macro>, <&emoji_full_moon_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_full_moon COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_waning_gibbous_moon_macro, /* 🌖 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp N1 &kp N6) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp N1 &kp N6) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp N1 &kp N6) #endif ) emoji_waning_gibbous_moon: emoji_waning_gibbous_moon { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_waning_gibbous_moon_macro>, <&emoji_waning_gibbous_moon_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_waning_gibbous_moon COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_last_quarter_moon_macro, /* 🌗 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp N1 &kp N7) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp N1 &kp N7) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp N1 &kp N7) #endif ) emoji_last_quarter_moon: emoji_last_quarter_moon { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_last_quarter_moon_macro>, <&emoji_last_quarter_moon_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_last_quarter_moon COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_waning_crescent_moon_macro, /* 🌘 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp N1 &kp N8) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp N1 &kp N8) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp N1 &kp N8) #endif ) emoji_waning_crescent_moon: emoji_waning_crescent_moon { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_waning_crescent_moon_macro>, <&emoji_waning_crescent_moon_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_waning_crescent_moon COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_tada_macro, /* 🎉 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp N8 &kp N9) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp N8 &kp N9) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp N8 &kp N9) #endif ) emoji_tada: emoji_tada { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_tada_macro>, <&emoji_tada_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_tada COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_heart_macro, /* ️❤️ */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp F &kp E &kp N0 &kp F), <¯o_wait_time UNICODE_SEQ_DELAY>, UNICODE_SEQ_LINUX(&kp N2 &kp N7 &kp N6 &kp N4), UNICODE_SEQ_LINUX(&kp F &kp E &kp N0 &kp F) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp F &kp E &kp N0 &kp F), <¯o_wait_time UNICODE_SEQ_DELAY>, UNICODE_SEQ_MACOS(&kp N2 &kp N7 &kp N6 &kp N4), UNICODE_SEQ_MACOS(&kp F &kp E &kp N0 &kp F) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp E &kp N0 &kp F), <¯o_wait_time UNICODE_SEQ_DELAY>, UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N7 &kp N6 &kp N4), UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp E &kp N0 &kp F) #endif ) emoji_heart: emoji_heart { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_heart_macro>, <&emoji_heart_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_heart COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_fire_macro, /* 🔥 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N5 &kp N2 &kp N5) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp D &kp N2 &kp N5) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N5 &kp N2 &kp N5) #endif ) emoji_fire: emoji_fire { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_fire_macro>, <&emoji_fire_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_fire COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_muscle_macro, /* 💪 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N4 &kp A &kp A) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp C &kp A &kp A) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N4 &kp A &kp A) #endif ) emoji_muscle: emoji_muscle { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_muscle_macro>, <&emoji_muscle_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_muscle COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_person_climbing_macro, /* 🧗 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N9 &kp D &kp N7) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp E &kp D &kp D &kp D &kp N7) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N9 &kp D &kp N7) #endif ) emoji_person_climbing: emoji_person_climbing { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_person_climbing_macro>, <&emoji_person_climbing_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_person_climbing COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_lab_coat_macro, /* 🥼 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N9 &kp N7 &kp C) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp E &kp D &kp D &kp N7 &kp C) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N9 &kp N7 &kp C) #endif ) emoji_lab_coat: emoji_lab_coat { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_lab_coat_macro>, <&emoji_lab_coat_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_lab_coat COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_rocket_macro, /* 🚀 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N8 &kp N0) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N8 &kp N0) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N8 &kp N0) #endif ) emoji_rocket: emoji_rocket { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_rocket_macro>, <&emoji_rocket_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_rocket COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_joy_macro, /* 😂 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N0 &kp N2) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N0 &kp N2) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N0 &kp N2) #endif ) emoji_joy: emoji_joy { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_joy_macro>, <&emoji_joy_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_joy COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_rofl_macro, /* 🤣 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N9 &kp N2 &kp N3) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp E &kp D &kp D &kp N2 &kp N3) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N9 &kp N2 &kp N3) #endif ) emoji_rofl: emoji_rofl { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_rofl_macro>, <&emoji_rofl_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_rofl COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_star_struck_macro, /* 🤩 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N9 &kp N2 &kp N9) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp E &kp D &kp D &kp N2 &kp N9) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N9 &kp N2 &kp N9) #endif ) emoji_star_struck: emoji_star_struck { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_star_struck_macro>, <&emoji_star_struck_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_star_struck COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_love_struck_macro, /* 😍 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N0 &kp D) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N0 &kp D) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N0 &kp D) #endif ) emoji_love_struck: emoji_love_struck { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_love_struck_macro>, <&emoji_love_struck_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_love_struck COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_saluting_face_macro, /* 🫡 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp A &kp E &kp N1) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp E &kp D &kp E &kp E &kp N1) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp A &kp E &kp N1) #endif ) emoji_saluting_face: emoji_saluting_face { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_saluting_face_macro>, <&emoji_saluting_face_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_saluting_face COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_shocked_face_macro, /* 🤯 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N9 &kp N2 &kp F) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp E &kp D &kp D &kp N2 &kp F) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N9 &kp N2 &kp F) #endif ) emoji_shocked_face: emoji_shocked_face { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_shocked_face_macro>, <&emoji_shocked_face_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_shocked_face COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_cold_sweat_macro, /* 😰 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N3 &kp N0) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N3 &kp N0) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N3 &kp N0) #endif ) emoji_cold_sweat: emoji_cold_sweat { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_cold_sweat_macro>, <&emoji_cold_sweat_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_cold_sweat COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_monocle_face_macro, /* 🧐 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N9 &kp D &kp N0) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp E &kp D &kp D &kp D &kp N0) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N9 &kp D &kp N0) #endif ) emoji_monocle_face: emoji_monocle_face { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_monocle_face_macro>, <&emoji_monocle_face_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_monocle_face COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_snap_fingers_macro, /* 🫰 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp A &kp F &kp N0) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp E &kp D &kp E &kp F &kp N0) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp A &kp F &kp N0) #endif ) emoji_snap_fingers: emoji_snap_fingers { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_snap_fingers_macro>, <&emoji_snap_fingers_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_snap_fingers COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_ok_hand_macro, /* 👌 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N4 &kp N4 &kp C) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp C &kp N4 &kp C) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N4 &kp N4 &kp C) #endif ) emoji_ok_hand: emoji_ok_hand { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_ok_hand_macro>, <&emoji_ok_hand_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_ok_hand COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_pray_macro, /* 🙏 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N4 &kp F) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N4 &kp F) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N4 &kp F) #endif ) emoji_pray: emoji_pray { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_pray_macro>, <&emoji_pray_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_pray COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_sweat_smile_macro, /* 😅 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N0 &kp N5) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N0 &kp N5) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N0 &kp N5) #endif ) emoji_sweat_smile: emoji_sweat_smile { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_sweat_smile_macro>, <&emoji_sweat_smile_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_sweat_smile COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_disappointed_macro, /* 😞 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N1 &kp E) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N1 &kp E) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N1 &kp E) #endif ) emoji_disappointed: emoji_disappointed { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_disappointed_macro>, <&emoji_disappointed_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_disappointed COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_thinking_macro, /* 🤔 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N9 &kp N1 &kp N4) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp E &kp D &kp D &kp N1 &kp N4) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N9 &kp N1 &kp N4) #endif ) emoji_thinking: emoji_thinking { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_thinking_macro>, <&emoji_thinking_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_thinking COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_person_tipping_hand_macro, /* 💁 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N4 &kp N8 &kp N1) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp C &kp N8 &kp N1) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N4 &kp N8 &kp N1) #endif ) emoji_person_tipping_hand: emoji_person_tipping_hand { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_person_tipping_hand_macro>, <&emoji_person_tipping_hand_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_person_tipping_hand COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_person_gesturing_ok_macro, /* 🙆 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N4 &kp N6) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N4 &kp N6) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N4 &kp N6) #endif ) emoji_person_gesturing_ok: emoji_person_gesturing_ok { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_person_gesturing_ok_macro>, <&emoji_person_gesturing_ok_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_person_gesturing_ok COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_person_bowing_macro, /* 🙇 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N4 &kp N7) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N4 &kp N7) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N4 &kp N7) #endif ) emoji_person_bowing: emoji_person_bowing { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_person_bowing_macro>, <&emoji_person_bowing_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_person_bowing COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_person_raising_hand_macro, /* 🙋 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N4 &kp B) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N4 &kp B) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N4 &kp B) #endif ) emoji_person_raising_hand: emoji_person_raising_hand { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_person_raising_hand_macro>, <&emoji_person_raising_hand_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_person_raising_hand COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_person_gesturing_no_macro, /* 🙅 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N4 &kp N5) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N4 &kp N5) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N4 &kp N5) #endif ) emoji_person_gesturing_no: emoji_person_gesturing_no { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_person_gesturing_no_macro>, <&emoji_person_gesturing_no_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_person_gesturing_no COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_person_shrugging_macro, /* 🤷 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N9 &kp N3 &kp N7) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp E &kp D &kp D &kp N3 &kp N7) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N9 &kp N3 &kp N7) #endif ) emoji_person_shrugging: emoji_person_shrugging { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_person_shrugging_macro>, <&emoji_person_shrugging_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_person_shrugging COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_checkoff_macro, /* ✅ */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N2 &kp N7 &kp N0 &kp N5) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp N2 &kp N7 &kp N0 &kp N5) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N7 &kp N0 &kp N5) #endif ) emoji_checkoff: emoji_checkoff { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_checkoff_macro>, <&emoji_checkoff_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_checkoff COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_100_macro, /* 💯 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N4 &kp A &kp F) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp C &kp A &kp F) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N4 &kp A &kp F) #endif ) emoji_100: emoji_100 { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_100_macro>, <&emoji_100_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_100 COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_warning_macro, /* ⚠️ */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N2 &kp N6 &kp A &kp N0), <¯o_wait_time UNICODE_SEQ_DELAY>, UNICODE_SEQ_LINUX(&kp F &kp E &kp N0 &kp F) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp N2 &kp N6 &kp A &kp N0), <¯o_wait_time UNICODE_SEQ_DELAY>, UNICODE_SEQ_MACOS(&kp F &kp E &kp N0 &kp F) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N6 &kp A &kp N0), <¯o_wait_time UNICODE_SEQ_DELAY>, UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp E &kp N0 &kp F) #endif ) emoji_warning: emoji_warning { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_warning_macro>, <&emoji_warning_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_warning COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_x_macro, /* ❌ */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N2 &kp N7 &kp N4 &kp C) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp N2 &kp N7 &kp N4 &kp C) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N7 &kp N4 &kp C) #endif ) emoji_x: emoji_x { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_x_macro>, <&emoji_x_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_x COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_question_macro, /* ❓ */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N2 &kp N7 &kp N5 &kp N3) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp N2 &kp N7 &kp N5 &kp N3) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N7 &kp N5 &kp N3) #endif ) emoji_question: emoji_question { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_question_macro>, <&emoji_question_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_question COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_astronaut_macro, /* 🧑‍🚀 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N9 &kp D &kp N1), <¯o_wait_time UNICODE_SEQ_DELAY>, UNICODE_SEQ_LINUX(&kp N2 &kp N0 &kp N0 &kp D), UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N8 &kp N0) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp E &kp D &kp D &kp D &kp N1), <¯o_wait_time UNICODE_SEQ_DELAY>, UNICODE_SEQ_MACOS(&kp N2 &kp N0 &kp N0 &kp D), UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N8 &kp N0) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N9 &kp D &kp N1), <¯o_wait_time UNICODE_SEQ_DELAY>, UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N0 &kp N0 &kp D), UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N8 &kp N0) #endif ) emoji_astronaut: emoji_astronaut { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_astronaut_macro>, <&emoji_astronaut_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_astronaut COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_nerd_macro, /* 🤓 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N9 &kp N1 &kp N3) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp E &kp D &kp D &kp N1 &kp N3) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N9 &kp N1 &kp N3) #endif ) emoji_nerd: emoji_nerd { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_nerd_macro>, <&emoji_nerd_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_nerd COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_sparkles_macro, /* ✨ */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N2 &kp N7 &kp N2 &kp N8) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp N2 &kp N7 &kp N2 &kp N8) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N7 &kp N2 &kp N8) #endif ) emoji_sparkles: emoji_sparkles { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_sparkles_macro>, <&emoji_sparkles_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_sparkles COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_raised_hands_macro, /* 🙌 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N4 &kp C) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N4 &kp C) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N4 &kp C) #endif ) emoji_raised_hands: emoji_raised_hands { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_raised_hands_macro>, <&emoji_raised_hands_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_raised_hands COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_point_up_macro, /* ☝️ */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N2 &kp N6 &kp N1 &kp D), <¯o_wait_time UNICODE_SEQ_DELAY>, UNICODE_SEQ_LINUX(&kp F &kp E &kp N0 &kp F) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp N2 &kp N6 &kp N1 &kp D), <¯o_wait_time UNICODE_SEQ_DELAY>, UNICODE_SEQ_MACOS(&kp F &kp E &kp N0 &kp F) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N6 &kp N1 &kp D), <¯o_wait_time UNICODE_SEQ_DELAY>, UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp E &kp N0 &kp F) #endif ) emoji_point_up: emoji_point_up { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_point_up_macro>, <&emoji_point_up_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_point_up COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_thumbs_up_macro, /* 👍 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N4 &kp N4 &kp D) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp C &kp N4 &kp D) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N4 &kp N4 &kp D) #endif ) emoji_thumbs_up: emoji_thumbs_up { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_thumbs_up_macro>, <&emoji_thumbs_up_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_thumbs_up COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; // // characters // emoji_moon_complete: emoji_moon_complete { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_new_moon>, <&emoji_full_moon>; mods = ; }; emoji_moon_gibbous: emoji_moon_gibbous { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_waning_gibbous_moon>, <&emoji_waxing_gibbous_moon>; mods = ; }; emoji_moon_quarter: emoji_moon_quarter { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_last_quarter_moon>, <&emoji_first_quarter_moon>; mods = ; }; emoji_moon_crescent: emoji_moon_crescent { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_waning_crescent_moon>, <&emoji_waxing_crescent_moon>; mods = ; }; UNICODE(emoji_moon_stars_magic_macro, /* 🪄 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp A &kp N8 &kp N4) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp E &kp D &kp E &kp N8 &kp N4) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp A &kp N8 &kp N4) #endif ) emoji_moon_stars_magic: emoji_moon_stars_magic { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_moon_stars_magic_macro>, <&emoji_moon_stars_magic_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_moon_stars_magic COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; emoji_moon_stars: emoji_moon_stars { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_sparkles>, <&emoji_moon_stars_magic>; mods = ; }; UNICODE(emoji_face_smile_up_macro, /* 🙂 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N4 &kp N2) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N4 &kp N2) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N4 &kp N2) #endif ) emoji_face_smile_up: emoji_face_smile_up { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_face_smile_up_macro>, <&emoji_face_smile_up_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_face_smile_up COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_face_smile_down_macro, /* 🙃 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N4 &kp N3) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N4 &kp N3) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N4 &kp N3) #endif ) emoji_face_smile_down: emoji_face_smile_down { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_face_smile_down_macro>, <&emoji_face_smile_down_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_face_smile_down COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; emoji_face_smile: emoji_face_smile { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_face_smile_up>, <&emoji_face_smile_down>; mods = ; }; emoji_face_laugh: emoji_face_laugh { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_joy>, <&emoji_rofl>; mods = ; }; emoji_face_eyes: emoji_face_eyes { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_star_struck>, <&emoji_love_struck>; mods = ; }; UNICODE(emoji_face_joke_wink_macro, /* 😉 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N0 &kp N9) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N0 &kp N9) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N0 &kp N9) #endif ) emoji_face_joke_wink: emoji_face_joke_wink { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_face_joke_wink_macro>, <&emoji_face_joke_wink_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_face_joke_wink COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_face_joke_tounge_macro, /* 😜 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N1 &kp C) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N1 &kp C) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N1 &kp C) #endif ) emoji_face_joke_tounge: emoji_face_joke_tounge { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_face_joke_tounge_macro>, <&emoji_face_joke_tounge_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_face_joke_tounge COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; emoji_face_joke: emoji_face_joke { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_face_joke_wink>, <&emoji_face_joke_tounge>; mods = ; }; UNICODE(emoji_face_fear_scared_macro, /* 😨 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N2 &kp N8) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N2 &kp N8) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N2 &kp N8) #endif ) emoji_face_fear_scared: emoji_face_fear_scared { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_face_fear_scared_macro>, <&emoji_face_fear_scared_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_face_fear_scared COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; UNICODE(emoji_face_fear_scream_macro, /* 😱 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N3 &kp N1) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N3 &kp N1) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N3 &kp N1) #endif ) emoji_face_fear_scream: emoji_face_fear_scream { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_face_fear_scream_macro>, <&emoji_face_fear_scream_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_face_fear_scream COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; emoji_face_fear: emoji_face_fear { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_face_fear_scared>, <&emoji_face_fear_scream>; mods = ; }; UNICODE(emoji_face_surprise_dizzy_macro, /* 😵 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N3 &kp N5) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N3 &kp N5) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N3 &kp N5) #endif ) emoji_face_surprise_dizzy: emoji_face_surprise_dizzy { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_face_surprise_dizzy_macro>, <&emoji_face_surprise_dizzy_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_face_surprise_dizzy COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; emoji_face_surprise: emoji_face_surprise { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_shocked_face>, <&emoji_face_surprise_dizzy>; mods = ; }; UNICODE(emoji_gesture_attention_wave_macro, /* 👋 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N4 &kp N4 &kp B) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp C &kp N4 &kp B) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N4 &kp N4 &kp B) #endif ) emoji_gesture_attention_wave: emoji_gesture_attention_wave { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_gesture_attention_wave_macro>, <&emoji_gesture_attention_wave_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_gesture_attention_wave COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; emoji_gesture_attention: emoji_gesture_attention { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_snap_fingers>, <&emoji_gesture_attention_wave>; mods = ; }; UNICODE(emoji_gesture_approval_cool_macro, /* 😎 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N0 &kp E) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N0 &kp E) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N0 &kp E) #endif ) emoji_gesture_approval_cool: emoji_gesture_approval_cool { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_gesture_approval_cool_macro>, <&emoji_gesture_approval_cool_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_gesture_approval_cool COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; emoji_gesture_approval: emoji_gesture_approval { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_ok_hand>, <&emoji_gesture_approval_cool>; mods = ; }; emoji_gesture_gratitude: emoji_gesture_gratitude { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_pray>, <&emoji_saluting_face>; mods = ; }; emoji_gesture_anxiety: emoji_gesture_anxiety { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_sweat_smile>, <&emoji_cold_sweat>; mods = ; }; UNICODE(emoji_gesture_despair_cry_macro, /* 😢 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N2 &kp N2) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N2 &kp N2) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N2 &kp N2) #endif ) emoji_gesture_despair_cry: emoji_gesture_despair_cry { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_gesture_despair_cry_macro>, <&emoji_gesture_despair_cry_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_gesture_despair_cry COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; emoji_gesture_despair: emoji_gesture_despair { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_disappointed>, <&emoji_gesture_despair_cry>; mods = ; }; emoji_gesture_curious: emoji_gesture_curious { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_thinking>, <&emoji_monocle_face>; mods = ; }; UNICODE(emoji_gesture_point_you_macro, /* 🫵 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp A &kp F &kp N5) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp E &kp D &kp E &kp F &kp N5) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp A &kp F &kp N5) #endif ) emoji_gesture_point_you: emoji_gesture_point_you { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_gesture_point_you_macro>, <&emoji_gesture_point_you_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_gesture_point_you COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; emoji_gesture_point: emoji_gesture_point { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_point_up>, <&emoji_gesture_point_you>; mods = ; }; UNICODE(emoji_gesture_thumbs_down_macro, /* 👎 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N4 &kp N4 &kp E) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp C &kp N4 &kp E) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N4 &kp N4 &kp E) #endif ) emoji_gesture_thumbs_down: emoji_gesture_thumbs_down { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_gesture_thumbs_down_macro>, <&emoji_gesture_thumbs_down_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_gesture_thumbs_down COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; emoji_gesture_thumbs: emoji_gesture_thumbs { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_thumbs_up>, <&emoji_gesture_thumbs_down>; mods = ; }; UNICODE(emoji_gesture_hands_clap_macro, /* 👏 */ #if UNICODE_TARGET_OS == 'L' UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N4 &kp N4 &kp F) #elif UNICODE_TARGET_OS == 'M' UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp C &kp N4 &kp F) #elif UNICODE_TARGET_OS == 'W' UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N4 &kp N4 &kp F) #endif ) emoji_gesture_hands_clap: emoji_gesture_hands_clap { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_gesture_hands_clap_macro>, <&emoji_gesture_hands_clap_macro>; mods = <(~( #ifdef WORLD_USE_COMPOSE_FOR_emoji_gesture_hands_clap COMPOSE_MORPH_MODS #else UNICODE_MORPH_MODS #endif ))>; }; emoji_gesture_hands: emoji_gesture_hands { compatible = "zmk,behavior-mod-morph"; #binding-cells = <0>; bindings = <&emoji_raised_hands>, <&emoji_gesture_hands_clap>; mods = ; }; }; /*HACK*/}; #if EMOJI_GENDER_SIGN_PRESET == 'N' emoji_gender_sign_preset: &none {}; #elif EMOJI_GENDER_SIGN_PRESET == 'M' emoji_gender_sign_preset: &emoji_male_sign {}; #elif EMOJI_GENDER_SIGN_PRESET == 'F' emoji_gender_sign_preset: &emoji_female_sign {}; #endif #if EMOJI_SKIN_TONE_PRESET == 'N' emoji_skin_tone_preset: &none {}; #elif EMOJI_SKIN_TONE_PRESET == 'L' emoji_skin_tone_preset: &emoji_light_skin_tone {}; #elif EMOJI_SKIN_TONE_PRESET == 'l' emoji_skin_tone_preset: &emoji_medium_light_skin_tone {}; #elif EMOJI_SKIN_TONE_PRESET == 'M' emoji_skin_tone_preset: &emoji_medium_skin_tone {}; #elif EMOJI_SKIN_TONE_PRESET == 'd' emoji_skin_tone_preset: &emoji_medium_dark_skin_tone {}; #elif EMOJI_SKIN_TONE_PRESET == 'D' emoji_skin_tone_preset: &emoji_dark_skin_tone {}; #endif #if EMOJI_HAIR_STYLE_PRESET == 'N' emoji_hair_style_preset: &none {}; #elif EMOJI_HAIR_STYLE_PRESET == 'B' emoji_hair_style_preset: &emoji_bald {}; #elif EMOJI_HAIR_STYLE_PRESET == 'R' emoji_hair_style_preset: &emoji_red_hair {}; #elif EMOJI_HAIR_STYLE_PRESET == 'C' emoji_hair_style_preset: &emoji_curly_hair {}; #elif EMOJI_HAIR_STYLE_PRESET == 'W' emoji_hair_style_preset: &emoji_white_hair {}; #endif /*HACK*//{ ////////////////////////////////////////////////////////////////////////// // // Mouse keys (control mouse via keyboard) -- requires PR23 beta firmware: // select "community.pr23.mouse-keys" from the drop-down menu located at // Glove80 Layout Editor > Settings > Advanced Settings > Firmware Version // // - https://github.com/moergo-sc/zmk/pull/23 // - https://gist.github.com/krissen/dd27082e7ab0575619c7a31f4d2ec7ae // - https://github.com/zmkfirmware/zmk/compare/main...urob:zmk:mouse-3.2 // ////////////////////////////////////////////////////////////////////////// // // MOUSE_MOTION_DELAY defines how long to wait (milliseconds) before starting // to move the mouse pointer. // #ifndef MOUSE_MOTION_DELAY #define MOUSE_MOTION_DELAY 0 #endif // // MOUSE_MOTION_ACCELERATION_EXPONENT sets how the mouse pointer accelerates: // // acceleration exponent 0: uniform speed // acceleration exponent 1: uniform acceleration // acceleration exponent 2: uniform jerk // #ifndef MOUSE_MOTION_ACCELERATION_EXPONENT #define MOUSE_MOTION_ACCELERATION_EXPONENT 1 #endif // // MOUSE_MOTION_TIME_TO_MAXIMUM_SPEED defines how long to wait (milliseconds) // before the mouse pointer speed is suddenly boosted to the maximum value. // #ifndef MOUSE_MOTION_TIME_TO_MAXIMUM_SPEED #define MOUSE_MOTION_TIME_TO_MAXIMUM_SPEED 300 #endif // // MOUSE_MOTION_MAXIMUM_SPEED defines how quickly the mouse pointer can move. // #ifndef MOUSE_MOTION_MAXIMUM_SPEED #define MOUSE_MOTION_MAXIMUM_SPEED 600 #endif // // MOUSE_SCROLL_DELAY defines how long to wait (milliseconds) before starting // to move the mouse pointer. // #ifndef MOUSE_SCROLL_DELAY #define MOUSE_SCROLL_DELAY 0 #endif // // MOUSE_SCROLL_ACCELERATION_EXPONENT sets how the mouse pointer accelerates: // // acceleration exponent 0: uniform speed // acceleration exponent 1: uniform acceleration // acceleration exponent 2: uniform jerk // #ifndef MOUSE_SCROLL_ACCELERATION_EXPONENT #define MOUSE_SCROLL_ACCELERATION_EXPONENT 0 #endif // // MOUSE_SCROLL_TIME_TO_MAXIMUM_SPEED defines how long to wait (milliseconds) // before the mouse pointer speed is suddenly boosted to the maximum value. // #ifndef MOUSE_SCROLL_TIME_TO_MAXIMUM_SPEED #define MOUSE_SCROLL_TIME_TO_MAXIMUM_SPEED 300 #endif // // MOUSE_SCROLL_MAXIMUM_SPEED defines how quickly the mouse wheel can scroll. // #ifndef MOUSE_SCROLL_MAXIMUM_SPEED #define MOUSE_SCROLL_MAXIMUM_SPEED 10 #endif /*HACK*/}; #if __has_include() // ==== MOUSE-KEY
==== #define ZMK_MOUSE_DEFAULT_MOVE_VAL MOUSE_MOTION_MAXIMUM_SPEED #define ZMK_MOUSE_DEFAULT_SCRL_VAL MOUSE_SCROLL_MAXIMUM_SPEED #include &mmv { delay-ms = ; acceleration-exponent = ; time-to-max-speed-ms = ; }; &msc { delay-ms = ; acceleration-exponent = ; time-to-max-speed-ms = ; }; // ==== MOUSE-KEY
===== #else #define mkp none #define mmv none #define msc none #define LCLK #define MCLK #define RCLK #define MB1 #define MB2 #define MB3 #define MB4 #define MB5 #define MB6 #define MB7 #define MB8 #define MOVE_UP #define MOVE_DOWN #define MOVE_LEFT #define MOVE_RIGHT #define SCRL_UP #define SCRL_DOWN #define SCRL_LEFT #define SCRL_RIGHT #endif /*HACK*//{ }; /* Automatically generated macro definitions */ / { macros { }; }; /* Automatically generated behavior definitions */ / { behaviors { }; }; /* Automatically generated combos definitions */ / { combos { compatible = "zmk,combos"; }; }; /* Automatically generated keymap */ / { keymap { compatible = "zmk,keymap"; layer_QWERTY { bindings = < &kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &kp EQUAL &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &kp BSLH &kp GRAVE &kp Q &LeftRing2 (W, LAYER_QWERTY) &kp E &kp R &kp T &kp Y &kp U &kp I &RightRing2 (O, LAYER_QWERTY) &kp P &kp MINUS &kp ESC &LeftPinky (A, LAYER_QWERTY) &LeftRing1 (S, LAYER_QWERTY) &LeftMiddy (D, LAYER_QWERTY) &LeftIndex (F, LAYER_QWERTY) &plain LAYER_Typing G &plain LAYER_Typing H &RightIndex (J, LAYER_QWERTY) &RightMiddy (K, LAYER_QWERTY) &RightRing1 (L, LAYER_QWERTY) &RightPinky (SEMI, LAYER_QWERTY) &kp SQT &kp LSHFT &kp Z &kp X &kp C &kp V &kp B &thumb LAYER_Function ESC &kp UP &kp DOWN &kp LEFT &kp RIGHT &thumb LAYER_System ENTER &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp RSHFT &magic LAYER_Magic 0 &kp HOME &kp PG_UP &kp PG_DN &thumb LAYER_Emoji END &thumb LAYER_Cursor BACKSPACE &thumb LAYER_Number DELETE &thumb_lower_shift LAYER_Lower LSFT &thumb_lower_shift LAYER_Lower LSFT &thumb LAYER_Mouse TAB &space LAYER_Symbol SPACE &thumb_parang_left LAYER_World 0 &kp LBKT &kp RBKT ¶ng_right &magic LAYER_Magic 0 >; }; layer_Engrammer { bindings = < &kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &kp EQUAL &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &kp BSLH &kp GRAVE &kp B &LeftRing2 (Y, LAYER_Engrammer) &kp O &kp U &kp SQT &kp SEMI &kp L &kp D &RightRing2 (W, LAYER_Engrammer) &kp V &kp Z &caps_word &LeftPinky (C, LAYER_Engrammer) &LeftRing1 (I, LAYER_Engrammer) &LeftMiddy (E, LAYER_Engrammer) &LeftIndex (A, LAYER_Engrammer) &plain LAYER_Typing COMMA &plain LAYER_Typing DOT &RightIndex (H, LAYER_Engrammer) &RightMiddy (T, LAYER_Engrammer) &RightRing1 (S, LAYER_Engrammer) &RightPinky (N, LAYER_Engrammer) &kp Q &kp LSHFT &kp G &kp X &kp J &kp K &kp MINUS &thumb LAYER_Function ESC &kp UP &kp DOWN &kp LEFT &kp RIGHT &thumb LAYER_System ENTER &kp FSLH &kp R &kp M &kp F &kp P &kp RSHFT &magic LAYER_Magic 0 &kp HOME &kp PG_UP &kp PG_DN &thumb LAYER_Emoji END &thumb LAYER_Cursor BACKSPACE &thumb LAYER_Number DELETE &thumb_lower_shift LAYER_Lower LSFT &thumb_lower_shift LAYER_Lower LSFT &thumb LAYER_Mouse TAB &space LAYER_Symbol SPACE &thumb_parang_left LAYER_World 0 &kp LBKT &kp RBKT ¶ng_right &magic LAYER_Magic 0 >; }; layer_Engram { bindings = < &kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &kp LBKT &engram_N1 &engram_N2 &engram_N3 &engram_N4 &engram_N5 &engram_N6 &engram_N7 &engram_N8 &engram_N9 &engram_N0 &kp RBKT &engram_AT &kp B &LeftRing2 (Y, LAYER_Engram) &kp O &kp U &engram_SQT &engram_DQT &kp L &kp D &RightRing2 (W, LAYER_Engram) &kp V &kp Z &caps_word &LeftPinky (C, LAYER_Engram) &LeftRing1 (I, LAYER_Engram) &LeftMiddy (E, LAYER_Engram) &LeftIndex (A, LAYER_Engram) &plain_engram_COMMA LAYER_Typing 0 &plain_engram_DOT LAYER_Typing 0 &RightIndex (H, LAYER_Engram) &RightMiddy (T, LAYER_Engram) &RightRing1 (S, LAYER_Engram) &RightPinky (N, LAYER_Engram) &kp Q &kp LSHFT &kp G &kp X &kp J &kp K &kp MINUS &thumb LAYER_Function ESC &kp UP &kp DOWN &kp LEFT &kp RIGHT &thumb LAYER_System ENTER &engram_QMARK &kp R &kp M &kp F &kp P &kp RSHFT &magic LAYER_Magic 0 &kp HOME &kp PG_UP &kp PG_DN &thumb LAYER_Emoji END &thumb LAYER_Cursor BACKSPACE &thumb LAYER_Number DELETE &thumb_lower_shift LAYER_Lower LSFT &thumb_lower_shift LAYER_Lower LSFT &thumb LAYER_Mouse TAB &space LAYER_Symbol SPACE &thumb_parang_left LAYER_World 0 &engram_HASH &engram_FSLH ¶ng_right &magic LAYER_Magic 0 >; }; layer_Dvorak { bindings = < &kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &kp EQUAL &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &kp BSLH &kp GRAVE &kp SQT &LeftRing2 (COMMA, LAYER_Dvorak) &kp DOT &kp P &kp Y &kp F &kp G &kp C &RightRing2 (R, LAYER_Dvorak) &kp L &kp SLASH &caps_word &LeftPinky (A, LAYER_Dvorak) &LeftRing1 (O, LAYER_Dvorak) &LeftMiddy (E, LAYER_Dvorak) &LeftIndex (U, LAYER_Dvorak) &plain LAYER_Typing I &plain LAYER_Typing D &RightIndex (H, LAYER_Dvorak) &RightMiddy (T, LAYER_Dvorak) &RightRing1 (N, LAYER_Dvorak) &RightPinky (S, LAYER_Dvorak) &kp MINUS &kp LSHFT &kp SEMI &kp Q &kp J &kp K &kp X &thumb LAYER_Function ESC &kp UP &kp DOWN &kp LEFT &kp RIGHT &thumb LAYER_System ENTER &kp B &kp M &kp W &kp V &kp Z &kp RSHFT &magic LAYER_Magic 0 &kp HOME &kp PG_UP &kp PG_DN &thumb LAYER_Emoji END &thumb LAYER_Cursor BACKSPACE &thumb LAYER_Number DELETE &thumb_lower_shift LAYER_Lower LSFT &thumb_lower_shift LAYER_Lower LSFT &thumb LAYER_Mouse TAB &space LAYER_Symbol SPACE &thumb_parang_left LAYER_World 0 &kp LBKT &kp RBKT ¶ng_right &magic LAYER_Magic 0 >; }; layer_ColemakDHm { bindings = < &kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &kp EQUAL &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &kp BSLH &kp GRAVE &kp Q &LeftRing2 (W, LAYER_ColemakDHm) &kp F &kp P &kp B &kp J &kp L &kp U &RightRing2 (Y, LAYER_ColemakDHm) &kp SEMI &kp MINUS &caps_word &LeftPinky (A, LAYER_ColemakDHm) &LeftRing1 (R, LAYER_ColemakDHm) &LeftMiddy (S, LAYER_ColemakDHm) &LeftIndex (T, LAYER_ColemakDHm) &plain LAYER_Typing G &plain LAYER_Typing M &RightIndex (N, LAYER_ColemakDHm) &RightMiddy (E, LAYER_ColemakDHm) &RightRing1 (I, LAYER_ColemakDHm) &RightPinky (O, LAYER_ColemakDHm) &kp SQT &kp LSHFT &kp Z &kp X &kp C &kp D &kp V &thumb LAYER_Function ESC &kp UP &kp DOWN &kp LEFT &kp RIGHT &thumb LAYER_System ENTER &kp K &kp H &kp COMMA &kp DOT &kp FSLH &kp RSHFT &magic LAYER_Magic 0 &kp HOME &kp PG_UP &kp PG_DN &thumb LAYER_Emoji END &thumb LAYER_Cursor BACKSPACE &thumb LAYER_Number DELETE &thumb_lower_shift LAYER_Lower LSFT &thumb_lower_shift LAYER_Lower LSFT &thumb LAYER_Mouse TAB &space LAYER_Symbol SPACE &thumb_parang_left LAYER_World 0 &kp LBKT &kp RBKT ¶ng_right &magic LAYER_Magic 0 >; }; layer_Colemak { bindings = < &kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &kp EQUAL &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &kp BSLH &kp GRAVE &kp Q &LeftRing2 (W, LAYER_Colemak) &kp F &kp P &kp G &kp J &kp L &kp U &RightRing2 (Y, LAYER_Colemak) &kp SEMI &kp MINUS &caps_word &LeftPinky (A, LAYER_Colemak) &LeftRing1 (R, LAYER_Colemak) &LeftMiddy (S, LAYER_Colemak) &LeftIndex (T, LAYER_Colemak) &plain LAYER_Typing D &plain LAYER_Typing H &RightIndex (N, LAYER_Colemak) &RightMiddy (E, LAYER_Colemak) &RightRing1 (I, LAYER_Colemak) &RightPinky (O, LAYER_Colemak) &kp SQT &kp LSHFT &kp Z &kp X &kp C &kp V &kp B &thumb LAYER_Function ESC &kp UP &kp DOWN &kp LEFT &kp RIGHT &thumb LAYER_System ENTER &kp K &kp M &kp COMMA &kp DOT &kp FSLH &kp RSHFT &magic LAYER_Magic 0 &kp HOME &kp PG_UP &kp PG_DN &thumb LAYER_Emoji END &thumb LAYER_Cursor BACKSPACE &thumb LAYER_Number DELETE &thumb_lower_shift LAYER_Lower LSFT &thumb_lower_shift LAYER_Lower LSFT &thumb LAYER_Mouse TAB &space LAYER_Symbol SPACE &thumb_parang_left LAYER_World 0 &kp LBKT &kp RBKT ¶ng_right &magic LAYER_Magic 0 >; }; layer_Norman { bindings = < &kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &kp EQUAL &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &kp BSLH &kp GRAVE &kp Q &LeftRing2 (W, LAYER_Norman) &kp D &kp F &kp K &kp J &kp U &kp R &RightRing2 (L, LAYER_Norman) &kp SEMI &kp MINUS &caps_word &LeftPinky (A, LAYER_Norman) &LeftRing1 (S, LAYER_Norman) &LeftMiddy (E, LAYER_Norman) &LeftIndex (T, LAYER_Norman) &plain LAYER_Typing G &plain LAYER_Typing Y &RightIndex (N, LAYER_Norman) &RightMiddy (I, LAYER_Norman) &RightRing1 (O, LAYER_Norman) &RightPinky (H, LAYER_Norman) &kp SQT &kp LSHFT &kp Z &kp X &kp C &kp V &kp B &thumb LAYER_Function ESC &kp UP &kp DOWN &kp LEFT &kp RIGHT &thumb LAYER_System ENTER &kp P &kp M &kp COMMA &kp DOT &kp FSLH &kp RSHFT &magic LAYER_Magic 0 &kp HOME &kp PG_UP &kp PG_DN &thumb LAYER_Emoji END &thumb LAYER_Cursor BACKSPACE &thumb LAYER_Number DELETE &thumb_lower_shift LAYER_Lower LSFT &thumb_lower_shift LAYER_Lower LSFT &thumb LAYER_Mouse TAB &space LAYER_Symbol SPACE &thumb_parang_left LAYER_World 0 &kp LBKT &kp RBKT ¶ng_right &magic LAYER_Magic 0 >; }; layer_Workman { bindings = < &kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &kp EQUAL &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &kp BSLH &kp GRAVE &kp Q &LeftRing2 (D, LAYER_Workman) &kp R &kp W &kp B &kp J &kp F &kp U &RightRing2 (P, LAYER_Workman) &kp SEMI &kp MINUS &caps_word &LeftPinky (A, LAYER_Workman) &LeftRing1 (S, LAYER_Workman) &LeftMiddy (H, LAYER_Workman) &LeftIndex (T, LAYER_Workman) &plain LAYER_Typing G &plain LAYER_Typing Y &RightIndex (N, LAYER_Workman) &RightMiddy (E, LAYER_Workman) &RightRing1 (O, LAYER_Workman) &RightPinky (I, LAYER_Workman) &kp SQT &kp LSHFT &kp Z &kp X &kp M &kp C &kp V &thumb LAYER_Function ESC &kp UP &kp DOWN &kp LEFT &kp RIGHT &thumb LAYER_System ENTER &kp K &kp L &kp COMMA &kp DOT &kp FSLH &kp RSHFT &magic LAYER_Magic 0 &kp HOME &kp PG_UP &kp PG_DN &thumb LAYER_Emoji END &thumb LAYER_Cursor BACKSPACE &thumb LAYER_Number DELETE &thumb_lower_shift LAYER_Lower LSFT &thumb_lower_shift LAYER_Lower LSFT &thumb LAYER_Mouse TAB &space LAYER_Symbol SPACE &thumb_parang_left LAYER_World 0 &kp LBKT &kp RBKT ¶ng_right &magic LAYER_Magic 0 >; }; layer_Halmak { bindings = < &kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &kp EQUAL &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &kp BSLH &kp GRAVE &kp W &LeftRing2 (L, LAYER_Halmak) &kp R &kp B &kp Z &kp SEMI &kp Q &kp U &RightRing2 (D, LAYER_Halmak) &kp J &kp MINUS &caps_word &LeftPinky (S, LAYER_Halmak) &LeftRing1 (H, LAYER_Halmak) &LeftMiddy (N, LAYER_Halmak) &LeftIndex (T, LAYER_Halmak) &plain LAYER_Typing COMMA &plain LAYER_Typing DOT &RightIndex (A, LAYER_Halmak) &RightMiddy (E, LAYER_Halmak) &RightRing1 (O, LAYER_Halmak) &RightPinky (I, LAYER_Halmak) &kp SQT &kp LSHFT &kp F &kp M &kp V &kp C &kp FSLH &thumb LAYER_Function ESC &kp UP &kp DOWN &kp LEFT &kp RIGHT &thumb LAYER_System ENTER &kp G &kp P &kp X &kp K &kp Y &kp RSHFT &magic LAYER_Magic 0 &kp HOME &kp PG_UP &kp PG_DN &thumb LAYER_Emoji END &thumb LAYER_Cursor BACKSPACE &thumb LAYER_Number DELETE &thumb_lower_shift LAYER_Lower LSFT &thumb_lower_shift LAYER_Lower LSFT &thumb LAYER_Mouse TAB &space LAYER_Symbol SPACE &thumb_parang_left LAYER_World 0 &kp LBKT &kp RBKT ¶ng_right &magic LAYER_Magic 0 >; }; layer_Typing { bindings = < &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &kp LEFT_RING2_KEY &trans &trans &trans &trans &trans &trans &kp RIGHT_RING2_KEY &trans &trans &trans &kp LEFT_PINKY_KEY &kp LEFT_RING1_KEY &kp LEFT_MIDDY_KEY &kp LEFT_INDEX_KEY &LeftPlainKey &RightPlainKey &kp RIGHT_INDEX_KEY &kp RIGHT_MIDDY_KEY &kp RIGHT_RING1_KEY &kp RIGHT_PINKY_KEY &trans &trans &trans &trans &trans &trans &trans &kp KEY_LH_T1 &trans &trans &trans &trans &kp KEY_RH_T1 &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &kp KEY_LH_T4 &kp KEY_LH_T5 &tog LAYER_Typing &tog LAYER_Typing &kp KEY_RH_T5 &kp KEY_RH_T4 &trans &trans &trans &trans &trans >; }; layer_LeftPinky { bindings = < &left_pinky_tap KEY_LH_C6R1 &left_pinky_tap KEY_LH_C5R1 &left_pinky_tap KEY_LH_C4R1 &left_pinky_tap KEY_LH_C3R1 &left_pinky_tap KEY_LH_C2R1 &trans &trans &trans &trans &trans &left_pinky_tap KEY_LH_C6R2 &left_pinky_tap KEY_LH_C5R2 &left_pinky_tap KEY_LH_C4R2 &left_pinky_tap KEY_LH_C3R2 &left_pinky_tap KEY_LH_C2R2 &left_pinky_tap KEY_LH_C1R2 &trans &trans &trans &trans &trans &trans &left_pinky_tap KEY_LH_C6R3 &left_pinky_tap KEY_LH_C5R3 &LeftPinkyRing2 &left_pinky_tap KEY_LH_C3R3 &left_pinky_tap KEY_LH_C2R3 &left_pinky_tap KEY_LH_C1R3 &trans &trans &trans &kp RIGHT_RING2_KEY &trans &trans &left_pinky_tap KEY_LH_C6R4 &none &LeftPinkyRing1 &LeftPinkyMiddy &LeftPinkyIndex &left_pinky_tap KEY_LH_C1R4 &RightPlainKey &kp RIGHT_INDEX_KEY &kp RIGHT_MIDDY_KEY &kp RIGHT_RING1_KEY &kp RIGHT_PINKY_KEY &trans &left_pinky_tap KEY_LH_C6R5 &left_pinky_tap KEY_LH_C5R5 &left_pinky_tap KEY_LH_C4R5 &left_pinky_tap KEY_LH_C3R5 &left_pinky_tap KEY_LH_C2R5 &left_pinky_tap KEY_LH_C1R5 &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &left_pinky_tap KEY_LH_C5R6 &left_pinky_tap KEY_LH_C4R6 &left_pinky_tap KEY_LH_C3R6 &left_pinky_tap KEY_LH_C2R6 &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans >; }; layer_LeftRing1 { bindings = < &left_ring1_tap KEY_LH_C6R1 &left_ring1_tap KEY_LH_C5R1 &left_ring1_tap KEY_LH_C4R1 &left_ring1_tap KEY_LH_C3R1 &left_ring1_tap KEY_LH_C2R1 &trans &trans &trans &trans &trans &left_ring1_tap KEY_LH_C6R2 &left_ring1_tap KEY_LH_C5R2 &left_ring1_tap KEY_LH_C4R2 &left_ring1_tap KEY_LH_C3R2 &left_ring1_tap KEY_LH_C2R2 &left_ring1_tap KEY_LH_C1R2 &trans &trans &trans &trans &trans &trans &left_ring1_tap KEY_LH_C6R3 &left_ring1_tap KEY_LH_C5R3 &LeftRing1Ring2 &left_ring1_tap KEY_LH_C3R3 &left_ring1_tap KEY_LH_C2R3 &left_ring1_tap KEY_LH_C1R3 &trans &trans &trans &kp RIGHT_RING2_KEY &trans &trans &left_ring1_tap KEY_LH_C6R4 &LeftRing1Pinky &none &LeftRing1Middy &LeftRing1Index &left_ring1_tap KEY_LH_C1R4 &RightPlainKey &kp RIGHT_INDEX_KEY &kp RIGHT_MIDDY_KEY &kp RIGHT_RING1_KEY &kp RIGHT_PINKY_KEY &trans &left_ring1_tap KEY_LH_C6R5 &left_ring1_tap KEY_LH_C5R5 &left_ring1_tap KEY_LH_C4R5 &left_ring1_tap KEY_LH_C3R5 &left_ring1_tap KEY_LH_C2R5 &left_ring1_tap KEY_LH_C1R5 &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &left_ring1_tap KEY_LH_C5R6 &left_ring1_tap KEY_LH_C4R6 &left_ring1_tap KEY_LH_C3R6 &left_ring1_tap KEY_LH_C2R6 &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans >; }; layer_LeftRing2 { bindings = < &left_ring2_tap KEY_LH_C6R1 &left_ring2_tap KEY_LH_C5R1 &left_ring2_tap KEY_LH_C4R1 &left_ring2_tap KEY_LH_C3R1 &left_ring2_tap KEY_LH_C2R1 &trans &trans &trans &trans &trans &left_ring2_tap KEY_LH_C6R2 &left_ring2_tap KEY_LH_C5R2 &left_ring2_tap KEY_LH_C4R2 &left_ring2_tap KEY_LH_C3R2 &left_ring2_tap KEY_LH_C2R2 &left_ring2_tap KEY_LH_C1R2 &trans &trans &trans &trans &trans &trans &left_ring2_tap KEY_LH_C6R3 &left_ring2_tap KEY_LH_C5R3 &none &left_ring2_tap KEY_LH_C3R3 &left_ring2_tap KEY_LH_C2R3 &left_ring2_tap KEY_LH_C1R3 &trans &trans &trans &kp RIGHT_RING2_KEY &trans &trans &left_ring2_tap KEY_LH_C6R4 &LeftRing2Pinky &LeftRing2Ring1 &LeftRing2Middy &LeftRing2Index &left_ring2_tap KEY_LH_C1R4 &RightPlainKey &kp RIGHT_INDEX_KEY &kp RIGHT_MIDDY_KEY &kp RIGHT_RING1_KEY &kp RIGHT_PINKY_KEY &trans &left_ring2_tap KEY_LH_C6R5 &left_ring2_tap KEY_LH_C5R5 &left_ring2_tap KEY_LH_C4R5 &left_ring2_tap KEY_LH_C3R5 &left_ring2_tap KEY_LH_C2R5 &left_ring2_tap KEY_LH_C1R5 &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &left_ring2_tap KEY_LH_C5R6 &left_ring2_tap KEY_LH_C4R6 &left_ring2_tap KEY_LH_C3R6 &left_ring2_tap KEY_LH_C2R6 &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans >; }; layer_LeftMiddy { bindings = < &left_middy_tap KEY_LH_C6R1 &left_middy_tap KEY_LH_C5R1 &left_middy_tap KEY_LH_C4R1 &left_middy_tap KEY_LH_C3R1 &left_middy_tap KEY_LH_C2R1 &trans &trans &trans &trans &trans &left_middy_tap KEY_LH_C6R2 &left_middy_tap KEY_LH_C5R2 &left_middy_tap KEY_LH_C4R2 &left_middy_tap KEY_LH_C3R2 &left_middy_tap KEY_LH_C2R2 &left_middy_tap KEY_LH_C1R2 &trans &trans &trans &trans &trans &trans &left_middy_tap KEY_LH_C6R3 &left_middy_tap KEY_LH_C5R3 &LeftMiddyRing2 &left_middy_tap KEY_LH_C3R3 &left_middy_tap KEY_LH_C2R3 &left_middy_tap KEY_LH_C1R3 &trans &trans &trans &kp RIGHT_RING2_KEY &trans &trans &left_middy_tap KEY_LH_C6R4 &LeftMiddyPinky &LeftMiddyRing1 &none &LeftMiddyIndex &left_middy_tap KEY_LH_C1R4 &RightPlainKey &kp RIGHT_INDEX_KEY &kp RIGHT_MIDDY_KEY &kp RIGHT_RING1_KEY &kp RIGHT_PINKY_KEY &trans &left_middy_tap KEY_LH_C6R5 &left_middy_tap KEY_LH_C5R5 &left_middy_tap KEY_LH_C4R5 &left_middy_tap KEY_LH_C3R5 &left_middy_tap KEY_LH_C2R5 &left_middy_tap KEY_LH_C1R5 &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &left_middy_tap KEY_LH_C5R6 &left_middy_tap KEY_LH_C4R6 &left_middy_tap KEY_LH_C3R6 &left_middy_tap KEY_LH_C2R6 &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans >; }; layer_LeftIndex { bindings = < &left_index_tap KEY_LH_C6R1 &left_index_tap KEY_LH_C5R1 &left_index_tap KEY_LH_C4R1 &left_index_tap KEY_LH_C3R1 &left_index_tap KEY_LH_C2R1 &trans &trans &trans &trans &trans &left_index_tap KEY_LH_C6R2 &left_index_tap KEY_LH_C5R2 &left_index_tap KEY_LH_C4R2 &left_index_tap KEY_LH_C3R2 &left_index_tap KEY_LH_C2R2 &left_index_tap KEY_LH_C1R2 &trans &trans &trans &trans &trans &trans &left_index_tap KEY_LH_C6R3 &left_index_tap KEY_LH_C5R3 &LeftIndexRing2 &left_index_tap KEY_LH_C3R3 &left_index_tap KEY_LH_C2R3 &left_index_tap KEY_LH_C1R3 &trans &trans &trans &kp RIGHT_RING2_KEY &trans &trans &left_index_tap KEY_LH_C6R4 &LeftIndexPinky &LeftIndexRing1 &LeftIndexMiddy &none &left_index_tap KEY_LH_C1R4 &RightPlainKey &kp RIGHT_INDEX_KEY &kp RIGHT_MIDDY_KEY &kp RIGHT_RING1_KEY &kp RIGHT_PINKY_KEY &trans &left_index_tap KEY_LH_C6R5 &left_index_tap KEY_LH_C5R5 &left_index_tap KEY_LH_C4R5 &left_index_tap KEY_LH_C3R5 &left_index_tap KEY_LH_C2R5 &left_index_tap KEY_LH_C1R5 &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &left_index_tap KEY_LH_C5R6 &left_index_tap KEY_LH_C4R6 &left_index_tap KEY_LH_C3R6 &left_index_tap KEY_LH_C2R6 &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans >; }; layer_RightPinky { bindings = < &trans &trans &trans &trans &trans &right_pinky_tap KEY_RH_C2R1 &right_pinky_tap KEY_RH_C3R1 &right_pinky_tap KEY_RH_C4R1 &right_pinky_tap KEY_RH_C5R1 &right_pinky_tap KEY_RH_C6R1 &trans &trans &trans &trans &trans &trans &right_pinky_tap KEY_RH_C1R2 &right_pinky_tap KEY_RH_C2R2 &right_pinky_tap KEY_RH_C3R2 &right_pinky_tap KEY_RH_C4R2 &right_pinky_tap KEY_RH_C5R2 &right_pinky_tap KEY_RH_C6R2 &trans &trans &kp LEFT_RING2_KEY &trans &trans &trans &right_pinky_tap KEY_RH_C1R3 &right_pinky_tap KEY_RH_C2R3 &right_pinky_tap KEY_RH_C3R3 &RightPinkyRing2 &right_pinky_tap KEY_RH_C5R3 &right_pinky_tap KEY_RH_C6R3 &trans &kp LEFT_PINKY_KEY &kp LEFT_RING1_KEY &kp LEFT_MIDDY_KEY &kp LEFT_INDEX_KEY &LeftPlainKey &right_pinky_tap KEY_RH_C1R4 &RightPinkyIndex &RightPinkyMiddy &RightPinkyRing1 &none &right_pinky_tap KEY_RH_C6R4 &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &right_pinky_tap KEY_RH_C1R5 &right_pinky_tap KEY_RH_C2R5 &right_pinky_tap KEY_RH_C3R5 &right_pinky_tap KEY_RH_C4R5 &right_pinky_tap KEY_RH_C5R5 &right_pinky_tap KEY_RH_C6R5 &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &right_pinky_tap KEY_RH_C2R6 &right_pinky_tap KEY_RH_C3R6 &right_pinky_tap KEY_RH_C4R6 &right_pinky_tap KEY_RH_C5R6 &trans >; }; layer_RightRing1 { bindings = < &trans &trans &trans &trans &trans &right_ring1_tap KEY_RH_C2R1 &right_ring1_tap KEY_RH_C3R1 &right_ring1_tap KEY_RH_C4R1 &right_ring1_tap KEY_RH_C5R1 &right_ring1_tap KEY_RH_C6R1 &trans &trans &trans &trans &trans &trans &right_ring1_tap KEY_RH_C1R2 &right_ring1_tap KEY_RH_C2R2 &right_ring1_tap KEY_RH_C3R2 &right_ring1_tap KEY_RH_C4R2 &right_ring1_tap KEY_RH_C5R2 &right_ring1_tap KEY_RH_C6R2 &trans &trans &kp LEFT_RING2_KEY &trans &trans &trans &right_ring1_tap KEY_RH_C1R3 &right_ring1_tap KEY_RH_C2R3 &right_ring1_tap KEY_RH_C3R3 &RightRing1Ring2 &right_ring1_tap KEY_RH_C5R3 &right_ring1_tap KEY_RH_C6R3 &trans &kp LEFT_PINKY_KEY &kp LEFT_RING1_KEY &kp LEFT_MIDDY_KEY &kp LEFT_INDEX_KEY &LeftPlainKey &right_ring1_tap KEY_RH_C1R4 &RightRing1Index &RightRing1Middy &none &RightRing1Pinky &right_ring1_tap KEY_RH_C6R4 &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &right_ring1_tap KEY_RH_C1R5 &right_ring1_tap KEY_RH_C2R5 &right_ring1_tap KEY_RH_C3R5 &right_ring1_tap KEY_RH_C4R5 &right_ring1_tap KEY_RH_C5R5 &right_ring1_tap KEY_RH_C6R5 &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &right_ring1_tap KEY_RH_C2R6 &right_ring1_tap KEY_RH_C3R6 &right_ring1_tap KEY_RH_C4R6 &right_ring1_tap KEY_RH_C5R6 &trans >; }; layer_RightRing2 { bindings = < &trans &trans &trans &trans &trans &right_ring2_tap KEY_RH_C2R1 &right_ring2_tap KEY_RH_C3R1 &right_ring2_tap KEY_RH_C4R1 &right_ring2_tap KEY_RH_C5R1 &right_ring2_tap KEY_RH_C6R1 &trans &trans &trans &trans &trans &trans &right_ring2_tap KEY_RH_C1R2 &right_ring2_tap KEY_RH_C2R2 &right_ring2_tap KEY_RH_C3R2 &right_ring2_tap KEY_RH_C4R2 &right_ring2_tap KEY_RH_C5R2 &right_ring2_tap KEY_RH_C6R2 &trans &trans &kp LEFT_RING2_KEY &trans &trans &trans &right_ring2_tap KEY_RH_C1R3 &right_ring2_tap KEY_RH_C2R3 &right_ring2_tap KEY_RH_C3R3 &none &right_ring2_tap KEY_RH_C5R3 &right_ring2_tap KEY_RH_C6R3 &trans &kp LEFT_PINKY_KEY &kp LEFT_RING1_KEY &kp LEFT_MIDDY_KEY &kp LEFT_INDEX_KEY &LeftPlainKey &right_ring2_tap KEY_RH_C1R4 &RightRing2Index &RightRing2Middy &RightRing2Ring1 &RightRing2Pinky &right_ring2_tap KEY_RH_C6R4 &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &right_ring2_tap KEY_RH_C1R5 &right_ring2_tap KEY_RH_C2R5 &right_ring2_tap KEY_RH_C3R5 &right_ring2_tap KEY_RH_C4R5 &right_ring2_tap KEY_RH_C5R5 &right_ring2_tap KEY_RH_C6R5 &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &right_ring2_tap KEY_RH_C2R6 &right_ring2_tap KEY_RH_C3R6 &right_ring2_tap KEY_RH_C4R6 &right_ring2_tap KEY_RH_C5R6 &trans >; }; layer_RightMiddy { bindings = < &trans &trans &trans &trans &trans &right_middy_tap KEY_RH_C2R1 &right_middy_tap KEY_RH_C3R1 &right_middy_tap KEY_RH_C4R1 &right_middy_tap KEY_RH_C5R1 &right_middy_tap KEY_RH_C6R1 &trans &trans &trans &trans &trans &trans &right_middy_tap KEY_RH_C1R2 &right_middy_tap KEY_RH_C2R2 &right_middy_tap KEY_RH_C3R2 &right_middy_tap KEY_RH_C4R2 &right_middy_tap KEY_RH_C5R2 &right_middy_tap KEY_RH_C6R2 &trans &trans &kp LEFT_RING2_KEY &trans &trans &trans &right_middy_tap KEY_RH_C1R3 &right_middy_tap KEY_RH_C2R3 &right_middy_tap KEY_RH_C3R3 &RightMiddyRing2 &right_middy_tap KEY_RH_C5R3 &right_middy_tap KEY_RH_C6R3 &trans &kp LEFT_PINKY_KEY &kp LEFT_RING1_KEY &kp LEFT_MIDDY_KEY &kp LEFT_INDEX_KEY &LeftPlainKey &right_middy_tap KEY_RH_C1R4 &RightMiddyIndex &none &RightMiddyRing1 &RightMiddyPinky &right_middy_tap KEY_RH_C6R4 &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &right_middy_tap KEY_RH_C1R5 &right_middy_tap KEY_RH_C2R5 &right_middy_tap KEY_RH_C3R5 &right_middy_tap KEY_RH_C4R5 &right_middy_tap KEY_RH_C5R5 &right_middy_tap KEY_RH_C6R5 &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &right_middy_tap KEY_RH_C2R6 &right_middy_tap KEY_RH_C3R6 &right_middy_tap KEY_RH_C4R6 &right_middy_tap KEY_RH_C5R6 &trans >; }; layer_RightIndex { bindings = < &trans &trans &trans &trans &trans &right_index_tap KEY_RH_C2R1 &right_index_tap KEY_RH_C3R1 &right_index_tap KEY_RH_C4R1 &right_index_tap KEY_RH_C5R1 &right_index_tap KEY_RH_C6R1 &trans &trans &trans &trans &trans &trans &right_index_tap KEY_RH_C1R2 &right_index_tap KEY_RH_C2R2 &right_index_tap KEY_RH_C3R2 &right_index_tap KEY_RH_C4R2 &right_index_tap KEY_RH_C5R2 &right_index_tap KEY_RH_C6R2 &trans &trans &kp LEFT_RING2_KEY &trans &trans &trans &right_index_tap KEY_RH_C1R3 &right_index_tap KEY_RH_C2R3 &right_index_tap KEY_RH_C3R3 &RightIndexRing2 &right_index_tap KEY_RH_C5R3 &right_index_tap KEY_RH_C6R3 &trans &kp LEFT_PINKY_KEY &kp LEFT_RING1_KEY &kp LEFT_MIDDY_KEY &kp LEFT_INDEX_KEY &LeftPlainKey &right_index_tap KEY_RH_C1R4 &none &RightIndexMiddy &RightIndexRing1 &RightIndexPinky &right_index_tap KEY_RH_C6R4 &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &right_index_tap KEY_RH_C1R5 &right_index_tap KEY_RH_C2R5 &right_index_tap KEY_RH_C3R5 &right_index_tap KEY_RH_C4R5 &right_index_tap KEY_RH_C5R5 &right_index_tap KEY_RH_C6R5 &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &right_index_tap KEY_RH_C2R6 &right_index_tap KEY_RH_C3R6 &right_index_tap KEY_RH_C4R6 &right_index_tap KEY_RH_C5R6 &trans >; }; layer_Cursor { bindings = < &none &none &none &none &none &none &none &none &none &none &kp ESC &kp RET &kp SPACE &kp TAB &kp DEL &kp INS &kp INS &kp DEL &kp TAB &kp SPACE &kp RET &kp ESC &kp _C(K) &sk LSHFT &kp _REDO &kp _UNDO &kp BSPC &kp _CUT &kp _CUT &kp BSPC &kp _UNDO &kp _REDO &sk LSHFT &kp _C(K) &kp _C(L) &kp LEFT_PINKY_MOD &kp LEFT_RING1_MOD &kp LEFT_MIDDY_MOD &kp LEFT_INDEX_MOD &kp _COPY &kp _COPY &kp LEFT &kp UP &kp DOWN &kp RIGHT &kp _C(L) &kp _C(J) &kp _C(A) &select_line &select_word &kp _FIND &kp _PASTE &mod_tab _A_TAB &mod_tab _G_TAB &kp TAB &select_none &extend_line &extend_word &kp _PASTE &kp HOME &kp PG_UP &kp PG_DN &kp END &kp _C(J) &kp _C(H) &kp _FIND_PREV &extend_line &extend_word &kp _FIND_NEXT &none &mod_tab LCTL &tog LAYER_Cursor &kp _C(A) &select_line &select_word &kp _FIND &kp _FIND_PREV &kp _FIND_NEXT &kp _C(H) &kp LG(DOT) >; }; layer_Number { bindings = < &none &none &none &none &none &none &none &none &none &none &kp ESC &kp RET &kp SPACE &kp TAB &kp DEL &kp INS &kp CARET &kp DLLR &kp HASH &kp AT &kp EXCL &kp PIPE &none &sk LSHFT &kp _REDO &kp _UNDO &kp BSPC &kp A &kp PRCNT &kp _KP_N7 &kp _KP_N8 &kp _KP_N9 &kp COLON &kp K &kp KP_NUM &kp LEFT_PINKY_MOD &kp LEFT_RING1_MOD &kp LEFT_MIDDY_MOD &kp LEFT_INDEX_MOD &kp B &kp _KP_PLUS &kp _KP_N4 &kp _KP_N5 &kp _KP_N6 &kp _KP_MINUS &kp J &none &kp _C(A) &select_line &select_word &kp UNDER &kp C &kp D &kp E &kp F &kp LT &kp GT &kp _KP_EQUAL &kp _KP_ASTERISK &kp _KP_N1 &kp _KP_N2 &kp _KP_N3 &kp _KP_SLASH &kp LS(G) &none &none &extend_line &extend_word &kp X &none &none &tog LAYER_Number &kp _KP_COMMA &kp _KP_DOT &kp _KP_N0 &trans &trans &trans &trans &kp TILDE >; }; layer_Function { bindings = < &none &none &none &none &none &none &none &none &none &none &kp ESC &kp RET &kp SPACE &kp TAB &kp DEL &kp INS &kp C_MEDIA_HOME &kp C_PLAY &kp C_PREV &kp C_NEXT &kp C_STOP &kp C_EJECT &none &sk LSHFT &kp _REDO &kp _UNDO &kp BSPC &none &kp K_WWW &kp F7 &kp F8 &kp F9 &kp F10 &kp F13 &kp CAPS &kp LEFT_PINKY_MOD &kp LEFT_RING1_MOD &kp LEFT_MIDDY_MOD &kp LEFT_INDEX_MOD &none &kp K_CALC &kp F4 &kp F5 &kp F6 &kp F11 &kp F14 &none &kp _C(A) &select_line &select_word &none &none &none &none &none &kp C_PREV &kp C_NEXT &kp C_PP &kp C_AL_FILES &kp F1 &kp F2 &kp F3 &kp F12 &kp F15 &none &none &extend_line &extend_word &none &none &none &tog LAYER_Function &kp C_MUTE &kp C_VOL_DN &kp C_VOL_UP &kp C_BRI_MAX &kp C_BRI_UP &kp C_BRI_DN &kp C_BRI_MIN &kp C_BRI_AUTO >; }; layer_Emoji { bindings = < &emoji_cloudy &emoji_mostly_cloudy &emoji_partly_cloudy &emoji_mostly_sunny &emoji_sunny &emoji_new_moon &emoji_moon_crescent &emoji_moon_quarter &emoji_moon_gibbous &emoji_full_moon &emoji_rainbow &emoji_light_skin_tone &emoji_medium_light_skin_tone &emoji_medium_skin_tone &emoji_medium_dark_skin_tone &emoji_dark_skin_tone &emoji_tada &emoji_heart &emoji_fire &emoji_muscle &emoji_person_climbing &emoji_lab_coat &emoji_left_arrow &emoji_bald &emoji_red_hair &emoji_curly_hair &emoji_white_hair &emoji_right_arrow &emoji_face_laugh &emoji_face_smile &emoji_face_eyes &emoji_face_joke &emoji_face_fear &emoji_face_surprise &emoji_female_sign &emoji_skin_tone_preset &emoji_zwj &emoji_gender_sign_preset &emoji_hair_style_preset &emoji_male_sign &emoji_gesture_attention &emoji_gesture_approval &emoji_gesture_gratitude &emoji_gesture_anxiety &emoji_gesture_despair &emoji_gesture_curious &emoji_old_woman &emoji_woman &emoji_girl &emoji_boy &emoji_man &emoji_old_man &emoji_cityscape &emoji_cityscape_dusk &emoji_cityscape_night &emoji_astronaut &emoji_rocket &emoji_moon_stars &emoji_person_tipping_hand &emoji_person_gesturing_ok &emoji_person_bowing &emoji_person_raising_hand &emoji_person_gesturing_no &emoji_person_shrugging &emoji_sunrise_mountains &emoji_sunrise &emoji_baby &emoji_baby_bottle &none &kp LSHFT &none &tog LAYER_Emoji &emoji_gesture_hands &emoji_gesture_point &emoji_gesture_thumbs &emoji_checkoff &emoji_100 &emoji_warning &emoji_x &emoji_question >; }; layer_Symbol { bindings = < &none &none &none &none &none &none &none &none &none &none &none &kp GRAVE &kp LPAR &kp RPAR &kp SEMI &kp COMMA &none &none &none &none &none &none &kp EXCL &kp LBRC &kp SQT &kp LS(N2) &kp RBRC &kp QMARK &kp SEMI &kp RIGHT_INDEX_MOD &kp RIGHT_MIDDY_MOD &kp RIGHT_RING1_MOD &kp RIGHT_PINKY_MOD &none &kp BSLH &kp CARET &kp EQUAL &kp UNDER &kp DLLR &kp STAR &kp DOT &kp BSPC &kp TAB &kp SPACE &kp RET &none &kp LS(SQT) &kp LT &kp LS(NON_US_BSLH) &kp MINUS &kp GT &kp FSLH &kp NON_US_BSLH &kp DOT &kp STAR &none &none &none &kp FSLH &kp DEL &kp LS(TAB) &none &none &none &kp LS(NON_US_HASH) &kp LS(N7) &kp LBKT &kp RBKT &kp PLUS &kp PRCNT &kp COLON &kp SEMI &tog LAYER_Symbol &none &none &trans &trans &trans &trans &none >; }; layer_Mouse { bindings = < &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &msc SCRL_LEFT &mmv MOVE_UP &msc SCRL_RIGHT &none &mkp MCLK &kp RIGHT_INDEX_MOD &kp RIGHT_MIDDY_MOD &kp RIGHT_RING1_MOD &kp RIGHT_PINKY_MOD &none &none &none &mmv MOVE_LEFT &mmv MOVE_DOWN &mmv MOVE_RIGHT &none &mkp LCLK &mmv MOVE_LEFT &mmv MOVE_UP &mmv MOVE_DOWN &mmv MOVE_RIGHT &none &none &none &none &msc SCRL_DOWN &msc SCRL_UP &none &mkp MCLK &none &none &none &none &none &mkp RCLK &msc SCRL_LEFT &msc SCRL_UP &msc SCRL_DOWN &msc SCRL_RIGHT &none &none &none &none &none &none &mkp LCLK &mkp RCLK &none &tog LAYER_Mouse &none &none &none &none &none &none &none >; }; layer_System { bindings = < &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &rgb_ug RGB_HUD &rgb_ug RGB_HUI &none &none &rgb_ug RGB_SAI &kp RIGHT_INDEX_MOD &kp RIGHT_MIDDY_MOD &kp RIGHT_RING1_MOD &kp RIGHT_PINKY_MOD &rgb_ug RGB_SAD &rgb_ug RGB_TOG &rgb_ug RGB_EFR &rgb_ug RGB_BRD &rgb_ug RGB_BRI &rgb_ug RGB_EFF &kp K_APP &rgb_ug RGB_HUI &kp K_APP &kp _LOCK &kp _SLEEP &kp _POWER &rgb_ug RGB_HUD &none &rgb_ug RGB_SPD &rgb_ug RGB_SAD &rgb_ug RGB_SAI &rgb_ug RGB_SPI &none &kp _LOCK &kp _SLEEP &kp _POWER &none &none &none &rgb_ug RGB_SPI &rgb_ug RGB_TOG &kp PSCRN &kp SLCK &kp PAUSE_BREAK &rgb_ug RGB_SPD &none &none &none &none &none &kp PSCRN &kp SLCK &kp PAUSE_BREAK &tog LAYER_System &none &linux_magic_sysrq &rgb_ug RGB_EFF &rgb_ug RGB_BRI &rgb_ug RGB_BRD &rgb_ug RGB_EFR &none >; }; layer_World { bindings = < &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &none &world_degree_sign &world_y_base &world_o_base &world_u_base &none &none &none &kp LALT &kp RALT &none &none &none &world_consonants_base &world_i_base &world_e_base &world_a_base &none &none &kp LSHFT &kp LCTRL &kp RCTRL &kp RSHFT &none &world_currency_base &world_quotes_left_base &world_exclaim_left &world_question_left &world_quotes_right_base &none &none &none &none &none &none &none &none &none &none &none &none &none &world_micro_sign &world_section_sign &world_paragraph_sign &world_o_ordinal &world_a_ordinal &none &none &tog LAYER_World &tog LAYER_World &none &none &none &none &none &none &none >; }; layer_Gaming { bindings = < &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &kp MINUS &kp GRAVE &kp B &kp N &kp M &kp SQT &kp B &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp T &kp TAB &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp G &kp LSHFT &kp A &kp S &kp D &kp F &kp ESC &kp RET &kp PAUSE_BREAK &kp BSPC &kp DEL &trans &kp G &kp H &kp J &kp K &kp L &kp SEMI &kp V &kp LCTRL &kp Z &kp X &kp C &kp SPACE &kp LALT &kp LGUI &tog LAYER_Gaming &trans &trans &trans &trans &trans &trans &trans >; }; layer_Factory { bindings = < &kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &kp EQUAL &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &kp MINUS &kp TAB &kp Q &kp W &kp E &kp R &kp T &kp Y &kp U &kp I &kp O &kp P &kp BSLH &kp ESC &kp A &kp S &kp D &kp F &kp G &kp H &kp J &kp K &kp L &kp SEMI &kp SQT &kp GRAVE &kp Z &kp X &kp C &kp V &kp B &kp LSHFT &kp LCTRL &lower &kp LGUI &kp RCTRL &kp RSHFT &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp PG_UP &magic LAYER_Magic 0 &kp HOME &kp END &kp LEFT &kp RIGHT &kp BSPC &kp DEL &kp LALT &kp RALT &kp RET &kp SPACE &kp UP &kp DOWN &kp LBKT &kp RBKT &kp PG_DN >; }; layer_Lower { bindings = < &kp C_BRI_DN &kp C_BRI_UP &kp C_PREV &kp C_NEXT &kp C_PP &kp C_MUTE &kp C_VOL_DN &kp C_VOL_UP &none &kp PAUSE_BREAK &kp EQUAL &none &none &none &none &kp HOME &kp LPAR &kp KP_NUM &kp KP_EQUAL &kp KP_SLASH &kp KP_MULTIPLY &kp PRINTSCREEN &kp TAB &none &none &kp UP_ARROW &none &kp END &kp RPAR &kp KP_N7 &kp KP_N8 &kp KP_N9 &kp KP_MINUS &kp SCROLLLOCK &kp ESC &none &kp LEFT_ARROW &kp DOWN_ARROW &kp RIGHT_ARROW &kp PG_UP &kp PERCENT &kp KP_N4 &kp KP_N5 &kp KP_N6 &kp KP_PLUS &kp KP_NUM &kp GRAVE &kp K_APP &none &kp F11 &kp F12 &kp PG_DN &tog LAYER_Function &tog LAYER_Typing &tog LAYER_Gaming &tog LAYER_Gaming &tog LAYER_Typing &tog LAYER_System &kp COMMA &kp KP_N1 &kp KP_N2 &kp KP_N3 &kp KP_ENTER &kp LALT &magic LAYER_Magic 0 &kp CAPS &kp INS &kp F11 &tog LAYER_Emoji &tog LAYER_Cursor &tog LAYER_Number &tog LAYER_Lower &tog LAYER_Lower &tog LAYER_Mouse &tog LAYER_Symbol &tog LAYER_World &kp KP_N0 &kp KP_DOT &kp KP_ENTER &magic LAYER_Magic 0 >; }; layer_Magic { bindings = < &bt BT_CLR &none &none &none &none &none &none &none &none &bt BT_CLR_ALL &to 0 &to 1 &to 2 &to 3 &to 4 &to 5 &to 6 &to 7 &to 8 &none &none &none &none &rgb_ug RGB_SPI &rgb_ug RGB_SAI &rgb_ug RGB_HUI &rgb_ug RGB_BRI &rgb_ug RGB_TOG &none &none &none &none &none &none &bootloader &rgb_ug RGB_SPD &rgb_ug RGB_SAD &rgb_ug RGB_HUD &rgb_ug RGB_BRD &rgb_ug RGB_EFF &none &none &none &none &none &bootloader &sys_reset &none &none &none &none &none &bt_2 &bt_3 &tog 29 &none &none &none &none &none &none &none &none &sys_reset &none &none &none &none &none &bt_0 &bt_1 &out OUT_USB &none &none &none &none &none &none &none &none >; }; }; };