I've read quite a few experiences here, and they all seem to add a bit to my knowledge of what I want out of a keyboard layout. Hopefully my journey is able to aid others in their venture, or simply just give them a laugh at how I jumped 3 different layouts with so much uncertainty.
Ever since I can remember, I've been fiddling with computers. As such, I started typing long before anything in school started to teach me proper typing technique. This basically built my finger muscle memory into using about 3 of my right hand fingers and 3.5 of my left hand fingers (left pinky for mods and a, no proper technique). This was fine for most of my life growing up, I had actually learned to type quite fast, but it was a mix of a huge amalgamation of improper typing technique, and sentence buffering (read a sentence or phrase I need to type, and then look at the keyboard). I could type at about 70 wpm like this, which is astounding if I really think about all of the wasted effort my wrists, fingers, eyes and neck had to go through.
Fast forward to my first year of college studying Computer Science. I was also doing a ton of smaller programming projects on the side, being exposed to the world of crazy new languages and the ridiculous punctuation that came with them. I quickly realized that my way of typing was a crutch, and that I really only had the muscle memory of the alphabet in my head; punctuation was mostly a guessing game. So I puckered up, and decided I'm going to properly learn to touch type. At this point in time, I had no idea of better alternate layouts so I just tried to properly learn QWERTY from the ground up. This wasn't too difficult, I sped into 50wpm pretty fast with proper technique, since all I was really doing was getting rid of my improper technique, I had a plethora of proper bigraphs and trigraphs embedded into my muscle memory. I kept this up for a few more months slowly creepy into the 90s for wpm. I started to notice that typing words like "people", or "monopoly" was extremely uncomfortable and difficult, I thought this came from the fact that these words put a lot of strain on one hand, this was only partially the case; I could type things like "starwars" with relative ease. I realized my problem was that my pinky and ring finger muscles are very tightly connected, o well.. I would figure it out by brute forcing my way to muscle memory haven.
Fast forward, about a month of methodical practising; FastFingers speed at 110wpm, and TypeRacer speed at 80wpm, and yet still I have an incredibly uncomfortable time with many common words including the ones previously listed. I did what any sane person would do, I Google'd why it was so hard to type these crazy words, and by the power of Google's algorithmic prowess, Dvorak first showed up in front of me. I'd heard of it before, but I didn't really know what it was; I started researching into the methodology behind the keyboard layout more and more, the history of QWERTY and what not. Dvorak had me very excited, I am all for efficiency and life hacks (what better time to start than your early 20s).
My native typing speed for the English language wasn't overly slow, but muscle memory for punctuation never really fell into place, and coding on QWERTY for extended periods of time placed an extremely high burden on my pinky (which I never really used prior to about 3 months). So.. naturally, I started looking at the Programmer Dvorak layout, at first it looked extremely funky, and the number row was very interesting. What specifically caught my eye was that all the most commonly used coding punctuation was staggered across the number row as base keys, and the numbers were activated with shift (or Caps Lock). The arrangement of the number row caught me off guard (they were designed odd on the left, even on the right, most common numbers under stronger fingers, and the pinkies only responsible for 1 number each), but I realized that all of these keys are muscle memory, there is no point to having the number row go from 1-0, left to right; the alphabetic layouts don't.. so.
I started learning Programmer Dvorak for a while, and climbed my way back to 50 wpm after about 3 weeks. I very much liked the rhythm to it because of the high percentage of hand alternation, but what I liked much much more, was typing bigraphs like "th", or "ch", or "ou". These were finger rolls; very fluid movements, very very comfortable movements. At about the same time I started to get tiny pet peeves with the Dvorak layout, like typing "-ls" for Linux. That doesn't matter right? I'm really liking the layout, coding is very comfortable, and the is rhythm to the typing which is nice (I listen to a lot of music while coding). Hmmmm...Can't hurt to look through the internet a bit more to see if other people feel the same way about these finger rolls and what not.
Lo and behold, Colemak falls into my lap. I had seen Colemak a ton of times doing research for Dvorak, but I never really gave it too much thought since it stuck with a bit of the QWERTY layout. I illogically thought that it was only half superior to QWERTY where as Dvorak was 'fully' superior. So I started looking into Colemak vs Dvorak extensively, and found that the only real difference was hand alternation vs finger rolls (and shortcuts), which made sense since Dvorak was made for typewriters where each key is a pretty strong press, finger rolls are not the focus. At this point, Colemak was all that was buzzing around in my head, but there was one thing I couldn't find after hours upon hours of searching; a customized layout for programming, fully optimized.
I started looking into other layouts at this point which was a bust, but ultimately came down to DreymaR's big (seriously.. there are a lot) bag of tricks. I had a lot of ideas in my head now that I wanted to incorporate into one nice keyboard, that wasn't overly different from everything else. I had a few things i wanted:
- Colemak Alphabet
- Caps Lock Backspace
- Backspace Caps Lock
- Programmer Dvorak punctuation & Number Row
- A Modified Extend layer (no chords)
This didn't really seem out of reach and seemed to mesh pretty well together, so one weekend, I got down to it, I started fiddling with the Colemak layout on Patorjk's Keyboard Layout Analyser. The layout I had devised was showing some very promising results, it had combined Programmer Dvorak's punctuation ease with the finger rolls from Colemak, I kept tweaking it and testing until it was superior to Colemak in most tests (alphabet is the same, except for placement of Q). I checked the other metrics like same finger usage, right pinky and left pinky load distribution, and total movement. I created my own version of the keyboard layout, with everything mentioned above in there. I also created an AHK script to give me an extend layer based on Alt Gr. I coined it the Programmer Colemak, but really, I'm the only one that uses it so, its basically just Colemak heh.
It's been 4 months now, I'm still using my layout, and weirdly enough I haven't really had to make any changes, everything feels very natural to me. I'm loving the fact that finger roll muscle memory has fallen into place. The ease of using punctuation has made coding an absolute pleasure and has streamlined the process of thought -> code. The Caps Lock being remapped to backspace is incredibly satisfying; not having to leave the home row for errors is very nice. I have to use Caps Lock (now at Backspace) quite frequently since CONSTANTS pop up in every batch of code, and also typing solely numbers on the Number Row, it helps having the Caps Lock enabled (what it was designed for). Getting used to my Backspace being Caps Lock took a while, but it was worth it heh. The extend layer has also been treating me well, there is just something so nice about, being able to fiddle with a bunch of code and text, without ever taking my hands off the home row. (Don't even have to move my hand to arrow keys as those are in the extend layer)
I'm at around 100 wpm on FastFingers right now, and weirdly enough, about 95 wpm on TypeRacer, which is awesome. It really was my punctuation that was lacking strength. To top it off, there aren't any more uncomfortable presses any more, typing "you" was a bit funky in about the first month, but once I reached a certain speed, it felt natural. My speed with QWERTY really hasn't fallen too much; I make sure to practice is for about 15 minutes once a week or so, it keeps it fresh.
I know this is an especially long post; sorry about that. Thanks if you've been reading up to this point.
PS. Although my Extend mappings are completely different, the idea itself came from DreymaR's Bag of Tricks, so thank you =D