As a Dvorak typist not wanting to be left out of the game, I got sucked into the vortex of designing my own layout. My reasons are similar to other people's main complaints about Dvorak, I think (I'm new here, so I don't mean to speak for others). One reason is the 'i' key, and the other is the upper-right keys ('r' and 'l'). Also I don't like the placement of 'f'. In addition, I have a slightly unorthodox typing style, which until yesterday I did not realize had a name (it's the "angle shift mod", and I also hit the qwerty 'r' key with my middle finger; this is what is most comfortable for me, a male with average-sized hands, and also happens to make the left hand roughly symmetric with the right).
I tried starting with carpalx to design a custom layout, but I didn't really understand the effort model, and it seemed to have different goals than I did (mostly, if I remember, it was more anti-pinky than I am). And I wasn't really fond of the layouts it was producing. So I decided to write my own! (I discovered the MTGAP layout and optimizing program after mine was mostly finished, so I never actually tried it). I'll release mine (soon) on github once I cleanse it of my personal e-mails (which makes up part of the corpus I use), and make some other minor tweaks to depersonalize it some.
Effort Model:
I view typing as the act of transitioning from the press of one key to the next. I define the effort of typing as the effort of those transitions. I made a lookup table to define all those efforts (tedious, yes, but also very customizable to your tastes).
So I define the "base effort" of each key on the keyboard as some number. The easiest are the home keys, obviously. I consider qwerty 'b' to be the hardest key among the main letter keys, because it requires the longest stretch. I seem to somewhat share the preferences of the Workman and Colemak-Mod-DH layouts regarding the center column keys, and I tolerate bottom-row key placement more than some people, I think.
The first key of a word uses the base effort, as do keys that use the opposite hand from the previous key. I define efforts of successive keys on the same hand as the effort of each key "given that you just typed the previous key". So typing qwerty 'k' after you just typed 'l' is considered very easy (the effort is considered easier than the base cost of 'k', to encourage rolls, etc). Combinations like qwerty 'rb', 'cr', and 'ce', I consider relatively hard, and so forth (even though, as I said, I use nonstandard fingerings, but the code can handle any finger preferences).
Given all these effort definitions, I feed that to a list of digraph and letter frequencies (which I create from a huge corpus of text I assembled from diverse sources), and calculate effort of typing English with a given keyboard layout. And you probably know the rest.
To give you some idea of how my preferences are set, here is how it ranks various layouts:
qwerty effort = 0.5710, 100.0% of qwerty, 0 keys different
qwerty_angle_shift effort = 0.5642, 98.8% of qwerty, 0 keys different
xpert effort = 0.5326, 93.3% of qwerty, 11 keys different
Minimak_4 effort = 0.4961, 86.9% of qwerty, 4 keys different
Minimak_8 effort = 0.4587, 80.3% of qwerty, 8 keys different
qwpr effort = 0.4513, 79.0% of qwerty, 11 keys different
zsu effort = 0.4509, 79.0% of qwerty, 32 keys different
Minimak_12 effort = 0.4396, 77.0% of qwerty, 12 keys different
Norman effort = 0.4356, 76.3% of qwerty, 15 keys different
carpalx_qgmlwy effort = 0.4268, 74.7% of qwerty, 20 keys different
asset effort = 0.4216, 73.8% of qwerty, 15 keys different
phynnboi effort = 0.4192, 73.4% of qwerty, 29 keys different
Workman effort = 0.4131, 72.3% of qwerty, 21 keys different
colman effort = 0.4105, 71.9% of qwerty, 23 keys different
seruxie effort = 0.4100, 71.8% of qwerty, 26 keys different
Dvorak effort = 0.4085, 71.5% of qwerty, 33 keys different
Dvorak_ashift effort = 0.4081, 71.5% of qwerty, 33 keys different
Colemak effort = 0.4080, 71.4% of qwerty, 17 keys different
Dvorak_ashift+ effort = 0.4063, 71.2% of qwerty, 33 keys different
Klausler2 effort = 0.4058, 71.1% of qwerty, 35 keys different
Capewell effort = 0.4042, 70.8% of qwerty, 30 keys different
Colemak-Mod-DH_ashift effort = 0.4039, 70.7% of qwerty, 22 keys different
MTGAP effort = 0.3983, 69.7% of qwerty, 30 keys different
MTGAP_2.0 effort = 0.3979, 69.7% of qwerty, 30 keys different
ashift = "angle shift mod", and ashift+ = "angle shift mod + hitting qwerty 'r' key with middle finger"
My Layout(s):
So for my finger preferences (ashift+), here is the best layout that keeps almost all punction in the same place as Dvorak (23 keys changed from Dvorak):
`12345 67890[]
.,'uq xghmw/=\
aoeip csntr-
;zfyj bdlkv
I constrained vowels to be on the left, like Dvorak (mainly because I did not want any long stretches of letters on the same hand). Same finger digraphs are about as common as with Colemak (which is pretty good). The 8 most common letters are on the home keys. 'h' (the 9th most common letter) is in what I consider to be the easiest non-home-key position, and digraphs like 'th', 'sh', 'ch', and 'wh' are all very easy, as are the most common same-hand digraphs on this layout (or at least fairly easy).
As an alternative for standard typists and "angle shift mod" typists, my model produces the same layout for each, with the effort being slightly lower in the latter case (but in that case 'fu' becomes a same-finger digraph, which could be a problem if you have particularly bad "potty fingers"! If so, you might like to type that digraph like a standard typist). This layout is 22 keys different from Dvorak:
`12345 67890[]
.,'yz xghmw/=\
aoeip csntr-
;qfuj bdlkv
I welcome any comments people in this community may have. You are more experienced than I am with this stuff!