summaryrefslogtreecommitdiff
path: root/config/includes
diff options
context:
space:
mode:
Diffstat (limited to 'config/includes')
-rw-r--r--config/includes/combos.dtsi183
-rw-r--r--config/includes/mouse_keys.dtsi15
-rw-r--r--config/includes/mouse_tp.dtsi142
3 files changed, 340 insertions, 0 deletions
diff --git a/config/includes/combos.dtsi b/config/includes/combos.dtsi
new file mode 100644
index 0000000..f24cffb
--- /dev/null
+++ b/config/includes/combos.dtsi
@@ -0,0 +1,183 @@
+#define COMBO_TERM_FAST 35
+#define COMBO_TERM_SLOW 40
+#define COMBO_PRIOR_IDLE 100
+
+/ {
+ combos {
+ compatible = "zmk,combos";
+
+ combo_bracket_v_round_l {
+ timeout-ms = <COMBO_TERM_FAST>;
+ require-prior-idle-ms = <COMBO_PRIOR_IDLE>;
+ key-positions = <LT1 LM1>;
+ layers = <BASE BASE_QWERTY SYM NUM NUM_WORD>;
+ bindings = <&kp LPAR>;
+ };
+
+ combo_bracket_v_round_r {
+ timeout-ms = <COMBO_TERM_FAST>;
+ require-prior-idle-ms = <COMBO_PRIOR_IDLE>;
+ key-positions = <RT1 RM1>;
+ layers = <BASE BASE_QWERTY SYM NUM NUM_WORD>;
+ bindings = <&kp RPAR>;
+ };
+
+ combo_bracket_v_square_l {
+ timeout-ms = <COMBO_TERM_SLOW>;
+ require-prior-idle-ms = <COMBO_PRIOR_IDLE>;
+ key-positions = <LT2 LM2>;
+ layers = <BASE BASE_QWERTY SYM NUM NUM_WORD>;
+ bindings = <&kp LBKT>;
+ };
+
+ combo_bracket_v_square_r {
+ timeout-ms = <COMBO_TERM_SLOW>;
+ require-prior-idle-ms = <COMBO_PRIOR_IDLE>;
+ key-positions = <RT2 RM2>;
+ layers = <BASE BASE_QWERTY SYM NUM NUM_WORD>;
+ bindings = <&kp RBKT>;
+ };
+
+ combo_bracket_v_curly_l {
+ timeout-ms = <COMBO_TERM_SLOW>;
+ require-prior-idle-ms = <COMBO_PRIOR_IDLE>;
+ key-positions = <LT3 LM3>;
+ layers = <BASE BASE_QWERTY SYM NUM NUM_WORD>;
+ bindings = <&kp LBRC>;
+ };
+
+ combo_bracket_v_curly_r {
+ timeout-ms = <COMBO_TERM_SLOW>;
+ require-prior-idle-ms = <COMBO_PRIOR_IDLE>;
+ key-positions = <RT3 RM3>;
+ layers = <BASE BASE_QWERTY SYM NUM NUM_WORD>;
+ bindings = <&kp RBRC>;
+ };
+
+ combo_bracket_v_angled_l {
+ timeout-ms = <COMBO_TERM_SLOW>;
+ require-prior-idle-ms = <COMBO_PRIOR_IDLE>;
+ key-positions = <LM1 LB1>;
+ layers = <BASE BASE_QWERTY SYM NUM NUM_WORD>;
+ bindings = <&kp LT>;
+ };
+
+ combo_bracket_v_angled_r {
+ timeout-ms = <COMBO_TERM_SLOW>;
+ require-prior-idle-ms = <COMBO_PRIOR_IDLE>;
+ key-positions = <RM1 RB1>;
+ layers = <BASE BASE_QWERTY SYM NUM NUM_WORD>;
+ bindings = <&kp GT>;
+ };
+
+ combo_capsword {
+ timeout-ms = <COMBO_TERM_SLOW>;
+ require-prior-idle-ms = <COMBO_PRIOR_IDLE>;
+ key-positions = <LM1 RM1>;
+ layers = <BASE BASE_QWERTY>;
+
+#ifdef HAS_CAPSLOCK
+ bindings = <&caps_word_capslock >;
+#else
+ bindings = <&caps_word>;
+#endif
+ };
+
+ combo_return {
+ timeout-ms = <COMBO_TERM_FAST>;
+ require-prior-idle-ms = <COMBO_PRIOR_IDLE>;
+ key-positions = <LH2 LH1 LH0>;
+ layers = <BASE BASE_QWERTY NAV NUM SYM>;
+ bindings = <&kp RET>;
+ };
+
+ combo_bspc {
+ timeout-ms = <COMBO_TERM_FAST>;
+ require-prior-idle-ms = <COMBO_PRIOR_IDLE>;
+ key-positions = <LH1 LH0>;
+ layers = <BASE BASE_QWERTY NAV NUM SYM>;
+ bindings = <&kp BSPC>;
+ };
+
+ // combo_grave {
+ // timeout-ms = <COMBO_TERM_SLOW>;
+ // require-prior-idle-ms = <COMBO_PRIOR_IDLE>;
+ // key-positions = <RM3 RM4>;
+ // layers = <>;
+ // bindings = <&kp GRAVE>;
+ // };
+
+ // combo_md_code_block {
+ // timeout-ms = <COMBO_TERM_SLOW>;
+ // require-prior-idle-ms = <COMBO_PRIOR_IDLE>;
+ // key-positions = <RM2 RM3 RM4>;
+ // layers = <>;
+ // bindings = <&m_type_md_code_block>;
+ // };
+
+ combo_tog_nav_word {
+ timeout-ms = <COMBO_TERM_SLOW>;
+ require-prior-idle-ms = <COMBO_PRIOR_IDLE>;
+ key-positions = <LM3 LM2 LM1>;
+ layers = <BASE BASE_QWERTY NUM NUM_WORD>;
+
+ #ifdef HAS_UROB
+ bindings = <&nav_word>;
+ #else
+ bindings = <&tog NAV_WORD>;
+ #endif
+
+ };
+
+ combo_tog_num_word {
+ timeout-ms = <COMBO_TERM_SLOW>;
+ require-prior-idle-ms = <COMBO_PRIOR_IDLE>;
+ key-positions = <LB3 LB2 LB1>;
+ layers = <BASE BASE_QWERTY NAV NAV_WORD>;
+
+ #ifdef HAS_UROB
+ bindings = <&num_word>;
+ #else
+ bindings = <&tog NUM_WORD>;
+ #endif
+
+ };
+
+#ifdef HAS_MOUSE_TP
+ combo_tog_mouse_settings_l {
+ timeout-ms = <COMBO_TERM_SLOW>;
+ // require-prior-idle-ms = <COMBO_PRIOR_IDLE>;
+ key-positions = <LT2 LT3 LT4>;
+ layers = <BASE BASE_QWERTY NAV NAV_WORD MOUSE_KEYS>;
+ bindings = <&tog MOUSE_SET>;
+ };
+
+ combo_tog_mouse_settings_r {
+ timeout-ms = <COMBO_TERM_SLOW>;
+ // require-prior-idle-ms = <COMBO_PRIOR_IDLE>;
+ key-positions = <RT2 RT3 RT4>;
+ layers = <BASE BASE_QWERTY NAV NAV_WORD MOUSE_KEYS>;
+ bindings = <&tog MOUSE_SET>;
+ };
+#endif
+
+#ifdef HAS_MOUSE_KEYS
+ combo_tog_mouse_keys_l {
+ timeout-ms = <COMBO_TERM_SLOW>;
+ // require-prior-idle-ms = <COMBO_PRIOR_IDLE>;
+ key-positions = <LM2 LM3 LM4>;
+ layers = <BASE BASE_QWERTY NAV NAV_WORD MOUSE_KEYS>;
+ bindings = <&tog MOUSE_KEYS>;
+ };
+
+ combo_tog_mouse_keys_r {
+ timeout-ms = <COMBO_TERM_SLOW>;
+ // require-prior-idle-ms = <COMBO_PRIOR_IDLE>;
+ key-positions = <RM2 RM3 RM4>;
+ layers = <BASE BASE_QWERTY NAV NAV_WORD MOUSE_KEYS>;
+ bindings = <&tog MOUSE_KEYS>;
+ };
+#endif
+
+ };
+};
diff --git a/config/includes/mouse_keys.dtsi b/config/includes/mouse_keys.dtsi
new file mode 100644
index 0000000..aa98ed4
--- /dev/null
+++ b/config/includes/mouse_keys.dtsi
@@ -0,0 +1,15 @@
+#ifdef HAS_MOUSE_KEYS
+ #include <dt-bindings/zmk/mouse.h>
+#endif
+
+
+// Below are settings and behavior defines for mouse keys.
+&mmv {
+ acceleration-exponent = <1>; // Default: 1
+ time-to-max-speed-ms = <300>; // Default: 300
+};
+
+&msc {
+ acceleration-exponent = <0>; // Default: 0
+ time-to-max-speed-ms = <300>; // Default: 300
+};
diff --git a/config/includes/mouse_tp.dtsi b/config/includes/mouse_tp.dtsi
new file mode 100644
index 0000000..52856ca
--- /dev/null
+++ b/config/includes/mouse_tp.dtsi
@@ -0,0 +1,142 @@
+#ifdef HAS_MOUSE_TP
+ #include <dt-bindings/zmk/mouse_settings.h>
+
+ /*
+ * Key Behaviors to adjust settings
+ */
+
+ // They key codes below can be used to adjust the TP settings at runtime
+ // without needing to recompile the firmware.
+ //
+ // The values will be logged and saved in the config on the controller flash
+ // after 60s (CONFIG_ZMK_SETTINGS_SAVE_DEBOUNCE).
+ //
+ // On boot the settings will be restored again.
+ //
+ // If you prefer a more explicit way of configuration, you can also hardcode
+ // these settings in `&mouse_ps2`.
+ //
+ // If you set these settings in `&mouse_ps2`, you will still be able to
+ // adjust the values during runtime with these key codes, but after
+ // restarting the board the values in `&mouse_ps2` will be restored and not
+ // the ones stored in the flash using the key codes.
+
+
+ // How sensitive the trackpoint is
+ #define U_MSS_TP_S_I &mms MS_TP_SENSITIVITY_INCR
+ #define U_MSS_TP_S_D &mms MS_TP_SENSITIVITY_DECR
+
+
+ // The maximum speed the trackpoint will accelerate to
+ #define U_MSS_TP_V6_I &mms MS_TP_VALUE6_INCR
+ #define U_MSS_TP_V6_D &mms MS_TP_VALUE6_DECR
+
+
+ // I am not quite sure tbh... default seems fine.
+ #define U_MSS_TP_NI_I &mms MS_TP_NEG_INERTIA_INCR
+ #define U_MSS_TP_NI_D &mms MS_TP_NEG_INERTIA_DECR
+
+
+ // How hard you have to press to activate the "Press To Select" feature that
+ // lets you tap or press on the trackpoint to click.
+ //
+ // Not all trackpoints support it and you have to enable
+ // `tp-press-to-select;` in `&mouse_ps2` first.
+ #define U_MSS_TP_PT_I &mms MS_TP_PTS_THRESHOLD_INCR
+ #define U_MSS_TP_PT_D &mms MS_TP_PTS_THRESHOLD_DECR
+
+
+ // If you mess up the settings, you can use this key code to clear the
+ // settings from flash and re-set the default values on the TP.
+ //
+ // Make sure to wait at least CONFIG_ZMK_SETTINGS_SAVE_DEBOUNCE seconds (60
+ // by default) before restarting the board to ensure the settings are
+ // written to flash storage.
+ #define U_MSS_RESET &mms MS_RESET
+
+
+ // If you prefer to set the settings in `&mouse_ps2`, you can use the key
+ // codes above to find the settings you like the most and then press this
+ // key code to output the settings to the log.
+ //
+ // Then you can add those values to `&mouse_ps2`
+ #define U_MSS_LOG &mms MS_LOG
+
+
+ /*
+ * Driver-specific configuration
+ */
+
+ &mouse_ps2 {
+ // Enables scroll wheel on mouse devices supporting the Intellimouse
+ // extension.
+ // scroll-mode;
+
+
+ // Disables clicking. Useful when using a PS2 driver that is prone to
+ // erros in transmissions to reduce accidental clicks.
+ // disable-clicking;
+
+ // The frequency at which the mouse samples and sends data (in hz).
+ // The default rate is 100. You can try lowering it if you experience
+ // connection errors.
+ //
+ // Higher values than 100 are no improvement in my experience, but will
+ // increase battery life and potentially errors in transmissions.
+ //
+ // These values are allowed: 10,20,40,60,80,100,200
+ // sampling-rate = <60>;
+
+
+ // Enable clicking by tapping on the TP. Not all TPs support this.
+ // tp-press-to-select;
+ // tp-press-to-select-threshold = <10>;
+
+
+ // How sensitive the TP is (Default: 128)
+ tp-sensitivity = <135>;
+
+
+ // The maximum mouse movement speed the TP will accelarate to (Default: 97)
+ tp-val6-upper-speed = <182>;
+
+
+ // Not quite sure what it does tbh :) (Default: 6)
+ tp-neg-inertia = <6>;
+
+
+ // Adjusts axis settings on the TP
+ // Works only on some trackpoints, but may be properly considered by the
+ // trackpoint's acceleration features (which may or may not have an
+ // impact). Alternatively consider achieving the same effect using the
+ // `zmk,input-configs` feature.
+ // tp-xy-swap;
+ // tp-x-invert;
+ // tp-y-invert;
+
+ };
+
+ /*
+ * Input Config
+ */
+
+ &mouse_ps2_config {
+ xy-swap;
+ x-invert;
+ y-invert;
+
+ // Set the layer that should automatically activate when the mouse is
+ // moving.
+ layer-toggle = <MOUSE_TP>;
+
+ // How long the mouse needs to move for before the layer is activated (to
+ // avoid accidental activations while typing) (Default: 250)
+ layer-toggle-delay-ms = <250>;
+
+ // How long to wait, after the last mouse movement, before deactivating
+ // the layer (Default: 250)
+ layer-toggle-timeout-ms = <250>;
+ };
+
+
+#endif