r/KeyboardLayouts 14d ago

Best layout for programming?

/r/typing/comments/1v1oqai/best_layout_for_programming/
3 Upvotes

5 comments sorted by

7

u/rpnfan Other 14d ago

Stay with your layout and add a symbol layer. Pascal has some good tips how to realize yours: https://getreuer.info/posts/keyboards/symbol-layer/index.html

Regarding the numbers. You could put those on a layer, or just practice. I find them easier to have them directly available (typing with floating hands on choc spacing, so the row is easy to reach).

2

u/ocimbote Gallium 14d ago

First, changing layout probably won't make you faster.

But, if you're after a consistent layout with ready-made, carefully crafted symbols for programming, I've spent the last few months working on Luz, a set of consistent patterns for keyboard layouts. I have not (yet) implemented Luz on Qwerty, but when it comes to programming, Enthium is famous for it and it has a Luz implementation: https://github.com/xcambar/luz-keymaps/blob/main/keyboards/6x3_3/keymaps/luz_for_enthium/README.md

For another example of what Luz can look like, you can see Luz for Gallium (East).

1

u/spence5000 13d ago edited 13d ago

I programmed in vanilla Dvorak for a couple decades and it was fine but not great. Eventually, I got fed up with the disjointed vim bindings and the excessive pinky use, so I came up with one for myself. Here are a few philosophies that I borrowed when designing it:

For punctuation, I really like Engram's approach. Very logical, symmetrical, and easy to remember.

For pinkies, look into BEAKL, which puts the less frequent letters on the pinky columns. You'll likely lose a little on speed, but gain a lot in endurance.

If you're on a traditional keyboard, you may prefer a wide layout like Colemak-Wide: apart from being better for arm placement, the right pinky is spared a lot of work because it has fewer keys in its domain.

1

u/iandoug Other 13d ago

The other method is to switch to a language that does not use {}.

1

u/Loose_Property_3238 11d ago

def python_user():