diff --git a/config/corne.conf b/config/corne.conf index f6d37728..4dd41486 100644 --- a/config/corne.conf +++ b/config/corne.conf @@ -28,3 +28,6 @@ CONFIG_ZMK_BLE_EXPERIMENTAL_FEATURES=y CONFIG_ZMK_SPLIT_BLE_CENTRAL_BATTERY_LEVEL_PROXY=y CONFIG_ZMK_SPLIT_BLE_CENTRAL_BATTERY_LEVEL_FETCHING=y +# Enable mouse emulation +CONFIG_ZMK_POINTING=y + diff --git a/config/corneish_zen.conf b/config/corneish_zen.conf index 4137a088..0d04c2f8 100644 --- a/config/corneish_zen.conf +++ b/config/corneish_zen.conf @@ -41,3 +41,6 @@ CONFIG_ZMK_SPLIT_BLE_CENTRAL_BATTERY_LEVEL_FETCHING=y # Use alternative refresh method # CONFIG_IL0323_ALTERNATIVE_REFRESH=y +# Enable mouse emulation +CONFIG_ZMK_POINTING=y + diff --git a/img/corneish_zen.svg b/img/corneish_zen.svg index ebca3a22..07c0b01e 100644 --- a/img/corneish_zen.svg +++ b/img/corneish_zen.svg @@ -1,4 +1,4 @@ - + /* start glyphs */ @@ -21,15 +21,27 @@ + + + + + + + + + + + + @@ -72,6 +84,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -935,9 +968,9 @@ path.combo { - - - + + + @@ -1111,7 +1144,188 @@ path.combo { - + +Ms + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Fn diff --git a/img/corneish_zen.yaml b/img/corneish_zen.yaml index a3dbb5a1..d522f668 100644 --- a/img/corneish_zen.yaml +++ b/img/corneish_zen.yaml @@ -66,7 +66,7 @@ layers: - {t: '$$mdi:arrow-down-bold$$', h: '$$mdi:apple-keyboard-command$$'} - {t: '$$mdi:arrow-up-bold$$', h: '$$mdi:apple-keyboard-option$$'} - {t: '$$mdi:arrow-right-bold$$', h: '$$mdi:apple-keyboard-control$$'} - - {t: '$$mdi:transfer$$', type: trans} + - $$mdi:mouse-scroll-wheel$$ - {t: '$$mdi:transfer$$', type: trans} - {t: '$$mdi:transfer$$', type: trans} - {t: '$$mdi:transfer$$', type: trans} @@ -86,6 +86,49 @@ layers: - {t: '$$mdi:close-box$$', h: L2} - {t: '$$mdi:transfer$$', type: trans} - {t: '$$mdi:transfer$$', type: trans} + Ms: + - {t: '$$mdi:transfer$$', type: trans} + - {t: '$$mdi:transfer$$', type: trans} + - {t: '$$mdi:transfer$$', type: trans} + - {t: '$$mdi:transfer$$', type: trans} + - {t: '$$mdi:transfer$$', type: trans} + - {t: '$$mdi:transfer$$', type: trans} + - {t: '$$mdi:pan-left$$', s: '$$mdi:mouse-scroll-wheel$$'} + - {t: '$$mdi:pan-down$$', s: '$$mdi:mouse-scroll-wheel$$'} + - {t: '$$mdi:pan-up$$', s: '$$mdi:mouse-scroll-wheel$$'} + - {t: '$$mdi:pan-right$$', s: '$$mdi:mouse-scroll-wheel$$'} + - {t: '$$mdi:transfer$$', type: trans} + - {t: '$$mdi:transfer$$', type: trans} + - {t: '$$mdi:transfer$$', type: trans} + - {t: '$$mdi:transfer$$', type: trans} + - {t: '$$mdi:transfer$$', type: trans} + - {t: '$$mdi:transfer$$', type: trans} + - {t: '$$mdi:transfer$$', type: trans} + - {t: '$$mdi:transfer$$', type: trans} + - {t: '$$mdi:arrow-left-thin$$', s: '$$mdi:mouse-scroll-wheel$$'} + - {t: '$$mdi:arrow-down-thin$$', s: '$$mdi:mouse-scroll-wheel$$'} + - {t: '$$mdi:arrow-up-thin$$', s: '$$mdi:mouse-scroll-wheel$$'} + - {t: '$$mdi:arrow-right-thin$$', s: '$$mdi:mouse-scroll-wheel$$'} + - {t: '$$mdi:transfer$$', type: trans} + - {t: '$$mdi:transfer$$', type: trans} + - {t: '$$mdi:transfer$$', type: trans} + - {t: '$$mdi:transfer$$', type: trans} + - {t: '$$mdi:transfer$$', type: trans} + - {t: '$$mdi:transfer$$', type: trans} + - {t: '$$mdi:transfer$$', type: trans} + - {t: '$$mdi:transfer$$', type: trans} + - {t: '$$mdi:transfer$$', type: trans} + - {t: '$$mdi:transfer$$', type: trans} + - {t: '$$mdi:transfer$$', type: trans} + - {t: '$$mdi:transfer$$', type: trans} + - {t: '$$mdi:transfer$$', type: trans} + - {t: '$$mdi:transfer$$', type: trans} + - {t: '$$mdi:transfer$$', type: trans} + - {t: '$$mdi:transfer$$', type: trans} + - {t: '$$mdi:transfer$$', type: trans} + - {t: '$$mdi:transfer$$', type: trans} + - $$mdi:mouse-left-click-outline$$ + - $$mdi:mouse-right-click-outline$$ Fn: - {t: '$$mdi:toggle-switch$$', h: '$$mdi:bluetooth$$', s: '$$mdi:usb$$'} - F1 diff --git a/keymap-drawer/config.yaml b/keymap-drawer/config.yaml index 8bd4a3b6..133e3bc4 100644 --- a/keymap-drawer/config.yaml +++ b/keymap-drawer/config.yaml @@ -35,6 +35,35 @@ parse_config: tap: $$mdi:minus-circle-outline$$ type: none + # Mouse + "&smart_mouse": $$mdi:mouse-scroll-wheel$$ + "&mmv MOVE_UP": + tap: $$mdi:arrow-up-thin$$ + shifted: $$mdi:mouse-scroll-wheel$$ + "&mmv MOVE_DOWN": + tap: $$mdi:arrow-down-thin$$ + shifted: $$mdi:mouse-scroll-wheel$$ + "&mmv MOVE_LEFT": + tap: $$mdi:arrow-left-thin$$ + shifted: $$mdi:mouse-scroll-wheel$$ + "&mmv MOVE_RIGHT": + tap: $$mdi:arrow-right-thin$$ + shifted: $$mdi:mouse-scroll-wheel$$ + "&msc SCRL_UP": + tap: $$mdi:pan-up$$ + shifted: $$mdi:mouse-scroll-wheel$$ + "&msc SCRL_DOWN": + tap: $$mdi:pan-down$$ + shifted: $$mdi:mouse-scroll-wheel$$ + "&msc SCRL_LEFT": + tap: $$mdi:pan-left$$ + shifted: $$mdi:mouse-scroll-wheel$$ + "&msc SCRL_RIGHT": + tap: $$mdi:pan-right$$ + shifted: $$mdi:mouse-scroll-wheel$$ + "&mkp LCLK": $$mdi:mouse-left-click-outline$$ + "&mkp RCLK": $$mdi:mouse-right-click-outline$$ + # Whitespace "&bkspc_del": type: backspace diff --git a/knucklehead/L2.dtsi b/knucklehead/L2.dtsi index 772b55a2..92b0ca93 100644 --- a/knucklehead/L2.dtsi +++ b/knucklehead/L2.dtsi @@ -14,7 +14,7 @@ &trans &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp C_PREV &kp C_VOL_DN &kp C_VOL_UP &kp C_NEXT &kp C_MUTE &trans // ├───────────────├───────────────┼───────────────┼───────────────┼───────────────┼───────────────┤ ├───────────────├───────────────┼───────────────┼───────────────┼───────────────┼───────────────┤ // │12 │13 │14 │15 │16 │17 │ │18 │19 │20 │21 │22 │23 │ - &trans &kp N6 &hrml LCTRL N7 &hrml LALT N8 &hrml LCMD N9 &hrml MEH N0 &hrmr MEH LEFT &hrmr LCMD DOWN &hrmr LALT UP &hrmr LCTRL RIGHT&trans &trans + &trans &kp N6 &hrml LCTRL N7 &hrml LALT N8 &hrml LCMD N9 &hrml MEH N0 &hrmr MEH LEFT &hrmr LCMD DOWN &hrmr LALT UP &hrmr LCTRL RIGHT&smart_mouse &trans // ├───────────────├───────────────┼───────────────┼───────────────┼───────────────┼───────────────┤ ├───────────────├───────────────┼───────────────┼───────────────┼───────────────┼───────────────┤ // │24 │25 │26 │27 │28 │29 │ │30 │31 │32 │33 │34 │35 │ &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans diff --git a/knucklehead/Ms.dtsi b/knucklehead/Ms.dtsi new file mode 100644 index 00000000..18e0be5d --- /dev/null +++ b/knucklehead/Ms.dtsi @@ -0,0 +1,28 @@ +/** + * Mouse Emulation Layer + */ + +/ { + keymap { + compatible = "zmk,keymap"; + + ms_layer { + display-name = "Ms"; + bindings = < +// ╭───────────────┬───────────────┬───────────────┬───────────────┬───────────────┬───────────────╮ ╭───────────────┬───────────────┬───────────────┬───────────────┬───────────────┬───────────────╮ +// │0 │1 │2 │3 │4 │5 │ │6 │7 │8 │9 │10 │11 │ + &trans &trans &trans &trans &trans &trans &msc SCRL_LEFT &msc SCRL_DOWN &msc SCRL_UP &msc SCRL_RIGHT &trans &trans +// ├───────────────├───────────────┼───────────────┼───────────────┼───────────────┼───────────────┤ ├───────────────├───────────────┼───────────────┼───────────────┼───────────────┼───────────────┤ +// │12 │13 │14 │15 │16 │17 │ │18 │19 │20 │21 │22 │23 │ + &trans &trans &trans &trans &trans &trans &mmv MOVE_LEFT &mmv MOVE_DOWN &mmv MOVE_UP &mmv MOVE_RIGHT &trans &trans +// ├───────────────├───────────────┼───────────────┼───────────────┼───────────────┼───────────────┤ ├───────────────├───────────────┼───────────────┼───────────────┼───────────────┼───────────────┤ +// │24 │25 │26 │27 │28 │29 │ │30 │31 │32 │33 │34 │35 │ + &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans +// ╰───────────────┴───────────────┴───────────────┼───────────────┼───────────────┼───────────────┤ ├───────────────├───────────────┼───────────────┼───────────────┴───────────────┴───────────────╯ +// │36 │37 │38 │ │39 │40 │41 │ + &trans &trans &trans &trans &mkp LCLK &mkp RCLK +// ╰───────────────┴───────────────┴───────────────╯ ╰───────────────┴───────────────┴───────────────╯ + >; + }; + }; +}; diff --git a/knucklehead/base.dtsi b/knucklehead/base.dtsi index 9f355ec9..9cac054c 100644 --- a/knucklehead/base.dtsi +++ b/knucklehead/base.dtsi @@ -4,11 +4,14 @@ #include #include #include +#include + // Layers #define L1 0 #define L2 1 -#define Fn 2 +#define Ms 2 +#define Fn 3 // Meh key #define MEH LS(LC(LALT)) @@ -39,5 +42,6 @@ // Other layers #include "L2.dtsi" +#include "Ms.dtsi" #include "Fn.dtsi" diff --git a/knucklehead/behaviors.dtsi b/knucklehead/behaviors.dtsi index 05c6b55b..fc9b8ccb 100644 --- a/knucklehead/behaviors.dtsi +++ b/knucklehead/behaviors.dtsi @@ -104,6 +104,20 @@ #binding-cells = <0>; }; + /* + - tap: &tog Ms + - tap x 2: &none + - tap x 3: &tog Ms + */ + /omit-if-no-ref/ smart_mouse: smart_mouse { + compatible = "zmk,behavior-tri-state"; + bindings = <&tog Ms>, <&none>, <&tog Ms>; + ignored-key-positions = <6 7 8 9 18 19 20 21 40 41>; + ignored-layers = ; + #binding-cells = <0>; + }; + + /* - tap: &kp - hold: &none