Author Topic: Good key layout for programming software  (Read 7499 times)

0 Members and 1 Guest are viewing this topic.

Offline Rythh

  • Thread Starter
  • Posts: 44
  • Location: East Coast, United States
Good key layout for programming software
« on: Mon, 25 February 2013, 15:54:16 »
Hey again guys!
  I cannot wait to give the Realforce 104U a try, but while I wait for it to arrive I wanted to begin to think about the key layout I want to use for it.  Specifically, I program software a lot and want to have a key layout that reflects that fact.  Plain old Dvorak seems to be optimized towards writing in general, and colemak seems to be just easier to learn than Dvorak but intended for the same purpose.  Other than those 3, I think I have only ever heard of one other layout, and it was optimized for German keyboard coding. 

  I want this thread to just get my brainjuices flowing on the different types of layouts and to hopefully introduce me to some new ones.  So please, any input you have on your favorite layout is what I want to hear, even if it isn't optimized specifically for coding!

Thanks everyone!

Offline davkol

  •  Post Editing Timeout
  • Posts: 4994
Re: Good key layout for programming software
« Reply #1 on: Tue, 26 February 2013, 22:23:24 »
Colemak (or wide-Colemak mod) w/ Shalmu's extension on another layer.

Offline suka

  • Posts: 52
Re: Good key layout for programming software
« Reply #2 on: Wed, 27 February 2013, 14:20:37 »
I already described a lot about my motivations to try-out different keyboard prototypes and also layouts in my DIY thread over at deskthority, but since I've been thinking about documenting especially my experiences with the layouts anyways I guess your question is a good way to get started.

In short: Get the AHK-driver for the neo layout at www.neo-layout.org to be able to use their layer 3 & 4 with any layout, and if you're brave invest in ergonomic alternatives!

As I am a software developer I pondered learning a new layout first about 3 years ago - and soon stumbled upon neo-layout.org, which you already mentioned. What I did not realize was it was indeed optimized for German and thus not really perfect for my daily tasks of coding and documenting in English. Still, it was a real improvement, and especially the extra layers
are a programmers dream as they put all extra characters often needed at sane positions.

I'm quoting my personal setups below which are optimized for my split 4x5 rows/columns setup per hand, the 4th row being for thumbs only - but you'll get the idea:

The slighty modified layer 3 (or Mod3 in neo):
    @ € [ ] #    ! < > = &
    \ ° { } *    ? ( ) +
      $ | ~ `    ^ % " '


As you'll notice, all pairs of brackets are conveviently located beneath index and middle finger on home- and top-row, and all other symbols well accessible.

The 4th layer (Mod4) features all navigational keys on the left and numpad right:
    ⇞ ⇤ ↑ ⇥ ⇟    ß 7 8 9 ä     ⇤,⇥ : backspace & delete
    ⇤ ← ↓ → ⇥    . 4 5 6 ö
    e ⇥ i ⏎      0 1 2 3 ü     e,i : esc & insert


These two layers alone make programming that much easier, and since they are readily available as either driver or AHK-script from the neo page. And as the AHK-version doesn't need admin permissions and features a switchable base layout you can even stay with QWERTY and still use them!

If you really want to get the typing experience, however, I would recommend learning a more ergonomic layout. I have been through this a couple of times in the last 2 years: First neo, but then switched over to the (now obsolete) NordTast and its successor, AdNW, and just this week to its modification for matrix/non-staggered/symmetric keyboards like the TrulyErgonomic or 7bits HyperMini. And while the first weeks are really hard, it gets better fairly fast if you decide to switch over completely. The gain can not be overestimated, and I'm not just talking about speed or accuracy here, which might be depressing for quite a while depending on your current capabilities - what is most amazing is the smoothness and ease which is achieved by the change. And from personal experience I noticed that I can still type nearly as fast as before on a Qwertz keyboard after a little re-adjustment - the muscle memory still seems to be there, maybe also easier for me due to having custom keyboards with AdNW and thus directly feeling the physical difference to the standard office keyboards.

A little history about the development of these layouts, because currently most information is either lost (nordtast.org) or still only available in German (adnw.de) - mostly from my lurking on the mailinglist at googlegroups, so excuse any incorrect descriptions. I'll see whether a documentation in English could be retrieved/created in the future, as this seems valuable information to a broader audience.

NordTast was started by some interested people that were mainly unhappy with neo's optimizations focusing mainly on German only at that time, and the unwillingness to change the 'official' neo which was very understandable considering it had just been accepted as a preset layout in most linux distros. After several attempts of finding a layout that would be more ergonomic to type on several metrics emerged as being important (but still often questioned in alternatives that were tried out):

- Positions of the individual letters: Often used ones should be on the home-row, with separate weights for all positions
- Collisions should be minimized: The same finger should not need to be used in succession (nor its neighbour sometimes)
- Hand switches should be maximized
- Better distribution of keys on both hands and all fingers
- Inward rolls of the fingers preferred
- and many more ...

Looking at Dvoraks scientific paper, many if not most of these requirements were already identified by him in 1932, and lead to his well known layout. With the help of an Optimizer developed by a member on the list new layouts were than generated and evaluated by these metrics, taking into account Bi- and Trigrammes for both English and German. One interesting result was that Dvorak had indeed developed a very clever layout for English all by hand even under careful computerized inspection, with Colemak being slightly better but much more so in German and similar languages. Malt, IIRC, has a different take on some of these metrics, focusing more on similarity than hand switching, but I know too little about that.

Another observation was made trying Dvorak and optimized layouts, however, by some keen folks at NordTast at the time: The pure numerical metrics can not capture nor describe the specific feel or smoothness of a layout, and it was mentioned that Dvorak had also succeeded in that regard. Many opimizations were evaluated, and tiny manual adjustments finally lead to the two main layouts that are mentioned above and have been 'stable' for about a year now, with its main contributors seeing little to gain with future changes under similar premises (from time to time, there are new ideas being tried, like letter similarity a la Malt, but that no real contender has emerged is a sign of the maturity of the layout). For completeness, however, it should be noted that the original neo is also undergoing further refinements, but since I don't follow that line anymore I know not much about their metrics and latest ideas).

So here they finally are as I use them personally, mainly banning umlauts in favour of more often used slash and dash and exchanging a few bits due to my minimized hardware :
 
AdNW for normal keyboards:

    K U Q . J    V G C L F
    H I E A O    D T R N S
    X Y - , /    B P W M Z


BU-Teck for matrix layouts, also altered

    B U Q . X    P C L M F
    H I E A O    D T R N S
    K Y - , /    J G W V Z



From all I've read they beat Dvorak and Colemak in every aspect mentioned above, but with the latter being supported natively on most OS that makes switching without custom hardware or the willingness to install necessary drivers on every computer used harder. And to be honest, I don't want to advocate either over the other too much, in any case they are all a definite improvement over the standard qwerty. I can only recommend to try these out, however, as the feeling is really hard to explain.
Some of the metrics can be seen on the online analyzer http://patorjk.com/keyboard-layout-analyzer/, a quick check confirmed above claims, although the metrics are differently weighted or missing, but you'll get the idea that the layouts don't suck from another source ...

Too bad the original site has moved and its new home still does not have all assembled informations, and if so only in English - especially the graphic representations of the different layouts are really worth analyzing. Maybe if I find the time and interest I'll try to draft a better summary.

Hopefully this was not too boring,  I just could not stop practising BU-Teck :-)

« Last Edit: Wed, 27 February 2013, 14:25:48 by suka »

Offline Rythh

  • Thread Starter
  • Posts: 44
  • Location: East Coast, United States
Re: Good key layout for programming software
« Reply #3 on: Wed, 27 February 2013, 22:46:54 »
What an excellent post suka, you gave me tons of the information I was hoping to find.  Thank you specifically for all the links, finding information on these layouts was proving so difficult! 

So to be clear, you use a slightly modified layout of BU-teck for your first layer, and neo using the AHK driver for your 3rd and 4th layer?  You mention so many different layouts in your post it was hard to keep them all clear in my head! :D 

Also, would you recommend this exact layout for a flat, staggered keyboard?  You mention that it was optimized for non-staggered, so I am wondering if you have any particular alterations you might make on a staggered board!


Offline suka

  • Posts: 52
AW: Good key layout for programming software
« Reply #4 on: Thu, 28 February 2013, 04:49:55 »
For a normal physical keyboard, the pure AdNW layout is recommended.

It is supported within the AHK-based neo driver, available at http://neo-layout.org/neo20.exe. After installation, pressing Mod3 (which is CapsLock on the left and the Non-US '#' on an German keyboard on the right side) plus a function key allows configuration:
Caps+F1 it shows a dynamic on-screen map of the current layout (might need F3 to stay on-screen)
Caps+F12 cycles through alternate layouts, the second is AdNW.
Caps+F6 switches you to Qwertz
and Shift+Caps+Break en/disables the driver altogether.

Its settings are stored in "%APPDATA%\Neo2", set "isNordtast=2" on the bottom to start in AdNW mode.

What I didn't test so far, and haven't researched (but I would imagine someone has already found a solution for this driver on US layouts) : As you may notice, to get rid of the umlauts and to move right Mod3 you may need to modify the source, which I found pretty straight-forward when experimenting with it. Or maybe take the layout as input to some other remapping software...



Offline Rythh

  • Thread Starter
  • Posts: 44
  • Location: East Coast, United States
Re: Good key layout for programming software
« Reply #5 on: Sat, 02 March 2013, 16:02:27 »
Have you heard of Programmer's Dvorak? http://www.kaufmann.no/roland/dvorak/  was linked on a stackoverflow question, and I am curious if you or anyone else here has experience with it for programming.  I want to give it a shot as it seems really easy to port between machines and it says it did a lot of research towards optimizing the layout of the punctuation keys.

Lemme know what you guys think!

Offline listboss

  • Posts: 22
Re: Good key layout for programming software
« Reply #6 on: Wed, 17 April 2013, 19:19:13 »
Ryth,

I've tried that layout and I didn't like it. Specially it was hard to get used to numbers. I should mention that I tried it on a MS4000.
As a suggestion, try the 'layer' approach to the symbol keys. This guy has a good explanation about how to do it on a standard keyboard:

http://www.andong.co.uk/dvorak/DDvorak.aspx?page=Standard+DDvorak
https://github.com/deekayen/workman/blob/master/mac/screenshots/workman-dead/dead_state_layout.png
http://www.pvv.org/~hakonhal/main.cgi/keyboard

The basic idea is to use the comma key to enter a 'dead' state in which the next keystroke will determine what should be printed.
This is a software solution and thus available for the 3 major platform.

Offline martin360

  • Posts: 6
  • Location: Australia
Re: Good key layout for programming software
« Reply #7 on: Sat, 27 April 2013, 19:22:29 »
I'm using the Workman Layout (http://www.workmanlayout.com) and it's perfect for me.

Offline Rythh

  • Thread Starter
  • Posts: 44
  • Location: East Coast, United States
Re: Good key layout for programming software
« Reply #8 on: Sun, 28 April 2013, 15:56:04 »
Martin you have converted me I believe, at least I am going to try to convert.  I have been using QWERTY since I started experimenting with new, easier keys (cherry reds, and variable Topre), which had a great effect on reducing my finger fatigue, but after reading through that explanation of the Workman layout, I think I can reduce my fatigue even more by changing my layout to it.

Thank you for the information and the link, I plan on giving it a shot tomorrow and switching cold turkey from the abomination that is QWERTY.  I can't thank you enough if this helps reduce my fatigue, even if only by a little!

Do you have any tips on how to practice the layout, did you use any of the tools they link at the bottom of the page?

Offline daerid

  • Posts: 4276
  • Location: Denver, CO
    • Rossipedia
Good key layout for programming software
« Reply #9 on: Sun, 28 April 2013, 18:00:49 »
As a professional software dev, the workman layout has intrigued me for a while. I'll probably try it out on the ergodox

Offline Rythh

  • Thread Starter
  • Posts: 44
  • Location: East Coast, United States
Re: Good key layout for programming software
« Reply #10 on: Sun, 28 April 2013, 18:09:40 »
Not to derail the topic I have going for this thread (and if anyone has any other layouts and experience they want to share please go ahead), but what is the ergodox?  How much is it and what kind of key does it use?

Offline Larken

  • Posts: 624
Re: Good key layout for programming software
« Reply #11 on: Sun, 28 April 2013, 21:49:02 »
it's a DIY keyboard kit designed by a few members of the community. http://ergodox.org/

The notable differences to current offerings is the split design, fully programmable layout, and it's non-staggered matrix layout, using cherry mx switches of any kind, as long as you are able to source them.

It went for 199usd (unassembled kit) at Massdrop.  The second groupbuy ended about less than a week ago, so the only way to get one now is via the secondhand market or hope for a third run by Massdrop (somehow I don't think it's going to happen very soon, even if it does happen)
| Ergodox #1 | Ergodox #2 |


Filco Majestouch Brown | Ducky 1087 Brown | Cherry G80-3494 Reds | Unicomp Ultra Classics | Cherry G80-8113 Clears |

Offline martin360

  • Posts: 6
  • Location: Australia
Re: Good key layout for programming software
« Reply #12 on: Mon, 29 April 2013, 04:55:22 »
Rythh: I used 10fastfingers.com to practice the new layout before switching to it fulltime. It took me a while but I'm happy with it.