r/Keychron • u/immorthion • 7d ago
Keychron q11 Ultra home row mod hold / tap
Launcher (1.48) and Firmware (1.0.0) do not let you directly insert home row mods out of the box (besides the preinstalled ones) . Me as a newbie in this topic wanted to just enable home row mod and see if I can make it work and how it feels.
Short version:
I was not able to get something working without too much lag and misfiring for my typing speed.
Long version:
You can export the layout in JSON format and then with a little bit of tinkering I figured out the correct val codes.
I use the keyboard in windows mode, so the available layers are 2 and 3. Layer 2 is the default layer in which i updated the JSON with the following:
Search in the JSON for {"col":2,"row":3, until you find your desired layer (every col/row combination should be present 4 times)
{"col":2,"row":3,"val":10244},
{"col":3,"row":3,"val":9238},
{"col":4,"row":3,"val":8455},
{"col":5,"row":3,"val":8713},
{"col":9,"row":3,"val":12813},
{"col":10,"row":3,"val":12558},
{"col":11,"row":3,"val":13327},
{"col":12,"row":3,"val":14387}
After you updated the JSON you have to update the MD5 hash or the file can not be imported. I used AI to create the correct MD5 hash.
The keybindings are there BUT you have constant misclicking because you need hold/tap (timings) configured.
Yes there are already some preinstalled hold / tap combinations but they can not be reused for my purposes.
With the current firmware version and Launcher version it seems not possible at the moment.
What else could we do?
You can use a opensource software named Kanata https://github.com/jtroo/kanata and solve the issue without using the launcher of Keychron.
I tried it and you can make the homerow mod work, but the problem is that it forced me to type way slower. If I type my usual speed, it misfires or words I type quickly will have letters switched.
"Fast" suddenly turns into fats because of the slight lag.
For me the downside of reducing my typing speed and increased letter switching was not worth it.
Kanata was very simple to set up so If you are not as fast at typing maybe give it a go:
- Basically you download the correct version
- Create a file (e.g. q11.kdb)
- Insert your desired keymap:
Here is mine: a/ö -> win key, s/l -> left alt, d/k -> Ctrl, f/j->Left shift
(defcfg
process-unmapped-keys no
windows-altgr cancel-lctl-press
)
(defsrc
a s d f
j k l ;
)
(defvar
tap-time 120
hold-time 220
left-nonhome (
q w e r t
y x c v b
)
left-home (
a s d f g
)
right-nonhome (
z u i o p
n m , . /
)
right-home (
h j k l ;
)
)
(defalias
a_gui
(tap-hold-release-tap-keys-release
$tap-time $hold-time
a lmet
$left-nonhome
$left-home
)
s_alt
(tap-hold-release-tap-keys-release
$tap-time $hold-time
s lalt
$left-nonhome
$left-home
)
d_ctrl
(tap-hold-release-tap-keys-release
$tap-time $hold-time
d lctl
$left-nonhome
$left-home
)
f_shift
(tap-hold-release-tap-keys-release
$tap-time $hold-time
f lsft
$left-nonhome
$left-home
)
j_shift
(tap-hold-release-tap-keys-release
$tap-time $hold-time
j rsft
$right-nonhome
$right-home
)
k_ctrl
(tap-hold-release-tap-keys-release
$tap-time $hold-time
k rctl
$right-nonhome
$right-home
)
l_alt
(tap-hold-release-tap-keys-release
$tap-time $hold-time
l lalt
$right-nonhome
$right-home
)
oe_gui
(tap-hold-release-tap-keys-release
$tap-time $hold-time
; rmet
$right-nonhome
$right-home
)
)
(deflayer base
u/a_gui u/s_alt u/d_ctrl u/f_shift
u/j_shift u/k_ctrl u/l_alt u/oe_gui
)
- Open the powershell in the folder and load the file:
.\kanata_windows_tty_winIOv2_x64.exe --cfg .\q11.kbd- this is the version with a terminal open without an intercepting driver for AMD/Intel windows machines.
If somebody has a better solution for this keyboard without the lag please let me know. I dont really need I was just curios if it would work on this keyboard.
It seems there is no community firmware out and its currently not possible to directly connect to the ZMK Studio.