Squash merge mouse into main

This commit is contained in:
Daniel Fichtinger 2025-01-05 18:22:49 -05:00
parent 083bf20ae0
commit 46602e28ae
5 changed files with 157 additions and 68 deletions

View file

@ -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) */

67
config/combos_urob.dtsi Normal file
View file

@ -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)

View file

@ -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 <behaviors.dtsi>
#include <dt-bindings/zmk/bt.h>
#include <dt-bindings/zmk/keys.h>
#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 = */
/* <RM1 RM2 RM3 RT2 RB1 RB2 RB3 RH1 RH2>; */
/* ignored-layers = <MOUSE NAV SYM>;) */
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
// └────────────┴───────────────────────┴─────────────┘ └─────────────┴────────────────────┘
// └──────┴───┴───┼────────────┼───────────────────────┼─────────────┤ ├─────────────┼────────────────┼────────┼───┴───┴────────────┘
// │ &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 2 ENTER &mo 1
&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
>;
};
};
};

View file

@ -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 <dt-bindings/zmk/pointing.h>
#include <input/processors.dtsi>
#include <zephyr/dt-bindings/input/input-event-codes.h>
// 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 = <NAV>;
input-processors = <&zip_xy_scaler 3 1>;
};
precision {
layers = <SYM>;
input-processors = <&zip_xy_scaler 1 2>;
};
};
/ {
zip_scroll_scaler: zip_scroll_scaler {
compatible = "zmk,input-processor-scaler";
#input-processor-cells = <2>;
type = <INPUT_EV_REL>;
codes = <INPUT_REL_WHEEL INPUT_REL_HWHEEL>;
track-remainders;
};
};
&msc_input_listener {
warp {
layers = <NAV>;
input-processors = <&zip_scroll_scaler 2 1>;
};
precision {
layers = <SYM>;
input-processors = <&zip_scroll_scaler 1 2>;
};
};
#define U_MS_U &mmv MOVE_UP
#define U_MS_D &mmv MOVE_DOWN
#define U_MS_L &mmv MOVE_LEFT

Binary file not shown.

Before

Width:  |  Height:  |  Size: 605 KiB

After

Width:  |  Height:  |  Size: 798 KiB

Before After
Before After