From a07f2fb3588748f831ad19a38477dca91635a199 Mon Sep 17 00:00:00 2001 From: twadzinski Date: Wed, 3 Apr 2024 19:09:43 -0500 Subject: [PATCH 1/3] Initial layer-indicator support --- Rakefile | 20 +- keymap.dtsi | 572 ++++ keymap.dtsi.erb | 111 + keymap.json | 146 +- ...ammer-Keyboard-Overlay-Preset.bttpresetzip | Bin 0 -> 10568 bytes .../Resources/glove80/index.html | 63 + .../bttpreset-zipdir/presetjson.bttpreset | 3049 +++++++++++++++++ .../BetterTouchTool/presetjson.bttpreset.erb | 792 +++++ 8 files changed, 4679 insertions(+), 74 deletions(-) create mode 100644 layer-indicator/macos/BetterTouchTool/Glove80-Engrammer-Keyboard-Overlay-Preset.bttpresetzip create mode 100644 layer-indicator/macos/BetterTouchTool/bttpreset-zipdir/Resources/glove80/index.html create mode 100644 layer-indicator/macos/BetterTouchTool/bttpreset-zipdir/presetjson.bttpreset create mode 100644 layer-indicator/macos/BetterTouchTool/presetjson.bttpreset.erb diff --git a/Rakefile b/Rakefile index 63c10cf..d5c8f1e 100644 --- a/Rakefile +++ b/Rakefile @@ -1,7 +1,7 @@ require 'rake/clean' require 'erb' -task :default => [:dtsi, :dot] +task :default => [:dtsi, :btt, :dot] #----------------------------------------------------------------------------- # ZMK configuration snippet (DTSI) @@ -43,6 +43,24 @@ rule '.dtsi.min' => '.dtsi' do |t| File.write(t.name, minified) end +#----------------------------------------------------------------------------- +# Overlay indicator helpers +#----------------------------------------------------------------------------- + +#MacOS BetterTouchTool +btt_zip_dir_files = FileList['layer-indicator/macos/BetterTouchTool/bttpreset-zipdir/**/*'] +task :btt => %w[layer-indicator/macos/BetterTouchTool/bttpreset-zipdir/presetjson.bttpreset layer-indicator/macos/BetterTouchTool/Glove80-Engrammer-Keyboard-Overlay-Preset.bttpresetzip] + +# Create preset file if erb has changed +file 'layer-indicator/macos/BetterTouchTool/bttpreset-zipdir/presetjson.bttpreset' => 'layer-indicator/macos/BetterTouchTool/presetjson.bttpreset.erb' do |t| + sh "erb #{t.prerequisites[0]} > #{t.name}" +end +#Create preset zip file if anything under the bttpreset-zipdir dir changes, which includes the preset file. +file 'layer-indicator/macos/BetterTouchTool/Glove80-Engrammer-Keyboard-Overlay-Preset.bttpresetzip' => btt_zip_dir_files do |t| + sh "cd layer-indicator/macos/BetterTouchTool/bttpreset-zipdir; zip -FSr '../#{File.basename(t.name)}' *" +end + + #----------------------------------------------------------------------------- # Graphviz DOT for diagrams #----------------------------------------------------------------------------- diff --git a/keymap.dtsi b/keymap.dtsi index fd4979c..9fa1fa0 100644 --- a/keymap.dtsi +++ b/keymap.dtsi @@ -3,6 +3,7 @@ #define DIFFICULTY_LEVEL 0 // 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 USE_LAYER_INDICATORS // uncomment to active sending custom modifier key sequences when pressing layer keys (to allow for host OS to know which layer is pressed) // TIP: Add more setting overrides here instead of editing them below. ////////////////////////////////////////////////////////////////////////////// @@ -3860,6 +3861,180 @@ behaviors { // // Thumb cluster hold-tap keys for Miryoku layers // + + thumb_base: thumb_layer_access_base { + compatible = "zmk,behavior-hold-tap"; + flavor = THUMB_HOLDING_TYPE; + tapping-term-ms = ; + #ifdef ENABLE_KEY_REPEAT + quick-tap-ms = ; // enable repeat + #endif + #binding-cells = <2>; + bindings = <&la_switch_base>, <&kp>; + }; + + thumb_cursor: thumb_layer_access_cursor { + compatible = "zmk,behavior-hold-tap"; + flavor = THUMB_HOLDING_TYPE; + tapping-term-ms = ; + #ifdef ENABLE_KEY_REPEAT + quick-tap-ms = ; // enable repeat + #endif + #binding-cells = <2>; + bindings = <&la_switch_cursor>, <&kp>; + }; + + thumb_emoji: thumb_layer_access_emoji { + compatible = "zmk,behavior-hold-tap"; + flavor = THUMB_HOLDING_TYPE; + tapping-term-ms = ; + #ifdef ENABLE_KEY_REPEAT + quick-tap-ms = ; // enable repeat + #endif + #binding-cells = <2>; + bindings = <&la_switch_emoji>, <&kp>; + }; + + thumb_factory: thumb_layer_access_factory { + compatible = "zmk,behavior-hold-tap"; + flavor = THUMB_HOLDING_TYPE; + tapping-term-ms = ; + #ifdef ENABLE_KEY_REPEAT + quick-tap-ms = ; // enable repeat + #endif + #binding-cells = <2>; + bindings = <&la_switch_factory>, <&kp>; + }; + + thumb_function: thumb_layer_access_function { + compatible = "zmk,behavior-hold-tap"; + flavor = THUMB_HOLDING_TYPE; + tapping-term-ms = ; + #ifdef ENABLE_KEY_REPEAT + quick-tap-ms = ; // enable repeat + #endif + #binding-cells = <2>; + bindings = <&la_switch_function>, <&kp>; + }; + + thumb_gaming: thumb_layer_access_gaming { + compatible = "zmk,behavior-hold-tap"; + flavor = THUMB_HOLDING_TYPE; + tapping-term-ms = ; + #ifdef ENABLE_KEY_REPEAT + quick-tap-ms = ; // enable repeat + #endif + #binding-cells = <2>; + bindings = <&la_switch_gaming>, <&kp>; + }; + + thumb_lower: thumb_layer_access_lower { + compatible = "zmk,behavior-hold-tap"; + flavor = THUMB_HOLDING_TYPE; + tapping-term-ms = ; + #ifdef ENABLE_KEY_REPEAT + quick-tap-ms = ; // enable repeat + #endif + #binding-cells = <2>; + bindings = <&la_switch_lower>, <&kp>; + }; + + thumb_magic: thumb_layer_access_magic { + compatible = "zmk,behavior-hold-tap"; + flavor = THUMB_HOLDING_TYPE; + tapping-term-ms = ; + #ifdef ENABLE_KEY_REPEAT + quick-tap-ms = ; // enable repeat + #endif + #binding-cells = <2>; + bindings = <&la_switch_magic>, <&kp>; + }; + + thumb_mouse: thumb_layer_access_mouse { + compatible = "zmk,behavior-hold-tap"; + flavor = THUMB_HOLDING_TYPE; + tapping-term-ms = ; + #ifdef ENABLE_KEY_REPEAT + quick-tap-ms = ; // enable repeat + #endif + #binding-cells = <2>; + bindings = <&la_switch_mouse>, <&kp>; + }; + + thumb_number: thumb_layer_access_number { + compatible = "zmk,behavior-hold-tap"; + flavor = THUMB_HOLDING_TYPE; + tapping-term-ms = ; + #ifdef ENABLE_KEY_REPEAT + quick-tap-ms = ; // enable repeat + #endif + #binding-cells = <2>; + bindings = <&la_switch_number>, <&kp>; + }; + + thumb_symbol: thumb_layer_access_symbol { + compatible = "zmk,behavior-hold-tap"; + flavor = THUMB_HOLDING_TYPE; + tapping-term-ms = ; + #ifdef ENABLE_KEY_REPEAT + quick-tap-ms = ; // enable repeat + #endif + #binding-cells = <2>; + bindings = <&la_switch_symbol>, <&kp>; + }; + + thumb_system: thumb_layer_access_system { + compatible = "zmk,behavior-hold-tap"; + flavor = THUMB_HOLDING_TYPE; + tapping-term-ms = ; + #ifdef ENABLE_KEY_REPEAT + quick-tap-ms = ; // enable repeat + #endif + #binding-cells = <2>; + bindings = <&la_switch_system>, <&kp>; + }; + + thumb_typing: thumb_layer_access_typing { + compatible = "zmk,behavior-hold-tap"; + flavor = THUMB_HOLDING_TYPE; + tapping-term-ms = ; + #ifdef ENABLE_KEY_REPEAT + quick-tap-ms = ; // enable repeat + #endif + #binding-cells = <2>; + bindings = <&la_switch_typing>, <&kp>; + }; + + thumb_world: thumb_layer_access_world { + compatible = "zmk,behavior-hold-tap"; + flavor = THUMB_HOLDING_TYPE; + tapping-term-ms = ; + #ifdef ENABLE_KEY_REPEAT + quick-tap-ms = ; // enable repeat + #endif + #binding-cells = <2>; + bindings = <&la_switch_world>, <&kp>; + }; + + + thumb_parang_left_world: thumb_layer_access_parang_left_world { + compatible = "zmk,behavior-hold-tap"; + flavor = THUMB_HOLDING_TYPE; + tapping-term-ms = ; + quick-tap-ms = ; // enable repeat + #binding-cells = <2>; + bindings = <&la_switch_world>, <¶ng_left>; + }; + + space_symbol: thumb_layer_access_spacebar_symbol { + compatible = "zmk,behavior-hold-tap"; + flavor = SPACE_HOLDING_TYPE; + tapping-term-ms = ; + quick-tap-ms = ; // enable repeat + #binding-cells = <2>; + bindings = <&la_switch_symbol>, <&kp>; + }; + thumb: thumb_layer_access { compatible = "zmk,behavior-hold-tap"; flavor = THUMB_HOLDING_TYPE; @@ -4235,6 +4410,403 @@ macros { bindings = <&kp LS(UP) &kp LS(_HOME)>; ) + // + // layer indicator macros + // + la_switch_base: switch_layer_base { + label = "switch_layer_base"; + compatible = "zmk,behavior-macro-one-param"; + #binding-cells = <1>; + bindings + = <¯o_param_1to1> + , <¯o_press &mo MACRO_PLACEHOLDER> + #ifdef USE_LAYER_INDICATORS + // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) + , <¯o_press &kp RALT> + , <¯o_press &kp RCTL> + , <¯o_press &kp RGUI> + , <¯o_press &kp RSFT> + , <¯o_release &kp RALT> + , <¯o_release &kp RCTL> + , <¯o_release &kp RGUI> + , <¯o_release &kp RSFT> + #endif + , <¯o_pause_for_release> + , <¯o_param_1to1> + , <¯o_release &mo MACRO_PLACEHOLDER> + #ifdef USE_LAYER_INDICATORS + //revert to home layer + , <¯o_tap &kp F18> + #endif + ; + }; + + la_switch_cursor: switch_layer_cursor { + label = "switch_layer_cursor"; + compatible = "zmk,behavior-macro-one-param"; + #binding-cells = <1>; + bindings + = <¯o_param_1to1> + , <¯o_press &mo MACRO_PLACEHOLDER> + #ifdef USE_LAYER_INDICATORS + // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) + , <¯o_press &kp RALT> + , <¯o_press &kp RCTL> + , <¯o_press &kp RSFT> + , <¯o_press &kp RGUI> + , <¯o_release &kp RALT> + , <¯o_release &kp RCTL> + , <¯o_release &kp RSFT> + , <¯o_release &kp RGUI> + #endif + , <¯o_pause_for_release> + , <¯o_param_1to1> + , <¯o_release &mo MACRO_PLACEHOLDER> + #ifdef USE_LAYER_INDICATORS + //revert to home layer + , <¯o_tap &kp F18> + #endif + ; + }; + + la_switch_emoji: switch_layer_emoji { + label = "switch_layer_emoji"; + compatible = "zmk,behavior-macro-one-param"; + #binding-cells = <1>; + bindings + = <¯o_param_1to1> + , <¯o_press &mo MACRO_PLACEHOLDER> + #ifdef USE_LAYER_INDICATORS + // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) + , <¯o_press &kp RALT> + , <¯o_press &kp RGUI> + , <¯o_press &kp RCTL> + , <¯o_press &kp RSFT> + , <¯o_release &kp RALT> + , <¯o_release &kp RGUI> + , <¯o_release &kp RCTL> + , <¯o_release &kp RSFT> + #endif + , <¯o_pause_for_release> + , <¯o_param_1to1> + , <¯o_release &mo MACRO_PLACEHOLDER> + #ifdef USE_LAYER_INDICATORS + //revert to home layer + , <¯o_tap &kp F18> + #endif + ; + }; + + la_switch_factory: switch_layer_factory { + label = "switch_layer_factory"; + compatible = "zmk,behavior-macro-one-param"; + #binding-cells = <1>; + bindings + = <¯o_param_1to1> + , <¯o_press &mo MACRO_PLACEHOLDER> + #ifdef USE_LAYER_INDICATORS + // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) + , <¯o_press &kp RALT> + , <¯o_press &kp RGUI> + , <¯o_press &kp RSFT> + , <¯o_press &kp RCTL> + , <¯o_release &kp RALT> + , <¯o_release &kp RGUI> + , <¯o_release &kp RSFT> + , <¯o_release &kp RCTL> + #endif + , <¯o_pause_for_release> + , <¯o_param_1to1> + , <¯o_release &mo MACRO_PLACEHOLDER> + #ifdef USE_LAYER_INDICATORS + //revert to home layer + , <¯o_tap &kp F18> + #endif + ; + }; + + la_switch_function: switch_layer_function { + label = "switch_layer_function"; + compatible = "zmk,behavior-macro-one-param"; + #binding-cells = <1>; + bindings + = <¯o_param_1to1> + , <¯o_press &mo MACRO_PLACEHOLDER> + #ifdef USE_LAYER_INDICATORS + // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) + , <¯o_press &kp RALT> + , <¯o_press &kp RSFT> + , <¯o_press &kp RCTL> + , <¯o_press &kp RGUI> + , <¯o_release &kp RALT> + , <¯o_release &kp RSFT> + , <¯o_release &kp RCTL> + , <¯o_release &kp RGUI> + #endif + , <¯o_pause_for_release> + , <¯o_param_1to1> + , <¯o_release &mo MACRO_PLACEHOLDER> + #ifdef USE_LAYER_INDICATORS + //revert to home layer + , <¯o_tap &kp F18> + #endif + ; + }; + + la_switch_gaming: switch_layer_gaming { + label = "switch_layer_gaming"; + compatible = "zmk,behavior-macro-one-param"; + #binding-cells = <1>; + bindings + = <¯o_param_1to1> + , <¯o_press &mo MACRO_PLACEHOLDER> + #ifdef USE_LAYER_INDICATORS + // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) + , <¯o_press &kp RALT> + , <¯o_press &kp RSFT> + , <¯o_press &kp RGUI> + , <¯o_press &kp RCTL> + , <¯o_release &kp RALT> + , <¯o_release &kp RSFT> + , <¯o_release &kp RGUI> + , <¯o_release &kp RCTL> + #endif + , <¯o_pause_for_release> + , <¯o_param_1to1> + , <¯o_release &mo MACRO_PLACEHOLDER> + #ifdef USE_LAYER_INDICATORS + //revert to home layer + , <¯o_tap &kp F18> + #endif + ; + }; + + la_switch_lower: switch_layer_lower { + label = "switch_layer_lower"; + compatible = "zmk,behavior-macro-one-param"; + #binding-cells = <1>; + bindings + = <¯o_param_1to1> + , <¯o_press &mo MACRO_PLACEHOLDER> + #ifdef USE_LAYER_INDICATORS + // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) + , <¯o_press &kp RCTL> + , <¯o_press &kp RALT> + , <¯o_press &kp RGUI> + , <¯o_press &kp RSFT> + , <¯o_release &kp RCTL> + , <¯o_release &kp RALT> + , <¯o_release &kp RGUI> + , <¯o_release &kp RSFT> + #endif + , <¯o_pause_for_release> + , <¯o_param_1to1> + , <¯o_release &mo MACRO_PLACEHOLDER> + #ifdef USE_LAYER_INDICATORS + //revert to home layer + , <¯o_tap &kp F18> + #endif + ; + }; + + la_switch_magic: switch_layer_magic { + label = "switch_layer_magic"; + compatible = "zmk,behavior-macro-one-param"; + #binding-cells = <1>; + bindings + = <¯o_param_1to1> + , <¯o_press &mo MACRO_PLACEHOLDER> + #ifdef USE_LAYER_INDICATORS + // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) + , <¯o_press &kp RCTL> + , <¯o_press &kp RALT> + , <¯o_press &kp RSFT> + , <¯o_press &kp RGUI> + , <¯o_release &kp RCTL> + , <¯o_release &kp RALT> + , <¯o_release &kp RSFT> + , <¯o_release &kp RGUI> + #endif + , <¯o_pause_for_release> + , <¯o_param_1to1> + , <¯o_release &mo MACRO_PLACEHOLDER> + #ifdef USE_LAYER_INDICATORS + //revert to home layer + , <¯o_tap &kp F18> + #endif + ; + }; + + la_switch_mouse: switch_layer_mouse { + label = "switch_layer_mouse"; + compatible = "zmk,behavior-macro-one-param"; + #binding-cells = <1>; + bindings + = <¯o_param_1to1> + , <¯o_press &mo MACRO_PLACEHOLDER> + #ifdef USE_LAYER_INDICATORS + // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) + , <¯o_press &kp RCTL> + , <¯o_press &kp RGUI> + , <¯o_press &kp RALT> + , <¯o_press &kp RSFT> + , <¯o_release &kp RCTL> + , <¯o_release &kp RGUI> + , <¯o_release &kp RALT> + , <¯o_release &kp RSFT> + #endif + , <¯o_pause_for_release> + , <¯o_param_1to1> + , <¯o_release &mo MACRO_PLACEHOLDER> + #ifdef USE_LAYER_INDICATORS + //revert to home layer + , <¯o_tap &kp F18> + #endif + ; + }; + + la_switch_number: switch_layer_number { + label = "switch_layer_number"; + compatible = "zmk,behavior-macro-one-param"; + #binding-cells = <1>; + bindings + = <¯o_param_1to1> + , <¯o_press &mo MACRO_PLACEHOLDER> + #ifdef USE_LAYER_INDICATORS + // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) + , <¯o_press &kp RCTL> + , <¯o_press &kp RGUI> + , <¯o_press &kp RSFT> + , <¯o_press &kp RALT> + , <¯o_release &kp RCTL> + , <¯o_release &kp RGUI> + , <¯o_release &kp RSFT> + , <¯o_release &kp RALT> + #endif + , <¯o_pause_for_release> + , <¯o_param_1to1> + , <¯o_release &mo MACRO_PLACEHOLDER> + #ifdef USE_LAYER_INDICATORS + //revert to home layer + , <¯o_tap &kp F18> + #endif + ; + }; + + la_switch_symbol: switch_layer_symbol { + label = "switch_layer_symbol"; + compatible = "zmk,behavior-macro-one-param"; + #binding-cells = <1>; + bindings + = <¯o_param_1to1> + , <¯o_press &mo MACRO_PLACEHOLDER> + #ifdef USE_LAYER_INDICATORS + // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) + , <¯o_press &kp RCTL> + , <¯o_press &kp RSFT> + , <¯o_press &kp RALT> + , <¯o_press &kp RGUI> + , <¯o_release &kp RCTL> + , <¯o_release &kp RSFT> + , <¯o_release &kp RALT> + , <¯o_release &kp RGUI> + #endif + , <¯o_pause_for_release> + , <¯o_param_1to1> + , <¯o_release &mo MACRO_PLACEHOLDER> + #ifdef USE_LAYER_INDICATORS + //revert to home layer + , <¯o_tap &kp F18> + #endif + ; + }; + + la_switch_system: switch_layer_system { + label = "switch_layer_system"; + compatible = "zmk,behavior-macro-one-param"; + #binding-cells = <1>; + bindings + = <¯o_param_1to1> + , <¯o_press &mo MACRO_PLACEHOLDER> + #ifdef USE_LAYER_INDICATORS + // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) + , <¯o_press &kp RCTL> + , <¯o_press &kp RSFT> + , <¯o_press &kp RGUI> + , <¯o_press &kp RALT> + , <¯o_release &kp RCTL> + , <¯o_release &kp RSFT> + , <¯o_release &kp RGUI> + , <¯o_release &kp RALT> + #endif + , <¯o_pause_for_release> + , <¯o_param_1to1> + , <¯o_release &mo MACRO_PLACEHOLDER> + #ifdef USE_LAYER_INDICATORS + //revert to home layer + , <¯o_tap &kp F18> + #endif + ; + }; + + la_switch_typing: switch_layer_typing { + label = "switch_layer_typing"; + compatible = "zmk,behavior-macro-one-param"; + #binding-cells = <1>; + bindings + = <¯o_param_1to1> + , <¯o_press &mo MACRO_PLACEHOLDER> + #ifdef USE_LAYER_INDICATORS + // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) + , <¯o_press &kp RGUI> + , <¯o_press &kp RALT> + , <¯o_press &kp RCTL> + , <¯o_press &kp RSFT> + , <¯o_release &kp RGUI> + , <¯o_release &kp RALT> + , <¯o_release &kp RCTL> + , <¯o_release &kp RSFT> + #endif + , <¯o_pause_for_release> + , <¯o_param_1to1> + , <¯o_release &mo MACRO_PLACEHOLDER> + #ifdef USE_LAYER_INDICATORS + //revert to home layer + , <¯o_tap &kp F18> + #endif + ; + }; + + la_switch_world: switch_layer_world { + label = "switch_layer_world"; + compatible = "zmk,behavior-macro-one-param"; + #binding-cells = <1>; + bindings + = <¯o_param_1to1> + , <¯o_press &mo MACRO_PLACEHOLDER> + #ifdef USE_LAYER_INDICATORS + // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) + , <¯o_press &kp RGUI> + , <¯o_press &kp RALT> + , <¯o_press &kp RSFT> + , <¯o_press &kp RCTL> + , <¯o_release &kp RGUI> + , <¯o_release &kp RALT> + , <¯o_release &kp RSFT> + , <¯o_release &kp RCTL> + #endif + , <¯o_pause_for_release> + , <¯o_param_1to1> + , <¯o_release &mo MACRO_PLACEHOLDER> + #ifdef USE_LAYER_INDICATORS + //revert to home layer + , <¯o_tap &kp F18> + #endif + ; + }; + + + ////////////////////////////////////////////////////////////////////////// // // World layer - international characters diff --git a/keymap.dtsi.erb b/keymap.dtsi.erb index 7406fde..ccbada2 100644 --- a/keymap.dtsi.erb +++ b/keymap.dtsi.erb @@ -3,6 +3,7 @@ #define DIFFICULTY_LEVEL 0 // 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 USE_LAYER_INDICATORS // uncomment to active sending custom modifier key sequences when pressing layer keys (to allow for host OS to know which layer is pressed) // TIP: Add more setting overrides here instead of editing them below. ////////////////////////////////////////////////////////////////////////////// @@ -225,6 +226,36 @@ <% end %> +<% + # List of indicator layers that have diagrams. This name matches the diagram file convention - -layer-diagram.png + # PR QUESTION: Is this list already in a variable somewhere? + # PR QUESTION: this is duplicated in layer-indicator/macos/BetterTouchTool/presetjson.bttpreset.erb. Any idea for reuse rather than duplication? + OVERLAY_INDICATOR_LAYERS = %w[ + base + cursor + emoji + factory + function + gaming + lower + magic + mouse + number + symbol + system + typing + world + ] + OVERLAY_INDICATOR_MODS = %w[ + RALT + RCTL + RGUI + RSFT + ] + OVERLAY_INDICATOR_MODS_PERMUTATIONS = OVERLAY_INDICATOR_MODS.permutation + # produces [RALT RCTL RGUI RSFT], [RALT RCTL RSFT RGUI], ... (24 unique sequences) + +%> combos { compatible = "zmk,combos"; @@ -853,6 +884,43 @@ behaviors { // // Thumb cluster hold-tap keys for Miryoku layers // + + <% + OVERLAY_INDICATOR_LAYERS.each do |indicator_layer_name| + %> + thumb_<%= indicator_layer_name %>: thumb_layer_access_<%= indicator_layer_name %> { + compatible = "zmk,behavior-hold-tap"; + flavor = THUMB_HOLDING_TYPE; + tapping-term-ms = ; + #ifdef ENABLE_KEY_REPEAT + quick-tap-ms = ; // enable repeat + #endif + #binding-cells = <2>; + bindings = <&la_switch_<%= indicator_layer_name %>>, <&kp>; + }; + + <% + end + %> + + thumb_parang_left_world: thumb_layer_access_parang_left_world { + compatible = "zmk,behavior-hold-tap"; + flavor = THUMB_HOLDING_TYPE; + tapping-term-ms = ; + quick-tap-ms = ; // enable repeat + #binding-cells = <2>; + bindings = <&la_switch_world>, <¶ng_left>; + }; + + space_symbol: thumb_layer_access_spacebar_symbol { + compatible = "zmk,behavior-hold-tap"; + flavor = SPACE_HOLDING_TYPE; + tapping-term-ms = ; + quick-tap-ms = ; // enable repeat + #binding-cells = <2>; + bindings = <&la_switch_symbol>, <&kp>; + }; + thumb: thumb_layer_access { compatible = "zmk,behavior-hold-tap"; flavor = THUMB_HOLDING_TYPE; @@ -1152,6 +1220,49 @@ macros { bindings = <&kp LS(UP) &kp LS(_HOME)>; ) + // + // layer indicator macros + // + <% + OVERLAY_INDICATOR_MODS_PERMUTATIONS.each_with_index do |mod_sequence, mod_sequence_index| + # Note: at most this supports 24 different layers. It will just not make macros for any 25th, 26th layer in OVERLAY_INDICATOR_LAYERS + if mod_sequence_index < OVERLAY_INDICATOR_LAYERS.size + indicator_layer_name = OVERLAY_INDICATOR_LAYERS[mod_sequence_index] + %> + la_switch_<%= indicator_layer_name %>: switch_layer_<%= indicator_layer_name %> { + label = "switch_layer_<%= indicator_layer_name %>"; + compatible = "zmk,behavior-macro-one-param"; + #binding-cells = <1>; + bindings + = <¯o_param_1to1> + , <¯o_press &mo MACRO_PLACEHOLDER> + #ifdef USE_LAYER_INDICATORS + // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) + , <¯o_press &kp <%= mod_sequence[0] %>> + , <¯o_press &kp <%= mod_sequence[1] %>> + , <¯o_press &kp <%= mod_sequence[2] %>> + , <¯o_press &kp <%= mod_sequence[3] %>> + , <¯o_release &kp <%= mod_sequence[0] %>> + , <¯o_release &kp <%= mod_sequence[1] %>> + , <¯o_release &kp <%= mod_sequence[2] %>> + , <¯o_release &kp <%= mod_sequence[3] %>> + #endif + , <¯o_pause_for_release> + , <¯o_param_1to1> + , <¯o_release &mo MACRO_PLACEHOLDER> + #ifdef USE_LAYER_INDICATORS + //revert to home layer + , <¯o_tap &kp F18> + #endif + ; + }; + + <% + end + end + %> + + ////////////////////////////////////////////////////////////////////////// // // World layer - international characters diff --git a/keymap.json b/keymap.json index 66caa64..d94335c 100644 --- a/keymap.json +++ b/keymap.json @@ -530,7 +530,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Function ESC", + "value": "&thumb_function LAYER_Function ESC", "params": [] } ] @@ -575,7 +575,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_System ENTER", + "value": "&thumb_system LAYER_System ENTER", "params": [] } ] @@ -669,7 +669,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Emoji END", + "value": "&thumb_emoji LAYER_Emoji END", "params": [] } ] @@ -678,7 +678,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Cursor BACKSPACE", + "value": "&thumb_cursor LAYER_Cursor BACKSPACE", "params": [] } ] @@ -687,7 +687,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Number DELETE", + "value": "&thumb_number LAYER_Number DELETE", "params": [] } ] @@ -714,7 +714,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Mouse TAB", + "value": "&thumb_mouse LAYER_Mouse TAB", "params": [] } ] @@ -723,7 +723,7 @@ "value": "Custom", "params": [ { - "value": "&space LAYER_Symbol SPACE", + "value": "&space_symbol LAYER_Symbol SPACE", "params": [] } ] @@ -732,7 +732,7 @@ "value": "Custom", "params": [ { - "value": "&thumb_parang_left LAYER_World 0", + "value": "&thumb_parang_left_world LAYER_World 0", "params": [] } ] @@ -1237,7 +1237,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Function ESC", + "value": "&thumb_function LAYER_Function ESC", "params": [] } ] @@ -1282,7 +1282,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_System ENTER", + "value": "&thumb_system LAYER_System ENTER", "params": [] } ] @@ -1376,7 +1376,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Emoji END", + "value": "&thumb_emoji LAYER_Emoji END", "params": [] } ] @@ -1385,7 +1385,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Cursor BACKSPACE", + "value": "&thumb_cursor LAYER_Cursor BACKSPACE", "params": [] } ] @@ -1394,7 +1394,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Number DELETE", + "value": "&thumb_number LAYER_Number DELETE", "params": [] } ] @@ -1421,7 +1421,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Mouse TAB", + "value": "&thumb_mouse LAYER_Mouse TAB", "params": [] } ] @@ -1430,7 +1430,7 @@ "value": "Custom", "params": [ { - "value": "&space LAYER_Symbol SPACE", + "value": "&space_symbol LAYER_Symbol SPACE", "params": [] } ] @@ -1439,7 +1439,7 @@ "value": "Custom", "params": [ { - "value": "&thumb_parang_left LAYER_World 0", + "value": "&thumb_parang_left_world LAYER_World 0", "params": [] } ] @@ -1944,7 +1944,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Function ESC", + "value": "&thumb_function LAYER_Function ESC", "params": [] } ] @@ -1989,7 +1989,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_System ENTER", + "value": "&thumb_system LAYER_System ENTER", "params": [] } ] @@ -2083,7 +2083,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Emoji END", + "value": "&thumb_emoji LAYER_Emoji END", "params": [] } ] @@ -2092,7 +2092,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Cursor BACKSPACE", + "value": "&thumb_cursor LAYER_Cursor BACKSPACE", "params": [] } ] @@ -2101,7 +2101,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Number DELETE", + "value": "&thumb_number LAYER_Number DELETE", "params": [] } ] @@ -2128,7 +2128,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Mouse TAB", + "value": "&thumb_mouse LAYER_Mouse TAB", "params": [] } ] @@ -2137,7 +2137,7 @@ "value": "Custom", "params": [ { - "value": "&space LAYER_Symbol SPACE", + "value": "&space_symbol LAYER_Symbol SPACE", "params": [] } ] @@ -2146,7 +2146,7 @@ "value": "Custom", "params": [ { - "value": "&thumb_parang_left LAYER_World 0", + "value": "&thumb_parang_left_world LAYER_World 0", "params": [] } ] @@ -2651,7 +2651,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Function ESC", + "value": "&thumb_function LAYER_Function ESC", "params": [] } ] @@ -2696,7 +2696,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_System ENTER", + "value": "&thumb_system LAYER_System ENTER", "params": [] } ] @@ -2790,7 +2790,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Emoji END", + "value": "&thumb_emoji LAYER_Emoji END", "params": [] } ] @@ -2799,7 +2799,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Cursor BACKSPACE", + "value": "&thumb_cursor LAYER_Cursor BACKSPACE", "params": [] } ] @@ -2808,7 +2808,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Number DELETE", + "value": "&thumb_number LAYER_Number DELETE", "params": [] } ] @@ -2835,7 +2835,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Mouse TAB", + "value": "&thumb_mouse LAYER_Mouse TAB", "params": [] } ] @@ -2844,7 +2844,7 @@ "value": "Custom", "params": [ { - "value": "&space LAYER_Symbol SPACE", + "value": "&space_symbol LAYER_Symbol SPACE", "params": [] } ] @@ -2853,7 +2853,7 @@ "value": "Custom", "params": [ { - "value": "&thumb_parang_left LAYER_World 0", + "value": "&thumb_parang_left_world LAYER_World 0", "params": [] } ] @@ -3358,7 +3358,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Function ESC", + "value": "&thumb_function LAYER_Function ESC", "params": [] } ] @@ -3403,7 +3403,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_System ENTER", + "value": "&thumb_system LAYER_System ENTER", "params": [] } ] @@ -3497,7 +3497,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Emoji END", + "value": "&thumb_emoji LAYER_Emoji END", "params": [] } ] @@ -3506,7 +3506,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Cursor BACKSPACE", + "value": "&thumb_cursor LAYER_Cursor BACKSPACE", "params": [] } ] @@ -3515,7 +3515,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Number DELETE", + "value": "&thumb_number LAYER_Number DELETE", "params": [] } ] @@ -3542,7 +3542,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Mouse TAB", + "value": "&thumb_mouse LAYER_Mouse TAB", "params": [] } ] @@ -3551,7 +3551,7 @@ "value": "Custom", "params": [ { - "value": "&space LAYER_Symbol SPACE", + "value": "&space_symbol LAYER_Symbol SPACE", "params": [] } ] @@ -3560,7 +3560,7 @@ "value": "Custom", "params": [ { - "value": "&thumb_parang_left LAYER_World 0", + "value": "&thumb_parang_left_world LAYER_World 0", "params": [] } ] @@ -4065,7 +4065,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Function ESC", + "value": "&thumb_function LAYER_Function ESC", "params": [] } ] @@ -4110,7 +4110,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_System ENTER", + "value": "&thumb_system LAYER_System ENTER", "params": [] } ] @@ -4204,7 +4204,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Emoji END", + "value": "&thumb_emoji LAYER_Emoji END", "params": [] } ] @@ -4213,7 +4213,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Cursor BACKSPACE", + "value": "&thumb_cursor LAYER_Cursor BACKSPACE", "params": [] } ] @@ -4222,7 +4222,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Number DELETE", + "value": "&thumb_number LAYER_Number DELETE", "params": [] } ] @@ -4249,7 +4249,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Mouse TAB", + "value": "&thumb_mouse LAYER_Mouse TAB", "params": [] } ] @@ -4258,7 +4258,7 @@ "value": "Custom", "params": [ { - "value": "&space LAYER_Symbol SPACE", + "value": "&space_symbol LAYER_Symbol SPACE", "params": [] } ] @@ -4267,7 +4267,7 @@ "value": "Custom", "params": [ { - "value": "&thumb_parang_left LAYER_World 0", + "value": "&thumb_parang_left_world LAYER_World 0", "params": [] } ] @@ -4772,7 +4772,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Function ESC", + "value": "&thumb_function LAYER_Function ESC", "params": [] } ] @@ -4817,7 +4817,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_System ENTER", + "value": "&thumb_system LAYER_System ENTER", "params": [] } ] @@ -4911,7 +4911,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Emoji END", + "value": "&thumb_emoji LAYER_Emoji END", "params": [] } ] @@ -4920,7 +4920,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Cursor BACKSPACE", + "value": "&thumb_cursor LAYER_Cursor BACKSPACE", "params": [] } ] @@ -4929,7 +4929,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Number DELETE", + "value": "&thumb_number LAYER_Number DELETE", "params": [] } ] @@ -4956,7 +4956,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Mouse TAB", + "value": "&thumb_mouse LAYER_Mouse TAB", "params": [] } ] @@ -4965,7 +4965,7 @@ "value": "Custom", "params": [ { - "value": "&space LAYER_Symbol SPACE", + "value": "&space_symbol LAYER_Symbol SPACE", "params": [] } ] @@ -4974,7 +4974,7 @@ "value": "Custom", "params": [ { - "value": "&thumb_parang_left LAYER_World 0", + "value": "&thumb_parang_left_world LAYER_World 0", "params": [] } ] @@ -5479,7 +5479,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Function ESC", + "value": "&thumb_function LAYER_Function ESC", "params": [] } ] @@ -5524,7 +5524,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_System ENTER", + "value": "&thumb_system LAYER_System ENTER", "params": [] } ] @@ -5618,7 +5618,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Emoji END", + "value": "&thumb_emoji LAYER_Emoji END", "params": [] } ] @@ -5627,7 +5627,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Cursor BACKSPACE", + "value": "&thumb_cursor LAYER_Cursor BACKSPACE", "params": [] } ] @@ -5636,7 +5636,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Number DELETE", + "value": "&thumb_number LAYER_Number DELETE", "params": [] } ] @@ -5663,7 +5663,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Mouse TAB", + "value": "&thumb_mouse LAYER_Mouse TAB", "params": [] } ] @@ -5672,7 +5672,7 @@ "value": "Custom", "params": [ { - "value": "&space LAYER_Symbol SPACE", + "value": "&space_symbol LAYER_Symbol SPACE", "params": [] } ] @@ -5681,7 +5681,7 @@ "value": "Custom", "params": [ { - "value": "&thumb_parang_left LAYER_World 0", + "value": "&thumb_parang_left_world LAYER_World 0", "params": [] } ] @@ -6186,7 +6186,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Function ESC", + "value": "&thumb_function LAYER_Function ESC", "params": [] } ] @@ -6231,7 +6231,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_System ENTER", + "value": "&thumb_system LAYER_System ENTER", "params": [] } ] @@ -6325,7 +6325,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Emoji END", + "value": "&thumb_emoji LAYER_Emoji END", "params": [] } ] @@ -6334,7 +6334,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Cursor BACKSPACE", + "value": "&thumb_cursor LAYER_Cursor BACKSPACE", "params": [] } ] @@ -6343,7 +6343,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Number DELETE", + "value": "&thumb_number LAYER_Number DELETE", "params": [] } ] @@ -6370,7 +6370,7 @@ "value": "Custom", "params": [ { - "value": "&thumb LAYER_Mouse TAB", + "value": "&thumb_mouse LAYER_Mouse TAB", "params": [] } ] @@ -6379,7 +6379,7 @@ "value": "Custom", "params": [ { - "value": "&space LAYER_Symbol SPACE", + "value": "&space_symbol LAYER_Symbol SPACE", "params": [] } ] @@ -6388,7 +6388,7 @@ "value": "Custom", "params": [ { - "value": "&thumb_parang_left LAYER_World 0", + "value": "&thumb_parang_left_world LAYER_World 0", "params": [] } ] @@ -18975,4 +18975,4 @@ "custom_defined_behaviors": "// NOTE: Use the `#define` settings below to customize this keymap!\n// For example, here are the main optional features you can enable:\n#define DIFFICULTY_LEVEL 0 // 0:custom, 1:easy -> 5:hard (see below)\n#define ENFORCE_BILATERAL // cancels single-handed home row mod+tap\n#define WORLD_USE_COMPOSE // use native Compose in place of Unicode\n// TIP: Add more setting overrides here instead of editing them below.\n\n//////////////////////////////////////////////////////////////////////////////\n//\n// Sunaku's Keymap v36 -- \"Glorious Engrammer\"\n// - https://github.com/sunaku/glove80-keymaps\n//\n//////////////////////////////////////////////////////////////////////////////\n\n//\n// DIFFICULTY_LEVEL specifies your level of expertise with this keymap.\n// It's meant to help newcomers gradually work their way up to mastery.\n// You can disable this setting by omitting it or assigning a `0` zero.\n//\n// #define DIFFICULTY_LEVEL 0 // custom (see defaults below)\n// #define DIFFICULTY_LEVEL 1 // novice (500ms)\n// #define DIFFICULTY_LEVEL 2 // slower (400ms)\n// #define DIFFICULTY_LEVEL 3 // normal (300ms)\n// #define DIFFICULTY_LEVEL 4 // faster (200ms)\n// #define DIFFICULTY_LEVEL 5 // expert (100ms)\n//\n#if defined(DIFFICULTY_LEVEL) && DIFFICULTY_LEVEL > 0\n#define DIFFICULTY_LEVEL_HOLDING_TIME ((6 - DIFFICULTY_LEVEL) * 100)\n#define DIFFICULTY_LEVEL_STREAK_DECAY (((6 - DIFFICULTY_LEVEL) * 50) + 100)\n#ifndef HOMEY_HOLDING_TIME\n#define HOMEY_HOLDING_TIME DIFFICULTY_LEVEL_HOLDING_TIME\n#endif\n#ifndef HOMEY_STREAK_DECAY\n#define HOMEY_STREAK_DECAY DIFFICULTY_LEVEL_STREAK_DECAY\n#endif\n#ifndef INDEX_HOLDING_TIME\n#define INDEX_HOLDING_TIME DIFFICULTY_LEVEL_HOLDING_TIME\n#endif\n#ifndef INDEX_STREAK_DECAY\n#define INDEX_STREAK_DECAY DIFFICULTY_LEVEL_STREAK_DECAY\n#endif\n#ifndef PLAIN_HOLDING_TIME\n#define PLAIN_HOLDING_TIME DIFFICULTY_LEVEL_HOLDING_TIME\n#endif\n#ifndef PLAIN_STREAK_DECAY\n#define PLAIN_STREAK_DECAY DIFFICULTY_LEVEL_STREAK_DECAY\n#endif\n#ifndef SPACE_HOLDING_TIME\n#define SPACE_HOLDING_TIME DIFFICULTY_LEVEL_HOLDING_TIME\n#endif\n#ifndef SPACE_STREAK_DECAY\n#define SPACE_STREAK_DECAY DIFFICULTY_LEVEL_STREAK_DECAY\n#endif\n#endif\n\n//\n// OPERATING_SYSTEM defines which operating system you intend to use\n// with this keymap, because shortcuts vary across operating systems.\n//\n// - https://zmk.dev/docs/codes\n// - https://en.wikipedia.org/wiki/Table_of_keyboard_shortcuts\n//\n#ifndef OPERATING_SYSTEM\n#define OPERATING_SYSTEM 'L' // linux\n//#define OPERATING_SYSTEM 'M' // macos\n//#define OPERATING_SYSTEM 'W' // windows\n#endif\n#if OPERATING_SYSTEM == 'M'\n #define _C LG\n #define _A_TAB LGUI\n #define _G_TAB LALT\n #define _REDO _C(LS(Z))\n #define _POWER K_POWER\n #define _W LA\n #define _HOME _C(LEFT)\n #define _END _C(RIGHT)\n#else\n #define _C LC\n #define _A_TAB LALT\n #define _G_TAB LGUI\n #define _REDO _C(Y)\n #define _POWER C_POWER\n #define _W _C\n #define _HOME HOME\n #define _END END\n#endif\n#define _SLEEP C_SLEEP\n#if OPERATING_SYSTEM == 'W'\n #define _LOCK LG(L)\n#elif OPERATING_SYSTEM == 'M'\n #define _LOCK _C(LC(Q))\n#elif OPERATING_SYSTEM == 'L'\n #define _LOCK K_LOCK\n#endif\n#define _UNDO _C(Z)\n#define _CUT _C(X)\n#define _COPY _C(C)\n#define _PASTE _C(V)\n#define _FIND _C(F)\n#define _FIND_NEXT _C(G)\n#define _FIND_PREV _C(LS(G))\n\n//\n// USE_NUMPAD_KEYCODES puts `KP_*` keycodes into the Number layer.\n//\n#ifdef USE_NUMPAD_KEYCODES\n#define _KP_N0 KP_N0\n#define _KP_N1 KP_N1\n#define _KP_N2 KP_N2\n#define _KP_N3 KP_N3\n#define _KP_N4 KP_N4\n#define _KP_N5 KP_N5\n#define _KP_N6 KP_N6\n#define _KP_N7 KP_N7\n#define _KP_N8 KP_N8\n#define _KP_N9 KP_N9\n#define _KP_PLUS KP_PLUS\n#define _KP_MINUS KP_MINUS\n#define _KP_ASTERISK KP_ASTERISK\n#define _KP_SLASH KP_SLASH\n#define _KP_COMMA KP_COMMA\n#define _KP_DOT KP_DOT\n#define _KP_EQUAL KP_EQUAL\n#define _KP_ENTER KP_ENTER\n#else\n#define _KP_N0 N0\n#define _KP_N1 N1\n#define _KP_N2 N2\n#define _KP_N3 N3\n#define _KP_N4 N4\n#define _KP_N5 N5\n#define _KP_N6 N6\n#define _KP_N7 N7\n#define _KP_N8 N8\n#define _KP_N9 N9\n#define _KP_PLUS PLUS\n#define _KP_MINUS MINUS\n#define _KP_ASTERISK ASTERISK\n#define _KP_SLASH SLASH\n#define _KP_COMMA COMMA\n#define _KP_DOT DOT\n#define _KP_EQUAL EQUAL\n#define _KP_ENTER ENTER\n#endif\n\n//\n// Glove80 specific symbol overrides to support non \"en-US\" locales\n//\n#undef AMPS\n#define AMPS LS(N7)\n#undef AT\n#define AT LS(N2)\n#undef CARET\n#define CARET LS(N6)\n#undef COLON\n#define COLON LS(SEMI)\n#undef DLLR\n#define DLLR LS(N4)\n#undef DQT\n#define DQT LS(SQT)\n#undef EXCL\n#define EXCL LS(N1)\n#undef GT\n#define GT LS(DOT)\n#undef HASH\n#define HASH LS(N3)\n#undef LBRC\n#define LBRC LS(LBKT)\n#undef LPAR\n#define LPAR LS(N9)\n#undef LT\n#define LT LS(COMMA)\n#undef PIPE\n#define PIPE LS(BSLH)\n#undef PLUS\n#define PLUS LS(EQUAL)\n#undef PRCNT\n#define PRCNT LS(N5)\n#undef QMARK\n#define QMARK LS(FSLH)\n#undef RBRC\n#define RBRC LS(RBKT)\n#undef RPAR\n#define RPAR LS(N0)\n#undef STAR\n#define STAR LS(N8)\n#undef TILDE\n#define TILDE LS(GRAVE)\n#undef UNDER\n#define UNDER LS(MINUS)\n\n//\n// Keymap specific knowledge of the base layer's alpha + ZMK layout\n//\n#if defined(LAYER_Engrammer) && LAYER_Engrammer == 0\n#define KEY_LH_C6R1 F1\n#define KEY_LH_C5R1 F2\n#define KEY_LH_C4R1 F3\n#define KEY_LH_C3R1 F4\n#define KEY_LH_C2R1 F5\n#define KEY_RH_C2R1 F6\n#define KEY_RH_C3R1 F7\n#define KEY_RH_C4R1 F8\n#define KEY_RH_C5R1 F9\n#define KEY_RH_C6R1 F10\n#define KEY_LH_C6R2 EQUAL\n#define KEY_LH_C5R2 N1\n#define KEY_LH_C4R2 N2\n#define KEY_LH_C3R2 N3\n#define KEY_LH_C2R2 N4\n#define KEY_LH_C1R2 N5\n#define KEY_RH_C1R2 N6\n#define KEY_RH_C2R2 N7\n#define KEY_RH_C3R2 N8\n#define KEY_RH_C4R2 N9\n#define KEY_RH_C5R2 N0\n#define KEY_RH_C6R2 BSLH\n#define KEY_LH_C6R3 GRAVE\n#define KEY_LH_C5R3 B\n#define KEY_LH_C4R3 Y\n#define KEY_LH_C3R3 O\n#define KEY_LH_C2R3 U\n#define KEY_LH_C1R3 SQT\n#define KEY_RH_C1R3 SEMI\n#define KEY_RH_C2R3 L\n#define KEY_RH_C3R3 D\n#define KEY_RH_C4R3 W\n#define KEY_RH_C5R3 V\n#define KEY_RH_C6R3 Z\n#define KEY_LH_C6R4 0\n#define KEY_LH_C5R4 C\n#define KEY_LH_C4R4 I\n#define KEY_LH_C3R4 E\n#define KEY_LH_C2R4 A\n#define KEY_LH_C1R4 COMMA\n#define KEY_RH_C1R4 DOT\n#define KEY_RH_C2R4 H\n#define KEY_RH_C3R4 T\n#define KEY_RH_C4R4 S\n#define KEY_RH_C5R4 N\n#define KEY_RH_C6R4 Q\n#define KEY_LH_C6R5 LSHFT\n#define KEY_LH_C5R5 G\n#define KEY_LH_C4R5 X\n#define KEY_LH_C3R5 J\n#define KEY_LH_C2R5 K\n#define KEY_LH_C1R5 MINUS\n#define KEY_LH_T1 ESC\n#define KEY_LH_T2 UP\n#define KEY_LH_T3 DOWN\n#define KEY_RH_T3 LEFT\n#define KEY_RH_T2 RIGHT\n#define KEY_RH_T1 ENTER\n#define KEY_RH_C1R5 FSLH\n#define KEY_RH_C2R5 R\n#define KEY_RH_C3R5 M\n#define KEY_RH_C4R5 F\n#define KEY_RH_C5R5 P\n#define KEY_RH_C6R5 RSHFT\n#define KEY_LH_C6R6 0\n#define KEY_LH_C5R6 HOME\n#define KEY_LH_C4R6 PG_UP\n#define KEY_LH_C3R6 PG_DN\n#define KEY_LH_C2R6 END\n#define KEY_LH_T4 BACKSPACE\n#define KEY_LH_T5 DELETE\n#define KEY_LH_T6 LSFT\n#define KEY_RH_T6 LSFT\n#define KEY_RH_T5 TAB\n#define KEY_RH_T4 SPACE\n#define KEY_RH_C2R6 LPAR\n#define KEY_RH_C3R6 LBKT\n#define KEY_RH_C4R6 RBKT\n#define KEY_RH_C5R6 RPAR\n#define KEY_RH_C6R6 0\n#endif\n#if defined(LAYER_Engram) && LAYER_Engram == 0\n#define KEY_LH_C6R1 F1\n#define KEY_LH_C5R1 F2\n#define KEY_LH_C4R1 F3\n#define KEY_LH_C3R1 F4\n#define KEY_LH_C2R1 F5\n#define KEY_RH_C2R1 F6\n#define KEY_RH_C3R1 F7\n#define KEY_RH_C4R1 F8\n#define KEY_RH_C5R1 F9\n#define KEY_RH_C6R1 F10\n#define KEY_LH_C6R2 LBKT\n#define KEY_LH_C5R2 N1\n#define KEY_LH_C4R2 N2\n#define KEY_LH_C3R2 N3\n#define KEY_LH_C2R2 N4\n#define KEY_LH_C1R2 N5\n#define KEY_RH_C1R2 N6\n#define KEY_RH_C2R2 N7\n#define KEY_RH_C3R2 N8\n#define KEY_RH_C4R2 N9\n#define KEY_RH_C5R2 N0\n#define KEY_RH_C6R2 RBKT\n#define KEY_LH_C6R3 AT\n#define KEY_LH_C5R3 B\n#define KEY_LH_C4R3 Y\n#define KEY_LH_C3R3 O\n#define KEY_LH_C2R3 U\n#define KEY_LH_C1R3 SQT\n#define KEY_RH_C1R3 DQT\n#define KEY_RH_C2R3 L\n#define KEY_RH_C3R3 D\n#define KEY_RH_C4R3 W\n#define KEY_RH_C5R3 V\n#define KEY_RH_C6R3 Z\n#define KEY_LH_C6R4 0\n#define KEY_LH_C5R4 C\n#define KEY_LH_C4R4 I\n#define KEY_LH_C3R4 E\n#define KEY_LH_C2R4 A\n#define KEY_LH_C1R4 COMMA\n#define KEY_RH_C1R4 DOT\n#define KEY_RH_C2R4 H\n#define KEY_RH_C3R4 T\n#define KEY_RH_C4R4 S\n#define KEY_RH_C5R4 N\n#define KEY_RH_C6R4 Q\n#define KEY_LH_C6R5 LSHFT\n#define KEY_LH_C5R5 G\n#define KEY_LH_C4R5 X\n#define KEY_LH_C3R5 J\n#define KEY_LH_C2R5 K\n#define KEY_LH_C1R5 MINUS\n#define KEY_LH_T1 ESC\n#define KEY_LH_T2 UP\n#define KEY_LH_T3 DOWN\n#define KEY_RH_T3 LEFT\n#define KEY_RH_T2 RIGHT\n#define KEY_RH_T1 ENTER\n#define KEY_RH_C1R5 QMARK\n#define KEY_RH_C2R5 R\n#define KEY_RH_C3R5 M\n#define KEY_RH_C4R5 F\n#define KEY_RH_C5R5 P\n#define KEY_RH_C6R5 RSHFT\n#define KEY_LH_C6R6 0\n#define KEY_LH_C5R6 HOME\n#define KEY_LH_C4R6 PG_UP\n#define KEY_LH_C3R6 PG_DN\n#define KEY_LH_C2R6 END\n#define KEY_LH_T4 BACKSPACE\n#define KEY_LH_T5 DELETE\n#define KEY_LH_T6 LSFT\n#define KEY_RH_T6 LSFT\n#define KEY_RH_T5 TAB\n#define KEY_RH_T4 SPACE\n#define KEY_RH_C2R6 LPAR\n#define KEY_RH_C3R6 HASH\n#define KEY_RH_C4R6 FSLH\n#define KEY_RH_C5R6 RPAR\n#define KEY_RH_C6R6 0\n#endif\n#if defined(LAYER_Dvorak) && LAYER_Dvorak == 0\n#define KEY_LH_C6R1 F1\n#define KEY_LH_C5R1 F2\n#define KEY_LH_C4R1 F3\n#define KEY_LH_C3R1 F4\n#define KEY_LH_C2R1 F5\n#define KEY_RH_C2R1 F6\n#define KEY_RH_C3R1 F7\n#define KEY_RH_C4R1 F8\n#define KEY_RH_C5R1 F9\n#define KEY_RH_C6R1 F10\n#define KEY_LH_C6R2 EQUAL\n#define KEY_LH_C5R2 N1\n#define KEY_LH_C4R2 N2\n#define KEY_LH_C3R2 N3\n#define KEY_LH_C2R2 N4\n#define KEY_LH_C1R2 N5\n#define KEY_RH_C1R2 N6\n#define KEY_RH_C2R2 N7\n#define KEY_RH_C3R2 N8\n#define KEY_RH_C4R2 N9\n#define KEY_RH_C5R2 N0\n#define KEY_RH_C6R2 BSLH\n#define KEY_LH_C6R3 GRAVE\n#define KEY_LH_C5R3 SQT\n#define KEY_LH_C4R3 COMMA\n#define KEY_LH_C3R3 DOT\n#define KEY_LH_C2R3 P\n#define KEY_LH_C1R3 Y\n#define KEY_RH_C1R3 F\n#define KEY_RH_C2R3 G\n#define KEY_RH_C3R3 C\n#define KEY_RH_C4R3 R\n#define KEY_RH_C5R3 L\n#define KEY_RH_C6R3 SLASH\n#define KEY_LH_C6R4 0\n#define KEY_LH_C5R4 A\n#define KEY_LH_C4R4 O\n#define KEY_LH_C3R4 E\n#define KEY_LH_C2R4 U\n#define KEY_LH_C1R4 I\n#define KEY_RH_C1R4 D\n#define KEY_RH_C2R4 H\n#define KEY_RH_C3R4 T\n#define KEY_RH_C4R4 N\n#define KEY_RH_C5R4 S\n#define KEY_RH_C6R4 MINUS\n#define KEY_LH_C6R5 LSHFT\n#define KEY_LH_C5R5 SEMI\n#define KEY_LH_C4R5 Q\n#define KEY_LH_C3R5 J\n#define KEY_LH_C2R5 K\n#define KEY_LH_C1R5 X\n#define KEY_LH_T1 ESC\n#define KEY_LH_T2 UP\n#define KEY_LH_T3 DOWN\n#define KEY_RH_T3 LEFT\n#define KEY_RH_T2 RIGHT\n#define KEY_RH_T1 ENTER\n#define KEY_RH_C1R5 B\n#define KEY_RH_C2R5 M\n#define KEY_RH_C3R5 W\n#define KEY_RH_C4R5 V\n#define KEY_RH_C5R5 Z\n#define KEY_RH_C6R5 RSHFT\n#define KEY_LH_C6R6 0\n#define KEY_LH_C5R6 HOME\n#define KEY_LH_C4R6 PG_UP\n#define KEY_LH_C3R6 PG_DN\n#define KEY_LH_C2R6 END\n#define KEY_LH_T4 BACKSPACE\n#define KEY_LH_T5 DELETE\n#define KEY_LH_T6 LSFT\n#define KEY_RH_T6 LSFT\n#define KEY_RH_T5 TAB\n#define KEY_RH_T4 SPACE\n#define KEY_RH_C2R6 LPAR\n#define KEY_RH_C3R6 LBKT\n#define KEY_RH_C4R6 RBKT\n#define KEY_RH_C5R6 RPAR\n#define KEY_RH_C6R6 0\n#endif\n#if defined(LAYER_ColemakDHm) && LAYER_ColemakDHm == 0\n#define KEY_LH_C6R1 F1\n#define KEY_LH_C5R1 F2\n#define KEY_LH_C4R1 F3\n#define KEY_LH_C3R1 F4\n#define KEY_LH_C2R1 F5\n#define KEY_RH_C2R1 F6\n#define KEY_RH_C3R1 F7\n#define KEY_RH_C4R1 F8\n#define KEY_RH_C5R1 F9\n#define KEY_RH_C6R1 F10\n#define KEY_LH_C6R2 EQUAL\n#define KEY_LH_C5R2 N1\n#define KEY_LH_C4R2 N2\n#define KEY_LH_C3R2 N3\n#define KEY_LH_C2R2 N4\n#define KEY_LH_C1R2 N5\n#define KEY_RH_C1R2 N6\n#define KEY_RH_C2R2 N7\n#define KEY_RH_C3R2 N8\n#define KEY_RH_C4R2 N9\n#define KEY_RH_C5R2 N0\n#define KEY_RH_C6R2 BSLH\n#define KEY_LH_C6R3 GRAVE\n#define KEY_LH_C5R3 Q\n#define KEY_LH_C4R3 W\n#define KEY_LH_C3R3 F\n#define KEY_LH_C2R3 P\n#define KEY_LH_C1R3 B\n#define KEY_RH_C1R3 J\n#define KEY_RH_C2R3 L\n#define KEY_RH_C3R3 U\n#define KEY_RH_C4R3 Y\n#define KEY_RH_C5R3 SEMI\n#define KEY_RH_C6R3 MINUS\n#define KEY_LH_C6R4 0\n#define KEY_LH_C5R4 A\n#define KEY_LH_C4R4 R\n#define KEY_LH_C3R4 S\n#define KEY_LH_C2R4 T\n#define KEY_LH_C1R4 G\n#define KEY_RH_C1R4 M\n#define KEY_RH_C2R4 N\n#define KEY_RH_C3R4 E\n#define KEY_RH_C4R4 I\n#define KEY_RH_C5R4 O\n#define KEY_RH_C6R4 SQT\n#define KEY_LH_C6R5 LSHFT\n#define KEY_LH_C5R5 Z\n#define KEY_LH_C4R5 X\n#define KEY_LH_C3R5 C\n#define KEY_LH_C2R5 D\n#define KEY_LH_C1R5 V\n#define KEY_LH_T1 ESC\n#define KEY_LH_T2 UP\n#define KEY_LH_T3 DOWN\n#define KEY_RH_T3 LEFT\n#define KEY_RH_T2 RIGHT\n#define KEY_RH_T1 ENTER\n#define KEY_RH_C1R5 K\n#define KEY_RH_C2R5 H\n#define KEY_RH_C3R5 COMMA\n#define KEY_RH_C4R5 DOT\n#define KEY_RH_C5R5 FSLH\n#define KEY_RH_C6R5 RSHFT\n#define KEY_LH_C6R6 0\n#define KEY_LH_C5R6 HOME\n#define KEY_LH_C4R6 PG_UP\n#define KEY_LH_C3R6 PG_DN\n#define KEY_LH_C2R6 END\n#define KEY_LH_T4 BACKSPACE\n#define KEY_LH_T5 DELETE\n#define KEY_LH_T6 LSFT\n#define KEY_RH_T6 LSFT\n#define KEY_RH_T5 TAB\n#define KEY_RH_T4 SPACE\n#define KEY_RH_C2R6 LPAR\n#define KEY_RH_C3R6 LBKT\n#define KEY_RH_C4R6 RBKT\n#define KEY_RH_C5R6 RPAR\n#define KEY_RH_C6R6 0\n#endif\n#if defined(LAYER_Colemak) && LAYER_Colemak == 0\n#define KEY_LH_C6R1 F1\n#define KEY_LH_C5R1 F2\n#define KEY_LH_C4R1 F3\n#define KEY_LH_C3R1 F4\n#define KEY_LH_C2R1 F5\n#define KEY_RH_C2R1 F6\n#define KEY_RH_C3R1 F7\n#define KEY_RH_C4R1 F8\n#define KEY_RH_C5R1 F9\n#define KEY_RH_C6R1 F10\n#define KEY_LH_C6R2 EQUAL\n#define KEY_LH_C5R2 N1\n#define KEY_LH_C4R2 N2\n#define KEY_LH_C3R2 N3\n#define KEY_LH_C2R2 N4\n#define KEY_LH_C1R2 N5\n#define KEY_RH_C1R2 N6\n#define KEY_RH_C2R2 N7\n#define KEY_RH_C3R2 N8\n#define KEY_RH_C4R2 N9\n#define KEY_RH_C5R2 N0\n#define KEY_RH_C6R2 BSLH\n#define KEY_LH_C6R3 GRAVE\n#define KEY_LH_C5R3 Q\n#define KEY_LH_C4R3 W\n#define KEY_LH_C3R3 F\n#define KEY_LH_C2R3 P\n#define KEY_LH_C1R3 G\n#define KEY_RH_C1R3 J\n#define KEY_RH_C2R3 L\n#define KEY_RH_C3R3 U\n#define KEY_RH_C4R3 Y\n#define KEY_RH_C5R3 SEMI\n#define KEY_RH_C6R3 MINUS\n#define KEY_LH_C6R4 0\n#define KEY_LH_C5R4 A\n#define KEY_LH_C4R4 R\n#define KEY_LH_C3R4 S\n#define KEY_LH_C2R4 T\n#define KEY_LH_C1R4 D\n#define KEY_RH_C1R4 H\n#define KEY_RH_C2R4 N\n#define KEY_RH_C3R4 E\n#define KEY_RH_C4R4 I\n#define KEY_RH_C5R4 O\n#define KEY_RH_C6R4 SQT\n#define KEY_LH_C6R5 LSHFT\n#define KEY_LH_C5R5 Z\n#define KEY_LH_C4R5 X\n#define KEY_LH_C3R5 C\n#define KEY_LH_C2R5 V\n#define KEY_LH_C1R5 B\n#define KEY_LH_T1 ESC\n#define KEY_LH_T2 UP\n#define KEY_LH_T3 DOWN\n#define KEY_RH_T3 LEFT\n#define KEY_RH_T2 RIGHT\n#define KEY_RH_T1 ENTER\n#define KEY_RH_C1R5 K\n#define KEY_RH_C2R5 M\n#define KEY_RH_C3R5 COMMA\n#define KEY_RH_C4R5 DOT\n#define KEY_RH_C5R5 FSLH\n#define KEY_RH_C6R5 RSHFT\n#define KEY_LH_C6R6 0\n#define KEY_LH_C5R6 HOME\n#define KEY_LH_C4R6 PG_UP\n#define KEY_LH_C3R6 PG_DN\n#define KEY_LH_C2R6 END\n#define KEY_LH_T4 BACKSPACE\n#define KEY_LH_T5 DELETE\n#define KEY_LH_T6 LSFT\n#define KEY_RH_T6 LSFT\n#define KEY_RH_T5 TAB\n#define KEY_RH_T4 SPACE\n#define KEY_RH_C2R6 LPAR\n#define KEY_RH_C3R6 LBKT\n#define KEY_RH_C4R6 RBKT\n#define KEY_RH_C5R6 RPAR\n#define KEY_RH_C6R6 0\n#endif\n#if defined(LAYER_QWERTY) && LAYER_QWERTY == 0\n#define KEY_LH_C6R1 F1\n#define KEY_LH_C5R1 F2\n#define KEY_LH_C4R1 F3\n#define KEY_LH_C3R1 F4\n#define KEY_LH_C2R1 F5\n#define KEY_RH_C2R1 F6\n#define KEY_RH_C3R1 F7\n#define KEY_RH_C4R1 F8\n#define KEY_RH_C5R1 F9\n#define KEY_RH_C6R1 F10\n#define KEY_LH_C6R2 EQUAL\n#define KEY_LH_C5R2 N1\n#define KEY_LH_C4R2 N2\n#define KEY_LH_C3R2 N3\n#define KEY_LH_C2R2 N4\n#define KEY_LH_C1R2 N5\n#define KEY_RH_C1R2 N6\n#define KEY_RH_C2R2 N7\n#define KEY_RH_C3R2 N8\n#define KEY_RH_C4R2 N9\n#define KEY_RH_C5R2 N0\n#define KEY_RH_C6R2 BSLH\n#define KEY_LH_C6R3 GRAVE\n#define KEY_LH_C5R3 Q\n#define KEY_LH_C4R3 W\n#define KEY_LH_C3R3 E\n#define KEY_LH_C2R3 R\n#define KEY_LH_C1R3 T\n#define KEY_RH_C1R3 Y\n#define KEY_RH_C2R3 U\n#define KEY_RH_C3R3 I\n#define KEY_RH_C4R3 O\n#define KEY_RH_C5R3 P\n#define KEY_RH_C6R3 MINUS\n#define KEY_LH_C6R4 0\n#define KEY_LH_C5R4 A\n#define KEY_LH_C4R4 S\n#define KEY_LH_C3R4 D\n#define KEY_LH_C2R4 F\n#define KEY_LH_C1R4 G\n#define KEY_RH_C1R4 H\n#define KEY_RH_C2R4 J\n#define KEY_RH_C3R4 K\n#define KEY_RH_C4R4 L\n#define KEY_RH_C5R4 SEMI\n#define KEY_RH_C6R4 SQT\n#define KEY_LH_C6R5 LSHFT\n#define KEY_LH_C5R5 Z\n#define KEY_LH_C4R5 X\n#define KEY_LH_C3R5 C\n#define KEY_LH_C2R5 V\n#define KEY_LH_C1R5 B\n#define KEY_LH_T1 ESC\n#define KEY_LH_T2 UP\n#define KEY_LH_T3 DOWN\n#define KEY_RH_T3 LEFT\n#define KEY_RH_T2 RIGHT\n#define KEY_RH_T1 ENTER\n#define KEY_RH_C1R5 N\n#define KEY_RH_C2R5 M\n#define KEY_RH_C3R5 COMMA\n#define KEY_RH_C4R5 DOT\n#define KEY_RH_C5R5 FSLH\n#define KEY_RH_C6R5 RSHFT\n#define KEY_LH_C6R6 0\n#define KEY_LH_C5R6 HOME\n#define KEY_LH_C4R6 PG_UP\n#define KEY_LH_C3R6 PG_DN\n#define KEY_LH_C2R6 END\n#define KEY_LH_T4 BACKSPACE\n#define KEY_LH_T5 DELETE\n#define KEY_LH_T6 LSFT\n#define KEY_RH_T6 LSFT\n#define KEY_RH_T5 TAB\n#define KEY_RH_T4 SPACE\n#define KEY_RH_C2R6 LPAR\n#define KEY_RH_C3R6 LBKT\n#define KEY_RH_C4R6 RBKT\n#define KEY_RH_C5R6 RPAR\n#define KEY_RH_C6R6 0\n#endif\n#if defined(LAYER_Norman) && LAYER_Norman == 0\n#define KEY_LH_C6R1 F1\n#define KEY_LH_C5R1 F2\n#define KEY_LH_C4R1 F3\n#define KEY_LH_C3R1 F4\n#define KEY_LH_C2R1 F5\n#define KEY_RH_C2R1 F6\n#define KEY_RH_C3R1 F7\n#define KEY_RH_C4R1 F8\n#define KEY_RH_C5R1 F9\n#define KEY_RH_C6R1 F10\n#define KEY_LH_C6R2 EQUAL\n#define KEY_LH_C5R2 N1\n#define KEY_LH_C4R2 N2\n#define KEY_LH_C3R2 N3\n#define KEY_LH_C2R2 N4\n#define KEY_LH_C1R2 N5\n#define KEY_RH_C1R2 N6\n#define KEY_RH_C2R2 N7\n#define KEY_RH_C3R2 N8\n#define KEY_RH_C4R2 N9\n#define KEY_RH_C5R2 N0\n#define KEY_RH_C6R2 BSLH\n#define KEY_LH_C6R3 GRAVE\n#define KEY_LH_C5R3 Q\n#define KEY_LH_C4R3 W\n#define KEY_LH_C3R3 D\n#define KEY_LH_C2R3 F\n#define KEY_LH_C1R3 K\n#define KEY_RH_C1R3 J\n#define KEY_RH_C2R3 U\n#define KEY_RH_C3R3 R\n#define KEY_RH_C4R3 L\n#define KEY_RH_C5R3 SEMI\n#define KEY_RH_C6R3 MINUS\n#define KEY_LH_C6R4 0\n#define KEY_LH_C5R4 A\n#define KEY_LH_C4R4 S\n#define KEY_LH_C3R4 E\n#define KEY_LH_C2R4 T\n#define KEY_LH_C1R4 G\n#define KEY_RH_C1R4 Y\n#define KEY_RH_C2R4 N\n#define KEY_RH_C3R4 I\n#define KEY_RH_C4R4 O\n#define KEY_RH_C5R4 H\n#define KEY_RH_C6R4 SQT\n#define KEY_LH_C6R5 LSHFT\n#define KEY_LH_C5R5 Z\n#define KEY_LH_C4R5 X\n#define KEY_LH_C3R5 C\n#define KEY_LH_C2R5 V\n#define KEY_LH_C1R5 B\n#define KEY_LH_T1 ESC\n#define KEY_LH_T2 UP\n#define KEY_LH_T3 DOWN\n#define KEY_RH_T3 LEFT\n#define KEY_RH_T2 RIGHT\n#define KEY_RH_T1 ENTER\n#define KEY_RH_C1R5 P\n#define KEY_RH_C2R5 M\n#define KEY_RH_C3R5 COMMA\n#define KEY_RH_C4R5 DOT\n#define KEY_RH_C5R5 FSLH\n#define KEY_RH_C6R5 RSHFT\n#define KEY_LH_C6R6 0\n#define KEY_LH_C5R6 HOME\n#define KEY_LH_C4R6 PG_UP\n#define KEY_LH_C3R6 PG_DN\n#define KEY_LH_C2R6 END\n#define KEY_LH_T4 BACKSPACE\n#define KEY_LH_T5 DELETE\n#define KEY_LH_T6 LSFT\n#define KEY_RH_T6 LSFT\n#define KEY_RH_T5 TAB\n#define KEY_RH_T4 SPACE\n#define KEY_RH_C2R6 LPAR\n#define KEY_RH_C3R6 LBKT\n#define KEY_RH_C4R6 RBKT\n#define KEY_RH_C5R6 RPAR\n#define KEY_RH_C6R6 0\n#endif\n#if defined(LAYER_Workman) && LAYER_Workman == 0\n#define KEY_LH_C6R1 F1\n#define KEY_LH_C5R1 F2\n#define KEY_LH_C4R1 F3\n#define KEY_LH_C3R1 F4\n#define KEY_LH_C2R1 F5\n#define KEY_RH_C2R1 F6\n#define KEY_RH_C3R1 F7\n#define KEY_RH_C4R1 F8\n#define KEY_RH_C5R1 F9\n#define KEY_RH_C6R1 F10\n#define KEY_LH_C6R2 EQUAL\n#define KEY_LH_C5R2 N1\n#define KEY_LH_C4R2 N2\n#define KEY_LH_C3R2 N3\n#define KEY_LH_C2R2 N4\n#define KEY_LH_C1R2 N5\n#define KEY_RH_C1R2 N6\n#define KEY_RH_C2R2 N7\n#define KEY_RH_C3R2 N8\n#define KEY_RH_C4R2 N9\n#define KEY_RH_C5R2 N0\n#define KEY_RH_C6R2 BSLH\n#define KEY_LH_C6R3 GRAVE\n#define KEY_LH_C5R3 Q\n#define KEY_LH_C4R3 D\n#define KEY_LH_C3R3 R\n#define KEY_LH_C2R3 W\n#define KEY_LH_C1R3 B\n#define KEY_RH_C1R3 J\n#define KEY_RH_C2R3 F\n#define KEY_RH_C3R3 U\n#define KEY_RH_C4R3 P\n#define KEY_RH_C5R3 SEMI\n#define KEY_RH_C6R3 MINUS\n#define KEY_LH_C6R4 0\n#define KEY_LH_C5R4 A\n#define KEY_LH_C4R4 S\n#define KEY_LH_C3R4 H\n#define KEY_LH_C2R4 T\n#define KEY_LH_C1R4 G\n#define KEY_RH_C1R4 Y\n#define KEY_RH_C2R4 N\n#define KEY_RH_C3R4 E\n#define KEY_RH_C4R4 O\n#define KEY_RH_C5R4 I\n#define KEY_RH_C6R4 SQT\n#define KEY_LH_C6R5 LSHFT\n#define KEY_LH_C5R5 Z\n#define KEY_LH_C4R5 X\n#define KEY_LH_C3R5 M\n#define KEY_LH_C2R5 C\n#define KEY_LH_C1R5 V\n#define KEY_LH_T1 ESC\n#define KEY_LH_T2 UP\n#define KEY_LH_T3 DOWN\n#define KEY_RH_T3 LEFT\n#define KEY_RH_T2 RIGHT\n#define KEY_RH_T1 ENTER\n#define KEY_RH_C1R5 K\n#define KEY_RH_C2R5 L\n#define KEY_RH_C3R5 COMMA\n#define KEY_RH_C4R5 DOT\n#define KEY_RH_C5R5 FSLH\n#define KEY_RH_C6R5 RSHFT\n#define KEY_LH_C6R6 0\n#define KEY_LH_C5R6 HOME\n#define KEY_LH_C4R6 PG_UP\n#define KEY_LH_C3R6 PG_DN\n#define KEY_LH_C2R6 END\n#define KEY_LH_T4 BACKSPACE\n#define KEY_LH_T5 DELETE\n#define KEY_LH_T6 LSFT\n#define KEY_RH_T6 LSFT\n#define KEY_RH_T5 TAB\n#define KEY_RH_T4 SPACE\n#define KEY_RH_C2R6 LPAR\n#define KEY_RH_C3R6 LBKT\n#define KEY_RH_C4R6 RBKT\n#define KEY_RH_C5R6 RPAR\n#define KEY_RH_C6R6 0\n#endif\n#if defined(LAYER_Halmak) && LAYER_Halmak == 0\n#define KEY_LH_C6R1 F1\n#define KEY_LH_C5R1 F2\n#define KEY_LH_C4R1 F3\n#define KEY_LH_C3R1 F4\n#define KEY_LH_C2R1 F5\n#define KEY_RH_C2R1 F6\n#define KEY_RH_C3R1 F7\n#define KEY_RH_C4R1 F8\n#define KEY_RH_C5R1 F9\n#define KEY_RH_C6R1 F10\n#define KEY_LH_C6R2 EQUAL\n#define KEY_LH_C5R2 N1\n#define KEY_LH_C4R2 N2\n#define KEY_LH_C3R2 N3\n#define KEY_LH_C2R2 N4\n#define KEY_LH_C1R2 N5\n#define KEY_RH_C1R2 N6\n#define KEY_RH_C2R2 N7\n#define KEY_RH_C3R2 N8\n#define KEY_RH_C4R2 N9\n#define KEY_RH_C5R2 N0\n#define KEY_RH_C6R2 BSLH\n#define KEY_LH_C6R3 GRAVE\n#define KEY_LH_C5R3 W\n#define KEY_LH_C4R3 L\n#define KEY_LH_C3R3 R\n#define KEY_LH_C2R3 B\n#define KEY_LH_C1R3 Z\n#define KEY_RH_C1R3 SEMI\n#define KEY_RH_C2R3 Q\n#define KEY_RH_C3R3 U\n#define KEY_RH_C4R3 D\n#define KEY_RH_C5R3 J\n#define KEY_RH_C6R3 MINUS\n#define KEY_LH_C6R4 0\n#define KEY_LH_C5R4 S\n#define KEY_LH_C4R4 H\n#define KEY_LH_C3R4 N\n#define KEY_LH_C2R4 T\n#define KEY_LH_C1R4 COMMA\n#define KEY_RH_C1R4 DOT\n#define KEY_RH_C2R4 A\n#define KEY_RH_C3R4 E\n#define KEY_RH_C4R4 O\n#define KEY_RH_C5R4 I\n#define KEY_RH_C6R4 SQT\n#define KEY_LH_C6R5 LSHFT\n#define KEY_LH_C5R5 F\n#define KEY_LH_C4R5 M\n#define KEY_LH_C3R5 V\n#define KEY_LH_C2R5 C\n#define KEY_LH_C1R5 FSLH\n#define KEY_LH_T1 ESC\n#define KEY_LH_T2 UP\n#define KEY_LH_T3 DOWN\n#define KEY_RH_T3 LEFT\n#define KEY_RH_T2 RIGHT\n#define KEY_RH_T1 ENTER\n#define KEY_RH_C1R5 G\n#define KEY_RH_C2R5 P\n#define KEY_RH_C3R5 X\n#define KEY_RH_C4R5 K\n#define KEY_RH_C5R5 Y\n#define KEY_RH_C6R5 RSHFT\n#define KEY_LH_C6R6 0\n#define KEY_LH_C5R6 HOME\n#define KEY_LH_C4R6 PG_UP\n#define KEY_LH_C3R6 PG_DN\n#define KEY_LH_C2R6 END\n#define KEY_LH_T4 BACKSPACE\n#define KEY_LH_T5 DELETE\n#define KEY_LH_T6 LSFT\n#define KEY_RH_T6 LSFT\n#define KEY_RH_T5 TAB\n#define KEY_RH_T4 SPACE\n#define KEY_RH_C2R6 LPAR\n#define KEY_RH_C3R6 LBKT\n#define KEY_RH_C4R6 RBKT\n#define KEY_RH_C5R6 RPAR\n#define KEY_RH_C6R6 0\n#endif\n\ncombos {\n compatible = \"zmk,combos\";\n\n //\n // COMBO_FIRING_DECAY defines how much time you have left (milliseconds)\n // after pressing the first key in a ZMK combo to finish the whole chord.\n //\n #ifndef COMBO_FIRING_DECAY\n #define COMBO_FIRING_DECAY 50\n #endif\n #ifdef LAYER_Gaming\n combo_gaming_layer_toggle {\n timeout-ms = ;\n key-positions = ;\n bindings = <&tog LAYER_Gaming>;\n layers = <0 LAYER_Gaming>;\n };\n #endif\n #ifdef _A_TAB\n combo_alt_tab_switcher {\n timeout-ms = ;\n key-positions = ;\n bindings = <&mod_tab_chord _A_TAB LAYER_Cursor>;\n layers = <0 1 2 3 4 5 6 7 8>;\n };\n #endif\n};\n\nbehaviors {\n\n //////////////////////////////////////////////////////////////////////////\n //\n // Miryoku layers and home row mods (ported from my QMK endgame)\n // - https://sunaku.github.io/home-row-mods.html#porting-to-zmk\n // - https://github.com/urob/zmk-config#timeless-homerow-mods\n //\n //////////////////////////////////////////////////////////////////////////\n\n //\n // ENFORCE_BILATERAL cancels out single-handed home row mods activation by\n // releasing any currently pressed mods and replacing them with plain taps.\n //\n // NOTE: You may still encounter \"flashing mods\" where an operating system\n // action is triggered by the release of mods, such as LGUI which launches\n // the Windows Start Menu and LALT which opens the Microsoft Office Ribbon.\n //\n //#define ENFORCE_BILATERAL\n\n //\n // The *_FINGER_MOD specify which modifiers are used by home row mod keys.\n // Here, we use Miryoku's \"GACS\" (Win, Alt, Ctrl, Shift) order by default,\n // unless OPERATING_SYSTEM is macOS, in which case Win & Ctrl are swapped.\n //\n #ifndef PINKY_FINGER_MOD\n #if OPERATING_SYSTEM == 'M'\n #define PINKY_FINGER_MOD LCTL\n #else\n #define PINKY_FINGER_MOD LGUI\n #endif\n #endif\n #ifndef RING1_FINGER_MOD\n #define RING1_FINGER_MOD LALT\n #endif\n #ifndef RING2_FINGER_MOD\n #define RING2_FINGER_MOD RALT\n #endif\n #ifndef MIDDY_FINGER_MOD\n #if OPERATING_SYSTEM == 'M'\n #define MIDDY_FINGER_MOD LGUI\n #else\n #define MIDDY_FINGER_MOD LCTL\n #endif\n #endif\n #ifndef INDEX_FINGER_MOD\n #define INDEX_FINGER_MOD LSFT\n #endif\n //\n // The following settings let you configure mods individually, per finger:\n //\n #ifndef LEFT_PINKY_MOD\n #define LEFT_PINKY_MOD PINKY_FINGER_MOD\n #endif\n #ifndef RIGHT_PINKY_MOD\n #define RIGHT_PINKY_MOD PINKY_FINGER_MOD\n #endif\n #ifndef LEFT_RING1_MOD\n #define LEFT_RING1_MOD RING1_FINGER_MOD\n #endif\n #ifndef RIGHT_RING1_MOD\n #define RIGHT_RING1_MOD RING1_FINGER_MOD\n #endif\n #ifndef LEFT_RING2_MOD\n #define LEFT_RING2_MOD RING2_FINGER_MOD\n #endif\n #ifndef RIGHT_RING2_MOD\n #define RIGHT_RING2_MOD RING2_FINGER_MOD\n #endif\n #ifndef LEFT_MIDDY_MOD\n #define LEFT_MIDDY_MOD MIDDY_FINGER_MOD\n #endif\n #ifndef RIGHT_MIDDY_MOD\n #define RIGHT_MIDDY_MOD MIDDY_FINGER_MOD\n #endif\n #ifndef LEFT_INDEX_MOD\n #define LEFT_INDEX_MOD INDEX_FINGER_MOD\n #endif\n #ifndef RIGHT_INDEX_MOD\n #define RIGHT_INDEX_MOD INDEX_FINGER_MOD\n #endif\n\n //\n // HOMEY_HOLDING_TYPE defines the flavor of ZMK hold-tap behavior to use\n // for the pinky, ring, and middle fingers (which are assigned to Super,\n // Alt, and Ctrl respectively in the Miryoku system) on home row keys.\n //\n #ifndef HOMEY_HOLDING_TYPE\n #define HOMEY_HOLDING_TYPE \"tap-preferred\"\n #endif\n\n //\n // HOMEY_HOLDING_TIME defines how long you need to hold (milliseconds)\n // home row mod keys in order to send their modifiers to the computer\n // (i.e. \"register\" them) for mod-click mouse usage (e.g. Ctrl-Click).\n //\n #ifndef HOMEY_HOLDING_TIME\n #define HOMEY_HOLDING_TIME 240 // TAPPING_TERM + ALLOW_CROSSOVER_AFTER\n #endif\n\n //\n // HOMEY_STREAK_DECAY defines how long you need to wait (milliseconds)\n // after typing before you can use home row mods again. It prevents\n // unintended activation of home row mods when you're actively typing.\n //\n #ifndef HOMEY_STREAK_DECAY\n #define HOMEY_STREAK_DECAY 160\n #endif\n\n //\n // HOMEY_REPEAT_DECAY defines how much time you have left (milliseconds)\n // after tapping a key to hold it again in order to make it auto-repeat.\n //\n #ifndef HOMEY_REPEAT_DECAY\n #define HOMEY_REPEAT_DECAY 300 // \"tap then hold\" for key auto-repeat\n #endif\n\n //\n // CHORD_HOLDING_TYPE defines the flavor of ZMK hold-tap behavior to use\n // for chorded home row mods (secondary keypresses in multi-mod chords).\n //\n #ifndef CHORD_HOLDING_TYPE\n #define CHORD_HOLDING_TYPE HOMEY_HOLDING_TYPE\n #endif\n\n //\n // CHORD_HOLDING_TIME defines how long you need to hold (milliseconds)\n // home row mod keys in order to send their modifiers to the computer\n // (i.e. \"register\" them) for mod-click mouse usage (e.g. Ctrl-Click).\n // This is specifically for secondary keypresses in multi-mod chords.\n //\n #ifndef CHORD_HOLDING_TIME\n #define CHORD_HOLDING_TIME 150\n #endif\n\n //\n // CHORD_STREAK_DECAY defines how long you need to wait (milliseconds)\n // after typing before you can use home row mods again. It prevents\n // unintended activation of home row mods when you're actively typing\n // This is specifically for secondary keypresses in multi-mod chords.\n //\n #ifndef CHORD_STREAK_DECAY\n #define CHORD_STREAK_DECAY HOMEY_STREAK_DECAY\n #endif\n\n //\n // CHORD_REPEAT_DECAY defines how much time you have left (milliseconds)\n // after tapping a key to hold it again in order to make it auto-repeat.\n // This is specifically for secondary keypresses in multi-mod chords.\n //\n #ifndef CHORD_REPEAT_DECAY\n #define CHORD_REPEAT_DECAY HOMEY_REPEAT_DECAY\n #endif\n\n //\n // INDEX_HOLDING_TYPE defines the flavor of ZMK hold-tap behavior to use\n // for index fingers (which Miryoku assigns to Shift) on home row keys.\n //\n // NOTE: The \"tap-preferred\" flavor of ZMK hold-tap for index finger keys\n // allows faster activation of the Shift modifier (without having to wait\n // for the modified key to be released as the \"balanced\" flavor requires).\n // Typing streaks and the `hold-trigger-on-release` setting are disabled\n // for the index fingers so as not to hinder their speed and dexterity.\n //\n #ifndef INDEX_HOLDING_TYPE\n #define INDEX_HOLDING_TYPE \"tap-preferred\"\n #endif\n\n //\n // INDEX_HOLDING_TIME defines how long you need to hold (milliseconds)\n // index finger keys in order to send their modifiers to the computer\n // (i.e. \"register\" them) for mod-click mouse usage (e.g. Shift-Click).\n //\n #ifndef INDEX_HOLDING_TIME\n #define INDEX_HOLDING_TIME 180\n #endif\n\n //\n // INDEX_STREAK_DECAY defines how long you need to wait (milliseconds)\n // after typing before you can use home row mods again. It prevents\n // unintended activation of home row mods when you're actively typing.\n //\n #ifndef INDEX_STREAK_DECAY\n #define INDEX_STREAK_DECAY 100\n #endif\n\n //\n // INDEX_REPEAT_DECAY defines how much time you have left (milliseconds)\n // after tapping a key to hold it again in order to make it auto-repeat.\n //\n #ifndef INDEX_REPEAT_DECAY\n #define INDEX_REPEAT_DECAY 300 // \"tap then hold\" for key auto-repeat\n #endif\n\n //\n // PLAIN_HOLDING_TYPE defines the flavor of ZMK hold-tap behavior to use\n // for index fingers (which Miryoku assigns to Shift) on home row keys.\n //\n // NOTE: The \"tap-preferred\" flavor of ZMK hold-tap for index finger keys\n // allows faster activation of the Shift modifier (without having to wait\n // for the modified key to be released as the \"balanced\" flavor requires).\n // Typing streaks and the `hold-trigger-on-release` setting are disabled\n // for the index fingers so as not to hinder their speed and dexterity.\n //\n #ifndef PLAIN_HOLDING_TYPE\n #define PLAIN_HOLDING_TYPE HOMEY_HOLDING_TYPE\n #endif\n\n //\n // PLAIN_HOLDING_TIME defines how long you need to hold (milliseconds)\n // index finger keys in order to send their modifiers to the computer\n // (i.e. \"register\" them) for mod-click mouse usage (e.g. Shift-Click).\n //\n #ifndef PLAIN_HOLDING_TIME\n #define PLAIN_HOLDING_TIME HOMEY_HOLDING_TIME\n #endif\n\n //\n // PLAIN_STREAK_DECAY defines how long you need to wait (milliseconds)\n // after typing before you can use home row mods again. It prevents\n // unintended activation of home row mods when you're actively typing.\n //\n #ifndef PLAIN_STREAK_DECAY\n #define PLAIN_STREAK_DECAY HOMEY_STREAK_DECAY\n #endif\n\n //\n // PLAIN_REPEAT_DECAY defines how much time you have left (milliseconds)\n // after tapping a key to hold it again in order to make it auto-repeat.\n //\n #ifndef PLAIN_REPEAT_DECAY\n #define PLAIN_REPEAT_DECAY 300 // \"tap then hold\" for key auto-repeat\n #endif\n\n //\n // THUMB_HOLDING_TYPE defines the flavor of ZMK hold-tap behavior to use\n // for the thumbs (which are assigned to 6 layers in the Miryoku system).\n //\n // NOTE: The \"balanced\" flavor of ZMK hold-tap provides instant modifier\n // activation for the symbol layer (if the tapped symbol key is released\n // while the thumb layer key is still held down) for quicker programming.\n //\n #ifndef THUMB_HOLDING_TYPE\n #define THUMB_HOLDING_TYPE \"balanced\"\n #endif\n\n //\n // THUMB_HOLDING_TIME defines how long you need to hold (milliseconds)\n // a thumb key to activate a layer. Shorter holds are treated as taps.\n //\n #ifndef THUMB_HOLDING_TIME\n #define THUMB_HOLDING_TIME 200\n #endif\n\n //\n // THUMB_REPEAT_DECAY defines how much time you have left (milliseconds)\n // after tapping a key to hold it again in order to make it auto-repeat.\n //\n #ifndef THUMB_REPEAT_DECAY\n #define THUMB_REPEAT_DECAY 300 // \"tap then hold\" for key auto-repeat\n #endif\n\n //\n // SPACE_HOLDING_TYPE defines the flavor of ZMK hold-tap behavior to use\n // for spacebar (assigned to the right thumb's home position by default).\n //\n // NOTE: The \"balanced\" flavor of ZMK hold-tap provides instant modifier\n // activation for the symbol layer (if the tapped symbol key is released\n // while the thumb layer key is still held down) for quicker programming.\n //\n #ifndef SPACE_HOLDING_TYPE\n #define SPACE_HOLDING_TYPE THUMB_HOLDING_TYPE\n #endif\n\n //\n // SPACE_HOLDING_TIME defines how long you need to hold (milliseconds)\n // the space thumb key to activate. Shorter holds are treated as taps.\n //\n #ifndef SPACE_HOLDING_TIME\n #define SPACE_HOLDING_TIME THUMB_HOLDING_TIME\n #endif\n\n //\n // SPACE_REPEAT_DECAY defines how much time you have left (milliseconds)\n // after tapping a key to hold it again in order to make it auto-repeat.\n //\n #ifndef SPACE_REPEAT_DECAY\n #define SPACE_REPEAT_DECAY 150\n #endif\n\n //\n // Glove80 key positions index for positional hold-tap\n // - https://discord.com/channels/877392805654306816/937645688244826154/1066713913351221248\n // - https://media.discordapp.net/attachments/937645688244826154/1066713913133121556/image.png\n //\n // |------------------------|------------------------|\n // | LEFT_HAND_KEYS | RIGHT_HAND_KEYS |\n // | | |\n // | 0 1 2 3 4 | 5 6 7 8 9 |\n // | 10 11 12 13 14 15 | 16 17 18 19 20 21 |\n // | 22 23 24 25 26 27 | 28 29 30 31 32 33 |\n // | 34 35 36 37 38 39 | 40 41 42 43 44 45 |\n // | 46 47 48 49 50 51 | 58 59 60 61 62 63 |\n // | 64 65 66 67 68 | 75 76 77 78 79 |\n // | 69 52 | 57 74 |\n // | 70 53 | 56 73 |\n // | 71 54 | 55 72 |\n // |------------------------|------------------------|\n //\n #define LEFT_HAND_KEYS \\\n 0 1 2 3 4 \\\n 10 11 12 13 14 15 \\\n 22 23 24 25 26 27 \\\n 34 35 36 37 38 39 \\\n 46 47 48 49 50 51 \\\n 64 65 66 67 68\n #define RIGHT_HAND_KEYS \\\n 5 6 7 8 9 \\\n 16 17 18 19 20 21 \\\n 28 29 30 31 32 33 \\\n 40 41 42 43 44 45 \\\n 58 59 60 61 62 63 \\\n 75 76 77 78 79\n #define THUMB_KEYS \\\n 69 52 57 74 \\\n 70 53 56 73 \\\n 71 54 55 72\n\n #define LEFT_PINKY_KEY KEY_LH_C5R4\n #define LEFT_RING1_KEY KEY_LH_C4R4\n #define LEFT_RING2_KEY KEY_LH_C4R3\n #define LEFT_MIDDY_KEY KEY_LH_C3R4\n #define LEFT_INDEX_KEY KEY_LH_C2R4\n #define LEFT_PLAIN_KEY KEY_LH_C1R4\n\n #define RIGHT_PINKY_KEY KEY_RH_C5R4\n #define RIGHT_RING1_KEY KEY_RH_C4R4\n #define RIGHT_RING2_KEY KEY_RH_C4R3\n #define RIGHT_MIDDY_KEY KEY_RH_C3R4\n #define RIGHT_INDEX_KEY KEY_RH_C2R4\n #define RIGHT_PLAIN_KEY KEY_RH_C1R4\n #if defined(LAYER_Engram) && LAYER_Engram == 0\n #define LeftPlainKey engram_COMMA\n #define RightPlainKey engram_DOT\n #else\n #define LeftPlainKey kp LEFT_PLAIN_KEY\n #define RightPlainKey kp RIGHT_PLAIN_KEY\n #endif\n\n //\n // Home row mods with bilateral combinations support\n //\n#ifndef PINKY_HOLDING_TYPE\n#define PINKY_HOLDING_TYPE HOMEY_HOLDING_TYPE\n#endif\n#ifndef PINKY_CHORD_HOLDING_TYPE\n#define PINKY_CHORD_HOLDING_TYPE CHORD_HOLDING_TYPE\n#endif\n#ifndef LEFT_PINKY_CHORD_HOLDING_TYPE\n#define LEFT_PINKY_CHORD_HOLDING_TYPE PINKY_CHORD_HOLDING_TYPE\n#endif\n#ifndef RIGHT_PINKY_CHORD_HOLDING_TYPE\n#define RIGHT_PINKY_CHORD_HOLDING_TYPE PINKY_CHORD_HOLDING_TYPE\n#endif\n#ifndef PINKY_HOLDING_TIME\n#define PINKY_HOLDING_TIME HOMEY_HOLDING_TIME\n#endif\n#ifndef PINKY_CHORD_HOLDING_TIME\n#define PINKY_CHORD_HOLDING_TIME CHORD_HOLDING_TIME\n#endif\n#ifndef LEFT_PINKY_CHORD_HOLDING_TIME\n#define LEFT_PINKY_CHORD_HOLDING_TIME PINKY_CHORD_HOLDING_TIME\n#endif\n#ifndef RIGHT_PINKY_CHORD_HOLDING_TIME\n#define RIGHT_PINKY_CHORD_HOLDING_TIME PINKY_CHORD_HOLDING_TIME\n#endif\n#ifndef PINKY_STREAK_DECAY\n#define PINKY_STREAK_DECAY HOMEY_STREAK_DECAY\n#endif\n#ifndef PINKY_CHORD_STREAK_DECAY\n#define PINKY_CHORD_STREAK_DECAY CHORD_STREAK_DECAY\n#endif\n#ifndef LEFT_PINKY_CHORD_STREAK_DECAY\n#define LEFT_PINKY_CHORD_STREAK_DECAY PINKY_CHORD_STREAK_DECAY\n#endif\n#ifndef RIGHT_PINKY_CHORD_STREAK_DECAY\n#define RIGHT_PINKY_CHORD_STREAK_DECAY PINKY_CHORD_STREAK_DECAY\n#endif\n#ifndef PINKY_REPEAT_DECAY\n#define PINKY_REPEAT_DECAY HOMEY_REPEAT_DECAY\n#endif\n#ifndef PINKY_CHORD_REPEAT_DECAY\n#define PINKY_CHORD_REPEAT_DECAY CHORD_REPEAT_DECAY\n#endif\n#ifndef LEFT_PINKY_CHORD_REPEAT_DECAY\n#define LEFT_PINKY_CHORD_REPEAT_DECAY PINKY_CHORD_REPEAT_DECAY\n#endif\n#ifndef RIGHT_PINKY_CHORD_REPEAT_DECAY\n#define RIGHT_PINKY_CHORD_REPEAT_DECAY PINKY_CHORD_REPEAT_DECAY\n#endif\n#ifndef RING1_HOLDING_TYPE\n#define RING1_HOLDING_TYPE HOMEY_HOLDING_TYPE\n#endif\n#ifndef RING1_CHORD_HOLDING_TYPE\n#define RING1_CHORD_HOLDING_TYPE CHORD_HOLDING_TYPE\n#endif\n#ifndef LEFT_RING1_CHORD_HOLDING_TYPE\n#define LEFT_RING1_CHORD_HOLDING_TYPE RING1_CHORD_HOLDING_TYPE\n#endif\n#ifndef RIGHT_RING1_CHORD_HOLDING_TYPE\n#define RIGHT_RING1_CHORD_HOLDING_TYPE RING1_CHORD_HOLDING_TYPE\n#endif\n#ifndef RING1_HOLDING_TIME\n#define RING1_HOLDING_TIME HOMEY_HOLDING_TIME\n#endif\n#ifndef RING1_CHORD_HOLDING_TIME\n#define RING1_CHORD_HOLDING_TIME CHORD_HOLDING_TIME\n#endif\n#ifndef LEFT_RING1_CHORD_HOLDING_TIME\n#define LEFT_RING1_CHORD_HOLDING_TIME RING1_CHORD_HOLDING_TIME\n#endif\n#ifndef RIGHT_RING1_CHORD_HOLDING_TIME\n#define RIGHT_RING1_CHORD_HOLDING_TIME RING1_CHORD_HOLDING_TIME\n#endif\n#ifndef RING1_STREAK_DECAY\n#define RING1_STREAK_DECAY HOMEY_STREAK_DECAY\n#endif\n#ifndef RING1_CHORD_STREAK_DECAY\n#define RING1_CHORD_STREAK_DECAY CHORD_STREAK_DECAY\n#endif\n#ifndef LEFT_RING1_CHORD_STREAK_DECAY\n#define LEFT_RING1_CHORD_STREAK_DECAY RING1_CHORD_STREAK_DECAY\n#endif\n#ifndef RIGHT_RING1_CHORD_STREAK_DECAY\n#define RIGHT_RING1_CHORD_STREAK_DECAY RING1_CHORD_STREAK_DECAY\n#endif\n#ifndef RING1_REPEAT_DECAY\n#define RING1_REPEAT_DECAY HOMEY_REPEAT_DECAY\n#endif\n#ifndef RING1_CHORD_REPEAT_DECAY\n#define RING1_CHORD_REPEAT_DECAY CHORD_REPEAT_DECAY\n#endif\n#ifndef LEFT_RING1_CHORD_REPEAT_DECAY\n#define LEFT_RING1_CHORD_REPEAT_DECAY RING1_CHORD_REPEAT_DECAY\n#endif\n#ifndef RIGHT_RING1_CHORD_REPEAT_DECAY\n#define RIGHT_RING1_CHORD_REPEAT_DECAY RING1_CHORD_REPEAT_DECAY\n#endif\n#ifndef RING2_HOLDING_TYPE\n#define RING2_HOLDING_TYPE HOMEY_HOLDING_TYPE\n#endif\n#ifndef RING2_CHORD_HOLDING_TYPE\n#define RING2_CHORD_HOLDING_TYPE CHORD_HOLDING_TYPE\n#endif\n#ifndef LEFT_RING2_CHORD_HOLDING_TYPE\n#define LEFT_RING2_CHORD_HOLDING_TYPE RING2_CHORD_HOLDING_TYPE\n#endif\n#ifndef RIGHT_RING2_CHORD_HOLDING_TYPE\n#define RIGHT_RING2_CHORD_HOLDING_TYPE RING2_CHORD_HOLDING_TYPE\n#endif\n#ifndef RING2_HOLDING_TIME\n#define RING2_HOLDING_TIME HOMEY_HOLDING_TIME\n#endif\n#ifndef RING2_CHORD_HOLDING_TIME\n#define RING2_CHORD_HOLDING_TIME CHORD_HOLDING_TIME\n#endif\n#ifndef LEFT_RING2_CHORD_HOLDING_TIME\n#define LEFT_RING2_CHORD_HOLDING_TIME RING2_CHORD_HOLDING_TIME\n#endif\n#ifndef RIGHT_RING2_CHORD_HOLDING_TIME\n#define RIGHT_RING2_CHORD_HOLDING_TIME RING2_CHORD_HOLDING_TIME\n#endif\n#ifndef RING2_STREAK_DECAY\n#define RING2_STREAK_DECAY HOMEY_STREAK_DECAY\n#endif\n#ifndef RING2_CHORD_STREAK_DECAY\n#define RING2_CHORD_STREAK_DECAY CHORD_STREAK_DECAY\n#endif\n#ifndef LEFT_RING2_CHORD_STREAK_DECAY\n#define LEFT_RING2_CHORD_STREAK_DECAY RING2_CHORD_STREAK_DECAY\n#endif\n#ifndef RIGHT_RING2_CHORD_STREAK_DECAY\n#define RIGHT_RING2_CHORD_STREAK_DECAY RING2_CHORD_STREAK_DECAY\n#endif\n#ifndef RING2_REPEAT_DECAY\n#define RING2_REPEAT_DECAY HOMEY_REPEAT_DECAY\n#endif\n#ifndef RING2_CHORD_REPEAT_DECAY\n#define RING2_CHORD_REPEAT_DECAY CHORD_REPEAT_DECAY\n#endif\n#ifndef LEFT_RING2_CHORD_REPEAT_DECAY\n#define LEFT_RING2_CHORD_REPEAT_DECAY RING2_CHORD_REPEAT_DECAY\n#endif\n#ifndef RIGHT_RING2_CHORD_REPEAT_DECAY\n#define RIGHT_RING2_CHORD_REPEAT_DECAY RING2_CHORD_REPEAT_DECAY\n#endif\n#ifndef MIDDY_HOLDING_TYPE\n#define MIDDY_HOLDING_TYPE HOMEY_HOLDING_TYPE\n#endif\n#ifndef MIDDY_CHORD_HOLDING_TYPE\n#define MIDDY_CHORD_HOLDING_TYPE CHORD_HOLDING_TYPE\n#endif\n#ifndef LEFT_MIDDY_CHORD_HOLDING_TYPE\n#define LEFT_MIDDY_CHORD_HOLDING_TYPE MIDDY_CHORD_HOLDING_TYPE\n#endif\n#ifndef RIGHT_MIDDY_CHORD_HOLDING_TYPE\n#define RIGHT_MIDDY_CHORD_HOLDING_TYPE MIDDY_CHORD_HOLDING_TYPE\n#endif\n#ifndef MIDDY_HOLDING_TIME\n#define MIDDY_HOLDING_TIME HOMEY_HOLDING_TIME\n#endif\n#ifndef MIDDY_CHORD_HOLDING_TIME\n#define MIDDY_CHORD_HOLDING_TIME CHORD_HOLDING_TIME\n#endif\n#ifndef LEFT_MIDDY_CHORD_HOLDING_TIME\n#define LEFT_MIDDY_CHORD_HOLDING_TIME MIDDY_CHORD_HOLDING_TIME\n#endif\n#ifndef RIGHT_MIDDY_CHORD_HOLDING_TIME\n#define RIGHT_MIDDY_CHORD_HOLDING_TIME MIDDY_CHORD_HOLDING_TIME\n#endif\n#ifndef MIDDY_STREAK_DECAY\n#define MIDDY_STREAK_DECAY HOMEY_STREAK_DECAY\n#endif\n#ifndef MIDDY_CHORD_STREAK_DECAY\n#define MIDDY_CHORD_STREAK_DECAY CHORD_STREAK_DECAY\n#endif\n#ifndef LEFT_MIDDY_CHORD_STREAK_DECAY\n#define LEFT_MIDDY_CHORD_STREAK_DECAY MIDDY_CHORD_STREAK_DECAY\n#endif\n#ifndef RIGHT_MIDDY_CHORD_STREAK_DECAY\n#define RIGHT_MIDDY_CHORD_STREAK_DECAY MIDDY_CHORD_STREAK_DECAY\n#endif\n#ifndef MIDDY_REPEAT_DECAY\n#define MIDDY_REPEAT_DECAY HOMEY_REPEAT_DECAY\n#endif\n#ifndef MIDDY_CHORD_REPEAT_DECAY\n#define MIDDY_CHORD_REPEAT_DECAY CHORD_REPEAT_DECAY\n#endif\n#ifndef LEFT_MIDDY_CHORD_REPEAT_DECAY\n#define LEFT_MIDDY_CHORD_REPEAT_DECAY MIDDY_CHORD_REPEAT_DECAY\n#endif\n#ifndef RIGHT_MIDDY_CHORD_REPEAT_DECAY\n#define RIGHT_MIDDY_CHORD_REPEAT_DECAY MIDDY_CHORD_REPEAT_DECAY\n#endif\n#ifndef INDEX_HOLDING_TYPE\n#define INDEX_HOLDING_TYPE HOMEY_HOLDING_TYPE\n#endif\n#ifndef INDEX_CHORD_HOLDING_TYPE\n#define INDEX_CHORD_HOLDING_TYPE CHORD_HOLDING_TYPE\n#endif\n#ifndef LEFT_INDEX_CHORD_HOLDING_TYPE\n#define LEFT_INDEX_CHORD_HOLDING_TYPE INDEX_CHORD_HOLDING_TYPE\n#endif\n#ifndef RIGHT_INDEX_CHORD_HOLDING_TYPE\n#define RIGHT_INDEX_CHORD_HOLDING_TYPE INDEX_CHORD_HOLDING_TYPE\n#endif\n#ifndef INDEX_HOLDING_TIME\n#define INDEX_HOLDING_TIME HOMEY_HOLDING_TIME\n#endif\n#ifndef INDEX_CHORD_HOLDING_TIME\n#define INDEX_CHORD_HOLDING_TIME CHORD_HOLDING_TIME\n#endif\n#ifndef LEFT_INDEX_CHORD_HOLDING_TIME\n#define LEFT_INDEX_CHORD_HOLDING_TIME INDEX_CHORD_HOLDING_TIME\n#endif\n#ifndef RIGHT_INDEX_CHORD_HOLDING_TIME\n#define RIGHT_INDEX_CHORD_HOLDING_TIME INDEX_CHORD_HOLDING_TIME\n#endif\n#ifndef INDEX_STREAK_DECAY\n#define INDEX_STREAK_DECAY HOMEY_STREAK_DECAY\n#endif\n#ifndef INDEX_CHORD_STREAK_DECAY\n#define INDEX_CHORD_STREAK_DECAY CHORD_STREAK_DECAY\n#endif\n#ifndef LEFT_INDEX_CHORD_STREAK_DECAY\n#define LEFT_INDEX_CHORD_STREAK_DECAY INDEX_CHORD_STREAK_DECAY\n#endif\n#ifndef RIGHT_INDEX_CHORD_STREAK_DECAY\n#define RIGHT_INDEX_CHORD_STREAK_DECAY INDEX_CHORD_STREAK_DECAY\n#endif\n#ifndef INDEX_REPEAT_DECAY\n#define INDEX_REPEAT_DECAY HOMEY_REPEAT_DECAY\n#endif\n#ifndef INDEX_CHORD_REPEAT_DECAY\n#define INDEX_CHORD_REPEAT_DECAY CHORD_REPEAT_DECAY\n#endif\n#ifndef LEFT_INDEX_CHORD_REPEAT_DECAY\n#define LEFT_INDEX_CHORD_REPEAT_DECAY INDEX_CHORD_REPEAT_DECAY\n#endif\n#ifndef RIGHT_INDEX_CHORD_REPEAT_DECAY\n#define RIGHT_INDEX_CHORD_REPEAT_DECAY INDEX_CHORD_REPEAT_DECAY\n#endif\n#ifndef LEFT_PINKY_HOLDING_TYPE\n#define LEFT_PINKY_HOLDING_TYPE PINKY_HOLDING_TYPE\n#endif\n#ifndef LEFT_PINKY_HOLDING_TIME\n#define LEFT_PINKY_HOLDING_TIME PINKY_HOLDING_TIME\n#endif\n#ifndef LEFT_PINKY_STREAK_DECAY\n#define LEFT_PINKY_STREAK_DECAY PINKY_STREAK_DECAY\n#endif\n#ifndef LEFT_PINKY_REPEAT_DECAY\n#define LEFT_PINKY_REPEAT_DECAY PINKY_REPEAT_DECAY\n#endif\n left_pinky: homey_left_pinky {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_PINKY_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n left_pinky_bilateral: homey_left_pinky_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_PINKY_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&left_pinky_hold>, <&kp>;\n };\n left_pinky_hold: homey_left_pinky_hold {\n compatible = \"zmk,behavior-macro-one-param\";\n wait-ms = <0>;\n tap-ms = <0>;\n #binding-cells = <1>;\n bindings\n = <¯o_param_1to1>\n , <¯o_press &kp MACRO_PLACEHOLDER>\n #ifdef LAYER_LeftPinky\n , <¯o_press &mo LAYER_LeftPinky>\n #endif\n , <¯o_pause_for_release>\n , <¯o_param_1to1>\n , <¯o_release &kp MACRO_PLACEHOLDER>\n #ifdef LAYER_LeftPinky\n , <¯o_release &mo LAYER_LeftPinky>\n #endif\n ;\n };\n left_pinky_tap: homey_left_pinky_tap {\n compatible = \"zmk,behavior-macro-one-param\";\n wait-ms = <0>;\n tap-ms = <0>;\n #binding-cells = <1>;\n bindings\n = <¯o_release\n &kp LSFT &kp RSFT\n &kp LALT &kp RALT\n &kp LCTL &kp RCTL\n &kp LGUI &kp RGUI>\n , <¯o_tap &kp LEFT_PINKY_KEY>\n , <¯o_param_1to1>\n , <¯o_tap &kp MACRO_PLACEHOLDER>\n ;\n };\n #define LeftPinky(key, layer_index) LeftPinky_unroll(layer_index) (key)\n #define LeftPinky_unroll(layer_index) LeftPinky_concat(LeftPinky_layer, layer_index)\n #define LeftPinky_concat(prefix, layer_index) prefix ## layer_index\n #ifdef ENFORCE_BILATERAL\n #define left_pinky_layer0_variant left_pinky_bilateral\n #else\n #define left_pinky_layer0_variant left_pinky\n #endif\n #define LeftPinky_layer0(key) left_pinky_layer0_variant LEFT_PINKY_MOD key\n #define LeftPinky_layer1(key) left_pinky LEFT_PINKY_MOD key\n #define LeftPinky_layer2(key) left_pinky LEFT_PINKY_MOD key\n #define LeftPinky_layer3(key) left_pinky LEFT_PINKY_MOD key\n #define LeftPinky_layer4(key) left_pinky LEFT_PINKY_MOD key\n #define LeftPinky_layer5(key) left_pinky LEFT_PINKY_MOD key\n #define LeftPinky_layer6(key) left_pinky LEFT_PINKY_MOD key\n #define LeftPinky_layer7(key) left_pinky LEFT_PINKY_MOD key\n #define LeftPinky_layer8(key) left_pinky LEFT_PINKY_MOD key\n#ifndef RIGHT_PINKY_HOLDING_TYPE\n#define RIGHT_PINKY_HOLDING_TYPE PINKY_HOLDING_TYPE\n#endif\n#ifndef RIGHT_PINKY_HOLDING_TIME\n#define RIGHT_PINKY_HOLDING_TIME PINKY_HOLDING_TIME\n#endif\n#ifndef RIGHT_PINKY_STREAK_DECAY\n#define RIGHT_PINKY_STREAK_DECAY PINKY_STREAK_DECAY\n#endif\n#ifndef RIGHT_PINKY_REPEAT_DECAY\n#define RIGHT_PINKY_REPEAT_DECAY PINKY_REPEAT_DECAY\n#endif\n right_pinky: homey_right_pinky {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_PINKY_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n right_pinky_bilateral: homey_right_pinky_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_PINKY_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&right_pinky_hold>, <&kp>;\n };\n right_pinky_hold: homey_right_pinky_hold {\n compatible = \"zmk,behavior-macro-one-param\";\n wait-ms = <0>;\n tap-ms = <0>;\n #binding-cells = <1>;\n bindings\n = <¯o_param_1to1>\n , <¯o_press &kp MACRO_PLACEHOLDER>\n #ifdef LAYER_RightPinky\n , <¯o_press &mo LAYER_RightPinky>\n #endif\n , <¯o_pause_for_release>\n , <¯o_param_1to1>\n , <¯o_release &kp MACRO_PLACEHOLDER>\n #ifdef LAYER_RightPinky\n , <¯o_release &mo LAYER_RightPinky>\n #endif\n ;\n };\n right_pinky_tap: homey_right_pinky_tap {\n compatible = \"zmk,behavior-macro-one-param\";\n wait-ms = <0>;\n tap-ms = <0>;\n #binding-cells = <1>;\n bindings\n = <¯o_release\n &kp LSFT &kp RSFT\n &kp LALT &kp RALT\n &kp LCTL &kp RCTL\n &kp LGUI &kp RGUI>\n , <¯o_tap &kp RIGHT_PINKY_KEY>\n , <¯o_param_1to1>\n , <¯o_tap &kp MACRO_PLACEHOLDER>\n ;\n };\n #define RightPinky(key, layer_index) RightPinky_unroll(layer_index) (key)\n #define RightPinky_unroll(layer_index) RightPinky_concat(RightPinky_layer, layer_index)\n #define RightPinky_concat(prefix, layer_index) prefix ## layer_index\n #ifdef ENFORCE_BILATERAL\n #define right_pinky_layer0_variant right_pinky_bilateral\n #else\n #define right_pinky_layer0_variant right_pinky\n #endif\n #define RightPinky_layer0(key) right_pinky_layer0_variant RIGHT_PINKY_MOD key\n #define RightPinky_layer1(key) right_pinky RIGHT_PINKY_MOD key\n #define RightPinky_layer2(key) right_pinky RIGHT_PINKY_MOD key\n #define RightPinky_layer3(key) right_pinky RIGHT_PINKY_MOD key\n #define RightPinky_layer4(key) right_pinky RIGHT_PINKY_MOD key\n #define RightPinky_layer5(key) right_pinky RIGHT_PINKY_MOD key\n #define RightPinky_layer6(key) right_pinky RIGHT_PINKY_MOD key\n #define RightPinky_layer7(key) right_pinky RIGHT_PINKY_MOD key\n #define RightPinky_layer8(key) right_pinky RIGHT_PINKY_MOD key\n#ifndef LEFT_RING1_HOLDING_TYPE\n#define LEFT_RING1_HOLDING_TYPE RING1_HOLDING_TYPE\n#endif\n#ifndef LEFT_RING1_HOLDING_TIME\n#define LEFT_RING1_HOLDING_TIME RING1_HOLDING_TIME\n#endif\n#ifndef LEFT_RING1_STREAK_DECAY\n#define LEFT_RING1_STREAK_DECAY RING1_STREAK_DECAY\n#endif\n#ifndef LEFT_RING1_REPEAT_DECAY\n#define LEFT_RING1_REPEAT_DECAY RING1_REPEAT_DECAY\n#endif\n left_ring1: homey_left_ring1 {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_RING1_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n left_ring1_bilateral: homey_left_ring1_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_RING1_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&left_ring1_hold>, <&kp>;\n };\n left_ring1_hold: homey_left_ring1_hold {\n compatible = \"zmk,behavior-macro-one-param\";\n wait-ms = <0>;\n tap-ms = <0>;\n #binding-cells = <1>;\n bindings\n = <¯o_param_1to1>\n , <¯o_press &kp MACRO_PLACEHOLDER>\n #ifdef LAYER_LeftRing1\n , <¯o_press &mo LAYER_LeftRing1>\n #endif\n , <¯o_pause_for_release>\n , <¯o_param_1to1>\n , <¯o_release &kp MACRO_PLACEHOLDER>\n #ifdef LAYER_LeftRing1\n , <¯o_release &mo LAYER_LeftRing1>\n #endif\n ;\n };\n left_ring1_tap: homey_left_ring1_tap {\n compatible = \"zmk,behavior-macro-one-param\";\n wait-ms = <0>;\n tap-ms = <0>;\n #binding-cells = <1>;\n bindings\n = <¯o_release\n &kp LSFT &kp RSFT\n &kp LALT &kp RALT\n &kp LCTL &kp RCTL\n &kp LGUI &kp RGUI>\n , <¯o_tap &kp LEFT_RING1_KEY>\n , <¯o_param_1to1>\n , <¯o_tap &kp MACRO_PLACEHOLDER>\n ;\n };\n #define LeftRing1(key, layer_index) LeftRing1_unroll(layer_index) (key)\n #define LeftRing1_unroll(layer_index) LeftRing1_concat(LeftRing1_layer, layer_index)\n #define LeftRing1_concat(prefix, layer_index) prefix ## layer_index\n #ifdef ENFORCE_BILATERAL\n #define left_ring1_layer0_variant left_ring1_bilateral\n #else\n #define left_ring1_layer0_variant left_ring1\n #endif\n #define LeftRing1_layer0(key) left_ring1_layer0_variant LEFT_RING1_MOD key\n #define LeftRing1_layer1(key) left_ring1 LEFT_RING1_MOD key\n #define LeftRing1_layer2(key) left_ring1 LEFT_RING1_MOD key\n #define LeftRing1_layer3(key) left_ring1 LEFT_RING1_MOD key\n #define LeftRing1_layer4(key) left_ring1 LEFT_RING1_MOD key\n #define LeftRing1_layer5(key) left_ring1 LEFT_RING1_MOD key\n #define LeftRing1_layer6(key) left_ring1 LEFT_RING1_MOD key\n #define LeftRing1_layer7(key) left_ring1 LEFT_RING1_MOD key\n #define LeftRing1_layer8(key) left_ring1 LEFT_RING1_MOD key\n#ifndef RIGHT_RING1_HOLDING_TYPE\n#define RIGHT_RING1_HOLDING_TYPE RING1_HOLDING_TYPE\n#endif\n#ifndef RIGHT_RING1_HOLDING_TIME\n#define RIGHT_RING1_HOLDING_TIME RING1_HOLDING_TIME\n#endif\n#ifndef RIGHT_RING1_STREAK_DECAY\n#define RIGHT_RING1_STREAK_DECAY RING1_STREAK_DECAY\n#endif\n#ifndef RIGHT_RING1_REPEAT_DECAY\n#define RIGHT_RING1_REPEAT_DECAY RING1_REPEAT_DECAY\n#endif\n right_ring1: homey_right_ring1 {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_RING1_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n right_ring1_bilateral: homey_right_ring1_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_RING1_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&right_ring1_hold>, <&kp>;\n };\n right_ring1_hold: homey_right_ring1_hold {\n compatible = \"zmk,behavior-macro-one-param\";\n wait-ms = <0>;\n tap-ms = <0>;\n #binding-cells = <1>;\n bindings\n = <¯o_param_1to1>\n , <¯o_press &kp MACRO_PLACEHOLDER>\n #ifdef LAYER_RightRing1\n , <¯o_press &mo LAYER_RightRing1>\n #endif\n , <¯o_pause_for_release>\n , <¯o_param_1to1>\n , <¯o_release &kp MACRO_PLACEHOLDER>\n #ifdef LAYER_RightRing1\n , <¯o_release &mo LAYER_RightRing1>\n #endif\n ;\n };\n right_ring1_tap: homey_right_ring1_tap {\n compatible = \"zmk,behavior-macro-one-param\";\n wait-ms = <0>;\n tap-ms = <0>;\n #binding-cells = <1>;\n bindings\n = <¯o_release\n &kp LSFT &kp RSFT\n &kp LALT &kp RALT\n &kp LCTL &kp RCTL\n &kp LGUI &kp RGUI>\n , <¯o_tap &kp RIGHT_RING1_KEY>\n , <¯o_param_1to1>\n , <¯o_tap &kp MACRO_PLACEHOLDER>\n ;\n };\n #define RightRing1(key, layer_index) RightRing1_unroll(layer_index) (key)\n #define RightRing1_unroll(layer_index) RightRing1_concat(RightRing1_layer, layer_index)\n #define RightRing1_concat(prefix, layer_index) prefix ## layer_index\n #ifdef ENFORCE_BILATERAL\n #define right_ring1_layer0_variant right_ring1_bilateral\n #else\n #define right_ring1_layer0_variant right_ring1\n #endif\n #define RightRing1_layer0(key) right_ring1_layer0_variant RIGHT_RING1_MOD key\n #define RightRing1_layer1(key) right_ring1 RIGHT_RING1_MOD key\n #define RightRing1_layer2(key) right_ring1 RIGHT_RING1_MOD key\n #define RightRing1_layer3(key) right_ring1 RIGHT_RING1_MOD key\n #define RightRing1_layer4(key) right_ring1 RIGHT_RING1_MOD key\n #define RightRing1_layer5(key) right_ring1 RIGHT_RING1_MOD key\n #define RightRing1_layer6(key) right_ring1 RIGHT_RING1_MOD key\n #define RightRing1_layer7(key) right_ring1 RIGHT_RING1_MOD key\n #define RightRing1_layer8(key) right_ring1 RIGHT_RING1_MOD key\n#ifndef LEFT_RING2_HOLDING_TYPE\n#define LEFT_RING2_HOLDING_TYPE RING2_HOLDING_TYPE\n#endif\n#ifndef LEFT_RING2_HOLDING_TIME\n#define LEFT_RING2_HOLDING_TIME RING2_HOLDING_TIME\n#endif\n#ifndef LEFT_RING2_STREAK_DECAY\n#define LEFT_RING2_STREAK_DECAY RING2_STREAK_DECAY\n#endif\n#ifndef LEFT_RING2_REPEAT_DECAY\n#define LEFT_RING2_REPEAT_DECAY RING2_REPEAT_DECAY\n#endif\n left_ring2: homey_left_ring2 {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_RING2_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n left_ring2_bilateral: homey_left_ring2_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_RING2_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&left_ring2_hold>, <&kp>;\n };\n left_ring2_hold: homey_left_ring2_hold {\n compatible = \"zmk,behavior-macro-one-param\";\n wait-ms = <0>;\n tap-ms = <0>;\n #binding-cells = <1>;\n bindings\n = <¯o_param_1to1>\n , <¯o_press &kp MACRO_PLACEHOLDER>\n #ifdef LAYER_LeftRing2\n , <¯o_press &mo LAYER_LeftRing2>\n #endif\n , <¯o_pause_for_release>\n , <¯o_param_1to1>\n , <¯o_release &kp MACRO_PLACEHOLDER>\n #ifdef LAYER_LeftRing2\n , <¯o_release &mo LAYER_LeftRing2>\n #endif\n ;\n };\n left_ring2_tap: homey_left_ring2_tap {\n compatible = \"zmk,behavior-macro-one-param\";\n wait-ms = <0>;\n tap-ms = <0>;\n #binding-cells = <1>;\n bindings\n = <¯o_release\n &kp LSFT &kp RSFT\n &kp LALT &kp RALT\n &kp LCTL &kp RCTL\n &kp LGUI &kp RGUI>\n , <¯o_tap &kp LEFT_RING2_KEY>\n , <¯o_param_1to1>\n , <¯o_tap &kp MACRO_PLACEHOLDER>\n ;\n };\n #define LeftRing2(key, layer_index) LeftRing2_unroll(layer_index) (key)\n #define LeftRing2_unroll(layer_index) LeftRing2_concat(LeftRing2_layer, layer_index)\n #define LeftRing2_concat(prefix, layer_index) prefix ## layer_index\n #ifdef ENFORCE_BILATERAL\n #define left_ring2_layer0_variant left_ring2_bilateral\n #else\n #define left_ring2_layer0_variant left_ring2\n #endif\n #define LeftRing2_layer0(key) left_ring2_layer0_variant LEFT_RING2_MOD key\n #define LeftRing2_layer1(key) left_ring2 LEFT_RING2_MOD key\n #define LeftRing2_layer2(key) left_ring2 LEFT_RING2_MOD key\n #define LeftRing2_layer3(key) left_ring2 LEFT_RING2_MOD key\n #define LeftRing2_layer4(key) left_ring2 LEFT_RING2_MOD key\n #define LeftRing2_layer5(key) left_ring2 LEFT_RING2_MOD key\n #define LeftRing2_layer6(key) left_ring2 LEFT_RING2_MOD key\n #define LeftRing2_layer7(key) left_ring2 LEFT_RING2_MOD key\n #define LeftRing2_layer8(key) left_ring2 LEFT_RING2_MOD key\n#ifndef RIGHT_RING2_HOLDING_TYPE\n#define RIGHT_RING2_HOLDING_TYPE RING2_HOLDING_TYPE\n#endif\n#ifndef RIGHT_RING2_HOLDING_TIME\n#define RIGHT_RING2_HOLDING_TIME RING2_HOLDING_TIME\n#endif\n#ifndef RIGHT_RING2_STREAK_DECAY\n#define RIGHT_RING2_STREAK_DECAY RING2_STREAK_DECAY\n#endif\n#ifndef RIGHT_RING2_REPEAT_DECAY\n#define RIGHT_RING2_REPEAT_DECAY RING2_REPEAT_DECAY\n#endif\n right_ring2: homey_right_ring2 {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_RING2_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n right_ring2_bilateral: homey_right_ring2_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_RING2_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&right_ring2_hold>, <&kp>;\n };\n right_ring2_hold: homey_right_ring2_hold {\n compatible = \"zmk,behavior-macro-one-param\";\n wait-ms = <0>;\n tap-ms = <0>;\n #binding-cells = <1>;\n bindings\n = <¯o_param_1to1>\n , <¯o_press &kp MACRO_PLACEHOLDER>\n #ifdef LAYER_RightRing2\n , <¯o_press &mo LAYER_RightRing2>\n #endif\n , <¯o_pause_for_release>\n , <¯o_param_1to1>\n , <¯o_release &kp MACRO_PLACEHOLDER>\n #ifdef LAYER_RightRing2\n , <¯o_release &mo LAYER_RightRing2>\n #endif\n ;\n };\n right_ring2_tap: homey_right_ring2_tap {\n compatible = \"zmk,behavior-macro-one-param\";\n wait-ms = <0>;\n tap-ms = <0>;\n #binding-cells = <1>;\n bindings\n = <¯o_release\n &kp LSFT &kp RSFT\n &kp LALT &kp RALT\n &kp LCTL &kp RCTL\n &kp LGUI &kp RGUI>\n , <¯o_tap &kp RIGHT_RING2_KEY>\n , <¯o_param_1to1>\n , <¯o_tap &kp MACRO_PLACEHOLDER>\n ;\n };\n #define RightRing2(key, layer_index) RightRing2_unroll(layer_index) (key)\n #define RightRing2_unroll(layer_index) RightRing2_concat(RightRing2_layer, layer_index)\n #define RightRing2_concat(prefix, layer_index) prefix ## layer_index\n #ifdef ENFORCE_BILATERAL\n #define right_ring2_layer0_variant right_ring2_bilateral\n #else\n #define right_ring2_layer0_variant right_ring2\n #endif\n #define RightRing2_layer0(key) right_ring2_layer0_variant RIGHT_RING2_MOD key\n #define RightRing2_layer1(key) right_ring2 RIGHT_RING2_MOD key\n #define RightRing2_layer2(key) right_ring2 RIGHT_RING2_MOD key\n #define RightRing2_layer3(key) right_ring2 RIGHT_RING2_MOD key\n #define RightRing2_layer4(key) right_ring2 RIGHT_RING2_MOD key\n #define RightRing2_layer5(key) right_ring2 RIGHT_RING2_MOD key\n #define RightRing2_layer6(key) right_ring2 RIGHT_RING2_MOD key\n #define RightRing2_layer7(key) right_ring2 RIGHT_RING2_MOD key\n #define RightRing2_layer8(key) right_ring2 RIGHT_RING2_MOD key\n#ifndef LEFT_MIDDY_HOLDING_TYPE\n#define LEFT_MIDDY_HOLDING_TYPE MIDDY_HOLDING_TYPE\n#endif\n#ifndef LEFT_MIDDY_HOLDING_TIME\n#define LEFT_MIDDY_HOLDING_TIME MIDDY_HOLDING_TIME\n#endif\n#ifndef LEFT_MIDDY_STREAK_DECAY\n#define LEFT_MIDDY_STREAK_DECAY MIDDY_STREAK_DECAY\n#endif\n#ifndef LEFT_MIDDY_REPEAT_DECAY\n#define LEFT_MIDDY_REPEAT_DECAY MIDDY_REPEAT_DECAY\n#endif\n left_middy: homey_left_middy {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_MIDDY_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n left_middy_bilateral: homey_left_middy_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_MIDDY_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&left_middy_hold>, <&kp>;\n };\n left_middy_hold: homey_left_middy_hold {\n compatible = \"zmk,behavior-macro-one-param\";\n wait-ms = <0>;\n tap-ms = <0>;\n #binding-cells = <1>;\n bindings\n = <¯o_param_1to1>\n , <¯o_press &kp MACRO_PLACEHOLDER>\n #ifdef LAYER_LeftMiddy\n , <¯o_press &mo LAYER_LeftMiddy>\n #endif\n , <¯o_pause_for_release>\n , <¯o_param_1to1>\n , <¯o_release &kp MACRO_PLACEHOLDER>\n #ifdef LAYER_LeftMiddy\n , <¯o_release &mo LAYER_LeftMiddy>\n #endif\n ;\n };\n left_middy_tap: homey_left_middy_tap {\n compatible = \"zmk,behavior-macro-one-param\";\n wait-ms = <0>;\n tap-ms = <0>;\n #binding-cells = <1>;\n bindings\n = <¯o_release\n &kp LSFT &kp RSFT\n &kp LALT &kp RALT\n &kp LCTL &kp RCTL\n &kp LGUI &kp RGUI>\n , <¯o_tap &kp LEFT_MIDDY_KEY>\n , <¯o_param_1to1>\n , <¯o_tap &kp MACRO_PLACEHOLDER>\n ;\n };\n #define LeftMiddy(key, layer_index) LeftMiddy_unroll(layer_index) (key)\n #define LeftMiddy_unroll(layer_index) LeftMiddy_concat(LeftMiddy_layer, layer_index)\n #define LeftMiddy_concat(prefix, layer_index) prefix ## layer_index\n #ifdef ENFORCE_BILATERAL\n #define left_middy_layer0_variant left_middy_bilateral\n #else\n #define left_middy_layer0_variant left_middy\n #endif\n #define LeftMiddy_layer0(key) left_middy_layer0_variant LEFT_MIDDY_MOD key\n #define LeftMiddy_layer1(key) left_middy LEFT_MIDDY_MOD key\n #define LeftMiddy_layer2(key) left_middy LEFT_MIDDY_MOD key\n #define LeftMiddy_layer3(key) left_middy LEFT_MIDDY_MOD key\n #define LeftMiddy_layer4(key) left_middy LEFT_MIDDY_MOD key\n #define LeftMiddy_layer5(key) left_middy LEFT_MIDDY_MOD key\n #define LeftMiddy_layer6(key) left_middy LEFT_MIDDY_MOD key\n #define LeftMiddy_layer7(key) left_middy LEFT_MIDDY_MOD key\n #define LeftMiddy_layer8(key) left_middy LEFT_MIDDY_MOD key\n#ifndef RIGHT_MIDDY_HOLDING_TYPE\n#define RIGHT_MIDDY_HOLDING_TYPE MIDDY_HOLDING_TYPE\n#endif\n#ifndef RIGHT_MIDDY_HOLDING_TIME\n#define RIGHT_MIDDY_HOLDING_TIME MIDDY_HOLDING_TIME\n#endif\n#ifndef RIGHT_MIDDY_STREAK_DECAY\n#define RIGHT_MIDDY_STREAK_DECAY MIDDY_STREAK_DECAY\n#endif\n#ifndef RIGHT_MIDDY_REPEAT_DECAY\n#define RIGHT_MIDDY_REPEAT_DECAY MIDDY_REPEAT_DECAY\n#endif\n right_middy: homey_right_middy {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_MIDDY_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n right_middy_bilateral: homey_right_middy_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_MIDDY_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&right_middy_hold>, <&kp>;\n };\n right_middy_hold: homey_right_middy_hold {\n compatible = \"zmk,behavior-macro-one-param\";\n wait-ms = <0>;\n tap-ms = <0>;\n #binding-cells = <1>;\n bindings\n = <¯o_param_1to1>\n , <¯o_press &kp MACRO_PLACEHOLDER>\n #ifdef LAYER_RightMiddy\n , <¯o_press &mo LAYER_RightMiddy>\n #endif\n , <¯o_pause_for_release>\n , <¯o_param_1to1>\n , <¯o_release &kp MACRO_PLACEHOLDER>\n #ifdef LAYER_RightMiddy\n , <¯o_release &mo LAYER_RightMiddy>\n #endif\n ;\n };\n right_middy_tap: homey_right_middy_tap {\n compatible = \"zmk,behavior-macro-one-param\";\n wait-ms = <0>;\n tap-ms = <0>;\n #binding-cells = <1>;\n bindings\n = <¯o_release\n &kp LSFT &kp RSFT\n &kp LALT &kp RALT\n &kp LCTL &kp RCTL\n &kp LGUI &kp RGUI>\n , <¯o_tap &kp RIGHT_MIDDY_KEY>\n , <¯o_param_1to1>\n , <¯o_tap &kp MACRO_PLACEHOLDER>\n ;\n };\n #define RightMiddy(key, layer_index) RightMiddy_unroll(layer_index) (key)\n #define RightMiddy_unroll(layer_index) RightMiddy_concat(RightMiddy_layer, layer_index)\n #define RightMiddy_concat(prefix, layer_index) prefix ## layer_index\n #ifdef ENFORCE_BILATERAL\n #define right_middy_layer0_variant right_middy_bilateral\n #else\n #define right_middy_layer0_variant right_middy\n #endif\n #define RightMiddy_layer0(key) right_middy_layer0_variant RIGHT_MIDDY_MOD key\n #define RightMiddy_layer1(key) right_middy RIGHT_MIDDY_MOD key\n #define RightMiddy_layer2(key) right_middy RIGHT_MIDDY_MOD key\n #define RightMiddy_layer3(key) right_middy RIGHT_MIDDY_MOD key\n #define RightMiddy_layer4(key) right_middy RIGHT_MIDDY_MOD key\n #define RightMiddy_layer5(key) right_middy RIGHT_MIDDY_MOD key\n #define RightMiddy_layer6(key) right_middy RIGHT_MIDDY_MOD key\n #define RightMiddy_layer7(key) right_middy RIGHT_MIDDY_MOD key\n #define RightMiddy_layer8(key) right_middy RIGHT_MIDDY_MOD key\n#ifndef LEFT_INDEX_HOLDING_TYPE\n#define LEFT_INDEX_HOLDING_TYPE INDEX_HOLDING_TYPE\n#endif\n#ifndef LEFT_INDEX_HOLDING_TIME\n#define LEFT_INDEX_HOLDING_TIME INDEX_HOLDING_TIME\n#endif\n#ifndef LEFT_INDEX_STREAK_DECAY\n#define LEFT_INDEX_STREAK_DECAY INDEX_STREAK_DECAY\n#endif\n#ifndef LEFT_INDEX_REPEAT_DECAY\n#define LEFT_INDEX_REPEAT_DECAY INDEX_REPEAT_DECAY\n#endif\n left_index: homey_left_index {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_INDEX_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n left_index_bilateral: homey_left_index_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_INDEX_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&left_index_hold>, <&kp>;\n };\n left_index_hold: homey_left_index_hold {\n compatible = \"zmk,behavior-macro-one-param\";\n wait-ms = <0>;\n tap-ms = <0>;\n #binding-cells = <1>;\n bindings\n = <¯o_param_1to1>\n , <¯o_press &kp MACRO_PLACEHOLDER>\n #ifdef LAYER_LeftIndex\n , <¯o_press &mo LAYER_LeftIndex>\n #endif\n , <¯o_pause_for_release>\n , <¯o_param_1to1>\n , <¯o_release &kp MACRO_PLACEHOLDER>\n #ifdef LAYER_LeftIndex\n , <¯o_release &mo LAYER_LeftIndex>\n #endif\n ;\n };\n left_index_tap: homey_left_index_tap {\n compatible = \"zmk,behavior-macro-one-param\";\n wait-ms = <0>;\n tap-ms = <0>;\n #binding-cells = <1>;\n bindings\n = <¯o_release\n &kp LSFT &kp RSFT\n &kp LALT &kp RALT\n &kp LCTL &kp RCTL\n &kp LGUI &kp RGUI>\n , <¯o_tap &kp LEFT_INDEX_KEY>\n , <¯o_param_1to1>\n , <¯o_tap &kp MACRO_PLACEHOLDER>\n ;\n };\n #define LeftIndex(key, layer_index) LeftIndex_unroll(layer_index) (key)\n #define LeftIndex_unroll(layer_index) LeftIndex_concat(LeftIndex_layer, layer_index)\n #define LeftIndex_concat(prefix, layer_index) prefix ## layer_index\n #ifdef ENFORCE_BILATERAL\n #define left_index_layer0_variant left_index_bilateral\n #else\n #define left_index_layer0_variant left_index\n #endif\n #define LeftIndex_layer0(key) left_index_layer0_variant LEFT_INDEX_MOD key\n #define LeftIndex_layer1(key) left_index LEFT_INDEX_MOD key\n #define LeftIndex_layer2(key) left_index LEFT_INDEX_MOD key\n #define LeftIndex_layer3(key) left_index LEFT_INDEX_MOD key\n #define LeftIndex_layer4(key) left_index LEFT_INDEX_MOD key\n #define LeftIndex_layer5(key) left_index LEFT_INDEX_MOD key\n #define LeftIndex_layer6(key) left_index LEFT_INDEX_MOD key\n #define LeftIndex_layer7(key) left_index LEFT_INDEX_MOD key\n #define LeftIndex_layer8(key) left_index LEFT_INDEX_MOD key\n#ifndef RIGHT_INDEX_HOLDING_TYPE\n#define RIGHT_INDEX_HOLDING_TYPE INDEX_HOLDING_TYPE\n#endif\n#ifndef RIGHT_INDEX_HOLDING_TIME\n#define RIGHT_INDEX_HOLDING_TIME INDEX_HOLDING_TIME\n#endif\n#ifndef RIGHT_INDEX_STREAK_DECAY\n#define RIGHT_INDEX_STREAK_DECAY INDEX_STREAK_DECAY\n#endif\n#ifndef RIGHT_INDEX_REPEAT_DECAY\n#define RIGHT_INDEX_REPEAT_DECAY INDEX_REPEAT_DECAY\n#endif\n right_index: homey_right_index {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_INDEX_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n right_index_bilateral: homey_right_index_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_INDEX_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&right_index_hold>, <&kp>;\n };\n right_index_hold: homey_right_index_hold {\n compatible = \"zmk,behavior-macro-one-param\";\n wait-ms = <0>;\n tap-ms = <0>;\n #binding-cells = <1>;\n bindings\n = <¯o_param_1to1>\n , <¯o_press &kp MACRO_PLACEHOLDER>\n #ifdef LAYER_RightIndex\n , <¯o_press &mo LAYER_RightIndex>\n #endif\n , <¯o_pause_for_release>\n , <¯o_param_1to1>\n , <¯o_release &kp MACRO_PLACEHOLDER>\n #ifdef LAYER_RightIndex\n , <¯o_release &mo LAYER_RightIndex>\n #endif\n ;\n };\n right_index_tap: homey_right_index_tap {\n compatible = \"zmk,behavior-macro-one-param\";\n wait-ms = <0>;\n tap-ms = <0>;\n #binding-cells = <1>;\n bindings\n = <¯o_release\n &kp LSFT &kp RSFT\n &kp LALT &kp RALT\n &kp LCTL &kp RCTL\n &kp LGUI &kp RGUI>\n , <¯o_tap &kp RIGHT_INDEX_KEY>\n , <¯o_param_1to1>\n , <¯o_tap &kp MACRO_PLACEHOLDER>\n ;\n };\n #define RightIndex(key, layer_index) RightIndex_unroll(layer_index) (key)\n #define RightIndex_unroll(layer_index) RightIndex_concat(RightIndex_layer, layer_index)\n #define RightIndex_concat(prefix, layer_index) prefix ## layer_index\n #ifdef ENFORCE_BILATERAL\n #define right_index_layer0_variant right_index_bilateral\n #else\n #define right_index_layer0_variant right_index\n #endif\n #define RightIndex_layer0(key) right_index_layer0_variant RIGHT_INDEX_MOD key\n #define RightIndex_layer1(key) right_index RIGHT_INDEX_MOD key\n #define RightIndex_layer2(key) right_index RIGHT_INDEX_MOD key\n #define RightIndex_layer3(key) right_index RIGHT_INDEX_MOD key\n #define RightIndex_layer4(key) right_index RIGHT_INDEX_MOD key\n #define RightIndex_layer5(key) right_index RIGHT_INDEX_MOD key\n #define RightIndex_layer6(key) right_index RIGHT_INDEX_MOD key\n #define RightIndex_layer7(key) right_index RIGHT_INDEX_MOD key\n #define RightIndex_layer8(key) right_index RIGHT_INDEX_MOD key\n#ifndef LEFT_RING1_PINKY_HOLDING_TYPE\n#define LEFT_RING1_PINKY_HOLDING_TYPE LEFT_RING1_CHORD_HOLDING_TYPE\n#endif\n#ifndef LEFT_RING1_PINKY_HOLDING_TIME\n#define LEFT_RING1_PINKY_HOLDING_TIME LEFT_RING1_CHORD_HOLDING_TIME\n#endif\n#ifndef LEFT_RING1_PINKY_STREAK_DECAY\n#define LEFT_RING1_PINKY_STREAK_DECAY LEFT_RING1_CHORD_STREAK_DECAY\n#endif\n#ifndef LEFT_RING1_PINKY_REPEAT_DECAY\n#define LEFT_RING1_PINKY_REPEAT_DECAY LEFT_RING1_CHORD_REPEAT_DECAY\n#endif\n left_ring1_pinky: homey_left_ring1_pinky {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_RING1_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n left_ring1_pinky_bilateral: homey_left_ring1_pinky_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_RING1_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&left_ring1_tap>;\n };\n #define LeftRing1Pinky left_ring1_pinky_bilateral LEFT_PINKY_MOD LEFT_PINKY_KEY\n#ifndef LEFT_RING2_PINKY_HOLDING_TYPE\n#define LEFT_RING2_PINKY_HOLDING_TYPE LEFT_RING2_CHORD_HOLDING_TYPE\n#endif\n#ifndef LEFT_RING2_PINKY_HOLDING_TIME\n#define LEFT_RING2_PINKY_HOLDING_TIME LEFT_RING2_CHORD_HOLDING_TIME\n#endif\n#ifndef LEFT_RING2_PINKY_STREAK_DECAY\n#define LEFT_RING2_PINKY_STREAK_DECAY LEFT_RING2_CHORD_STREAK_DECAY\n#endif\n#ifndef LEFT_RING2_PINKY_REPEAT_DECAY\n#define LEFT_RING2_PINKY_REPEAT_DECAY LEFT_RING2_CHORD_REPEAT_DECAY\n#endif\n left_ring2_pinky: homey_left_ring2_pinky {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_RING2_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n left_ring2_pinky_bilateral: homey_left_ring2_pinky_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_RING2_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&left_ring2_tap>;\n };\n #define LeftRing2Pinky left_ring2_pinky_bilateral LEFT_PINKY_MOD LEFT_PINKY_KEY\n#ifndef LEFT_MIDDY_PINKY_HOLDING_TYPE\n#define LEFT_MIDDY_PINKY_HOLDING_TYPE LEFT_MIDDY_CHORD_HOLDING_TYPE\n#endif\n#ifndef LEFT_MIDDY_PINKY_HOLDING_TIME\n#define LEFT_MIDDY_PINKY_HOLDING_TIME LEFT_MIDDY_CHORD_HOLDING_TIME\n#endif\n#ifndef LEFT_MIDDY_PINKY_STREAK_DECAY\n#define LEFT_MIDDY_PINKY_STREAK_DECAY LEFT_MIDDY_CHORD_STREAK_DECAY\n#endif\n#ifndef LEFT_MIDDY_PINKY_REPEAT_DECAY\n#define LEFT_MIDDY_PINKY_REPEAT_DECAY LEFT_MIDDY_CHORD_REPEAT_DECAY\n#endif\n left_middy_pinky: homey_left_middy_pinky {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_MIDDY_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n left_middy_pinky_bilateral: homey_left_middy_pinky_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_MIDDY_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&left_middy_tap>;\n };\n #define LeftMiddyPinky left_middy_pinky_bilateral LEFT_PINKY_MOD LEFT_PINKY_KEY\n#ifndef LEFT_INDEX_PINKY_HOLDING_TYPE\n#define LEFT_INDEX_PINKY_HOLDING_TYPE LEFT_INDEX_CHORD_HOLDING_TYPE\n#endif\n#ifndef LEFT_INDEX_PINKY_HOLDING_TIME\n#define LEFT_INDEX_PINKY_HOLDING_TIME LEFT_INDEX_CHORD_HOLDING_TIME\n#endif\n#ifndef LEFT_INDEX_PINKY_STREAK_DECAY\n#define LEFT_INDEX_PINKY_STREAK_DECAY LEFT_INDEX_CHORD_STREAK_DECAY\n#endif\n#ifndef LEFT_INDEX_PINKY_REPEAT_DECAY\n#define LEFT_INDEX_PINKY_REPEAT_DECAY LEFT_INDEX_CHORD_REPEAT_DECAY\n#endif\n left_index_pinky: homey_left_index_pinky {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_INDEX_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n left_index_pinky_bilateral: homey_left_index_pinky_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_INDEX_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&left_index_tap>;\n };\n #define LeftIndexPinky left_index_pinky_bilateral LEFT_PINKY_MOD LEFT_PINKY_KEY\n#ifndef RIGHT_RING1_PINKY_HOLDING_TYPE\n#define RIGHT_RING1_PINKY_HOLDING_TYPE RIGHT_RING1_CHORD_HOLDING_TYPE\n#endif\n#ifndef RIGHT_RING1_PINKY_HOLDING_TIME\n#define RIGHT_RING1_PINKY_HOLDING_TIME RIGHT_RING1_CHORD_HOLDING_TIME\n#endif\n#ifndef RIGHT_RING1_PINKY_STREAK_DECAY\n#define RIGHT_RING1_PINKY_STREAK_DECAY RIGHT_RING1_CHORD_STREAK_DECAY\n#endif\n#ifndef RIGHT_RING1_PINKY_REPEAT_DECAY\n#define RIGHT_RING1_PINKY_REPEAT_DECAY RIGHT_RING1_CHORD_REPEAT_DECAY\n#endif\n right_ring1_pinky: homey_right_ring1_pinky {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_RING1_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n right_ring1_pinky_bilateral: homey_right_ring1_pinky_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_RING1_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&right_ring1_tap>;\n };\n #define RightRing1Pinky right_ring1_pinky_bilateral RIGHT_PINKY_MOD RIGHT_PINKY_KEY\n#ifndef RIGHT_RING2_PINKY_HOLDING_TYPE\n#define RIGHT_RING2_PINKY_HOLDING_TYPE RIGHT_RING2_CHORD_HOLDING_TYPE\n#endif\n#ifndef RIGHT_RING2_PINKY_HOLDING_TIME\n#define RIGHT_RING2_PINKY_HOLDING_TIME RIGHT_RING2_CHORD_HOLDING_TIME\n#endif\n#ifndef RIGHT_RING2_PINKY_STREAK_DECAY\n#define RIGHT_RING2_PINKY_STREAK_DECAY RIGHT_RING2_CHORD_STREAK_DECAY\n#endif\n#ifndef RIGHT_RING2_PINKY_REPEAT_DECAY\n#define RIGHT_RING2_PINKY_REPEAT_DECAY RIGHT_RING2_CHORD_REPEAT_DECAY\n#endif\n right_ring2_pinky: homey_right_ring2_pinky {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_RING2_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n right_ring2_pinky_bilateral: homey_right_ring2_pinky_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_RING2_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&right_ring2_tap>;\n };\n #define RightRing2Pinky right_ring2_pinky_bilateral RIGHT_PINKY_MOD RIGHT_PINKY_KEY\n#ifndef RIGHT_MIDDY_PINKY_HOLDING_TYPE\n#define RIGHT_MIDDY_PINKY_HOLDING_TYPE RIGHT_MIDDY_CHORD_HOLDING_TYPE\n#endif\n#ifndef RIGHT_MIDDY_PINKY_HOLDING_TIME\n#define RIGHT_MIDDY_PINKY_HOLDING_TIME RIGHT_MIDDY_CHORD_HOLDING_TIME\n#endif\n#ifndef RIGHT_MIDDY_PINKY_STREAK_DECAY\n#define RIGHT_MIDDY_PINKY_STREAK_DECAY RIGHT_MIDDY_CHORD_STREAK_DECAY\n#endif\n#ifndef RIGHT_MIDDY_PINKY_REPEAT_DECAY\n#define RIGHT_MIDDY_PINKY_REPEAT_DECAY RIGHT_MIDDY_CHORD_REPEAT_DECAY\n#endif\n right_middy_pinky: homey_right_middy_pinky {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_MIDDY_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n right_middy_pinky_bilateral: homey_right_middy_pinky_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_MIDDY_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&right_middy_tap>;\n };\n #define RightMiddyPinky right_middy_pinky_bilateral RIGHT_PINKY_MOD RIGHT_PINKY_KEY\n#ifndef RIGHT_INDEX_PINKY_HOLDING_TYPE\n#define RIGHT_INDEX_PINKY_HOLDING_TYPE RIGHT_INDEX_CHORD_HOLDING_TYPE\n#endif\n#ifndef RIGHT_INDEX_PINKY_HOLDING_TIME\n#define RIGHT_INDEX_PINKY_HOLDING_TIME RIGHT_INDEX_CHORD_HOLDING_TIME\n#endif\n#ifndef RIGHT_INDEX_PINKY_STREAK_DECAY\n#define RIGHT_INDEX_PINKY_STREAK_DECAY RIGHT_INDEX_CHORD_STREAK_DECAY\n#endif\n#ifndef RIGHT_INDEX_PINKY_REPEAT_DECAY\n#define RIGHT_INDEX_PINKY_REPEAT_DECAY RIGHT_INDEX_CHORD_REPEAT_DECAY\n#endif\n right_index_pinky: homey_right_index_pinky {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_INDEX_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n right_index_pinky_bilateral: homey_right_index_pinky_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_INDEX_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&right_index_tap>;\n };\n #define RightIndexPinky right_index_pinky_bilateral RIGHT_PINKY_MOD RIGHT_PINKY_KEY\n#ifndef LEFT_PINKY_RING1_HOLDING_TYPE\n#define LEFT_PINKY_RING1_HOLDING_TYPE LEFT_PINKY_CHORD_HOLDING_TYPE\n#endif\n#ifndef LEFT_PINKY_RING1_HOLDING_TIME\n#define LEFT_PINKY_RING1_HOLDING_TIME LEFT_PINKY_CHORD_HOLDING_TIME\n#endif\n#ifndef LEFT_PINKY_RING1_STREAK_DECAY\n#define LEFT_PINKY_RING1_STREAK_DECAY LEFT_PINKY_CHORD_STREAK_DECAY\n#endif\n#ifndef LEFT_PINKY_RING1_REPEAT_DECAY\n#define LEFT_PINKY_RING1_REPEAT_DECAY LEFT_PINKY_CHORD_REPEAT_DECAY\n#endif\n left_pinky_ring1: homey_left_pinky_ring1 {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_PINKY_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n left_pinky_ring1_bilateral: homey_left_pinky_ring1_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_PINKY_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&left_pinky_tap>;\n };\n #define LeftPinkyRing1 left_pinky_ring1_bilateral LEFT_RING1_MOD LEFT_RING1_KEY\n#ifndef LEFT_RING2_RING1_HOLDING_TYPE\n#define LEFT_RING2_RING1_HOLDING_TYPE LEFT_RING2_CHORD_HOLDING_TYPE\n#endif\n#ifndef LEFT_RING2_RING1_HOLDING_TIME\n#define LEFT_RING2_RING1_HOLDING_TIME LEFT_RING2_CHORD_HOLDING_TIME\n#endif\n#ifndef LEFT_RING2_RING1_STREAK_DECAY\n#define LEFT_RING2_RING1_STREAK_DECAY LEFT_RING2_CHORD_STREAK_DECAY\n#endif\n#ifndef LEFT_RING2_RING1_REPEAT_DECAY\n#define LEFT_RING2_RING1_REPEAT_DECAY LEFT_RING2_CHORD_REPEAT_DECAY\n#endif\n left_ring2_ring1: homey_left_ring2_ring1 {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_RING2_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n left_ring2_ring1_bilateral: homey_left_ring2_ring1_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_RING2_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&left_ring2_tap>;\n };\n #define LeftRing2Ring1 left_ring2_ring1_bilateral LEFT_RING1_MOD LEFT_RING1_KEY\n#ifndef LEFT_MIDDY_RING1_HOLDING_TYPE\n#define LEFT_MIDDY_RING1_HOLDING_TYPE LEFT_MIDDY_CHORD_HOLDING_TYPE\n#endif\n#ifndef LEFT_MIDDY_RING1_HOLDING_TIME\n#define LEFT_MIDDY_RING1_HOLDING_TIME LEFT_MIDDY_CHORD_HOLDING_TIME\n#endif\n#ifndef LEFT_MIDDY_RING1_STREAK_DECAY\n#define LEFT_MIDDY_RING1_STREAK_DECAY LEFT_MIDDY_CHORD_STREAK_DECAY\n#endif\n#ifndef LEFT_MIDDY_RING1_REPEAT_DECAY\n#define LEFT_MIDDY_RING1_REPEAT_DECAY LEFT_MIDDY_CHORD_REPEAT_DECAY\n#endif\n left_middy_ring1: homey_left_middy_ring1 {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_MIDDY_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n left_middy_ring1_bilateral: homey_left_middy_ring1_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_MIDDY_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&left_middy_tap>;\n };\n #define LeftMiddyRing1 left_middy_ring1_bilateral LEFT_RING1_MOD LEFT_RING1_KEY\n#ifndef LEFT_INDEX_RING1_HOLDING_TYPE\n#define LEFT_INDEX_RING1_HOLDING_TYPE LEFT_INDEX_CHORD_HOLDING_TYPE\n#endif\n#ifndef LEFT_INDEX_RING1_HOLDING_TIME\n#define LEFT_INDEX_RING1_HOLDING_TIME LEFT_INDEX_CHORD_HOLDING_TIME\n#endif\n#ifndef LEFT_INDEX_RING1_STREAK_DECAY\n#define LEFT_INDEX_RING1_STREAK_DECAY LEFT_INDEX_CHORD_STREAK_DECAY\n#endif\n#ifndef LEFT_INDEX_RING1_REPEAT_DECAY\n#define LEFT_INDEX_RING1_REPEAT_DECAY LEFT_INDEX_CHORD_REPEAT_DECAY\n#endif\n left_index_ring1: homey_left_index_ring1 {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_INDEX_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n left_index_ring1_bilateral: homey_left_index_ring1_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_INDEX_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&left_index_tap>;\n };\n #define LeftIndexRing1 left_index_ring1_bilateral LEFT_RING1_MOD LEFT_RING1_KEY\n#ifndef RIGHT_PINKY_RING1_HOLDING_TYPE\n#define RIGHT_PINKY_RING1_HOLDING_TYPE RIGHT_PINKY_CHORD_HOLDING_TYPE\n#endif\n#ifndef RIGHT_PINKY_RING1_HOLDING_TIME\n#define RIGHT_PINKY_RING1_HOLDING_TIME RIGHT_PINKY_CHORD_HOLDING_TIME\n#endif\n#ifndef RIGHT_PINKY_RING1_STREAK_DECAY\n#define RIGHT_PINKY_RING1_STREAK_DECAY RIGHT_PINKY_CHORD_STREAK_DECAY\n#endif\n#ifndef RIGHT_PINKY_RING1_REPEAT_DECAY\n#define RIGHT_PINKY_RING1_REPEAT_DECAY RIGHT_PINKY_CHORD_REPEAT_DECAY\n#endif\n right_pinky_ring1: homey_right_pinky_ring1 {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_PINKY_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n right_pinky_ring1_bilateral: homey_right_pinky_ring1_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_PINKY_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&right_pinky_tap>;\n };\n #define RightPinkyRing1 right_pinky_ring1_bilateral RIGHT_RING1_MOD RIGHT_RING1_KEY\n#ifndef RIGHT_RING2_RING1_HOLDING_TYPE\n#define RIGHT_RING2_RING1_HOLDING_TYPE RIGHT_RING2_CHORD_HOLDING_TYPE\n#endif\n#ifndef RIGHT_RING2_RING1_HOLDING_TIME\n#define RIGHT_RING2_RING1_HOLDING_TIME RIGHT_RING2_CHORD_HOLDING_TIME\n#endif\n#ifndef RIGHT_RING2_RING1_STREAK_DECAY\n#define RIGHT_RING2_RING1_STREAK_DECAY RIGHT_RING2_CHORD_STREAK_DECAY\n#endif\n#ifndef RIGHT_RING2_RING1_REPEAT_DECAY\n#define RIGHT_RING2_RING1_REPEAT_DECAY RIGHT_RING2_CHORD_REPEAT_DECAY\n#endif\n right_ring2_ring1: homey_right_ring2_ring1 {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_RING2_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n right_ring2_ring1_bilateral: homey_right_ring2_ring1_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_RING2_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&right_ring2_tap>;\n };\n #define RightRing2Ring1 right_ring2_ring1_bilateral RIGHT_RING1_MOD RIGHT_RING1_KEY\n#ifndef RIGHT_MIDDY_RING1_HOLDING_TYPE\n#define RIGHT_MIDDY_RING1_HOLDING_TYPE RIGHT_MIDDY_CHORD_HOLDING_TYPE\n#endif\n#ifndef RIGHT_MIDDY_RING1_HOLDING_TIME\n#define RIGHT_MIDDY_RING1_HOLDING_TIME RIGHT_MIDDY_CHORD_HOLDING_TIME\n#endif\n#ifndef RIGHT_MIDDY_RING1_STREAK_DECAY\n#define RIGHT_MIDDY_RING1_STREAK_DECAY RIGHT_MIDDY_CHORD_STREAK_DECAY\n#endif\n#ifndef RIGHT_MIDDY_RING1_REPEAT_DECAY\n#define RIGHT_MIDDY_RING1_REPEAT_DECAY RIGHT_MIDDY_CHORD_REPEAT_DECAY\n#endif\n right_middy_ring1: homey_right_middy_ring1 {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_MIDDY_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n right_middy_ring1_bilateral: homey_right_middy_ring1_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_MIDDY_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&right_middy_tap>;\n };\n #define RightMiddyRing1 right_middy_ring1_bilateral RIGHT_RING1_MOD RIGHT_RING1_KEY\n#ifndef RIGHT_INDEX_RING1_HOLDING_TYPE\n#define RIGHT_INDEX_RING1_HOLDING_TYPE RIGHT_INDEX_CHORD_HOLDING_TYPE\n#endif\n#ifndef RIGHT_INDEX_RING1_HOLDING_TIME\n#define RIGHT_INDEX_RING1_HOLDING_TIME RIGHT_INDEX_CHORD_HOLDING_TIME\n#endif\n#ifndef RIGHT_INDEX_RING1_STREAK_DECAY\n#define RIGHT_INDEX_RING1_STREAK_DECAY RIGHT_INDEX_CHORD_STREAK_DECAY\n#endif\n#ifndef RIGHT_INDEX_RING1_REPEAT_DECAY\n#define RIGHT_INDEX_RING1_REPEAT_DECAY RIGHT_INDEX_CHORD_REPEAT_DECAY\n#endif\n right_index_ring1: homey_right_index_ring1 {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_INDEX_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n right_index_ring1_bilateral: homey_right_index_ring1_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_INDEX_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&right_index_tap>;\n };\n #define RightIndexRing1 right_index_ring1_bilateral RIGHT_RING1_MOD RIGHT_RING1_KEY\n#ifndef LEFT_PINKY_RING2_HOLDING_TYPE\n#define LEFT_PINKY_RING2_HOLDING_TYPE LEFT_PINKY_CHORD_HOLDING_TYPE\n#endif\n#ifndef LEFT_PINKY_RING2_HOLDING_TIME\n#define LEFT_PINKY_RING2_HOLDING_TIME LEFT_PINKY_CHORD_HOLDING_TIME\n#endif\n#ifndef LEFT_PINKY_RING2_STREAK_DECAY\n#define LEFT_PINKY_RING2_STREAK_DECAY LEFT_PINKY_CHORD_STREAK_DECAY\n#endif\n#ifndef LEFT_PINKY_RING2_REPEAT_DECAY\n#define LEFT_PINKY_RING2_REPEAT_DECAY LEFT_PINKY_CHORD_REPEAT_DECAY\n#endif\n left_pinky_ring2: homey_left_pinky_ring2 {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_PINKY_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n left_pinky_ring2_bilateral: homey_left_pinky_ring2_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_PINKY_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&left_pinky_tap>;\n };\n #define LeftPinkyRing2 left_pinky_ring2_bilateral LEFT_RING2_MOD LEFT_RING2_KEY\n#ifndef LEFT_RING1_RING2_HOLDING_TYPE\n#define LEFT_RING1_RING2_HOLDING_TYPE LEFT_RING1_CHORD_HOLDING_TYPE\n#endif\n#ifndef LEFT_RING1_RING2_HOLDING_TIME\n#define LEFT_RING1_RING2_HOLDING_TIME LEFT_RING1_CHORD_HOLDING_TIME\n#endif\n#ifndef LEFT_RING1_RING2_STREAK_DECAY\n#define LEFT_RING1_RING2_STREAK_DECAY LEFT_RING1_CHORD_STREAK_DECAY\n#endif\n#ifndef LEFT_RING1_RING2_REPEAT_DECAY\n#define LEFT_RING1_RING2_REPEAT_DECAY LEFT_RING1_CHORD_REPEAT_DECAY\n#endif\n left_ring1_ring2: homey_left_ring1_ring2 {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_RING1_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n left_ring1_ring2_bilateral: homey_left_ring1_ring2_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_RING1_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&left_ring1_tap>;\n };\n #define LeftRing1Ring2 left_ring1_ring2_bilateral LEFT_RING2_MOD LEFT_RING2_KEY\n#ifndef LEFT_MIDDY_RING2_HOLDING_TYPE\n#define LEFT_MIDDY_RING2_HOLDING_TYPE LEFT_MIDDY_CHORD_HOLDING_TYPE\n#endif\n#ifndef LEFT_MIDDY_RING2_HOLDING_TIME\n#define LEFT_MIDDY_RING2_HOLDING_TIME LEFT_MIDDY_CHORD_HOLDING_TIME\n#endif\n#ifndef LEFT_MIDDY_RING2_STREAK_DECAY\n#define LEFT_MIDDY_RING2_STREAK_DECAY LEFT_MIDDY_CHORD_STREAK_DECAY\n#endif\n#ifndef LEFT_MIDDY_RING2_REPEAT_DECAY\n#define LEFT_MIDDY_RING2_REPEAT_DECAY LEFT_MIDDY_CHORD_REPEAT_DECAY\n#endif\n left_middy_ring2: homey_left_middy_ring2 {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_MIDDY_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n left_middy_ring2_bilateral: homey_left_middy_ring2_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_MIDDY_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&left_middy_tap>;\n };\n #define LeftMiddyRing2 left_middy_ring2_bilateral LEFT_RING2_MOD LEFT_RING2_KEY\n#ifndef LEFT_INDEX_RING2_HOLDING_TYPE\n#define LEFT_INDEX_RING2_HOLDING_TYPE LEFT_INDEX_CHORD_HOLDING_TYPE\n#endif\n#ifndef LEFT_INDEX_RING2_HOLDING_TIME\n#define LEFT_INDEX_RING2_HOLDING_TIME LEFT_INDEX_CHORD_HOLDING_TIME\n#endif\n#ifndef LEFT_INDEX_RING2_STREAK_DECAY\n#define LEFT_INDEX_RING2_STREAK_DECAY LEFT_INDEX_CHORD_STREAK_DECAY\n#endif\n#ifndef LEFT_INDEX_RING2_REPEAT_DECAY\n#define LEFT_INDEX_RING2_REPEAT_DECAY LEFT_INDEX_CHORD_REPEAT_DECAY\n#endif\n left_index_ring2: homey_left_index_ring2 {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_INDEX_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n left_index_ring2_bilateral: homey_left_index_ring2_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_INDEX_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&left_index_tap>;\n };\n #define LeftIndexRing2 left_index_ring2_bilateral LEFT_RING2_MOD LEFT_RING2_KEY\n#ifndef RIGHT_PINKY_RING2_HOLDING_TYPE\n#define RIGHT_PINKY_RING2_HOLDING_TYPE RIGHT_PINKY_CHORD_HOLDING_TYPE\n#endif\n#ifndef RIGHT_PINKY_RING2_HOLDING_TIME\n#define RIGHT_PINKY_RING2_HOLDING_TIME RIGHT_PINKY_CHORD_HOLDING_TIME\n#endif\n#ifndef RIGHT_PINKY_RING2_STREAK_DECAY\n#define RIGHT_PINKY_RING2_STREAK_DECAY RIGHT_PINKY_CHORD_STREAK_DECAY\n#endif\n#ifndef RIGHT_PINKY_RING2_REPEAT_DECAY\n#define RIGHT_PINKY_RING2_REPEAT_DECAY RIGHT_PINKY_CHORD_REPEAT_DECAY\n#endif\n right_pinky_ring2: homey_right_pinky_ring2 {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_PINKY_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n right_pinky_ring2_bilateral: homey_right_pinky_ring2_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_PINKY_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&right_pinky_tap>;\n };\n #define RightPinkyRing2 right_pinky_ring2_bilateral RIGHT_RING2_MOD RIGHT_RING2_KEY\n#ifndef RIGHT_RING1_RING2_HOLDING_TYPE\n#define RIGHT_RING1_RING2_HOLDING_TYPE RIGHT_RING1_CHORD_HOLDING_TYPE\n#endif\n#ifndef RIGHT_RING1_RING2_HOLDING_TIME\n#define RIGHT_RING1_RING2_HOLDING_TIME RIGHT_RING1_CHORD_HOLDING_TIME\n#endif\n#ifndef RIGHT_RING1_RING2_STREAK_DECAY\n#define RIGHT_RING1_RING2_STREAK_DECAY RIGHT_RING1_CHORD_STREAK_DECAY\n#endif\n#ifndef RIGHT_RING1_RING2_REPEAT_DECAY\n#define RIGHT_RING1_RING2_REPEAT_DECAY RIGHT_RING1_CHORD_REPEAT_DECAY\n#endif\n right_ring1_ring2: homey_right_ring1_ring2 {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_RING1_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n right_ring1_ring2_bilateral: homey_right_ring1_ring2_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_RING1_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&right_ring1_tap>;\n };\n #define RightRing1Ring2 right_ring1_ring2_bilateral RIGHT_RING2_MOD RIGHT_RING2_KEY\n#ifndef RIGHT_MIDDY_RING2_HOLDING_TYPE\n#define RIGHT_MIDDY_RING2_HOLDING_TYPE RIGHT_MIDDY_CHORD_HOLDING_TYPE\n#endif\n#ifndef RIGHT_MIDDY_RING2_HOLDING_TIME\n#define RIGHT_MIDDY_RING2_HOLDING_TIME RIGHT_MIDDY_CHORD_HOLDING_TIME\n#endif\n#ifndef RIGHT_MIDDY_RING2_STREAK_DECAY\n#define RIGHT_MIDDY_RING2_STREAK_DECAY RIGHT_MIDDY_CHORD_STREAK_DECAY\n#endif\n#ifndef RIGHT_MIDDY_RING2_REPEAT_DECAY\n#define RIGHT_MIDDY_RING2_REPEAT_DECAY RIGHT_MIDDY_CHORD_REPEAT_DECAY\n#endif\n right_middy_ring2: homey_right_middy_ring2 {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_MIDDY_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n right_middy_ring2_bilateral: homey_right_middy_ring2_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_MIDDY_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&right_middy_tap>;\n };\n #define RightMiddyRing2 right_middy_ring2_bilateral RIGHT_RING2_MOD RIGHT_RING2_KEY\n#ifndef RIGHT_INDEX_RING2_HOLDING_TYPE\n#define RIGHT_INDEX_RING2_HOLDING_TYPE RIGHT_INDEX_CHORD_HOLDING_TYPE\n#endif\n#ifndef RIGHT_INDEX_RING2_HOLDING_TIME\n#define RIGHT_INDEX_RING2_HOLDING_TIME RIGHT_INDEX_CHORD_HOLDING_TIME\n#endif\n#ifndef RIGHT_INDEX_RING2_STREAK_DECAY\n#define RIGHT_INDEX_RING2_STREAK_DECAY RIGHT_INDEX_CHORD_STREAK_DECAY\n#endif\n#ifndef RIGHT_INDEX_RING2_REPEAT_DECAY\n#define RIGHT_INDEX_RING2_REPEAT_DECAY RIGHT_INDEX_CHORD_REPEAT_DECAY\n#endif\n right_index_ring2: homey_right_index_ring2 {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_INDEX_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n right_index_ring2_bilateral: homey_right_index_ring2_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_INDEX_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&right_index_tap>;\n };\n #define RightIndexRing2 right_index_ring2_bilateral RIGHT_RING2_MOD RIGHT_RING2_KEY\n#ifndef LEFT_PINKY_MIDDY_HOLDING_TYPE\n#define LEFT_PINKY_MIDDY_HOLDING_TYPE LEFT_PINKY_CHORD_HOLDING_TYPE\n#endif\n#ifndef LEFT_PINKY_MIDDY_HOLDING_TIME\n#define LEFT_PINKY_MIDDY_HOLDING_TIME LEFT_PINKY_CHORD_HOLDING_TIME\n#endif\n#ifndef LEFT_PINKY_MIDDY_STREAK_DECAY\n#define LEFT_PINKY_MIDDY_STREAK_DECAY LEFT_PINKY_CHORD_STREAK_DECAY\n#endif\n#ifndef LEFT_PINKY_MIDDY_REPEAT_DECAY\n#define LEFT_PINKY_MIDDY_REPEAT_DECAY LEFT_PINKY_CHORD_REPEAT_DECAY\n#endif\n left_pinky_middy: homey_left_pinky_middy {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_PINKY_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n left_pinky_middy_bilateral: homey_left_pinky_middy_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_PINKY_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&left_pinky_tap>;\n };\n #define LeftPinkyMiddy left_pinky_middy_bilateral LEFT_MIDDY_MOD LEFT_MIDDY_KEY\n#ifndef LEFT_RING1_MIDDY_HOLDING_TYPE\n#define LEFT_RING1_MIDDY_HOLDING_TYPE LEFT_RING1_CHORD_HOLDING_TYPE\n#endif\n#ifndef LEFT_RING1_MIDDY_HOLDING_TIME\n#define LEFT_RING1_MIDDY_HOLDING_TIME LEFT_RING1_CHORD_HOLDING_TIME\n#endif\n#ifndef LEFT_RING1_MIDDY_STREAK_DECAY\n#define LEFT_RING1_MIDDY_STREAK_DECAY LEFT_RING1_CHORD_STREAK_DECAY\n#endif\n#ifndef LEFT_RING1_MIDDY_REPEAT_DECAY\n#define LEFT_RING1_MIDDY_REPEAT_DECAY LEFT_RING1_CHORD_REPEAT_DECAY\n#endif\n left_ring1_middy: homey_left_ring1_middy {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_RING1_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n left_ring1_middy_bilateral: homey_left_ring1_middy_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_RING1_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&left_ring1_tap>;\n };\n #define LeftRing1Middy left_ring1_middy_bilateral LEFT_MIDDY_MOD LEFT_MIDDY_KEY\n#ifndef LEFT_RING2_MIDDY_HOLDING_TYPE\n#define LEFT_RING2_MIDDY_HOLDING_TYPE LEFT_RING2_CHORD_HOLDING_TYPE\n#endif\n#ifndef LEFT_RING2_MIDDY_HOLDING_TIME\n#define LEFT_RING2_MIDDY_HOLDING_TIME LEFT_RING2_CHORD_HOLDING_TIME\n#endif\n#ifndef LEFT_RING2_MIDDY_STREAK_DECAY\n#define LEFT_RING2_MIDDY_STREAK_DECAY LEFT_RING2_CHORD_STREAK_DECAY\n#endif\n#ifndef LEFT_RING2_MIDDY_REPEAT_DECAY\n#define LEFT_RING2_MIDDY_REPEAT_DECAY LEFT_RING2_CHORD_REPEAT_DECAY\n#endif\n left_ring2_middy: homey_left_ring2_middy {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_RING2_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n left_ring2_middy_bilateral: homey_left_ring2_middy_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_RING2_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&left_ring2_tap>;\n };\n #define LeftRing2Middy left_ring2_middy_bilateral LEFT_MIDDY_MOD LEFT_MIDDY_KEY\n#ifndef LEFT_INDEX_MIDDY_HOLDING_TYPE\n#define LEFT_INDEX_MIDDY_HOLDING_TYPE LEFT_INDEX_CHORD_HOLDING_TYPE\n#endif\n#ifndef LEFT_INDEX_MIDDY_HOLDING_TIME\n#define LEFT_INDEX_MIDDY_HOLDING_TIME LEFT_INDEX_CHORD_HOLDING_TIME\n#endif\n#ifndef LEFT_INDEX_MIDDY_STREAK_DECAY\n#define LEFT_INDEX_MIDDY_STREAK_DECAY LEFT_INDEX_CHORD_STREAK_DECAY\n#endif\n#ifndef LEFT_INDEX_MIDDY_REPEAT_DECAY\n#define LEFT_INDEX_MIDDY_REPEAT_DECAY LEFT_INDEX_CHORD_REPEAT_DECAY\n#endif\n left_index_middy: homey_left_index_middy {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_INDEX_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n left_index_middy_bilateral: homey_left_index_middy_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_INDEX_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&left_index_tap>;\n };\n #define LeftIndexMiddy left_index_middy_bilateral LEFT_MIDDY_MOD LEFT_MIDDY_KEY\n#ifndef RIGHT_PINKY_MIDDY_HOLDING_TYPE\n#define RIGHT_PINKY_MIDDY_HOLDING_TYPE RIGHT_PINKY_CHORD_HOLDING_TYPE\n#endif\n#ifndef RIGHT_PINKY_MIDDY_HOLDING_TIME\n#define RIGHT_PINKY_MIDDY_HOLDING_TIME RIGHT_PINKY_CHORD_HOLDING_TIME\n#endif\n#ifndef RIGHT_PINKY_MIDDY_STREAK_DECAY\n#define RIGHT_PINKY_MIDDY_STREAK_DECAY RIGHT_PINKY_CHORD_STREAK_DECAY\n#endif\n#ifndef RIGHT_PINKY_MIDDY_REPEAT_DECAY\n#define RIGHT_PINKY_MIDDY_REPEAT_DECAY RIGHT_PINKY_CHORD_REPEAT_DECAY\n#endif\n right_pinky_middy: homey_right_pinky_middy {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_PINKY_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n right_pinky_middy_bilateral: homey_right_pinky_middy_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_PINKY_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&right_pinky_tap>;\n };\n #define RightPinkyMiddy right_pinky_middy_bilateral RIGHT_MIDDY_MOD RIGHT_MIDDY_KEY\n#ifndef RIGHT_RING1_MIDDY_HOLDING_TYPE\n#define RIGHT_RING1_MIDDY_HOLDING_TYPE RIGHT_RING1_CHORD_HOLDING_TYPE\n#endif\n#ifndef RIGHT_RING1_MIDDY_HOLDING_TIME\n#define RIGHT_RING1_MIDDY_HOLDING_TIME RIGHT_RING1_CHORD_HOLDING_TIME\n#endif\n#ifndef RIGHT_RING1_MIDDY_STREAK_DECAY\n#define RIGHT_RING1_MIDDY_STREAK_DECAY RIGHT_RING1_CHORD_STREAK_DECAY\n#endif\n#ifndef RIGHT_RING1_MIDDY_REPEAT_DECAY\n#define RIGHT_RING1_MIDDY_REPEAT_DECAY RIGHT_RING1_CHORD_REPEAT_DECAY\n#endif\n right_ring1_middy: homey_right_ring1_middy {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_RING1_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n right_ring1_middy_bilateral: homey_right_ring1_middy_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_RING1_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&right_ring1_tap>;\n };\n #define RightRing1Middy right_ring1_middy_bilateral RIGHT_MIDDY_MOD RIGHT_MIDDY_KEY\n#ifndef RIGHT_RING2_MIDDY_HOLDING_TYPE\n#define RIGHT_RING2_MIDDY_HOLDING_TYPE RIGHT_RING2_CHORD_HOLDING_TYPE\n#endif\n#ifndef RIGHT_RING2_MIDDY_HOLDING_TIME\n#define RIGHT_RING2_MIDDY_HOLDING_TIME RIGHT_RING2_CHORD_HOLDING_TIME\n#endif\n#ifndef RIGHT_RING2_MIDDY_STREAK_DECAY\n#define RIGHT_RING2_MIDDY_STREAK_DECAY RIGHT_RING2_CHORD_STREAK_DECAY\n#endif\n#ifndef RIGHT_RING2_MIDDY_REPEAT_DECAY\n#define RIGHT_RING2_MIDDY_REPEAT_DECAY RIGHT_RING2_CHORD_REPEAT_DECAY\n#endif\n right_ring2_middy: homey_right_ring2_middy {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_RING2_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n right_ring2_middy_bilateral: homey_right_ring2_middy_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_RING2_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&right_ring2_tap>;\n };\n #define RightRing2Middy right_ring2_middy_bilateral RIGHT_MIDDY_MOD RIGHT_MIDDY_KEY\n#ifndef RIGHT_INDEX_MIDDY_HOLDING_TYPE\n#define RIGHT_INDEX_MIDDY_HOLDING_TYPE RIGHT_INDEX_CHORD_HOLDING_TYPE\n#endif\n#ifndef RIGHT_INDEX_MIDDY_HOLDING_TIME\n#define RIGHT_INDEX_MIDDY_HOLDING_TIME RIGHT_INDEX_CHORD_HOLDING_TIME\n#endif\n#ifndef RIGHT_INDEX_MIDDY_STREAK_DECAY\n#define RIGHT_INDEX_MIDDY_STREAK_DECAY RIGHT_INDEX_CHORD_STREAK_DECAY\n#endif\n#ifndef RIGHT_INDEX_MIDDY_REPEAT_DECAY\n#define RIGHT_INDEX_MIDDY_REPEAT_DECAY RIGHT_INDEX_CHORD_REPEAT_DECAY\n#endif\n right_index_middy: homey_right_index_middy {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_INDEX_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n right_index_middy_bilateral: homey_right_index_middy_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_INDEX_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&right_index_tap>;\n };\n #define RightIndexMiddy right_index_middy_bilateral RIGHT_MIDDY_MOD RIGHT_MIDDY_KEY\n#ifndef LEFT_PINKY_INDEX_HOLDING_TYPE\n#define LEFT_PINKY_INDEX_HOLDING_TYPE LEFT_PINKY_CHORD_HOLDING_TYPE\n#endif\n#ifndef LEFT_PINKY_INDEX_HOLDING_TIME\n#define LEFT_PINKY_INDEX_HOLDING_TIME LEFT_PINKY_CHORD_HOLDING_TIME\n#endif\n#ifndef LEFT_PINKY_INDEX_STREAK_DECAY\n#define LEFT_PINKY_INDEX_STREAK_DECAY LEFT_PINKY_CHORD_STREAK_DECAY\n#endif\n#ifndef LEFT_PINKY_INDEX_REPEAT_DECAY\n#define LEFT_PINKY_INDEX_REPEAT_DECAY LEFT_PINKY_CHORD_REPEAT_DECAY\n#endif\n left_pinky_index: homey_left_pinky_index {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_PINKY_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n left_pinky_index_bilateral: homey_left_pinky_index_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_PINKY_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&left_pinky_tap>;\n };\n #define LeftPinkyIndex left_pinky_index_bilateral LEFT_INDEX_MOD LEFT_INDEX_KEY\n#ifndef LEFT_RING1_INDEX_HOLDING_TYPE\n#define LEFT_RING1_INDEX_HOLDING_TYPE LEFT_RING1_CHORD_HOLDING_TYPE\n#endif\n#ifndef LEFT_RING1_INDEX_HOLDING_TIME\n#define LEFT_RING1_INDEX_HOLDING_TIME LEFT_RING1_CHORD_HOLDING_TIME\n#endif\n#ifndef LEFT_RING1_INDEX_STREAK_DECAY\n#define LEFT_RING1_INDEX_STREAK_DECAY LEFT_RING1_CHORD_STREAK_DECAY\n#endif\n#ifndef LEFT_RING1_INDEX_REPEAT_DECAY\n#define LEFT_RING1_INDEX_REPEAT_DECAY LEFT_RING1_CHORD_REPEAT_DECAY\n#endif\n left_ring1_index: homey_left_ring1_index {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_RING1_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n left_ring1_index_bilateral: homey_left_ring1_index_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_RING1_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&left_ring1_tap>;\n };\n #define LeftRing1Index left_ring1_index_bilateral LEFT_INDEX_MOD LEFT_INDEX_KEY\n#ifndef LEFT_RING2_INDEX_HOLDING_TYPE\n#define LEFT_RING2_INDEX_HOLDING_TYPE LEFT_RING2_CHORD_HOLDING_TYPE\n#endif\n#ifndef LEFT_RING2_INDEX_HOLDING_TIME\n#define LEFT_RING2_INDEX_HOLDING_TIME LEFT_RING2_CHORD_HOLDING_TIME\n#endif\n#ifndef LEFT_RING2_INDEX_STREAK_DECAY\n#define LEFT_RING2_INDEX_STREAK_DECAY LEFT_RING2_CHORD_STREAK_DECAY\n#endif\n#ifndef LEFT_RING2_INDEX_REPEAT_DECAY\n#define LEFT_RING2_INDEX_REPEAT_DECAY LEFT_RING2_CHORD_REPEAT_DECAY\n#endif\n left_ring2_index: homey_left_ring2_index {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_RING2_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n left_ring2_index_bilateral: homey_left_ring2_index_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_RING2_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&left_ring2_tap>;\n };\n #define LeftRing2Index left_ring2_index_bilateral LEFT_INDEX_MOD LEFT_INDEX_KEY\n#ifndef LEFT_MIDDY_INDEX_HOLDING_TYPE\n#define LEFT_MIDDY_INDEX_HOLDING_TYPE LEFT_MIDDY_CHORD_HOLDING_TYPE\n#endif\n#ifndef LEFT_MIDDY_INDEX_HOLDING_TIME\n#define LEFT_MIDDY_INDEX_HOLDING_TIME LEFT_MIDDY_CHORD_HOLDING_TIME\n#endif\n#ifndef LEFT_MIDDY_INDEX_STREAK_DECAY\n#define LEFT_MIDDY_INDEX_STREAK_DECAY LEFT_MIDDY_CHORD_STREAK_DECAY\n#endif\n#ifndef LEFT_MIDDY_INDEX_REPEAT_DECAY\n#define LEFT_MIDDY_INDEX_REPEAT_DECAY LEFT_MIDDY_CHORD_REPEAT_DECAY\n#endif\n left_middy_index: homey_left_middy_index {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_MIDDY_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n left_middy_index_bilateral: homey_left_middy_index_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = LEFT_MIDDY_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&left_middy_tap>;\n };\n #define LeftMiddyIndex left_middy_index_bilateral LEFT_INDEX_MOD LEFT_INDEX_KEY\n#ifndef RIGHT_PINKY_INDEX_HOLDING_TYPE\n#define RIGHT_PINKY_INDEX_HOLDING_TYPE RIGHT_PINKY_CHORD_HOLDING_TYPE\n#endif\n#ifndef RIGHT_PINKY_INDEX_HOLDING_TIME\n#define RIGHT_PINKY_INDEX_HOLDING_TIME RIGHT_PINKY_CHORD_HOLDING_TIME\n#endif\n#ifndef RIGHT_PINKY_INDEX_STREAK_DECAY\n#define RIGHT_PINKY_INDEX_STREAK_DECAY RIGHT_PINKY_CHORD_STREAK_DECAY\n#endif\n#ifndef RIGHT_PINKY_INDEX_REPEAT_DECAY\n#define RIGHT_PINKY_INDEX_REPEAT_DECAY RIGHT_PINKY_CHORD_REPEAT_DECAY\n#endif\n right_pinky_index: homey_right_pinky_index {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_PINKY_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n right_pinky_index_bilateral: homey_right_pinky_index_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_PINKY_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&right_pinky_tap>;\n };\n #define RightPinkyIndex right_pinky_index_bilateral RIGHT_INDEX_MOD RIGHT_INDEX_KEY\n#ifndef RIGHT_RING1_INDEX_HOLDING_TYPE\n#define RIGHT_RING1_INDEX_HOLDING_TYPE RIGHT_RING1_CHORD_HOLDING_TYPE\n#endif\n#ifndef RIGHT_RING1_INDEX_HOLDING_TIME\n#define RIGHT_RING1_INDEX_HOLDING_TIME RIGHT_RING1_CHORD_HOLDING_TIME\n#endif\n#ifndef RIGHT_RING1_INDEX_STREAK_DECAY\n#define RIGHT_RING1_INDEX_STREAK_DECAY RIGHT_RING1_CHORD_STREAK_DECAY\n#endif\n#ifndef RIGHT_RING1_INDEX_REPEAT_DECAY\n#define RIGHT_RING1_INDEX_REPEAT_DECAY RIGHT_RING1_CHORD_REPEAT_DECAY\n#endif\n right_ring1_index: homey_right_ring1_index {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_RING1_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n right_ring1_index_bilateral: homey_right_ring1_index_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_RING1_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&right_ring1_tap>;\n };\n #define RightRing1Index right_ring1_index_bilateral RIGHT_INDEX_MOD RIGHT_INDEX_KEY\n#ifndef RIGHT_RING2_INDEX_HOLDING_TYPE\n#define RIGHT_RING2_INDEX_HOLDING_TYPE RIGHT_RING2_CHORD_HOLDING_TYPE\n#endif\n#ifndef RIGHT_RING2_INDEX_HOLDING_TIME\n#define RIGHT_RING2_INDEX_HOLDING_TIME RIGHT_RING2_CHORD_HOLDING_TIME\n#endif\n#ifndef RIGHT_RING2_INDEX_STREAK_DECAY\n#define RIGHT_RING2_INDEX_STREAK_DECAY RIGHT_RING2_CHORD_STREAK_DECAY\n#endif\n#ifndef RIGHT_RING2_INDEX_REPEAT_DECAY\n#define RIGHT_RING2_INDEX_REPEAT_DECAY RIGHT_RING2_CHORD_REPEAT_DECAY\n#endif\n right_ring2_index: homey_right_ring2_index {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_RING2_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n right_ring2_index_bilateral: homey_right_ring2_index_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_RING2_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&right_ring2_tap>;\n };\n #define RightRing2Index right_ring2_index_bilateral RIGHT_INDEX_MOD RIGHT_INDEX_KEY\n#ifndef RIGHT_MIDDY_INDEX_HOLDING_TYPE\n#define RIGHT_MIDDY_INDEX_HOLDING_TYPE RIGHT_MIDDY_CHORD_HOLDING_TYPE\n#endif\n#ifndef RIGHT_MIDDY_INDEX_HOLDING_TIME\n#define RIGHT_MIDDY_INDEX_HOLDING_TIME RIGHT_MIDDY_CHORD_HOLDING_TIME\n#endif\n#ifndef RIGHT_MIDDY_INDEX_STREAK_DECAY\n#define RIGHT_MIDDY_INDEX_STREAK_DECAY RIGHT_MIDDY_CHORD_STREAK_DECAY\n#endif\n#ifndef RIGHT_MIDDY_INDEX_REPEAT_DECAY\n#define RIGHT_MIDDY_INDEX_REPEAT_DECAY RIGHT_MIDDY_CHORD_REPEAT_DECAY\n#endif\n right_middy_index: homey_right_middy_index {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_MIDDY_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&kp>;\n };\n right_middy_index_bilateral: homey_right_middy_index_bilateral {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = RIGHT_MIDDY_HOLDING_TYPE;\n hold-trigger-key-positions = ;\n hold-trigger-on-release; // wait for other home row mods\n tapping-term-ms = ;\n quick-tap-ms = ;\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&kp>, <&right_middy_tap>;\n };\n #define RightMiddyIndex right_middy_index_bilateral RIGHT_INDEX_MOD RIGHT_INDEX_KEY\n\n //\n // Key repetition access keys on the index fingers\n //\n plain: plain_typing_layer {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = PLAIN_HOLDING_TYPE;\n tapping-term-ms = ;\n quick-tap-ms = ; // enable repeat\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&mo>, <&kp>;\n retro-tap; // tap on standalone hold\n };\n plain_engram_COMMA: plain_typing_layer_engram_COMMA {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = PLAIN_HOLDING_TYPE;\n tapping-term-ms = ;\n quick-tap-ms = ; // enable repeat\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&mo>, <&engram_COMMA>;\n retro-tap; // tap on standalone hold\n };\n plain_engram_DOT: plain_typing_layer_engram_DOT {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = PLAIN_HOLDING_TYPE;\n tapping-term-ms = ;\n quick-tap-ms = ; // enable repeat\n require-prior-idle-ms = ;\n #binding-cells = <2>;\n bindings = <&mo>, <&engram_DOT>;\n retro-tap; // tap on standalone hold\n };\n\n //\n // Thumb cluster hold-tap keys for Miryoku layers\n //\n thumb: thumb_layer_access {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = THUMB_HOLDING_TYPE;\n tapping-term-ms = ;\n quick-tap-ms = ; // enable repeat\n #binding-cells = <2>;\n bindings = <&mo>, <&kp>;\n };\n thumb_parang_left: thumb_layer_access_parang_left {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = THUMB_HOLDING_TYPE;\n tapping-term-ms = ;\n quick-tap-ms = ; // enable repeat\n #binding-cells = <2>;\n bindings = <&mo>, <¶ng_left>;\n };\n thumb_lower_shift: lower_layer_or_sticky_shift {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = \"tap-preferred\";\n tapping-term-ms = ;\n #binding-cells = <2>;\n bindings = <&mo>, <&sticky_key_oneshot>;\n };\n space: thumb_layer_access_spacebar {\n compatible = \"zmk,behavior-hold-tap\";\n flavor = SPACE_HOLDING_TYPE;\n tapping-term-ms = ;\n quick-tap-ms = ; // enable repeat\n #binding-cells = <2>;\n bindings = <&mo>, <&kp>;\n };\n\n //\n // Shift + LEFT_PARENTHESIS = LESS_THAN\n //\n parang_left: left_parenthesis_and_less_than {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&kp LPAR>, <&kp LT>;\n mods = <(MOD_LSFT|MOD_RSFT)>;\n };\n\n //\n // Shift + RIGHT_PARENTHESIS = GREATER_THAN\n //\n parang_right: right_parenthesis_and_greater_than {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&kp RPAR>, <&kp GT>;\n mods = <(MOD_LSFT|MOD_RSFT)>;\n };\n\n //\n // Custom shifted pairs for the Engram layout\n // - https://engram.dev/\n // - https://sunaku.github.io/engram-keyboard-layout.html\n //\n engram_N1: engram_shift_N1_PIPE {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&kp N1>, <&kp PIPE>;\n mods = <(MOD_LSFT|MOD_RSFT)>;\n };\n engram_N2: engram_shift_N2_EQUAL {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&kp N2>, <&kp EQUAL>;\n mods = <(MOD_LSFT|MOD_RSFT)>;\n };\n engram_N3: engram_shift_N3_TILDE {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&kp N3>, <&kp TILDE>;\n mods = <(MOD_LSFT|MOD_RSFT)>;\n };\n engram_N4: engram_shift_N4_PLUS {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&kp N4>, <&kp PLUS>;\n mods = <(MOD_LSFT|MOD_RSFT)>;\n };\n engram_N5: engram_shift_N5_LT {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&kp N5>, <&kp LT>;\n mods = <(MOD_LSFT|MOD_RSFT)>;\n };\n engram_N6: engram_shift_N6_GT {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&kp N6>, <&kp GT>;\n mods = <(MOD_LSFT|MOD_RSFT)>;\n };\n engram_N7: engram_shift_N7_CARET {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&kp N7>, <&kp CARET>;\n mods = <(MOD_LSFT|MOD_RSFT)>;\n };\n engram_N8: engram_shift_N8_AMPS {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&kp N8>, <&kp AMPS>;\n mods = <(MOD_LSFT|MOD_RSFT)>;\n };\n engram_N9: engram_shift_N9_PRCNT {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&kp N9>, <&kp PRCNT>;\n mods = <(MOD_LSFT|MOD_RSFT)>;\n };\n engram_N0: engram_shift_N0_STAR {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&kp N0>, <&kp STAR>;\n mods = <(MOD_LSFT|MOD_RSFT)>;\n };\n engram_SQT: engram_shift_SQT_LPAR {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&kp SQT>, <&kp LPAR>;\n mods = <(MOD_LSFT|MOD_RSFT)>;\n };\n engram_DQT: engram_shift_DQT_RPAR {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&kp DQT>, <&kp RPAR>;\n mods = <(MOD_LSFT|MOD_RSFT)>;\n };\n engram_COMMA: engram_shift_COMMA_SEMI {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&kp COMMA>, <&kp SEMI>;\n mods = <(MOD_LSFT|MOD_RSFT)>;\n };\n engram_DOT: engram_shift_DOT_COLON {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&kp DOT>, <&kp COLON>;\n mods = <(MOD_LSFT|MOD_RSFT)>;\n };\n engram_QMARK: engram_shift_QMARK_EXCL {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&kp QMARK>, <&kp EXCL>;\n mods = <(MOD_LSFT|MOD_RSFT)>;\n };\n engram_HASH: engram_shift_HASH_DLLR {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&kp HASH>, <&kp DLLR>;\n mods = <(MOD_LSFT|MOD_RSFT)>;\n };\n engram_AT: engram_shift_AT_GRAVE {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&kp AT>, <&kp GRAVE>;\n mods = <(MOD_LSFT|MOD_RSFT)>;\n };\n engram_FSLH: engram_shift_FSLH_BSLH {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&kp FSLH>, <&kp BSLH>;\n mods = <(MOD_LSFT|MOD_RSFT)>;\n };\n\n //////////////////////////////////////////////////////////////////////////\n //\n // &sk (sticky key) variant that is truly one-shot\n //\n //////////////////////////////////////////////////////////////////////////\n\n //\n // STICKY_1SHOT_DECAY defines how much time you have left (milliseconds)\n // after tapping a sticky key before it expires (won't apply to next tap).\n //\n #ifndef STICKY_1SHOT_DECAY\n #define STICKY_1SHOT_DECAY 500\n #endif\n\n sticky_key_oneshot: sticky_key_oneshot_macro {\n compatible = \"zmk,behavior-macro-one-param\";\n wait-ms = <0>;\n tap-ms = <0>;\n #binding-cells = <1>;\n bindings\n = <¯o_param_1to1>\n , <¯o_tap &sticky_key_quickrel MACRO_PLACEHOLDER>\n ;\n };\n sticky_key_quickrel: sticky_key_quick_release {\n compatible = \"zmk,behavior-sticky-key\";\n #binding-cells = <1>;\n bindings = <&kp>;\n release-after-ms = ;\n quick-release;\n ignore-modifiers;\n };\n\n //////////////////////////////////////////////////////////////////////////\n //\n // ZMK global overrides\n //\n //////////////////////////////////////////////////////////////////////////\n\n //\n // CapsWord - ported from Pascal Getreuer's extension for QMK\n // - https://zmk.dev/docs/behaviors/caps-word\n // - https://getreuer.info/posts/keyboards/caps-word/index.html\n //\n behavior_caps_word {\n continue-list = <\n UNDERSCORE MINUS\n BACKSPACE DELETE\n N1 N2 N3 N4 N5 N6 N7 N8 N9 N0\n >;\n };\n\n};\n\nmacros {\n\n //\n // Linux Magic System Request Key - hold this down and type REISUB\n // - https://www.kernel.org/doc/html/latest/admin-guide/sysrq.html\n // - https://github.com/manna-harbour/miryoku/discussions/259\n //\n ZMK_MACRO(linux_magic_sysrq,\n wait-ms = <0>;\n tap-ms = <0>;\n bindings\n = <¯o_press &mo 0 &kp RALT>\n , <¯o_tap &kp PRINTSCREEN>\n , <¯o_pause_for_release>\n , <¯o_release &mo 0 &kp RALT>\n ;\n )\n\n //\n // Mod+Tab application switcher - hold this down to keep menu open\n //\n mod_tab: mod_tab_switcher {\n compatible = \"zmk,behavior-macro-one-param\";\n wait-ms = <0>;\n tap-ms = <0>;\n #binding-cells = <1>;\n bindings\n = <¯o_param_1to1>\n , <¯o_press &kp MACRO_PLACEHOLDER>\n , <¯o_tap &kp TAB>\n , <¯o_pause_for_release>\n , <¯o_param_1to1>\n , <¯o_release &kp MACRO_PLACEHOLDER>\n ;\n };\n mod_tab_chord: mod_tab_switcher_chord {\n compatible = \"zmk,behavior-macro-two-param\";\n wait-ms = <0>;\n tap-ms = <0>;\n #binding-cells = <2>;\n bindings\n = <¯o_param_2to1>\n , <¯o_press &mo MACRO_PLACEHOLDER>\n , <¯o_param_1to1>\n , <¯o_press &mod_tab MACRO_PLACEHOLDER>\n , <¯o_pause_for_release>\n , <¯o_param_1to1>\n , <¯o_release &mod_tab MACRO_PLACEHOLDER>\n , <¯o_param_2to1>\n , <¯o_release &mo MACRO_PLACEHOLDER>\n ;\n };\n\n //////////////////////////////////////////////////////////////////////////\n //\n // Approximation of Pascal Getreuer's Select Word macro from QMK\n // - https://getreuer.info/posts/keyboards/select-word/index.html\n //\n //////////////////////////////////////////////////////////////////////////\n\n //\n // SELECT_WORD_DELAY defines how long the macro waits (milliseconds)\n // after moving the cursor before it selects a word. A larger delay\n // may allow the macro to move to the next word upon each invocation.\n //\n #ifndef SELECT_WORD_DELAY\n #define SELECT_WORD_DELAY 1\n #endif\n\n ZMK_MACRO(select_none,\n wait-ms = ;\n tap-ms = ;\n bindings = <&kp DOWN &kp UP &kp RIGHT &kp LEFT>;\n )\n\n //\n // select a word (jumps to next word upon each successive invocation)\n //\n select_word: select_word {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&select_word_right>, <&select_word_left>;\n mods = <(MOD_LSFT|MOD_RSFT)>;\n };\n ZMK_MACRO(select_word_right,\n wait-ms = ;\n tap-ms = ;\n bindings = <&kp _W(RIGHT) &kp _W(LEFT) &kp _W(LS(RIGHT))>;\n )\n ZMK_MACRO(select_word_left,\n wait-ms = ;\n tap-ms = ;\n bindings = <&kp _W(LEFT) &kp _W(RIGHT) &kp _W(LS(LEFT))>;\n )\n\n //\n // extend current selection by one word\n //\n extend_word: extend_word {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&extend_word_right>, <&extend_word_left>;\n mods = <(MOD_LSFT|MOD_RSFT)>;\n };\n ZMK_MACRO(extend_word_right,\n wait-ms = ;\n tap-ms = ;\n bindings = <&kp _W(LS(RIGHT))>;\n )\n ZMK_MACRO(extend_word_left,\n wait-ms = ;\n tap-ms = ;\n bindings = <&kp _W(LS(LEFT))>;\n )\n\n //\n // select current line\n //\n select_line: select_line {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&select_line_right>, <&select_line_left>;\n mods = <(MOD_LSFT|MOD_RSFT)>;\n };\n ZMK_MACRO(select_line_right,\n wait-ms = ;\n tap-ms = ;\n bindings = <&kp _HOME &kp LS(_END)>;\n )\n ZMK_MACRO(select_line_left,\n wait-ms = ;\n tap-ms = ;\n bindings = <&kp _END &kp LS(_HOME)>;\n )\n\n //\n // extend current selection by one line\n //\n extend_line: extend_line {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&extend_line_right>, <&extend_line_left>;\n mods = <(MOD_LSFT|MOD_RSFT)>;\n };\n ZMK_MACRO(extend_line_right,\n wait-ms = ;\n tap-ms = ;\n bindings = <&kp LS(DOWN) &kp LS(_END)>;\n )\n ZMK_MACRO(extend_line_left,\n wait-ms = ;\n tap-ms = ;\n bindings = <&kp LS(UP) &kp LS(_HOME)>;\n )\n\n //////////////////////////////////////////////////////////////////////////\n //\n // World layer - international characters\n //\n //////////////////////////////////////////////////////////////////////////\n\n //\n // WORLD_USE_COMPOSE uses OS-native Compose keycodes instead of Unicode\n // for characters in the \"localizing\" section of the `world.yaml` file.\n //\n //#define WORLD_USE_COMPOSE\n\n //\n // UNICODE_TARGET_OS defines which operating system you're targeting\n // for the UNICODE() preprocessor macro to be used on, since each OS\n // has different shortcuts for typing Unicode characters as hexcodes.\n //\n // NOTE: You may need to enable Unicode hexadecimal input in your OS:\n // - (macOS) https://sevenseacat.net/posts/2018/unicode-in-qmk-on-osx/\n // - (Linux) https://help.ubuntu.com/stable/ubuntu-help/tips-specialchars.html.en#ctrlshiftu\n // - (Windows) https://github.com/samhocevar/wincompose\n //\n // Specifically, Windows users should be running the WinCompose tool,\n // which lets you type Unicode characters via hexadecimal codepoints.\n //\n #ifndef UNICODE_TARGET_OS\n #define UNICODE_TARGET_OS OPERATING_SYSTEM\n #endif\n\n //\n // UNICODE_TAP_DELAY defines how long the macro waits (milliseconds)\n // between keystrokes while inputting the Unicode codepoint shortcut.\n //\n #ifndef UNICODE_TAP_DELAY\n #define UNICODE_TAP_DELAY 1\n #endif\n\n //\n // UNICODE_SEQ_DELAY defines how long the macro waits (milliseconds)\n // between emitting Unicode codepoints in multi-codepoint characters.\n //\n #ifndef UNICODE_SEQ_DELAY\n #define UNICODE_SEQ_DELAY 10\n #endif\n\n #define UNICODE(name, ...) \\\n ZMK_MACRO(name, \\\n wait-ms = ; \\\n tap-ms = ; \\\n bindings = __VA_ARGS__; \\\n )\n\n //\n // UNICODE_SEQ_LINUX() specifies how Unicode hexadecimal codepoint\n // keystrokes are transformed into Unicode characters under Linux.\n //\n #ifndef UNICODE_SEQ_LINUX\n #define UNICODE_SEQ_LINUX(keystrokes) \\\n <¯o_tap &kp LC(LS(U)) keystrokes &kp ENTER>\n #endif\n\n //\n // UNICODE_SEQ_MACOS() specifies how Unicode hexadecimal codepoint\n // keystrokes are transformed into Unicode characters under macOS.\n //\n #ifndef UNICODE_SEQ_MACOS\n #define UNICODE_SEQ_MACOS(keystrokes) \\\n <¯o_press &kp LALT> ,\\\n <¯o_tap keystrokes> ,\\\n <¯o_release &kp LALT>\n #endif\n\n //\n // UNICODE_SEQ_WINDOWS() specifies how Unicode hexadecimal codepoint\n // keystrokes are transformed into Unicode characters under Windows.\n //\n // If you've configured WinCompose to use a different trigger hotkey,\n // such as F13 instead of the default RA(U) shortcut, simply override\n // this definition to adapt all UNICODE() function calls accordingly.\n //\n #ifndef UNICODE_SEQ_WINDOWS\n #define UNICODE_SEQ_WINDOWS(keystrokes) \\\n <¯o_tap &kp RALT &kp U keystrokes &kp ENTER>\n #endif\n\n //\n // COMPOSE_KEY_LINUX specifies the keycode for Compose key in Linux,\n // which may be RALT by default but can be reconfigured as follows:\n //\n // $ setxkbmap -option compose:sclk # use ScrollLock as Compose key\n //\n // See xkeyboard-config(7) for possible choices for the Compose key:\n // https://manpages.debian.org/stable/xkb-data/xkeyboard-config.7.en.html#Position_of_Compose_key\n //\n // #define COMPOSE_KEY_LINUX RALT // compose:ralt\n // #define COMPOSE_KEY_LINUX LGUI // compose:lwin\n // #define COMPOSE_KEY_LINUX RA(LGUI) // compose:lwin-altgr\n // #define COMPOSE_KEY_LINUX RGUI // compose:rwin\n // #define COMPOSE_KEY_LINUX RA(RGUI) // compose:rwin-altgr\n // #define COMPOSE_KEY_LINUX K_MENU // compose:menu\n // #define COMPOSE_KEY_LINUX RA(K_MENU) // compose:menu-altgr\n // #define COMPOSE_KEY_LINUX LCTL // compose:lctrl\n // #define COMPOSE_KEY_LINUX RA(LCTL) // compose:lctrl-altgr\n // #define COMPOSE_KEY_LINUX RCTL // compose:rctrl\n // #define COMPOSE_KEY_LINUX RA(RCTL) // compose:rctrl-altgr\n // #define COMPOSE_KEY_LINUX CAPS // compose:caps\n // #define COMPOSE_KEY_LINUX RA(CAPS) // compose:caps-altgr\n // #define COMPOSE_KEY_LINUX NON_US_BSLH // compose:102\n // #define COMPOSE_KEY_LINUX RA(NON_US_BSLH) // compose:102-altgr\n // #define COMPOSE_KEY_LINUX PAUSE_BREAK // compose:paus\n // #define COMPOSE_KEY_LINUX PSCRN // compose:prsc\n // #define COMPOSE_KEY_LINUX SLCK // compose:sclk\n //\n #ifndef COMPOSE_KEY_LINUX\n #define COMPOSE_KEY_LINUX RALT\n #endif\n\n //\n // COMPOSE_SEQ_LINUX() prefixes keystrokes with the Linux Compose key.\n //\n #ifndef COMPOSE_SEQ_LINUX\n #define COMPOSE_SEQ_LINUX(keystrokes) \\\n <¯o_tap &kp COMPOSE_KEY_LINUX keystrokes>\n #endif\n\n //\n // COMPOSE_SEQ_MACOS() formats keystrokes for macOS character entry.\n //\n #ifndef COMPOSE_SEQ_MACOS\n #define COMPOSE_SEQ_MACOS(keystrokes) \\\n <¯o_tap keystrokes>\n #endif\n\n //\n // COMPOSE_SEQ_WINDOWS() wraps keystrokes in Windows AltCode sequence.\n //\n #ifndef COMPOSE_SEQ_WINDOWS\n #define COMPOSE_SEQ_WINDOWS(keystrokes) \\\n <¯o_press &kp LALT>, \\\n <¯o_tap keystrokes>, \\\n <¯o_release &kp LALT>\n #endif\n #if UNICODE_TARGET_OS == 'L'\n #define UNICODE_MORPH_MODS (MOD_LCTL|MOD_LSFT)\n #elif UNICODE_TARGET_OS == 'M'\n #define UNICODE_MORPH_MODS MOD_LALT\n #elif UNICODE_TARGET_OS == 'W'\n #define UNICODE_MORPH_MODS MOD_RALT\n #endif\n #if UNICODE_TARGET_OS == 'L'\n // $ grep \"compose:\" /usr/share/X11/xkb/rules/base.lst\n // compose:ralt Right Alt\n #if COMPOSE_KEY_LINUX == RALT\n #define COMPOSE_MORPH_MODS MOD_RALT\n // compose:lwin Left Win\n #elif COMPOSE_KEY_LINUX == LGUI\n #define COMPOSE_MORPH_MODS MOD_LGUI\n // compose:lwin-altgr 3rd level of Left Win\n #elif COMPOSE_KEY_LINUX == RA(LGUI)\n #define COMPOSE_MORPH_MODS (MOD_LGUI|MOD_RALT)\n // compose:rwin Right Win\n #elif COMPOSE_KEY_LINUX == RGUI\n #define COMPOSE_MORPH_MODS MOD_RGUI\n // compose:rwin-altgr 3rd level of Right Win\n #elif COMPOSE_KEY_LINUX == RA(RGUI)\n #define COMPOSE_MORPH_MODS (MOD_RGUI|MOD_RALT)\n // compose:menu Menu\n // compose:menu-altgr 3rd level of Menu\n #elif COMPOSE_KEY_LINUX == RA(K_MENU)\n #define COMPOSE_MORPH_MODS MOD_RALT\n // compose:lctrl Left Ctrl\n #elif COMPOSE_KEY_LINUX == LCTL\n #define COMPOSE_MORPH_MODS MOD_LCTL\n // compose:lctrl-altgr 3rd level of Left Ctrl\n #elif COMPOSE_KEY_LINUX == RA(LCTL)\n #define COMPOSE_MORPH_MODS (MOD_LCTL|MOD_RALT)\n // compose:rctrl Right Ctrl\n #elif COMPOSE_KEY_LINUX == RCTL\n #define COMPOSE_MORPH_MODS MOD_RCTL\n // compose:rctrl-altgr 3rd level of Right Ctrl\n #elif COMPOSE_KEY_LINUX == RA(RCTL)\n #define COMPOSE_MORPH_MODS (MOD_RCTL|MOD_RALT)\n // compose:caps Caps Lock\n // compose:caps-altgr 3rd level of Caps Lock\n #elif COMPOSE_KEY_LINUX == RA(CAPS)\n #define COMPOSE_MORPH_MODS MOD_RALT\n // compose:102 The \"< >\" key\n // compose:102-altgr 3rd level of the \"< >\" key\n #elif COMPOSE_KEY_LINUX == RA(NON_US_BSLH)\n #define COMPOSE_MORPH_MODS MOD_RALT\n // compose:paus Pause\n // compose:prsc PrtSc\n // compose:sclk Scroll Lock\n #else\n #define COMPOSE_MORPH_MODS 0\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #define COMPOSE_MORPH_MODS 0\n #elif UNICODE_TARGET_OS == 'W'\n #define COMPOSE_MORPH_MODS MOD_LALT\n #endif\n\n\n //\n // NOTE: edit the world.yaml file and run `rake` to generate this:\n //\n\n //\n // codepoints\n //\n UNICODE(world_degree_sign_macro, /* ° */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_degree_sign\n COMPOSE_SEQ_LINUX(&kp O &kp O)\n #else\n UNICODE_SEQ_LINUX(&kp B &kp N0)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_degree_sign\n COMPOSE_SEQ_MACOS(&kp LA(LS(N8)))\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp B &kp N0)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_degree_sign\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N1 &kp KP_N7 &kp KP_N6)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp B &kp N0)\n #endif\n #endif\n )\n world_degree_sign: world_degree_sign {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_degree_sign_macro>, <&world_degree_sign_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_degree_sign\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_section_sign_macro, /* § */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_section_sign\n COMPOSE_SEQ_LINUX(&kp S &kp O)\n #else\n UNICODE_SEQ_LINUX(&kp A &kp N7)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_section_sign\n COMPOSE_SEQ_MACOS(&kp LA(N6))\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp A &kp N7)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_section_sign\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N1 &kp KP_N6 &kp KP_N7)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp A &kp N7)\n #endif\n #endif\n )\n world_section_sign: world_section_sign {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_section_sign_macro>, <&world_section_sign_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_section_sign\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_paragraph_sign_macro, /* ¶ */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_paragraph_sign\n COMPOSE_SEQ_LINUX(&kp P &kp EXCL)\n #else\n UNICODE_SEQ_LINUX(&kp B &kp N6)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_paragraph_sign\n COMPOSE_SEQ_MACOS(&kp LA(N7))\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp B &kp N6)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_paragraph_sign\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N1 &kp KP_N8 &kp KP_N2)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp B &kp N6)\n #endif\n #endif\n )\n world_paragraph_sign: world_paragraph_sign {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_paragraph_sign_macro>, <&world_paragraph_sign_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_paragraph_sign\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_o_ordinal_macro, /* º */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_o_ordinal\n COMPOSE_SEQ_LINUX(&kp CARET &kp UNDER &kp O)\n #else\n UNICODE_SEQ_LINUX(&kp B &kp A)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_o_ordinal\n COMPOSE_SEQ_MACOS(&kp LA(N0))\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp B &kp A)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_o_ordinal\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N1 &kp KP_N8 &kp KP_N6)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp B &kp A)\n #endif\n #endif\n )\n world_o_ordinal: world_o_ordinal {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_o_ordinal_macro>, <&world_o_ordinal_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_o_ordinal\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_a_ordinal_macro, /* ª */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_a_ordinal\n COMPOSE_SEQ_LINUX(&kp CARET &kp UNDER &kp A)\n #else\n UNICODE_SEQ_LINUX(&kp A &kp A)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_a_ordinal\n COMPOSE_SEQ_MACOS(&kp LA(N9))\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp A &kp A)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_a_ordinal\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N1 &kp KP_N7 &kp KP_N0)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp A &kp A)\n #endif\n #endif\n )\n world_a_ordinal: world_a_ordinal {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_a_ordinal_macro>, <&world_a_ordinal_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_a_ordinal\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_exclaim_left_macro, /* ¡ */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp A &kp N1)\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_exclaim_left\n COMPOSE_SEQ_MACOS(&kp LA(N1))\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp A &kp N1)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_exclaim_left\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N1 &kp KP_N6 &kp KP_N1)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp A &kp N1)\n #endif\n #endif\n )\n world_exclaim_left: world_exclaim_left {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_exclaim_left_macro>, <&world_exclaim_left_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_exclaim_left\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_question_left_macro, /* ¿ */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_question_left\n COMPOSE_SEQ_LINUX(&kp EXCL &kp EXCL)\n #else\n UNICODE_SEQ_LINUX(&kp B &kp F)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_question_left\n COMPOSE_SEQ_MACOS(&kp LA(LS(FSLH)))\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp B &kp F)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_question_left\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N1 &kp KP_N9 &kp KP_N1)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp B &kp F)\n #endif\n #endif\n )\n world_question_left: world_question_left {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_question_left_macro>, <&world_question_left_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_question_left\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_currency_crypto_macro, /* ₿ */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N2 &kp N0 &kp B &kp F)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp N2 &kp N0 &kp B &kp F)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N0 &kp B &kp F)\n #endif\n )\n world_currency_crypto: world_currency_crypto {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_currency_crypto_macro>, <&world_currency_crypto_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_currency_crypto\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_currency_cent_macro, /* ¢ */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp A &kp N2)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp A &kp N2)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp A &kp N2)\n #endif\n )\n world_currency_cent: world_currency_cent {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_currency_cent_macro>, <&world_currency_cent_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_currency_cent\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_currency_sign_macro, /* ¤ */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp A &kp N4)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp A &kp N4)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp A &kp N4)\n #endif\n )\n world_currency_sign: world_currency_sign {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_currency_sign_macro>, <&world_currency_sign_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_currency_sign\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_micro_sign_macro, /* µ */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_micro_sign\n COMPOSE_SEQ_LINUX(&kp M &kp U)\n #else\n UNICODE_SEQ_LINUX(&kp B &kp N5)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_micro_sign\n COMPOSE_SEQ_MACOS(&kp LA(M))\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp B &kp N5)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_micro_sign\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N1 &kp KP_N8 &kp KP_N1)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp B &kp N5)\n #endif\n #endif\n )\n world_micro_sign: world_micro_sign {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_micro_sign_macro>, <&world_micro_sign_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_micro_sign\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n\n //\n // characters\n //\n UNICODE(world_i_acute_lower_macro, /* í */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_i_acute_lower\n COMPOSE_SEQ_LINUX(&kp SQT &kp I)\n #else\n UNICODE_SEQ_LINUX(&kp E &kp D)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_i_acute_lower\n COMPOSE_SEQ_MACOS(&kp LA(E) &kp I)\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp E &kp D)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_i_acute_lower\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N3 &kp KP_N7)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp E &kp D)\n #endif\n #endif\n )\n world_i_acute_lower: world_i_acute_lower {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_i_acute_lower_macro>, <&world_i_acute_lower_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_i_acute_lower\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_i_acute_upper_macro, /* Í */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_i_acute_upper\n COMPOSE_SEQ_LINUX(&kp SQT &kp LS(I))\n #else\n UNICODE_SEQ_LINUX(&kp C &kp D)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_i_acute_upper\n COMPOSE_SEQ_MACOS(&kp LA(E) &kp LS(I))\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp C &kp D)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_i_acute_upper\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N0 &kp KP_N5)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp C &kp D)\n #endif\n #endif\n )\n world_i_acute_upper: world_i_acute_upper {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_i_acute_upper_macro>, <&world_i_acute_upper_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_i_acute_upper\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n world_i_acute: world_i_acute {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_i_acute_lower>, <&world_i_acute_upper>;\n mods = ;\n };\n UNICODE(world_i_diaeresis_lower_macro, /* ï */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_i_diaeresis_lower\n COMPOSE_SEQ_LINUX(&kp DQT &kp I)\n #else\n UNICODE_SEQ_LINUX(&kp E &kp F)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_i_diaeresis_lower\n COMPOSE_SEQ_MACOS(&kp LA(U) &kp I)\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp E &kp F)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_i_diaeresis_lower\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N3 &kp KP_N9)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp E &kp F)\n #endif\n #endif\n )\n world_i_diaeresis_lower: world_i_diaeresis_lower {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_i_diaeresis_lower_macro>, <&world_i_diaeresis_lower_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_i_diaeresis_lower\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_i_diaeresis_upper_macro, /* Ï */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_i_diaeresis_upper\n COMPOSE_SEQ_LINUX(&kp DQT &kp LS(I))\n #else\n UNICODE_SEQ_LINUX(&kp C &kp F)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_i_diaeresis_upper\n COMPOSE_SEQ_MACOS(&kp LA(U) &kp LS(I))\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp C &kp F)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_i_diaeresis_upper\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N0 &kp KP_N7)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp C &kp F)\n #endif\n #endif\n )\n world_i_diaeresis_upper: world_i_diaeresis_upper {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_i_diaeresis_upper_macro>, <&world_i_diaeresis_upper_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_i_diaeresis_upper\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n world_i_diaeresis: world_i_diaeresis {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_i_diaeresis_lower>, <&world_i_diaeresis_upper>;\n mods = ;\n };\n UNICODE(world_i_circumflex_lower_macro, /* î */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_i_circumflex_lower\n COMPOSE_SEQ_LINUX(&kp CARET &kp I)\n #else\n UNICODE_SEQ_LINUX(&kp E &kp E)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_i_circumflex_lower\n COMPOSE_SEQ_MACOS(&kp LA(I) &kp I)\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp E &kp E)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_i_circumflex_lower\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N3 &kp KP_N8)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp E &kp E)\n #endif\n #endif\n )\n world_i_circumflex_lower: world_i_circumflex_lower {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_i_circumflex_lower_macro>, <&world_i_circumflex_lower_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_i_circumflex_lower\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_i_circumflex_upper_macro, /* Î */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_i_circumflex_upper\n COMPOSE_SEQ_LINUX(&kp CARET &kp LS(I))\n #else\n UNICODE_SEQ_LINUX(&kp C &kp E)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_i_circumflex_upper\n COMPOSE_SEQ_MACOS(&kp LA(I) &kp LS(I))\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp C &kp E)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_i_circumflex_upper\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N0 &kp KP_N6)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp C &kp E)\n #endif\n #endif\n )\n world_i_circumflex_upper: world_i_circumflex_upper {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_i_circumflex_upper_macro>, <&world_i_circumflex_upper_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_i_circumflex_upper\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n world_i_circumflex: world_i_circumflex {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_i_circumflex_lower>, <&world_i_circumflex_upper>;\n mods = ;\n };\n UNICODE(world_i_grave_lower_macro, /* ì */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_i_grave_lower\n COMPOSE_SEQ_LINUX(&kp GRAVE &kp I)\n #else\n UNICODE_SEQ_LINUX(&kp E &kp C)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_i_grave_lower\n COMPOSE_SEQ_MACOS(&kp LA(GRAVE) &kp I)\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp E &kp C)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_i_grave_lower\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N3 &kp KP_N6)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp E &kp C)\n #endif\n #endif\n )\n world_i_grave_lower: world_i_grave_lower {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_i_grave_lower_macro>, <&world_i_grave_lower_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_i_grave_lower\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_i_grave_upper_macro, /* Ì */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_i_grave_upper\n COMPOSE_SEQ_LINUX(&kp GRAVE &kp LS(I))\n #else\n UNICODE_SEQ_LINUX(&kp C &kp C)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_i_grave_upper\n COMPOSE_SEQ_MACOS(&kp LA(GRAVE) &kp LS(I))\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp C &kp C)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_i_grave_upper\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N0 &kp KP_N6)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp C &kp C)\n #endif\n #endif\n )\n world_i_grave_upper: world_i_grave_upper {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_i_grave_upper_macro>, <&world_i_grave_upper_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_i_grave_upper\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n world_i_grave: world_i_grave {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_i_grave_lower>, <&world_i_grave_upper>;\n mods = ;\n };\n UNICODE(world_e_acute_lower_macro, /* é */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_e_acute_lower\n COMPOSE_SEQ_LINUX(&kp SQT &kp E)\n #else\n UNICODE_SEQ_LINUX(&kp E &kp N9)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_e_acute_lower\n COMPOSE_SEQ_MACOS(&kp LA(E) &kp E)\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp E &kp N9)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_e_acute_lower\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N3 &kp KP_N3)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp E &kp N9)\n #endif\n #endif\n )\n world_e_acute_lower: world_e_acute_lower {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_e_acute_lower_macro>, <&world_e_acute_lower_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_e_acute_lower\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_e_acute_upper_macro, /* É */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_e_acute_upper\n COMPOSE_SEQ_LINUX(&kp SQT &kp LS(E))\n #else\n UNICODE_SEQ_LINUX(&kp C &kp N9)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_e_acute_upper\n COMPOSE_SEQ_MACOS(&kp LA(E) &kp LS(E))\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp C &kp N9)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_e_acute_upper\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N0 &kp KP_N1)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp C &kp N9)\n #endif\n #endif\n )\n world_e_acute_upper: world_e_acute_upper {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_e_acute_upper_macro>, <&world_e_acute_upper_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_e_acute_upper\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n world_e_acute: world_e_acute {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_e_acute_lower>, <&world_e_acute_upper>;\n mods = ;\n };\n UNICODE(world_e_diaeresis_lower_macro, /* ë */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_e_diaeresis_lower\n COMPOSE_SEQ_LINUX(&kp DQT &kp E)\n #else\n UNICODE_SEQ_LINUX(&kp E &kp B)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_e_diaeresis_lower\n COMPOSE_SEQ_MACOS(&kp LA(U) &kp E)\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp E &kp B)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_e_diaeresis_lower\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N3 &kp KP_N5)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp E &kp B)\n #endif\n #endif\n )\n world_e_diaeresis_lower: world_e_diaeresis_lower {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_e_diaeresis_lower_macro>, <&world_e_diaeresis_lower_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_e_diaeresis_lower\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_e_diaeresis_upper_macro, /* Ë */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_e_diaeresis_upper\n COMPOSE_SEQ_LINUX(&kp DQT &kp LS(E))\n #else\n UNICODE_SEQ_LINUX(&kp C &kp B)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_e_diaeresis_upper\n COMPOSE_SEQ_MACOS(&kp LA(U) &kp LS(E))\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp C &kp B)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_e_diaeresis_upper\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N0 &kp KP_N3)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp C &kp B)\n #endif\n #endif\n )\n world_e_diaeresis_upper: world_e_diaeresis_upper {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_e_diaeresis_upper_macro>, <&world_e_diaeresis_upper_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_e_diaeresis_upper\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n world_e_diaeresis: world_e_diaeresis {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_e_diaeresis_lower>, <&world_e_diaeresis_upper>;\n mods = ;\n };\n UNICODE(world_e_circumflex_lower_macro, /* ê */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_e_circumflex_lower\n COMPOSE_SEQ_LINUX(&kp CARET &kp E)\n #else\n UNICODE_SEQ_LINUX(&kp E &kp A)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_e_circumflex_lower\n COMPOSE_SEQ_MACOS(&kp LA(I) &kp E)\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp E &kp A)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_e_circumflex_lower\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N3 &kp KP_N4)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp E &kp A)\n #endif\n #endif\n )\n world_e_circumflex_lower: world_e_circumflex_lower {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_e_circumflex_lower_macro>, <&world_e_circumflex_lower_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_e_circumflex_lower\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_e_circumflex_upper_macro, /* Ê */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_e_circumflex_upper\n COMPOSE_SEQ_LINUX(&kp CARET &kp LS(E))\n #else\n UNICODE_SEQ_LINUX(&kp C &kp A)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_e_circumflex_upper\n COMPOSE_SEQ_MACOS(&kp LA(I) &kp LS(E))\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp C &kp A)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_e_circumflex_upper\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N0 &kp KP_N2)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp C &kp A)\n #endif\n #endif\n )\n world_e_circumflex_upper: world_e_circumflex_upper {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_e_circumflex_upper_macro>, <&world_e_circumflex_upper_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_e_circumflex_upper\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n world_e_circumflex: world_e_circumflex {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_e_circumflex_lower>, <&world_e_circumflex_upper>;\n mods = ;\n };\n UNICODE(world_e_grave_lower_macro, /* è */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_e_grave_lower\n COMPOSE_SEQ_LINUX(&kp GRAVE &kp E)\n #else\n UNICODE_SEQ_LINUX(&kp E &kp N8)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_e_grave_lower\n COMPOSE_SEQ_MACOS(&kp LA(GRAVE) &kp E)\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp E &kp N8)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_e_grave_lower\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N3 &kp KP_N2)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp E &kp N8)\n #endif\n #endif\n )\n world_e_grave_lower: world_e_grave_lower {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_e_grave_lower_macro>, <&world_e_grave_lower_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_e_grave_lower\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_e_grave_upper_macro, /* È */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_e_grave_upper\n COMPOSE_SEQ_LINUX(&kp GRAVE &kp LS(E))\n #else\n UNICODE_SEQ_LINUX(&kp C &kp N8)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_e_grave_upper\n COMPOSE_SEQ_MACOS(&kp LA(GRAVE) &kp LS(E))\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp C &kp N8)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_e_grave_upper\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N0 &kp KP_N0)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp C &kp N8)\n #endif\n #endif\n )\n world_e_grave_upper: world_e_grave_upper {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_e_grave_upper_macro>, <&world_e_grave_upper_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_e_grave_upper\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n world_e_grave: world_e_grave {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_e_grave_lower>, <&world_e_grave_upper>;\n mods = ;\n };\n UNICODE(world_e_ae_lower_macro, /* æ */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_e_ae_lower\n COMPOSE_SEQ_LINUX(&kp A &kp E)\n #else\n UNICODE_SEQ_LINUX(&kp E &kp N6)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_e_ae_lower\n COMPOSE_SEQ_MACOS(&kp LA(SQT))\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp E &kp N6)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_e_ae_lower\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N3 &kp KP_N0)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp E &kp N6)\n #endif\n #endif\n )\n world_e_ae_lower: world_e_ae_lower {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_e_ae_lower_macro>, <&world_e_ae_lower_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_e_ae_lower\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_e_ae_upper_macro, /* Æ */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_e_ae_upper\n COMPOSE_SEQ_LINUX(&kp LS(A) &kp LS(E))\n #else\n UNICODE_SEQ_LINUX(&kp C &kp N6)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_e_ae_upper\n COMPOSE_SEQ_MACOS(&kp LA(LS(SQT)))\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp C &kp N6)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_e_ae_upper\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N1 &kp KP_N9 &kp KP_N8)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp C &kp N6)\n #endif\n #endif\n )\n world_e_ae_upper: world_e_ae_upper {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_e_ae_upper_macro>, <&world_e_ae_upper_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_e_ae_upper\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n world_e_ae: world_e_ae {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_e_ae_lower>, <&world_e_ae_upper>;\n mods = ;\n };\n UNICODE(world_a_acute_lower_macro, /* á */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_a_acute_lower\n COMPOSE_SEQ_LINUX(&kp SQT &kp A)\n #else\n UNICODE_SEQ_LINUX(&kp E &kp N1)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_a_acute_lower\n COMPOSE_SEQ_MACOS(&kp LA(E) &kp A)\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp E &kp N1)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_a_acute_lower\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N2 &kp KP_N5)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp E &kp N1)\n #endif\n #endif\n )\n world_a_acute_lower: world_a_acute_lower {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_a_acute_lower_macro>, <&world_a_acute_lower_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_a_acute_lower\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_a_acute_upper_macro, /* Á */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_a_acute_upper\n COMPOSE_SEQ_LINUX(&kp SQT &kp LS(A))\n #else\n UNICODE_SEQ_LINUX(&kp C &kp N1)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_a_acute_upper\n COMPOSE_SEQ_MACOS(&kp LA(E) &kp LS(A))\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp C &kp N1)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_a_acute_upper\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N1 &kp KP_N9 &kp KP_N3)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp C &kp N1)\n #endif\n #endif\n )\n world_a_acute_upper: world_a_acute_upper {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_a_acute_upper_macro>, <&world_a_acute_upper_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_a_acute_upper\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n world_a_acute: world_a_acute {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_a_acute_lower>, <&world_a_acute_upper>;\n mods = ;\n };\n UNICODE(world_a_diaeresis_lower_macro, /* ä */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_a_diaeresis_lower\n COMPOSE_SEQ_LINUX(&kp DQT &kp A)\n #else\n UNICODE_SEQ_LINUX(&kp E &kp N4)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_a_diaeresis_lower\n COMPOSE_SEQ_MACOS(&kp LA(U) &kp A)\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp E &kp N4)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_a_diaeresis_lower\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N2 &kp KP_N8)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp E &kp N4)\n #endif\n #endif\n )\n world_a_diaeresis_lower: world_a_diaeresis_lower {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_a_diaeresis_lower_macro>, <&world_a_diaeresis_lower_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_a_diaeresis_lower\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_a_diaeresis_upper_macro, /* Ä */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_a_diaeresis_upper\n COMPOSE_SEQ_LINUX(&kp DQT &kp LS(A))\n #else\n UNICODE_SEQ_LINUX(&kp C &kp N4)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_a_diaeresis_upper\n COMPOSE_SEQ_MACOS(&kp LA(U) &kp LS(A))\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp C &kp N4)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_a_diaeresis_upper\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N1 &kp KP_N9 &kp KP_N6)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp C &kp N4)\n #endif\n #endif\n )\n world_a_diaeresis_upper: world_a_diaeresis_upper {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_a_diaeresis_upper_macro>, <&world_a_diaeresis_upper_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_a_diaeresis_upper\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n world_a_diaeresis: world_a_diaeresis {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_a_diaeresis_lower>, <&world_a_diaeresis_upper>;\n mods = ;\n };\n UNICODE(world_a_circumflex_lower_macro, /* â */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_a_circumflex_lower\n COMPOSE_SEQ_LINUX(&kp CARET &kp A)\n #else\n UNICODE_SEQ_LINUX(&kp E &kp N2)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_a_circumflex_lower\n COMPOSE_SEQ_MACOS(&kp LA(I) &kp A)\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp E &kp N2)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_a_circumflex_lower\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N2 &kp KP_N6)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp E &kp N2)\n #endif\n #endif\n )\n world_a_circumflex_lower: world_a_circumflex_lower {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_a_circumflex_lower_macro>, <&world_a_circumflex_lower_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_a_circumflex_lower\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_a_circumflex_upper_macro, /* Â */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_a_circumflex_upper\n COMPOSE_SEQ_LINUX(&kp CARET &kp LS(A))\n #else\n UNICODE_SEQ_LINUX(&kp C &kp N2)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_a_circumflex_upper\n COMPOSE_SEQ_MACOS(&kp LA(I) &kp LS(A))\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp C &kp N2)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_a_circumflex_upper\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N1 &kp KP_N9 &kp KP_N4)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp C &kp N2)\n #endif\n #endif\n )\n world_a_circumflex_upper: world_a_circumflex_upper {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_a_circumflex_upper_macro>, <&world_a_circumflex_upper_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_a_circumflex_upper\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n world_a_circumflex: world_a_circumflex {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_a_circumflex_lower>, <&world_a_circumflex_upper>;\n mods = ;\n };\n UNICODE(world_a_grave_lower_macro, /* à */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_a_grave_lower\n COMPOSE_SEQ_LINUX(&kp GRAVE &kp A)\n #else\n UNICODE_SEQ_LINUX(&kp E &kp N0)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_a_grave_lower\n COMPOSE_SEQ_MACOS(&kp LA(GRAVE) &kp A)\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp E &kp N0)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_a_grave_lower\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N2 &kp KP_N4)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp E &kp N0)\n #endif\n #endif\n )\n world_a_grave_lower: world_a_grave_lower {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_a_grave_lower_macro>, <&world_a_grave_lower_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_a_grave_lower\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_a_grave_upper_macro, /* À */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_a_grave_upper\n COMPOSE_SEQ_LINUX(&kp GRAVE &kp LS(A))\n #else\n UNICODE_SEQ_LINUX(&kp C &kp N0)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_a_grave_upper\n COMPOSE_SEQ_MACOS(&kp LA(GRAVE) &kp LS(A))\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp C &kp N0)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_a_grave_upper\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N1 &kp KP_N9 &kp KP_N2)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp C &kp N0)\n #endif\n #endif\n )\n world_a_grave_upper: world_a_grave_upper {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_a_grave_upper_macro>, <&world_a_grave_upper_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_a_grave_upper\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n world_a_grave: world_a_grave {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_a_grave_lower>, <&world_a_grave_upper>;\n mods = ;\n };\n UNICODE(world_a_tilde_lower_macro, /* ã */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_a_tilde_lower\n COMPOSE_SEQ_LINUX(&kp TILDE &kp A)\n #else\n UNICODE_SEQ_LINUX(&kp E &kp N3)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_a_tilde_lower\n COMPOSE_SEQ_MACOS(&kp LA(N) &kp A)\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp E &kp N3)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_a_tilde_lower\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N2 &kp KP_N7)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp E &kp N3)\n #endif\n #endif\n )\n world_a_tilde_lower: world_a_tilde_lower {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_a_tilde_lower_macro>, <&world_a_tilde_lower_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_a_tilde_lower\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_a_tilde_upper_macro, /* Ã */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_a_tilde_upper\n COMPOSE_SEQ_LINUX(&kp TILDE &kp LS(A))\n #else\n UNICODE_SEQ_LINUX(&kp C &kp N3)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_a_tilde_upper\n COMPOSE_SEQ_MACOS(&kp LA(N) &kp LS(A))\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp C &kp N3)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_a_tilde_upper\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N1 &kp KP_N9 &kp KP_N5)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp C &kp N3)\n #endif\n #endif\n )\n world_a_tilde_upper: world_a_tilde_upper {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_a_tilde_upper_macro>, <&world_a_tilde_upper_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_a_tilde_upper\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n world_a_tilde: world_a_tilde {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_a_tilde_lower>, <&world_a_tilde_upper>;\n mods = ;\n };\n UNICODE(world_a_ring_lower_macro, /* å */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_a_ring_lower\n COMPOSE_SEQ_LINUX(&kp O &kp A)\n #else\n UNICODE_SEQ_LINUX(&kp E &kp N5)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_a_ring_lower\n COMPOSE_SEQ_MACOS(&kp LA(A))\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp E &kp N5)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_a_ring_lower\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N2 &kp KP_N9)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp E &kp N5)\n #endif\n #endif\n )\n world_a_ring_lower: world_a_ring_lower {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_a_ring_lower_macro>, <&world_a_ring_lower_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_a_ring_lower\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_a_ring_upper_macro, /* Å */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_a_ring_upper\n COMPOSE_SEQ_LINUX(&kp O &kp LS(A))\n #else\n UNICODE_SEQ_LINUX(&kp C &kp N5)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_a_ring_upper\n COMPOSE_SEQ_MACOS(&kp LA(LS(A)))\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp C &kp N5)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_a_ring_upper\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N1 &kp KP_N9 &kp KP_N7)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp C &kp N5)\n #endif\n #endif\n )\n world_a_ring_upper: world_a_ring_upper {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_a_ring_upper_macro>, <&world_a_ring_upper_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_a_ring_upper\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n world_a_ring: world_a_ring {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_a_ring_lower>, <&world_a_ring_upper>;\n mods = ;\n };\n UNICODE(world_y_acute_lower_macro, /* ý */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_y_acute_lower\n COMPOSE_SEQ_LINUX(&kp SQT &kp Y)\n #else\n UNICODE_SEQ_LINUX(&kp F &kp D)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_y_acute_lower\n COMPOSE_SEQ_MACOS(&kp LA(E) &kp Y)\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp F &kp D)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_y_acute_lower\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N5 &kp KP_N3)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp D)\n #endif\n #endif\n )\n world_y_acute_lower: world_y_acute_lower {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_y_acute_lower_macro>, <&world_y_acute_lower_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_y_acute_lower\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_y_acute_upper_macro, /* Ý */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_y_acute_upper\n COMPOSE_SEQ_LINUX(&kp SQT &kp LS(Y))\n #else\n UNICODE_SEQ_LINUX(&kp D &kp D)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_y_acute_upper\n COMPOSE_SEQ_MACOS(&kp LA(E) &kp LS(Y))\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp D &kp D)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_y_acute_upper\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N2 &kp KP_N1)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp D &kp D)\n #endif\n #endif\n )\n world_y_acute_upper: world_y_acute_upper {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_y_acute_upper_macro>, <&world_y_acute_upper_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_y_acute_upper\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n world_y_acute: world_y_acute {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_y_acute_lower>, <&world_y_acute_upper>;\n mods = ;\n };\n UNICODE(world_y_diaeresis_lower_macro, /* ÿ */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_y_diaeresis_lower\n COMPOSE_SEQ_LINUX(&kp DQT &kp Y)\n #else\n UNICODE_SEQ_LINUX(&kp F &kp F)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_y_diaeresis_lower\n COMPOSE_SEQ_MACOS(&kp LA(U) &kp Y)\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp F &kp F)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_y_diaeresis_lower\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N5 &kp KP_N5)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp F)\n #endif\n #endif\n )\n world_y_diaeresis_lower: world_y_diaeresis_lower {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_y_diaeresis_lower_macro>, <&world_y_diaeresis_lower_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_y_diaeresis_lower\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_y_diaeresis_upper_macro, /* Ÿ */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_y_diaeresis_upper\n COMPOSE_SEQ_LINUX(&kp DQT &kp LS(Y))\n #else\n UNICODE_SEQ_LINUX(&kp N1 &kp N7 &kp N8)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_y_diaeresis_upper\n COMPOSE_SEQ_MACOS(&kp LA(U) &kp LS(Y))\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N1 &kp N7 &kp N8)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_y_diaeresis_upper\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N1 &kp KP_N5 &kp KP_N9)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp N7 &kp N8)\n #endif\n #endif\n )\n world_y_diaeresis_upper: world_y_diaeresis_upper {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_y_diaeresis_upper_macro>, <&world_y_diaeresis_upper_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_y_diaeresis_upper\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n world_y_diaeresis: world_y_diaeresis {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_y_diaeresis_lower>, <&world_y_diaeresis_upper>;\n mods = ;\n };\n UNICODE(world_o_acute_lower_macro, /* ó */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_o_acute_lower\n COMPOSE_SEQ_LINUX(&kp SQT &kp O)\n #else\n UNICODE_SEQ_LINUX(&kp F &kp N3)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_o_acute_lower\n COMPOSE_SEQ_MACOS(&kp LA(E) &kp O)\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp F &kp N3)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_o_acute_lower\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N4 &kp KP_N3)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp N3)\n #endif\n #endif\n )\n world_o_acute_lower: world_o_acute_lower {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_o_acute_lower_macro>, <&world_o_acute_lower_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_o_acute_lower\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_o_acute_upper_macro, /* Ó */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_o_acute_upper\n COMPOSE_SEQ_LINUX(&kp SQT &kp LS(O))\n #else\n UNICODE_SEQ_LINUX(&kp D &kp N3)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_o_acute_upper\n COMPOSE_SEQ_MACOS(&kp LA(E) &kp LS(O))\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp D &kp N3)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_o_acute_upper\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N1 &kp KP_N1)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp D &kp N3)\n #endif\n #endif\n )\n world_o_acute_upper: world_o_acute_upper {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_o_acute_upper_macro>, <&world_o_acute_upper_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_o_acute_upper\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n world_o_acute: world_o_acute {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_o_acute_lower>, <&world_o_acute_upper>;\n mods = ;\n };\n UNICODE(world_o_diaeresis_lower_macro, /* ö */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_o_diaeresis_lower\n COMPOSE_SEQ_LINUX(&kp DQT &kp O)\n #else\n UNICODE_SEQ_LINUX(&kp F &kp N6)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_o_diaeresis_lower\n COMPOSE_SEQ_MACOS(&kp LA(U) &kp O)\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp F &kp N6)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_o_diaeresis_lower\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N4 &kp KP_N6)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp N6)\n #endif\n #endif\n )\n world_o_diaeresis_lower: world_o_diaeresis_lower {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_o_diaeresis_lower_macro>, <&world_o_diaeresis_lower_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_o_diaeresis_lower\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_o_diaeresis_upper_macro, /* Ö */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_o_diaeresis_upper\n COMPOSE_SEQ_LINUX(&kp DQT &kp LS(O))\n #else\n UNICODE_SEQ_LINUX(&kp D &kp N6)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_o_diaeresis_upper\n COMPOSE_SEQ_MACOS(&kp LA(U) &kp LS(O))\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp D &kp N6)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_o_diaeresis_upper\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N1 &kp KP_N4)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp D &kp N6)\n #endif\n #endif\n )\n world_o_diaeresis_upper: world_o_diaeresis_upper {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_o_diaeresis_upper_macro>, <&world_o_diaeresis_upper_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_o_diaeresis_upper\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n world_o_diaeresis: world_o_diaeresis {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_o_diaeresis_lower>, <&world_o_diaeresis_upper>;\n mods = ;\n };\n UNICODE(world_o_circumflex_lower_macro, /* ô */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_o_circumflex_lower\n COMPOSE_SEQ_LINUX(&kp CARET &kp O)\n #else\n UNICODE_SEQ_LINUX(&kp F &kp N4)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_o_circumflex_lower\n COMPOSE_SEQ_MACOS(&kp LA(I) &kp O)\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp F &kp N4)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_o_circumflex_lower\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N4 &kp KP_N4)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp N4)\n #endif\n #endif\n )\n world_o_circumflex_lower: world_o_circumflex_lower {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_o_circumflex_lower_macro>, <&world_o_circumflex_lower_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_o_circumflex_lower\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_o_circumflex_upper_macro, /* Ô */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_o_circumflex_upper\n COMPOSE_SEQ_LINUX(&kp CARET &kp LS(O))\n #else\n UNICODE_SEQ_LINUX(&kp D &kp N4)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_o_circumflex_upper\n COMPOSE_SEQ_MACOS(&kp LA(I) &kp LS(O))\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp D &kp N4)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_o_circumflex_upper\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N1 &kp KP_N2)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp D &kp N4)\n #endif\n #endif\n )\n world_o_circumflex_upper: world_o_circumflex_upper {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_o_circumflex_upper_macro>, <&world_o_circumflex_upper_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_o_circumflex_upper\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n world_o_circumflex: world_o_circumflex {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_o_circumflex_lower>, <&world_o_circumflex_upper>;\n mods = ;\n };\n UNICODE(world_o_grave_lower_macro, /* ò */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_o_grave_lower\n COMPOSE_SEQ_LINUX(&kp GRAVE &kp O)\n #else\n UNICODE_SEQ_LINUX(&kp F &kp N2)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_o_grave_lower\n COMPOSE_SEQ_MACOS(&kp LA(GRAVE) &kp O)\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp F &kp N2)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_o_grave_lower\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N4 &kp KP_N2)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp N2)\n #endif\n #endif\n )\n world_o_grave_lower: world_o_grave_lower {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_o_grave_lower_macro>, <&world_o_grave_lower_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_o_grave_lower\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_o_grave_upper_macro, /* Ò */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_o_grave_upper\n COMPOSE_SEQ_LINUX(&kp GRAVE &kp LS(O))\n #else\n UNICODE_SEQ_LINUX(&kp D &kp N2)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_o_grave_upper\n COMPOSE_SEQ_MACOS(&kp LA(GRAVE) &kp LS(O))\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp D &kp N2)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_o_grave_upper\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N1 &kp KP_N0)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp D &kp N2)\n #endif\n #endif\n )\n world_o_grave_upper: world_o_grave_upper {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_o_grave_upper_macro>, <&world_o_grave_upper_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_o_grave_upper\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n world_o_grave: world_o_grave {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_o_grave_lower>, <&world_o_grave_upper>;\n mods = ;\n };\n UNICODE(world_o_tilde_lower_macro, /* õ */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_o_tilde_lower\n COMPOSE_SEQ_LINUX(&kp TILDE &kp O)\n #else\n UNICODE_SEQ_LINUX(&kp F &kp N5)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_o_tilde_lower\n COMPOSE_SEQ_MACOS(&kp LA(N) &kp O)\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp F &kp N5)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_o_tilde_lower\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N4 &kp KP_N5)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp N5)\n #endif\n #endif\n )\n world_o_tilde_lower: world_o_tilde_lower {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_o_tilde_lower_macro>, <&world_o_tilde_lower_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_o_tilde_lower\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_o_tilde_upper_macro, /* Õ */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_o_tilde_upper\n COMPOSE_SEQ_LINUX(&kp TILDE &kp LS(O))\n #else\n UNICODE_SEQ_LINUX(&kp D &kp N5)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_o_tilde_upper\n COMPOSE_SEQ_MACOS(&kp LA(N) &kp LS(O))\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp D &kp N5)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_o_tilde_upper\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N1 &kp KP_N3)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp D &kp N5)\n #endif\n #endif\n )\n world_o_tilde_upper: world_o_tilde_upper {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_o_tilde_upper_macro>, <&world_o_tilde_upper_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_o_tilde_upper\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n world_o_tilde: world_o_tilde {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_o_tilde_lower>, <&world_o_tilde_upper>;\n mods = ;\n };\n UNICODE(world_o_slash_lower_macro, /* ø */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_o_slash_lower\n COMPOSE_SEQ_LINUX(&kp FSLH &kp O)\n #else\n UNICODE_SEQ_LINUX(&kp F &kp N8)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_o_slash_lower\n COMPOSE_SEQ_MACOS(&kp LA(O))\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp F &kp N8)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_o_slash_lower\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N4 &kp KP_N8)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp N8)\n #endif\n #endif\n )\n world_o_slash_lower: world_o_slash_lower {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_o_slash_lower_macro>, <&world_o_slash_lower_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_o_slash_lower\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_o_slash_upper_macro, /* Ø */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_o_slash_upper\n COMPOSE_SEQ_LINUX(&kp FSLH &kp LS(O))\n #else\n UNICODE_SEQ_LINUX(&kp D &kp N8)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_o_slash_upper\n COMPOSE_SEQ_MACOS(&kp LA(LS(O)))\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp D &kp N8)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_o_slash_upper\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N1 &kp KP_N6)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp D &kp N8)\n #endif\n #endif\n )\n world_o_slash_upper: world_o_slash_upper {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_o_slash_upper_macro>, <&world_o_slash_upper_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_o_slash_upper\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n world_o_slash: world_o_slash {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_o_slash_lower>, <&world_o_slash_upper>;\n mods = ;\n };\n UNICODE(world_u_acute_lower_macro, /* ú */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_u_acute_lower\n COMPOSE_SEQ_LINUX(&kp SQT &kp U)\n #else\n UNICODE_SEQ_LINUX(&kp F &kp A)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_u_acute_lower\n COMPOSE_SEQ_MACOS(&kp LA(E) &kp U)\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp F &kp A)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_u_acute_lower\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N5 &kp KP_N0)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp A)\n #endif\n #endif\n )\n world_u_acute_lower: world_u_acute_lower {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_u_acute_lower_macro>, <&world_u_acute_lower_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_u_acute_lower\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_u_acute_upper_macro, /* Ú */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_u_acute_upper\n COMPOSE_SEQ_LINUX(&kp SQT &kp LS(U))\n #else\n UNICODE_SEQ_LINUX(&kp D &kp A)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_u_acute_upper\n COMPOSE_SEQ_MACOS(&kp LA(E) &kp LS(U))\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp D &kp A)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_u_acute_upper\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N1 &kp KP_N8)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp D &kp A)\n #endif\n #endif\n )\n world_u_acute_upper: world_u_acute_upper {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_u_acute_upper_macro>, <&world_u_acute_upper_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_u_acute_upper\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n world_u_acute: world_u_acute {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_u_acute_lower>, <&world_u_acute_upper>;\n mods = ;\n };\n UNICODE(world_u_diaeresis_lower_macro, /* ü */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_u_diaeresis_lower\n COMPOSE_SEQ_LINUX(&kp DQT &kp U)\n #else\n UNICODE_SEQ_LINUX(&kp F &kp C)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_u_diaeresis_lower\n COMPOSE_SEQ_MACOS(&kp LA(U) &kp U)\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp F &kp C)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_u_diaeresis_lower\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N5 &kp KP_N2)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp C)\n #endif\n #endif\n )\n world_u_diaeresis_lower: world_u_diaeresis_lower {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_u_diaeresis_lower_macro>, <&world_u_diaeresis_lower_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_u_diaeresis_lower\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_u_diaeresis_upper_macro, /* Ü */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_u_diaeresis_upper\n COMPOSE_SEQ_LINUX(&kp DQT &kp LS(U))\n #else\n UNICODE_SEQ_LINUX(&kp D &kp C)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_u_diaeresis_upper\n COMPOSE_SEQ_MACOS(&kp LA(U) &kp LS(U))\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp D &kp C)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_u_diaeresis_upper\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N2 &kp KP_N0)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp D &kp C)\n #endif\n #endif\n )\n world_u_diaeresis_upper: world_u_diaeresis_upper {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_u_diaeresis_upper_macro>, <&world_u_diaeresis_upper_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_u_diaeresis_upper\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n world_u_diaeresis: world_u_diaeresis {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_u_diaeresis_lower>, <&world_u_diaeresis_upper>;\n mods = ;\n };\n UNICODE(world_u_circumflex_lower_macro, /* û */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_u_circumflex_lower\n COMPOSE_SEQ_LINUX(&kp CARET &kp U)\n #else\n UNICODE_SEQ_LINUX(&kp F &kp B)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_u_circumflex_lower\n COMPOSE_SEQ_MACOS(&kp LA(I) &kp U)\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp F &kp B)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_u_circumflex_lower\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N5 &kp KP_N1)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp B)\n #endif\n #endif\n )\n world_u_circumflex_lower: world_u_circumflex_lower {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_u_circumflex_lower_macro>, <&world_u_circumflex_lower_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_u_circumflex_lower\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_u_circumflex_upper_macro, /* Û */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_u_circumflex_upper\n COMPOSE_SEQ_LINUX(&kp CARET &kp LS(U))\n #else\n UNICODE_SEQ_LINUX(&kp D &kp B)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_u_circumflex_upper\n COMPOSE_SEQ_MACOS(&kp LA(I) &kp LS(U))\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp D &kp B)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_u_circumflex_upper\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N1 &kp KP_N9)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp D &kp B)\n #endif\n #endif\n )\n world_u_circumflex_upper: world_u_circumflex_upper {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_u_circumflex_upper_macro>, <&world_u_circumflex_upper_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_u_circumflex_upper\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n world_u_circumflex: world_u_circumflex {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_u_circumflex_lower>, <&world_u_circumflex_upper>;\n mods = ;\n };\n UNICODE(world_u_grave_lower_macro, /* ù */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_u_grave_lower\n COMPOSE_SEQ_LINUX(&kp GRAVE &kp U)\n #else\n UNICODE_SEQ_LINUX(&kp F &kp N9)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_u_grave_lower\n COMPOSE_SEQ_MACOS(&kp LA(GRAVE) &kp U)\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp F &kp N9)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_u_grave_lower\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N4 &kp KP_N9)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp N9)\n #endif\n #endif\n )\n world_u_grave_lower: world_u_grave_lower {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_u_grave_lower_macro>, <&world_u_grave_lower_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_u_grave_lower\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_u_grave_upper_macro, /* Ù */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_u_grave_upper\n COMPOSE_SEQ_LINUX(&kp GRAVE &kp LS(U))\n #else\n UNICODE_SEQ_LINUX(&kp D &kp N9)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_u_grave_upper\n COMPOSE_SEQ_MACOS(&kp LA(GRAVE) &kp LS(U))\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp D &kp N9)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_u_grave_upper\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N1 &kp KP_N7)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp D &kp N9)\n #endif\n #endif\n )\n world_u_grave_upper: world_u_grave_upper {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_u_grave_upper_macro>, <&world_u_grave_upper_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_u_grave_upper\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n world_u_grave: world_u_grave {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_u_grave_lower>, <&world_u_grave_upper>;\n mods = ;\n };\n UNICODE(world_consonants_cedilla_lower_macro, /* ç */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_consonants_cedilla_lower\n COMPOSE_SEQ_LINUX(&kp COMMA &kp C)\n #else\n UNICODE_SEQ_LINUX(&kp E &kp N7)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_consonants_cedilla_lower\n COMPOSE_SEQ_MACOS(&kp LA(C))\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp E &kp N7)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_consonants_cedilla_lower\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N3 &kp KP_N1)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp E &kp N7)\n #endif\n #endif\n )\n world_consonants_cedilla_lower: world_consonants_cedilla_lower {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_consonants_cedilla_lower_macro>, <&world_consonants_cedilla_lower_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_consonants_cedilla_lower\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_consonants_cedilla_upper_macro, /* Ç */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_consonants_cedilla_upper\n COMPOSE_SEQ_LINUX(&kp COMMA &kp LS(C))\n #else\n UNICODE_SEQ_LINUX(&kp C &kp N7)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_consonants_cedilla_upper\n COMPOSE_SEQ_MACOS(&kp LA(LS(C)))\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp C &kp N7)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_consonants_cedilla_upper\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N1 &kp KP_N9 &kp KP_N9)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp C &kp N7)\n #endif\n #endif\n )\n world_consonants_cedilla_upper: world_consonants_cedilla_upper {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_consonants_cedilla_upper_macro>, <&world_consonants_cedilla_upper_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_consonants_cedilla_upper\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n world_consonants_cedilla: world_consonants_cedilla {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_consonants_cedilla_lower>, <&world_consonants_cedilla_upper>;\n mods = ;\n };\n UNICODE(world_consonants_eszett_lower_macro, /* ß */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_consonants_eszett_lower\n COMPOSE_SEQ_LINUX(&kp S &kp S)\n #else\n UNICODE_SEQ_LINUX(&kp D &kp F)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_consonants_eszett_lower\n COMPOSE_SEQ_MACOS(&kp LA(S))\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp D &kp F)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_consonants_eszett_lower\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N2 &kp KP_N3)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp D &kp F)\n #endif\n #endif\n )\n world_consonants_eszett_lower: world_consonants_eszett_lower {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_consonants_eszett_lower_macro>, <&world_consonants_eszett_lower_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_consonants_eszett_lower\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_consonants_eszett_upper_macro, /* ẞ */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_consonants_eszett_upper\n COMPOSE_SEQ_LINUX(&kp LS(S) &kp LS(S))\n #else\n UNICODE_SEQ_LINUX(&kp N1 &kp E &kp N9 &kp E)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_consonants_eszett_upper\n COMPOSE_SEQ_MACOS(&kp LA(LS(S)))\n #else\n UNICODE_SEQ_MACOS(&kp N1 &kp E &kp N9 &kp E)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp E &kp N9 &kp E)\n #endif\n )\n world_consonants_eszett_upper: world_consonants_eszett_upper {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_consonants_eszett_upper_macro>, <&world_consonants_eszett_upper_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_consonants_eszett_upper\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n world_consonants_eszett: world_consonants_eszett {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_consonants_eszett_lower>, <&world_consonants_eszett_upper>;\n mods = ;\n };\n UNICODE(world_consonants_ntilde_lower_macro, /* ñ */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_consonants_ntilde_lower\n COMPOSE_SEQ_LINUX(&kp TILDE &kp N)\n #else\n UNICODE_SEQ_LINUX(&kp F &kp N1)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_consonants_ntilde_lower\n COMPOSE_SEQ_MACOS(&kp LA(N) &kp N)\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp F &kp N1)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_consonants_ntilde_lower\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N4 &kp KP_N1)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp N1)\n #endif\n #endif\n )\n world_consonants_ntilde_lower: world_consonants_ntilde_lower {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_consonants_ntilde_lower_macro>, <&world_consonants_ntilde_lower_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_consonants_ntilde_lower\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_consonants_ntilde_upper_macro, /* Ñ */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_consonants_ntilde_upper\n COMPOSE_SEQ_LINUX(&kp TILDE &kp LS(N))\n #else\n UNICODE_SEQ_LINUX(&kp D &kp N1)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_consonants_ntilde_upper\n COMPOSE_SEQ_MACOS(&kp LA(N) &kp LS(N))\n #else\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp D &kp N1)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_consonants_ntilde_upper\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N2 &kp KP_N0 &kp KP_N9)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp D &kp N1)\n #endif\n #endif\n )\n world_consonants_ntilde_upper: world_consonants_ntilde_upper {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_consonants_ntilde_upper_macro>, <&world_consonants_ntilde_upper_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_consonants_ntilde_upper\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n world_consonants_ntilde: world_consonants_ntilde {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_consonants_ntilde_lower>, <&world_consonants_ntilde_upper>;\n mods = ;\n };\n UNICODE(world_quotes_left_angle_lower_macro, /* ‹ */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N2 &kp N0 &kp N3 &kp N9)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp N2 &kp N0 &kp N3 &kp N9)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N0 &kp N3 &kp N9)\n #endif\n )\n world_quotes_left_angle_lower: world_quotes_left_angle_lower {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_quotes_left_angle_lower_macro>, <&world_quotes_left_angle_lower_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_quotes_left_angle_lower\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_quotes_left_angle_upper_macro, /* « */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp A &kp B)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp A &kp B)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp A &kp B)\n #endif\n )\n world_quotes_left_angle_upper: world_quotes_left_angle_upper {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_quotes_left_angle_upper_macro>, <&world_quotes_left_angle_upper_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_quotes_left_angle_upper\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n world_quotes_left_angle: world_quotes_left_angle {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_quotes_left_angle_lower>, <&world_quotes_left_angle_upper>;\n mods = ;\n };\n UNICODE(world_quotes_left_curly_lower_macro, /* ‘ */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N2 &kp N0 &kp N1 &kp N8)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp N2 &kp N0 &kp N1 &kp N8)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N0 &kp N1 &kp N8)\n #endif\n )\n world_quotes_left_curly_lower: world_quotes_left_curly_lower {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_quotes_left_curly_lower_macro>, <&world_quotes_left_curly_lower_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_quotes_left_curly_lower\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_quotes_left_curly_upper_macro, /* “ */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N2 &kp N0 &kp N1 &kp C)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp N2 &kp N0 &kp N1 &kp C)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N0 &kp N1 &kp C)\n #endif\n )\n world_quotes_left_curly_upper: world_quotes_left_curly_upper {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_quotes_left_curly_upper_macro>, <&world_quotes_left_curly_upper_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_quotes_left_curly_upper\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n world_quotes_left_curly: world_quotes_left_curly {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_quotes_left_curly_lower>, <&world_quotes_left_curly_upper>;\n mods = ;\n };\n UNICODE(world_quotes_left_low_lower_macro, /* ‚ */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N2 &kp N0 &kp N1 &kp A)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp N2 &kp N0 &kp N1 &kp A)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N0 &kp N1 &kp A)\n #endif\n )\n world_quotes_left_low_lower: world_quotes_left_low_lower {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_quotes_left_low_lower_macro>, <&world_quotes_left_low_lower_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_quotes_left_low_lower\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_quotes_left_low_upper_macro, /* „ */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N2 &kp N0 &kp N1 &kp E)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp N2 &kp N0 &kp N1 &kp E)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N0 &kp N1 &kp E)\n #endif\n )\n world_quotes_left_low_upper: world_quotes_left_low_upper {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_quotes_left_low_upper_macro>, <&world_quotes_left_low_upper_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_quotes_left_low_upper\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n world_quotes_left_low: world_quotes_left_low {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_quotes_left_low_lower>, <&world_quotes_left_low_upper>;\n mods = ;\n };\n UNICODE(world_quotes_left_corner1_lower_macro, /* 「 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N3 &kp N0 &kp N0 &kp C)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp N3 &kp N0 &kp N0 &kp C)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N3 &kp N0 &kp N0 &kp C)\n #endif\n )\n world_quotes_left_corner1_lower: world_quotes_left_corner1_lower {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_quotes_left_corner1_lower_macro>, <&world_quotes_left_corner1_lower_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_quotes_left_corner1_lower\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_quotes_left_corner1_upper_macro, /* ﹁ */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp F &kp E &kp N4 &kp N1)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp F &kp E &kp N4 &kp N1)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp E &kp N4 &kp N1)\n #endif\n )\n world_quotes_left_corner1_upper: world_quotes_left_corner1_upper {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_quotes_left_corner1_upper_macro>, <&world_quotes_left_corner1_upper_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_quotes_left_corner1_upper\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n world_quotes_left_corner1: world_quotes_left_corner1 {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_quotes_left_corner1_lower>, <&world_quotes_left_corner1_upper>;\n mods = ;\n };\n UNICODE(world_quotes_left_corner2_lower_macro, /* 『 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N3 &kp N0 &kp N0 &kp E)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp N3 &kp N0 &kp N0 &kp E)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N3 &kp N0 &kp N0 &kp E)\n #endif\n )\n world_quotes_left_corner2_lower: world_quotes_left_corner2_lower {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_quotes_left_corner2_lower_macro>, <&world_quotes_left_corner2_lower_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_quotes_left_corner2_lower\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_quotes_left_corner2_upper_macro, /* ﹃ */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp F &kp E &kp N4 &kp N3)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp F &kp E &kp N4 &kp N3)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp E &kp N4 &kp N3)\n #endif\n )\n world_quotes_left_corner2_upper: world_quotes_left_corner2_upper {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_quotes_left_corner2_upper_macro>, <&world_quotes_left_corner2_upper_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_quotes_left_corner2_upper\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n world_quotes_left_corner2: world_quotes_left_corner2 {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_quotes_left_corner2_lower>, <&world_quotes_left_corner2_upper>;\n mods = ;\n };\n UNICODE(world_quotes_left_grave_macro, /* ` */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N6 &kp N0)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp N6 &kp N0)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N6 &kp N0)\n #endif\n )\n world_quotes_left_grave: world_quotes_left_grave {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_quotes_left_grave_macro>, <&world_quotes_left_grave_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_quotes_left_grave\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_quotes_right_angle_lower_macro, /* › */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N2 &kp N0 &kp N3 &kp A)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp N2 &kp N0 &kp N3 &kp A)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N0 &kp N3 &kp A)\n #endif\n )\n world_quotes_right_angle_lower: world_quotes_right_angle_lower {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_quotes_right_angle_lower_macro>, <&world_quotes_right_angle_lower_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_quotes_right_angle_lower\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_quotes_right_angle_upper_macro, /* » */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp B &kp B)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp B &kp B)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp B &kp B)\n #endif\n )\n world_quotes_right_angle_upper: world_quotes_right_angle_upper {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_quotes_right_angle_upper_macro>, <&world_quotes_right_angle_upper_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_quotes_right_angle_upper\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n world_quotes_right_angle: world_quotes_right_angle {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_quotes_right_angle_lower>, <&world_quotes_right_angle_upper>;\n mods = ;\n };\n UNICODE(world_quotes_right_curly_lower_macro, /* ’ */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N2 &kp N0 &kp N1 &kp N9)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp N2 &kp N0 &kp N1 &kp N9)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N0 &kp N1 &kp N9)\n #endif\n )\n world_quotes_right_curly_lower: world_quotes_right_curly_lower {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_quotes_right_curly_lower_macro>, <&world_quotes_right_curly_lower_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_quotes_right_curly_lower\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_quotes_right_curly_upper_macro, /* ” */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N2 &kp N0 &kp N1 &kp D)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp N2 &kp N0 &kp N1 &kp D)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N0 &kp N1 &kp D)\n #endif\n )\n world_quotes_right_curly_upper: world_quotes_right_curly_upper {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_quotes_right_curly_upper_macro>, <&world_quotes_right_curly_upper_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_quotes_right_curly_upper\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n world_quotes_right_curly: world_quotes_right_curly {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_quotes_right_curly_lower>, <&world_quotes_right_curly_upper>;\n mods = ;\n };\n world_quotes_right_low: world_quotes_right_low {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_quotes_left_low_lower>, <&world_quotes_left_low_upper>;\n mods = ;\n };\n UNICODE(world_quotes_right_corner1_lower_macro, /* 」 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N3 &kp N0 &kp N0 &kp D)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp N3 &kp N0 &kp N0 &kp D)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N3 &kp N0 &kp N0 &kp D)\n #endif\n )\n world_quotes_right_corner1_lower: world_quotes_right_corner1_lower {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_quotes_right_corner1_lower_macro>, <&world_quotes_right_corner1_lower_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_quotes_right_corner1_lower\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_quotes_right_corner1_upper_macro, /* ﹂ */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp F &kp E &kp N4 &kp N2)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp F &kp E &kp N4 &kp N2)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp E &kp N4 &kp N2)\n #endif\n )\n world_quotes_right_corner1_upper: world_quotes_right_corner1_upper {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_quotes_right_corner1_upper_macro>, <&world_quotes_right_corner1_upper_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_quotes_right_corner1_upper\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n world_quotes_right_corner1: world_quotes_right_corner1 {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_quotes_right_corner1_lower>, <&world_quotes_right_corner1_upper>;\n mods = ;\n };\n UNICODE(world_quotes_right_corner2_lower_macro, /* 』 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N3 &kp N0 &kp N0 &kp F)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp N3 &kp N0 &kp N0 &kp F)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N3 &kp N0 &kp N0 &kp F)\n #endif\n )\n world_quotes_right_corner2_lower: world_quotes_right_corner2_lower {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_quotes_right_corner2_lower_macro>, <&world_quotes_right_corner2_lower_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_quotes_right_corner2_lower\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_quotes_right_corner2_upper_macro, /* ﹄ */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp F &kp E &kp N4 &kp N4)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp F &kp E &kp N4 &kp N4)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp F &kp E &kp N4 &kp N4)\n #endif\n )\n world_quotes_right_corner2_upper: world_quotes_right_corner2_upper {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_quotes_right_corner2_upper_macro>, <&world_quotes_right_corner2_upper_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_quotes_right_corner2_upper\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n world_quotes_right_corner2: world_quotes_right_corner2 {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_quotes_right_corner2_lower>, <&world_quotes_right_corner2_upper>;\n mods = ;\n };\n UNICODE(world_quotes_right_grave_macro, /* ´ */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp B &kp N4)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp B &kp N4)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp B &kp N4)\n #endif\n )\n world_quotes_right_grave: world_quotes_right_grave {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_quotes_right_grave_macro>, <&world_quotes_right_grave_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_quotes_right_grave\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_currency_dollar_lower_macro, /* $ */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N2 &kp N4)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp N2 &kp N4)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N4)\n #endif\n )\n world_currency_dollar_lower: world_currency_dollar_lower {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_currency_dollar_lower_macro>, <&world_currency_dollar_lower_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_currency_dollar_lower\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n world_currency_dollar: world_currency_dollar {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_currency_dollar_lower>, <&world_currency_cent>;\n mods = ;\n };\n UNICODE(world_currency_yen_macro, /* ¥ */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp A &kp N5)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp A &kp N5)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp A &kp N5)\n #endif\n )\n world_currency_yen: world_currency_yen {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_currency_yen_macro>, <&world_currency_yen_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_currency_yen\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_currency_euro_macro, /* € */\n #if UNICODE_TARGET_OS == 'L'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_currency_euro\n COMPOSE_SEQ_LINUX(&kp E &kp EQUAL)\n #else\n UNICODE_SEQ_LINUX(&kp N2 &kp N0 &kp A &kp C)\n #endif\n #elif UNICODE_TARGET_OS == 'M'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_currency_euro\n COMPOSE_SEQ_MACOS(&kp LA(LS(N2)))\n #else\n UNICODE_SEQ_MACOS(&kp N2 &kp N0 &kp A &kp C)\n #endif\n #elif UNICODE_TARGET_OS == 'W'\n #ifdef WORLD_USE_COMPOSE\n #define WORLD_USE_COMPOSE_FOR_world_currency_euro\n COMPOSE_SEQ_WINDOWS(&kp KP_N0 &kp KP_N1 &kp KP_N2 &kp KP_N8)\n #else\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N0 &kp A &kp C)\n #endif\n #endif\n )\n world_currency_euro: world_currency_euro {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_currency_euro_macro>, <&world_currency_euro_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_currency_euro\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_currency_won_macro, /* ₩ */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N2 &kp N0 &kp A &kp N9)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp N2 &kp N0 &kp A &kp N9)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N0 &kp A &kp N9)\n #endif\n )\n world_currency_won: world_currency_won {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_currency_won_macro>, <&world_currency_won_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_currency_won\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(world_currency_pound_macro, /* £ */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp A &kp N3)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp N0 &kp N0 &kp A &kp N3)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp A &kp N3)\n #endif\n )\n world_currency_pound: world_currency_pound {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_currency_pound_macro>, <&world_currency_pound_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_world_currency_pound\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n world_currency_generic: world_currency_generic {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_currency_sign>, <&world_currency_crypto>;\n mods = ;\n };\n\n //\n // transforms\n //\n world_i_base: world_i_base {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_i_acute>, <&world_i_LCTL>;\n mods = <(MOD_LCTL|MOD_RCTL|MOD_RSFT)>;\n };\n world_i_LCTL: world_i_LCTL {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_i_diaeresis>, <&world_i_RCTL>;\n mods = <(MOD_RCTL|MOD_RSFT)>;\n };\n world_i_RCTL: world_i_RCTL {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_i_circumflex>, <&world_i_grave>;\n mods = <(MOD_RSFT)>;\n };\n world_e_base: world_e_base {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_e_acute>, <&world_e_RALT>;\n mods = <(MOD_RALT|MOD_LCTL|MOD_RCTL|MOD_RSFT)>;\n };\n world_e_RALT: world_e_RALT {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_e_ae>, <&world_e_LCTL>;\n mods = <(MOD_LCTL|MOD_RCTL|MOD_RSFT)>;\n };\n world_e_LCTL: world_e_LCTL {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_e_diaeresis>, <&world_e_RCTL>;\n mods = <(MOD_RCTL|MOD_RSFT)>;\n };\n world_e_RCTL: world_e_RCTL {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_e_circumflex>, <&world_e_grave>;\n mods = <(MOD_RSFT)>;\n };\n world_a_base: world_a_base {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_a_acute>, <&world_a_LALT>;\n mods = <(MOD_LALT|MOD_RALT|MOD_LCTL|MOD_RCTL|MOD_RSFT)>;\n };\n world_a_LALT: world_a_LALT {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_a_tilde>, <&world_a_RALT>;\n mods = <(MOD_RALT|MOD_LCTL|MOD_RCTL|MOD_RSFT)>;\n };\n world_a_RALT: world_a_RALT {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_a_ring>, <&world_a_LCTL>;\n mods = <(MOD_LCTL|MOD_RCTL|MOD_RSFT)>;\n };\n world_a_LCTL: world_a_LCTL {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_a_diaeresis>, <&world_a_RCTL>;\n mods = <(MOD_RCTL|MOD_RSFT)>;\n };\n world_a_RCTL: world_a_RCTL {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_a_circumflex>, <&world_a_grave>;\n mods = <(MOD_RSFT)>;\n };\n world_y_base: world_y_base {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_y_acute>, <&world_y_diaeresis>;\n mods = <(MOD_LCTL)>;\n };\n world_o_base: world_o_base {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_o_acute>, <&world_o_LALT>;\n mods = <(MOD_LALT|MOD_RALT|MOD_LCTL|MOD_RCTL|MOD_RSFT)>;\n };\n world_o_LALT: world_o_LALT {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_o_tilde>, <&world_o_RALT>;\n mods = <(MOD_RALT|MOD_LCTL|MOD_RCTL|MOD_RSFT)>;\n };\n world_o_RALT: world_o_RALT {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_o_slash>, <&world_o_LCTL>;\n mods = <(MOD_LCTL|MOD_RCTL|MOD_RSFT)>;\n };\n world_o_LCTL: world_o_LCTL {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_o_diaeresis>, <&world_o_RCTL>;\n mods = <(MOD_RCTL|MOD_RSFT)>;\n };\n world_o_RCTL: world_o_RCTL {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_o_circumflex>, <&world_o_grave>;\n mods = <(MOD_RSFT)>;\n };\n world_u_base: world_u_base {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_u_acute>, <&world_u_LCTL>;\n mods = <(MOD_LCTL|MOD_RCTL|MOD_RSFT)>;\n };\n world_u_LCTL: world_u_LCTL {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_u_diaeresis>, <&world_u_RCTL>;\n mods = <(MOD_RCTL|MOD_RSFT)>;\n };\n world_u_RCTL: world_u_RCTL {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_u_circumflex>, <&world_u_grave>;\n mods = <(MOD_RSFT)>;\n };\n world_consonants_base: world_consonants_base {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_consonants_cedilla>, <&world_consonants_LCTL>;\n mods = <(MOD_LCTL|MOD_RCTL)>;\n };\n world_consonants_LCTL: world_consonants_LCTL {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_consonants_ntilde>, <&world_consonants_eszett>;\n mods = <(MOD_RCTL)>;\n };\n world_quotes_left_base: world_quotes_left_base {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_quotes_left_angle>, <&world_quotes_left_LALT>;\n mods = <(MOD_LALT|MOD_RALT|MOD_LCTL|MOD_RCTL|MOD_RSFT)>;\n };\n world_quotes_left_LALT: world_quotes_left_LALT {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_quotes_left_corner1>, <&world_quotes_left_RALT>;\n mods = <(MOD_RALT|MOD_LCTL|MOD_RCTL|MOD_RSFT)>;\n };\n world_quotes_left_RALT: world_quotes_left_RALT {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_quotes_left_corner2>, <&world_quotes_left_LCTL>;\n mods = <(MOD_LCTL|MOD_RCTL|MOD_RSFT)>;\n };\n world_quotes_left_LCTL: world_quotes_left_LCTL {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_quotes_left_curly>, <&world_quotes_left_RCTL>;\n mods = <(MOD_RCTL|MOD_RSFT)>;\n };\n world_quotes_left_RCTL: world_quotes_left_RCTL {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_quotes_left_low>, <&world_quotes_left_grave>;\n mods = <(MOD_RSFT)>;\n };\n world_quotes_right_base: world_quotes_right_base {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_quotes_right_angle>, <&world_quotes_right_LALT>;\n mods = <(MOD_LALT|MOD_RALT|MOD_LCTL|MOD_RCTL|MOD_RSFT)>;\n };\n world_quotes_right_LALT: world_quotes_right_LALT {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_quotes_right_corner1>, <&world_quotes_right_RALT>;\n mods = <(MOD_RALT|MOD_LCTL|MOD_RCTL|MOD_RSFT)>;\n };\n world_quotes_right_RALT: world_quotes_right_RALT {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_quotes_right_corner2>, <&world_quotes_right_LCTL>;\n mods = <(MOD_LCTL|MOD_RCTL|MOD_RSFT)>;\n };\n world_quotes_right_LCTL: world_quotes_right_LCTL {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_quotes_right_curly>, <&world_quotes_right_RCTL>;\n mods = <(MOD_RCTL|MOD_RSFT)>;\n };\n world_quotes_right_RCTL: world_quotes_right_RCTL {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_quotes_right_low>, <&world_quotes_right_grave>;\n mods = <(MOD_RSFT)>;\n };\n world_currency_base: world_currency_base {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_currency_dollar>, <&world_currency_LALT>;\n mods = <(MOD_LALT|MOD_RALT|MOD_LCTL|MOD_RCTL|MOD_RSFT)>;\n };\n world_currency_LALT: world_currency_LALT {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_currency_yen>, <&world_currency_RALT>;\n mods = <(MOD_RALT|MOD_LCTL|MOD_RCTL|MOD_RSFT)>;\n };\n world_currency_RALT: world_currency_RALT {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_currency_won>, <&world_currency_LCTL>;\n mods = <(MOD_LCTL|MOD_RCTL|MOD_RSFT)>;\n };\n world_currency_LCTL: world_currency_LCTL {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_currency_euro>, <&world_currency_RCTL>;\n mods = <(MOD_RCTL|MOD_RSFT)>;\n };\n world_currency_RCTL: world_currency_RCTL {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&world_currency_pound>, <&world_currency_generic>;\n mods = <(MOD_RSFT)>;\n };\n\n //////////////////////////////////////////////////////////////////////////\n //\n // Emoji layer - modern age pictograms\n //\n //////////////////////////////////////////////////////////////////////////\n\n //\n // EMOJI_GENDER_SIGN_PRESET defines an Emoji gender sign for use as a\n // convenient inward-rolling shortcut on the home row of the layer.\n //\n #ifndef EMOJI_GENDER_SIGN_PRESET\n #define EMOJI_GENDER_SIGN_PRESET 'N' // neutral\n //#define EMOJI_GENDER_SIGN_PRESET 'M' // male\n //#define EMOJI_GENDER_SIGN_PRESET 'F' // female\n #endif\n\n //\n // EMOJI_SKIN_TONE_PRESET defines an Emoji skin tone for use as a\n // convenient inward-rolling shortcut on the home row of the layer.\n //\n #ifndef EMOJI_SKIN_TONE_PRESET\n #define EMOJI_SKIN_TONE_PRESET 'N' // neutral\n //#define EMOJI_SKIN_TONE_PRESET 'L' // light_skin_tone\n //#define EMOJI_SKIN_TONE_PRESET 'l' // medium_light_skin_tone\n //#define EMOJI_SKIN_TONE_PRESET 'M' // medium_skin_tone\n //#define EMOJI_SKIN_TONE_PRESET 'd' // medium_dark_skin_tone\n //#define EMOJI_SKIN_TONE_PRESET 'D' // dark_skin_tone\n #endif\n\n //\n // EMOJI_HAIR_STYLE_PRESET defines an Emoji hair style for use as a\n // convenient inward-rolling shortcut on the home row of the layer.\n //\n #ifndef EMOJI_HAIR_STYLE_PRESET\n #define EMOJI_HAIR_STYLE_PRESET 'N' // neutral\n //#define EMOJI_HAIR_STYLE_PRESET 'B' // bald\n //#define EMOJI_HAIR_STYLE_PRESET 'R' // red_hair\n //#define EMOJI_HAIR_STYLE_PRESET 'C' // curly_hair\n //#define EMOJI_HAIR_STYLE_PRESET 'W' // white_hair\n #endif\n\n //\n // NOTE: edit the emoji.yaml file and run `rake` to generate this:\n //\n\n //\n // codepoints\n //\n UNICODE(emoji_zwj_macro, /* ‍ */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N2 &kp N0 &kp N0 &kp D)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp N2 &kp N0 &kp N0 &kp D)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N0 &kp N0 &kp D)\n #endif\n )\n emoji_zwj: emoji_zwj {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_zwj_macro>, <&emoji_zwj_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_zwj\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_male_sign_macro, /* ♂️ */\n #if UNICODE_TARGET_OS == 'L'\n 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)\n #elif UNICODE_TARGET_OS == 'M'\n 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)\n #elif UNICODE_TARGET_OS == 'W'\n 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)\n #endif\n )\n emoji_male_sign: emoji_male_sign {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_male_sign_macro>, <&emoji_male_sign_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_male_sign\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_female_sign_macro, /* ♀️ */\n #if UNICODE_TARGET_OS == 'L'\n 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)\n #elif UNICODE_TARGET_OS == 'M'\n 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)\n #elif UNICODE_TARGET_OS == 'W'\n 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)\n #endif\n )\n emoji_female_sign: emoji_female_sign {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_female_sign_macro>, <&emoji_female_sign_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_female_sign\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_right_arrow_macro, /* ➡️ */\n #if UNICODE_TARGET_OS == 'L'\n 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)\n #elif UNICODE_TARGET_OS == 'M'\n 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)\n #elif UNICODE_TARGET_OS == 'W'\n 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)\n #endif\n )\n emoji_right_arrow: emoji_right_arrow {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_right_arrow_macro>, <&emoji_right_arrow_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_right_arrow\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_left_arrow_macro, /* ⬅️ */\n #if UNICODE_TARGET_OS == 'L'\n 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)\n #elif UNICODE_TARGET_OS == 'M'\n 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)\n #elif UNICODE_TARGET_OS == 'W'\n 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)\n #endif\n )\n emoji_left_arrow: emoji_left_arrow {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_left_arrow_macro>, <&emoji_left_arrow_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_left_arrow\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_rainbow_macro, /* 🌈 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp N0 &kp N8)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp N0 &kp N8)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp N0 &kp N8)\n #endif\n )\n emoji_rainbow: emoji_rainbow {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_rainbow_macro>, <&emoji_rainbow_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_rainbow\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_cloudy_macro, /* ️☁️ */\n #if UNICODE_TARGET_OS == 'L'\n 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)\n #elif UNICODE_TARGET_OS == 'M'\n 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)\n #elif UNICODE_TARGET_OS == 'W'\n 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)\n #endif\n )\n emoji_cloudy: emoji_cloudy {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_cloudy_macro>, <&emoji_cloudy_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_cloudy\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_mostly_cloudy_macro, /* 🌥 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp N2 &kp N5)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp N2 &kp N5)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp N2 &kp N5)\n #endif\n )\n emoji_mostly_cloudy: emoji_mostly_cloudy {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_mostly_cloudy_macro>, <&emoji_mostly_cloudy_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_mostly_cloudy\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_partly_cloudy_macro, /* ⛅ */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N2 &kp N6 &kp C &kp N5)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp N2 &kp N6 &kp C &kp N5)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N6 &kp C &kp N5)\n #endif\n )\n emoji_partly_cloudy: emoji_partly_cloudy {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_partly_cloudy_macro>, <&emoji_partly_cloudy_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_partly_cloudy\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_mostly_sunny_macro, /* ️🌤️ */\n #if UNICODE_TARGET_OS == 'L'\n 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)\n #elif UNICODE_TARGET_OS == 'M'\n 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)\n #elif UNICODE_TARGET_OS == 'W'\n 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)\n #endif\n )\n emoji_mostly_sunny: emoji_mostly_sunny {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_mostly_sunny_macro>, <&emoji_mostly_sunny_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_mostly_sunny\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_sunny_macro, /* ☀️ */\n #if UNICODE_TARGET_OS == 'L'\n 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)\n #elif UNICODE_TARGET_OS == 'M'\n 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)\n #elif UNICODE_TARGET_OS == 'W'\n 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)\n #endif\n )\n emoji_sunny: emoji_sunny {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_sunny_macro>, <&emoji_sunny_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_sunny\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_sunrise_macro, /* 🌅 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp N0 &kp N5)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp N0 &kp N5)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp N0 &kp N5)\n #endif\n )\n emoji_sunrise: emoji_sunrise {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_sunrise_macro>, <&emoji_sunrise_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_sunrise\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_sunrise_mountains_macro, /* 🌄 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp N0 &kp N4)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp N0 &kp N4)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp N0 &kp N4)\n #endif\n )\n emoji_sunrise_mountains: emoji_sunrise_mountains {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_sunrise_mountains_macro>, <&emoji_sunrise_mountains_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_sunrise_mountains\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_cityscape_macro, /* ️🏙️ */\n #if UNICODE_TARGET_OS == 'L'\n 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)\n #elif UNICODE_TARGET_OS == 'M'\n 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)\n #elif UNICODE_TARGET_OS == 'W'\n 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)\n #endif\n )\n emoji_cityscape: emoji_cityscape {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_cityscape_macro>, <&emoji_cityscape_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_cityscape\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_cityscape_dusk_macro, /* ️🌇 */\n #if UNICODE_TARGET_OS == 'L'\n 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)\n #elif UNICODE_TARGET_OS == 'M'\n 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)\n #elif UNICODE_TARGET_OS == 'W'\n 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)\n #endif\n )\n emoji_cityscape_dusk: emoji_cityscape_dusk {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_cityscape_dusk_macro>, <&emoji_cityscape_dusk_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_cityscape_dusk\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_cityscape_night_macro, /* 🌃 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp N0 &kp N3)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp N0 &kp N3)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp N0 &kp N3)\n #endif\n )\n emoji_cityscape_night: emoji_cityscape_night {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_cityscape_night_macro>, <&emoji_cityscape_night_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_cityscape_night\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_light_skin_tone_macro, /* 🏻 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp F &kp B)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp F &kp B)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp F &kp B)\n #endif\n )\n emoji_light_skin_tone: emoji_light_skin_tone {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_light_skin_tone_macro>, <&emoji_light_skin_tone_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_light_skin_tone\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_medium_light_skin_tone_macro, /* 🏼 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp F &kp C)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp F &kp C)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp F &kp C)\n #endif\n )\n emoji_medium_light_skin_tone: emoji_medium_light_skin_tone {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_medium_light_skin_tone_macro>, <&emoji_medium_light_skin_tone_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_medium_light_skin_tone\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_medium_skin_tone_macro, /* 🏽 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp F &kp D)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp F &kp D)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp F &kp D)\n #endif\n )\n emoji_medium_skin_tone: emoji_medium_skin_tone {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_medium_skin_tone_macro>, <&emoji_medium_skin_tone_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_medium_skin_tone\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_medium_dark_skin_tone_macro, /* 🏾 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp F &kp E)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp F &kp E)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp F &kp E)\n #endif\n )\n emoji_medium_dark_skin_tone: emoji_medium_dark_skin_tone {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_medium_dark_skin_tone_macro>, <&emoji_medium_dark_skin_tone_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_medium_dark_skin_tone\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_dark_skin_tone_macro, /* 🏿 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp F &kp F)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp F &kp F)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp F &kp F)\n #endif\n )\n emoji_dark_skin_tone: emoji_dark_skin_tone {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_dark_skin_tone_macro>, <&emoji_dark_skin_tone_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_dark_skin_tone\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_baby_bottle_macro, /* 🍼 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp N7 &kp C)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp N7 &kp C)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp N7 &kp C)\n #endif\n )\n emoji_baby_bottle: emoji_baby_bottle {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_baby_bottle_macro>, <&emoji_baby_bottle_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_baby_bottle\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_baby_macro, /* 👶 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N4 &kp N7 &kp N6)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp C &kp N7 &kp N6)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N4 &kp N7 &kp N6)\n #endif\n )\n emoji_baby: emoji_baby {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_baby_macro>, <&emoji_baby_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_baby\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_boy_macro, /* 👦 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N4 &kp N6 &kp N6)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp C &kp N6 &kp N6)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N4 &kp N6 &kp N6)\n #endif\n )\n emoji_boy: emoji_boy {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_boy_macro>, <&emoji_boy_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_boy\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_girl_macro, /* 👧 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N4 &kp N6 &kp N7)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp C &kp N6 &kp N7)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N4 &kp N6 &kp N7)\n #endif\n )\n emoji_girl: emoji_girl {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_girl_macro>, <&emoji_girl_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_girl\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_man_macro, /* 👨 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N4 &kp N6 &kp N8)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp C &kp N6 &kp N8)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N4 &kp N6 &kp N8)\n #endif\n )\n emoji_man: emoji_man {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_man_macro>, <&emoji_man_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_man\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_woman_macro, /* 👩 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N4 &kp N6 &kp N9)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp C &kp N6 &kp N9)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N4 &kp N6 &kp N9)\n #endif\n )\n emoji_woman: emoji_woman {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_woman_macro>, <&emoji_woman_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_woman\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_old_man_macro, /* 👴 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N4 &kp N7 &kp N4)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp C &kp N7 &kp N4)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N4 &kp N7 &kp N4)\n #endif\n )\n emoji_old_man: emoji_old_man {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_old_man_macro>, <&emoji_old_man_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_old_man\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_old_woman_macro, /* 👵 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N4 &kp N7 &kp N5)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp C &kp N7 &kp N5)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N4 &kp N7 &kp N5)\n #endif\n )\n emoji_old_woman: emoji_old_woman {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_old_woman_macro>, <&emoji_old_woman_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_old_woman\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_white_hair_macro, /* 🦳 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N9 &kp B &kp N3)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp E &kp D &kp D &kp B &kp N3)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N9 &kp B &kp N3)\n #endif\n )\n emoji_white_hair: emoji_white_hair {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_white_hair_macro>, <&emoji_white_hair_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_white_hair\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_curly_hair_macro, /* 🦱 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N9 &kp B &kp N1)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp E &kp D &kp D &kp B &kp N1)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N9 &kp B &kp N1)\n #endif\n )\n emoji_curly_hair: emoji_curly_hair {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_curly_hair_macro>, <&emoji_curly_hair_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_curly_hair\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_red_hair_macro, /* 🦰 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N9 &kp B &kp N0)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp E &kp D &kp D &kp B &kp N0)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N9 &kp B &kp N0)\n #endif\n )\n emoji_red_hair: emoji_red_hair {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_red_hair_macro>, <&emoji_red_hair_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_red_hair\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_bald_macro, /* 🦲 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N9 &kp B &kp N2)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp E &kp D &kp D &kp B &kp N2)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N9 &kp B &kp N2)\n #endif\n )\n emoji_bald: emoji_bald {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_bald_macro>, <&emoji_bald_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_bald\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_new_moon_macro, /* 🌑 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp N1 &kp N1)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp N1 &kp N1)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp N1 &kp N1)\n #endif\n )\n emoji_new_moon: emoji_new_moon {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_new_moon_macro>, <&emoji_new_moon_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_new_moon\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_waxing_crescent_moon_macro, /* 🌒 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp N1 &kp N2)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp N1 &kp N2)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp N1 &kp N2)\n #endif\n )\n emoji_waxing_crescent_moon: emoji_waxing_crescent_moon {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_waxing_crescent_moon_macro>, <&emoji_waxing_crescent_moon_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_waxing_crescent_moon\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_first_quarter_moon_macro, /* 🌓 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp N1 &kp N3)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp N1 &kp N3)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp N1 &kp N3)\n #endif\n )\n emoji_first_quarter_moon: emoji_first_quarter_moon {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_first_quarter_moon_macro>, <&emoji_first_quarter_moon_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_first_quarter_moon\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_waxing_gibbous_moon_macro, /* 🌔 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp N1 &kp N4)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp N1 &kp N4)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp N1 &kp N4)\n #endif\n )\n emoji_waxing_gibbous_moon: emoji_waxing_gibbous_moon {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_waxing_gibbous_moon_macro>, <&emoji_waxing_gibbous_moon_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_waxing_gibbous_moon\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_full_moon_macro, /* 🌕 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp N1 &kp N5)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp N1 &kp N5)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp N1 &kp N5)\n #endif\n )\n emoji_full_moon: emoji_full_moon {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_full_moon_macro>, <&emoji_full_moon_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_full_moon\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_waning_gibbous_moon_macro, /* 🌖 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp N1 &kp N6)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp N1 &kp N6)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp N1 &kp N6)\n #endif\n )\n emoji_waning_gibbous_moon: emoji_waning_gibbous_moon {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_waning_gibbous_moon_macro>, <&emoji_waning_gibbous_moon_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_waning_gibbous_moon\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_last_quarter_moon_macro, /* 🌗 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp N1 &kp N7)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp N1 &kp N7)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp N1 &kp N7)\n #endif\n )\n emoji_last_quarter_moon: emoji_last_quarter_moon {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_last_quarter_moon_macro>, <&emoji_last_quarter_moon_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_last_quarter_moon\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_waning_crescent_moon_macro, /* 🌘 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp N1 &kp N8)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp N1 &kp N8)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp N1 &kp N8)\n #endif\n )\n emoji_waning_crescent_moon: emoji_waning_crescent_moon {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_waning_crescent_moon_macro>, <&emoji_waning_crescent_moon_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_waning_crescent_moon\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_tada_macro, /* 🎉 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N3 &kp N8 &kp N9)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp C &kp D &kp F &kp N8 &kp N9)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N3 &kp N8 &kp N9)\n #endif\n )\n emoji_tada: emoji_tada {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_tada_macro>, <&emoji_tada_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_tada\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_heart_macro, /* ️❤️ */\n #if UNICODE_TARGET_OS == 'L'\n 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)\n #elif UNICODE_TARGET_OS == 'M'\n 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)\n #elif UNICODE_TARGET_OS == 'W'\n 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)\n #endif\n )\n emoji_heart: emoji_heart {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_heart_macro>, <&emoji_heart_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_heart\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_fire_macro, /* 🔥 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N5 &kp N2 &kp N5)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp D &kp N2 &kp N5)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N5 &kp N2 &kp N5)\n #endif\n )\n emoji_fire: emoji_fire {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_fire_macro>, <&emoji_fire_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_fire\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_muscle_macro, /* 💪 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N4 &kp A &kp A)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp C &kp A &kp A)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N4 &kp A &kp A)\n #endif\n )\n emoji_muscle: emoji_muscle {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_muscle_macro>, <&emoji_muscle_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_muscle\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_person_climbing_macro, /* 🧗 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N9 &kp D &kp N7)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp E &kp D &kp D &kp D &kp N7)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N9 &kp D &kp N7)\n #endif\n )\n emoji_person_climbing: emoji_person_climbing {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_person_climbing_macro>, <&emoji_person_climbing_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_person_climbing\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_lab_coat_macro, /* 🥼 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N9 &kp N7 &kp C)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp E &kp D &kp D &kp N7 &kp C)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N9 &kp N7 &kp C)\n #endif\n )\n emoji_lab_coat: emoji_lab_coat {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_lab_coat_macro>, <&emoji_lab_coat_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_lab_coat\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_rocket_macro, /* 🚀 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N8 &kp N0)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N8 &kp N0)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N8 &kp N0)\n #endif\n )\n emoji_rocket: emoji_rocket {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_rocket_macro>, <&emoji_rocket_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_rocket\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_joy_macro, /* 😂 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N0 &kp N2)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N0 &kp N2)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N0 &kp N2)\n #endif\n )\n emoji_joy: emoji_joy {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_joy_macro>, <&emoji_joy_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_joy\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_rofl_macro, /* 🤣 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N9 &kp N2 &kp N3)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp E &kp D &kp D &kp N2 &kp N3)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N9 &kp N2 &kp N3)\n #endif\n )\n emoji_rofl: emoji_rofl {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_rofl_macro>, <&emoji_rofl_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_rofl\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_star_struck_macro, /* 🤩 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N9 &kp N2 &kp N9)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp E &kp D &kp D &kp N2 &kp N9)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N9 &kp N2 &kp N9)\n #endif\n )\n emoji_star_struck: emoji_star_struck {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_star_struck_macro>, <&emoji_star_struck_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_star_struck\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_love_struck_macro, /* 😍 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N0 &kp D)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N0 &kp D)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N0 &kp D)\n #endif\n )\n emoji_love_struck: emoji_love_struck {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_love_struck_macro>, <&emoji_love_struck_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_love_struck\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_saluting_face_macro, /* 🫡 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp A &kp E &kp N1)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp E &kp D &kp E &kp E &kp N1)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp A &kp E &kp N1)\n #endif\n )\n emoji_saluting_face: emoji_saluting_face {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_saluting_face_macro>, <&emoji_saluting_face_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_saluting_face\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_shocked_face_macro, /* 🤯 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N9 &kp N2 &kp F)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp E &kp D &kp D &kp N2 &kp F)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N9 &kp N2 &kp F)\n #endif\n )\n emoji_shocked_face: emoji_shocked_face {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_shocked_face_macro>, <&emoji_shocked_face_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_shocked_face\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_cold_sweat_macro, /* 😰 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N3 &kp N0)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N3 &kp N0)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N3 &kp N0)\n #endif\n )\n emoji_cold_sweat: emoji_cold_sweat {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_cold_sweat_macro>, <&emoji_cold_sweat_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_cold_sweat\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_monocle_face_macro, /* 🧐 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N9 &kp D &kp N0)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp E &kp D &kp D &kp D &kp N0)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N9 &kp D &kp N0)\n #endif\n )\n emoji_monocle_face: emoji_monocle_face {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_monocle_face_macro>, <&emoji_monocle_face_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_monocle_face\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_snap_fingers_macro, /* 🫰 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp A &kp F &kp N0)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp E &kp D &kp E &kp F &kp N0)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp A &kp F &kp N0)\n #endif\n )\n emoji_snap_fingers: emoji_snap_fingers {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_snap_fingers_macro>, <&emoji_snap_fingers_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_snap_fingers\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_ok_hand_macro, /* 👌 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N4 &kp N4 &kp C)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp C &kp N4 &kp C)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N4 &kp N4 &kp C)\n #endif\n )\n emoji_ok_hand: emoji_ok_hand {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_ok_hand_macro>, <&emoji_ok_hand_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_ok_hand\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_pray_macro, /* 🙏 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N4 &kp F)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N4 &kp F)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N4 &kp F)\n #endif\n )\n emoji_pray: emoji_pray {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_pray_macro>, <&emoji_pray_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_pray\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_sweat_smile_macro, /* 😅 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N0 &kp N5)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N0 &kp N5)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N0 &kp N5)\n #endif\n )\n emoji_sweat_smile: emoji_sweat_smile {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_sweat_smile_macro>, <&emoji_sweat_smile_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_sweat_smile\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_disappointed_macro, /* 😞 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N1 &kp E)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N1 &kp E)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N1 &kp E)\n #endif\n )\n emoji_disappointed: emoji_disappointed {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_disappointed_macro>, <&emoji_disappointed_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_disappointed\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_thinking_macro, /* 🤔 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N9 &kp N1 &kp N4)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp E &kp D &kp D &kp N1 &kp N4)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N9 &kp N1 &kp N4)\n #endif\n )\n emoji_thinking: emoji_thinking {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_thinking_macro>, <&emoji_thinking_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_thinking\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_person_tipping_hand_macro, /* 💁 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N4 &kp N8 &kp N1)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp C &kp N8 &kp N1)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N4 &kp N8 &kp N1)\n #endif\n )\n emoji_person_tipping_hand: emoji_person_tipping_hand {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_person_tipping_hand_macro>, <&emoji_person_tipping_hand_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_person_tipping_hand\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_person_gesturing_ok_macro, /* 🙆 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N4 &kp N6)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N4 &kp N6)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N4 &kp N6)\n #endif\n )\n emoji_person_gesturing_ok: emoji_person_gesturing_ok {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_person_gesturing_ok_macro>, <&emoji_person_gesturing_ok_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_person_gesturing_ok\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_person_bowing_macro, /* 🙇 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N4 &kp N7)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N4 &kp N7)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N4 &kp N7)\n #endif\n )\n emoji_person_bowing: emoji_person_bowing {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_person_bowing_macro>, <&emoji_person_bowing_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_person_bowing\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_person_raising_hand_macro, /* 🙋 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N4 &kp B)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N4 &kp B)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N4 &kp B)\n #endif\n )\n emoji_person_raising_hand: emoji_person_raising_hand {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_person_raising_hand_macro>, <&emoji_person_raising_hand_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_person_raising_hand\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_person_gesturing_no_macro, /* 🙅 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N4 &kp N5)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N4 &kp N5)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N4 &kp N5)\n #endif\n )\n emoji_person_gesturing_no: emoji_person_gesturing_no {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_person_gesturing_no_macro>, <&emoji_person_gesturing_no_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_person_gesturing_no\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_person_shrugging_macro, /* 🤷 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N9 &kp N3 &kp N7)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp E &kp D &kp D &kp N3 &kp N7)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N9 &kp N3 &kp N7)\n #endif\n )\n emoji_person_shrugging: emoji_person_shrugging {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_person_shrugging_macro>, <&emoji_person_shrugging_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_person_shrugging\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_checkoff_macro, /* ✅ */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N2 &kp N7 &kp N0 &kp N5)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp N2 &kp N7 &kp N0 &kp N5)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N7 &kp N0 &kp N5)\n #endif\n )\n emoji_checkoff: emoji_checkoff {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_checkoff_macro>, <&emoji_checkoff_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_checkoff\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_100_macro, /* 💯 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N4 &kp A &kp F)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp C &kp A &kp F)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N4 &kp A &kp F)\n #endif\n )\n emoji_100: emoji_100 {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_100_macro>, <&emoji_100_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_100\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_warning_macro, /* ⚠️ */\n #if UNICODE_TARGET_OS == 'L'\n 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)\n #elif UNICODE_TARGET_OS == 'M'\n 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)\n #elif UNICODE_TARGET_OS == 'W'\n 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)\n #endif\n )\n emoji_warning: emoji_warning {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_warning_macro>, <&emoji_warning_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_warning\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_x_macro, /* ❌ */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N2 &kp N7 &kp N4 &kp C)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp N2 &kp N7 &kp N4 &kp C)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N7 &kp N4 &kp C)\n #endif\n )\n emoji_x: emoji_x {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_x_macro>, <&emoji_x_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_x\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_question_macro, /* ❓ */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N2 &kp N7 &kp N5 &kp N3)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp N2 &kp N7 &kp N5 &kp N3)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N7 &kp N5 &kp N3)\n #endif\n )\n emoji_question: emoji_question {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_question_macro>, <&emoji_question_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_question\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_astronaut_macro, /* 🧑‍🚀 */\n #if UNICODE_TARGET_OS == 'L'\n 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)\n #elif UNICODE_TARGET_OS == 'M'\n 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)\n #elif UNICODE_TARGET_OS == 'W'\n 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)\n #endif\n )\n emoji_astronaut: emoji_astronaut {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_astronaut_macro>, <&emoji_astronaut_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_astronaut\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_nerd_macro, /* 🤓 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N9 &kp N1 &kp N3)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp E &kp D &kp D &kp N1 &kp N3)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N9 &kp N1 &kp N3)\n #endif\n )\n emoji_nerd: emoji_nerd {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_nerd_macro>, <&emoji_nerd_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_nerd\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_sparkles_macro, /* ✨ */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N2 &kp N7 &kp N2 &kp N8)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp N2 &kp N7 &kp N2 &kp N8)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N2 &kp N7 &kp N2 &kp N8)\n #endif\n )\n emoji_sparkles: emoji_sparkles {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_sparkles_macro>, <&emoji_sparkles_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_sparkles\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_raised_hands_macro, /* 🙌 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N4 &kp C)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N4 &kp C)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N4 &kp C)\n #endif\n )\n emoji_raised_hands: emoji_raised_hands {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_raised_hands_macro>, <&emoji_raised_hands_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_raised_hands\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_point_up_macro, /* ☝️ */\n #if UNICODE_TARGET_OS == 'L'\n 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)\n #elif UNICODE_TARGET_OS == 'M'\n 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)\n #elif UNICODE_TARGET_OS == 'W'\n 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)\n #endif\n )\n emoji_point_up: emoji_point_up {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_point_up_macro>, <&emoji_point_up_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_point_up\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_thumbs_up_macro, /* 👍 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N4 &kp N4 &kp D)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp C &kp N4 &kp D)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N4 &kp N4 &kp D)\n #endif\n )\n emoji_thumbs_up: emoji_thumbs_up {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_thumbs_up_macro>, <&emoji_thumbs_up_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_thumbs_up\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n\n //\n // characters\n //\n emoji_moon_complete: emoji_moon_complete {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_new_moon>, <&emoji_full_moon>;\n mods = ;\n };\n emoji_moon_gibbous: emoji_moon_gibbous {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_waning_gibbous_moon>, <&emoji_waxing_gibbous_moon>;\n mods = ;\n };\n emoji_moon_quarter: emoji_moon_quarter {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_last_quarter_moon>, <&emoji_first_quarter_moon>;\n mods = ;\n };\n emoji_moon_crescent: emoji_moon_crescent {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_waning_crescent_moon>, <&emoji_waxing_crescent_moon>;\n mods = ;\n };\n UNICODE(emoji_moon_stars_magic_macro, /* 🪄 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp A &kp N8 &kp N4)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp E &kp D &kp E &kp N8 &kp N4)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp A &kp N8 &kp N4)\n #endif\n )\n emoji_moon_stars_magic: emoji_moon_stars_magic {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_moon_stars_magic_macro>, <&emoji_moon_stars_magic_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_moon_stars_magic\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n emoji_moon_stars: emoji_moon_stars {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_sparkles>, <&emoji_moon_stars_magic>;\n mods = ;\n };\n UNICODE(emoji_face_smile_up_macro, /* 🙂 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N4 &kp N2)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N4 &kp N2)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N4 &kp N2)\n #endif\n )\n emoji_face_smile_up: emoji_face_smile_up {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_face_smile_up_macro>, <&emoji_face_smile_up_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_face_smile_up\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_face_smile_down_macro, /* 🙃 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N4 &kp N3)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N4 &kp N3)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N4 &kp N3)\n #endif\n )\n emoji_face_smile_down: emoji_face_smile_down {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_face_smile_down_macro>, <&emoji_face_smile_down_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_face_smile_down\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n emoji_face_smile: emoji_face_smile {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_face_smile_up>, <&emoji_face_smile_down>;\n mods = ;\n };\n emoji_face_laugh: emoji_face_laugh {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_joy>, <&emoji_rofl>;\n mods = ;\n };\n emoji_face_eyes: emoji_face_eyes {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_star_struck>, <&emoji_love_struck>;\n mods = ;\n };\n UNICODE(emoji_face_joke_wink_macro, /* 😉 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N0 &kp N9)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N0 &kp N9)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N0 &kp N9)\n #endif\n )\n emoji_face_joke_wink: emoji_face_joke_wink {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_face_joke_wink_macro>, <&emoji_face_joke_wink_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_face_joke_wink\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_face_joke_tounge_macro, /* 😜 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N1 &kp C)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N1 &kp C)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N1 &kp C)\n #endif\n )\n emoji_face_joke_tounge: emoji_face_joke_tounge {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_face_joke_tounge_macro>, <&emoji_face_joke_tounge_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_face_joke_tounge\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n emoji_face_joke: emoji_face_joke {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_face_joke_wink>, <&emoji_face_joke_tounge>;\n mods = ;\n };\n UNICODE(emoji_face_fear_scared_macro, /* 😨 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N2 &kp N8)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N2 &kp N8)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N2 &kp N8)\n #endif\n )\n emoji_face_fear_scared: emoji_face_fear_scared {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_face_fear_scared_macro>, <&emoji_face_fear_scared_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_face_fear_scared\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n UNICODE(emoji_face_fear_scream_macro, /* 😱 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N3 &kp N1)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N3 &kp N1)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N3 &kp N1)\n #endif\n )\n emoji_face_fear_scream: emoji_face_fear_scream {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_face_fear_scream_macro>, <&emoji_face_fear_scream_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_face_fear_scream\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n emoji_face_fear: emoji_face_fear {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_face_fear_scared>, <&emoji_face_fear_scream>;\n mods = ;\n };\n UNICODE(emoji_face_surprise_dizzy_macro, /* 😵 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N3 &kp N5)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N3 &kp N5)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N3 &kp N5)\n #endif\n )\n emoji_face_surprise_dizzy: emoji_face_surprise_dizzy {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_face_surprise_dizzy_macro>, <&emoji_face_surprise_dizzy_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_face_surprise_dizzy\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n emoji_face_surprise: emoji_face_surprise {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_shocked_face>, <&emoji_face_surprise_dizzy>;\n mods = ;\n };\n UNICODE(emoji_gesture_attention_wave_macro, /* 👋 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N4 &kp N4 &kp B)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp C &kp N4 &kp B)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N4 &kp N4 &kp B)\n #endif\n )\n emoji_gesture_attention_wave: emoji_gesture_attention_wave {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_gesture_attention_wave_macro>, <&emoji_gesture_attention_wave_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_gesture_attention_wave\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n emoji_gesture_attention: emoji_gesture_attention {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_snap_fingers>, <&emoji_gesture_attention_wave>;\n mods = ;\n };\n UNICODE(emoji_gesture_approval_cool_macro, /* 😎 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N0 &kp E)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N0 &kp E)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N0 &kp E)\n #endif\n )\n emoji_gesture_approval_cool: emoji_gesture_approval_cool {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_gesture_approval_cool_macro>, <&emoji_gesture_approval_cool_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_gesture_approval_cool\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n emoji_gesture_approval: emoji_gesture_approval {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_ok_hand>, <&emoji_gesture_approval_cool>;\n mods = ;\n };\n emoji_gesture_gratitude: emoji_gesture_gratitude {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_pray>, <&emoji_saluting_face>;\n mods = ;\n };\n emoji_gesture_anxiety: emoji_gesture_anxiety {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_sweat_smile>, <&emoji_cold_sweat>;\n mods = ;\n };\n UNICODE(emoji_gesture_despair_cry_macro, /* 😢 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N6 &kp N2 &kp N2)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp E &kp N2 &kp N2)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N6 &kp N2 &kp N2)\n #endif\n )\n emoji_gesture_despair_cry: emoji_gesture_despair_cry {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_gesture_despair_cry_macro>, <&emoji_gesture_despair_cry_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_gesture_despair_cry\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n emoji_gesture_despair: emoji_gesture_despair {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_disappointed>, <&emoji_gesture_despair_cry>;\n mods = ;\n };\n emoji_gesture_curious: emoji_gesture_curious {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_thinking>, <&emoji_monocle_face>;\n mods = ;\n };\n UNICODE(emoji_gesture_point_you_macro, /* 🫵 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp A &kp F &kp N5)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp E &kp D &kp E &kp F &kp N5)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp A &kp F &kp N5)\n #endif\n )\n emoji_gesture_point_you: emoji_gesture_point_you {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_gesture_point_you_macro>, <&emoji_gesture_point_you_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_gesture_point_you\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n emoji_gesture_point: emoji_gesture_point {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_point_up>, <&emoji_gesture_point_you>;\n mods = ;\n };\n UNICODE(emoji_gesture_thumbs_down_macro, /* 👎 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N4 &kp N4 &kp E)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp C &kp N4 &kp E)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N4 &kp N4 &kp E)\n #endif\n )\n emoji_gesture_thumbs_down: emoji_gesture_thumbs_down {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_gesture_thumbs_down_macro>, <&emoji_gesture_thumbs_down_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_gesture_thumbs_down\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n emoji_gesture_thumbs: emoji_gesture_thumbs {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_thumbs_up>, <&emoji_gesture_thumbs_down>;\n mods = ;\n };\n UNICODE(emoji_gesture_hands_clap_macro, /* 👏 */\n #if UNICODE_TARGET_OS == 'L'\n UNICODE_SEQ_LINUX(&kp N1 &kp F &kp N4 &kp N4 &kp F)\n #elif UNICODE_TARGET_OS == 'M'\n UNICODE_SEQ_MACOS(&kp D &kp N8 &kp N3 &kp D &kp D &kp C &kp N4 &kp F)\n #elif UNICODE_TARGET_OS == 'W'\n UNICODE_SEQ_WINDOWS(&kp N0 &kp N1 &kp F &kp N4 &kp N4 &kp F)\n #endif\n )\n emoji_gesture_hands_clap: emoji_gesture_hands_clap {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_gesture_hands_clap_macro>, <&emoji_gesture_hands_clap_macro>;\n mods = <(~(\n#ifdef WORLD_USE_COMPOSE_FOR_emoji_gesture_hands_clap\nCOMPOSE_MORPH_MODS\n#else\nUNICODE_MORPH_MODS\n#endif\n))>;\n };\n emoji_gesture_hands: emoji_gesture_hands {\n compatible = \"zmk,behavior-mod-morph\";\n #binding-cells = <0>;\n bindings = <&emoji_raised_hands>, <&emoji_gesture_hands_clap>;\n mods = ;\n };\n};\n/*HACK*/};\n#if EMOJI_GENDER_SIGN_PRESET == 'N'\n emoji_gender_sign_preset: &none {};\n#elif EMOJI_GENDER_SIGN_PRESET == 'M'\n emoji_gender_sign_preset: &emoji_male_sign {};\n#elif EMOJI_GENDER_SIGN_PRESET == 'F'\n emoji_gender_sign_preset: &emoji_female_sign {};\n#endif\n\n#if EMOJI_SKIN_TONE_PRESET == 'N'\n emoji_skin_tone_preset: &none {};\n#elif EMOJI_SKIN_TONE_PRESET == 'L'\n emoji_skin_tone_preset: &emoji_light_skin_tone {};\n#elif EMOJI_SKIN_TONE_PRESET == 'l'\n emoji_skin_tone_preset: &emoji_medium_light_skin_tone {};\n#elif EMOJI_SKIN_TONE_PRESET == 'M'\n emoji_skin_tone_preset: &emoji_medium_skin_tone {};\n#elif EMOJI_SKIN_TONE_PRESET == 'd'\n emoji_skin_tone_preset: &emoji_medium_dark_skin_tone {};\n#elif EMOJI_SKIN_TONE_PRESET == 'D'\n emoji_skin_tone_preset: &emoji_dark_skin_tone {};\n#endif\n\n#if EMOJI_HAIR_STYLE_PRESET == 'N'\n emoji_hair_style_preset: &none {};\n#elif EMOJI_HAIR_STYLE_PRESET == 'B'\n emoji_hair_style_preset: &emoji_bald {};\n#elif EMOJI_HAIR_STYLE_PRESET == 'R'\n emoji_hair_style_preset: &emoji_red_hair {};\n#elif EMOJI_HAIR_STYLE_PRESET == 'C'\n emoji_hair_style_preset: &emoji_curly_hair {};\n#elif EMOJI_HAIR_STYLE_PRESET == 'W'\n emoji_hair_style_preset: &emoji_white_hair {};\n#endif\n/*HACK*//{\n\n//////////////////////////////////////////////////////////////////////////\n//\n// Mouse keys (control mouse via keyboard) -- requires PR23 beta firmware:\n// select \"community.pr23.mouse-keys\" from the drop-down menu located at\n// Glove80 Layout Editor > Settings > Advanced Settings > Firmware Version\n//\n// - https://github.com/moergo-sc/zmk/pull/23\n// - https://gist.github.com/krissen/dd27082e7ab0575619c7a31f4d2ec7ae\n// - https://github.com/zmkfirmware/zmk/compare/main...urob:zmk:mouse-3.2\n//\n//////////////////////////////////////////////////////////////////////////\n\n//\n// MOUSE_MOTION_DELAY defines how long to wait (milliseconds) before starting\n// to move the mouse pointer.\n//\n#ifndef MOUSE_MOTION_DELAY\n#define MOUSE_MOTION_DELAY 0\n#endif\n\n//\n// MOUSE_MOTION_ACCELERATION_EXPONENT sets how the mouse pointer accelerates:\n//\n// acceleration exponent 0: uniform speed\n// acceleration exponent 1: uniform acceleration\n// acceleration exponent 2: uniform jerk\n//\n#ifndef MOUSE_MOTION_ACCELERATION_EXPONENT\n#define MOUSE_MOTION_ACCELERATION_EXPONENT 1\n#endif\n\n//\n// MOUSE_MOTION_TIME_TO_MAXIMUM_SPEED defines how long to wait (milliseconds)\n// before the mouse pointer speed is suddenly boosted to the maximum value.\n//\n#ifndef MOUSE_MOTION_TIME_TO_MAXIMUM_SPEED\n#define MOUSE_MOTION_TIME_TO_MAXIMUM_SPEED 300\n#endif\n\n//\n// MOUSE_MOTION_MAXIMUM_SPEED defines how quickly the mouse pointer can move.\n//\n#ifndef MOUSE_MOTION_MAXIMUM_SPEED\n#define MOUSE_MOTION_MAXIMUM_SPEED 600\n#endif\n\n//\n// MOUSE_SCROLL_DELAY defines how long to wait (milliseconds) before starting\n// to move the mouse pointer.\n//\n#ifndef MOUSE_SCROLL_DELAY\n#define MOUSE_SCROLL_DELAY 0\n#endif\n\n//\n// MOUSE_SCROLL_ACCELERATION_EXPONENT sets how the mouse pointer accelerates:\n//\n// acceleration exponent 0: uniform speed\n// acceleration exponent 1: uniform acceleration\n// acceleration exponent 2: uniform jerk\n//\n#ifndef MOUSE_SCROLL_ACCELERATION_EXPONENT\n#define MOUSE_SCROLL_ACCELERATION_EXPONENT 0\n#endif\n\n//\n// MOUSE_SCROLL_TIME_TO_MAXIMUM_SPEED defines how long to wait (milliseconds)\n// before the mouse pointer speed is suddenly boosted to the maximum value.\n//\n#ifndef MOUSE_SCROLL_TIME_TO_MAXIMUM_SPEED\n#define MOUSE_SCROLL_TIME_TO_MAXIMUM_SPEED 300\n#endif\n\n//\n// MOUSE_SCROLL_MAXIMUM_SPEED defines how quickly the mouse wheel can scroll.\n//\n#ifndef MOUSE_SCROLL_MAXIMUM_SPEED\n#define MOUSE_SCROLL_MAXIMUM_SPEED 10\n#endif\n/*HACK*/};\n#if __has_include()\n // ==== MOUSE-KEY
====\n #define ZMK_MOUSE_DEFAULT_MOVE_VAL MOUSE_MOTION_MAXIMUM_SPEED\n #define ZMK_MOUSE_DEFAULT_SCRL_VAL MOUSE_SCROLL_MAXIMUM_SPEED\n #include \n &mmv {\n delay-ms = ;\n acceleration-exponent = ;\n time-to-max-speed-ms = ;\n };\n &msc {\n delay-ms = ;\n acceleration-exponent = ;\n time-to-max-speed-ms = ;\n };\n // ==== MOUSE-KEY
=====\n#else\n #define mkp none\n #define mmv none\n #define msc none\n #define LCLK\n #define MCLK\n #define RCLK\n #define MB1\n #define MB2\n #define MB3\n #define MB4\n #define MB5\n #define MB6\n #define MB7\n #define MB8\n #define MOVE_UP\n #define MOVE_DOWN\n #define MOVE_LEFT\n #define MOVE_RIGHT\n #define SCRL_UP\n #define SCRL_DOWN\n #define SCRL_LEFT\n #define SCRL_RIGHT\n#endif\n/*HACK*//{\n", "custom_devicetree": "", "config_parameters": [] -} \ No newline at end of file +} diff --git a/layer-indicator/macos/BetterTouchTool/Glove80-Engrammer-Keyboard-Overlay-Preset.bttpresetzip b/layer-indicator/macos/BetterTouchTool/Glove80-Engrammer-Keyboard-Overlay-Preset.bttpresetzip new file mode 100644 index 0000000000000000000000000000000000000000..9ec1a420f36f521d2276ba6ef549d46b5efeffee GIT binary patch literal 10568 zcmai)bx<7Jy7tlFn!zEs4-(u7I=Dk{2u=v@uEA}P!3pl}HbBr2EZ9KM;1DcWaQMjH z_wIX6oqOx+YMHL;`t{rMuIE|nk4H@r5eXgc&vpbCru)~A|2m<=k;7?Nx;nbMm|MDX zXltRtA&Q=0S^YWOy)fY5k^VgQ*GcUk1|IysGw}b7Vg13;!%~3rZ&vU#C-fiI75p;` z@C^LJ`g28v`@>q8S7yCMfPk{RzW{>> zYpu)Mj}AoEn4Ao=ks?;shbyFu9b8?gp+kI~A<#Kj&czx2ST{IRsr6CT1{npgQym`) zibZCpcc+qOP9t_$`ZW+tAEFk%0ZQo-qjoikLx{ki{S23{69t(~^`QU)JJjrS_lbXE zB6?kFU7gGL>Q>vy85@t$-|;A)(xOrzRA(a@_h?a<$6L&PJ>7e>?lcS1YbZM zN=^hm;PP5OPSbV?vBA(unL=nKhP1?k%i!_n6scE&*6C)K@A6^&i35GZf4- zM#=5T7M=Xx{Q=iz5q4)w%Ay=H9_spzz!Fb>oD)+Y(asi`_M)2t?U!QPUffwLtU5@= z*YXocjAPJRP?Gblx0%_i3A;hB)TuY((q>%>nZ_rER74U{XUZfPBpE986v&+Xu_1S& ztj4CZ-M=TPZYX-`G^w-CISAAD#U!P0Xns}RqBGtQeD3;Qvlg^0RE#y32UAqil+$RV zg|&}4tHd(yRnKCh zjhTH|E^cjf7x&zqtZ53Y0v^Y9?R}-gZYO=aP(0(b=fD6RR!cuzi>ZOjG&>q`DKl3q zPl*%u5rrYp=)e2Q7%r6~EVHhBH-C$#J;YDS05d3~F(tWxzx_b;#+X*~{o6=o_=n@H zd|~Urg7}f^koT~+(A}yL>&s9+GkVFUO>S(<1DegQr~6YW&je>lOC{PEti44+*4W7) zlZu~?{ADn}jgvFHWg_qGX&$Q<(@bPiuQ2|aow)C>c#X6xY;im2ju9EjJ33`qXoG#6 z&-Nz2{!gY&*+UprLH*mv?Nny;&qKz=GkLgvQfAQCh;2gOTv*2lgq4ifY0+&DNc$wD zVKbBWH9>(d4(8#&w(I68dNY}< zvTJ*Cv@}1%iE;kOlYV1ydtmX(N>y0gEjOTOW51CgIc-zG`)X-2W)|oCX6`V8h+_hD zjx+zeJ^)Eh>fy>@TxdUm`r`nfOS@Cpee2PZgVWLmTq%HD@mq?5gwzsE|$kItDJaoW{( zZ^E2Eb2GW&Yda0?_-T~zAmg>4JkAu~*H8s*oeVU*Za4R8#j0x8RXsMIWaJnw$J*go zu`ndw;Emyb`?(mnoW=PmVQ4po9f;A$LmF!}WE^Js!m+gQ{G8J$UB>k_27gK5n!E4( zo=I!Bn6Huk!w0K#&$p{%p(pJ62#QK|(_y2#d*3rp<3?LQ)ez1R#2(iXhh=2N*X$II zT(=_Sz1@sajp1V<9rbj;4BYd((ySdAzRKaJWC--A%J?`z*^>O2{06`{GttJ4QNDeD zxF2xCcGgZb{DARn0~dEIW5(m+MU<8pwI+TT3Vl)d8?hlJ(g+9K$Q^;RAo#<+vtXP~?s8+jIAtyO$rG*Za5n7!MuFe;g64!3<-9celOx zIDCX^+>wo2#mIJ^QwQg_>+%hf9?#dCkUbGZvW~%@aQfJn z*dAW{@T43YPZ*o1_BR-REWNo9I{eZiW}}GGDsyBey7j<=Q&v;dE8U6#m3SMphwa-{ zd-}aDhE?GuGKd#Hyc^+SSxsOc_x3VT3f`n~pWlwbpC9)% z(5fnSl$Eu0BBQXOKRvM)MDJ!t2Mj4)_>#J{rWNFULU`lueLEfddtZ;Ja6L~4pk~a0 zert8uC$oE0md=%Co5R2UR3mlk2_f6RZHSH z=%%!451K-hN|up)b{8ai{A*D+@8mjn{*8bAO`4k`&tifCxb}{Wp_LW&#ckgwg;a}*RyuJSJ zC}|E?Br~khr*TwlQ2!bf#x~XIhEN<$%jxWaH{AKt9N+0fX5fXE47t}XoBWS}2ZkOP z3xP$V3q-JQo)3pTkZ#|(`Kt2K$)UyDnoSPmsmzt%Z&EW-(?5z>I&Ym$$ASH!b=%Tr5quev~g?EDBNGwGFP%S=o^^&5$+xhL8hK z_8z_>f!<9$K|^_}j(>pcEoJ!1W9*GfwS&V)_$nrllA~dx@hQJULoxC^+i1^dhm*`T zL?@8yj(#yTqr zM`DAGU=eJ*a^5n=p)FUnW7TkcP30?}KCGcZkL=C*e7N8Kaqe$M;n2nlX9N8)WF0x2 zH_2MEFbeFv(mVe*{oL`qU>^Gx(yqWqpOK1-hvGLiVUzqP<}7A)q@hb2b&EbR0y+#Q z@q-Vgo%s2!chI?Xpwi>1!!N%3W~Y0%oy`@?KI{3otYczT=NTy^4f4w%EL|J`KG#uc zx<Fe^VoFNB&ivyk(^&_8|g&`l#%aOxd zF1KkX_eP&%%-Uf^*iOQ)^7EBB9zP{z-h(cmITWS4s?sy3iy=t8riJ=FpV6ae$28jXMI})_{6y3b4JR?zC%FQAhF3;mNZV+0G;ESp&dB=C zq*X?8Svu8N3h6Q(JEGZ)gOAw*D=#}Elj8h;q5tYVytOXXlG{(A_7OJ2n=cOtNH!2Gc>asji;ll}%71 zaL;3AP2(MCruud&PP_h>Q6fSLDnu6HwD|O3^m0kJx~Ve2Z?h!YV@_4;%L=1mPijx# z8c9n}>?69^@KMX{cALH111Vwa<$)*7XD2m_R{(}9L0EUEPh>Ekr(0a+iUCNxT%jCa zU%#mKqPDbgt_UMsyg(7`9 zPlY7b8?G`(aa#*NmNc4kd@_;lbI9W?ilS|~OjJBP_YqEzu;*l*46h6Dz-JELByUVvnuA)vn-DqbJWrEICgEAaQW(|J9@L&a-M;; zS@@PYzp63iC~1>#*uL`Tyz%XW0r6?5%LDJwVpXG-C2TA{KqGb9C1?B4<*cU=B}Fgt z3KPT@ga_$H!ZQsqr;_{@;-eTcfzyy(H>T0~q~M8S#cwD*CSCPeemt1@xR*5cv+cV! zSpYZK5&~?@hAX%#Nn@MRn9<^jXoI&BL8j+>RKVJy7nhxg7wL3zPs@dtym4S4=7{}F%$C`(JD!qK+`<2d_WrvIAOnZncd&FV)=U z$Z?98<@OBeE&<}`J>6is6+Do9=kt+^8N>=8%X=U(^Y085_)Syy4jlK`>V$t zxHH$C zrihgVb=jCWfdowN1vnK^=T`ATeo{oI4MN!Vm5B`E{rLM$inDl}Lu>k-OG3 z^|_nue42y&yeO$;8c)tehoPHQh-Mcox^$=8#1}Wu zetiHlvBgCphVm%rCQ!NY^a2_3khpMVaMM8%qV9UOww=>|WbLmKQ#WA83eSo+T^7en zyu*YEhmB&2GTK`{V4Li>m-}pCKcmDiiYWlI)677$q=Jqf>7A`xRKYnK0 zK5=%wHCcC*{^c%FFFi%Q2uklIk5rfVdqf`tMNDWc8+#R$V+ol_)q8(svVZ*T3M_;# zfP+_*3P|_FPQk?&c>P)L1iAGl|G%Ui7)m^YO-(2PDhQG>UM7u0Zc>!81j#NVYA%F=A#nYCaW@P|gwBL|i|h^LWHoo}Qce9~DC0r8b{c}saOMIb zWvO85pTu_E2kbGxE2@UW#VsBKbMG!gUDluTJ~b_RhIcF!7m1{b@k_Gv9K-hg2cF-g z*j11+O6gfz3)0!;(%~R9Xn5;PwCAxel6WCi_0Q(*+c;`SOM+F9 zC)wM}nU)6~2(qO5Y9Ix6oQUaXj}Z`q3~4Z)g9_?-7|;RKL+DoUuHhPhGStOzEsGE{ z&LQ8Z_hN0^XR-S$+J0yQh!%m8>XqAi34tSMU|NPMw zaoZ{Fbr9EP`&}-wA(`4~2|aV>CHi6e_$8gWTIj5=d2aFZz_yAjX8A|Yz`^cQcwR#M z6z=$9Wkx>at7=*s7Fyl$*Nwo6GHIBu%3JgDmB8Xo#AGrRpDJ?+DbTxMd6hTsfWa|& z82*ErM&~(PdgkRSjvYfTAEZyl*$vXD>wtkCeIK^O7OZj#;_P z0>Hx$NJk?DGNL!tgOMxi@EPoYyx^N7($RQjmFFVUG3-R=)7tkmE7n*jQg|T^MlQ=c zZT4>;GF|dye7*k+ZA~7?^3-#s)4BoB?k1eu2F{HzkcyL<9JQ&4eXRRw1xgeX4Yn^` z^(4(GS`5(ruGY=d)T3WtLBMQKetis)b|@4=1BX^Vrh?w@HSYP<0$eNvJ*621<3ahM zK*9AIfdewlPgF)-ug4nlsAQ>;nWIUvTp32a{>;>t&oi|-ST7SFg@>!6IVLDl$r(2U zX>zusquqs{oh5G^9CP?St8hy6`A) zjlJ=3dDkLmJM5+ocK+OG?yNyjt%jtY^?xCU4xlR~5WKY`7EeYQ_1mwZY+o*(WD z-2rmoFnXADLa}v%dQm|!$Z1$Y zDV8mNEUfX5h3x^KEo|H!p=SV>ldwFGDddt5E{aYdY(`gA7pAvZ)A+1sUvX_ktbQG7 zR70X#@7PyWn&=;#jGd~Yk}khxxHg)~ z*3Yi(4tbwr$%m7MQ`YDd$FsQ@5?MusL4jP|2G3ll%)3EYpY9Hsnfu$hdM{qohl3mh z_NWLr?a*{5Xqf;!_+z%Um7^K%km+sODZS^3>cJ$fNYu>DnLK85@ZB1o(&+{rAUdL{ zY9Ll??X!QTkm7TfRjtdxch8SMugAo0gAf%8J7fogf!I|q(FJgFe=;Gu+%&(dp8soI zLPUdkit7%?UZqml^23xQ?nj*`z)mu>%sX2Lrgto5{k?v2L}--x{2kk_ox!9vUrd5= zaahBIM$5B>k+&XInAq)K4Rv)^4E^bG^cd;llxl^BeobRhSctHfKn^ki3febfs)`UG zPhT(t5Fu{Bl)YNfce|=FyJq6=l~@UXn`F}WpkBh=2F}Crr&dpk(Wrxkt4DOJT&t3y zrmYpvpJH;xL3D|A9D}oLjzKTYT|XmznSHndkG&d$QRk@eiwrP8;^X5d0_gg`G|aps z&p<|((FxyuNE&ROXxP26u5I+=0e#9fA+#`nS2GombK0^eBS$BwC_et{P zNv7iyc&9Z7-)C58RNF!P=Dx<|u6*~(HfdJe5qTfe=q_An)IC42?&D+9#TH|2<7|Ka zN!PA3A<6uFy>&t)2j~4V-}#i+UN40u>W`@j7-*4UDS0#o($Jl2hY z??B|tMFCHu$iHFII-F_Fk84@*uQK8gzS!v#5V(@c&SBZbwtVHF<6)mH0&sVnuiQYwrF=&-`1)g zeXn4wF+R(abb{aYy+Btb;3gtENKyN#8^Li*_GzbFhdnOm)(wf_hjCUx(($NFXfIoX zf`v7}=2B6n)5MqS;A3ubx%SG7-(;E>YNr?kr2*XEy?$$)D5yGA=DW|e?ZG(kT1uyA0{0ac1!W*P2(55V`)fy(|co3^s6@>+FQNE=fAF`Ms*T%5+vg~twV zr^2yqW?rgNeOI|i<3zJojXByLW!N>E5Bzn#+hvu`pV3$LovBOLpZ5J+hpMv2BJD4K zvWZdcfzeD$s5{^z`NI3jfg^N_{uLc&?VK3gIvQ6ys+zlyKmf+s|^+~m#uEd0V5n2ip^Q;ax z`M{^}F10@(`SQ*R%D2?FJ9$reGaPZ2Q(7j&l;}+D#uaXD`F;W0!KX$~O;JBz!gRbx z7)i{=67Bvg!@Yfau~No_e{@BW@=!TOf=c*(V2qeX@!>Y*S5tl6Uq!O8pC4mIJz{kx zzrya>lVX@aboL=SlpU|M`>C4pcvwUXB;a`t5Xvs&z?!ur4v=2}y=N`NN<~_E7vHLV zEY=_QJahM7EVwr;XAL_sK~*@U1NxwA*Vf8#|hVzZ}*v3X~{|xuC&=YmRh? zu?goPON|joz@*S-^a^Vb+#;Mq@2D=I))?Ny&R2iCttJ*xA~%}nM-*JJQy9Sx>p;?A zj=(CKSJxYEeQ6}E9dsbmFUcE3_OdYIr}qb1#DefRVWwmmwy=JAhBrER;zW%s4KZGe z^r4GfRxx@Qf^e?MRk0l%nNsbHTcYJxOpJx41^Vo(ZfZSc9mxg+SkV=0Q2PRjvhd_3 z+_>nUm@C?91C@PS4$%y9QY&5I4BE;^J5oGZHiHh-F?m(Ij32EB2zaeE62XZE4QbKQ zqXy)8D+xQEflm)=XaNq2;uSwWU6S+9=~*?{MhkAcYoGx0_=Qa2*BV&iNVy2x(Ehvl_%}GD^2~t$m~aLXI2h3pY6{uC(45 zcS9bn?7Srb6I{K>fHg$6xba$ukE!R4?S(dd;O5dP!mMTN@!i|2}Lk;(r-A6m2k~dxHj;GYAWUjxKOt7t_WBtm#QFS=3)37G1H&8}pL&JPDoLOK&;+CPEP;9#9<-r5`V zMVv`_rvqf+2%!Q})&OlC&M;Ksq1~I)#Vt-pw1Z&Weli)xCc_DO=Mfxx6aVeQoVGw- zk_<{VhC&!z2oF*=)qTfVpE+J5jT$jT+vcK-1QXvocS<{lz*1(D-p^R=cm7!t`Cb4h zSZ`Dz`xojkUcH0|u>dUtDy`Ly>=+%n*i_n{m+NT%h1BrDSURKUP%PmwiTQ-!4{2w` z+)JF6ISHB|xQ zqHt}|WXU9Ahi>JvV0D2sVVQdB1drNr5&Q0_w$RyBEN;o9^SmwY=ViAbadXda<%A#V z(_qN_k_iWpHwuL~o>D1#e6Bavhf!g&Q}c(5SzC^p00)|n$Jj%73X%o9oGT5$!eK2w zZ<|K3z%6gEJ7wT8>C>ZmvreFZv2rC| zC{|YBTL1{qFsCgs>*1u0l^<7frTi3ZZk6N}A`;{q26v|0+{ERM1I`Ap5G=A+wo`D19%lBEp%U{3F z>gsL9-6PfooHpi8wmQfo1mWMDc!k9>=uEhGaMtc>-wf1Ac+-FLhD4fP) z&!R~`>$n3gB~}k19I45ynW_VKUstFUV^ga)ge&@$025UPMOECnVtxyU@8vv%~QI?=HdRj_$V-oHJ{keD|TE|xyntNO}SRY8oY zy7h?~oHk}^+}A-(g-Cn6a9cwn#;_plwCxi%ia6=}Ig>Kpd8fszYU{3=M&n%e)s)X= z?(Q(&psUMu>v7Q?`;@Nw1a)9ne5>!!Io(_fWt5?5Zpctb0Beg_hF`s?k(%SA*pp?c z!92y7Z4yR{b|3tJ8URbwPAN4+I0psi$*wg*9i?T-it}tI@JNEF0b$8uDPLJ+v8-Q# z<^xL13EsY7gYu_zt-9;^UVd79?n`)h7*p68Ao8I>U~VB)h;nQT(-a;m5PEcWlewxWh4n2D zq78L_T4pB0h7uKIt5Q%+?GkMBU~qX1f6^VUGC8;)`W zF^0iASS#A1)(J(Fp5O5!!~2=g?@)NgPTdo5PCP0OTo+v$FZRsesV~p^;6YEqi-M$ER?Lj8SDf z^j6n~y*QMDCl66v|9|$g;5{-5-WrsGT9ks9%0t7Hk?|(ja#)5xM>2a}ajuTx7ZDm@ zu5BMShG>K5c;h5ORLtmdj*B5kxxs4u0&&T>9CgA_RXCxtPTU^*MR(TmH;wUIk>P?FA4aVWbDsD + + + + + +keyboard image here + + + diff --git a/layer-indicator/macos/BetterTouchTool/bttpreset-zipdir/presetjson.bttpreset b/layer-indicator/macos/BetterTouchTool/bttpreset-zipdir/presetjson.bttpreset new file mode 100644 index 0000000..e3c11a8 --- /dev/null +++ b/layer-indicator/macos/BetterTouchTool/bttpreset-zipdir/presetjson.bttpreset @@ -0,0 +1,3049 @@ + +{ + "BTTPresetCreatorNotes" : "v36", + "BTTPresetInfoURL" : "https://github.com/sunaku/glove80-keymaps?tab=readme-ov-file", + "BTTPresetName" : "Glove80 Engrammer Keyboard Overlay", + "BTTPresetColor" : "208.445309, 152.715401, 0.000000, 255.000000", + "BTTPresetUUID" : "7CB65006-2E9A-42CB-A012-798551F6C827", + "BTTPresetContent" : [ + { + "BTTAppBundleIdentifier" : "BT.G", + "BTTAppName" : "Global", + "BTTAppAutoInvertIcon" : 1, + "BTTAppSpecificSettings" : { + "BTTDisableGlobalTriggers" : false + }, + "BTTTriggers" : [ + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : 643, + "BTTTriggerTypeDescriptionReadOnly" : "Named Trigger: (KB Overlay) Show base kb layer for n seconds", + "BTTTriggerTypeDescription" : "(KB Overlay) Show base kb layer for n seconds", + "BTTTriggerClass" : "BTTTriggerTypeOtherTriggers", + "BTTUUID" : "252866E3-9327-4C48-9CE1-4A29A0D632C4", + "BTTPredefinedActionType" : 366, + "BTTPredefinedActionName" : "Empty Placeholder", + "BTTTriggerName" : "(KB Overlay) Show base kb layer for n seconds", + "BTTNotesInsteadOfDescription" : 1, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 13, + "BTTAdditionalActions" : [ + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "252866E3-9327-4C48-9CE1-4A29A0D632C4", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeOtherTriggers", + "BTTUUID" : "A19F5C80-8A73-46AA-BDA6-6AFB5C91EFA1", + "BTTPredefinedActionType" : 292, + "BTTPredefinedActionName" : "Assign\/Set Value for Variable", + "BTTGenericActionConfig2" : "base-layer-diagram.png", + "BTTVariableName" : "kb_overlay_image_filename", + "BTTVariableValue" : "base-layer-diagram.png", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 0 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "252866E3-9327-4C48-9CE1-4A29A0D632C4", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeOtherTriggers", + "BTTUUID" : "81146CB9-9AB3-4CA6-8A56-8943C3EA10FD", + "BTTPredefinedActionType" : 352, + "BTTPredefinedActionName" : "Cancel Timed Action Sequence", + "BTTGenericActionConfig2" : "kb_overlay_timer", + "BTTGenericActionConfig" : "kb_overlay_hide_menu_delay_in_progress", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 1 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "252866E3-9327-4C48-9CE1-4A29A0D632C4", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeMagicMouse", + "BTTUUID" : "DFCDFECB-53F4-41EF-8561-63FDD850BC37", + "BTTPredefinedActionType" : 386, + "BTTPredefinedActionName" : "Show Floating Menu", + "BTTAdditionalActionData" : { + "BTTMenuActionMenuID" : "kb_overlay_menu" + }, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 2 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "252866E3-9327-4C48-9CE1-4A29A0D632C4", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeMagicMouse", + "BTTUUID" : "52DFDB12-4B71-4633-ADBB-C6DFF920EF4B", + "BTTPredefinedActionType" : 248, + "BTTPredefinedActionName" : "Trigger Named Trigger (Configured in Other Tab)", + "BTTNamedTriggerToTrigger" : "kb_overlay_set_defaults", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 3 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "252866E3-9327-4C48-9CE1-4A29A0D632C4", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeOtherTriggers", + "BTTUUID" : "CEA086E2-F485-474A-BD64-6975C1CAF51F", + "BTTPredefinedActionType" : 351, + "BTTPredefinedActionName" : "Execute Action Sequence after Timeout \/ Delay", + "BTTGenericActionConfig2" : "kb_overlay_timer", + "BTTGenericActionConfig" : "10", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 4, + "BTTAdditionalActions" : [ + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : 740, + "BTTTriggerTypeDescriptionReadOnly" : "Assign actions to trigger after timeout \/ delay", + "BTTTriggerParentUUID" : "CEA086E2-F485-474A-BD64-6975C1CAF51F", + "BTTTriggerClass" : "BTTTriggerTypeCustomActionConfig", + "BTTUUID" : "F211D3F1-E39C-4914-86BF-3EFD542626EC", + "BTTPredefinedActionType" : 366, + "BTTPredefinedActionName" : "Empty Placeholder", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 0, + "BTTAdditionalActions" : [ + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "F211D3F1-E39C-4914-86BF-3EFD542626EC", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeCustomActionConfig", + "BTTUUID" : "F521C2BB-5FF1-4C44-9468-4C7A2653D0E7", + "BTTPredefinedActionType" : 387, + "BTTPredefinedActionName" : "Hide Floating Menu", + "BTTAdditionalActionData" : { + "BTTMenuActionMenuID" : "kb_overlay_menu" + }, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 8 + } + ] + } + ] + } + ], + "BTTGestureNotes" : "(KB Overlay) Show base kb layer for n seconds" + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : 0, + "BTTTriggerClass" : "BTTTriggerTypeKeyboardShortcut", + "BTTUUID" : "56617366-960E-4F96-8C17-A0B33930FBF1", + "BTTPredefinedActionType" : 366, + "BTTPredefinedActionName" : "Empty Placeholder", + "BTTAdditionalConfiguration" : "1835049", + "BTTKeyboardShortcutScope" : 0, + "BTTKeyboardShortcutKeyboardType" : 5825, + "BTTTriggerOnDown" : 1, + "BTTLayoutIndependentChar" : "b", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTShortcutKeyCode" : 11, + "BTTShortcutModifierKeys" : 1835008, + "BTTOrder" : 4, + "BTTAutoAdaptToKeyboardLayout" : 0, + "BTTAdditionalActions" : [ + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "56617366-960E-4F96-8C17-A0B33930FBF1", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeKeyboardShortcut", + "BTTUUID" : "1561809D-9217-4AFD-B9CC-0FE519273286", + "BTTPredefinedActionType" : 248, + "BTTPredefinedActionName" : "Trigger Named Trigger (Configured in Other Tab)", + "BTTNamedTriggerToTrigger" : "(KB Overlay) Show base kb layer for n seconds", + "BTTKeyboardShortcutKeyboardType" : 0, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTShortcutKeyCode" : -1, + "BTTShortcutModifierKeys" : -1, + "BTTOrder" : 13, + "BTTAutoAdaptToKeyboardLayout" : 0 + } + ], + "BTTTriggerConfig" : { + "BTTHUDText" : "sdf" + } + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : 0, + "BTTTriggerClass" : "BTTTriggerTypeKeyboardShortcut", + "BTTUUID" : "450FEB02-AFDB-4D4B-8067-F448815572B4", + "BTTPredefinedActionType" : 366, + "BTTPredefinedActionName" : "Empty Placeholder", + "BTTAdditionalConfiguration" : "8388608", + "BTTKeyboardShortcutKeyboardType" : 5825, + "BTTTriggerOnDown" : 1, + "BTTLayoutIndependentChar" : "F18", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTShortcutKeyCode" : 79, + "BTTShortcutModifierKeys" : 8388608, + "BTTOrder" : 5, + "BTTAutoAdaptToKeyboardLayout" : 0, + "BTTGestureNotes" : "Consume KB overlay Function key (prevents OS interaction)" + }, + + + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : 624, + "BTTTriggerTypeDescriptionReadOnly" : "Please Select a Trigger ", + "BTTTriggerTypeDescription" : "Show Base layer", + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "7f25932b-3427-4be7-be0c-be770442b010", + "BTTPredefinedActionType" : 366, + "BTTPredefinedActionName" : "Empty Placeholder", + "BTTNotesInsteadOfDescription" : 1, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 19, + "BTTAdditionalActions" : [ + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "7f25932b-3427-4be7-be0c-be770442b010", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeMagicMouse", + "BTTUUID" : "764a8978-a8c0-480e-90c1-68658a9b9978", + "BTTPredefinedActionType" : 352, + "BTTPredefinedActionName" : "Cancel Timed Action Sequence", + "BTTGenericActionConfig2" : "kb_overlay_timer", + "BTTGenericActionConfig" : "kb_overlay_hide_menu_delay_in_progress", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 0 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "7f25932b-3427-4be7-be0c-be770442b010", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "603d255b-4759-43b9-b454-a338ef672c84", + "BTTPredefinedActionType" : 292, + "BTTPredefinedActionName" : "Assign\/Set Value for Variable", + "BTTGenericActionConfig2" : "base-layer-diagram.png", + "BTTVariableName" : "kb_overlay_image_filename", + "BTTVariableValue" : "base-layer-diagram.png", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 1 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "7f25932b-3427-4be7-be0c-be770442b010", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "4284b425-d3bb-44be-9abb-1162b7f162e5", + "BTTPredefinedActionType" : 386, + "BTTPredefinedActionName" : "Show Floating Menu", + "BTTAdditionalActionData" : { + "BTTMenuActionMenuID" : "kb_overlay_menu" + }, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 2 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "7f25932b-3427-4be7-be0c-be770442b010", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeMagicMouse", + "BTTUUID" : "e8d23968-abac-44b1-a3ce-8099a0116091", + "BTTPredefinedActionType" : 248, + "BTTPredefinedActionName" : "Trigger Named Trigger (Configured in Other Tab)", + "BTTNamedTriggerToTrigger" : "kb_overlay_set_defaults", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 3 + } + ], + "BTTGestureNotes" : "Show Base layer", + "BTTKeySequence" : { + "BTTPauseBetween" : 0.29999999999999999, + "BTTKeyCount" : 8, + "BTTKeySequenceDownKeys" : [ + { + "BTTKEYCode" : 61, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 62, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + } + ], + "BTTKeySequenceMixedKeys" : [ + { + "BTTKEYCode" : 61, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 62, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 61, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 62, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYTime" : 732641216 + } + ], + "BTTKeySequenceUpKeys" : [ + { + "BTTKEYCode" : 61, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 62, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYTime" : 732641216 + } + ] + } + }, + + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : 624, + "BTTTriggerTypeDescriptionReadOnly" : "Please Select a Trigger ", + "BTTTriggerTypeDescription" : "Show Cursor layer", + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "aab90943-75fd-406f-8c83-8cfc2b11a4db", + "BTTPredefinedActionType" : 366, + "BTTPredefinedActionName" : "Empty Placeholder", + "BTTNotesInsteadOfDescription" : 1, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 19, + "BTTAdditionalActions" : [ + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "aab90943-75fd-406f-8c83-8cfc2b11a4db", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeMagicMouse", + "BTTUUID" : "3c8a115e-b9cc-4087-87d7-9ffaf29f59ff", + "BTTPredefinedActionType" : 352, + "BTTPredefinedActionName" : "Cancel Timed Action Sequence", + "BTTGenericActionConfig2" : "kb_overlay_timer", + "BTTGenericActionConfig" : "kb_overlay_hide_menu_delay_in_progress", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 0 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "aab90943-75fd-406f-8c83-8cfc2b11a4db", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "6d90cd08-19de-46da-bc6d-f7e3e4dba7e4", + "BTTPredefinedActionType" : 292, + "BTTPredefinedActionName" : "Assign\/Set Value for Variable", + "BTTGenericActionConfig2" : "cursor-layer-diagram.png", + "BTTVariableName" : "kb_overlay_image_filename", + "BTTVariableValue" : "cursor-layer-diagram.png", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 1 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "aab90943-75fd-406f-8c83-8cfc2b11a4db", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "653b1ddd-a6eb-429d-a7d8-5d3a6bcd0bcb", + "BTTPredefinedActionType" : 386, + "BTTPredefinedActionName" : "Show Floating Menu", + "BTTAdditionalActionData" : { + "BTTMenuActionMenuID" : "kb_overlay_menu" + }, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 2 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "aab90943-75fd-406f-8c83-8cfc2b11a4db", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeMagicMouse", + "BTTUUID" : "e097822a-95b1-459f-b35e-7e1e3da4b76a", + "BTTPredefinedActionType" : 248, + "BTTPredefinedActionName" : "Trigger Named Trigger (Configured in Other Tab)", + "BTTNamedTriggerToTrigger" : "kb_overlay_set_defaults", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 3 + } + ], + "BTTGestureNotes" : "Show Cursor layer", + "BTTKeySequence" : { + "BTTPauseBetween" : 0.29999999999999999, + "BTTKeyCount" : 8, + "BTTKeySequenceDownKeys" : [ + { + "BTTKEYCode" : 61, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 62, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + } + ], + "BTTKeySequenceMixedKeys" : [ + { + "BTTKEYCode" : 61, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 62, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 61, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 62, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYTime" : 732641216 + } + ], + "BTTKeySequenceUpKeys" : [ + { + "BTTKEYCode" : 61, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 62, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYTime" : 732641216 + } + ] + } + }, + + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : 624, + "BTTTriggerTypeDescriptionReadOnly" : "Please Select a Trigger ", + "BTTTriggerTypeDescription" : "Show Emoji layer", + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "2dd41f96-4246-4626-aec4-6ee963db2e90", + "BTTPredefinedActionType" : 366, + "BTTPredefinedActionName" : "Empty Placeholder", + "BTTNotesInsteadOfDescription" : 1, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 19, + "BTTAdditionalActions" : [ + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "2dd41f96-4246-4626-aec4-6ee963db2e90", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeMagicMouse", + "BTTUUID" : "cf04af19-c795-485c-ba11-c96a5903146f", + "BTTPredefinedActionType" : 352, + "BTTPredefinedActionName" : "Cancel Timed Action Sequence", + "BTTGenericActionConfig2" : "kb_overlay_timer", + "BTTGenericActionConfig" : "kb_overlay_hide_menu_delay_in_progress", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 0 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "2dd41f96-4246-4626-aec4-6ee963db2e90", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "b29793c4-c05a-4ad3-8691-b476644202b0", + "BTTPredefinedActionType" : 292, + "BTTPredefinedActionName" : "Assign\/Set Value for Variable", + "BTTGenericActionConfig2" : "emoji-layer-diagram.png", + "BTTVariableName" : "kb_overlay_image_filename", + "BTTVariableValue" : "emoji-layer-diagram.png", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 1 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "2dd41f96-4246-4626-aec4-6ee963db2e90", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "700d1612-1e34-4d1d-947c-6ad599ce40cf", + "BTTPredefinedActionType" : 386, + "BTTPredefinedActionName" : "Show Floating Menu", + "BTTAdditionalActionData" : { + "BTTMenuActionMenuID" : "kb_overlay_menu" + }, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 2 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "2dd41f96-4246-4626-aec4-6ee963db2e90", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeMagicMouse", + "BTTUUID" : "7da1d353-d15b-425e-b13b-f3bc7835b26b", + "BTTPredefinedActionType" : 248, + "BTTPredefinedActionName" : "Trigger Named Trigger (Configured in Other Tab)", + "BTTNamedTriggerToTrigger" : "kb_overlay_set_defaults", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 3 + } + ], + "BTTGestureNotes" : "Show Emoji layer", + "BTTKeySequence" : { + "BTTPauseBetween" : 0.29999999999999999, + "BTTKeyCount" : 8, + "BTTKeySequenceDownKeys" : [ + { + "BTTKEYCode" : 61, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 62, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + } + ], + "BTTKeySequenceMixedKeys" : [ + { + "BTTKEYCode" : 61, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 62, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 61, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 62, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYTime" : 732641216 + } + ], + "BTTKeySequenceUpKeys" : [ + { + "BTTKEYCode" : 61, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 62, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYTime" : 732641216 + } + ] + } + }, + + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : 624, + "BTTTriggerTypeDescriptionReadOnly" : "Please Select a Trigger ", + "BTTTriggerTypeDescription" : "Show Factory layer", + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "8f91642b-f3c8-45bb-bf2b-cca7083fd874", + "BTTPredefinedActionType" : 366, + "BTTPredefinedActionName" : "Empty Placeholder", + "BTTNotesInsteadOfDescription" : 1, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 19, + "BTTAdditionalActions" : [ + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "8f91642b-f3c8-45bb-bf2b-cca7083fd874", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeMagicMouse", + "BTTUUID" : "8534d3ee-49e0-4ead-b8ab-a46d72459085", + "BTTPredefinedActionType" : 352, + "BTTPredefinedActionName" : "Cancel Timed Action Sequence", + "BTTGenericActionConfig2" : "kb_overlay_timer", + "BTTGenericActionConfig" : "kb_overlay_hide_menu_delay_in_progress", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 0 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "8f91642b-f3c8-45bb-bf2b-cca7083fd874", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "3b873479-3ea2-4a45-88bb-f506598288a9", + "BTTPredefinedActionType" : 292, + "BTTPredefinedActionName" : "Assign\/Set Value for Variable", + "BTTGenericActionConfig2" : "factory-layer-diagram.png", + "BTTVariableName" : "kb_overlay_image_filename", + "BTTVariableValue" : "factory-layer-diagram.png", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 1 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "8f91642b-f3c8-45bb-bf2b-cca7083fd874", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "e9f97be6-4045-4f98-9ede-1bd7ae3910b9", + "BTTPredefinedActionType" : 386, + "BTTPredefinedActionName" : "Show Floating Menu", + "BTTAdditionalActionData" : { + "BTTMenuActionMenuID" : "kb_overlay_menu" + }, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 2 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "8f91642b-f3c8-45bb-bf2b-cca7083fd874", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeMagicMouse", + "BTTUUID" : "432c047e-4467-43b9-9cea-8a8a70f94305", + "BTTPredefinedActionType" : 248, + "BTTPredefinedActionName" : "Trigger Named Trigger (Configured in Other Tab)", + "BTTNamedTriggerToTrigger" : "kb_overlay_set_defaults", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 3 + } + ], + "BTTGestureNotes" : "Show Factory layer", + "BTTKeySequence" : { + "BTTPauseBetween" : 0.29999999999999999, + "BTTKeyCount" : 8, + "BTTKeySequenceDownKeys" : [ + { + "BTTKEYCode" : 61, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 62, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + } + ], + "BTTKeySequenceMixedKeys" : [ + { + "BTTKEYCode" : 61, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 62, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 61, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 62, + "BTTKEYTime" : 732641216 + } + ], + "BTTKeySequenceUpKeys" : [ + { + "BTTKEYCode" : 61, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 62, + "BTTKEYTime" : 732641216 + } + ] + } + }, + + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : 624, + "BTTTriggerTypeDescriptionReadOnly" : "Please Select a Trigger ", + "BTTTriggerTypeDescription" : "Show Function layer", + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "08f4f1e7-ee57-409f-89c6-ab36be578b03", + "BTTPredefinedActionType" : 366, + "BTTPredefinedActionName" : "Empty Placeholder", + "BTTNotesInsteadOfDescription" : 1, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 19, + "BTTAdditionalActions" : [ + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "08f4f1e7-ee57-409f-89c6-ab36be578b03", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeMagicMouse", + "BTTUUID" : "4cfaa935-b963-4178-83a5-4b2239dc2206", + "BTTPredefinedActionType" : 352, + "BTTPredefinedActionName" : "Cancel Timed Action Sequence", + "BTTGenericActionConfig2" : "kb_overlay_timer", + "BTTGenericActionConfig" : "kb_overlay_hide_menu_delay_in_progress", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 0 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "08f4f1e7-ee57-409f-89c6-ab36be578b03", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "27e00e6a-8361-498b-85c4-3e857d072669", + "BTTPredefinedActionType" : 292, + "BTTPredefinedActionName" : "Assign\/Set Value for Variable", + "BTTGenericActionConfig2" : "function-layer-diagram.png", + "BTTVariableName" : "kb_overlay_image_filename", + "BTTVariableValue" : "function-layer-diagram.png", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 1 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "08f4f1e7-ee57-409f-89c6-ab36be578b03", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "861e0558-9717-416f-90e3-3a6792b2b938", + "BTTPredefinedActionType" : 386, + "BTTPredefinedActionName" : "Show Floating Menu", + "BTTAdditionalActionData" : { + "BTTMenuActionMenuID" : "kb_overlay_menu" + }, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 2 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "08f4f1e7-ee57-409f-89c6-ab36be578b03", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeMagicMouse", + "BTTUUID" : "1fabf2f3-03f6-4a0b-b69d-28a8c809e010", + "BTTPredefinedActionType" : 248, + "BTTPredefinedActionName" : "Trigger Named Trigger (Configured in Other Tab)", + "BTTNamedTriggerToTrigger" : "kb_overlay_set_defaults", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 3 + } + ], + "BTTGestureNotes" : "Show Function layer", + "BTTKeySequence" : { + "BTTPauseBetween" : 0.29999999999999999, + "BTTKeyCount" : 8, + "BTTKeySequenceDownKeys" : [ + { + "BTTKEYCode" : 61, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 62, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + } + ], + "BTTKeySequenceMixedKeys" : [ + { + "BTTKEYCode" : 61, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 62, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 61, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 62, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYTime" : 732641216 + } + ], + "BTTKeySequenceUpKeys" : [ + { + "BTTKEYCode" : 61, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 62, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYTime" : 732641216 + } + ] + } + }, + + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : 624, + "BTTTriggerTypeDescriptionReadOnly" : "Please Select a Trigger ", + "BTTTriggerTypeDescription" : "Show Gaming layer", + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "de3f7020-592c-44d1-b551-6aff63c9ba57", + "BTTPredefinedActionType" : 366, + "BTTPredefinedActionName" : "Empty Placeholder", + "BTTNotesInsteadOfDescription" : 1, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 19, + "BTTAdditionalActions" : [ + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "de3f7020-592c-44d1-b551-6aff63c9ba57", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeMagicMouse", + "BTTUUID" : "4f23f485-10b4-4252-9369-6351558981cb", + "BTTPredefinedActionType" : 352, + "BTTPredefinedActionName" : "Cancel Timed Action Sequence", + "BTTGenericActionConfig2" : "kb_overlay_timer", + "BTTGenericActionConfig" : "kb_overlay_hide_menu_delay_in_progress", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 0 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "de3f7020-592c-44d1-b551-6aff63c9ba57", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "fb2fcb39-02a1-43e8-8d3d-bb0d442362ae", + "BTTPredefinedActionType" : 292, + "BTTPredefinedActionName" : "Assign\/Set Value for Variable", + "BTTGenericActionConfig2" : "gaming-layer-diagram.png", + "BTTVariableName" : "kb_overlay_image_filename", + "BTTVariableValue" : "gaming-layer-diagram.png", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 1 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "de3f7020-592c-44d1-b551-6aff63c9ba57", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "a09062af-69fa-4b12-860a-f6e615fc1d3c", + "BTTPredefinedActionType" : 386, + "BTTPredefinedActionName" : "Show Floating Menu", + "BTTAdditionalActionData" : { + "BTTMenuActionMenuID" : "kb_overlay_menu" + }, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 2 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "de3f7020-592c-44d1-b551-6aff63c9ba57", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeMagicMouse", + "BTTUUID" : "e6b2d9b7-186e-4319-a4c3-e4ef505d316b", + "BTTPredefinedActionType" : 248, + "BTTPredefinedActionName" : "Trigger Named Trigger (Configured in Other Tab)", + "BTTNamedTriggerToTrigger" : "kb_overlay_set_defaults", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 3 + } + ], + "BTTGestureNotes" : "Show Gaming layer", + "BTTKeySequence" : { + "BTTPauseBetween" : 0.29999999999999999, + "BTTKeyCount" : 8, + "BTTKeySequenceDownKeys" : [ + { + "BTTKEYCode" : 61, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 62, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + } + ], + "BTTKeySequenceMixedKeys" : [ + { + "BTTKEYCode" : 61, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 62, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 61, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 62, + "BTTKEYTime" : 732641216 + } + ], + "BTTKeySequenceUpKeys" : [ + { + "BTTKEYCode" : 61, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 62, + "BTTKEYTime" : 732641216 + } + ] + } + }, + + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : 624, + "BTTTriggerTypeDescriptionReadOnly" : "Please Select a Trigger ", + "BTTTriggerTypeDescription" : "Show Lower layer", + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "477f6d31-d726-4e20-996c-dfc14c9eddf9", + "BTTPredefinedActionType" : 366, + "BTTPredefinedActionName" : "Empty Placeholder", + "BTTNotesInsteadOfDescription" : 1, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 19, + "BTTAdditionalActions" : [ + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "477f6d31-d726-4e20-996c-dfc14c9eddf9", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeMagicMouse", + "BTTUUID" : "1c2e55ef-7b73-4dcc-8667-52aecbdd65b6", + "BTTPredefinedActionType" : 352, + "BTTPredefinedActionName" : "Cancel Timed Action Sequence", + "BTTGenericActionConfig2" : "kb_overlay_timer", + "BTTGenericActionConfig" : "kb_overlay_hide_menu_delay_in_progress", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 0 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "477f6d31-d726-4e20-996c-dfc14c9eddf9", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "349c004f-9f28-4f5b-b61e-4636d1c82996", + "BTTPredefinedActionType" : 292, + "BTTPredefinedActionName" : "Assign\/Set Value for Variable", + "BTTGenericActionConfig2" : "lower-layer-diagram.png", + "BTTVariableName" : "kb_overlay_image_filename", + "BTTVariableValue" : "lower-layer-diagram.png", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 1 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "477f6d31-d726-4e20-996c-dfc14c9eddf9", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "4adc538e-905d-481d-a7b2-41b1c2aee4f1", + "BTTPredefinedActionType" : 386, + "BTTPredefinedActionName" : "Show Floating Menu", + "BTTAdditionalActionData" : { + "BTTMenuActionMenuID" : "kb_overlay_menu" + }, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 2 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "477f6d31-d726-4e20-996c-dfc14c9eddf9", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeMagicMouse", + "BTTUUID" : "9c125e94-2bba-4e96-aa50-f98a7ef9ffb9", + "BTTPredefinedActionType" : 248, + "BTTPredefinedActionName" : "Trigger Named Trigger (Configured in Other Tab)", + "BTTNamedTriggerToTrigger" : "kb_overlay_set_defaults", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 3 + } + ], + "BTTGestureNotes" : "Show Lower layer", + "BTTKeySequence" : { + "BTTPauseBetween" : 0.29999999999999999, + "BTTKeyCount" : 8, + "BTTKeySequenceDownKeys" : [ + { + "BTTKEYCode" : 62, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 61, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + } + ], + "BTTKeySequenceMixedKeys" : [ + { + "BTTKEYCode" : 62, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 61, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 62, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 61, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYTime" : 732641216 + } + ], + "BTTKeySequenceUpKeys" : [ + { + "BTTKEYCode" : 62, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 61, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYTime" : 732641216 + } + ] + } + }, + + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : 624, + "BTTTriggerTypeDescriptionReadOnly" : "Please Select a Trigger ", + "BTTTriggerTypeDescription" : "Show Magic layer", + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "84d54a60-90d5-4332-900c-c159e32749f7", + "BTTPredefinedActionType" : 366, + "BTTPredefinedActionName" : "Empty Placeholder", + "BTTNotesInsteadOfDescription" : 1, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 19, + "BTTAdditionalActions" : [ + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "84d54a60-90d5-4332-900c-c159e32749f7", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeMagicMouse", + "BTTUUID" : "88333e54-2849-4e2e-b307-f01f7f4d43e2", + "BTTPredefinedActionType" : 352, + "BTTPredefinedActionName" : "Cancel Timed Action Sequence", + "BTTGenericActionConfig2" : "kb_overlay_timer", + "BTTGenericActionConfig" : "kb_overlay_hide_menu_delay_in_progress", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 0 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "84d54a60-90d5-4332-900c-c159e32749f7", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "5907fa03-8ee1-4157-9d71-17e28dba30d9", + "BTTPredefinedActionType" : 292, + "BTTPredefinedActionName" : "Assign\/Set Value for Variable", + "BTTGenericActionConfig2" : "magic-layer-diagram.png", + "BTTVariableName" : "kb_overlay_image_filename", + "BTTVariableValue" : "magic-layer-diagram.png", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 1 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "84d54a60-90d5-4332-900c-c159e32749f7", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "822ab64b-1540-418f-9be5-420feaadd70b", + "BTTPredefinedActionType" : 386, + "BTTPredefinedActionName" : "Show Floating Menu", + "BTTAdditionalActionData" : { + "BTTMenuActionMenuID" : "kb_overlay_menu" + }, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 2 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "84d54a60-90d5-4332-900c-c159e32749f7", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeMagicMouse", + "BTTUUID" : "db26676b-54bb-4aa0-9153-a34b3bbef222", + "BTTPredefinedActionType" : 248, + "BTTPredefinedActionName" : "Trigger Named Trigger (Configured in Other Tab)", + "BTTNamedTriggerToTrigger" : "kb_overlay_set_defaults", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 3 + } + ], + "BTTGestureNotes" : "Show Magic layer", + "BTTKeySequence" : { + "BTTPauseBetween" : 0.29999999999999999, + "BTTKeyCount" : 8, + "BTTKeySequenceDownKeys" : [ + { + "BTTKEYCode" : 62, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 61, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + } + ], + "BTTKeySequenceMixedKeys" : [ + { + "BTTKEYCode" : 62, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 61, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 62, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 61, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYTime" : 732641216 + } + ], + "BTTKeySequenceUpKeys" : [ + { + "BTTKEYCode" : 62, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 61, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYTime" : 732641216 + } + ] + } + }, + + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : 624, + "BTTTriggerTypeDescriptionReadOnly" : "Please Select a Trigger ", + "BTTTriggerTypeDescription" : "Show Mouse layer", + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "2e8cac4b-51a9-4e9f-937f-b9514b4f8f86", + "BTTPredefinedActionType" : 366, + "BTTPredefinedActionName" : "Empty Placeholder", + "BTTNotesInsteadOfDescription" : 1, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 19, + "BTTAdditionalActions" : [ + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "2e8cac4b-51a9-4e9f-937f-b9514b4f8f86", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeMagicMouse", + "BTTUUID" : "c7d19f57-9f6b-4752-8117-56e943e2d39c", + "BTTPredefinedActionType" : 352, + "BTTPredefinedActionName" : "Cancel Timed Action Sequence", + "BTTGenericActionConfig2" : "kb_overlay_timer", + "BTTGenericActionConfig" : "kb_overlay_hide_menu_delay_in_progress", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 0 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "2e8cac4b-51a9-4e9f-937f-b9514b4f8f86", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "bcd19bf8-b68a-44f7-a360-0db0c20b70a8", + "BTTPredefinedActionType" : 292, + "BTTPredefinedActionName" : "Assign\/Set Value for Variable", + "BTTGenericActionConfig2" : "mouse-layer-diagram.png", + "BTTVariableName" : "kb_overlay_image_filename", + "BTTVariableValue" : "mouse-layer-diagram.png", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 1 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "2e8cac4b-51a9-4e9f-937f-b9514b4f8f86", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "df9bf3cc-370f-4b80-aafb-90a0da322396", + "BTTPredefinedActionType" : 386, + "BTTPredefinedActionName" : "Show Floating Menu", + "BTTAdditionalActionData" : { + "BTTMenuActionMenuID" : "kb_overlay_menu" + }, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 2 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "2e8cac4b-51a9-4e9f-937f-b9514b4f8f86", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeMagicMouse", + "BTTUUID" : "4f30da43-95a3-4ae9-b528-9abf4eb8186a", + "BTTPredefinedActionType" : 248, + "BTTPredefinedActionName" : "Trigger Named Trigger (Configured in Other Tab)", + "BTTNamedTriggerToTrigger" : "kb_overlay_set_defaults", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 3 + } + ], + "BTTGestureNotes" : "Show Mouse layer", + "BTTKeySequence" : { + "BTTPauseBetween" : 0.29999999999999999, + "BTTKeyCount" : 8, + "BTTKeySequenceDownKeys" : [ + { + "BTTKEYCode" : 62, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 61, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + } + ], + "BTTKeySequenceMixedKeys" : [ + { + "BTTKEYCode" : 62, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 61, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 62, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 61, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYTime" : 732641216 + } + ], + "BTTKeySequenceUpKeys" : [ + { + "BTTKEYCode" : 62, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 61, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYTime" : 732641216 + } + ] + } + }, + + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : 624, + "BTTTriggerTypeDescriptionReadOnly" : "Please Select a Trigger ", + "BTTTriggerTypeDescription" : "Show Number layer", + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "2c6d0c65-8080-457f-9e20-70302c1d07bd", + "BTTPredefinedActionType" : 366, + "BTTPredefinedActionName" : "Empty Placeholder", + "BTTNotesInsteadOfDescription" : 1, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 19, + "BTTAdditionalActions" : [ + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "2c6d0c65-8080-457f-9e20-70302c1d07bd", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeMagicMouse", + "BTTUUID" : "bb325041-494d-42ad-976e-2e457c76a451", + "BTTPredefinedActionType" : 352, + "BTTPredefinedActionName" : "Cancel Timed Action Sequence", + "BTTGenericActionConfig2" : "kb_overlay_timer", + "BTTGenericActionConfig" : "kb_overlay_hide_menu_delay_in_progress", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 0 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "2c6d0c65-8080-457f-9e20-70302c1d07bd", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "7525c16f-13dd-4f28-b4e8-ff676207bdfe", + "BTTPredefinedActionType" : 292, + "BTTPredefinedActionName" : "Assign\/Set Value for Variable", + "BTTGenericActionConfig2" : "number-layer-diagram.png", + "BTTVariableName" : "kb_overlay_image_filename", + "BTTVariableValue" : "number-layer-diagram.png", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 1 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "2c6d0c65-8080-457f-9e20-70302c1d07bd", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "3f4399cf-027d-4ee7-acad-cc8ee88b7e9a", + "BTTPredefinedActionType" : 386, + "BTTPredefinedActionName" : "Show Floating Menu", + "BTTAdditionalActionData" : { + "BTTMenuActionMenuID" : "kb_overlay_menu" + }, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 2 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "2c6d0c65-8080-457f-9e20-70302c1d07bd", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeMagicMouse", + "BTTUUID" : "72cfbcd1-f243-456e-8012-aebba231affe", + "BTTPredefinedActionType" : 248, + "BTTPredefinedActionName" : "Trigger Named Trigger (Configured in Other Tab)", + "BTTNamedTriggerToTrigger" : "kb_overlay_set_defaults", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 3 + } + ], + "BTTGestureNotes" : "Show Number layer", + "BTTKeySequence" : { + "BTTPauseBetween" : 0.29999999999999999, + "BTTKeyCount" : 8, + "BTTKeySequenceDownKeys" : [ + { + "BTTKEYCode" : 62, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 61, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + } + ], + "BTTKeySequenceMixedKeys" : [ + { + "BTTKEYCode" : 62, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 61, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 62, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 61, + "BTTKEYTime" : 732641216 + } + ], + "BTTKeySequenceUpKeys" : [ + { + "BTTKEYCode" : 62, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 61, + "BTTKEYTime" : 732641216 + } + ] + } + }, + + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : 624, + "BTTTriggerTypeDescriptionReadOnly" : "Please Select a Trigger ", + "BTTTriggerTypeDescription" : "Show Symbol layer", + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "7cdd6dcf-ce69-4a7a-a484-aa118145b4f5", + "BTTPredefinedActionType" : 366, + "BTTPredefinedActionName" : "Empty Placeholder", + "BTTNotesInsteadOfDescription" : 1, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 19, + "BTTAdditionalActions" : [ + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "7cdd6dcf-ce69-4a7a-a484-aa118145b4f5", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeMagicMouse", + "BTTUUID" : "34728abf-de6a-4f15-b518-67004de39e6b", + "BTTPredefinedActionType" : 352, + "BTTPredefinedActionName" : "Cancel Timed Action Sequence", + "BTTGenericActionConfig2" : "kb_overlay_timer", + "BTTGenericActionConfig" : "kb_overlay_hide_menu_delay_in_progress", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 0 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "7cdd6dcf-ce69-4a7a-a484-aa118145b4f5", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "fc798957-b4e4-45a1-9eb6-6101fb165796", + "BTTPredefinedActionType" : 292, + "BTTPredefinedActionName" : "Assign\/Set Value for Variable", + "BTTGenericActionConfig2" : "symbol-layer-diagram.png", + "BTTVariableName" : "kb_overlay_image_filename", + "BTTVariableValue" : "symbol-layer-diagram.png", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 1 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "7cdd6dcf-ce69-4a7a-a484-aa118145b4f5", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "95945a71-e116-4a0f-bdbe-2f2ec014f124", + "BTTPredefinedActionType" : 386, + "BTTPredefinedActionName" : "Show Floating Menu", + "BTTAdditionalActionData" : { + "BTTMenuActionMenuID" : "kb_overlay_menu" + }, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 2 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "7cdd6dcf-ce69-4a7a-a484-aa118145b4f5", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeMagicMouse", + "BTTUUID" : "c3a41b6f-e591-41fd-bc88-becd65192874", + "BTTPredefinedActionType" : 248, + "BTTPredefinedActionName" : "Trigger Named Trigger (Configured in Other Tab)", + "BTTNamedTriggerToTrigger" : "kb_overlay_set_defaults", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 3 + } + ], + "BTTGestureNotes" : "Show Symbol layer", + "BTTKeySequence" : { + "BTTPauseBetween" : 0.29999999999999999, + "BTTKeyCount" : 8, + "BTTKeySequenceDownKeys" : [ + { + "BTTKEYCode" : 62, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 61, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + } + ], + "BTTKeySequenceMixedKeys" : [ + { + "BTTKEYCode" : 62, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 61, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 62, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 61, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYTime" : 732641216 + } + ], + "BTTKeySequenceUpKeys" : [ + { + "BTTKEYCode" : 62, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 61, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYTime" : 732641216 + } + ] + } + }, + + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : 624, + "BTTTriggerTypeDescriptionReadOnly" : "Please Select a Trigger ", + "BTTTriggerTypeDescription" : "Show System layer", + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "5909459b-6f44-45c3-985a-761bead5b04f", + "BTTPredefinedActionType" : 366, + "BTTPredefinedActionName" : "Empty Placeholder", + "BTTNotesInsteadOfDescription" : 1, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 19, + "BTTAdditionalActions" : [ + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "5909459b-6f44-45c3-985a-761bead5b04f", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeMagicMouse", + "BTTUUID" : "2ba5f5a5-9e78-4bb2-b55f-80e9064c9d9f", + "BTTPredefinedActionType" : 352, + "BTTPredefinedActionName" : "Cancel Timed Action Sequence", + "BTTGenericActionConfig2" : "kb_overlay_timer", + "BTTGenericActionConfig" : "kb_overlay_hide_menu_delay_in_progress", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 0 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "5909459b-6f44-45c3-985a-761bead5b04f", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "d9d04357-9dc5-41bf-a70f-0e2e45b7142d", + "BTTPredefinedActionType" : 292, + "BTTPredefinedActionName" : "Assign\/Set Value for Variable", + "BTTGenericActionConfig2" : "system-layer-diagram.png", + "BTTVariableName" : "kb_overlay_image_filename", + "BTTVariableValue" : "system-layer-diagram.png", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 1 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "5909459b-6f44-45c3-985a-761bead5b04f", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "ddfde1e0-4b90-420c-bc68-55ed39f7e0c6", + "BTTPredefinedActionType" : 386, + "BTTPredefinedActionName" : "Show Floating Menu", + "BTTAdditionalActionData" : { + "BTTMenuActionMenuID" : "kb_overlay_menu" + }, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 2 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "5909459b-6f44-45c3-985a-761bead5b04f", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeMagicMouse", + "BTTUUID" : "2405ef9e-56b9-4165-b43f-c1dc31923e69", + "BTTPredefinedActionType" : 248, + "BTTPredefinedActionName" : "Trigger Named Trigger (Configured in Other Tab)", + "BTTNamedTriggerToTrigger" : "kb_overlay_set_defaults", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 3 + } + ], + "BTTGestureNotes" : "Show System layer", + "BTTKeySequence" : { + "BTTPauseBetween" : 0.29999999999999999, + "BTTKeyCount" : 8, + "BTTKeySequenceDownKeys" : [ + { + "BTTKEYCode" : 62, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 61, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + } + ], + "BTTKeySequenceMixedKeys" : [ + { + "BTTKEYCode" : 62, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 61, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 62, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 61, + "BTTKEYTime" : 732641216 + } + ], + "BTTKeySequenceUpKeys" : [ + { + "BTTKEYCode" : 62, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 61, + "BTTKEYTime" : 732641216 + } + ] + } + }, + + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : 624, + "BTTTriggerTypeDescriptionReadOnly" : "Please Select a Trigger ", + "BTTTriggerTypeDescription" : "Show Typing layer", + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "0b0c23fe-f8c5-4a6c-924f-3f2a157bc85a", + "BTTPredefinedActionType" : 366, + "BTTPredefinedActionName" : "Empty Placeholder", + "BTTNotesInsteadOfDescription" : 1, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 19, + "BTTAdditionalActions" : [ + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "0b0c23fe-f8c5-4a6c-924f-3f2a157bc85a", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeMagicMouse", + "BTTUUID" : "58074be0-b752-41da-88df-d82093f2a818", + "BTTPredefinedActionType" : 352, + "BTTPredefinedActionName" : "Cancel Timed Action Sequence", + "BTTGenericActionConfig2" : "kb_overlay_timer", + "BTTGenericActionConfig" : "kb_overlay_hide_menu_delay_in_progress", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 0 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "0b0c23fe-f8c5-4a6c-924f-3f2a157bc85a", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "d58c9015-316c-4c21-b97f-fa74fd44fb14", + "BTTPredefinedActionType" : 292, + "BTTPredefinedActionName" : "Assign\/Set Value for Variable", + "BTTGenericActionConfig2" : "typing-layer-diagram.png", + "BTTVariableName" : "kb_overlay_image_filename", + "BTTVariableValue" : "typing-layer-diagram.png", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 1 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "0b0c23fe-f8c5-4a6c-924f-3f2a157bc85a", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "36b6d3c7-b5fa-4dc7-bdd4-ce5611a7c400", + "BTTPredefinedActionType" : 386, + "BTTPredefinedActionName" : "Show Floating Menu", + "BTTAdditionalActionData" : { + "BTTMenuActionMenuID" : "kb_overlay_menu" + }, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 2 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "0b0c23fe-f8c5-4a6c-924f-3f2a157bc85a", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeMagicMouse", + "BTTUUID" : "d4d5f79a-8e47-4d22-b6e3-ca4327e905d0", + "BTTPredefinedActionType" : 248, + "BTTPredefinedActionName" : "Trigger Named Trigger (Configured in Other Tab)", + "BTTNamedTriggerToTrigger" : "kb_overlay_set_defaults", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 3 + } + ], + "BTTGestureNotes" : "Show Typing layer", + "BTTKeySequence" : { + "BTTPauseBetween" : 0.29999999999999999, + "BTTKeyCount" : 8, + "BTTKeySequenceDownKeys" : [ + { + "BTTKEYCode" : 54, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 61, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 62, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + } + ], + "BTTKeySequenceMixedKeys" : [ + { + "BTTKEYCode" : 54, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 61, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 62, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 61, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 62, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYTime" : 732641216 + } + ], + "BTTKeySequenceUpKeys" : [ + { + "BTTKEYCode" : 54, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 61, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 62, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYTime" : 732641216 + } + ] + } + }, + + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : 624, + "BTTTriggerTypeDescriptionReadOnly" : "Please Select a Trigger ", + "BTTTriggerTypeDescription" : "Show World layer", + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "5d0cd059-2515-4664-916c-e35ee8b1345c", + "BTTPredefinedActionType" : 366, + "BTTPredefinedActionName" : "Empty Placeholder", + "BTTNotesInsteadOfDescription" : 1, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 19, + "BTTAdditionalActions" : [ + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "5d0cd059-2515-4664-916c-e35ee8b1345c", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeMagicMouse", + "BTTUUID" : "8b671202-416c-4150-9f3e-c9223bac875c", + "BTTPredefinedActionType" : 352, + "BTTPredefinedActionName" : "Cancel Timed Action Sequence", + "BTTGenericActionConfig2" : "kb_overlay_timer", + "BTTGenericActionConfig" : "kb_overlay_hide_menu_delay_in_progress", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 0 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "5d0cd059-2515-4664-916c-e35ee8b1345c", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "09d75816-f3d5-4101-82d5-b378bbb11ccc", + "BTTPredefinedActionType" : 292, + "BTTPredefinedActionName" : "Assign\/Set Value for Variable", + "BTTGenericActionConfig2" : "world-layer-diagram.png", + "BTTVariableName" : "kb_overlay_image_filename", + "BTTVariableValue" : "world-layer-diagram.png", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 1 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "5d0cd059-2515-4664-916c-e35ee8b1345c", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "67fbd6fe-2843-45b7-899d-978f4ea19a74", + "BTTPredefinedActionType" : 386, + "BTTPredefinedActionName" : "Show Floating Menu", + "BTTAdditionalActionData" : { + "BTTMenuActionMenuID" : "kb_overlay_menu" + }, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 2 + }, + { + "BTTLastUpdatedAt" : 1712189257.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "5d0cd059-2515-4664-916c-e35ee8b1345c", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeMagicMouse", + "BTTUUID" : "6b4557b1-f443-4f7f-a407-5382ea470cfe", + "BTTPredefinedActionType" : 248, + "BTTPredefinedActionName" : "Trigger Named Trigger (Configured in Other Tab)", + "BTTNamedTriggerToTrigger" : "kb_overlay_set_defaults", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 3 + } + ], + "BTTGestureNotes" : "Show World layer", + "BTTKeySequence" : { + "BTTPauseBetween" : 0.29999999999999999, + "BTTKeyCount" : 8, + "BTTKeySequenceDownKeys" : [ + { + "BTTKEYCode" : 54, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 61, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 62, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + } + ], + "BTTKeySequenceMixedKeys" : [ + { + "BTTKEYCode" : 54, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 61, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 62, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 54, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 61, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 62, + "BTTKEYTime" : 732641216 + } + ], + "BTTKeySequenceUpKeys" : [ + { + "BTTKEYCode" : 54, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 61, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 60, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : 62, + "BTTKEYTime" : 732641216 + } + ] + } + }, + + { + "BTTLastUpdatedAt" : 1711659021.8074579, + "BTTTriggerConditionsFormatReadOnly" : "kb_overlay_show_base_layer == 0", + "BTTTriggerConditionsData" : "YnBsaXN0MDDUAQIDBAUGBwpYJHZlcnNpb25ZJGFyY2hpdmVyVCR0b3BYJG9iamVjdHMSAAGGoF8QD05TS2V5ZWRBcmNoaXZlctEICVRyb290gAGvEBYLDBMYICorLTQ4PT5BRUlOT1JaXmJkVSRudWxs0w0ODxAREl8QF05TQ29tcG91bmRQcmVkaWNhdGVUeXBlXxAPTlNTdWJwcmVkaWNhdGVzViRjbGFzcxABgAKAFdIUDxUXWk5TLm9iamVjdHOhFoADgBTUDxkaGxwdHh9fEBFOU1JpZ2h0RXhwcmVzc2lvbl8QEE5TTGVmdEV4cHJlc3Npb25fEBNOU1ByZWRpY2F0ZU9wZXJhdG9ygBOADoAEgBHVISIjJA8lJicoKVlOU09wZXJhbmReTlNTZWxlY3Rvck5hbWVfEBBOU0V4cHJlc3Npb25UeXBlW05TQXJndW1lbnRzgAaABRADgAiADVx2YWx1ZUZvcktleTrSIw8QLIAH0i4vMDFaJGNsYXNzbmFtZVgkY2xhc3Nlc18QEE5TU2VsZkV4cHJlc3Npb26jMDIzXE5TRXhwcmVzc2lvblhOU09iamVjdNIUDzU3oTaACYAM0w8jOTo7PFlOU0tleVBhdGiACxAKgApfEBprYl9vdmVybGF5X3Nob3dfYmFzZV9sYXllctIuLz9AXxAcTlNLZXlQYXRoU3BlY2lmaWVyRXhwcmVzc2lvbqM_MjPSLi9CQ15OU011dGFibGVBcnJheaNCRDNXTlNBcnJhedIuL0ZHXxATTlNLZXlQYXRoRXhwcmVzc2lvbqRGSDIzXxAUTlNGdW5jdGlvbkV4cHJlc3Npb27TSiMPS0xNXxAPTlNDb25zdGFudFZhbHVlgA8QAIAQIwAAAAAAAAAA0i4vUFFfEBlOU0NvbnN0YW50VmFsdWVFeHByZXNzaW9uo1AyM9UPU1RVVldMWExZWk5TTW9kaWZpZXJYTlNOZWdhdGVZTlNPcHRpb25zXk5TT3BlcmF0b3JUeXBlgBIIEATSLi9bXF8QG05TRXF1YWxpdHlQcmVkaWNhdGVPcGVyYXRvcqNbXTNfEBNOU1ByZWRpY2F0ZU9wZXJhdG9y0i4vX2BfEBVOU0NvbXBhcmlzb25QcmVkaWNhdGWjX2EzW05TUHJlZGljYXRl0i4vRGOiRDPSLi9lZl8QE05TQ29tcG91bmRQcmVkaWNhdGWjZWEzAAgAEQAaACQAKQAyADcASQBMAFEAUwBsAHIAeQCTAKUArACuALAAsgC3AMIAxADGAMgA0QDlAPgBDgEQARIBFAEWASEBKwE6AU0BWQFbAV0BXwFhAWMBcAF1AXcBfAGHAZABowGnAbQBvQHCAcQBxgHIAc8B2QHbAd0B3wH8AgECIAIkAikCOAI8AkQCSQJfAmQCewKCApQClgKYApoCowKoAsQCyALTAt4C5wLxAwADAgMDAwUDCgMoAywDQgNHA18DYwNvA3QDdwN8A5IAAAAAAAACAQAAAAAAAABnAAAAAAAAAAAAAAAAAAADlg==", + "BTTTriggerType" : 624, + "BTTTriggerTypeDescriptionReadOnly" : "Please Select a Trigger ", + "BTTTriggerTypeDescription" : "Hide floating menu if kb_overlay_show_base_layer is 0", + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "1F8B57B8-C427-4453-A983-7D04EDF11490", + "BTTPredefinedActionType" : 366, + "BTTPredefinedActionName" : "Empty Placeholder", + "BTTNotesInsteadOfDescription" : 1, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 22, + "BTTAdditionalActions" : [ + { + "BTTLastUpdatedAt" : 1711659021.807816, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "1F8B57B8-C427-4453-A983-7D04EDF11490", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "D7B2209B-C2CD-463B-8D62-EBD9DC623471", + "BTTPredefinedActionType" : 352, + "BTTPredefinedActionName" : "Cancel Timed Action Sequence", + "BTTGenericActionConfig2" : "kb_overlay_timer", + "BTTGenericActionConfig" : "kb_overlay_hide_menu_delay_in_progress", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 0 + }, + { + "BTTLastUpdatedAt" : 1711659021.808121, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "1F8B57B8-C427-4453-A983-7D04EDF11490", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "80ADF514-3257-42B4-85EA-EE8C090A241B", + "BTTPredefinedActionType" : 387, + "BTTPredefinedActionName" : "Hide Floating Menu", + "BTTAdditionalActionData" : { + "BTTMenuActionMenuID" : "kb_overlay_menu" + }, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 1 + } + ], + "BTTGestureNotes" : "Hide floating menu if kb_overlay_show_base_layer is 0", + "BTTKeySequence" : { + "BTTPauseBetween" : 0.29999999999999999, + "BTTKeyCount" : 2, + "BTTKeySequenceDownKeys" : [ + { + "BTTKEYCharacter" : " F18", + "BTTKEYCode" : 79, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 733351744 + } + ], + "BTTKeySequenceMixedKeys" : [ + { + "BTTKEYCharacter" : " F18", + "BTTKEYCode" : 79, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 733351744 + }, + { + "BTTKEYCharacter" : " F18", + "BTTKEYCode" : 79, + "BTTKEYTime" : 733351744 + } + ], + "BTTKeySequenceUpKeys" : [ + { + "BTTKEYCharacter" : " F18", + "BTTKEYCode" : 79, + "BTTKEYTime" : 733351744 + } + ] + } + }, + { + "BTTLastUpdatedAt" : 1711752279.6600208, + "BTTTriggerType" : 643, + "BTTTriggerTypeDescriptionReadOnly" : "Named Trigger: kb_overlay_set_defaults", + "BTTTriggerTypeDescription" : "Glove80 Engrammer Keyboard Overlay: Set Defaults", + "BTTTriggerClass" : "BTTTriggerTypeOtherTriggers", + "BTTUUID" : "7C7FBF0F-61CB-4637-BBD9-D234BE31763C", + "BTTPredefinedActionType" : 366, + "BTTPredefinedActionName" : "Empty Placeholder", + "BTTTriggerName" : "kb_overlay_set_defaults", + "BTTNotesInsteadOfDescription" : 1, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 14, + "BTTAdditionalActions" : [ + { + "BTTLastUpdatedAt" : 1711752047.691529, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "7C7FBF0F-61CB-4637-BBD9-D234BE31763C", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeOtherTriggers", + "BTTUUID" : "04C747A9-75D4-4415-A3FE-9C89B11A0FF6", + "BTTPredefinedActionType" : 292, + "BTTPredefinedActionName" : "Assign\/Set Value for Variable", + "BTTGenericActionConfig2" : "1", + "BTTVariablePersist" : "1", + "BTTVariableType" : 1, + "BTTVariableName" : "kb_overlay_show_base_layer", + "BTTVariableValue" : "1", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 0 + }, + { + "BTTLastUpdatedAt" : 1711752210.10355, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "7C7FBF0F-61CB-4637-BBD9-D234BE31763C", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeOtherTriggers", + "BTTUUID" : "4B6B2609-2297-44DF-A644-ECE2689D47BB", + "BTTPredefinedActionType" : 292, + "BTTPredefinedActionName" : "Assign\/Set Value for Variable", + "BTTGenericActionConfig2" : "10", + "BTTVariablePersist" : "1", + "BTTVariableType" : 1, + "BTTVariableName" : "kb_overlay_base_layer_timeout_seconds-not-yet-working-instead-modify-key-sequence-action", + "BTTVariableValue" : "10", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 2 + }, + { + "BTTLastUpdatedAt" : 1711752210.1035109, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "7C7FBF0F-61CB-4637-BBD9-D234BE31763C", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeOtherTriggers", + "BTTUUID" : "6F741E6D-1D06-4503-8336-01CAABB92EA7", + "BTTPredefinedActionType" : 292, + "BTTPredefinedActionName" : "Assign\/Set Value for Variable", + "BTTGenericActionConfig2" : "0.2", + "BTTVariablePersist" : "1", + "BTTVariableType" : 1, + "BTTVariableName" : "kb_overlay_opacity", + "BTTVariableValue" : "0.2", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 3 + }, + { + "BTTLastUpdatedAt" : 1711752210.1035571, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "7C7FBF0F-61CB-4637-BBD9-D234BE31763C", + "BTTIsPureAction" : true, + "BTTUUID" : "7B922C18-9110-444E-8EA8-F4BD11E5D687", + "BTTPredefinedActionType" : 292, + "BTTPredefinedActionName" : "Assign\/Set Value for Variable", + "BTTGenericActionConfig2" : "https:\/\/raw.githubusercontent.com\/sunaku\/glove80-keymaps\/main\/README\/", + "BTTVariablePersist" : "1", + "BTTVariableType" : 0, + "BTTVariableName" : "kb_overlay_image_base_path", + "BTTVariableValue" : "https:\/\/raw.githubusercontent.com\/sunaku\/glove80-keymaps\/main\/README\/", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 4 + } + ], + "BTTGestureNotes" : "Glove80 Engrammer Keyboard Overlay: Set Defaults" + }, + { + "BTTLastUpdatedAt" : 1711751200.3615839, + "BTTTriggerType" : 767, + "BTTTriggerTypeDescriptionReadOnly" : "Floating Menu", + "BTTTriggerClass" : "BTTTriggerTypeFloatingMenu", + "BTTUUID" : "53E04A53-DB06-45D9-A15E-795F81561768", + "BTTAdditionalConfiguration" : "Floating Menu: kb_overlay_menu", + "BTTEnabled" : 1, + "BTTOrder" : 24, + "BTTTriggerName" : "Floating Menu: kb_overlay_menu", + "BTTMenuItems" : [ + { + "BTTLastUpdatedAt" : 1711751200.3616009, + "BTTTriggerType" : 778, + "BTTTriggerTypeDescriptionReadOnly" : "Web View \/ HTML Item", + "BTTTriggerTypeDescription" : "Standard Item", + "BTTTriggerParentUUID" : "53E04A53-DB06-45D9-A15E-795F81561768", + "BTTTriggerClass" : "BTTTriggerTypeFloatingMenu", + "BTTUUID" : "483F52F4-AF2D-4671-9CA5-AE8B1B5064C9", + "BTTAdditionalConfiguration" : "Webview Menu Item: kb_overlay_image_html_menu_item", + "BTTEnabled" : 1, + "BTTOrder" : 0, + "BTTTriggerName" : "Webview Menu Item: kb_overlay_image_html_menu_item", + "BTTMenuConfig" : { + "BTTMenuItemBorderColorDark" : "255.000000, 255.000000, 255.000000, 255.000000", + "BTTMenuItemIconColor1" : "255.000000, 255.000000, 255.000000, 255.000000", + "BTTMenuItemBackgroundColor" : "108.442, 96.000, 190.435, 166.991", + "BTTMenuItemBackgroundType" : 0, + "BTTMenuItemBlurredBackground" : 0, + "BTTMenuSelectedTab" : 3, + "BTTMenuItemMaxHeight" : 1000, + "BTTMenuHoverEndAnimationDuration" : 0.14999999999999999, + "BTTMenuItemMaxWidth" : 1408, + "BTTMenuCategoryItemIcon" : 1, + "BTTMenuCategoryShadow" : 1, + "BTTLastChangeUUID" : "7795E2C2-2C9F-48B1-AAB8-B47BEF5AFBA3", + "BTTMenuItemBorderColorHover" : "255.000000, 255.000000, 255.000000, 255.000000", + "BTTMenuItemBorderColor" : "255.000000, 255.000000, 255.000000, 255.000000", + "BTTMenuItemMinHeight" : 0, + "BTTMenuItemBackgroundColorDark" : "108.442, 96.000, 190.435, 166.991", + "BTTMenuItemVisibleWhileActive" : 1, + "BTTMenuElementIdentifier" : "kb_overlay_image_html_menu_item", + "BTTMenuItemVisibleWhileInactive" : 1, + "BTTMenuItemMinWidth" : 0, + "BTTMenuItemBackgroundTypeDark" : 4, + "BTTMenuItemKeepActiveInBackground" : 1, + "BTTMenuAttributedText" : "{\\rtf1\\ansi\\ansicpg1252\\cocoartf2761\n\\cocoatextscaling0\\cocoaplatform0{\\fonttbl\\f0\\fnil\\fcharset0 HelveticaNeue;}\n{\\colortbl;\\red255\\green255\\blue255;\\red255\\green255\\blue255;}\n{\\*\\expandedcolortbl;;\\csgray\\c100000;}\n\\pard\\tx560\\tx1120\\tx1680\\tx2240\\tx2800\\tx3360\\tx3920\\tx4480\\tx5040\\tx5600\\tx6160\\tx6720\\pardirnatural\\qc\\partightenfactor0\n\n\\f0\\fs50 \\cf2 Test}", + "BTTMenuItemShadowEnabled" : 0, + "BTTMenuItemBorderColorHoverDark" : "255.000000, 255.000000, 255.000000, 255.000000", + "BTTMenuItemText" : "presetfile:\/\/\/glove80\/index.html", + "BTTMenuAppearanceStyle" : 0, + "BTTMenuItemBackgroundColorHover" : "90, 90.000, 180, 166.991", + "BTTMenuAlwaysUseLightMode" : 1, + "BTTMenuCategoryBackground" : 1, + "BTTMenuItemUserScriptOnVisible" : "", + "BTTMenuCategoryItemSizing" : 1, + "BTTMenuCategoryBorder" : 1, + "BTTMenuHoverStartAnimationDuration" : 0.14999999999999999, + "BTTMenuItemBackgroundColorHoverDark" : "90, 90.000, 180, 166.991" + }, + "BTTMenuAvailability" : 0, + "BTTMenuName" : "kb_overlay_image_html_menu_item", + "BTTGestureNotes" : "Standard Item" + } + ], + "BTTMenuConfig" : { + "BTTMenuVerticalSpacing" : 5, + "BTTMenuItemToggleVisibilityNow" : null, + "BTTMenuHorizontalSpacing" : 5, + "BTTMenuItemBackgroundColor" : "168.213, 183.731, 225.311, 29.612", + "BTTMenuFrameHeight" : 501, + "BTTMenuWindowLevel" : 3, + "BTTMenuItemBackgroundType" : 4, + "BTTMenuFrameWidth" : 1180, + "BTTMenuAnchorRelation" : 3, + "BTTMenuItemBlurredBackground" : 0, + "BTTMenuItemPaddingLeft" : 10, + "BTTMenuTitleBarStyle" : 0, + "BTTMenuAnchorMenu" : 3, + "BTTMenuCategoryMenuVisibility" : 1, + "BTTMenuItemPaddingTop" : 5, + "BTTMenuItemBorderWidth" : 2, + "BTTMenuCategoryShadow" : 0, + "BTTMenuClickThroughEverywhere" : 1, + "BTTMenuCategoryOnlyShowIf" : 0, + "BTTMenuItemCornerRadius" : 10, + "BTTLastChangeUUID" : "801CB43A-E513-4D09-8AA6-DC577B63A7C7", + "BTTMenuItemBorderColorHover" : "0.000, 0.000, 0.000, 0.000", + "BTTMenuCategoryModifiers" : 0, + "BTTMenuShowIfWindowLevelEqualsEnabled" : 0, + "BTTMenuItemBorderColor" : "0.000, 0.000, 0.000, 0.000", + "BTTMenuPositionRelativeTo" : 1, + "BTTMenuCategorySize" : 1, + "BTTMenuPositioningType" : 1, + "BTTMenuItemsUseModifierModes" : false, + "BTTMenuElementIdentifier" : "kb_overlay_menu", + "BTTMenuItemPaddingRight" : 10, + "BTTMenuClickThroughEmptyParts" : 1, + "BTTMenuCloseOnOutsideClick" : 0, + "BTTMenuCategorySpacing" : 0, + "BTTMenuItemShadowEnabled" : 0, + "BTTMenuLayoutDirection" : 2, + "BTTMenuAppearanceStyle" : 0, + "BTTMenuItemPaddingBottom" : 5, + "BTTMenuAlwaysUseLightMode" : 1, + "BTTMenuCategoryBackground" : 1, + "BTTMenuVisibility" : 1, + "BTTMenuWindowResizable" : 0, + "BTTMenuCategoryBorder" : 0, + "BTTMenuCategoryPosition" : 1, + "BTTMenuCategoryZIndex" : 1, + "BTTMenuCloseAfterAction" : 0, + "BTTMenuItemSaveCurrentSize" : null + }, + "BTTMenuAvailability" : 0, + "BTTMenuName" : "kb_overlay_menu" + }, + { + "BTTLastUpdatedAt" : 1711752047.6915932, + "BTTTriggerConditionsFormatReadOnly" : "kb_overlay_show_base_layer != 0", + "BTTTriggerConditionsData" : "YnBsaXN0MDDUAQIDBAUGBwpYJHZlcnNpb25ZJGFyY2hpdmVyVCR0b3BYJG9iamVjdHMSAAGGoF8QD05TS2V5ZWRBcmNoaXZlctEICVRyb290gAGvEBYLDBMYICorLTQ4PT5BRUlOT1JaXmJkVSRudWxs0w0ODxAREl8QF05TQ29tcG91bmRQcmVkaWNhdGVUeXBlXxAPTlNTdWJwcmVkaWNhdGVzViRjbGFzcxABgAKAFdIUDxUXWk5TLm9iamVjdHOhFoADgBTUDxkaGxwdHh9fEBFOU1JpZ2h0RXhwcmVzc2lvbl8QEE5TTGVmdEV4cHJlc3Npb25fEBNOU1ByZWRpY2F0ZU9wZXJhdG9ygBOADoAEgBHVISIjJA8lJicoKVlOU09wZXJhbmReTlNTZWxlY3Rvck5hbWVfEBBOU0V4cHJlc3Npb25UeXBlW05TQXJndW1lbnRzgAaABRADgAiADVx2YWx1ZUZvcktleTrSIw8QLIAH0i4vMDFaJGNsYXNzbmFtZVgkY2xhc3Nlc18QEE5TU2VsZkV4cHJlc3Npb26jMDIzXE5TRXhwcmVzc2lvblhOU09iamVjdNIUDzU3oTaACYAM0w8jOTo7PFlOU0tleVBhdGiACxAKgApfEBprYl9vdmVybGF5X3Nob3dfYmFzZV9sYXllctIuLz9AXxAcTlNLZXlQYXRoU3BlY2lmaWVyRXhwcmVzc2lvbqM_MjPSLi9CQ15OU011dGFibGVBcnJheaNCRDNXTlNBcnJhedIuL0ZHXxATTlNLZXlQYXRoRXhwcmVzc2lvbqRGSDIzXxAUTlNGdW5jdGlvbkV4cHJlc3Npb27TSiMPS0xNXxAPTlNDb25zdGFudFZhbHVlgA8QAIAQIwAAAAAAAAAA0i4vUFFfEBlOU0NvbnN0YW50VmFsdWVFeHByZXNzaW9uo1AyM9UPU1RVVldMWExZWk5TTW9kaWZpZXJYTlNOZWdhdGVZTlNPcHRpb25zXk5TT3BlcmF0b3JUeXBlgBIJEAXSLi9bXF8QG05TRXF1YWxpdHlQcmVkaWNhdGVPcGVyYXRvcqNbXTNfEBNOU1ByZWRpY2F0ZU9wZXJhdG9y0i4vX2BfEBVOU0NvbXBhcmlzb25QcmVkaWNhdGWjX2EzW05TUHJlZGljYXRl0i4vRGOiRDPSLi9lZl8QE05TQ29tcG91bmRQcmVkaWNhdGWjZWEzAAgAEQAaACQAKQAyADcASQBMAFEAUwBsAHIAeQCTAKUArACuALAAsgC3AMIAxADGAMgA0QDlAPgBDgEQARIBFAEWASEBKwE6AU0BWQFbAV0BXwFhAWMBcAF1AXcBfAGHAZABowGnAbQBvQHCAcQBxgHIAc8B2QHbAd0B3wH8AgECIAIkAikCOAI8AkQCSQJfAmQCewKCApQClgKYApoCowKoAsQCyALTAt4C5wLxAwADAgMDAwUDCgMoAywDQgNHA18DYwNvA3QDdwN8A5IAAAAAAAACAQAAAAAAAABnAAAAAAAAAAAAAAAAAAADlg==", + "BTTTriggerType" : 624, + "BTTTriggerTypeDescriptionReadOnly" : "Please Select a Trigger ", + "BTTTriggerTypeDescription" : "Show base kb layer for n seconds", + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "9BC62EDD-A5E3-4EFE-9754-11EF3D37A452", + "BTTPredefinedActionType" : 248, + "BTTPredefinedActionName" : "Trigger Named Trigger (Configured in Other Tab)", + "BTTNamedTriggerToTrigger" : "(KB Overlay) Show base kb layer for n seconds", + "BTTNotesInsteadOfDescription" : 1, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 21, + "BTTGestureNotes" : "Show base kb layer for n seconds", + "BTTKeySequence" : { + "BTTPauseBetween" : 0.29999999999999999, + "BTTKeyCount" : 2, + "BTTKeySequenceDownKeys" : [ + { + "BTTKEYCharacter" : " F18", + "BTTKEYCode" : 79, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1 + } + ], + "BTTKeySequenceMixedKeys" : [ + { + "BTTKEYCharacter" : " F18", + "BTTKEYCode" : 79, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1 + }, + { + "BTTKEYCharacter" : " F18", + "BTTKEYCode" : 79 + } + ], + "BTTKeySequenceUpKeys" : [ + { + "BTTKEYCharacter" : " F18", + "BTTKEYCode" : 79 + } + ] + } + } + ] + }, + { + "BTTAppBundleIdentifier" : "com.apple.finder", + "BTTAppName" : "Finder", + "BTTAppAutoInvertIcon" : 1, + "BTTTriggers" : [ + + ] + }, + { + "BTTAppBundleIdentifier" : "BT.L", + "BTTAppName" : "Recently Used", + "BTTAppAutoInvertIcon" : 1, + "BTTTriggers" : [ + + ] + } + ], + "BTTPresetSnapAreas" : [ + + ] +} diff --git a/layer-indicator/macos/BetterTouchTool/presetjson.bttpreset.erb b/layer-indicator/macos/BetterTouchTool/presetjson.bttpreset.erb new file mode 100644 index 0000000..1fab051 --- /dev/null +++ b/layer-indicator/macos/BetterTouchTool/presetjson.bttpreset.erb @@ -0,0 +1,792 @@ +<% require 'securerandom' %> +{ + "BTTPresetCreatorNotes" : "v36", + "BTTPresetInfoURL" : "https://github.com/sunaku/glove80-keymaps?tab=readme-ov-file", + "BTTPresetName" : "Glove80 Engrammer Keyboard Overlay", + "BTTPresetColor" : "208.445309, 152.715401, 0.000000, 255.000000", + "BTTPresetUUID" : "7CB65006-2E9A-42CB-A012-798551F6C827", + "BTTPresetContent" : [ + { + "BTTAppBundleIdentifier" : "BT.G", + "BTTAppName" : "Global", + "BTTAppAutoInvertIcon" : 1, + "BTTAppSpecificSettings" : { + "BTTDisableGlobalTriggers" : false + }, + "BTTTriggers" : [ + { + "BTTLastUpdatedAt" : <%= Time.now.to_i %>.0, + "BTTTriggerType" : 643, + "BTTTriggerTypeDescriptionReadOnly" : "Named Trigger: (KB Overlay) Show base kb layer for n seconds", + "BTTTriggerTypeDescription" : "(KB Overlay) Show base kb layer for n seconds", + "BTTTriggerClass" : "BTTTriggerTypeOtherTriggers", + "BTTUUID" : "252866E3-9327-4C48-9CE1-4A29A0D632C4", + "BTTPredefinedActionType" : 366, + "BTTPredefinedActionName" : "Empty Placeholder", + "BTTTriggerName" : "(KB Overlay) Show base kb layer for n seconds", + "BTTNotesInsteadOfDescription" : 1, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 13, + "BTTAdditionalActions" : [ + { + "BTTLastUpdatedAt" : <%= Time.now.to_i %>.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "252866E3-9327-4C48-9CE1-4A29A0D632C4", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeOtherTriggers", + "BTTUUID" : "A19F5C80-8A73-46AA-BDA6-6AFB5C91EFA1", + "BTTPredefinedActionType" : 292, + "BTTPredefinedActionName" : "Assign\/Set Value for Variable", + "BTTGenericActionConfig2" : "base-layer-diagram.png", + "BTTVariableName" : "kb_overlay_image_filename", + "BTTVariableValue" : "base-layer-diagram.png", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 0 + }, + { + "BTTLastUpdatedAt" : <%= Time.now.to_i %>.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "252866E3-9327-4C48-9CE1-4A29A0D632C4", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeOtherTriggers", + "BTTUUID" : "81146CB9-9AB3-4CA6-8A56-8943C3EA10FD", + "BTTPredefinedActionType" : 352, + "BTTPredefinedActionName" : "Cancel Timed Action Sequence", + "BTTGenericActionConfig2" : "kb_overlay_timer", + "BTTGenericActionConfig" : "kb_overlay_hide_menu_delay_in_progress", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 1 + }, + { + "BTTLastUpdatedAt" : <%= Time.now.to_i %>.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "252866E3-9327-4C48-9CE1-4A29A0D632C4", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeMagicMouse", + "BTTUUID" : "DFCDFECB-53F4-41EF-8561-63FDD850BC37", + "BTTPredefinedActionType" : 386, + "BTTPredefinedActionName" : "Show Floating Menu", + "BTTAdditionalActionData" : { + "BTTMenuActionMenuID" : "kb_overlay_menu" + }, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 2 + }, + { + "BTTLastUpdatedAt" : <%= Time.now.to_i %>.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "252866E3-9327-4C48-9CE1-4A29A0D632C4", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeMagicMouse", + "BTTUUID" : "52DFDB12-4B71-4633-ADBB-C6DFF920EF4B", + "BTTPredefinedActionType" : 248, + "BTTPredefinedActionName" : "Trigger Named Trigger (Configured in Other Tab)", + "BTTNamedTriggerToTrigger" : "kb_overlay_set_defaults", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 3 + }, + { + "BTTLastUpdatedAt" : <%= Time.now.to_i %>.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "252866E3-9327-4C48-9CE1-4A29A0D632C4", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeOtherTriggers", + "BTTUUID" : "CEA086E2-F485-474A-BD64-6975C1CAF51F", + "BTTPredefinedActionType" : 351, + "BTTPredefinedActionName" : "Execute Action Sequence after Timeout \/ Delay", + "BTTGenericActionConfig2" : "kb_overlay_timer", + "BTTGenericActionConfig" : "10", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 4, + "BTTAdditionalActions" : [ + { + "BTTLastUpdatedAt" : <%= Time.now.to_i %>.0, + "BTTTriggerType" : 740, + "BTTTriggerTypeDescriptionReadOnly" : "Assign actions to trigger after timeout \/ delay", + "BTTTriggerParentUUID" : "CEA086E2-F485-474A-BD64-6975C1CAF51F", + "BTTTriggerClass" : "BTTTriggerTypeCustomActionConfig", + "BTTUUID" : "F211D3F1-E39C-4914-86BF-3EFD542626EC", + "BTTPredefinedActionType" : 366, + "BTTPredefinedActionName" : "Empty Placeholder", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 0, + "BTTAdditionalActions" : [ + { + "BTTLastUpdatedAt" : <%= Time.now.to_i %>.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "F211D3F1-E39C-4914-86BF-3EFD542626EC", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeCustomActionConfig", + "BTTUUID" : "F521C2BB-5FF1-4C44-9468-4C7A2653D0E7", + "BTTPredefinedActionType" : 387, + "BTTPredefinedActionName" : "Hide Floating Menu", + "BTTAdditionalActionData" : { + "BTTMenuActionMenuID" : "kb_overlay_menu" + }, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 8 + } + ] + } + ] + } + ], + "BTTGestureNotes" : "(KB Overlay) Show base kb layer for n seconds" + }, + { + "BTTLastUpdatedAt" : <%= Time.now.to_i %>.0, + "BTTTriggerType" : 0, + "BTTTriggerClass" : "BTTTriggerTypeKeyboardShortcut", + "BTTUUID" : "56617366-960E-4F96-8C17-A0B33930FBF1", + "BTTPredefinedActionType" : 366, + "BTTPredefinedActionName" : "Empty Placeholder", + "BTTAdditionalConfiguration" : "1835049", + "BTTKeyboardShortcutScope" : 0, + "BTTKeyboardShortcutKeyboardType" : 5825, + "BTTTriggerOnDown" : 1, + "BTTLayoutIndependentChar" : "b", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTShortcutKeyCode" : 11, + "BTTShortcutModifierKeys" : 1835008, + "BTTOrder" : 4, + "BTTAutoAdaptToKeyboardLayout" : 0, + "BTTAdditionalActions" : [ + { + "BTTLastUpdatedAt" : <%= Time.now.to_i %>.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "56617366-960E-4F96-8C17-A0B33930FBF1", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeKeyboardShortcut", + "BTTUUID" : "1561809D-9217-4AFD-B9CC-0FE519273286", + "BTTPredefinedActionType" : 248, + "BTTPredefinedActionName" : "Trigger Named Trigger (Configured in Other Tab)", + "BTTNamedTriggerToTrigger" : "(KB Overlay) Show base kb layer for n seconds", + "BTTKeyboardShortcutKeyboardType" : 0, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTShortcutKeyCode" : -1, + "BTTShortcutModifierKeys" : -1, + "BTTOrder" : 13, + "BTTAutoAdaptToKeyboardLayout" : 0 + } + ], + "BTTTriggerConfig" : { + "BTTHUDText" : "sdf" + } + }, + { + "BTTLastUpdatedAt" : <%= Time.now.to_i %>.0, + "BTTTriggerType" : 0, + "BTTTriggerClass" : "BTTTriggerTypeKeyboardShortcut", + "BTTUUID" : "450FEB02-AFDB-4D4B-8067-F448815572B4", + "BTTPredefinedActionType" : 366, + "BTTPredefinedActionName" : "Empty Placeholder", + "BTTAdditionalConfiguration" : "8388608", + "BTTKeyboardShortcutKeyboardType" : 5825, + "BTTTriggerOnDown" : 1, + "BTTLayoutIndependentChar" : "F18", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTShortcutKeyCode" : 79, + "BTTShortcutModifierKeys" : 8388608, + "BTTOrder" : 5, + "BTTAutoAdaptToKeyboardLayout" : 0, + "BTTGestureNotes" : "Consume KB overlay Function key (prevents OS interaction)" + }, + <% + # List of indicator layers that have diagrams. This name matches the diagram file convention - -layer-diagram.png + # PR QUESTION: Is this list already in a variable somewhere? + # PR QUESTION: this is duplicated in layer-indicator/macos/BetterTouchTool/presetjson.bttpreset.erb. Any idea for reuse rather than duplication? + OVERLAY_INDICATOR_LAYERS = %w[ + base + cursor + emoji + factory + function + gaming + lower + magic + mouse + number + symbol + system + typing + world + ] + OVERLAY_INDICATOR_MODS = %w[ + RALT + RCTL + RGUI + RSFT + ] + OVERLAY_INDICATOR_MODS_PERMUTATIONS = OVERLAY_INDICATOR_MODS.permutation + # produces [RALT RCTL RGUI RSFT], [RALT RCTL RSFT RGUI], ... (24 unique sequences) + + %> + <% + btt_code_by_mod_hash = { + "RALT": 61, + "RCTL": 62, + "RGUI": 54, + "RSFT": 60 + } + OVERLAY_INDICATOR_MODS_PERMUTATIONS.each_with_index do |mod_sequence, mod_sequence_index| + # Note: at most this supports 24 different layers. It will just not make macros for any 25th, 26th layer in OVERLAY_INDICATOR_LAYERS + if mod_sequence_index < OVERLAY_INDICATOR_LAYERS.size + indicator_layer_name = OVERLAY_INDICATOR_LAYERS[mod_sequence_index] + btt_uuid = SecureRandom.uuid + %> + { + "BTTLastUpdatedAt" : <%= Time.now.to_i %>.0, + "BTTTriggerType" : 624, + "BTTTriggerTypeDescriptionReadOnly" : "Please Select a Trigger ", + "BTTTriggerTypeDescription" : "Show <%= indicator_layer_name.capitalize %> layer", + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "<%= btt_uuid %>", + "BTTPredefinedActionType" : 366, + "BTTPredefinedActionName" : "Empty Placeholder", + "BTTNotesInsteadOfDescription" : 1, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 19, + "BTTAdditionalActions" : [ + { + "BTTLastUpdatedAt" : <%= Time.now.to_i %>.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "<%= btt_uuid %>", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeMagicMouse", + "BTTUUID" : "<%= SecureRandom.uuid %>", + "BTTPredefinedActionType" : 352, + "BTTPredefinedActionName" : "Cancel Timed Action Sequence", + "BTTGenericActionConfig2" : "kb_overlay_timer", + "BTTGenericActionConfig" : "kb_overlay_hide_menu_delay_in_progress", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 0 + }, + { + "BTTLastUpdatedAt" : <%= Time.now.to_i %>.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "<%= btt_uuid %>", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "<%= SecureRandom.uuid %>", + "BTTPredefinedActionType" : 292, + "BTTPredefinedActionName" : "Assign\/Set Value for Variable", + "BTTGenericActionConfig2" : "<%= indicator_layer_name %>-layer-diagram.png", + "BTTVariableName" : "kb_overlay_image_filename", + "BTTVariableValue" : "<%= indicator_layer_name %>-layer-diagram.png", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 1 + }, + { + "BTTLastUpdatedAt" : <%= Time.now.to_i %>.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "<%= btt_uuid %>", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "<%= SecureRandom.uuid %>", + "BTTPredefinedActionType" : 386, + "BTTPredefinedActionName" : "Show Floating Menu", + "BTTAdditionalActionData" : { + "BTTMenuActionMenuID" : "kb_overlay_menu" + }, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 2 + }, + { + "BTTLastUpdatedAt" : <%= Time.now.to_i %>.0, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "<%= btt_uuid %>", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeMagicMouse", + "BTTUUID" : "<%= SecureRandom.uuid %>", + "BTTPredefinedActionType" : 248, + "BTTPredefinedActionName" : "Trigger Named Trigger (Configured in Other Tab)", + "BTTNamedTriggerToTrigger" : "kb_overlay_set_defaults", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 3 + } + ], + "BTTGestureNotes" : "Show <%= indicator_layer_name.capitalize %> layer", + "BTTKeySequence" : { + "BTTPauseBetween" : 0.29999999999999999, + "BTTKeyCount" : 8, + "BTTKeySequenceDownKeys" : [ + { + "BTTKEYCode" : <%= btt_code_by_mod_hash[mod_sequence[0].to_sym] %>, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : <%= btt_code_by_mod_hash[mod_sequence[1].to_sym] %>, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : <%= btt_code_by_mod_hash[mod_sequence[2].to_sym] %>, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : <%= btt_code_by_mod_hash[mod_sequence[3].to_sym] %>, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + } + ], + "BTTKeySequenceMixedKeys" : [ + { + "BTTKEYCode" : <%= btt_code_by_mod_hash[mod_sequence[0].to_sym] %>, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : <%= btt_code_by_mod_hash[mod_sequence[1].to_sym] %>, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : <%= btt_code_by_mod_hash[mod_sequence[2].to_sym] %>, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : <%= btt_code_by_mod_hash[mod_sequence[3].to_sym] %>, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : <%= btt_code_by_mod_hash[mod_sequence[0].to_sym] %>, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : <%= btt_code_by_mod_hash[mod_sequence[1].to_sym] %>, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : <%= btt_code_by_mod_hash[mod_sequence[2].to_sym] %>, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : <%= btt_code_by_mod_hash[mod_sequence[3].to_sym] %>, + "BTTKEYTime" : 732641216 + } + ], + "BTTKeySequenceUpKeys" : [ + { + "BTTKEYCode" : <%= btt_code_by_mod_hash[mod_sequence[0].to_sym] %>, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : <%= btt_code_by_mod_hash[mod_sequence[1].to_sym] %>, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : <%= btt_code_by_mod_hash[mod_sequence[2].to_sym] %>, + "BTTKEYTime" : 732641216 + }, + { + "BTTKEYCode" : <%= btt_code_by_mod_hash[mod_sequence[3].to_sym] %>, + "BTTKEYTime" : 732641216 + } + ] + } + }, + <% + end + end + %> + { + "BTTLastUpdatedAt" : 1711659021.8074579, + "BTTTriggerConditionsFormatReadOnly" : "kb_overlay_show_base_layer == 0", + "BTTTriggerConditionsData" : "YnBsaXN0MDDUAQIDBAUGBwpYJHZlcnNpb25ZJGFyY2hpdmVyVCR0b3BYJG9iamVjdHMSAAGGoF8QD05TS2V5ZWRBcmNoaXZlctEICVRyb290gAGvEBYLDBMYICorLTQ4PT5BRUlOT1JaXmJkVSRudWxs0w0ODxAREl8QF05TQ29tcG91bmRQcmVkaWNhdGVUeXBlXxAPTlNTdWJwcmVkaWNhdGVzViRjbGFzcxABgAKAFdIUDxUXWk5TLm9iamVjdHOhFoADgBTUDxkaGxwdHh9fEBFOU1JpZ2h0RXhwcmVzc2lvbl8QEE5TTGVmdEV4cHJlc3Npb25fEBNOU1ByZWRpY2F0ZU9wZXJhdG9ygBOADoAEgBHVISIjJA8lJicoKVlOU09wZXJhbmReTlNTZWxlY3Rvck5hbWVfEBBOU0V4cHJlc3Npb25UeXBlW05TQXJndW1lbnRzgAaABRADgAiADVx2YWx1ZUZvcktleTrSIw8QLIAH0i4vMDFaJGNsYXNzbmFtZVgkY2xhc3Nlc18QEE5TU2VsZkV4cHJlc3Npb26jMDIzXE5TRXhwcmVzc2lvblhOU09iamVjdNIUDzU3oTaACYAM0w8jOTo7PFlOU0tleVBhdGiACxAKgApfEBprYl9vdmVybGF5X3Nob3dfYmFzZV9sYXllctIuLz9AXxAcTlNLZXlQYXRoU3BlY2lmaWVyRXhwcmVzc2lvbqM_MjPSLi9CQ15OU011dGFibGVBcnJheaNCRDNXTlNBcnJhedIuL0ZHXxATTlNLZXlQYXRoRXhwcmVzc2lvbqRGSDIzXxAUTlNGdW5jdGlvbkV4cHJlc3Npb27TSiMPS0xNXxAPTlNDb25zdGFudFZhbHVlgA8QAIAQIwAAAAAAAAAA0i4vUFFfEBlOU0NvbnN0YW50VmFsdWVFeHByZXNzaW9uo1AyM9UPU1RVVldMWExZWk5TTW9kaWZpZXJYTlNOZWdhdGVZTlNPcHRpb25zXk5TT3BlcmF0b3JUeXBlgBIIEATSLi9bXF8QG05TRXF1YWxpdHlQcmVkaWNhdGVPcGVyYXRvcqNbXTNfEBNOU1ByZWRpY2F0ZU9wZXJhdG9y0i4vX2BfEBVOU0NvbXBhcmlzb25QcmVkaWNhdGWjX2EzW05TUHJlZGljYXRl0i4vRGOiRDPSLi9lZl8QE05TQ29tcG91bmRQcmVkaWNhdGWjZWEzAAgAEQAaACQAKQAyADcASQBMAFEAUwBsAHIAeQCTAKUArACuALAAsgC3AMIAxADGAMgA0QDlAPgBDgEQARIBFAEWASEBKwE6AU0BWQFbAV0BXwFhAWMBcAF1AXcBfAGHAZABowGnAbQBvQHCAcQBxgHIAc8B2QHbAd0B3wH8AgECIAIkAikCOAI8AkQCSQJfAmQCewKCApQClgKYApoCowKoAsQCyALTAt4C5wLxAwADAgMDAwUDCgMoAywDQgNHA18DYwNvA3QDdwN8A5IAAAAAAAACAQAAAAAAAABnAAAAAAAAAAAAAAAAAAADlg==", + "BTTTriggerType" : 624, + "BTTTriggerTypeDescriptionReadOnly" : "Please Select a Trigger ", + "BTTTriggerTypeDescription" : "Hide floating menu if kb_overlay_show_base_layer is 0", + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "1F8B57B8-C427-4453-A983-7D04EDF11490", + "BTTPredefinedActionType" : 366, + "BTTPredefinedActionName" : "Empty Placeholder", + "BTTNotesInsteadOfDescription" : 1, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 22, + "BTTAdditionalActions" : [ + { + "BTTLastUpdatedAt" : 1711659021.807816, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "1F8B57B8-C427-4453-A983-7D04EDF11490", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "D7B2209B-C2CD-463B-8D62-EBD9DC623471", + "BTTPredefinedActionType" : 352, + "BTTPredefinedActionName" : "Cancel Timed Action Sequence", + "BTTGenericActionConfig2" : "kb_overlay_timer", + "BTTGenericActionConfig" : "kb_overlay_hide_menu_delay_in_progress", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 0 + }, + { + "BTTLastUpdatedAt" : 1711659021.808121, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "1F8B57B8-C427-4453-A983-7D04EDF11490", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "80ADF514-3257-42B4-85EA-EE8C090A241B", + "BTTPredefinedActionType" : 387, + "BTTPredefinedActionName" : "Hide Floating Menu", + "BTTAdditionalActionData" : { + "BTTMenuActionMenuID" : "kb_overlay_menu" + }, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 1 + } + ], + "BTTGestureNotes" : "Hide floating menu if kb_overlay_show_base_layer is 0", + "BTTKeySequence" : { + "BTTPauseBetween" : 0.29999999999999999, + "BTTKeyCount" : 2, + "BTTKeySequenceDownKeys" : [ + { + "BTTKEYCharacter" : " F18", + "BTTKEYCode" : 79, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 733351744 + } + ], + "BTTKeySequenceMixedKeys" : [ + { + "BTTKEYCharacter" : " F18", + "BTTKEYCode" : 79, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1, + "BTTKEYTime" : 733351744 + }, + { + "BTTKEYCharacter" : " F18", + "BTTKEYCode" : 79, + "BTTKEYTime" : 733351744 + } + ], + "BTTKeySequenceUpKeys" : [ + { + "BTTKEYCharacter" : " F18", + "BTTKEYCode" : 79, + "BTTKEYTime" : 733351744 + } + ] + } + }, + { + "BTTLastUpdatedAt" : 1711752279.6600208, + "BTTTriggerType" : 643, + "BTTTriggerTypeDescriptionReadOnly" : "Named Trigger: kb_overlay_set_defaults", + "BTTTriggerTypeDescription" : "Glove80 Engrammer Keyboard Overlay: Set Defaults", + "BTTTriggerClass" : "BTTTriggerTypeOtherTriggers", + "BTTUUID" : "7C7FBF0F-61CB-4637-BBD9-D234BE31763C", + "BTTPredefinedActionType" : 366, + "BTTPredefinedActionName" : "Empty Placeholder", + "BTTTriggerName" : "kb_overlay_set_defaults", + "BTTNotesInsteadOfDescription" : 1, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 14, + "BTTAdditionalActions" : [ + { + "BTTLastUpdatedAt" : 1711752047.691529, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "7C7FBF0F-61CB-4637-BBD9-D234BE31763C", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeOtherTriggers", + "BTTUUID" : "04C747A9-75D4-4415-A3FE-9C89B11A0FF6", + "BTTPredefinedActionType" : 292, + "BTTPredefinedActionName" : "Assign\/Set Value for Variable", + "BTTGenericActionConfig2" : "1", + "BTTVariablePersist" : "1", + "BTTVariableType" : 1, + "BTTVariableName" : "kb_overlay_show_base_layer", + "BTTVariableValue" : "1", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 0 + }, + { + "BTTLastUpdatedAt" : 1711752210.10355, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "7C7FBF0F-61CB-4637-BBD9-D234BE31763C", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeOtherTriggers", + "BTTUUID" : "4B6B2609-2297-44DF-A644-ECE2689D47BB", + "BTTPredefinedActionType" : 292, + "BTTPredefinedActionName" : "Assign\/Set Value for Variable", + "BTTGenericActionConfig2" : "10", + "BTTVariablePersist" : "1", + "BTTVariableType" : 1, + "BTTVariableName" : "kb_overlay_base_layer_timeout_seconds-not-yet-working-instead-modify-key-sequence-action", + "BTTVariableValue" : "10", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 2 + }, + { + "BTTLastUpdatedAt" : 1711752210.1035109, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "7C7FBF0F-61CB-4637-BBD9-D234BE31763C", + "BTTIsPureAction" : true, + "BTTTriggerClass" : "BTTTriggerTypeOtherTriggers", + "BTTUUID" : "6F741E6D-1D06-4503-8336-01CAABB92EA7", + "BTTPredefinedActionType" : 292, + "BTTPredefinedActionName" : "Assign\/Set Value for Variable", + "BTTGenericActionConfig2" : "0.2", + "BTTVariablePersist" : "1", + "BTTVariableType" : 1, + "BTTVariableName" : "kb_overlay_opacity", + "BTTVariableValue" : "0.2", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 3 + }, + { + "BTTLastUpdatedAt" : 1711752210.1035571, + "BTTTriggerType" : -1, + "BTTTriggerParentUUID" : "7C7FBF0F-61CB-4637-BBD9-D234BE31763C", + "BTTIsPureAction" : true, + "BTTUUID" : "7B922C18-9110-444E-8EA8-F4BD11E5D687", + "BTTPredefinedActionType" : 292, + "BTTPredefinedActionName" : "Assign\/Set Value for Variable", + "BTTGenericActionConfig2" : "https:\/\/raw.githubusercontent.com\/sunaku\/glove80-keymaps\/main\/README\/", + "BTTVariablePersist" : "1", + "BTTVariableType" : 0, + "BTTVariableName" : "kb_overlay_image_base_path", + "BTTVariableValue" : "https:\/\/raw.githubusercontent.com\/sunaku\/glove80-keymaps\/main\/README\/", + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 4 + } + ], + "BTTGestureNotes" : "Glove80 Engrammer Keyboard Overlay: Set Defaults" + }, + { + "BTTLastUpdatedAt" : 1711751200.3615839, + "BTTTriggerType" : 767, + "BTTTriggerTypeDescriptionReadOnly" : "Floating Menu", + "BTTTriggerClass" : "BTTTriggerTypeFloatingMenu", + "BTTUUID" : "53E04A53-DB06-45D9-A15E-795F81561768", + "BTTAdditionalConfiguration" : "Floating Menu: kb_overlay_menu", + "BTTEnabled" : 1, + "BTTOrder" : 24, + "BTTTriggerName" : "Floating Menu: kb_overlay_menu", + "BTTMenuItems" : [ + { + "BTTLastUpdatedAt" : 1711751200.3616009, + "BTTTriggerType" : 778, + "BTTTriggerTypeDescriptionReadOnly" : "Web View \/ HTML Item", + "BTTTriggerTypeDescription" : "Standard Item", + "BTTTriggerParentUUID" : "53E04A53-DB06-45D9-A15E-795F81561768", + "BTTTriggerClass" : "BTTTriggerTypeFloatingMenu", + "BTTUUID" : "483F52F4-AF2D-4671-9CA5-AE8B1B5064C9", + "BTTAdditionalConfiguration" : "Webview Menu Item: kb_overlay_image_html_menu_item", + "BTTEnabled" : 1, + "BTTOrder" : 0, + "BTTTriggerName" : "Webview Menu Item: kb_overlay_image_html_menu_item", + "BTTMenuConfig" : { + "BTTMenuItemBorderColorDark" : "255.000000, 255.000000, 255.000000, 255.000000", + "BTTMenuItemIconColor1" : "255.000000, 255.000000, 255.000000, 255.000000", + "BTTMenuItemBackgroundColor" : "108.442, 96.000, 190.435, 166.991", + "BTTMenuItemBackgroundType" : 0, + "BTTMenuItemBlurredBackground" : 0, + "BTTMenuSelectedTab" : 3, + "BTTMenuItemMaxHeight" : 1000, + "BTTMenuHoverEndAnimationDuration" : 0.14999999999999999, + "BTTMenuItemMaxWidth" : 1408, + "BTTMenuCategoryItemIcon" : 1, + "BTTMenuCategoryShadow" : 1, + "BTTLastChangeUUID" : "7795E2C2-2C9F-48B1-AAB8-B47BEF5AFBA3", + "BTTMenuItemBorderColorHover" : "255.000000, 255.000000, 255.000000, 255.000000", + "BTTMenuItemBorderColor" : "255.000000, 255.000000, 255.000000, 255.000000", + "BTTMenuItemMinHeight" : 0, + "BTTMenuItemBackgroundColorDark" : "108.442, 96.000, 190.435, 166.991", + "BTTMenuItemVisibleWhileActive" : 1, + "BTTMenuElementIdentifier" : "kb_overlay_image_html_menu_item", + "BTTMenuItemVisibleWhileInactive" : 1, + "BTTMenuItemMinWidth" : 0, + "BTTMenuItemBackgroundTypeDark" : 4, + "BTTMenuItemKeepActiveInBackground" : 1, + "BTTMenuAttributedText" : "{\\rtf1\\ansi\\ansicpg1252\\cocoartf2761\n\\cocoatextscaling0\\cocoaplatform0{\\fonttbl\\f0\\fnil\\fcharset0 HelveticaNeue;}\n{\\colortbl;\\red255\\green255\\blue255;\\red255\\green255\\blue255;}\n{\\*\\expandedcolortbl;;\\csgray\\c100000;}\n\\pard\\tx560\\tx1120\\tx1680\\tx2240\\tx2800\\tx3360\\tx3920\\tx4480\\tx5040\\tx5600\\tx6160\\tx6720\\pardirnatural\\qc\\partightenfactor0\n\n\\f0\\fs50 \\cf2 Test}", + "BTTMenuItemShadowEnabled" : 0, + "BTTMenuItemBorderColorHoverDark" : "255.000000, 255.000000, 255.000000, 255.000000", + "BTTMenuItemText" : "presetfile:\/\/\/glove80\/index.html", + "BTTMenuAppearanceStyle" : 0, + "BTTMenuItemBackgroundColorHover" : "90, 90.000, 180, 166.991", + "BTTMenuAlwaysUseLightMode" : 1, + "BTTMenuCategoryBackground" : 1, + "BTTMenuItemUserScriptOnVisible" : "", + "BTTMenuCategoryItemSizing" : 1, + "BTTMenuCategoryBorder" : 1, + "BTTMenuHoverStartAnimationDuration" : 0.14999999999999999, + "BTTMenuItemBackgroundColorHoverDark" : "90, 90.000, 180, 166.991" + }, + "BTTMenuAvailability" : 0, + "BTTMenuName" : "kb_overlay_image_html_menu_item", + "BTTGestureNotes" : "Standard Item" + } + ], + "BTTMenuConfig" : { + "BTTMenuVerticalSpacing" : 5, + "BTTMenuItemToggleVisibilityNow" : null, + "BTTMenuHorizontalSpacing" : 5, + "BTTMenuItemBackgroundColor" : "168.213, 183.731, 225.311, 29.612", + "BTTMenuFrameHeight" : 501, + "BTTMenuWindowLevel" : 3, + "BTTMenuItemBackgroundType" : 4, + "BTTMenuFrameWidth" : 1180, + "BTTMenuAnchorRelation" : 3, + "BTTMenuItemBlurredBackground" : 0, + "BTTMenuItemPaddingLeft" : 10, + "BTTMenuTitleBarStyle" : 0, + "BTTMenuAnchorMenu" : 3, + "BTTMenuCategoryMenuVisibility" : 1, + "BTTMenuItemPaddingTop" : 5, + "BTTMenuItemBorderWidth" : 2, + "BTTMenuCategoryShadow" : 0, + "BTTMenuClickThroughEverywhere" : 1, + "BTTMenuCategoryOnlyShowIf" : 0, + "BTTMenuItemCornerRadius" : 10, + "BTTLastChangeUUID" : "801CB43A-E513-4D09-8AA6-DC577B63A7C7", + "BTTMenuItemBorderColorHover" : "0.000, 0.000, 0.000, 0.000", + "BTTMenuCategoryModifiers" : 0, + "BTTMenuShowIfWindowLevelEqualsEnabled" : 0, + "BTTMenuItemBorderColor" : "0.000, 0.000, 0.000, 0.000", + "BTTMenuPositionRelativeTo" : 1, + "BTTMenuCategorySize" : 1, + "BTTMenuPositioningType" : 1, + "BTTMenuItemsUseModifierModes" : false, + "BTTMenuElementIdentifier" : "kb_overlay_menu", + "BTTMenuItemPaddingRight" : 10, + "BTTMenuClickThroughEmptyParts" : 1, + "BTTMenuCloseOnOutsideClick" : 0, + "BTTMenuCategorySpacing" : 0, + "BTTMenuItemShadowEnabled" : 0, + "BTTMenuLayoutDirection" : 2, + "BTTMenuAppearanceStyle" : 0, + "BTTMenuItemPaddingBottom" : 5, + "BTTMenuAlwaysUseLightMode" : 1, + "BTTMenuCategoryBackground" : 1, + "BTTMenuVisibility" : 1, + "BTTMenuWindowResizable" : 0, + "BTTMenuCategoryBorder" : 0, + "BTTMenuCategoryPosition" : 1, + "BTTMenuCategoryZIndex" : 1, + "BTTMenuCloseAfterAction" : 0, + "BTTMenuItemSaveCurrentSize" : null + }, + "BTTMenuAvailability" : 0, + "BTTMenuName" : "kb_overlay_menu" + }, + { + "BTTLastUpdatedAt" : 1711752047.6915932, + "BTTTriggerConditionsFormatReadOnly" : "kb_overlay_show_base_layer != 0", + "BTTTriggerConditionsData" : "YnBsaXN0MDDUAQIDBAUGBwpYJHZlcnNpb25ZJGFyY2hpdmVyVCR0b3BYJG9iamVjdHMSAAGGoF8QD05TS2V5ZWRBcmNoaXZlctEICVRyb290gAGvEBYLDBMYICorLTQ4PT5BRUlOT1JaXmJkVSRudWxs0w0ODxAREl8QF05TQ29tcG91bmRQcmVkaWNhdGVUeXBlXxAPTlNTdWJwcmVkaWNhdGVzViRjbGFzcxABgAKAFdIUDxUXWk5TLm9iamVjdHOhFoADgBTUDxkaGxwdHh9fEBFOU1JpZ2h0RXhwcmVzc2lvbl8QEE5TTGVmdEV4cHJlc3Npb25fEBNOU1ByZWRpY2F0ZU9wZXJhdG9ygBOADoAEgBHVISIjJA8lJicoKVlOU09wZXJhbmReTlNTZWxlY3Rvck5hbWVfEBBOU0V4cHJlc3Npb25UeXBlW05TQXJndW1lbnRzgAaABRADgAiADVx2YWx1ZUZvcktleTrSIw8QLIAH0i4vMDFaJGNsYXNzbmFtZVgkY2xhc3Nlc18QEE5TU2VsZkV4cHJlc3Npb26jMDIzXE5TRXhwcmVzc2lvblhOU09iamVjdNIUDzU3oTaACYAM0w8jOTo7PFlOU0tleVBhdGiACxAKgApfEBprYl9vdmVybGF5X3Nob3dfYmFzZV9sYXllctIuLz9AXxAcTlNLZXlQYXRoU3BlY2lmaWVyRXhwcmVzc2lvbqM_MjPSLi9CQ15OU011dGFibGVBcnJheaNCRDNXTlNBcnJhedIuL0ZHXxATTlNLZXlQYXRoRXhwcmVzc2lvbqRGSDIzXxAUTlNGdW5jdGlvbkV4cHJlc3Npb27TSiMPS0xNXxAPTlNDb25zdGFudFZhbHVlgA8QAIAQIwAAAAAAAAAA0i4vUFFfEBlOU0NvbnN0YW50VmFsdWVFeHByZXNzaW9uo1AyM9UPU1RVVldMWExZWk5TTW9kaWZpZXJYTlNOZWdhdGVZTlNPcHRpb25zXk5TT3BlcmF0b3JUeXBlgBIJEAXSLi9bXF8QG05TRXF1YWxpdHlQcmVkaWNhdGVPcGVyYXRvcqNbXTNfEBNOU1ByZWRpY2F0ZU9wZXJhdG9y0i4vX2BfEBVOU0NvbXBhcmlzb25QcmVkaWNhdGWjX2EzW05TUHJlZGljYXRl0i4vRGOiRDPSLi9lZl8QE05TQ29tcG91bmRQcmVkaWNhdGWjZWEzAAgAEQAaACQAKQAyADcASQBMAFEAUwBsAHIAeQCTAKUArACuALAAsgC3AMIAxADGAMgA0QDlAPgBDgEQARIBFAEWASEBKwE6AU0BWQFbAV0BXwFhAWMBcAF1AXcBfAGHAZABowGnAbQBvQHCAcQBxgHIAc8B2QHbAd0B3wH8AgECIAIkAikCOAI8AkQCSQJfAmQCewKCApQClgKYApoCowKoAsQCyALTAt4C5wLxAwADAgMDAwUDCgMoAywDQgNHA18DYwNvA3QDdwN8A5IAAAAAAAACAQAAAAAAAABnAAAAAAAAAAAAAAAAAAADlg==", + "BTTTriggerType" : 624, + "BTTTriggerTypeDescriptionReadOnly" : "Please Select a Trigger ", + "BTTTriggerTypeDescription" : "Show base kb layer for n seconds", + "BTTTriggerClass" : "BTTTriggerTypeKeySequence", + "BTTUUID" : "9BC62EDD-A5E3-4EFE-9754-11EF3D37A452", + "BTTPredefinedActionType" : 248, + "BTTPredefinedActionName" : "Trigger Named Trigger (Configured in Other Tab)", + "BTTNamedTriggerToTrigger" : "(KB Overlay) Show base kb layer for n seconds", + "BTTNotesInsteadOfDescription" : 1, + "BTTEnabled" : 1, + "BTTEnabled2" : 1, + "BTTOrder" : 21, + "BTTGestureNotes" : "Show base kb layer for n seconds", + "BTTKeySequence" : { + "BTTPauseBetween" : 0.29999999999999999, + "BTTKeyCount" : 2, + "BTTKeySequenceDownKeys" : [ + { + "BTTKEYCharacter" : " F18", + "BTTKEYCode" : 79, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1 + } + ], + "BTTKeySequenceMixedKeys" : [ + { + "BTTKEYCharacter" : " F18", + "BTTKEYCode" : 79, + "BTTKEYDown" : 1, + "BTTKEYOrderRelevant" : 1, + "BTTKEYRequired" : 1 + }, + { + "BTTKEYCharacter" : " F18", + "BTTKEYCode" : 79 + } + ], + "BTTKeySequenceUpKeys" : [ + { + "BTTKEYCharacter" : " F18", + "BTTKEYCode" : 79 + } + ] + } + } + ] + }, + { + "BTTAppBundleIdentifier" : "com.apple.finder", + "BTTAppName" : "Finder", + "BTTAppAutoInvertIcon" : 1, + "BTTTriggers" : [ + + ] + }, + { + "BTTAppBundleIdentifier" : "BT.L", + "BTTAppName" : "Recently Used", + "BTTAppAutoInvertIcon" : 1, + "BTTTriggers" : [ + + ] + } + ], + "BTTPresetSnapAreas" : [ + + ] +} From 56a4a555fd987af3fe1bd169b2cbee077ecb06a5 Mon Sep 17 00:00:00 2001 From: twadzinski Date: Wed, 3 Apr 2024 23:02:29 -0500 Subject: [PATCH 2/3] Better macro handling - attempt to avoid subsequent key press from firing in between modifier keys. This was causing things like "cursor layer then right arrow" to sometime have a modifier applied to the right arrow, since the macro apparently doesn't finish before the arrow key is sent. --- keymap.dtsi | 154 +++++++++++++----------------------------------- keymap.dtsi.erb | 11 +--- 2 files changed, 45 insertions(+), 120 deletions(-) diff --git a/keymap.dtsi b/keymap.dtsi index 9fa1fa0..3fd1dcf 100644 --- a/keymap.dtsi +++ b/keymap.dtsi @@ -4417,19 +4417,14 @@ macros { label = "switch_layer_base"; compatible = "zmk,behavior-macro-one-param"; #binding-cells = <1>; + wait-ms = <0>; + tap-ms = <0>; bindings = <¯o_param_1to1> , <¯o_press &mo MACRO_PLACEHOLDER> #ifdef USE_LAYER_INDICATORS // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) - , <¯o_press &kp RALT> - , <¯o_press &kp RCTL> - , <¯o_press &kp RGUI> - , <¯o_press &kp RSFT> - , <¯o_release &kp RALT> - , <¯o_release &kp RCTL> - , <¯o_release &kp RGUI> - , <¯o_release &kp RSFT> + , <¯o_tap &kp RALT &kp RCTL &kp RGUI &kp RSFT> #endif , <¯o_pause_for_release> , <¯o_param_1to1> @@ -4445,19 +4440,14 @@ macros { label = "switch_layer_cursor"; compatible = "zmk,behavior-macro-one-param"; #binding-cells = <1>; + wait-ms = <0>; + tap-ms = <0>; bindings = <¯o_param_1to1> , <¯o_press &mo MACRO_PLACEHOLDER> #ifdef USE_LAYER_INDICATORS // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) - , <¯o_press &kp RALT> - , <¯o_press &kp RCTL> - , <¯o_press &kp RSFT> - , <¯o_press &kp RGUI> - , <¯o_release &kp RALT> - , <¯o_release &kp RCTL> - , <¯o_release &kp RSFT> - , <¯o_release &kp RGUI> + , <¯o_tap &kp RALT &kp RCTL &kp RSFT &kp RGUI> #endif , <¯o_pause_for_release> , <¯o_param_1to1> @@ -4473,19 +4463,14 @@ macros { label = "switch_layer_emoji"; compatible = "zmk,behavior-macro-one-param"; #binding-cells = <1>; + wait-ms = <0>; + tap-ms = <0>; bindings = <¯o_param_1to1> , <¯o_press &mo MACRO_PLACEHOLDER> #ifdef USE_LAYER_INDICATORS // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) - , <¯o_press &kp RALT> - , <¯o_press &kp RGUI> - , <¯o_press &kp RCTL> - , <¯o_press &kp RSFT> - , <¯o_release &kp RALT> - , <¯o_release &kp RGUI> - , <¯o_release &kp RCTL> - , <¯o_release &kp RSFT> + , <¯o_tap &kp RALT &kp RGUI &kp RCTL &kp RSFT> #endif , <¯o_pause_for_release> , <¯o_param_1to1> @@ -4501,19 +4486,14 @@ macros { label = "switch_layer_factory"; compatible = "zmk,behavior-macro-one-param"; #binding-cells = <1>; + wait-ms = <0>; + tap-ms = <0>; bindings = <¯o_param_1to1> , <¯o_press &mo MACRO_PLACEHOLDER> #ifdef USE_LAYER_INDICATORS // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) - , <¯o_press &kp RALT> - , <¯o_press &kp RGUI> - , <¯o_press &kp RSFT> - , <¯o_press &kp RCTL> - , <¯o_release &kp RALT> - , <¯o_release &kp RGUI> - , <¯o_release &kp RSFT> - , <¯o_release &kp RCTL> + , <¯o_tap &kp RALT &kp RGUI &kp RSFT &kp RCTL> #endif , <¯o_pause_for_release> , <¯o_param_1to1> @@ -4529,19 +4509,14 @@ macros { label = "switch_layer_function"; compatible = "zmk,behavior-macro-one-param"; #binding-cells = <1>; + wait-ms = <0>; + tap-ms = <0>; bindings = <¯o_param_1to1> , <¯o_press &mo MACRO_PLACEHOLDER> #ifdef USE_LAYER_INDICATORS // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) - , <¯o_press &kp RALT> - , <¯o_press &kp RSFT> - , <¯o_press &kp RCTL> - , <¯o_press &kp RGUI> - , <¯o_release &kp RALT> - , <¯o_release &kp RSFT> - , <¯o_release &kp RCTL> - , <¯o_release &kp RGUI> + , <¯o_tap &kp RALT &kp RSFT &kp RCTL &kp RGUI> #endif , <¯o_pause_for_release> , <¯o_param_1to1> @@ -4557,19 +4532,14 @@ macros { label = "switch_layer_gaming"; compatible = "zmk,behavior-macro-one-param"; #binding-cells = <1>; + wait-ms = <0>; + tap-ms = <0>; bindings = <¯o_param_1to1> , <¯o_press &mo MACRO_PLACEHOLDER> #ifdef USE_LAYER_INDICATORS // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) - , <¯o_press &kp RALT> - , <¯o_press &kp RSFT> - , <¯o_press &kp RGUI> - , <¯o_press &kp RCTL> - , <¯o_release &kp RALT> - , <¯o_release &kp RSFT> - , <¯o_release &kp RGUI> - , <¯o_release &kp RCTL> + , <¯o_tap &kp RALT &kp RSFT &kp RGUI &kp RCTL> #endif , <¯o_pause_for_release> , <¯o_param_1to1> @@ -4585,19 +4555,14 @@ macros { label = "switch_layer_lower"; compatible = "zmk,behavior-macro-one-param"; #binding-cells = <1>; + wait-ms = <0>; + tap-ms = <0>; bindings = <¯o_param_1to1> , <¯o_press &mo MACRO_PLACEHOLDER> #ifdef USE_LAYER_INDICATORS // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) - , <¯o_press &kp RCTL> - , <¯o_press &kp RALT> - , <¯o_press &kp RGUI> - , <¯o_press &kp RSFT> - , <¯o_release &kp RCTL> - , <¯o_release &kp RALT> - , <¯o_release &kp RGUI> - , <¯o_release &kp RSFT> + , <¯o_tap &kp RCTL &kp RALT &kp RGUI &kp RSFT> #endif , <¯o_pause_for_release> , <¯o_param_1to1> @@ -4613,19 +4578,14 @@ macros { label = "switch_layer_magic"; compatible = "zmk,behavior-macro-one-param"; #binding-cells = <1>; + wait-ms = <0>; + tap-ms = <0>; bindings = <¯o_param_1to1> , <¯o_press &mo MACRO_PLACEHOLDER> #ifdef USE_LAYER_INDICATORS // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) - , <¯o_press &kp RCTL> - , <¯o_press &kp RALT> - , <¯o_press &kp RSFT> - , <¯o_press &kp RGUI> - , <¯o_release &kp RCTL> - , <¯o_release &kp RALT> - , <¯o_release &kp RSFT> - , <¯o_release &kp RGUI> + , <¯o_tap &kp RCTL &kp RALT &kp RSFT &kp RGUI> #endif , <¯o_pause_for_release> , <¯o_param_1to1> @@ -4641,19 +4601,14 @@ macros { label = "switch_layer_mouse"; compatible = "zmk,behavior-macro-one-param"; #binding-cells = <1>; + wait-ms = <0>; + tap-ms = <0>; bindings = <¯o_param_1to1> , <¯o_press &mo MACRO_PLACEHOLDER> #ifdef USE_LAYER_INDICATORS // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) - , <¯o_press &kp RCTL> - , <¯o_press &kp RGUI> - , <¯o_press &kp RALT> - , <¯o_press &kp RSFT> - , <¯o_release &kp RCTL> - , <¯o_release &kp RGUI> - , <¯o_release &kp RALT> - , <¯o_release &kp RSFT> + , <¯o_tap &kp RCTL &kp RGUI &kp RALT &kp RSFT> #endif , <¯o_pause_for_release> , <¯o_param_1to1> @@ -4669,19 +4624,14 @@ macros { label = "switch_layer_number"; compatible = "zmk,behavior-macro-one-param"; #binding-cells = <1>; + wait-ms = <0>; + tap-ms = <0>; bindings = <¯o_param_1to1> , <¯o_press &mo MACRO_PLACEHOLDER> #ifdef USE_LAYER_INDICATORS // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) - , <¯o_press &kp RCTL> - , <¯o_press &kp RGUI> - , <¯o_press &kp RSFT> - , <¯o_press &kp RALT> - , <¯o_release &kp RCTL> - , <¯o_release &kp RGUI> - , <¯o_release &kp RSFT> - , <¯o_release &kp RALT> + , <¯o_tap &kp RCTL &kp RGUI &kp RSFT &kp RALT> #endif , <¯o_pause_for_release> , <¯o_param_1to1> @@ -4697,19 +4647,14 @@ macros { label = "switch_layer_symbol"; compatible = "zmk,behavior-macro-one-param"; #binding-cells = <1>; + wait-ms = <0>; + tap-ms = <0>; bindings = <¯o_param_1to1> , <¯o_press &mo MACRO_PLACEHOLDER> #ifdef USE_LAYER_INDICATORS // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) - , <¯o_press &kp RCTL> - , <¯o_press &kp RSFT> - , <¯o_press &kp RALT> - , <¯o_press &kp RGUI> - , <¯o_release &kp RCTL> - , <¯o_release &kp RSFT> - , <¯o_release &kp RALT> - , <¯o_release &kp RGUI> + , <¯o_tap &kp RCTL &kp RSFT &kp RALT &kp RGUI> #endif , <¯o_pause_for_release> , <¯o_param_1to1> @@ -4725,19 +4670,14 @@ macros { label = "switch_layer_system"; compatible = "zmk,behavior-macro-one-param"; #binding-cells = <1>; + wait-ms = <0>; + tap-ms = <0>; bindings = <¯o_param_1to1> , <¯o_press &mo MACRO_PLACEHOLDER> #ifdef USE_LAYER_INDICATORS // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) - , <¯o_press &kp RCTL> - , <¯o_press &kp RSFT> - , <¯o_press &kp RGUI> - , <¯o_press &kp RALT> - , <¯o_release &kp RCTL> - , <¯o_release &kp RSFT> - , <¯o_release &kp RGUI> - , <¯o_release &kp RALT> + , <¯o_tap &kp RCTL &kp RSFT &kp RGUI &kp RALT> #endif , <¯o_pause_for_release> , <¯o_param_1to1> @@ -4753,19 +4693,14 @@ macros { label = "switch_layer_typing"; compatible = "zmk,behavior-macro-one-param"; #binding-cells = <1>; + wait-ms = <0>; + tap-ms = <0>; bindings = <¯o_param_1to1> , <¯o_press &mo MACRO_PLACEHOLDER> #ifdef USE_LAYER_INDICATORS // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) - , <¯o_press &kp RGUI> - , <¯o_press &kp RALT> - , <¯o_press &kp RCTL> - , <¯o_press &kp RSFT> - , <¯o_release &kp RGUI> - , <¯o_release &kp RALT> - , <¯o_release &kp RCTL> - , <¯o_release &kp RSFT> + , <¯o_tap &kp RGUI &kp RALT &kp RCTL &kp RSFT> #endif , <¯o_pause_for_release> , <¯o_param_1to1> @@ -4781,19 +4716,14 @@ macros { label = "switch_layer_world"; compatible = "zmk,behavior-macro-one-param"; #binding-cells = <1>; + wait-ms = <0>; + tap-ms = <0>; bindings = <¯o_param_1to1> , <¯o_press &mo MACRO_PLACEHOLDER> #ifdef USE_LAYER_INDICATORS // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) - , <¯o_press &kp RGUI> - , <¯o_press &kp RALT> - , <¯o_press &kp RSFT> - , <¯o_press &kp RCTL> - , <¯o_release &kp RGUI> - , <¯o_release &kp RALT> - , <¯o_release &kp RSFT> - , <¯o_release &kp RCTL> + , <¯o_tap &kp RGUI &kp RALT &kp RSFT &kp RCTL> #endif , <¯o_pause_for_release> , <¯o_param_1to1> diff --git a/keymap.dtsi.erb b/keymap.dtsi.erb index ccbada2..7b908a5 100644 --- a/keymap.dtsi.erb +++ b/keymap.dtsi.erb @@ -1233,19 +1233,14 @@ macros { label = "switch_layer_<%= indicator_layer_name %>"; compatible = "zmk,behavior-macro-one-param"; #binding-cells = <1>; + wait-ms = <0>; + tap-ms = <0>; bindings = <¯o_param_1to1> , <¯o_press &mo MACRO_PLACEHOLDER> #ifdef USE_LAYER_INDICATORS // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) - , <¯o_press &kp <%= mod_sequence[0] %>> - , <¯o_press &kp <%= mod_sequence[1] %>> - , <¯o_press &kp <%= mod_sequence[2] %>> - , <¯o_press &kp <%= mod_sequence[3] %>> - , <¯o_release &kp <%= mod_sequence[0] %>> - , <¯o_release &kp <%= mod_sequence[1] %>> - , <¯o_release &kp <%= mod_sequence[2] %>> - , <¯o_release &kp <%= mod_sequence[3] %>> + , <¯o_tap &kp <%= mod_sequence[0] %> &kp <%= mod_sequence[1] %> &kp <%= mod_sequence[2] %> &kp <%= mod_sequence[3] %>> #endif , <¯o_pause_for_release> , <¯o_param_1to1> From 49fb2697cc5ca8138779403461540cc08f55e9f1 Mon Sep 17 00:00:00 2001 From: twadzinski Date: Thu, 4 Apr 2024 11:18:20 -0500 Subject: [PATCH 3/3] Cleaner way to do the #ifdef USE_LAYER_INDICATORS to make it so when it is disables the indicator functionality it runs identical to the old behavior --- keymap.dtsi | 120 ++++++++++++++++++++++++++---------------------- keymap.dtsi.erb | 16 +++++-- 2 files changed, 76 insertions(+), 60 deletions(-) diff --git a/keymap.dtsi b/keymap.dtsi index 3fd1dcf..4b30b46 100644 --- a/keymap.dtsi +++ b/keymap.dtsi @@ -3870,7 +3870,11 @@ behaviors { quick-tap-ms = ; // enable repeat #endif #binding-cells = <2>; + #ifdef USE_LAYER_INDICATORS bindings = <&la_switch_base>, <&kp>; + #else + bindings = <&mo>, <&kp>; + #endif }; thumb_cursor: thumb_layer_access_cursor { @@ -3881,7 +3885,11 @@ behaviors { quick-tap-ms = ; // enable repeat #endif #binding-cells = <2>; + #ifdef USE_LAYER_INDICATORS bindings = <&la_switch_cursor>, <&kp>; + #else + bindings = <&mo>, <&kp>; + #endif }; thumb_emoji: thumb_layer_access_emoji { @@ -3892,7 +3900,11 @@ behaviors { quick-tap-ms = ; // enable repeat #endif #binding-cells = <2>; + #ifdef USE_LAYER_INDICATORS bindings = <&la_switch_emoji>, <&kp>; + #else + bindings = <&mo>, <&kp>; + #endif }; thumb_factory: thumb_layer_access_factory { @@ -3903,7 +3915,11 @@ behaviors { quick-tap-ms = ; // enable repeat #endif #binding-cells = <2>; + #ifdef USE_LAYER_INDICATORS bindings = <&la_switch_factory>, <&kp>; + #else + bindings = <&mo>, <&kp>; + #endif }; thumb_function: thumb_layer_access_function { @@ -3914,7 +3930,11 @@ behaviors { quick-tap-ms = ; // enable repeat #endif #binding-cells = <2>; + #ifdef USE_LAYER_INDICATORS bindings = <&la_switch_function>, <&kp>; + #else + bindings = <&mo>, <&kp>; + #endif }; thumb_gaming: thumb_layer_access_gaming { @@ -3925,7 +3945,11 @@ behaviors { quick-tap-ms = ; // enable repeat #endif #binding-cells = <2>; + #ifdef USE_LAYER_INDICATORS bindings = <&la_switch_gaming>, <&kp>; + #else + bindings = <&mo>, <&kp>; + #endif }; thumb_lower: thumb_layer_access_lower { @@ -3936,7 +3960,11 @@ behaviors { quick-tap-ms = ; // enable repeat #endif #binding-cells = <2>; + #ifdef USE_LAYER_INDICATORS bindings = <&la_switch_lower>, <&kp>; + #else + bindings = <&mo>, <&kp>; + #endif }; thumb_magic: thumb_layer_access_magic { @@ -3947,7 +3975,11 @@ behaviors { quick-tap-ms = ; // enable repeat #endif #binding-cells = <2>; + #ifdef USE_LAYER_INDICATORS bindings = <&la_switch_magic>, <&kp>; + #else + bindings = <&mo>, <&kp>; + #endif }; thumb_mouse: thumb_layer_access_mouse { @@ -3958,7 +3990,11 @@ behaviors { quick-tap-ms = ; // enable repeat #endif #binding-cells = <2>; + #ifdef USE_LAYER_INDICATORS bindings = <&la_switch_mouse>, <&kp>; + #else + bindings = <&mo>, <&kp>; + #endif }; thumb_number: thumb_layer_access_number { @@ -3969,7 +4005,11 @@ behaviors { quick-tap-ms = ; // enable repeat #endif #binding-cells = <2>; + #ifdef USE_LAYER_INDICATORS bindings = <&la_switch_number>, <&kp>; + #else + bindings = <&mo>, <&kp>; + #endif }; thumb_symbol: thumb_layer_access_symbol { @@ -3980,7 +4020,11 @@ behaviors { quick-tap-ms = ; // enable repeat #endif #binding-cells = <2>; + #ifdef USE_LAYER_INDICATORS bindings = <&la_switch_symbol>, <&kp>; + #else + bindings = <&mo>, <&kp>; + #endif }; thumb_system: thumb_layer_access_system { @@ -3991,7 +4035,11 @@ behaviors { quick-tap-ms = ; // enable repeat #endif #binding-cells = <2>; + #ifdef USE_LAYER_INDICATORS bindings = <&la_switch_system>, <&kp>; + #else + bindings = <&mo>, <&kp>; + #endif }; thumb_typing: thumb_layer_access_typing { @@ -4002,7 +4050,11 @@ behaviors { quick-tap-ms = ; // enable repeat #endif #binding-cells = <2>; + #ifdef USE_LAYER_INDICATORS bindings = <&la_switch_typing>, <&kp>; + #else + bindings = <&mo>, <&kp>; + #endif }; thumb_world: thumb_layer_access_world { @@ -4013,7 +4065,11 @@ behaviors { quick-tap-ms = ; // enable repeat #endif #binding-cells = <2>; + #ifdef USE_LAYER_INDICATORS bindings = <&la_switch_world>, <&kp>; + #else + bindings = <&mo>, <&kp>; + #endif }; @@ -4023,7 +4079,11 @@ behaviors { tapping-term-ms = ; quick-tap-ms = ; // enable repeat #binding-cells = <2>; + #ifdef USE_LAYER_INDICATORS bindings = <&la_switch_world>, <¶ng_left>; + #else + bindings = <&mo>, <¶ng_left>; + #endif }; space_symbol: thumb_layer_access_spacebar_symbol { @@ -4032,7 +4092,11 @@ behaviors { tapping-term-ms = ; quick-tap-ms = ; // enable repeat #binding-cells = <2>; + #ifdef USE_LAYER_INDICATORS bindings = <&la_switch_symbol>, <&kp>; + #else + bindings = <&mo>, <&kp>; + #endif }; thumb: thumb_layer_access { @@ -4422,17 +4486,13 @@ macros { bindings = <¯o_param_1to1> , <¯o_press &mo MACRO_PLACEHOLDER> - #ifdef USE_LAYER_INDICATORS // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) , <¯o_tap &kp RALT &kp RCTL &kp RGUI &kp RSFT> - #endif , <¯o_pause_for_release> , <¯o_param_1to1> , <¯o_release &mo MACRO_PLACEHOLDER> - #ifdef USE_LAYER_INDICATORS //revert to home layer , <¯o_tap &kp F18> - #endif ; }; @@ -4445,17 +4505,13 @@ macros { bindings = <¯o_param_1to1> , <¯o_press &mo MACRO_PLACEHOLDER> - #ifdef USE_LAYER_INDICATORS // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) , <¯o_tap &kp RALT &kp RCTL &kp RSFT &kp RGUI> - #endif , <¯o_pause_for_release> , <¯o_param_1to1> , <¯o_release &mo MACRO_PLACEHOLDER> - #ifdef USE_LAYER_INDICATORS //revert to home layer , <¯o_tap &kp F18> - #endif ; }; @@ -4468,17 +4524,13 @@ macros { bindings = <¯o_param_1to1> , <¯o_press &mo MACRO_PLACEHOLDER> - #ifdef USE_LAYER_INDICATORS // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) , <¯o_tap &kp RALT &kp RGUI &kp RCTL &kp RSFT> - #endif , <¯o_pause_for_release> , <¯o_param_1to1> , <¯o_release &mo MACRO_PLACEHOLDER> - #ifdef USE_LAYER_INDICATORS //revert to home layer , <¯o_tap &kp F18> - #endif ; }; @@ -4491,17 +4543,13 @@ macros { bindings = <¯o_param_1to1> , <¯o_press &mo MACRO_PLACEHOLDER> - #ifdef USE_LAYER_INDICATORS // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) , <¯o_tap &kp RALT &kp RGUI &kp RSFT &kp RCTL> - #endif , <¯o_pause_for_release> , <¯o_param_1to1> , <¯o_release &mo MACRO_PLACEHOLDER> - #ifdef USE_LAYER_INDICATORS //revert to home layer , <¯o_tap &kp F18> - #endif ; }; @@ -4514,17 +4562,13 @@ macros { bindings = <¯o_param_1to1> , <¯o_press &mo MACRO_PLACEHOLDER> - #ifdef USE_LAYER_INDICATORS // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) , <¯o_tap &kp RALT &kp RSFT &kp RCTL &kp RGUI> - #endif , <¯o_pause_for_release> , <¯o_param_1to1> , <¯o_release &mo MACRO_PLACEHOLDER> - #ifdef USE_LAYER_INDICATORS //revert to home layer , <¯o_tap &kp F18> - #endif ; }; @@ -4537,17 +4581,13 @@ macros { bindings = <¯o_param_1to1> , <¯o_press &mo MACRO_PLACEHOLDER> - #ifdef USE_LAYER_INDICATORS // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) , <¯o_tap &kp RALT &kp RSFT &kp RGUI &kp RCTL> - #endif , <¯o_pause_for_release> , <¯o_param_1to1> , <¯o_release &mo MACRO_PLACEHOLDER> - #ifdef USE_LAYER_INDICATORS //revert to home layer , <¯o_tap &kp F18> - #endif ; }; @@ -4560,17 +4600,13 @@ macros { bindings = <¯o_param_1to1> , <¯o_press &mo MACRO_PLACEHOLDER> - #ifdef USE_LAYER_INDICATORS // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) , <¯o_tap &kp RCTL &kp RALT &kp RGUI &kp RSFT> - #endif , <¯o_pause_for_release> , <¯o_param_1to1> , <¯o_release &mo MACRO_PLACEHOLDER> - #ifdef USE_LAYER_INDICATORS //revert to home layer , <¯o_tap &kp F18> - #endif ; }; @@ -4583,17 +4619,13 @@ macros { bindings = <¯o_param_1to1> , <¯o_press &mo MACRO_PLACEHOLDER> - #ifdef USE_LAYER_INDICATORS // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) , <¯o_tap &kp RCTL &kp RALT &kp RSFT &kp RGUI> - #endif , <¯o_pause_for_release> , <¯o_param_1to1> , <¯o_release &mo MACRO_PLACEHOLDER> - #ifdef USE_LAYER_INDICATORS //revert to home layer , <¯o_tap &kp F18> - #endif ; }; @@ -4606,17 +4638,13 @@ macros { bindings = <¯o_param_1to1> , <¯o_press &mo MACRO_PLACEHOLDER> - #ifdef USE_LAYER_INDICATORS // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) , <¯o_tap &kp RCTL &kp RGUI &kp RALT &kp RSFT> - #endif , <¯o_pause_for_release> , <¯o_param_1to1> , <¯o_release &mo MACRO_PLACEHOLDER> - #ifdef USE_LAYER_INDICATORS //revert to home layer , <¯o_tap &kp F18> - #endif ; }; @@ -4629,17 +4657,13 @@ macros { bindings = <¯o_param_1to1> , <¯o_press &mo MACRO_PLACEHOLDER> - #ifdef USE_LAYER_INDICATORS // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) , <¯o_tap &kp RCTL &kp RGUI &kp RSFT &kp RALT> - #endif , <¯o_pause_for_release> , <¯o_param_1to1> , <¯o_release &mo MACRO_PLACEHOLDER> - #ifdef USE_LAYER_INDICATORS //revert to home layer , <¯o_tap &kp F18> - #endif ; }; @@ -4652,17 +4676,13 @@ macros { bindings = <¯o_param_1to1> , <¯o_press &mo MACRO_PLACEHOLDER> - #ifdef USE_LAYER_INDICATORS // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) , <¯o_tap &kp RCTL &kp RSFT &kp RALT &kp RGUI> - #endif , <¯o_pause_for_release> , <¯o_param_1to1> , <¯o_release &mo MACRO_PLACEHOLDER> - #ifdef USE_LAYER_INDICATORS //revert to home layer , <¯o_tap &kp F18> - #endif ; }; @@ -4675,17 +4695,13 @@ macros { bindings = <¯o_param_1to1> , <¯o_press &mo MACRO_PLACEHOLDER> - #ifdef USE_LAYER_INDICATORS // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) , <¯o_tap &kp RCTL &kp RSFT &kp RGUI &kp RALT> - #endif , <¯o_pause_for_release> , <¯o_param_1to1> , <¯o_release &mo MACRO_PLACEHOLDER> - #ifdef USE_LAYER_INDICATORS //revert to home layer , <¯o_tap &kp F18> - #endif ; }; @@ -4698,17 +4714,13 @@ macros { bindings = <¯o_param_1to1> , <¯o_press &mo MACRO_PLACEHOLDER> - #ifdef USE_LAYER_INDICATORS // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) , <¯o_tap &kp RGUI &kp RALT &kp RCTL &kp RSFT> - #endif , <¯o_pause_for_release> , <¯o_param_1to1> , <¯o_release &mo MACRO_PLACEHOLDER> - #ifdef USE_LAYER_INDICATORS //revert to home layer , <¯o_tap &kp F18> - #endif ; }; @@ -4721,17 +4733,13 @@ macros { bindings = <¯o_param_1to1> , <¯o_press &mo MACRO_PLACEHOLDER> - #ifdef USE_LAYER_INDICATORS // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) , <¯o_tap &kp RGUI &kp RALT &kp RSFT &kp RCTL> - #endif , <¯o_pause_for_release> , <¯o_param_1to1> , <¯o_release &mo MACRO_PLACEHOLDER> - #ifdef USE_LAYER_INDICATORS //revert to home layer , <¯o_tap &kp F18> - #endif ; }; diff --git a/keymap.dtsi.erb b/keymap.dtsi.erb index 7b908a5..8e44cd5 100644 --- a/keymap.dtsi.erb +++ b/keymap.dtsi.erb @@ -896,7 +896,11 @@ behaviors { quick-tap-ms = ; // enable repeat #endif #binding-cells = <2>; + #ifdef USE_LAYER_INDICATORS bindings = <&la_switch_<%= indicator_layer_name %>>, <&kp>; + #else + bindings = <&mo>, <&kp>; + #endif }; <% @@ -909,7 +913,11 @@ behaviors { tapping-term-ms = ; quick-tap-ms = ; // enable repeat #binding-cells = <2>; + #ifdef USE_LAYER_INDICATORS bindings = <&la_switch_world>, <¶ng_left>; + #else + bindings = <&mo>, <¶ng_left>; + #endif }; space_symbol: thumb_layer_access_spacebar_symbol { @@ -918,7 +926,11 @@ behaviors { tapping-term-ms = ; quick-tap-ms = ; // enable repeat #binding-cells = <2>; + #ifdef USE_LAYER_INDICATORS bindings = <&la_switch_symbol>, <&kp>; + #else + bindings = <&mo>, <&kp>; + #endif }; thumb: thumb_layer_access { @@ -1238,17 +1250,13 @@ macros { bindings = <¯o_param_1to1> , <¯o_press &mo MACRO_PLACEHOLDER> - #ifdef USE_LAYER_INDICATORS // Doing a press and release for each rather than the modifier functions, e.g. RG(RC(RA(...))), since the functions don't respect the order when it hits the host OS (tested on Macos) , <¯o_tap &kp <%= mod_sequence[0] %> &kp <%= mod_sequence[1] %> &kp <%= mod_sequence[2] %> &kp <%= mod_sequence[3] %>> - #endif , <¯o_pause_for_release> , <¯o_param_1to1> , <¯o_release &mo MACRO_PLACEHOLDER> - #ifdef USE_LAYER_INDICATORS //revert to home layer , <¯o_tap &kp F18> - #endif ; };