Keyboard

My oft-used at home is a VIA enabled, mechanical keyboard featuring 60-key hot-swappable, low-profile wisteria switches. I like the form factor, and it’s definitely an upgrade from my previous 49-key with full-sized switches.
The problem with mechanical keyboards in these sizes is that they have odd layouts, and they omit some important keys. My biggest gripe is that the Fn key is often located inconveniently on the right hand side (instead of being on the left hand side), and further it’s pre-mapped (i.e. locked) to back lighting and other such cosmetic nonsense I have no interest in.
At the time of purchase, I did not realise how much of a handicap such layouts posed. For instance, mine has no function key row — not an issue per se, but has no navigation keys either (viz., Home, PgDn, PgUp, End). This is a solved problem in the membrane-types, in which there is a Fn key on the left hand side, which can be combined with arrow keys to get this functionality.
While I could map Cmd and arrow keys to get me the above functionality, it conflicts with Raspberry Pi OS’s (and Windows’) own key mappings for window placement, and since I use window placements quite extensively, I have to resort to the following.
For sanity on my primary computer, I have begun to use keyd, which is a key remapping daemon for linux. While I could use VIA to remap keys at the hardware level, I struggle with the cognitive load of layers.1
keyd takes this following setup, in which I employ the sparingly used Caps key as the modifier for other home row keys h, j, k, l to get Home, PgDn, PgUp, End. The keyd config file (/etc/keyd/default.conf) is as follows.
[ids]
*
[main]
rightshift = ~
capslock = layer(nav)
[nav]
h = home
j = pagedown
k = pageup
l = end
In the above, Caps key is assigned to activate a layer called ‘nav’ when held down, and keys defined in the ‘nav’ layer are used in combination to get the desired input.
Another handicap overcome with the above remap for the 60-key keyboard is the simpler way to get to ~, a crucial key that represents $HOME for use in terminal. Now hitting ~/ is like one-two, no modifier needed.
The shell commands for getting keyd working:
# download and compile keyd from source
git clone https://github.com/rvaiya/keyd
# change directory and run make, make install
cd keyd && make
sudo make install
# stop keyd service and update config., restart service
sudo systemctl stop keyd
vim sudo systemctl stop keyd
sudo systemctl enable --now keyd
# if config is updated, be sure to reload
sudo keyd reload
# restart service if required
sudo systemctl restart keyd
Here’s my wish list for a mechanical keyboard for office use:
- Standard non-compressed layout for whatever number of keys preferred
- A Fn key on the LHS for use with arrow keys for navigation
- Tactile but silent key switches
Essentially, I want that keyboard in the middle (of the above photograph), but equipped with mechanical, hot-swappable key switches.
-
It is made worse as I work at three different places and use three different sets of input devices; and then I have multiples for use at home. Yes, this is self-inflicted. I could stick to one — buy three pieces of the same hardware to use at all locations. It is still the plan, and slowly finding my feet to overcome all possible edge cases one at a time so when I switch over, there are no regrets. ↩