Hacker News new | past | comments | ask | show | jobs | submit login
Programming on 34 Keys (peppe.rs)
82 points by mmazzarolo on Aug 30, 2022 | hide | past | favorite | 33 comments



I have to share my story, because I read the comments here and the post and I fell into a similar trap about a year ago.

It all sounds good. Compact keyboard has always appealed to me, so did ergonomics, I bought a split keyboard (36 keys) with Miryoku layout and went to town. I lasted about 1 month and quit.

What happens is the amount of keys you have to type concurrently increases forcing your fingers in weird positions.

For example, typing the following 48 characters

   if (needle in [a, b, c]) {
      println('found it')
   }
In a standard keyboard you have to press 53 key presses (parenthesis is Shift+9 so that's two keys for a single parenthesis etc)

In a Miroyoku layout it's 59 key presses. This might not sound like a lot but it's a ~10% increase.

It also doesn't account for a very big problem, arrow key navigation for non VIM users. Since pressing the arrow keys requires two button presses in smaller keyboards, and done repetitively it's a huge slow down in navigating text. Now there are solution to this, most IDEs can support VIM keybinds, or have their own hot keys to skip words etc. To me the arrow key navigation is what got to me long term and I opt4ed out of it.


I'm at 48 keys right now, but I would like to counter that it's not just key presses you should care about, but also movement of the hands. My setup definitely isn't perfect but your example is exactly the kind of key sequence I have optimized for. Having parenthesis and the various brackets on the home row or very close is super awesome for programming.

Honestly, you don't need to go down to so few keys, just program your keyboard to have one more layer that puts those special characters into a better place for you and I think you'll get 90% of the benefit of the OP's keyboard.


What actually tipped me over to doing this 'layers' thing, was exactly these keys being in different places on different keyboards.

Having (){}[]-+ in the same place and easily touch-typable was much better than having them in different places depending on what I was typing on (dvorak already has < and >, ' and " period and comma in a sensible place).


Exactly! I can hold the layer key and do the entire ()[] sequence for links in markdown in one go and every time I do that it makes me smile.


It is interesting that you think arrow keys are a likely blocker. I have a Kinesis Freestyle Pro and my favorite feature is having the arrow keys on the second layer as vim style HJKL. I also have backspace, esc and del on the second layer with the right half of the space bar as the layer shift key. Moving these common keys made a huge difference to me, and was an easy transition since I exercise them so much.

The reason I couldn't move to a much smaller keyboard is that the less common keys that I use a few times a day like `{}\<>? feel like they would be so much harder to retrain. Similarly I am only passable at touch typing my number row, and I don't think I could survive without the labels for the symbols that are usually over the numbers.


I've tried to use smaller keyboards with layers, but unless I'm using them everywhere I will forget what buttons to hit. And ultimately, my desk space is not at such a premium that a full-sized keyboard is unwelcome in that space.

I do also enjoy (full sized) split keyboards though.


When learning my 36 key layout, I needed to disable the other keys on my full size keyboards, to force myself to use the subset. Once I'd learned that, I could turn them back on without being tempted to fall back to them instead of learning. Once I learned it, I prefered it even on the keyboards with many more keys available, like my Kinesis Advantage.


Yeah the trick is to actually use the small layout everywhere, not just for consistency but to continue getting the benefits of reduced finger strain and hand motion.

I reproduced most of a small keyboard’s layout on my laptop using KMonad and now don’t even touch about 20 keys even though they’re available. It’s that realization that makes one dream of just omitting the unused hardware.


For my usage I’ve found the happy spot to be somewhere in the realm of HHKB/Tsangan/60%. 65% can be OK too assuming it’s using the HHKB Backspace placement (where the pipe key is on typical ANSI boards) and Control is in the Caps Lock position.

The F-keys just don’t get enough usage to justify dedicated keys, and while dedicated arrows aren’t bad the reduced hand movement of layered arrows with the HHKB layout is nice. Numpads are useful occasionally but not often enough that I want one permanently integrated into my keyboard eating up desk space and being unmovable, so I have a standalone numpad that sits to the left of my keyboard when it’s needed so I can mouse around and use the numpad at the same time.

These layouts are also similar enough to typical laptop keyboard layouts that I can still use those without much trouble, so I don’t need to tote around a keyboard.


I worked with someone years ago who tried to teach himself to use a pair of corded bat keyboards:

https://www.infogrip.com/bat-keyboard.html

His plan was to mount them to the sides of his chair so he could type with his arms hanging at his sides. I don't recall if ever got past using just one of them, and actually, I'm not sure why he needed two in the first place. Now I'm doubting my memory. Anyway, more on this innovative keyboard:

https://hackaday.com/2020/08/18/inputs-of-interest-the-infog...


That looks quite a bit more spartan than these chara corder keyboards I saw in use recently: https://www.charachorder.com/. They have a QWERTY keyboard with chording firmware (and a chip for custom keyboards) to try corded input for those who want to experiment without going all in.


You can also use something like plover on an N key rollover keyboard http://www.openstenoproject.org/

I think that has more to it as it's not just chorded but has a steno dictionary as well. There must be a way to turn a standard keyboard into a chorded one?


I recently pared back my own layout to something similar, and it's been surprisingly comfortable. I had learned to type on a split board for the first time a few months ago, and going from a more "full" split layout to something where you've essentially shoved all non-alpha inputs down into other layers was actually surprisingly intuitive.

I'm still memorizing some inputs; ones that require holding a layer key, then holding a homerow mod on one hand, and finally hitting the intended character key are proving especially tricky.

(eg: hold thumb key to switch to symbol layer, hold down homerow mod for shift, press desired symbol for shifted version -- poor example, but all the same.)

More folks should give this sort of thing a try! Provided you're not also re-learning the alpha-key locations at the same time, it's really not so bad a transition. A day or two architecting your layout, a few days tweaking with use, some dedicated practice, and normal use from there on out should get one comfortable. :)


Not sure if relevant XKCD: https://xkcd.com/1806/


This is roughly what I do too. I've found it pretty good.

Minor differences:

I use Dvorak as the base setup.

I use the same system on Mac laptops, so the two inner thumb keys are both 'space' because when on the laptop rather than a split keyboard I use the spacebar to toggle into the num/symbol layer if held (I believe you can actually use thumb on the trackpad as extra keys if you want and your laptop layout works, but never got around to trying it).

Command keys on Mac laptop (either side of the spacebar) are set to backspace and enter if used individually.

I didn't go full home row mods after trying it. I use two keys at once for ctrl (sd or kl on a qwerty layout), and two keys at once for shift (cv or m, on qwerty).

A few other double key shortcuts e.g. xc as ":" for vim stuff, and cv in querty (jk in dvorak) as escape.

I have a 36 key keyboard but I guess due to the double space it's a 35 key layout. Don't use the other button (option) for much, just arrow keys with vim hjkl so could possibly live without it as a 33 key layout.


What application do you use to set this up on a Mac?


Karabiner does the actual remapping.

https://karabiner-elements.pqrs.org/

and

https://github.com/yqrashawn/GokuRakuJoudo

lets you write your keymappings in a text editor and translate it into the weird XML/JSON syntax so you don't have to use the GUI editor.


I have found the Miryoku layout extremely well-thought and easy to use - https://github.com/manna-harbour/miryoku

It has six or seven layers, and aggressively uses home-row mods.


I remember seeing the half keyboard back in 2001 (http://www.amazon.com/exec/obidos/ASIN/B00006IZIL/donhosek) and being intrigued with it (I was contemplating it for use with my Palm Pilot) but the price was prohibitive for something that I might not like. Ultimately, the fact that I have to move between computers periodically has kept me from doing anything but a traditional qwerty keyboard for anything.


Overloading Space, Tab and Enter to be used as a modifier when held means that you can't get auto-repeat on these keys and they are activated on-release instead of on-press, correct?


QMK firmware has a handy feature for this called Tapping Force Hold[1]. If you hold the key normally, it modifies the layout, but if you tap it once (or more) and then hold, you'll get the normal repeating behavior.

Example A:

Hold Backspace => Activates layer overlay

Example B:

Tap Backspace => Input backspace

Hold Backspace => Input held backspace => OS handles repeating as configured

[1]: https://docs.qmk.fm/#/tap_hold?id=tapping-force-hold


I believe so. You also lose repeat on the home row keys because they become modifiers when held. It’s a trade off, but one that many people make since repeated key presses is not as useful as the mod keys. Same is true for people who remap caps lock: they give up a lesser used feature for something more useful for their specific preference. Of course once you get into keyboard customization you can start doing things like map caps lock to escape when pressed alone, control when pressed in combination with another key and maybe make shift + caps lock activate caps lock. Depends on what you need and what you’re trying to accomplish.


I get auto-repeat on space by doing tap-then-hold of the key. Apparently not for tab/return. - I presume the behaviour is configurable if that's something that suits you.


Do you retain standard qwerty staggered layout muscle memory?

I heard using colemak and stagger column makes your muscle memory confused because it is similar with staggered row qwerty.


I learned the Workman layout before getting an ortholinear keyboard.

It was slightly more difficult for me to switch back to qwerty when I was still using a traditional staggered keyboard to type workman, especially when I was still getting comfortable with workman.

I wasn't really worse at qwerty than before: I just felt extra uncomfortable with the context switching.

Now that I'm exclusively using an ortholinear keyboard to type workman, I'm back to my original comfort level typing qwerty on traditional staggered keyboards. I don't enjoy it, but I don't really think about it either. Context switching went from a mild nuisance to completely effortless.


I can't speak to the particular 34-key board in the OP, but I've been using a Colemak 60% (HHKB) at home and a full-size QWERTY at work for a few years (after using Colemak almost exclusively for a few years before that) and I can jump back and forth with no trouble at all. It was a little awkward at first, but that was when I was just learning Colemak and had never properly learned to ten-finger-touch-type QWERTY.


I've typed Dvorak for years on staggered rows, and retained my ability to switch back to Qwerty at ~70% of the speed. I just switched to staggered column 58-key Dvorak though, and I have noticed it takes me a minute to go back to staggered row on my laptop keyboard in either layout. I think it has more to do with the key positions than the layout.


> Do you retain standard qwerty staggered layout muscle memory?

Yes, though I use a laptop's keyboard from time to time, which will help.

I use row-stagger QWERTY, and use Dvorak on small, weird keyboards like this.

I think learning a second layout on the same keyboard would be confusing (row-staggered or otherwise).


I'd love to see the opposite — bigger keyboards, with more keys dedicated to domain-specific functions (something like this[0]). I think that would mean less cognitive overhead in general as you do a particular job.

[^0]: https://twitter.com/mwichary/status/1537631208414191616?s=21...


I've found using Dvorak on a standard keyboard (until split keyboards became available) is quite efficient -- haven't found the need to switch to anything smaller. Back in the day built a mechanical foot pedal that would activate the control key for programs that required a lot of Control-key combinations (like WordStar), but fell out of use over time. Been using this setup for 35 years now.


I've always been of the opinion that 36 is too few, but this does a good job of converting me. I already do similar stuff with layers ie: one layer for a right hand numpad, another for home row arrows and some common programmer symbols.

One of these days I'll try out something other than QWERTY.


Miryoku user here. Nice post!

Symbols in a mirrored numpad shape to fix $ and ^ seems brilliant, I might have to try that! And the caps word feature, holy crap thats awesome.

Where are your \, ` and F keys, you don't use them? And why stock colemak not mod-dk?


Correction: s/to move $ to the left of ^/to move $ to the right of ^

Good post, although I find homerow mods kinda annoying so I personally don't use them (ergodox ez). I think the perfect layout for me would be something like a Sofle :)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: