• You are not logged in.

    Yet another keyboard layout (Dvorak-based)

    • Started by colibius
    • 24 Replies:
    • Reputation: 0
    • From: Los Angeles, California, USA
    • Registered: 19-Feb-2015
    • Posts: 18

    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!

    Last edited by colibius (29-Mar-2015 22:14:13)
    Offline
    • 0
    • Reputation: 0
    • From: Los Angeles, California, USA
    • Registered: 19-Feb-2015
    • Posts: 18

    It is also worth noting that I (obviously) don't care about keeping zxcv in place relative to qwerty. I use(d) Dvorak with Qwerty-Ctrl/Cmd/whatever (I primarily use OS X, and Karabiner to remap). I also didn't put too much emphasis on doing partial optimizations to minimize transitional pain. I figured I'd just suck it up and switch to whatever. It is, indeed, a bit painful. I'll be ok, though.

    Offline
    • 0
    • Reputation: 0
    • From: Los Angeles, California, USA
    • Registered: 19-Feb-2015
    • Posts: 18

    Yes, well, as I said, I tried carpalx, and I put a lot of effort into customizing it, but was never really happy with it. And I didn't know about MTGAP until a couple of weeks ago. Even today, I don't know what AdnW is. Dealing with trigraphs is something I considered, but I eventually came to the conclusion that it would probably not make a huge difference. Trying to arrange letters to minimize digraph effort is most of the battle. If you start trying to move letters around to optimize trigraphs, you are naturally going to de-optimize at least slightly on digraphs. Obviously that is ok if the inclusion of trigraphs is done just right, and you balance trigraph and digraph efforts appropriately. But in my opinion, even a digraph model can only be so good, and as the complexity of the model goes up, you eventually run into the problem of "fitting the noise". My preference was to build a digraph model I trust, and then constrain the vowels to remain on one side. Even with only a digraph model, relaxing that constraint does not make a very big difference in the best layout effort that was achieved, and I was still finding that most of the best layouts only had one vowel on one side (usually 'i', sometimes 'e' or 'a'). My intuition says adding a trigraph model would allow me to find a layout somewhere between the best layout that constrains vowels to be on one side, and the best digraph-only optimized layout that does not make that constraint. That is already a small gap to squeeze into, and you'd still find plenty of words that have only one vowel twice (maybe 3 times) that could be typed on one hand. Some people don't care (qwerty typists!), but I do.

    My approach was to develop the layout using a digraph model, then check that the most common trigraphs that can be typed on one hand were not very hard. "you" is a little harder than I'd like on the standard/angle-shift layout, but I've found very little else that is, and I don't consider it hard enough to worry about (it helps that I don't use that layout, though!). :-)

    Offline
    • 0
    • Reputation: 0
    • From: Los Angeles, California, USA
    • Registered: 19-Feb-2015
    • Posts: 18

    Wiktionary defines a digram as "A digraph". Wiktionary is certainly not the authority, so what is the subtle distinction between the two?

    On another note, a friend asked me to evaluate an alphabetical layout with my model, for fun. This layout beats qwerty and xpert:

    Alphabetic normalized effort =   0.5190,  91.5% of qwerty
    
    `12345 67890-=
     abcde fghijk[]
     lmnop qrstuv
     wxyz\ ;',./

    Technically, the two 'e's in xpert makes it hard to evaluate, because I'm not sure which 'e' to hit at which time, but whatever, I think reasonable people can agree xpert is amusingly bad.

    Offline
    • 0
    • Reputation: 90
    • From: Oslo, Norway
    • Registered: 13-Dec-2006
    • Posts: 4,497

    A digraph is a symbol composed of two monographs. Examples are typographical fl and fi, Dutch IJ, Slavic DŽ and similar ligatures. The '-graph' part shows that this is about typographics, that is, the graphical representation of letters.

    Two letters in sequence form a bigram (note the 'b'). Ask any cryptographer worth his salt. Then there are trigrams etc, and the generic 'n-gram'.

    Fun test with the alphabetic layout, there. One might also script a random layout generator and let it run a while to get an impression of the statistical distribution of your test. ;-)

    Last edited by DreymaR (30-Mar-2015 22:46:25)

    *** Learn Colemak in 2–5 steps with Tarmak! ***
    *** Check out my Big Bag of Keyboard Tricks for Win/Linux/TMK... ***

    Offline
    • 0
    • Reputation: 0
    • From: Los Angeles, California, USA
    • Registered: 19-Feb-2015
    • Posts: 18

    Sounds reasonable enough to me... <global search and replace in my code>

    Interesting idea with the distribution of efforts of random layouts. It seems easy enough, so I'll give it a try.

    Offline
    • 0
    • Reputation: 0
    • From: Los Angeles, California, USA
    • Registered: 19-Feb-2015
    • Posts: 18

    Green is randomized letters with punctuation in the above positions from the alphabetic layout, and blue is with punctuation in the Colemak (basically qwerty) positions.

    So qwerty's arrangement, at about 0.57, would seem to be better than average for a random layout, but not tremendously so. So for qwerty typists, it could have been worse!

    (sorry I forgot to normalize the distribution, but you get the idea)

    Edit: Also, every decent layout is well outside of about 3 standard deviations from the mean.

    SqB0BGb.png

    Last edited by colibius (31-Mar-2015 02:34:39)
    Offline
    • 0
    • Reputation: 90
    • From: Oslo, Norway
    • Registered: 13-Dec-2006
    • Posts: 4,497

    Wow, that's nice! Maybe mark a few layouts such as QWERTY, Dvorak, Colemak(DH?) on that distribution?

    *** Learn Colemak in 2–5 steps with Tarmak! ***
    *** Check out my Big Bag of Keyboard Tricks for Win/Linux/TMK... ***

    Offline
    • 0
    • Reputation: 0
    • From: Los Angeles, California, USA
    • Registered: 19-Feb-2015
    • Posts: 18

    That's another nice idea, but I've been too busy with other stuff and had to let this project lie fallow. But I'm looking for good metrics and ways to visualize them and get better intuition for these layouts.

    Anyway, in the meantime, I've been typing on the above layout, specifically the "angle shift+" one. Actually, I switched the 'f' with the 'y', which with the angle shift does not really change much, but makes it a little easier for me to type 'fi' and 'if' as a sort-of roll with my middle finger hitting the 'i' instead of my index finger. I did that because, even though I said above that same-finger digrams were about the same as Colemak, that only seems to be true for Victorian English (which was included in my corpus because it's so easy to find old books on Project Gutenberg). There was a bug in my program, and it was ignoring the more modern texts, which were weighted (or supposed to be) to be the vast majority of the corpus. That made 'fi' and 'if' seem a bit less common than they are with modern texts (not sure why), and so while same-finger digrams are a bit more common overall, it's still not too bad (better than Dvorak, and most other layouts, but not Colemak, MTGAP/MTGAP2.0, or seruxie's layout). For me 'fi' is even worse, because I'm a magnetospheric physicist and it turns out that I type 'field' a LOT, usually preceded by 'magnetic' or 'electric', at least in my academic writing.

    So this is essentially an iterative process for me. I wanted to start with a test layout and see what I learned about designing a layout. So I fully intend to build on what I learn to design a still better layout (hopefully). It's been just over 3 weeks since I started using this layout. I'm up to about 50 wpm (I typed around 90-110 on Dvorak, depending on the text). So far, I'm not sure what I've learned, but my brain is still struggling to build the muscle memory for the layout. And when I'm thinking about what I want to type (rather than thinking about the layout, like when I'm taking a typing test), my brain goes somewhat into Dvorak mode and I make more mistakes. So until I get better at this layout, I'm not sure how much of what I think are problems are really just new-layout struggles.

    But one thing I *would* like to do is update my effort model to deal at least with trigrams, as davkol suggested.

    Of course I'm finding the process to be rather fun, and that's why we're all here, I guess. :-)

    Offline
    • 0
    • Reputation: 90
    • From: Oslo, Norway
    • Registered: 13-Dec-2006
    • Posts: 4,497

    Beware that while the WR/FS/PT/LN/UE/YI-type same-finger bigrams seems like a brilliant idea on some keyboards, I've found that it works poorly on other keyboards. I don't think it's great on laptop boards, and it's quite difficult on some PC boards too. It depends on switch types and geometry.

    *** Learn Colemak in 2–5 steps with Tarmak! ***
    *** Check out my Big Bag of Keyboard Tricks for Win/Linux/TMK... ***

    Offline
    • 0
    • Reputation: 0
    • From: Los Angeles, California, USA
    • Registered: 19-Feb-2015
    • Posts: 18

    I'm intrigued by this suggestion, because I have no idea what you're talking about! Can you elaborate? Why are some bigrams different than others in terms of how they "work", and what do you mean by those "type" of bigrams (what is the common trait among them)?

    Offline
    • 0
    • Reputation: 90
    • From: Oslo, Norway
    • Registered: 13-Dec-2006
    • Posts: 4,497

    Oh, okay, sorry – I misread the part where you use the middle finger on the Y position in the 'YI' (in your case 'FI') bigram. What I was talking about is the "slide-down" same-finger bigrams like the ones I mentioned. These work well on some keyboards that let you slide one finger from the upper to the home row, but as I said this doesn't work on other boards.

    *** Learn Colemak in 2–5 steps with Tarmak! ***
    *** Check out my Big Bag of Keyboard Tricks for Win/Linux/TMK... ***

    Offline
    • 0
    • Reputation: 0
    • From: Los Angeles, California, USA
    • Registered: 19-Feb-2015
    • Posts: 18

    Oh, I see, you were referring to the Colemak layout same-finger bigrams. Well, you can't avoid having some same-finger bigrams (obviously), so do you have any suggestions for which ones work better? Or are you just advocating minimizing same-finger bigrams as much as possible (possibly at the expense of worsening other desirable features of a layout)?

    Edit: Also, to be clear, using my middle finger for 'i' when I type 'if' and 'fi' is something I'm trying to train myself to do for the most common few words with those bigrams, but I'd eventually like to come up with an arrangement that does not make that a same-finger bigram. However, as alluded to above, you can't get something for nothing, so I'm trying to balance minimizing same-finger bigrams with good key placement of common bigrams. As I say, this layout does a reasonably good job of minimizing same-finger bigrams, just not as good a some layouts.

    Last edited by colibius (13-Apr-2015 17:23:22)
    Offline
    • 0
    • Reputation: 0
    • From: Los Angeles, California, USA
    • Registered: 19-Feb-2015
    • Posts: 18

    I now realized that you were referring to something more physical, not the arrangement of keys per se.  Anyway, my mentioning of 'fi' and 'if' as a problem with the layout above got me to thinking about trying to fix that, mostly because it's going to bug me, even if I don't think absolute minimization of same-finger bigrams is exactly the goal. So I came up with another similar set of layouts that is almost identical according to my effort model, but which gets rid of 'fi' and 'if' as a same-finger bigram.

    For the "angle shift+" version that I would type on, it is:

    .,'uq kghcw/=\
    aoeip mtnsr-  
    ;zyxj bdlfv   

    and for a proper typist:

    .,u'q kghcw/=\
    aoeip mtnsr-  
    ;xzyj bdlfv   

    I don't really see anything that bothers me about these layouts, and they are lower in the frequency of same-finger bigrams than just the removal of 'fi'/'if' (about the same as Colemak, depending on the corpus used, having now fixed the bug I mentioned above so that my corpus is *actually* a mixture of modern fiction and nonfiction books (creative commons stuff), blog posts and articles from a variety of sources, etc.).

    I have also done some tuning of my effort model over the last few weeks, and that has shifted the rankings that I posted above around a bit. I list them here along with a binning of the frequency-weighted bigram effort for each layout. I'm sure I don't need to remind you that the bigram efforts are subjective, and by binning them into 3 bins (easy, medium, and hard) it fuzzes them even more (there is variation within each bin that is not visible), so take those numbers as "for fun", and not as anything to base your choice of "favorite layout" on. Oh, and I had to give my layout(s) a name so that I could list them here, so I called it/them August (Dvorak's first name), since these look so similar to the Dvorak layout. 'z' and 'k' are the only letters that swap sides now (relative to Dvorak). That wasn't a design consideration, only the constraint to keep 'aeiou' on the left side, but in principle it would make it easy to change only one side, as a transition step from Dvorak. Capewell's layout is similar in this regard. Anyway, here are the updated rankings:

    qwerty                    effort =   0.5369, 100.0% of qwerty,  0 keys different; binned stroke effort = (48.1 % easy, 46.1 % medium,  5.7 % hard)
    xpert                     effort =   0.5141,  95.8% of qwerty, 11 keys different; binned stroke effort = (56.6 % easy, 37.4 % medium,  6.1 % hard)
    Alphabetic                effort =   0.5038,  93.8% of qwerty, 30 keys different; binned stroke effort = (56.9 % easy, 34.5 % medium,  8.6 % hard)
    Minimak_4                 effort =   0.4800,  89.4% of qwerty,  4 keys different; binned stroke effort = (60.6 % easy, 36.2 % medium,  3.2 % hard)
    Minimak_8                 effort =   0.4487,  83.6% of qwerty,  8 keys different; binned stroke effort = (70.1 % easy, 26.8 % medium,  3.1 % hard)
    zsu                       effort =   0.4442,  82.7% of qwerty, 32 keys different; binned stroke effort = (69.5 % easy, 25.0 % medium,  5.5 % hard)
    Norman                    effort =   0.4373,  81.4% of qwerty, 15 keys different; binned stroke effort = (72.9 % easy, 22.2 % medium,  4.9 % hard)
    qwpr                      effort =   0.4350,  81.0% of qwerty, 11 keys different; binned stroke effort = (71.6 % easy, 25.0 % medium,  3.4 % hard)
    carpalx_qgmlwy            effort =   0.4346,  80.9% of qwerty, 20 keys different; binned stroke effort = (74.7 % easy, 21.6 % medium,  3.7 % hard)
    Minimak_12                effort =   0.4329,  80.6% of qwerty, 12 keys different; binned stroke effort = (74.0 % easy, 22.9 % medium,  3.1 % hard)
    phynnboi                  effort =   0.4247,  79.1% of qwerty, 29 keys different; binned stroke effort = (70.4 % easy, 26.7 % medium,  2.9 % hard)
    Dvorak_proper             effort =   0.4188,  78.0% of qwerty, 33 keys different; binned stroke effort = (73.2 % easy, 24.7 % medium,  2.1 % hard)
    asset                     effort =   0.4174,  77.7% of qwerty, 15 keys different; binned stroke effort = (77.2 % easy, 20.1 % medium,  2.8 % hard)
    Workman                   effort =   0.4167,  77.6% of qwerty, 21 keys different; binned stroke effort = (72.1 % easy, 25.4 % medium,  2.5 % hard)
    Capewell                  effort =   0.4144,  77.2% of qwerty, 30 keys different; binned stroke effort = (72.6 % easy, 24.4 % medium,  3.1 % hard)
    MTGAP                     effort =   0.4111,  76.6% of qwerty, 30 keys different; binned stroke effort = (70.7 % easy, 28.1 % medium,  1.2 % hard)
    Colemak-Mod-DH_ashift     effort =   0.4105,  76.5% of qwerty, 22 keys different; binned stroke effort = (71.9 % easy, 27.0 % medium,  1.0 % hard)
    Klausler2                 effort =   0.4101,  76.4% of qwerty, 35 keys different; binned stroke effort = (76.0 % easy, 21.7 % medium,  2.3 % hard)
    colman                    effort =   0.4080,  76.0% of qwerty, 23 keys different; binned stroke effort = (73.4 % easy, 25.0 % medium,  1.6 % hard)
    Colemak                   effort =   0.4050,  75.4% of qwerty, 17 keys different; binned stroke effort = (77.8 % easy, 21.1 % medium,  1.1 % hard)
    seruxie                   effort =   0.3997,  74.5% of qwerty, 26 keys different; binned stroke effort = (76.7 % easy, 22.3 % medium,  1.0 % hard)
    seruxie_Colemak           effort =   0.3963,  73.8% of qwerty, 25 keys different; binned stroke effort = (78.1 % easy, 20.8 % medium,  1.1 % hard)
    MTGAP_2.0                 effort =   0.3912,  72.9% of qwerty, 30 keys different; binned stroke effort = (76.2 % easy, 22.4 % medium,  1.3 % hard)
    August_ashift+            effort =   0.3840,  71.5% of qwerty, 34 keys different; binned stroke effort = (76.8 % easy, 21.9 % medium,  1.3 % hard)
    August_proper             effort =   0.3834,  71.4% of qwerty, 33 keys different; binned stroke effort = (76.7 % easy, 22.1 % medium,  1.2 % hard)

    Because the ones nearer the bottom are all "near-optimal", slight changes in the effort model can shift the rankings around a fair bit. Most notably, MTGAP and MTGAP2.0 were almost exactly equal before, but the current version of my effort model shows a largish gap between them. Some of that is because I think I was too heavily optimizing for rolls and roll-like strokes before, so I've turned down the "roll factor" knob by a modest amount. Some of it is just an accumulation of tweaks that (hopefully) better approximates the effort of each key transition.

    Last edited by colibius (15-Apr-2015 08:32:58)
    Offline
    • 0
    • Reputation: 90
    • From: Oslo, Norway
    • Registered: 13-Dec-2006
    • Posts: 4,497

    So now the Colemak-Mod-DH comes out worse than vanilla Colemak (by a small amount)? Interesting. What may have caused this upheaval, you think?

    *** Learn Colemak in 2–5 steps with Tarmak! ***
    *** Check out my Big Bag of Keyboard Tricks for Win/Linux/TMK... ***

    Offline
    • 0
    • Reputation: 51
    • From: UK
    • Registered: 14-Apr-2014
    • Posts: 646

    That looks like a interesting, optimized layout you came up with! According to my analyser (https://colemakmods.github.io/mod-dh/analyze.html), it has a same-finger bigrams rate significantly lower than Colemak. Also it scores an overall effort of 1.68 using my model, which is around the same as Workman and MTGAP. Obviously everyone has a different model so such differences are not surprising.

    However like DreymaR I'm also curious as to why in your model default Colemak now scores better than Workman and Colemak-DH, given you said in your original post that you share the aims of those two layouts regarding the center column keys..?

    Last edited by stevep99 (15-Apr-2015 11:07:26)

    Using Colemak Mod-DH with some additional ergonomic keyboard mods.

    Offline
    • 0
    • Reputation: 0
    • From: Los Angeles, California, USA
    • Registered: 19-Feb-2015
    • Posts: 18

    I was afraid you might ask those questions, because I was wondering that last night, too! I just didn't have time to investigate until this morning (and your questions really pushed me). It looks like I reduced the base cost of the qwerty 'g' and 'h' keys a little bit (not much), and that accounts for some of it. I also increased the base cost of the bottom row keys slightly, because I was getting too many layouts with high usage of the bottom row (I'm now questioning whether maybe either/both was too much). The cost of the Colemak 'oh' stroke was a little high, too, due to the way I introduced shift-key penalties (ironically to address the Workman complaint about Colemak's 'Th'), but in the process the value of one stroke (Colemak's 'oh') in its non-shifted form became erroneously high, and the model was assigning a larger effort to 'om' in Colemak Mod-DH than it should have been (more so than with Colemak's 'oh' because the frequency of 'om' is higher). I just fixed that. Thanks, you helped me notice that!

    None of those were huge changes by themselves, but enough together to explain the points you bring up. I'll have to investigate more this evening to try to figure out what I really think about the base costs I changed. Thanks again for raising the issue!

    Also, stevep99, how do you get your bigram frequencies? I am curious to check out your analysis tool when I get some time.

    Edit: I can't seem to load your layout analyzer, due to a Java error (ClassNotFoundException: com.spwebgames.keyboard.applet.KeyboardApplet). I'm running version 8 update 45. Any ideas? Edit 2: Evidently it has something to do with the certificate from spwebgames having expired, and I can't seem to force it to proceed anyway (I can trust spwebgames, right??).

    Last edited by colibius (16-Apr-2015 07:44:09)
    Offline
    • 0
    • Reputation: 0
    • From: Los Angeles, California, USA
    • Registered: 19-Feb-2015
    • Posts: 18

    Ok, I got home and checked my base costs, and yes, they weren't tuned to my preferences. I vaguely recall doing some experiment where I tried setting the base costs to values I thought were more typical of the "standard" layouts (by which I mean ones like Colemak, as opposed to Colemak Mod-DH), and I just forgot to switch it back. Anyway, this restores the balance:

    qwerty                    effort =   0.5293, 100.0% of qwerty,  0 keys different; binned stroke effort = (44.4 % easy, 49.9 % medium,  5.7 % hard)
    xpert                     effort =   0.5142,  97.2% of qwerty, 11 keys different; binned stroke effort = (46.8 % easy, 47.1 % medium,  6.1 % hard)
    Alphabetic                effort =   0.4939,  93.3% of qwerty, 30 keys different; binned stroke effort = (58.1 % easy, 33.7 % medium,  8.2 % hard)
    Minimak_4                 effort =   0.4752,  89.8% of qwerty,  4 keys different; binned stroke effort = (55.1 % easy, 41.7 % medium,  3.2 % hard)
    Minimak_8                 effort =   0.4466,  84.4% of qwerty,  8 keys different; binned stroke effort = (64.3 % easy, 32.6 % medium,  3.1 % hard)
    zsu                       effort =   0.4430,  83.7% of qwerty, 32 keys different; binned stroke effort = (64.6 % easy, 29.9 % medium,  5.5 % hard)
    qwpr                      effort =   0.4335,  81.9% of qwerty, 11 keys different; binned stroke effort = (65.8 % easy, 30.8 % medium,  3.4 % hard)
    Norman                    effort =   0.4329,  81.8% of qwerty, 15 keys different; binned stroke effort = (70.7 % easy, 24.4 % medium,  4.9 % hard)
    carpalx_qgmlwy            effort =   0.4317,  81.6% of qwerty, 20 keys different; binned stroke effort = (65.6 % easy, 30.7 % medium,  3.7 % hard)
    Minimak_12                effort =   0.4306,  81.4% of qwerty, 12 keys different; binned stroke effort = (68.2 % easy, 28.7 % medium,  3.1 % hard)
    Dvorak_proper             effort =   0.4169,  78.8% of qwerty, 33 keys different; binned stroke effort = (65.3 % easy, 32.6 % medium,  2.1 % hard)
    phynnboi                  effort =   0.4161,  78.6% of qwerty, 29 keys different; binned stroke effort = (68.8 % easy, 28.3 % medium,  2.9 % hard)
    asset                     effort =   0.4137,  78.2% of qwerty, 15 keys different; binned stroke effort = (70.3 % easy, 26.9 % medium,  2.8 % hard)
    Workman                   effort =   0.4121,  77.9% of qwerty, 21 keys different; binned stroke effort = (70.1 % easy, 27.4 % medium,  2.4 % hard)
    Capewell                  effort =   0.4079,  77.1% of qwerty, 30 keys different; binned stroke effort = (69.2 % easy, 27.8 % medium,  3.1 % hard)
    MTGAP                     effort =   0.4072,  76.9% of qwerty, 30 keys different; binned stroke effort = (68.4 % easy, 30.4 % medium,  1.2 % hard)
    Klausler2                 effort =   0.4069,  76.9% of qwerty, 35 keys different; binned stroke effort = (70.4 % easy, 27.4 % medium,  2.3 % hard)
    Colemak                   effort =   0.4034,  76.2% of qwerty, 17 keys different; binned stroke effort = (69.9 % easy, 29.0 % medium,  1.1 % hard)
    colman                    effort =   0.4021,  76.0% of qwerty, 23 keys different; binned stroke effort = (71.8 % easy, 26.6 % medium,  1.5 % hard)
    Colemak-Mod-DH_ashift     effort =   0.3996,  75.5% of qwerty, 22 keys different; binned stroke effort = (70.1 % easy, 28.8 % medium,  1.0 % hard)
    seruxie                   effort =   0.3977,  75.1% of qwerty, 26 keys different; binned stroke effort = (70.0 % easy, 29.0 % medium,  1.0 % hard)
    seruxie_Colemak           effort =   0.3938,  74.4% of qwerty, 25 keys different; binned stroke effort = (70.3 % easy, 28.8 % medium,  0.9 % hard)
    MTGAP_2.0                 effort =   0.3841,  72.6% of qwerty, 30 keys different; binned stroke effort = (75.6 % easy, 23.1 % medium,  1.4 % hard)
    August_ashift             effort =   0.3798,  71.8% of qwerty, 34 keys different; binned stroke effort = (73.9 % easy, 24.8 % medium,  1.3 % hard)
    August_ashift+            effort =   0.3784,  71.5% of qwerty, 34 keys different; binned stroke effort = (74.0 % easy, 24.7 % medium,  1.3 % hard)
    August_proper             effort =   0.3781,  71.4% of qwerty, 33 keys different; binned stroke effort = (74.0 % easy, 24.8 % medium,  1.2 % hard)

    I also forgot to include the standard angle shift version of the layout:

    `12345 67890[] 
     .,u'q kghcw/=|
     aoeip mtnsr-  
     ;zyxj bdlfv   

    In this case the top row is the same as the standard typist's version of the layout, and the bottom is the same as the "angle shift+" version.

    Anyway, I tried this layout out today, and I think it's a winner. It feels like a definite improvement over the first version, certainly the 'fi'/'if' is resolved, and I also like that 'nt' is now an inward roll ('nt' is much more common than 'tn') and so is 'st' (which is at least a factor of 3 more common than 'ts'). 'ch' is nice, too, and 'ds' is no longer a same-finger bigram. 'sc' is still a same-finger bigram, but it's more comfortable (to me) in its new location. I can't find anything that is definitively worse about this layout, except that 'ght' is slightly harder than it used to be, but there are very few same-finger trigrams, by design. So it feels great, and I'm going to stick with it for a while!

    Edit: Also, 'cd' is no longer a same-finger bigram, and 'mv' is easier. A definite improvement for the UNIX/Linux geeks among us.

    Last edited by colibius (17-Apr-2015 19:02:13)
    Offline
    • 0
    • Reputation: 51
    • From: UK
    • Registered: 14-Apr-2014
    • Posts: 646

    Nice. Glad you managed to identify the inconsistencies!  Good to see that in your system, Colemak-Mod-DH seems to be the best available of those that retain some qwerty / shortcut similarity :)

    colibius said:

    Also, stevep99, how do you get your bigram frequencies? I am curious to check out your analysis tool when I get some time.

    Edit: I can't seem to load your layout analyzer, due to a Java error (ClassNotFoundException: com.spwebgames.keyboard.applet.KeyboardApplet). I'm running version 8 update 45. Any ideas? Edit 2: Evidently it has something to do with the certificate from spwebgames having expired, and I can't seem to force it to proceed anyway (I can trust spwebgames, right??).

    Bigram frequencies are from a selection of out-of-copyright books, the same set used by the carpalx guy.   I recognise that might not correspond exactly to typical modern usage, but it seems a reasonable starting point. Ideally I'd have a way to input your own custom frequency table.

    Yeah, I know, Java applets are a pain. It's just I'm familiar with Java so it was the easiest for a Quick Win (tm).

    Update: There is now a new version of the analyzer which does not require the Java plugin!

    Last edited by stevep99 (28-Apr-2015 10:52:06)

    Using Colemak Mod-DH with some additional ergonomic keyboard mods.

    Offline
    • 0
    • Reputation: 0
    • From: Los Angeles, California, USA
    • Registered: 19-Feb-2015
    • Posts: 18

    Yes, I have been very impressed by Colemak and Colemak-Mod-DH that they do so well within their constraints (i.e. better than most "fully-optimized" layouts). It is obviously an outstanding layout for qwerty typists, as advertised. And in case it is not clear, I have made no attempt to tune the model purely to make some layouts look better than others.

    I originally had the intention of creating a "Colemak-style" layout for myself, a Dvorak typist, meaning one that made some tradeoff between the number of keys changed, and the effort score. That was one of the reasons I abandoned carpalx, because it seemed to be designed to create only fully-optimized layouts, and I couldn't figure out how to make it give me the best layout that only changes n keys. So I wanted to design a program that would do that. However, I realized that starting with fully-optimized (or nearly so, given that the outer punctuation remains the same) layouts was useful because it allowed me to tune the model very carefully. When you compare (mentally or physically) two layouts that the model thinks are both near-optimal, often a few keystrokes jump out and you can easily see or feel problems with the effort model. You reduce the noise to better see the signal, or something like that (in this case, the signal means the problems with the effort model). At least, that was my thinking. And it's pretty obvious that once you get to the level of near-optimal, individual preferences become critical to "improving" the layout (improving for some, worsening for others). Which is obviously why Colemak-Mod-DH exists. :-)

    Offline
    • 0
    • Reputation: 90
    • From: Oslo, Norway
    • Registered: 13-Dec-2006
    • Posts: 4,497

    How do the two main Colemak-DH variants (DvbgHm vs DbgHk) fare compared to each other? Pretty similar I guess, and naturally it depends on your preferences. To me, the inward and outward lower row index positions are about as good I feel, and both are much better than the middle trench home row positions.

    *** Learn Colemak in 2–5 steps with Tarmak! ***
    *** Check out my Big Bag of Keyboard Tricks for Win/Linux/TMK... ***

    Offline
    • 0
    • Reputation: 0
    • From: Los Angeles, California, USA
    • Registered: 19-Feb-2015
    • Posts: 18

    Setting those up for an ANSI keyboard (which is currently what my program does), the difference in effort score is so small that I definitely don't trust it to be meaningful (0.1% difference, with the very slight advantage to DvbgHm). Given my preferences, 'h' is considered slightly more difficult with DbgHk (making 'th', 'wh', 'sh', and other alternating-hand digraphs ever so slightly more difficult). But the transitions from 'h' to 'i' or 'e' ('hi' or 'he' bigrams) are considered slightly easier with DbgHk. Of course, 'm' is easier with DbgHk, but transitions to 'y' and 'u' ('my' and 'mu' bigrams) are considered more difficult. After that, the differences get especially tiny.

    So yes, quite similar, and highly dependent on my preferences and the accuracy of my effort estimates. :-)

    Edit: I just carefully reconsidered the base cost of each key, with particular emphasis on the relevant ones for Colemak-DH, and now DvgHk has a 0.2% advantage. And it could easily go back the other way if I keep messing with it. :-)

    Edit2: The challenge seems to be making all of my effort estimates mutually self-consistent. So I got to thinking "is 'he' really easier with DbgHk? Or about the same? maybe harder?". And then you tweak the effort of one stroke, and now it makes it harder/easier than a third one, and you ask "Is the [n]th one really [easier|harder] than the [m]th one? What about the [m-1]th one?", ad infinitum... This is the challenge of using my model. In the end you have to hope that the (small?) errors in estimating efforts kind of averages out in aggregate.

    Edit3: I had originally considered discretizing the keystroke efforts into "really easy", "easy", "medium", "hard", and "really hard" (and assigning appropriate numbers to each level). I suspect that would work pretty well. In the end I decided I would not do that, but that I would try not to sweat the details too much. I need to constantly remind myself of that. :-)

    Last edited by colibius (17-Apr-2015 04:22:36)
    Offline
    • 0
    • Reputation: 0
    • Registered: 18-Nov-2017
    • Posts: 1

    @colibius

    Hi. I know it's an old thread, can you perhaps point me to zsu layout? Neither Google nor search here is co-operating...

    thanks, Ian

    Offline
    • 0
    • Reputation: 90
    • From: Oslo, Norway
    • Registered: 13-Dec-2006
    • Posts: 4,497

    Isn't that just another dead horse?

    *** Learn Colemak in 2–5 steps with Tarmak! ***
    *** Check out my Big Bag of Keyboard Tricks for Win/Linux/TMK... ***

    Offline
    • 0
    • Reputation: 20
    • Registered: 08-Oct-2017
    • Posts: 223

    And we all know that dead horses are for beating ;)

    Offline
    • 0