Struggling with arrow keys, any advice?


(Daniel) #1

Hi all, I really really wanted to like this keyboard so much, but I struggled for about a month and my fingers are in much greater pain than they used to be. I’m a programmer, I come from a Kinesis Advantage (best keyboard so far) and an ErgoDox, both of which I liked and disliked for different reasons, but I’m pretty comfortable typing on after having configured them with a layout I like. I really like how the Model01 thumb cluster is arranged in an arc, and the palm Fn key is great.

Unfortunately, the Model01 just doesn’t have any meaningful place where I can map the arrow keys in the main layer, and I use them extensively and very very frequently. I tried to get used to having them in the Fn layer, I thought, they’re right there in the home row, it must be comfortable once I get used to it, and pressing the Fn palm key shouldn’t be a big deal, but now after just a few minutes my fingers are so much in pain that I have to reach for another keyboard, any keyboard (heck, even a cheap membrane keyboard will do!), and I’ll immediately feel relief. I also tried to map them on the left hand instead of the right hand (or both), that didn’t help much.

The main issue is chording with arrow keys, and typing fast while using arrow keys in between typing like Shift+Arrows (select text) Ctrl+Arrow (e.g. move by word), Ctrl+Shift+Arrow (select words), etc. Having to add yet another modifier completely kills the ergonomics.
Even more, moving the cursor with arrow keys then typing something is problematic because if I try to type fast, the first key I try to type invariably gets pressed with the Fn layer still active, making me waste time. For more fun, try: select a few words (ctrl+shift+Fn+arrows), then type over with something that starts with a capital letter or symbol (Shift+key, no Fn). I usually end up pressing Fn+key instead of Shift+key if I try to do this quickly.

I also tried using OneShot for chording modifiers, but that slows me down even more, and I end up mistyping a lot of things as well. My fingers are not much happier either.

After struggling for weeks, I tried to map the arrow keys where the ,./- keys are in the default layout (becomes left, up, down, right, similar to what I have in my kinesis/ergodox layout), but it’s proving to be pretty difficult to get used to comma, period and slash (which I use a lot) in the Fn layer. There are simply not enough keys, it seems.

Everybody in mech keyboard forums seems to talk about improving ergonomics by reducing the number of keys and increasing the number of layers, but that seems to make it a lot worse for me. I’d rather have a lot of keys that I don’t have to chord instead.

So, am I the only one that has this problem? How did you solve that problem? If there are other programmers using this keyboard, what is your layout and “best practices” for coding using your Model01?

As I said, I really want to like this keyboard, but right now, I feel like it’s really letting me down (I’m typing from my Kinesis right now) and I might just have to get rid of it.

Thanks for any help!


(Michael Richters) #2

My impression of the issue is that you find chording problematic, but OneShot is too slow and/or awkward. I can suggest one tool that you may not have tried yet: Qukeys.

Qukeys makes it possible for many people to use home row keys as DualUse/ModTap keys without unintended keycodes, and — depending on chording habits — without significantly slowing down. Chording keys with fingertips on one row can be much more comfortable than using the palm and thumb keys, especially when using more than one at a time.

Qukeys does a much better job of this than QMK’s MT/LT keys (rollover doesn’t result in unintended modifiers, in general, and it doesn’t require the user to slow down). It may not be a solution for you, of course, but it’s one more tool you could try.


(Siew Yi Liang) #3

It took a bit of adjustment to get used to the palm keys for me at first, but for things like CTRL+SHIFT+LEFT I will use the left forefinger and thumb to hit CTRL and SHIFT, and use the right palm + corresponding finger to hit the arrow key for text selection. Other than switching between the keyboardio layout I have and normal keyboard layouts and sometimes getting myself mixed up here and there (I still hit the Esc key on the keyboardio a lot more than I’d like, sometimes closing message dialogs that I was typing in), I haven’t really had issues with text selection per se being uncomfortable. Maybe it also helped that I was already using a 60% keyboard prior (which didn’t have any dedicated Fn or arrow keys), so I merely had to adapt to just using the thumbs/forefingers to handle triggering modifiers instead of my pinky.


(Daniel) #4

Thanks for your input, although that doesn’t really help me. Of course like you, when I just started using it, with its (almost) “OEM” layout, I’d do the same to Ctrl+Shift+Left, except that I’d remapped Ctrl and Shift to be next to each other, so I could use just my thumb in between them to Ctrl+Shift, for this very reason. Even then, it’s just too many modifiers to think about and remember, muscle memory just refused to kick in, and eventually mi fingers started hurting before that could happen, so I had to change.

Another thing is, for me, it’s actually very uncomfortable to type with the same hand that’s pressing the Fn palm key, I can at most do one combo (say, Fn+h for left arrow), but I cannot type several keys while holding Fn, and most definitely, I cannot type a sequence of keys requiring me to constantly press, release, press, release Fn while typing.

Out of curiosity, how did you use the arrow keys on your 60% without Fn and without dedicated arrow keys?


(Daniel) #5

Ok but please help me understand, how exactly could I use Qukeys to, for example, make it more comfortable to use the arrow keys by themselves, then use them with Shift, then use them with Ctrl+Shift?


(Siew Yi Liang) #6

I had a Mistel Baracco keyboard, and I mapped the original Fn key to Right space (I’m too used to typing space with my left thumb from playing games), so all I would do is just use the right thumb to hit the right space, and then I would have IKJL/ESDF as my arrow keys. I was using a Ultimate Hacking Keyboard at home, but I set it up exactly the same way. I actually preferred it to having dedicated keys on the keyboard like I previously did with my Matias Ergo Pro, since it meant that I didn’t have to move my hands around at all and they could stay on the home row pretty much forever. I can’t say the same for the Keyboardio so far (since there are key combinations I’ve set up in Emacs and outside that require CTRL-SHIFT-ALT-WIN to all be hit at the same time followed by a function key), but it’s fairly close.

I actually cannot do the “thumb holds down two thumb row modifer keys at once” technique on the keyboardio. I always dedicate one finger to hit one key every time I need to do some complicated key combination. I also generally use either Emacs/vim in my day-to-day typing, so that probably helps since I really only use the arrow keys in a web browser or when I’m in 3D applications.

What about using your left palm to hit the Fn key + modifier instead, then you’d have your entire right hand free to hit arrow keys as you needed? Might be less mentally taxing since each hand would have a more specific responsibility.


(Michael Richters) #7

For example, you could map F to ShiftToLayer(FUNCTION) when held, D to Key_LeftShift when held, and S to Key_LeftControl when held. Then, you could get shift + arrows by pressing and holding with your left middle and index fingers, and using your right hand on the arrow keys.

Note that unless you make further adjustments on the FUNCTION layer, it would be important to press (and hold) the F key last (before using the arrow key) in this example. With the default layout, those other keys are used for mouse movement, so you’d want to be able to press and hold them, keeping their primary function.

Another thing you could do with Qukeys to get arrow keys without having to change layers is to map those arrow keys as the alternate Key values. For example, L could become Key_RightArrow when held. The drawback here is that you’d have to wait for the timeout before it starts to send that keycode. The timeout is configurable, so you could set it to, say, 150ms or even less. Too low, and you run the risk of getting alternate Keys when you’re trying to “tap” instead of “hold”. Then you could use your normal Shift and Control keys to modify the arrow keys. This wouldn’t be as fast as my first suggestion, especially if you want to tap an arrow key several times, but if you want to press and hold to get the normal key repeat, you could get your arrow keys with just a single keypress, albeit with a short delay on the order of a tenth of a second.


(John T. Johnson) #8

How about using a USB numpad for arrows, etc. ?


(Daniel) #9

That seems to defeat the purpose of a keyboard like this, I might as well just grab the mouse to select text then … but, it might actually work, thinking about it. I could place it in between the two halves to be used by either hand. At this point though, I wonder if that will be more comfortable/ergonomic than my current Kinesis or ErgoDox, which the Model01 was supposed to replace. Thanks for the suggestion though.


(Daniel) #10

I see, I understand what you were thinking of, and to some extent I thought about it too, but then I always figured it might interfere with normal typing. I haven’t actually tried it though.
Also, your first suggestion still requires me to press the same number of modifiers to use the arrow keys, just with my fingers on the home row instead of my thumb, and I actually find using my thumb for modifiers pretty convenient, while using my finger will be extra confusing, when mixing together typing prose and using modifiers.

Your second suggestion of putting the arrows as second function is pretty interesting, but I wonder if I would be able to move exactly by one character (i.e. press an arrow key just once), or if it would start repeating immediately. Or the opposite, whether that would disable repetition, forcing me to press multiple times (making sure to time it right, about 150ms each) to move more than one space.


(John T. Johnson) #11

Same. I use my left hand to do all modifiers when using the pseudo-arrow keys. I also moved my arrows over one key, as it made more sense to have them at home position, rather than one column over.


(lasse) #12

I used to have the same problem.

I got it resolved after asking on the forums. I realized that the triple modifyers were the problem. Hitting fn+shift is not an issue - but fn+shift+ctrl is a problem. The solution was to have extra arrow keys for ctrl+left/right arrow. Moving home/end also helped a lot.

You can see my layout here (arrow keys are on IJKL + UO):

Notes:
I had one more idea, that I never got around to. In IntelliJ IDEA (if you use that), you can smart select text with ctrl+w. I wanted to reassign that to the arrow cluster. But I never got around to it, since my current setup seems so effective.


(Daniel) #13

@lasse Thanks for your suggestions, I’m looking at your layout and will probably steal a couple of ideas from that and other layouts in pursuit of one that works for me.

Another of the problems I have is to often press Fn instead of Shift, because I have some symbols in the Fn layer (e.g { } [ ] \ )and some others in shifted keys, and it gets confusing quickly, so I’m thinking to have my Fn layer such that all keys except for letters are TOPSY(key) of what they would be in the main layer, so pressing Fn has the same effect of pressing Shift. That of course would mean moving F1-F12 somewhere else, so I’m not super sure I’ll come up with something good.

I also found this thread where this guy has a pretty interesting layout, and specifically, the arrow keys are in the main layer in place of tab, esc, enter, butterfly (resp. left, right, up, down):

Not sure how I feel about having the arrow cluster split between left and right hand, but maybe that’s not such a bad idea.

I really hope I don’t end up giving up on this keyboard, but at the end of the day, I’ll have to be practical, if I cannot come up with a working layout and my hands are still in pain (unlike with the Kinesis) then I’ll park/sell/get rid of this keyboard, and wait till @jesse comes up with a 72+ keys version …


(Daniel) #14

I started playing with a couple of layout ideas, both have Ctrl-arrow keys on the left hand in the Fn layer, as well as regular arrow keys on the right hand. The main difference is that on one, I also added the arrow keys in the primary layer like in that post I quoted above (in place of Tab, Esc, Enter, Butterfly as printed on the keycaps), and as such, I had to find a different placement for a few keys, most notably the Enter key.

I put both my layouts in the same firmware so I can switch easily between them to test them, via a toggle on the “prog” key in the numpad layer:

I’ll test drive them for a few days and see how it goes. Thanks all for the suggestions!


(lasse) #15

Glad you liked my layout. I hope you get find your golden layout.

I still have an old cheap keyboard attached to my PC, that I can give to people who visit me and want to type something. For the first few months I used it quite a bit.

Whenever something annoyed me with the model01, I tried to figure out what was the problem and then I vent home and improved on it. After several months I got to where I am now. Not perfect, but very very satisfied.

I hope it will work out the same way for you.


(lasse) #16

One comment on your layout:

I never use ctrl+up/down and I also think it is annoying to use fn with the hand I am typing with or changing fn positions. So I think my layout with the inverted T will be less stressful, if you are right handed.

But whatever floats your boat :smiley: Just keeping thinking systematically about what annoys you and you’ll get it eventually.


(Michael Richters) #17

When pressed and held, a qukey doesn’t start sending any keycodes until it times out. Continuing to hold the key is then the same as continuing to hold any normal key. In this example, if you press and hold a qukey with an arrow as it’s alternate key value, there would be a delay after pressing the key of 150ms, then the cursor would move, then there would be the usual OS repeat delay — about 500ms usually, I think — before the cursor would move a second character. I’ve tried something like this out, and found it quite easy to release the key before it generates a repeat character, as long as I’m looking at the screen, and the host isn’t lagging badly.


(Daniel) #18

I have three keyboards attached to my laptop: a cheap standard Dell keyboard for guests, my trusted Kinesis, and now the Model01. If I add the ErgoDox I’ll have 4, which makes it 5 with the laptop’s own keyboard :wink:

I plan to practice a bit everyday with the Model01, then switch to the kinesis when my fingers hurt too much. If I ever get to the point where they don’t hurt at all with the Model01, that’s when I’ll go all in. Right now I’m typing this from the Model01 but I can tell you I’ll have to switch in a minute or two. I’m used to the process of finding the perfect layout, as that’s exactly what I did for the kinesis and erogdox, it’s just taking longer than usual with the model01.

There aren’t a lot of uses for Ctrl+Up/Dn but I added it for symmetry and because this is still an experimental layout, once things settle I’ll free up keys I don’t need and add more useful things. That said, I use SublimeText currently, and Ctrl+Up/Dn scrolls the view without moving the cursor, while Ctrl+Shift+Up/Dn moves the selected block of text up or down, which can be handy.

I heard good things about IntelliJ, although I don’t know how good is that for C/C++ which I use daily. I also heard good things about VS Code, some of my coworkers are using that. Or, I suppose I should just switch to vim, then I can just use HJKL as those are the keys vim uses for moving the cursor natively, and I suppose not a coincidence the default layout also uses those keys instead of more naturally using the home keys.


(John T. Johnson) #19

SpaceCadet works really well for me. Brackets, braces, and parens are assigned to the Ctrl, Cmd, etc. keys. Tap for a bracket, hold for Ctrl, etc.


Modifiers too difficult for coding?
(davidreynolds) #20

I’ve remapped FN+WASD to the arrow keys, and programmers brackets {[]} to FN + right hand. However, I use a Dvorak remap similar to the Kinesis I’ve used for years, so YMMV :slight_smile: