Fri 20 Aug 2021
This week, I got my first mechanical keyboard, unless you count the buckling spring keyboards I've occasionally had. I've wanted one for a while, but for ergonomic reasons, I've been using split/curved keyboards since the early 2000s, mostly the Microsoft Natural series, and the split mechanical keyboards I knew of were either DIY (Ergodox), or extremely expensive (Ergodox EZ, keyboard.io). Somewhere, I got pointed to the Cloud Nine C989 ErgoFS Ergonomic Mechanical Split Keyboard (what a mouthful!), which is a bit more reasonable, and I found a barely used one on the well-known auction site for about half of the new price. My work keyboard (a MS Natural Elite 4000) was wearing out, and they don't make them anymore. I knew my work wouldn't buy me a keyboard more expensive than the MS Natural, so I decided to get myself one I could keep.
The keyboard I got has Cherry MX Brown switches, and lots of blinkenlights. I really like the feel of the brown switches, though they're a lot lighter than I expected them to be in terms of pressure – I was expecting something more like buckling springs. I learned to type on an actual typewriter (an IBM Selectric II), and I've always hit the keys pretty hard.
The keyboard was as easy as any other keyboard to set up, basically: you plug it into USB, and it works. Though the default lighting is pretty garish, and you'll need to use the software they provide to make it something more reasonable – there are hotkeys to turn them on and off, or switch animations, but they don't give you very much control.
I was hoping to move my pointing device (a trackball) to in between the two halves of the keyboard, but there's not actually a lot of space there unless you use a longer cable than the one provided, and I couldn't get used to it anyway.
EDIT: This may seem like a lot in the bad column, but I really like the keyboard. The good points are very good but also very vague, and the bad points are specific nitpicks.
I'm back in the office full-time, which is why I needed the keyboard now, but I also took the time last week to do a major update to my Emacs environment at work. I had been using Spacemacs because I had gotten tired of maintaining my own extensive .emacs.d, but I've got a great minimalist and visually appealing setup I recently wrote for using at home, and I wanted to finally switch over to it at work. Getting it set up was pretty easy, and I took the opportunity to switch my C# completion/refactoring framework (work is a .NET shop) from omnisharp-emacs to lsp-mode. I also finally found an Emacs binary for Windows that's built with native compilation and native JSON, both of which are a big help to lsp-mode. So I'm really, really happy with my current code editing situation, and wanted to fully integrate my new-to-me keyboard into it.
The control keys were the biggest issue. So I dove into learning AutoHotKey again, something that I had used in the past and abandoned. Eventually, I found enough bits and pieces to make CapsLock, Space, and Enter all dual-function. CapsLock now functions as Control when held down, but Backspace when tapped. Space functions as Alt when held down, and Space when tapped. Enter functions as Control when held, and Enter when tapped. There are a few issues with this setup due to the hacky implementation, but in general, it's insanely great having two easy-to-reach Control keys and a big Meta key.
I thought I wasn't going to be able to implement the same thing on Linux at home. There's a tool called xcape that implements dual-function modifier keys on X11, but it can't work with Wayland for architectural reasons, and when I remember trying it a few years ago, it wasn't all that reliable anyway. But! I found out there's a lower-level (device level) replacement that definitely works with Wayland, and maybe even with console. I haven't implemented it yet, but it's looking promising.
So, much toolsmithing the last couple weeks, but the improvements have been such that they actually *have* increased my productivity, and I've gotten a lot done.
EDIT: Later, ~contrapunctus told me about kmonad, a cross-platform keyboard remapping tool that on Linux uses the device-level method, and might be a little easier to set up than the interception tools. After a few false starts, I have it working on Linux, and will try it on Windows on Monday. Their gemlog was a lot more helpful than the official documentation and examples.
Cloud Nine website for keyboard 🕸
AutoHotKey – key remapping and automation for Windows🕸