Skip to content

Commit 3313e1a

Browse files
authored
Merge upstream, adjust key timings, add combos, add macros, add behaviors
* point the zmk firmware to the main repo since Pete's work was merged * update keymap and adjust trackball speed in prep for testing new input listener for mouse keys * reduce timing on homerow mods and td for layer switching on NUM & NAV * made slow mouse layer momentary so it doesn't get accidentally activated * reduced layer activation time for space and delete keys * pull down the prior idle time just a bit * updated key names in svg *update readme --------- Co-authored-by: 280Zo <>
1 parent 4fdecfd commit 3313e1a

File tree

9 files changed

+1218
-447
lines changed

9 files changed

+1218
-447
lines changed

.github/workflows/draw_keymaps.yaml

+13-3
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ jobs:
144144
"&bootloader": "BOOT LDR",
145145
"&mkp RCLK": "R CLK",
146146
"&mkp LCLK": "L CLK",
147-
"&mkp MCLK": "M CLK",
147+
"&mkp MCLK": "Mid CLK",
148148
"&mkp MB4": "BACK",
149149
"&mkp MB5": "FWD",
150150
"&mmv MOVE_UP": "MOVE UP",
@@ -155,14 +155,24 @@ jobs:
155155
"&msc MOVE_DOWN": "WHEEL U",
156156
"&msc MOVE_LEFT": "WHEEL L",
157157
"&msc MOVE_RIGHT": "WHEEL R",
158-
"&HSplit": "HSPLIT",
159-
"&VSplit": "VSPLIT",
158+
"&h_split": "HSPLIT",
159+
"&v_split": "VSPLIT",
160160
"&caps_word": "CAPS WORD",
161161
"&td_bore": "L_BASE L_EXTRA",
162162
"&tdmt": "L1/BS LCLICK",
163163
"&tdbt": "L2/ESC RCLICK",
164164
"&td_layers": "L_BASE L_PHOTO L_GAME",
165165
"&td_cursor": "SCRL SLOW",
166+
"&td_home": "~/",
167+
"&td_equals": "=",
168+
"td_hyphen": "-",
169+
"td_grave": "`",
170+
"detach_session": "DETACH",
171+
"create_or_attach": "NEW SESH",
172+
"sync_panes": "SYNC PANES",
173+
"next_pane": "NEXT PANE",
174+
"show_sessions": "SHOW SESHS",
175+
"sync_panes": "-",
166176
"&shrug": "SHRUG",
167177
"&lgtm": "LGTM",
168178
"&gcm": "GIT COMMIT",

README.md

+1-11
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,6 @@ There are a few things to note about how the pre-built firmware is configured:
2828
- The Bluetooth/USB firmware can connect through Bluetooth, but the central side will have a shorter battery life because it needs to maintain that connection.
2929
- The central side can also be plugged in to USB and the keyboard can be used when Bluetooth on the host computer isn't available (e.g. BIOS navigation)
3030
- To add support for the PMW3610 low power trackball sensor, badjeff's [zmk-pmw3610-driver](https://github.com/badjeff/zmk-pmw3610-driver), [ZMK Input Behavior Listener](https://github.com/badjeff/zmk-input-behavior-listener?tab=readme-ov-file), and [ZMK Split Peripheral Input Relay](https://github.com/badjeff/zmk-split-peripheral-input-relay) modules are included in the firmware.
31-
- eigatech's [zmk-configs](https://github.com/eigatech/zmk-config?tab=readme-ov-file) played a major role in getting badjeff's drivers and modules fully configured and are a great resource
32-
- A separate branch builds the Bluetooth/USB firmware using [inorichi's driver](https://github.com/inorichi/zmk-pmw3610-driver?tab=readme-ov-file) as an alternative to badjeff's driver.
33-
- Pete Johanson (creator and lead of the ZMK firmware) developed a feature ([pointers-move-scroll](https://github.com/zmkfirmware/zmk/pull/2027)) that allows mouse keys to move and scroll. A successor feature ([pointers-with-input-processors](https://github.com/zmkfirmware/zmk/pull/2477)) was then developed that allows more flexibility. This feature is what will eventually be merged into the main ZMK branch, and it's what is used by this repo to build the firmware. Although it's not guranteed to be stable, it hasn't caused any noticible issues. That being said, if you'd prefer to use pointers-move-scroll which is in a stable state, you can update the west.yaml and adapt the config files accordingly.
3431

3532
## Flashing the Firmware
3633

@@ -61,7 +58,7 @@ Here are a few tips for a quick start:
6158

6259
- The left most thumb button has multiple functions
6360
- When held, the function of the trackball is changed from moving the cursor to scrolling.
64-
- When double tapped, it will reduce the cursor speed for more precision, and activate the mouse layer.
61+
- When double tapped and held, it will reduce the cursor speed for more precision.
6562
- When single tapped it outputs the escape key.
6663

6764
![keymap images](keymap-drawer/charybdis.svg)
@@ -126,13 +123,6 @@ To get this information, look at the PCB kcad files and follow the traces from k
126123

127124
This repo uses the excellent work of caksoylar's [Keymap Drawer](https://keymap-drawer.streamlit.app/) to automatically generate a key mapping of each layer when the Github Actions are run.
128125

129-
## Upcoming ZMK Features
130-
131-
ZMK is actively being developed and there are a few features that will be added to these builds if/when they are approved.
132-
133-
- Layer Lock - [Open PR](https://github.com/zmkfirmware/zmk/pull/1984)
134-
- Unicode Support - [Issue](https://github.com/zmkfirmware/zmk/issues/232)
135-
136126
## Credits
137127

138128
- [eigatech](https://github.com/eigatech)

config/behaviors.dtsi

+106
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
/ {
2+
behaviors {
3+
hm: homerow_mod {
4+
compatible = "zmk,behavior-hold-tap";
5+
#binding-cells = <2>;
6+
flavor = "tap-preferred";
7+
tapping-term-ms = <175>; // triggers the hold behavior when the tapping-term-ms has expired
8+
quick-tap-ms = <150>; // If you press a tapped hold-tap again within quick-tap-ms milliseconds of the first press, it will always trigger the tap behavior.
9+
require-prior-idle-ms = <185>; // like quick-tap-ms however it will apply for any non-modifier key pressed before it
10+
bindings = <&kp>, <&kp>; // hold, tap
11+
};
12+
13+
hm_right: homerow_mod_right {
14+
compatible = "zmk,behavior-hold-tap";
15+
#binding-cells = <2>;
16+
flavor = "tap-preferred";
17+
tapping-term-ms = <130>;
18+
// quick-tap-ms = <200>;
19+
// require-prior-idle-ms = <150>;
20+
bindings = <&kp>, <&kp>;
21+
hold-trigger-key-positions = <0 1 2 3 4 5 12 13 14 15 16 17 24 25 26 27 28 29 36 37 38>;
22+
};
23+
24+
hm_left: homerow_mod_left {
25+
compatible = "zmk,behavior-hold-tap";
26+
#binding-cells = <2>;
27+
flavor = "tap-preferred";
28+
tapping-term-ms = <130>;
29+
// quick-tap-ms = <200>;
30+
// require-prior-idle-ms = <150>;
31+
bindings = <&kp>, <&kp>;
32+
hold-trigger-key-positions = <6 7 8 9 10 11 18 19 20 21 22 23 30 31 32 33 34 35 39 40>;
33+
};
34+
35+
td_cursor: td_scroll_or_cursor {
36+
compatible = "zmk,behavior-tap-dance";
37+
#binding-cells = <0>;
38+
bindings = <&lt 9 ESC>, <&mo 8>; // hold, tap, double_tap
39+
};
40+
41+
td_space: td_space {
42+
compatible = "zmk,behavior-tap-dance";
43+
#binding-cells = <0>;
44+
tapping-term-ms = <85>;
45+
bindings = <&lt 2 SPACE>, <&kp SPACE>; // hold, tap, double_tap
46+
};
47+
48+
td_bs: td_bs {
49+
compatible = "zmk,behavior-tap-dance";
50+
#binding-cells = <0>;
51+
tapping-term-ms = <85>;
52+
bindings = <&lt 1 BACKSPACE>, <&kp BACKSPACE>; // hold, tap, double_tap
53+
};
54+
55+
httl: ht_two_layers {
56+
compatible = "zmk,behavior-hold-tap";
57+
bindings = <&mo>, <&to>;
58+
#binding-cells = <2>;
59+
flavor = "balanced";
60+
tapping-term-ms = <125>;
61+
};
62+
63+
td_layers: td_layer_swap {
64+
compatible = "zmk,behavior-tap-dance";
65+
#binding-cells = <0>;
66+
bindings = <&to 0>, <&to 5>, <&to 4>; // tap, double_tap, tripple_tap
67+
};
68+
69+
td_clk_scrl: td_click_or_scroll {
70+
compatible = "zmk,behavior-tap-dance";
71+
#binding-cells = <0>;
72+
tapping-term-ms = <250>;
73+
bindings = <&mkp RCLK>, <&mo 9>; // tap/hold, double_tap
74+
};
75+
76+
td_bore: BASE_or_EXTRA {
77+
compatible = "zmk,behavior-tap-dance";
78+
#binding-cells = <0>;
79+
bindings = <&mo 6>, <&to 0>;
80+
};
81+
82+
td_grave: DoubleTap_Grave {
83+
compatible = "zmk,behavior-tap-dance";
84+
#binding-cells = <0>;
85+
bindings = <&kp GRAVE>, <&grave_macro>;
86+
};
87+
88+
td_hyphen: DoubleTap_Hyphen {
89+
compatible = "zmk,behavior-tap-dance";
90+
#binding-cells = <0>;
91+
bindings = <&kp MINUS>, <&minus_macro>;
92+
};
93+
94+
td_equals: DoubleTap_Equals {
95+
compatible = "zmk,behavior-tap-dance";
96+
#binding-cells = <0>;
97+
bindings = <&kp EQUAL>, <&equals_macro>;
98+
};
99+
100+
td_home: DoubleTap_Home {
101+
compatible = "zmk,behavior-tap-dance";
102+
#binding-cells = <0>;
103+
bindings = <&kp FSLH>, <&home_macro>;
104+
};
105+
};
106+
};

0 commit comments

Comments
 (0)