January 24, 2021
Modifiers on the home row with QMK
I keep looking for the Perfect layout for my Kyria keyboard. My main problem for a while has been that I just do not feel happy with the placement of the main modifier keys - control, alt, and command (yes, I am a Mac person). For a while, I mainly tried variations of placing them as close to where they would be on a standard keyboard as possible, but with the offset and staggered bottom row of the Kyria it never felt quite right.
I thought about trying to find good positions somewhere in the thumb clusters, but since each cluster is only comfortably reachable by on finger, it felt difficult to come up with something truly convenient.
My latest idea is to move the modifiers straight to the home row, and have both S-D-F and J-K-L act as control, alt, and command when held down. You can not beat the convenience of always having them right under your fingers, and having them on both sides should ensure that, with practise, I can always comfortably hit whichever combination I might need.
Setting up the key configuration was as easy as always using QMK, defining the positions as LCTL_T(KC_S), LALT_T(KC_D), and so on. (This says "Act as control when pressed, S when tapped".)
Actually getting it to work well, however, was a small research project.
Typing slowly and carefully was not any problem, but as soon as I picked up my speed (and on a Kyria, "high speed" is not all that high for me), I started getting unexpected key combinations. I would get modifier keys detected, and combined with a later keypress. So if I had tapped (in my estimation) L, I might get that registered as a press of command, combined with the second key I pressed after L. All of a sudden I had selected all text with command-a, jumped to the start of the line with control-a, or what have you.
Initial searches for solutions were not promising either. This seemed to be an area where people had various problems and nobody seemed to have a good solution. I tried playing around a bit with the tapping term - the base setting for how long a key needs to be pressed to register as being held down, and a bunch of flags for adjusting various tapping behaviours, but none of them truly helped.
What I eventually did (and I am not sure if all of this was necessary, but none of it had any negative effects) was this:
- Removed the debounce settings I had previously used
- Added TAPPING_TERM_PER_KEY
- Added a tapping term function in keymap.c which returns a long tapping term for all my home-row modifiers, and a more default short one for everything else
- Added IGNORE_MOD_TAP_INTERRUPT
This basically solves my problem by requiring a really long press before, say, S registers as control. IGNORE_MOD_TAP_INTERRUPT is somewhat confusingly documented, but it affects some situations where, without it, a modifer plus another key would be registered, changing this to instead registering two standard keypresses (in my case, for example turning a control-a to sa)
Removing debounce settings probably had no effect in the end. Removing them did improve results in some of my earlier solution attempts though, and I was happy to find out that my keyboard did not need the debounce settings, so I did not bother to put them back.
How does it feel?
Very good so far, thank you. Having modifiers right on the resting positions of the major typing fingers feels great. The need for two-hand coordination is increased for some common shortcuts, but it does not feel like a huge hurdle. I also realized I now have space to put cut, copy, paste, and undo on dedicated buttons, removing the need for several of those coordinated combinations.
The current state of my keymap can be found over on Github, as inspiration or a warning to coming generations, depending on mood.
January 02, 2021
A new year started right after March #10, 2020, for some reason. Just typical of the strangeness of 2020, I guess.
The holidays are coming to an end, and they feel like they have been long and disconnected from the regular rythm of work weeks. Sleep was clearly needed, I have been doing a lot more of it than usual.
Discussing yearly themes with strangers - a very nice side-quest. I caught up with the entire back-catalog of Cortex just in time to catch the yearly themes episode before the new year started. I like their way of thinking about guiding themes rather than promises or goals or what-have-you-kind of stricter targets. I have come up with a theme which feels exciting, and am looking forward to seing how it might help or hinder me going forward.
Then, one Rachel Nabors asked on Twitter what you want to stop doing in 2021, a formulation I found surprisingly stimulating. I keep feeling there is a lot more for me to find in that. What I have come up with so far is basically a variation of being mindful: stop doing things when they no longer hold my interest. Useful for sure, but I will keep digging for more. Background processing will surely present something surprising during a random shower in March.
Most of this was written on a Ipad pro using a Apple pencil. What a wonderful way of rediscovering that hand-cramp of writing for too long. Just another ergonomic thing to take into account.
(Also the feel that the experience is so smooth and perfect using a device from the late bronze age. Will M-based Macs age this well too?)
December 13, 2020
On top of the desk
I am surprised by how long I have already been using my Kyria. And also by how much I have kept tinkering with my desk setup at the same time.
Much of the tinkering has a single cause: that sweet, sweet Mac mini which caused me to reconsider the whole cable situation. Before the Mini arrived, the whole desk was cleanly focused on switching between my home and work computers, both of which were USB-C Mac laptops. Sure, it was a horrific jumble of cables and adapters, but all I needed to do when switching was unplug one cable from one computer, place the other one in the same spot, and connect the same cable again. (More on cables and the uses of the machines drifting.)
The other cause of change was more directly caused by using the Kyria: I was mainly using a mouse before, and a split keyboard at appropriate shoulder-width placement pushed it way too far to the side for comfort. I put the mouse inbetween keyboard halves for a while, but it was clear my elbows and wrists did not like that any better.
So, out came the old trackpad. Along with it came the old frustrations: installing drivers, a click working best on the lower half of the trackpad, and of course the inconvenient switching of standard Bluetooth between machines. The last part was actually my main frustration. Often, I could find a routine which let me switch with reasonable reliability, but sometimes it just failed, leaving me using some other input for one machine for the rest of the day. I found myself giving up on input switching, instead using the work laptop sitting in front of the screen, tapping on builtin keyboard, mousing around on builtin trackpad. Very convenient and quite reliable. But hey, I want to use my Kyria, right?
This, plus an eagerness to also use a trackpad with my Ipad, made me buy a somewhat discounted Magic trackpad. I imagined device switching would be much easier with Apple's own devices, but this might have been misguided. The excellent utility Airbuddy has support for "handing over" a mouse or trackpad between computers, which I have not yet played with, but going between computer and Ipad might still require the classic pairing waltz. In any case, the trackpad is nice and large and goes well with a split keyboard. (Otherwise I so far find myself liking the trackpad less than I expected, but that is probably a text of its own.)
What I want out of my desktop setup is to be able to switch between Mac min and work Macbook with a minimum of reconnections, yet preferably while using the same input devices for both.
I fear this will, somehow, end up with me purchasing more adapters, docks, or dongles.
I could make connections easy by turning the Mini to expose the back. But come on, expose cables like that? One has to have limits.
Oh, and I would love the desk to be as clean as possible, too.
How do I feel about the Kyria this far along?
To start: I think the split has done me quite a bit of good. I feel like my neck, arms and wrists have much fewer days of aches or other complaints. Straight win there.
I also feel encouraged to try and keep my hands on the keyboard even more, and to try and improve my finger placement. I still do not feel fast or natural typing on this keyboard. I know where everything I need is, but many things feel much more like requiring active thought than being in muscle memory. My feeling is that I would still be faster on my Let's split if I brought it home now.
But, I have to note that this keyboard has changed both physical and programmed keyboard layout much more than any previous board. The thumb clusters makes everything different, and trying to find ways to capitalize on that has meant further changes to the layout. I am hopeful that I can find even more improvements going forward, because I am not making full use of all the buttons yet.
Somewhat to my horror, I have also started wondering if perhaps I would prefer slightly lighter switches … The scary part is of course that this would require me to disassemble, de-solder all the current switches, then put new ones in place. That is major enough to not appeal to me at all. Yet.
November 30, 2020
What a difference nine years can make. Just look at this incredible evolution:
Well, okay. I admit all the exciting stuff is on the inside.
(Yes, I do currently keep both on my desk like that. For some reason I just like how they look.)
A lot has been written about the new M1-based Macs already, and I have done my fair share of talking about them as well. I ordered mine hours after the keynote, surprising myself by going for the mini option rather than the obvious-seeming Air. I call it obvious because it is such a natural evolution and enormous improvement over the 12-inch Macbook I have been using and greatly enjoying for the past five(!) years. But these are currently not times of travel. Both my home and work computers spend the vast majority of their time in active use connected to a monitor, keyboard, and pointing device. There may well be at least one more round of M1 machines released before I truly feel the need for a portable home machine again. So, I decided to go with the purest, most pared-down M1 option: a box of compute power with no additional batteries, screens or other random parts.
I have not regretted this decision for even a second. I have been using this machine for what, about a week now? And everything has been a pleasure. Everything I want and need runs great already. I downloaded Sensei to see the internal temperature and fan speed, but like everyone else I wonder if Sensei is actually lying and just displays a gently fluctuating number because I have never, ever heard any fan noise.
Yes, the thing is fast. Fast at everything. It does not feel speedy as much as just … snappy. Things are just there, everything responds right away, and usually finishes long before I expect them to. It feels … understated. Cool and self-assured.
Bring everything you have, I can deal with it. And I do not need to make a show out if it.
I am just this little aluminium box on your desk, here to do your work and make you wonder precisely how the rest of the computer world plans to catch up to this experience.
Running my little script to build this website is between 7 and 16 times faster.
Photos running on a library on my NAS feels like it was all local. It was too slow to be usable when ran the same way on the Macbook.
Hindenburg is many minutes faster exporting final mp3:s, and it is neither M1-native nor a good utilizer of more than one core.
I am pretty sure I will start really wishing for a laptop (or Ipad, possibly) again at some point. But until then, I will enjoy sitting here in the corner with this magical little box.
Now, what more can I try throwing at it?
November 09, 2020
It is early
Work is going on to standardize a bunch of information specific to podcasts in RSS feeds. A subset of this work has been to specify a format for podcast chapter information, in the form of a JSON file which can be linked from the RSS feed itself. Somehow, one of the energetic people working on the standard discovered the JSON export option I added to Podcast Chapters a while ago, reached out and suggested we collaborate so that the standard and the app could work well together.
My contribution mainly consisted of moving away from how Podcast Chapters exported in a few places, solutions and names I had chosen simply because they were convenient in my particular situation.
I also sat down and added the new format as an export option, so if you use the latest version of the app you will be able to create JSON files which will hopefully be used by podcast apps and hosting services in the future.
I was very flattered that the creators found me, invited me to participate, and were so interested in my suggestions. I am also just a little bit frustrated that I did not discover all this interesting work on my own. Not as some angry frustration, more like "what else I would really enjoy and learn is out there that I do not know about?" How do I find goodies faster, that kind of thing.
Chapters were of course very natural to support for me, but there are several more interesting tags in the standard, for information which it might be natural to enter in Podcast Chapters if the app is a part of your workflow. So one next step for me is to try and find out if and how I can extend the app to become a good puzzle piece in a workflow for more things than a single MP3 file. Should I export snippets of RSS? Should I take on exporting entire RSS items or feed templates? Suddenly there is a world of interesting possibilities.
Another interesting aspect is the mental shift: what this podcast namespace does is in many cases lifting information into a more easily managed and distributed format which was already available as ID3 metadata inside of audio files. After a little while wondering if that would eventually render Podcast Chapters obsolete, it dawned on me that I should probably think of the app as a somewhat more general metadata manager for a podcast. It may be focused on MP3 metadata right now, but if you also want to put the information inside RSS - or some completely different format - the app should still be able to provide value.
(Yet another tangent of no use to pretty much anyone: Because of the flexibility of the ID3 format, pretty much anything from the podcast namespace could easily be baked into the MP3 as well. Not that any app would think to look there, but it would work very well if for some reason you wanted to store all the data inside the file.)