OS/keyboard agnostic config - what are people using?

After being introduced to spaceFN (didn’t ever even think about dual-using spacebar!) and kanata, I’m starting to struggle with decision as to which config should live on UHK, and which on OS.

It’s beneficial to configure UHK, as it’ll travel with you regardless of OS or computer. As a downside, it won’t be available on laptop (or other) keyboards.

It’d be better to configure via software as it’ll be keyboard-agnostic. Nowadays there are also OS-agnostic solutions such as the abovementioned one. Downside would be not being able to map some custom keys, such as v60’s mod keys.

How do others think about this and have configured their setups? Goal being ease of setup and as much common ground between OS-es & keyboards.

I tried to describe my reasoning and use cases in the general intro and the Background sections of my “maxtend” setup at my maxtend Github.

  1. OS keymap for Colemak.
  2. Kanata for layer mappings at host OS level.
  3. Compatible and further extended layers and functionality on external keyboards using UHK, QMK or ZMK.
2 Likes

As explained there is no perfect solution. You define what is most important for you, from that there you can come up with a solution. In the end it will most likely be a mix of UHK, OS layout, extra software (not necessary all together, but possibly well).

In the beginning I did everything on the UHK, because it is (mostly) easy to customize and allowed me to make small, but also larger changes to my keymap very quick. Later when I had my Kanata script in place – which took some time to handle all needed cases and wishes – I set the UHK to be a mostly dumb QWERTY keyboard, because then it was easier to make quick changes in the Kanata script. And because I need a solution for the laptop I needed that in any case. On the UHK I still had a mouse layer and extra stuff like media functions in place.

That is not true. You can for example map extra functions on the UHK, which you do not need or want elsewhere, like I did with the trackpoint and keycluster module. Or you can also map the keys you want to use for a MOD-layer to whatever you want and map them in Kanata. I have mapped my left space key to be F20 on the keyboard itself. Then in the Kanata config I can explicitly use that key as a layer switch to go into a specific (Mod) layer.

In the end you will possibly end up like Max and myself and develop several implementations and choose based on the use case.

And no, that is not an easy solution. When you want to cover different use cases one unfortunately has to implement several options. In case you want to only use one, possibly the best is either just to use the UHK or just Kanata – depending if you move around your keyboard or you switch computers using different keyboards.

1 Like

Mod keys (the one in the frame) are not registered by xev, so I thought they’re invisible on their own to the OS. Is that not the case?

But overall I got the gist. Guess I was just hopeful some magic bullet of an approach is out there.

They don’t send an event because - by default - the UHK processes them to switch its internal layer. But you can map them in Agent to send something else to the host (like the F20 key that @rpnfan uses). Then they’ll send that key, and you can map it on the host.

4 Likes

If you’re running Windows, you might like: TouchCursor - Overview
Works like a charm with every keyboard.

I’ve written something about it, but it is in German: [Guide] - Kleines Schweizer Taschenmesser für Tastaturen | Hardwareluxx

TouchCusor is a nice program and works mostly, but I had some minor problems with it. Main advantage is that has the GUI to configure and you are up and running in a few minutes. Kanata can do the same and way more. I would recommend that today in most cases. But it requires you to learn a bit how to set it up. But well worth it IMO.