Can't seem get my typing speed up

Hi folks,

I’ve had my Model 1 for about 3 months now. I got it because the Microsoft Natural keyboards I had been using for years to alleviate wrist/arm pain were no longer doing it, and the Kinesis Edge I tried made things worse. The Keyboardio helped quite a bit compared to both of those.

However, I find myself sometimes avoiding using it because I’m just too slow and error-prone with it.

FYI, my regular typing speed is in excess of 100WPM.

By this point, I am at a reasonable speed typing text. I would say I’m maybe 80% speed and 80% accuracy compared to a regular keyboard, with the hardest things being punctuation I use less often. Text with little punctuation sees me faster.

The areas I really struggle are with navigation keys and programming.

I have found I have a lot of “muscle memory” around navigation. I have to remember - what’s the key combination to go to my previous tab? Oh right, Ctrl-PgUp. Now, where is that here? How to I select more text here? Hmm, I think I want Shift-End… OK, maybe Shift-Fn-PgDn now? The lack of the arrow keys seems to bug me more than I’d expected, and for whatever reason having them in the vi arrangement doesn’t help. I think I may try adding WASD arrows to the Num layer, but that is a pretty minor part of at all.

For programming, the locations of \ and | and particularly troublesome, and the braces, bracjets, tab, esc, and tilde secondarily. Moving keys is one thing, but requiring different modifiers to access them apparently really messes with my head.

I probably spend half my weekday using non-Keyboardio keyboards, which no doubt doesn’t help, but I have little control over that. I normally slide back to those keyboards instantly, though occasionally catch myself reaching for keys in the Keyboardio locations there.

I’ve done little customization aside from swapping the Shift and Ctrl keys both in the firmware and the keycaps. I found the default shift location painful to reach repeatedly, and it was very confusing to have the keycaps be wrong, so I’m hesitant to heavily remap things since most other keycaps can’t be moved.

I’d really, really like this keyboard to work out better for me and I’m hoping some of you might have some suggestions. Thanks!


One thing that I need to do more of is deliberate practice. That is, isolating the things that you have trouble with, and repeating them until you start developing new muscle memory.

The challenge with the infrequently used punctuation symbols is that they are infrequent. That means you don’t use them enough to get used to them during the course of a normal typing session. You can compensate for this by dedicating a few minutes a day to basic exercises. Take a code stanza that includes a mix of the challenging symbols, and type it in a few dozen times. I find it more effective to focus on a few at a time, rather than trying to get it all perfect at once. Maybe that means you spend a week doing five minutes of {} braces every morning. And then another week doing navigation keys.

Another suggestion: keep your exercises simple, but realistic. Doing a row of {}{}{}{} doesn’t really do much for training. Better to do something you’d actually write:

for (i in 1:10){
   apply(x, MAR = 1, FUN = function(x){x[1] = x[1]+1})

One last thing I find helpful: when you run into one of those frustrating situations, where you’ve just flubbed symbol and it broke your flow, take 60 seconds right there and practice that same line 20 times. I’ve found that really helpful learning Emacs shortcuts, and I realize I’ve been lazy in using the same approach to smooth out the rough edges of using my Model 01.

Good luck!


1 Like

I feel the same way, which is why I made a layout with dedicated arrow keys! There’s really no substitute.

I can really relate to your post. Keyboardio takes some time to get used to, but I’ve found it very much worth it and I really don’t want to go back to a regular keyboard now.

One thing that’s really “key” here is to customize your layout extensively. The default layout isn’t that great and makes some very odd choices. For instance, why on earth would PgUp/PgDn be the base layer and Home/End be the modified one? I use Home/End far more often, so I swapped that pair. There are all sorts of things like this that you’ll have to customize to your particular pattern of use. You may want a layout where \, |, braces, brackets, tab, esc, and tilde are all available without modifiers (which is very possible).

If there’s anything you can do about this, like bring your keyboardio places and use it more, that might help.

I got the translucent keycaps (available on the website) and put clear labels on them so I could customize the keymap however I wanted! I really like having all my keycaps labeled and I love how it turned out.

Practice seems to be what’s needed to get used to a new keyboard.

When I was first learning to type on the Model01, it was painful to learn a new layout. Not only is the Model01 physically different than what I’d been used to for decades, I also switched from my native Finnish layout to the US one. As part of my learning, I generated randomly some text files with symbol characters, about one page per file, and used those to practicse. I’d load a file into my editor, then copy each line to the next. Painful, and very slow at the beginning, but it was worth it after a few days.

It was much less painful than when I first learnt to touch type as a teenager, though. At least there was no blood this time. Portable mechanical typewriters are not a thing I miss fondly.

You also might like the TapDance plugin which would let you tap once for (, twice for [, three times for {.

1 Like

That’s quite reasonable, and a good idea. Thanks!

Lars, good to run into you again! I remember your great talk at a Linux Expo in North Carolina in the late 90s about a bug in printk(), I used Obnam, and I’m sure your System Admin Guide and Network Admin Guides were common references for me back in the day. Thanks for all of that.

It’s been hard for me to grab time to practice, but that’s solid advice.

Restoring and using manual typewriters is one of my hobbies :slight_smile:

I would love that. I’d appreciate some pointers on how one might do it! I’ve been staring at this thing without solving it so far.

Brainstorms: Tab, Esc, and Tilde are already good, albeit with slightly odd locations for each. I put | on the butterfly key. That leaves the Any key, and maybe the led key (I tend to not need to cycle lighting, and could always put it on another layer anyhow). I suppose I could also move prog to another layer.

I’d be curious what others have done here

One other thing I’m considering: using vi keybindings as much as possible. I have basically four common environments I use:

  • Emacs
  • bash / lineedit (similar to emacs)
  • Firefox / occasional LibreOffice (with vimium plugin for navigation, but it doesn’t do much for editing)
  • Occasional vim

Of all these, vim with it’s mostly alphabetic controls would be the most similar between keyboards. I tried evil-mode awhile back but due to the vast number of emacs modes I use (mu4e, etc) it was clearly going to take more time to get properly set up than I have right now. The Emacs/bash things are reasonably OK, but the more Windows-like bindings in Firefox (home, end, etc) still mess with me pretty much. I don’t know if people here have any clever hacks for all this, but I’m all ears if you do!

It hasn’t bothered me much on traditional keyboards, but it seems that while trying to learn this one, it’s a bigger deal.

So here’s my layout:

Since you want brackets, braces, backslash, and pipe all on their own keys, maybe get rid of my Control-Left and Control-Right, which gives you 4 blank, which works if you don’t mind hitting shift for the braces.

Otherwise, move Del to a layer, get rid of one of the Fn keys, and use those two keys, which will give you 6 blank.

I made a lot more space by getting rid of the Num layer (combining it with Fn) and double modifiers - I don’t need two shifts or two controls or a Num key.

Alternatively, put pipe and backslash on the same key, like on a standard keyboard, and use shift for pipe and braces. Then you only need 3 keys, for open bracket, closed bracket, and backslash. So get rid of my control-left and control-right, and put the brackets there, symmetrically arranged. Then use the other two blank spots for backslash and tab.

That way you only need the function key for escape, and delete would have its own key. You could also swap escape and delete if you wanted. If you did that you’d then have dedicated arrow keys AND you’d have backslash, pipe, braces, brackets, tab, escape, and tilde all available without any modifiers (except the shift key for pipe, braces, and tilde, but that’s how a normal keyboard is).

You might also consider swapping tilde and backtick so you don’t have to hit shift for tilde.

Or - get rid of the right function key and make it a space, and put delete where the space key was - then you wouldn’t need the function key for delete either.

You could then swap backspace and the left function key, so the function key would be a thumb key and the palm keys would be used for space and backspace.

I made a sample for you. This has:

  • dedicated arrow keys
  • brackets, backslash, escape, tab all available with no modifiers
  • braces, pipe, and tilde all available with the shift key
  • two function keys
  • delete needs a function key
  • combined numpad and function layer

Thanks, that’s really helpful for ideas! I like the location of the brackets and put the backslash over the butterfly. I didn’t realize one could remap Prog. I think I do need to keep ctrl and space on both sides for ergonomic reasons. I’ll iterate a bit and report back with what I’m doing. Thanks again!

By the way, is there a tool that makes those images?

What do you mean? Prog isn’t really a key.

You mean ctrl and shift, right? There’s a plugin called OneShot that solves that problem so you don’t need to press two keys at once. You just tap the modifier and then tap the next key. That lets you get by with only one modifier key for each modifier.

I just made them by adding text to the blank map with Acrobat. There are websites that can help make keymaps but they won’t give you something keyboardio-shaped.

If you need more inspiration for tweaking the layout, there are quite a few threads about custom layouts already like Share your layout

Oh, I’ve never used it, but I just realized that Chrysalis can probably do it.

I don’t know what you mean. I’ve been afraid to map prog to anything, since it’s needed for re-flashing the keyboard. I figured if I messed anything up, I might be unable to fix it. This isn’t true? Does prog always work for re-flashing, even if it’s bound to something?

Yes, you can remap Prog without fear.

@algernon explained how it works:

1 Like

I found a way to break it. I remapped Prog to OSM(RightGui). And I’ve bound RightGui+Enter to open a terminal. Which means re-flashing my Model 01 now goes like this:

  1. Modify sketch
  2. make flash
  3. hold prog key, press enter
  4. admire the new terminal window that opens
  5. head-desk

Any idea how I can fix this?