What do you use your key cluster module for?

I’m running Linux, and there’s a default entry in GNOME for “microphone mute/unmute” in the keyboard settings. It’s empty by default, so I just picked a keystroke I’m not likely to ever use (ctrl+alt+,) and mapped it to that, then set the key in the agent like normal.

1 Like

I work on MacOS + PyCharm.

Bottom left = LCmd
Bottom right = activate Fn2 layer, where I define the UIOJKL keys to do:

  • I, K = move to previous, next method (PyCharm)
  • J, L = move to start, end of line (ctl a, ctl e)
  • U, O = move to prev, next word (alt left arrow, alt right arrow)

Top = Hyperkey = Ctl-Alt-Cmd-Shift,
and I have Ctl-Alt-Cmd-Shift be the activation (trigger) combo for the Rcmd app for macOs (launches apps based on starting letter, so you don’t keep doing cmd-tab)

The usual Del/Backspace/Enter in the base layer, but Cut/Copy/Paste in the Fn layer. I have a macro to “sticky” activate the Fn layer for on the ‘;’ key, which allows me to either hold it down, or work as a “one-shot” for the following keypress. This works really nicely to avoid the awkward Cmd + <x/c/v> chords, and instead have a right little finger, left thumb tap sequence.

I also put browser back forward on the lower mouse buttons, and use the horizontal axis of the mini-trackball for Mac’s screen magnifier zoom (which I use extensively). It’s a bit fiddly but really useful to avoid having to move my hand to the mouse a thousand times a day! This was actually my main motivation for getting the UHK in the first place :smile:

1 Like

I’m a developer.
In the base layer I have three macros to open the commandline in my IDE and test / test+integrationTest / test+IntegrationTest+determine code coverage for the current project.
In the Mod layer I do something similar, but instead I do a recompile / docker publish local / docker publish of the current project.
In the Fn layer I can ssh to a deployment environment / run a deploy to accept / run a deploy to prod.

For now I use it with the default settings, i.e. Delete/Backspace/Enter, with one modification:

I found that my typing experience is greatly enhanced by having Ctrl+Backspace instead of Backspace.

I have yet to think about what the cluster should do together with Mod/Fn.

Esc, Del and Right Arrow. I spend a lot of time in linux/terminals and having those in layers drove me crazy.

I use one to open a chatGPT popup and another one which starts a Alfred workflow to search through all my open firefox / chrome tabs.

My main working language is English while my native language is not so I find myself switching languages many times when working and I’m having many conversation with people who talk English only or my native language while we also use many words from English in my native language.

I assigned a macro to change language on the closest cluster button to the Mod button and this tiny change from two buttons press to one dedicated button sped up my process and decreased the frustration since sometimes I had to do the ALT-SHIFT a few times as it didn’t work the first time.

Also, since I’m working only with QWRT and having this text on my screen gives me nothing I also created a marco to write on the keyboard screen the first three letters of the language.
you just need to make sure not to use the regular switching language keys on windows so the keyboard can track on the language.

1 Like

This is interesting, is the chatGPT popup that you mention part of Alfred or a separate application?

Actually I have 2 different implementations( but no workflow). On my work layout I just use a shortcut (macos) which opens a webview and on my private layout I use the application chatterbox.

I have the mouse buttons mapped to go backward and forward in IntelliJ IDEA. The leftmost key is set to RAlt(Gr) to make it easier to type curly parentheses on a german keyboard layout.
The other two are currently not assigned to something useful but I’ll probably do the microphone mute/unmute in Teams.
I absolutely hate the scrolling of the tiny trackball though.

Delete, delete word, additional FN key.

I too disliked the mini track ball initially and for a good while, but after a year I found it great, and after a second year with it I find it indispensable.

1 Like

Should I attach mine again? I was thinking about selling the left module, because I got no real use out of it, partly because I do not want to depend on it for important functions, because I try to stay compatible to a standard keyboard as good as possible. But in the end I mostly use the UHK and take it with me, because it is such a pleasure to use.

I too don’t want to loose compatibility with a standard keyboard. (Actually, the map is also built to be portable to a 40% keyboard.) I use the module for some vim auxiliaries:

  • A macro that while held, will prefix any tapped key with a @. If tapped alone, produces @@ (activates last macro).

    Usecase: record bunch of macros, then (while holding the macro as if it was a modifier) just tap the macro keys (without having to prefix them with an explicit @ tap).

  • Similar macros, except prefix following key with [ and ]. This is part of a vim pattern that uses [<letter> and ]<letter> to cycle through various lists:

"tag prevnext
nmap [t :tp<CR>
nmap ]t :tn<CR>

"map c error jumping
nmap [c :cprev<CR>
nmap ]c :cnext<CR>

"map changelist
nmap [; g;
nmap ]; g,

"map jump list
nmap [j <C-O>
nmap ]j <C-I>


" Use `[d` and `]d` to navigate diagnostics
nmap <silent> [d <Plug>(coc-diagnostic-prev)
nmap <silent> ]d <Plug>(coc-diagnostic-next)

" Navigate generic Coc lists
nmap <silent> [g :CocPrev<cr>
nmap <silent> ]g :CocNext<cr>

...
  • mini-trackball bound so that left/right movement triggers the above two [<letter> and ]<letter> shortcuts together with the key they were used with last time.

  • " to trigger vim registers without shift

I actually updated my mute/unmute configuration on the topmost key cluster key. I now call this macro:

mute-unmute:

ifSecondary final holdKey LC-space
tapKey LCLS-m
ifNotShift break
delayUntil 300
tapKey LCLS-o

Works like this in MS Teams:

tap: mutes / unmutes the microphone
shift+tap: mutes / unmutes microphone, and activates / deactivates camera
hold: unmutes the microphone as long as it’s held (push-to-talk)