From 46602e28ae824ad61a0359c2713ee9d4a590e197 Mon Sep 17 00:00:00 2001 From: Daniel Fichtinger Date: Sun, 5 Jan 2025 18:22:49 -0500 Subject: [PATCH] Squash merge mouse into main --- config/combos.dtsi | 51 ++---------------------------- config/combos_urob.dtsi | 67 ++++++++++++++++++++++++++++++++++++++++ config/corne.keymap | 61 +++++++++++++++++++++++++++--------- config/mouse.dtsi | 46 +++++++++++++++++++++++---- draw/keymap.png | Bin 619544 -> 817368 bytes 5 files changed, 157 insertions(+), 68 deletions(-) create mode 100644 config/combos_urob.dtsi diff --git a/config/combos.dtsi b/config/combos.dtsi index c29f0af..14138e9 100644 --- a/config/combos.dtsi +++ b/config/combos.dtsi @@ -14,54 +14,9 @@ #define COMBO_IDLE_SLOW 50 /* Horizontal combos - left hand */ -ZMK_COMBO(esc, &kp ESC, LT3 LT2, DEF NAV NUM, COMBO_TERM_FAST, COMBO_IDLE_FAST) -ZMK_COMBO(ret, &kp RETURN, LT2 LT1, DEF NAV NUM, COMBO_TERM_FAST, COMBO_IDLE_FAST) -ZMK_COMBO(mouse, &smart_mouse, LT3 LT1, DEF NAV NUM, COMBO_TERM_FAST, COMBO_IDLE_FAST) +ZMK_COMBO(esc, &kp ESC, LT3 LT2, DEF NAV SYM, COMBO_TERM_FAST, COMBO_IDLE_FAST) -// Combos overlapping HRMs are set up as hold-taps themselves to allow for instantaneous -// chording of mods. Custom hold-tap instances can be bootstrapped on the go using the -// 8-argument version of ZMK_COMBO defined in base.keymap. -ZMK_COMBO(tab, &hml LS(LALT)TAB, LM3 LM2, DEF NAV NUM, COMBO_TERM_FAST, COMBO_IDLE_FAST) -ZMK_COMBO(ldr, &leader, LM2 LM1, DEF NAV NUM, COMBO_TERM_FAST, COMBO_IDLE_FAST, LS(LCTRL), KEYS_R) -ZMK_COMBO(ldrsh, &leader_sft, LM3 LM2 LM1, DEF NAV NUM, COMBO_TERM_FAST, COMBO_IDLE_FAST, LS(LC(LALT)), KEYS_R) +/* ZMK_COMBO(ret, &kp RETURN, LT2 LT1, DEF NAV NUM, COMBO_TERM_FAST, COMBO_IDLE_FAST) */ -ZMK_COMBO(cut, &kp LC(X), LB3 LB1, DEF NAV NUM, COMBO_TERM_FAST, COMBO_IDLE_FAST) -ZMK_COMBO(copy, &kp LC(INS), LB3 LB2, DEF NAV NUM, COMBO_TERM_FAST, COMBO_IDLE_FAST) -ZMK_COMBO(paste, &kp LS(INS), LB2 LB1, DEF NAV NUM, COMBO_TERM_FAST, COMBO_IDLE_FAST) - -/* Horizontal combos - right hand */ -ZMK_COMBO(bspc, &kp BSPC, RT1 RT2, DEF NAV NUM, COMBO_TERM_FAST, COMBO_IDLE_FAST) -ZMK_COMBO(del, &kp DEL, RT2 RT3, DEF NAV NUM, COMBO_TERM_FAST, COMBO_IDLE_FAST) - -ZMK_COMBO(lpar, &lpar_lt, RM1 RM2, DEF NUM, COMBO_TERM_FAST, COMBO_IDLE_FAST, RS(LCTRL), KEYS_L) -ZMK_COMBO(rpar, &rpar_gt, RM2 RM3, DEF NUM, COMBO_TERM_FAST, COMBO_IDLE_FAST, RS(LALT), KEYS_L) -ZMK_COMBO(lt, &kp LT, RM1 RM2, NAV , COMBO_TERM_FAST, COMBO_IDLE_FAST) -ZMK_COMBO(gt, &kp GT, RM2 RM3, NAV , COMBO_TERM_FAST, COMBO_IDLE_FAST) - -ZMK_COMBO(lbkt, &kp LBKT, RB1 RB2, DEF NUM, COMBO_TERM_FAST, COMBO_IDLE_FAST) -ZMK_COMBO(rbkt, &kp RBKT, RB2 RB3, DEF NUM, COMBO_TERM_FAST, COMBO_IDLE_FAST) -ZMK_COMBO(lbrc, &kp LBRC, RB1 RB2, NAV , COMBO_TERM_FAST, COMBO_IDLE_FAST) -ZMK_COMBO(rbrc, &kp RBRC, RB2 RB3, NAV , COMBO_TERM_FAST, COMBO_IDLE_FAST) - -/* Vertical combos - left hand */ -ZMK_COMBO(at, &kp AT, LT3 LM3, DEF NAV NUM, COMBO_TERM_SLOW, COMBO_IDLE_SLOW) -ZMK_COMBO(hash, &kp HASH, LT2 LM2, DEF NAV NUM, COMBO_TERM_SLOW, COMBO_IDLE_SLOW) -ZMK_COMBO(dllr, &kp DLLR, LT1 LM1, DEF NAV NUM, COMBO_TERM_SLOW, COMBO_IDLE_SLOW) -ZMK_COMBO(prcnt, &kp PRCNT, LT0 LM0, DEF NAV NUM, COMBO_TERM_SLOW, COMBO_IDLE_SLOW) - -ZMK_COMBO(grave, &kp GRAVE, LM3 LB3, DEF NAV NUM, COMBO_TERM_SLOW, COMBO_IDLE_SLOW) -ZMK_COMBO(bslh, &kp BSLH, LM2 LB2, DEF NAV NUM, COMBO_TERM_SLOW, COMBO_IDLE_SLOW) -ZMK_COMBO(equal, &kp EQUAL, LM1 LB1, DEF NAV NUM, COMBO_TERM_SLOW, COMBO_IDLE_SLOW) -ZMK_COMBO(tilde, &kp TILDE, LM0 LB0, DEF NAV NUM, COMBO_TERM_SLOW, COMBO_IDLE_SLOW) - -/* Vertical combos - right hand */ -ZMK_COMBO(caret, &kp CARET, RT0 RM0, DEF NAV NUM, COMBO_TERM_SLOW, COMBO_IDLE_SLOW) -ZMK_COMBO(plus, &kp PLUS, RT1 RM1, DEF NAV NUM, COMBO_TERM_SLOW, COMBO_IDLE_SLOW) -ZMK_COMBO(star, &kp STAR, RT2 RM2, DEF NAV NUM, COMBO_TERM_SLOW, COMBO_IDLE_SLOW) -ZMK_COMBO(amps, &kp AMPS, RT3 RM3, DEF NAV NUM, COMBO_TERM_SLOW, COMBO_IDLE_SLOW) - -ZMK_COMBO(under, &kp UNDER, RM0 RB0, DEF NAV NUM, COMBO_TERM_SLOW, COMBO_IDLE_SLOW) -ZMK_COMBO(minus, &kp MINUS, RM1 RB1, DEF NAV NUM, COMBO_TERM_SLOW, COMBO_IDLE_SLOW) -ZMK_COMBO(fslh, &kp FSLH, RM2 RB2, DEF NAV NUM, COMBO_TERM_SLOW, COMBO_IDLE_SLOW) -ZMK_COMBO(pipe, &kp PIPE, RM3 RB3, DEF NAV NUM, COMBO_TERM_SLOW, COMBO_IDLE_SLOW) +/* ZMK_COMBO(mouse, &tog MOUSE, LT3 LT1, DEF NAV SYM, COMBO_TERM_FAST, COMBO_IDLE_FAST) */ diff --git a/config/combos_urob.dtsi b/config/combos_urob.dtsi new file mode 100644 index 0000000..c29f0af --- /dev/null +++ b/config/combos_urob.dtsi @@ -0,0 +1,67 @@ +/* KEY POSITIONS + + ╭─────────────────────╮ ╭─────────────────────╮ + │ LT4 LT3 LT2 LT1 LT0 │ │ RT0 RT1 RT2 RT3 RT4 │ + │ LM4 LM3 LM2 LM1 LM0 │ │ RM0 RM1 RM2 RM3 RM4 │ + │ LB4 LB3 LB2 LB1 LB0 │ │ RB0 RB1 RB2 RB3 RB4 │ + ╰───────╮ LH2 LH1 LH0 │ │ RH0 RH1 RH2 ╭───────╯ + ╰─────────────╯ ╰─────────────╯ */ + +#define COMBO_TERM_FAST 18 +#define COMBO_TERM_SLOW 30 + +#define COMBO_IDLE_FAST 150 +#define COMBO_IDLE_SLOW 50 + +/* Horizontal combos - left hand */ +ZMK_COMBO(esc, &kp ESC, LT3 LT2, DEF NAV NUM, COMBO_TERM_FAST, COMBO_IDLE_FAST) +ZMK_COMBO(ret, &kp RETURN, LT2 LT1, DEF NAV NUM, COMBO_TERM_FAST, COMBO_IDLE_FAST) +ZMK_COMBO(mouse, &smart_mouse, LT3 LT1, DEF NAV NUM, COMBO_TERM_FAST, COMBO_IDLE_FAST) + +// Combos overlapping HRMs are set up as hold-taps themselves to allow for instantaneous +// chording of mods. Custom hold-tap instances can be bootstrapped on the go using the +// 8-argument version of ZMK_COMBO defined in base.keymap. +ZMK_COMBO(tab, &hml LS(LALT)TAB, LM3 LM2, DEF NAV NUM, COMBO_TERM_FAST, COMBO_IDLE_FAST) +ZMK_COMBO(ldr, &leader, LM2 LM1, DEF NAV NUM, COMBO_TERM_FAST, COMBO_IDLE_FAST, LS(LCTRL), KEYS_R) +ZMK_COMBO(ldrsh, &leader_sft, LM3 LM2 LM1, DEF NAV NUM, COMBO_TERM_FAST, COMBO_IDLE_FAST, LS(LC(LALT)), KEYS_R) + +ZMK_COMBO(cut, &kp LC(X), LB3 LB1, DEF NAV NUM, COMBO_TERM_FAST, COMBO_IDLE_FAST) +ZMK_COMBO(copy, &kp LC(INS), LB3 LB2, DEF NAV NUM, COMBO_TERM_FAST, COMBO_IDLE_FAST) +ZMK_COMBO(paste, &kp LS(INS), LB2 LB1, DEF NAV NUM, COMBO_TERM_FAST, COMBO_IDLE_FAST) + +/* Horizontal combos - right hand */ +ZMK_COMBO(bspc, &kp BSPC, RT1 RT2, DEF NAV NUM, COMBO_TERM_FAST, COMBO_IDLE_FAST) +ZMK_COMBO(del, &kp DEL, RT2 RT3, DEF NAV NUM, COMBO_TERM_FAST, COMBO_IDLE_FAST) + +ZMK_COMBO(lpar, &lpar_lt, RM1 RM2, DEF NUM, COMBO_TERM_FAST, COMBO_IDLE_FAST, RS(LCTRL), KEYS_L) +ZMK_COMBO(rpar, &rpar_gt, RM2 RM3, DEF NUM, COMBO_TERM_FAST, COMBO_IDLE_FAST, RS(LALT), KEYS_L) +ZMK_COMBO(lt, &kp LT, RM1 RM2, NAV , COMBO_TERM_FAST, COMBO_IDLE_FAST) +ZMK_COMBO(gt, &kp GT, RM2 RM3, NAV , COMBO_TERM_FAST, COMBO_IDLE_FAST) + +ZMK_COMBO(lbkt, &kp LBKT, RB1 RB2, DEF NUM, COMBO_TERM_FAST, COMBO_IDLE_FAST) +ZMK_COMBO(rbkt, &kp RBKT, RB2 RB3, DEF NUM, COMBO_TERM_FAST, COMBO_IDLE_FAST) +ZMK_COMBO(lbrc, &kp LBRC, RB1 RB2, NAV , COMBO_TERM_FAST, COMBO_IDLE_FAST) +ZMK_COMBO(rbrc, &kp RBRC, RB2 RB3, NAV , COMBO_TERM_FAST, COMBO_IDLE_FAST) + +/* Vertical combos - left hand */ +ZMK_COMBO(at, &kp AT, LT3 LM3, DEF NAV NUM, COMBO_TERM_SLOW, COMBO_IDLE_SLOW) +ZMK_COMBO(hash, &kp HASH, LT2 LM2, DEF NAV NUM, COMBO_TERM_SLOW, COMBO_IDLE_SLOW) +ZMK_COMBO(dllr, &kp DLLR, LT1 LM1, DEF NAV NUM, COMBO_TERM_SLOW, COMBO_IDLE_SLOW) +ZMK_COMBO(prcnt, &kp PRCNT, LT0 LM0, DEF NAV NUM, COMBO_TERM_SLOW, COMBO_IDLE_SLOW) + +ZMK_COMBO(grave, &kp GRAVE, LM3 LB3, DEF NAV NUM, COMBO_TERM_SLOW, COMBO_IDLE_SLOW) +ZMK_COMBO(bslh, &kp BSLH, LM2 LB2, DEF NAV NUM, COMBO_TERM_SLOW, COMBO_IDLE_SLOW) +ZMK_COMBO(equal, &kp EQUAL, LM1 LB1, DEF NAV NUM, COMBO_TERM_SLOW, COMBO_IDLE_SLOW) +ZMK_COMBO(tilde, &kp TILDE, LM0 LB0, DEF NAV NUM, COMBO_TERM_SLOW, COMBO_IDLE_SLOW) + +/* Vertical combos - right hand */ +ZMK_COMBO(caret, &kp CARET, RT0 RM0, DEF NAV NUM, COMBO_TERM_SLOW, COMBO_IDLE_SLOW) +ZMK_COMBO(plus, &kp PLUS, RT1 RM1, DEF NAV NUM, COMBO_TERM_SLOW, COMBO_IDLE_SLOW) +ZMK_COMBO(star, &kp STAR, RT2 RM2, DEF NAV NUM, COMBO_TERM_SLOW, COMBO_IDLE_SLOW) +ZMK_COMBO(amps, &kp AMPS, RT3 RM3, DEF NAV NUM, COMBO_TERM_SLOW, COMBO_IDLE_SLOW) + +ZMK_COMBO(under, &kp UNDER, RM0 RB0, DEF NAV NUM, COMBO_TERM_SLOW, COMBO_IDLE_SLOW) +ZMK_COMBO(minus, &kp MINUS, RM1 RB1, DEF NAV NUM, COMBO_TERM_SLOW, COMBO_IDLE_SLOW) +ZMK_COMBO(fslh, &kp FSLH, RM2 RB2, DEF NAV NUM, COMBO_TERM_SLOW, COMBO_IDLE_SLOW) +ZMK_COMBO(pipe, &kp PIPE, RM3 RB3, DEF NAV NUM, COMBO_TERM_SLOW, COMBO_IDLE_SLOW) + diff --git a/config/corne.keymap b/config/corne.keymap index 7116516..3ac8857 100644 --- a/config/corne.keymap +++ b/config/corne.keymap @@ -4,11 +4,20 @@ * SPDX-License-Identifier: MIT */ +#define DEF 0 +#define NAV 2 +#define SYM 1 +#define META 3 +#define MOUSE 4 + +#include "zmk-helpers/key-labels/42.h" #include #include #include #include "zmk-helpers/helper.h" -#include "zmk-helpers/key-labels/42.h" +#include "mouse.dtsi" +#include "combos.dtsi" + &sk { // sticky-key config release-after-ms = <900>; // release after 0.9s @@ -39,6 +48,12 @@ ZMK_TAP_DANCE(alt_mod, bindings = <&ht_sk LALT LGUI>, <&kp LGUI>; ) +/* ZMK_TRI_STATE( */ +/* smart_mouse, bindings = <&tog MOUSE>, <&none>, <&tog MOUSE>; */ +/* ignored-key-positions = */ +/* ; */ +/* ignored-layers = ;) */ + ZMK_HOLD_TAP(ht_mo, flavor = "hold-preferred"; tapping-term-ms = <200>; @@ -74,19 +89,19 @@ ZMK_HOLD_TAP(ht_mo, default_layer { display-name = "base"; bindings = < -// ┌──────┬───┬───┬────────────┬───────────────────────┬─────────────┐ ┌─────────────┬──────────────┬──────┬───┬───┬────────────┐ -// │ esc │ Q │ W │ F │ P │ B │ │ J │ L │ U │ Y │ ; │ lctl(lsft) │ -// ├──────┼───┼───┼────────────┼───────────────────────┼─────────────┤ ├─────────────┼──────────────┼──────┼───┼───┼────────────┤ -// │ bspc │ A │ R │ S │ T │ G │ │ M │ N │ E │ I │ O │ ' │ -// ├──────┼───┼───┼────────────┼───────────────────────┼─────────────┤ ├─────────────┼──────────────┼──────┼───┼───┼────────────┤ -// │ lsft │ Z │ X │ C │ D │ V │ │ K │ H │ , │ . │ / │ lalt │ -// └──────┴───┴───┼────────────┼───────────────────────┼─────────────┤ ├─────────────┼──────────────┼──────┼───┴───┴────────────┘ -// │ &smart_mod │ &rpi left_CONTROL spc │ &smart_shft │ │ &smart_shft │ &ht_mo 2 ent │ mo 1 │ -// └────────────┴───────────────────────┴─────────────┘ └─────────────┴──────────────┴──────┘ - &kp ESC &kp Q &kp W &kp F &kp P &kp B &kp J &kp L &kp U &kp Y &kp SEMICOLON &kp LC(LSHFT) - &kp BSPC &kp A &kp R &kp S &kp T &kp G &kp M &kp N &kp E &kp I &kp O &kp SQT - &kp LSHFT &kp Z &kp X &kp C &kp D &kp V &kp K &kp H &kp COMMA &kp DOT &kp FSLH &kp LALT - &smart_mod &rpi LEFT_CONTROL SPACE &smart_shft &smart_shft &ht_mo 2 ENTER &mo 1 +// ┌──────┬───┬───┬────────────┬───────────────────────┬─────────────┐ ┌─────────────┬────────────────┬────────┬───┬───┬────────────┐ +// │ esc │ Q │ W │ F │ P │ B │ │ J │ L │ U │ Y │ ; │ lctl(lsft) │ +// ├──────┼───┼───┼────────────┼───────────────────────┼─────────────┤ ├─────────────┼────────────────┼────────┼───┼───┼────────────┤ +// │ bspc │ A │ R │ S │ T │ G │ │ M │ N │ E │ I │ O │ ' │ +// ├──────┼───┼───┼────────────┼───────────────────────┼─────────────┤ ├─────────────┼────────────────┼────────┼───┼───┼────────────┤ +// │ lsft │ Z │ X │ C │ D │ V │ │ K │ H │ , │ . │ / │ lalt │ +// └──────┴───┴───┼────────────┼───────────────────────┼─────────────┤ ├─────────────┼────────────────┼────────┼───┴───┴────────────┘ +// │ &smart_mod │ &rpi left_CONTROL spc │ &smart_shft │ │ &smart_shft │ &ht_mo NAV ent │ mo SYM │ +// └────────────┴───────────────────────┴─────────────┘ └─────────────┴────────────────┴────────┘ + &kp ESC &kp Q &kp W &kp F &kp P &kp B &kp J &kp L &kp U &kp Y &kp SEMICOLON &kp LC(LSHFT) + &kp BSPC &kp A &kp R &kp S &kp T &kp G &kp M &kp N &kp E &kp I &kp O &kp SQT + &kp LSHFT &kp Z &kp X &kp C &kp D &kp V &kp K &kp H &kp COMMA &kp DOT &kp FSLH &kp LALT + &smart_mod &rpi LEFT_CONTROL SPACE &smart_shft &smart_shft &ht_mo NAV ENTER &mo SYM >; }; @@ -144,5 +159,23 @@ ZMK_HOLD_TAP(ht_mo, &trans &trans &trans &trans &trans &trans >; }; + mouse_layer { + display-name = "mouse"; + bindings = < +// ┌─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬────────────────┬────────────────┬────────────────┬─────┬─────┐ +// │ │ │ │ │ │ │ │ │ │ &mmv MOVE_up │ │ │ │ +// ├─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼────────────────┼────────────────┼────────────────┼─────┼─────┤ +// │ │ │ │ │ │ │ │ │ &mmv MOVE_left │ &mmv MOVE_down │ &mmv MOVE_rght │ │ │ +// ├─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼────────────────┼────────────────┼────────────────┼─────┼─────┤ +// │ │ │ │ │ │ │ │ │ lclk │ mclk │ rclk │ │ │ +// └─────┴─────┴─────┼─────┼─────┼─────┤ ├─────┼────────────────┼────────────────┼────────────────┴─────┴─────┘ +// │ │ │ │ │ │ &msc SCRL_up │ &msc SCRL_down │ +// └─────┴─────┴─────┘ └─────┴────────────────┴────────────────┘ + &trans &trans &trans &trans &trans &trans &trans &trans &mmv MOVE_UP &trans &trans &trans + &trans &trans &trans &trans &trans &trans &trans &mmv MOVE_LEFT &mmv MOVE_DOWN &mmv MOVE_RIGHT &trans &trans + &trans &trans &trans &trans &trans &trans &trans &mkp LCLK &mkp MCLK &mkp RCLK &trans &trans + &trans &trans &trans &trans &msc SCRL_UP &msc SCRL_DOWN + >; + }; }; }; diff --git a/config/mouse.dtsi b/config/mouse.dtsi index 7b805fa..fa21124 100644 --- a/config/mouse.dtsi +++ b/config/mouse.dtsi @@ -1,22 +1,56 @@ // Settings tuned for 3840 x 2160 display resolution -#define ZMK_POINTING_DEFAULT_MOVE_VAL 1500 // 600 -#define ZMK_POINTING_DEFAULT_SCRL_VAL 120 // 10 +#define ZMK_POINTING_DEFAULT_MOVE_VAL 600 // 600 +#define ZMK_POINTING_DEFAULT_SCRL_VAL 20 // 10 #include +#include +#include -// Config from @caksoylar, defaults in comments +// Based on @caksoylar's config, defaults in comments &mmv { acceleration-exponent = <1>; // 1 - time-to-max-speed-ms = <500>; // 300 + time-to-max-speed-ms = <300>; // 300 delay-ms = <0>; // 0 }; &msc { - acceleration-exponent = <1>; // 0 - time-to-max-speed-ms = <800>; // 300 + acceleration-exponent = <0>; // 0 + time-to-max-speed-ms = <300>; // 300 delay-ms = <0>; // 0 }; +&mmv_input_listener { + warp { + layers =