You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+11-1Lines changed: 11 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -63,9 +63,13 @@ Then include any extra functionality you need:
63
63
64
64
```c
65
65
// select-word macros based on the Sunaku's implementation of Pascal Getreuer's Select Word macro from QMK
66
-
#include <zmk-keymap-utils/select_word.h>
66
+
#include <zmk-keymap-utils/select_word.dtsi>
67
+
// timeless home-row mods based on urob's implementation
68
+
#include <zmk-keymap-utils/hrm/timeless.dtsi>
67
69
```
68
70
71
+
## Inspiration
72
+
69
73
# License
70
74
71
75
This project is released under the [ISC License](LICENSE).
@@ -74,3 +78,9 @@ It also contains copied or modified code from other Open Sourcethird-party proje
74
78
75
79
- [sunaku/glove80-keymaps](https://github.com/sunaku/glove80-keymaps) for initial implementation
76
80
- [urob/zmk-helpers](https://github.com/urob/zmk-helpers) is required as a module to use this project.
81
+
82
+
## Inspiration
83
+
84
+
In adition to the projects mentioned in the License, this project is inspired by other zmk-config projects and their configuration:
85
+
86
+
- [urob/zmk-config](https://github.com/urob/zmk-config), where it was firs described the configuration to implement [Timeless homerow mods](https://github.com/urob/zmk-config?tab=readme-ov-file#timeless-homerow-mods).
Copy file name to clipboardExpand all lines: docs/README.md
+63Lines changed: 63 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -116,3 +116,66 @@ The behaviors provided after import are the following:
116
116
117
117
> [!TIP]
118
118
> The behaviors are implemented in such a way that using them with the shift modifier active selects/extends in the t
119
+
120
+
## Home-Row Mods
121
+
122
+
There are different implementations of Home-Row Mods (HRM) that are tailored to different ways of typing.
123
+
A good resource to read about them is the [Precondition's Guide to Home Row Mods](https://precondition.github.io/home-row-mods).
124
+
125
+
Here we provide utilities for different implementations:
126
+
127
+
- Timeless HRM: based on [Urob's Personal zmk-config](https://github.com/urob/zmk-config/) implemenation.
128
+
129
+
### Timeless HRM
130
+
131
+
The "timeless" HRM is using basic ZMK behavior to implement HRMs that are tailored to users without not very consistent typing speeds.
132
+
Basically tries to minimize misfires by being independent of any timing configuration.
133
+
The `tapping-term-ms` is in practice not infinity but set by default to 175ms, which provides a way to:
134
+
135
+
- Combine mods with alpha-keys on the same hand
136
+
- Press a modifier without another key
137
+
138
+
More detailed information about this implementation can be found on the [urob/zmk-config README for timeless HRM](https://github.com/urob/zmk-config?tab=readme-ov-file#timeless-homerow-mods).
139
+
140
+
Here we provide a basic function to define your HRM behaviors with ease.
141
+
To use the default configuration, import with:
142
+
143
+
```c
144
+
// select-word macros based on the Sunaku's implementation of Pascal Getreuer's Select Word macro from QMK
145
+
#include "zmk-keymap-utils/hrm/timeless.dtsi.h"
146
+
```
147
+
148
+
To use a different `tapping-term-ms`, the `TIMELESS_HRM_QUICK_TAP_MS` property can be used before import (default is `175`).
149
+
This configuration can be tweak to support mod+alpha combinations in the same hand, and modifier press without other keys.
150
+
For example:
151
+
152
+
```c
153
+
#define TIMELESS_HRM_QUICK_TAP_MS 280
154
+
#include "zmk-keymap-utils/hrm/timeless.dtsi.h"
155
+
```
156
+
157
+
After import, you can define your HRMs using the `MAKE_TIMELESS_HRM` function.
158
+
This function takes the following parameters:
159
+
160
+
- `NAME`: the name of the HRM-behavior.
161
+
The behavior will be used on the keymap with `&NAME <mod> <alpha>` (where name is the given parameter).
162
+
- `HOLD`: the behavior on hold.
163
+
This is the behavior to trigger on hold, and can be a simple `&kp` (tipically) or any other complex behavior having a parameter.
164
+
- `TAP`: the behavior on tap.
165
+
This is the behavior to trigger on tap, and can be a simple `&kp` (tipically) or any other complex behavior having a parameter.
166
+
- `TRIGGER_POS`: positions for hold-trigger-key-positions. Tipically the positions on the oposite hand from the HRM hand.
167
+
168
+
A clear example on how to use this function is a refactor of the [Urob's Personal zmk-config](https://github.com/urob/zmk-config/) HRM implementation using this module.
169
+
170
+
> [!NOTE]
171
+
> This snippet uses the standard key-labels from `urob/zmk-helpers` (see [its README](https://github.com/urob/zmk-helpers?tab=readme-ov-file#key-labels-collection) for more details).
0 commit comments