Skip to content

Commit 74a6af3

Browse files
fixed my timing, it was more noticibly bad on zmk, maybe its the choc keys here too, but i will translate that to qmk kuz this is pretty good so far.
1 parent 7f5eab7 commit 74a6af3

File tree

7 files changed

+85
-60
lines changed

7 files changed

+85
-60
lines changed

TIMING_COMPARISON.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ Here is a side-by-side comparison of the timing-related settings from your QMK a
44

55
| Feature | QMK Setting | QMK Value(s) | ZMK Setting | ZMK Value | Notes |
66
| :--- | :--- | :--- | :--- | :--- | :--- |
7-
| **Global Tapping Term** | `TAPPING_TERM` | `175ms` | `tapping-term-ms` | `200ms` | Your base ZMK `tapping-term-ms` is slightly higher than in QMK. |
8-
| **Per-Key Tapping Term**| `get_tapping_term()` | `185ms` (pinkies), `165ms` (other) | *Not Implemented* | `200ms` (global) | Your ZMK config currently uses a single `200ms` term for all home row mods. We can create separate behaviors to match your QMK per-key settings. |
7+
| **Global Tapping Term** | `TAPPING_TERM` | `175ms` | `tapping-term-ms` | `175ms` | Your base ZMK `tapping-term-ms` now matches your QMK setting. |
8+
| **Per-Key Tapping Term**| `get_tapping_term()` | `185ms` (pinkies), `165ms` (other) | *Not Implemented* | `175ms` (global) | Your ZMK config currently uses a single `175ms` term for all home row mods. We can create separate behaviors to match your QMK per-key settings. |
99
| **Permissive Hold** | `PERMISSIVE_HOLD` | `enabled` | `flavor` | `"balanced"` | This is the correct ZMK equivalent and is **already implemented**. |
1010
| **Speculative Hold** | `SPECULATIVE_HOLD` | `enabled` | `hold-while-undecided` | `enabled` | This is the correct ZMK equivalent and is **already implemented**. |
11-
| **Flow Tap Term** | `FLOW_TAP_TERM` | `100ms` | `require-prior-idle-ms` | `150ms` | This is **already implemented**. The value is `50ms` higher in ZMK, which is less aggressive than your QMK setup (i.e., it will wait longer for idle before allowing a hold). |
12-
| **Quick Tap Term** | `QUICK_TAP_TERM` | `120ms` | `quick-tap-ms` | `175ms` | This is **already implemented**. This setting prevents accidental holds on double-taps. |
13-
| **Combo Term** | `COMBO_TERM` | `50ms` | `timeout-ms` | `50ms` | This is identical and **already implemented** in your combos. |
11+
| **Flow Tap Term** | `FLOW_TAP_TERM` | `100ms` | `require-prior-idle-ms` | `125ms` | This is **already implemented**. The value is `25ms` higher in ZMK, which is less aggressive than your QMK setup (i.e., it will wait longer for idle before allowing a hold). |
12+
| **Quick Tap Term** | `QUICK_TAP_TERM` | `120ms` | `quick-tap-ms` | `150ms` | This is **already implemented**. This setting prevents accidental holds on double-taps. |
13+
| **Combo Term** | `COMBO_TERM` | `50ms` | `timeout-ms` | `40ms` | This has been adjusted for faster combo activation and to reduce misfires. |

config/behaviors.dtsi

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
compatible = "zmk,behavior-hold-tap";
1111
#binding-cells = <2>;
1212
tapping-term-ms = <175>;
13-
quick-tap-ms = <120>;
14-
require-prior-idle-ms = <100>;
13+
quick-tap-ms = <150>;
14+
require-prior-idle-ms = <125>;
1515
flavor = "balanced";
1616
hold-while-undecided;
1717
bindings = <&kp>, <&kp>;
@@ -23,8 +23,8 @@
2323
compatible = "zmk,behavior-hold-tap";
2424
#binding-cells = <2>;
2525
tapping-term-ms = <175>;
26-
quick-tap-ms = <120>;
27-
require-prior-idle-ms = <100>;
26+
quick-tap-ms = <150>;
27+
require-prior-idle-ms = <125>;
2828
flavor = "balanced";
2929
hold-while-undecided;
3030
bindings = <&kp>, <&kp>;

config/combos.dtsi

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -115,57 +115,65 @@
115115
// =====================================================================================
116116
// Left-hand Shift (R+T])
117117
combo_rt_lshift: combo_rt_lshift {
118-
timeout-ms = <50>;
118+
timeout-ms = <40>;
119+
require-prior-idle-ms = <100>;
119120
key-positions = <0 1>;
120121
bindings = <&sk LSHFT>;
121122
layers = <BASE>;
122123
};
123124
// Left-hand Control (E+R)
124125
combo_er_lctrl: combo_er_lctrl {
125-
timeout-ms = <50>;
126+
timeout-ms = <40>;
127+
require-prior-idle-ms = <100>;
126128
key-positions = <0 1>;
127129
bindings = <&sk LCTRL>;
128130
layers = <BASE>;
129131
};
130132
// Left-hand Alt (W+E)
131133
combo_we_lalt: combo_we_lalt {
132-
timeout-ms = <50>;
134+
timeout-ms = <40>;
135+
require-prior-idle-ms = <100>;
133136
key-positions = <0 1>;
134137
bindings = <&sk LALT>;
135138
layers = <BASE>;
136139
};
137140
// Left-hand Super (Q+W)
138141
combo_qw_lgui: combo_qw_lgui {
139-
timeout-ms = <50>;
142+
timeout-ms = <40>;
143+
require-prior-idle-ms = <100>;
140144
key-positions = <0 1>;
141145
bindings = <&sk LGUI>;
142146
layers = <BASE>;
143147
};
144148
// =====================================================================================
145149
// Right-hand Shift (Y+U])
146150
combo_yu_rshift: combo_yu_rshift {
147-
timeout-ms = <50>;
151+
timeout-ms = <40>;
152+
require-prior-idle-ms = <100>;
148153
key-positions = <0 1>;
149154
bindings = <&sk RSHFT>;
150155
layers = <BASE>;
151156
};
152157
// Right-hand Control (U+I)
153158
combo_ui_rctrl: combo_ui_rctrl {
154-
timeout-ms = <50>;
159+
timeout-ms = <40>;
160+
require-prior-idle-ms = <100>;
155161
key-positions = <0 1>;
156162
bindings = <&sk RCTRL>;
157163
layers = <BASE>;
158164
};
159165
// Right-hand Alt (I+O)
160166
combo_io_ralt: combo_io_ralt {
161-
timeout-ms = <50>;
167+
timeout-ms = <40>;
168+
require-prior-idle-ms = <100>;
162169
key-positions = <0 1>;
163170
bindings = <&sk RALT>;
164171
layers = <BASE>;
165172
};
166173
// Right-hand Super (O+P)
167174
combo_op_rgui: combo_op_rgui {
168-
timeout-ms = <50>;
175+
timeout-ms = <40>;
176+
require-prior-idle-ms = <100>;
169177
key-positions = <0 1>;
170178
bindings = <&sk RGUI>;
171179
layers = <BASE>;

config/cradio.conf

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,11 @@ CONFIG_BT_CTLR_TX_PWR_PLUS_8=y
1212

1313
# test because of fucking stupid broadcasting bullshit
1414
#CONFIG_ZMK_BLE_EXPERIMENTAL_FEATURES=y
15+
16+
# debouncing test
17+
CONFIG_ZMK_KSCAN_DEBOUNCE_PRESS_MS=5
18+
CONFIG_ZMK_KSCAN_DEBOUNCE_RELEASE_MS=5
19+
20+
# nkro support, enable if we want, for now im leaving it uncommented to
21+
# see if it works in bios
22+
CONFIG_ZMK_HID_KEYBOARD_NKRO_EXTENDED_REPORT=y

config/sofle.conf

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,3 +55,11 @@ CONFIG_ZMK_POINTING=y
5555

5656
# Logging (uncomment for debugging, will use more battery)
5757
# CONFIG_ZMK_USB_LOGGING=y
58+
59+
# debouncing test
60+
CONFIG_ZMK_KSCAN_DEBOUNCE_PRESS_MS=5
61+
CONFIG_ZMK_KSCAN_DEBOUNCE_RELEASE_MS=5
62+
63+
# nkro support, enable if we want, for now im leaving it uncommented to
64+
# see if it works in bios
65+
CONFIG_ZMK_HID_KEYBOARD_NKRO_EXTENDED_REPORT=y

config/sofle_left.conf

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
1-
21
# Only enable display widgets on the central side (left half)
32
# The peripheral side (right half) does not have the necessary dependencies
43
# to build these widgets, leading to linker errors.
5-
# CONFIG_ZMK_WIDGET_BATTERY_STATUS=y
6-
# CONFIG_ZMK_WIDGET_BATTERY_STATUS_SHOW_PERCENTAGE=y
7-
# CONFIG_ZMK_WIDGET_OUTPUT_STATUS=y
8-
# CONFIG_ZMK_WIDGET_LAYER_STATUS=y
9-
# CONFIG_ZMK_WPM=y
10-
# CONFIG_ZMK_WIDGET_WPM_STATUS=y
4+
CONFIG_ZMK_WIDGET_BATTERY_STATUS=y
5+
CONFIG_ZMK_WIDGET_BATTERY_STATUS_SHOW_PERCENTAGE=y
6+
CONFIG_ZMK_WIDGET_OUTPUT_STATUS=y
7+
CONFIG_ZMK_WIDGET_LAYER_STATUS=y
8+
CONFIG_ZMK_WPM=y
9+
CONFIG_ZMK_WIDGET_WPM_STATUS=y

config/wrappers.dtsi

Lines changed: 38 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// config/wrappers.dtsi
2+
#include <dt-bindings/zmk/bt.h>
23
// clang-format off
34

45
/* Copyright 2025 naughtyusername
@@ -26,16 +27,17 @@
2627
*/
2728

2829

29-
#define BASE 0
30-
#define LOWER 1
31-
#define RAISE 2
32-
#define FUNC 3
33-
#define ADJUST 4
34-
#define GAMING 5
35-
#define GAMING2 6
36-
#define MOUSE 7
37-
#define ROGUELIKE 8
38-
#define SYS 9
30+
#define BASE 0 // Where we spend most our time
31+
#define LOWER 1 // NUMBERS
32+
#define RAISE 2 // SYMBOLS
33+
#define FUNC 3 // FUNCTIONS and NAV
34+
#define ADJUST 4 // Keyboard adjustments and layer director, caps/num lock
35+
#define GAMING 5 // GAMES
36+
#define GAMING2 6 // GAMES EXPANDED
37+
#define ROGUELIKE 7 // ROGUELIKE games, the ones that hate vim (also hard to vi key on a spiit kb on diagonal rl's)
38+
#define VIM 8 // VIMIUM keys. home row mod free
39+
#define SYS 9 // SYSTEM bluetooth connection center, system reboot, bootloader.
40+
#define MOUSE 10 // MOUSE keys, we dont really use. maybe on corne with trackpad.
3941

4042
// alias
4143
#define _______ &trans
@@ -187,12 +189,12 @@
187189
* bootloader system reset system reset bootloader
188190
* holding tog-base _ _ _ _ _ _ _ holding
189191
*/
190-
#define ___SYS_L1___ _______ _______ _______ _______ _______
191-
#define ___SYS_L2___ _______ _______ _______ _______ _______
192-
#define ___SYS_L3___ &tog BASE _______ _______ _______ _______
192+
#define ___SYS_L1___ &bt BT_CLR_ALL &bt BT_SEL 0 &bt BT_SEL 1 &bt BT_SEL 2 &bt BT_SEL 3
193+
#define ___SYS_L2___ &bootloader &sys_reset _______ _______ _______
194+
#define ___SYS_L3___ _______ &tog BASE _______ _______ _______
193195

194196
#define ___SYS_R1___ _______ _______ _______ _______ _______
195-
#define ___SYS_R2___ _______ _______ _______ _______ _______
197+
#define ___SYS_R2___ _______ _______ _______ &sys_reset &bootloader
196198
#define ___SYS_R3___ _______ _______ _______ _______ _______
197199

198200

@@ -245,13 +247,13 @@
245247
*
246248
* Format: OUTER_LEFT, <5 col macro>, OUTER_RIGHT
247249
*/
248-
#define ___BASE_L1_6___ _______ ___BASE_L1___
249-
#define ___BASE_L2_6___ &kp TAB ___BASE_L2___
250-
#define ___BASE_L3_6___ _______ ___BASE_L3___
250+
#define ___BASE_L1_6___ &kp ESC ___BASE_L1___
251+
#define ___BASE_L2_6___ &kp TAB ___BASE_L2___
252+
#define ___BASE_L3_6___ &sk LGUI ___BASE_L3___
251253

252-
#define ___BASE_R1_6___ ___BASE_R1___ &kp BSLH
254+
#define ___BASE_R1_6___ ___BASE_R1___ &kp BSPC
253255
#define ___BASE_R2_6___ ___BASE_R2___ &kp SQT
254-
#define ___BASE_R3_6___ ___BASE_R3___ &none
256+
#define ___BASE_R3_6___ ___BASE_R3___ &sk RGUI
255257

256258
// Raise layer with outer columns
257259
#define ___RAISE_L1_6___ _______ ___RAISE_L1___
@@ -263,7 +265,7 @@
263265
#define ___RAISE_R3_6___ ___RAISE_R3___ _______
264266

265267
// Lower layer with outer columns
266-
#define ___LOWER_L1_6___ &none ___LOWER_L1___
268+
#define ___LOWER_L1_6___ _______ ___LOWER_L1___
267269
#define ___LOWER_L2_6___ _______ ___LOWER_L2___
268270
#define ___LOWER_L3_6___ _______ ___LOWER_L3___
269271

@@ -310,7 +312,7 @@
310312
// Gaming layer with outer columns
311313
#define ___GAMING_L1_6___ &kp TAB ___GAMING_L1___
312314
#define ___GAMING_L2_6___ &kp ESC ___GAMING_L2___
313-
#define ___GAMING_L3_6___ &none ___GAMING_L3___
315+
#define ___GAMING_L3_6___ _______ ___GAMING_L3___
314316

315317
#define ___GAMING_R1_6___ ___GAMING_R1___ &kp BSLH
316318
#define ___GAMING_R2_6___ ___GAMING_R2___ &kp SQT
@@ -338,28 +340,28 @@
338340

339341
// Sofle thumbs
340342
#define ___SOFLE_THUMBS_L_BASE___ &sk LSHFT &sk LCTRL &sk LALT &bs_del &lt RAISE SPACE
341-
#define ___SOFLE_THUMBS_R_BASE___ &lt LOWER RETURN &lt FUNC TAB &none &none &none
343+
#define ___SOFLE_THUMBS_R_BASE___ &lt LOWER RETURN &lt FUNC TAB &sk RSHFT &sk RCTRL &sk RALT
342344

343-
#define ___SOFLE_THUMBS_L_LOWER___ &none &none &none &none &trans
344-
#define ___SOFLE_THUMBS_R_LOWER___ &trans &none &none &none &none
345+
#define ___SOFLE_THUMBS_L_LOWER___ _______ _______ _______ _______ &trans
346+
#define ___SOFLE_THUMBS_R_LOWER___ &trans _______ _______ _______ _______
345347

346-
#define ___SOFLE_THUMBS_L_RAISE___ &none &none &none &none &trans
347-
#define ___SOFLE_THUMBS_R_RAISE___ &trans &none &none &none &none
348+
#define ___SOFLE_THUMBS_L_RAISE___ _______ _______ _______ _______ &trans
349+
#define ___SOFLE_THUMBS_R_RAISE___ &trans _______ _______ _______ _______
348350

349-
#define ___SOFLE_THUMBS_L_FUNC___ &none &none &none &none &trans
350-
#define ___SOFLE_THUMBS_R_FUNC___ &trans &none &none &none &none
351+
#define ___SOFLE_THUMBS_L_FUNC___ _______ _______ _______ _______ &trans
352+
#define ___SOFLE_THUMBS_R_FUNC___ &trans _______ _______ _______ _______
351353

352-
#define ___SOFLE_THUMBS_L_ADJUST___ &none &none &none &none &trans
353-
#define ___SOFLE_THUMBS_R_ADJUST___ &trans &none &none &none &none
354+
#define ___SOFLE_THUMBS_L_ADJUST___ _______ _______ _______ _______ &trans
355+
#define ___SOFLE_THUMBS_R_ADJUST___ &trans _______ _______ _______ _______
354356

355-
#define ___SOFLE_THUMBS_L_ROGUELIKE___ &none &none &none &none &trans
356-
#define ___SOFLE_THUMBS_R_ROGUELIKE___ &trans &none &none &none &none
357+
#define ___SOFLE_THUMBS_L_ROGUELIKE___ _______ _______ _______ _______ &trans
358+
#define ___SOFLE_THUMBS_R_ROGUELIKE___ &trans _______ _______ _______ _______
357359

358-
#define ___SOFLE_THUMBS_L_SYS___ &none &none &none &none &trans
359-
#define ___SOFLE_THUMBS_R_SYS___ &trans &none &none &none &none
360+
#define ___SOFLE_THUMBS_L_SYS___ _______ _______ _______ _______ &trans
361+
#define ___SOFLE_THUMBS_R_SYS___ &trans _______ _______ _______ _______
360362

361-
#define ___SOFLE_THUMBS_L_GAMING___ &none &none &none &kp BSPC &kp SPACE
362-
#define ___SOFLE_THUMBS_R_GAMING___ &kp RET &kp TAB &none &none &none
363+
#define ___SOFLE_THUMBS_L_GAMING___ _______ _______ _______ &kp BSPC &kp SPACE
364+
#define ___SOFLE_THUMBS_R_GAMING___ &kp RET &kp TAB _______ _______ _______
363365

364366
// Sofle encoder rotation bindings
365367
#define ___ENC_BASE___ &inc_dec_kp C_VOL_UP C_VOL_DN &inc_dec_kp PG_UP PG_DN

0 commit comments

Comments
 (0)