Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
142 changes: 141 additions & 1 deletion config/eyelash_sofle.keymap
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,23 @@
timeout-ms = <80>;
layers = <0>;
};

// Exit any game layer back to BASE. Top corners — physically far apart,
// impossible to brush during gameplay, easy to do deliberately.
combo_game_exit {
bindings = <&GAME_EXIT>;
key-positions = <0 12>;
timeout-ms = <50>;
layers = <6 7 8 9>;
};

// Re-open the picker without bouncing through BASE.
combo_game_repick {
bindings = <&to 5>;
key-positions = <0 5>;
timeout-ms = <50>;
layers = <6 7 8 9>;
};
};

macros {
Expand Down Expand Up @@ -357,6 +374,44 @@
bindings = <&kp LT &kp PRCNT &kp SPACE &kp SPACE &kp PRCNT &kp GT &kp LEFT &kp LEFT &kp LEFT>;
label = "EEX_NONPRINT";
};

// Game-mode entry macros: enable RGB underglow, set a solid color
// for the chosen game, then activate the matching layer.
GAME_MC_TO: GAME_MC_TO {
compatible = "zmk,behavior-macro";
#binding-cells = <0>;
bindings = <&rgb_ug RGB_ON>, <&rgb_ug RGB_COLOR_HSB(120,100,50)>, <&to 6>;
label = "GAME_MC_TO";
};

GAME_LOL_TO: GAME_LOL_TO {
compatible = "zmk,behavior-macro";
#binding-cells = <0>;
bindings = <&rgb_ug RGB_ON>, <&rgb_ug RGB_COLOR_HSB(45,100,50)>, <&to 7>;
label = "GAME_LOL_TO";
};

GAME_DOOM_TO: GAME_DOOM_TO {
compatible = "zmk,behavior-macro";
#binding-cells = <0>;
bindings = <&rgb_ug RGB_ON>, <&rgb_ug RGB_COLOR_HSB(0,100,50)>, <&to 8>;
label = "GAME_DOOM_TO";
};

GAME_CS2_TO: GAME_CS2_TO {
compatible = "zmk,behavior-macro";
#binding-cells = <0>;
bindings = <&rgb_ug RGB_ON>, <&rgb_ug RGB_COLOR_HSB(220,100,50)>, <&to 9>;
label = "GAME_CS2_TO";
};

// Exit: turn off the underglow and return to BASE.
GAME_EXIT: GAME_EXIT {
compatible = "zmk,behavior-macro";
#binding-cells = <0>;
bindings = <&rgb_ug RGB_OFF>, <&to 0>;
label = "GAME_EXIT";
};
};

keymap {
Expand Down Expand Up @@ -420,11 +475,96 @@
&rgb_ug RGB_BRI &rgb_ug RGB_SAI &rgb_ug RGB_HUI &rgb_ug RGB_EFF &trans &trans &mmv MOVE_DOWN &kp KP_SLASH &kp KP_N4 &kp KP_N5 &kp KP_N6 &kp KP_PLUS &trans
&rgb_ug RGB_BRD &rgb_ug RGB_SAD &rgb_ug RGB_HUD &rgb_ug RGB_EFR &trans &trans &mmv MOVE_LEFT &kp KP_ASTERISK &kp KP_N1 &kp KP_N2 &kp KP_N3 &kp KP_ENTER &trans
&rgb_ug RGB_TOG &trans &trans &trans &trans &trans &mmv MOVE_RIGHT &kp KP_EQUAL &kp KP_N0 &kp COMMA &kp KP_DOT &kp PERCENT &trans
&trans &trans &trans &trans &trans &trans &mkp LCLK &trans &trans &trans &trans &trans
&trans &trans &trans &trans &trans &trans &to 5 &trans &trans &trans &trans &trans
>;

display-name = "SYS|NUM";
sensor-bindings = <&scroll_encoder>;
};

// Layer 5 — GAME_PICK: transient launcher reached from SYS center key.
// Joystick directionals select a game; center cancels back to BASE.
// Every other key is &none so a stray press can't escape the picker.
layer_5 {
bindings = <
&none &none &none &none &none &none &GAME_MC_TO &none &none &none &none &none &none
&none &none &none &none &none &none &GAME_LOL_TO &none &none &none &none &none &none
&none &none &none &none &none &none &GAME_DOOM_TO &none &none &none &none &none &none
&none &none &none &none &none &none &GAME_CS2_TO &none &none &none &none &none &none
&none &none &none &none &none &none &to 0 &none &none &none &none &none
>;

display-name = "GAME?";
sensor-bindings = <&inc_dec_kp C_VOLUME_UP C_VOL_DN>;
};

// Layer 6 — GAME_MC (Minecraft).
// Plain WASD/QWER, no HRM. LCTRL@39 sprint, LSHIFT@57 sneak, SPACE on
// both thumbs. Right half stays as plain QWERTY for chat. Joystick is a
// 4-way audio cluster. F13@62 = push-to-talk for Discord/in-game voice.
layer_6 {
bindings = <
&kp F3 &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp C_VOL_UP &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &kp MINUS
&kp TAB &kp Q &kp W &kp E &kp R &kp T &kp C_VOL_DN &kp Y &kp U &kp I &kp O &kp P &kp EQUAL
&kp ESC &kp A &kp S &kp D &kp F &kp G &kp C_MUTE &kp H &kp J &kp K &kp L &kp SEMI &kp APOS
&kp LCTRL &kp Z &kp X &kp C &kp V &kp B &kp C_PP &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp RET
&kp C_MUTE &kp F2 &kp F11 &kp LGUI &kp SPACE &kp LSHFT &kp ENTER &kp SPACE &kp BSPC &kp LALT &kp F13 &mo 3
>;

display-name = "MINECRFT";
sensor-bindings = <&inc_dec_kp C_VOLUME_UP C_VOL_DN>;
};

// Layer 7 — GAME_LOL (League of Legends, defaults).
// Same chassis as MC. ` (grave) replaces F3 at pos 0.
// QWER abilities + DF summoners + B recall + 1-6 items all at default
// letter positions. LCTRL@39 used for level-up combos (Ctrl+QWER).
// LSHIFT@57 = self-cast modifier; LALT@61 = ally-cast modifier.
// SPACE on left thumb (56) for camera-center mash.
layer_7 {
bindings = <
&kp GRAVE &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp C_VOL_UP &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &kp MINUS
&kp TAB &kp Q &kp W &kp E &kp R &kp T &kp C_VOL_DN &kp Y &kp U &kp I &kp O &kp P &kp EQUAL
&kp ESC &kp A &kp S &kp D &kp F &kp G &kp C_MUTE &kp H &kp J &kp K &kp L &kp SEMI &kp APOS
&kp LCTRL &kp Z &kp X &kp C &kp V &kp B &kp C_PP &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp RET
&kp C_MUTE &kp F2 &kp F11 &kp LGUI &kp SPACE &kp LSHFT &kp ENTER &kp SPACE &kp BSPC &kp LALT &kp F13 &mo 3
>;

display-name = "LoL";
sensor-bindings = <&inc_dec_kp C_VOLUME_UP C_VOL_DN>;
};

// Layer 8 — GAME_DOOM (modern, GZDoom-style WASD + mouse).
// Same chassis as MC. ` (grave) at pos 0 = console.
// E (use) and F (alt-use) are reachable from WASD home on the left half.
layer_8 {
bindings = <
&kp GRAVE &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp C_VOL_UP &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &kp MINUS
&kp TAB &kp Q &kp W &kp E &kp R &kp T &kp C_VOL_DN &kp Y &kp U &kp I &kp O &kp P &kp EQUAL
&kp ESC &kp A &kp S &kp D &kp F &kp G &kp C_MUTE &kp H &kp J &kp K &kp L &kp SEMI &kp APOS
&kp LCTRL &kp Z &kp X &kp C &kp V &kp B &kp C_PP &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp RET
&kp C_MUTE &kp F2 &kp F11 &kp LGUI &kp SPACE &kp LSHFT &kp ENTER &kp SPACE &kp BSPC &kp LALT &kp F13 &mo 3
>;

display-name = "DOOM";
sensor-bindings = <&inc_dec_kp C_VOLUME_UP C_VOL_DN>;
};

// Layer 9 — GAME_CS2 (Counter-Strike 2).
// Same chassis as MC. ` (grave) at pos 0 = developer console.
// Default binds: B buy, R reload, Q last weapon, E use, G drop, all
// at their natural letter positions on the left/right half.
layer_9 {
bindings = <
&kp GRAVE &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp C_VOL_UP &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &kp MINUS
&kp TAB &kp Q &kp W &kp E &kp R &kp T &kp C_VOL_DN &kp Y &kp U &kp I &kp O &kp P &kp EQUAL
&kp ESC &kp A &kp S &kp D &kp F &kp G &kp C_MUTE &kp H &kp J &kp K &kp L &kp SEMI &kp APOS
&kp LCTRL &kp Z &kp X &kp C &kp V &kp B &kp C_PP &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp RET
&kp C_MUTE &kp F2 &kp F11 &kp LGUI &kp SPACE &kp LSHFT &kp ENTER &kp SPACE &kp BSPC &kp LALT &kp F13 &mo 3
>;

display-name = "CS2";
sensor-bindings = <&inc_dec_kp C_VOLUME_UP C_VOL_DN>;
};
};
};
Loading
Loading