• You are not logged in.

    My software layout machine analysis

    • Started by Viper
    • 7 Replies:
    • Reputation: 22
    • Registered: 06-Jul-2018
    • Posts: 18

    There were a few claims about alternative layouts and typing ergonomics that kept bothering me. What bothered me even more was not having any data to respond with! I don't consider expert opinions, even if they are mine, to be adequate enough evidence; however, expert opinions can be a good starting point for investigation, and if they are backed with hard data, they shouldn't be ignored. And so, I spent quite some time and effort making a thorough machine analysis of layouts.

    The analysis uses 3 corpora, each of roughly 1.8 million words, and SteveP's fork of the Patorjk analyzer. The corpora vary drastically by language complexity; one is made from kids' books, one is from average books, and one is from Lovecraft and philosophical works. The conclusions are that language complexity has no impact on column stagger keyboards with thumbshift while a higher language complexity results in higher scores on ANSI keyboards (as to why this is the case, I can only speculate, but it's likely caused by the longer sentences resulting in less capitalised letters, which require awkward pinkie movement to shift on ANSI). The two highest scoring layouts for ANSI and column stagger are Colemak-DH and MTGAP. Column stagger improved the layouts' scores by 7 points on average. That's a massively significant difference! Nonetheless, QWERTY on column stagger was still much worse than the worst alternative layout on ANSI. The presence of punctuation does not cause the alternative layouts to suddenly become inefficient.

    Keep in mind that I'm only a single person without a lot of incentive to analyse this further as this is very demanding and complex work, and I'm not paid for it nor do I gain anything from it (heh, at least this gets rid of bias!). You can download the source files here; the corpora, layout files for SteveP's analyzer, and the result screens with distances and SFBs. I encourage the use of the corpora for further analyses or error-checking of the results.

    Last edited by Viper (10-Mar-2021 14:02:01)
    Attachments:
    Offline
    • 1
    • Reputation: 117
    • From: UK
    • Registered: 14-Apr-2014
    • Posts: 975

    Nice work, interesting to see the results. I'm not surpised by language complexity not being a huge factor, or the fact that Erdodox-layouts score better overall. Non-row-staggered boards are bound to have a shorter travel distance which is a large factor in the overall, plus the better access to Shift... on which more later.

    On to some specific points:

    All ANSI layouts in this anlalysis use a straight left wrist fingering scheme, also known as the
    angle principle

    If I understand correctly, for the ANSI layouts you are using the "angle-cheat" method, i.e. not moving the physical keys, but using  non-standard finger assignment. Although many users type like this in practice, and I suspect better results can be obtained by doing this (you could argue it's better to use whatever is the best available technique for a given layout)... but still, it isn't necessarily how the layouts have been designed or recommended to be typed. Shai recommends that C in Colemak should be typed with middle finger for example. It also means there will be bigram differences between the ANSI and Ergodox versions being tested.

    Patorjk’s analyzer use the traditional typing technique

    This isn't strictly true, you can set up angle-mod, angle-cheat, or traditional in patorjk too - it's just it doesn't factor this in properly (IMO) in the calculation. So for example typing (Qwerty) JM and JN would score the same because the distances in both cases are the same, whereas we know in reality that JM is easier because the keyboard's stagger direction matches the wrist. Perhaps that's what you meant but thought I'd clarify just in case. I'm not at all clear how CarpalX handles keyboard stagger, if at all.

    This is likely due to the increased average sentence length, which results in fewer
    capitalised letters at the beginning of sentences. Movement of the pinkie finger to shift is penalized
    on ANSI keyboards while it takes minimal effort on Ergodox keyboards due to one of the thumbs
    resting on the shift key.

    Yes, I think this is a particularly interesting area. Often modifiers get overlooked but they can often be important contributors to the overall typing experience. I have a split-space keyboard and have Shift on one the spacebars as I think the standard Shift keys are strongly detrimental. Even putting Shift on AltGr/RightAlt would be a significant improvement, especially in conjunction with the Wide Mod. I suspect doing this would cancel out a big chunk of the Ergodox's advantages. Nonetheless, I think we can agree the having a split ergo board is bound to be more comfortable than one-piece row-staggered board, even with all the hacks employed to make it useable, so the fact the results reflect this is justified.

    Last edited by stevep99 (16-Jan-2021 16:28:45)

    Using Colemak-DH with Seniply.

    Offline
    • 1
    • Reputation: 22
    • Registered: 06-Jul-2018
    • Posts: 18

    Thank you for reading the analysis! I appreciate it. I wasn't surprised either that language complexity is not a huge factor, but to see it is not a factor whatsoever on Ergodoxes, and arguably not a factor on ANSI either if we correct for the less frequent shifting, was shocking.

    If I understand correctly, for the ANSI layouts you are using the "angle-cheat" method, i.e. not moving the physical keys, but using non-standard finger assignment. (...), but still, it isn't necessarily how the layouts have been designed or recommended to be typed. Shai recommends that C in Colemak should be typed with middle finger for example. It also means there will be bigram differences between the ANSI and Ergodox versions being tested.

    Correct, all the ANSI layouts were used with the angle-cheat method. Surprisingly, the scores of layouts do not become significantly worse/better after applying the angle cheat; the increased SFBs are counterbalanced by the better type of movement I believe. It does cause inconsistency in SFBs between ANSI and Ergodox, but I believe this better highlights the improvement that column stagger provides! Also, making all the layouts use angle-cheat has virtually no impact on the final rankings anyway, as seen in the scores for Ergodoxes (only MTGAP and DH swap places, but the difference is not statistically significant still). The minor increase in SFB does not make up for the large benefit gained by not twisting the wrist; the ulnar deviation is much worse than occasionally stressing a tendon more. I would go as far as saying that using the traditional technique should be penalised by at minimum 10 points! It sounds extreme, but I strongly believe that it is that bad. We should not pander to nonsensical techniques.

    This isn't strictly true, you can set up angle-mod, angle-cheat, or traditional in patorjk too - it's just it doesn't factor this in properly (IMO) in the calculation. (...). Perhaps that's what you meant but thought I'd clarify just in case. I'm not at all clear how CarpalX handles keyboard stagger, if at all.

    I did mean to imply that it isn't factored properly in the calculation. I'll see if I can word it better as it might cause some confusion. CarpalX, from what I understand, seems to rank a lot of the positions equally, which I don't think is adequately accurate. It is consistent, but it is not accurate (not enough for my liking at least).

    Often modifiers get overlooked but they can often be important contributors to the overall typing experience. I have a split-space keyboard and have Shift on one the spacebars as I think the standard Shift keys are strongly detrimental. Even putting Shift on AltGr/RightAlt would be a significant improvement, especially in conjunction with the Wide Mod. I suspect doing this would cancel out a big chunk of the Ergodox's advantages. Nonetheless, I think we can agree the having a split ergo board is bound to be more comfortable than one-piece row-staggered board, even with all the hacks employed to make it useable, so the fact the results reflect this is justified.

    Modifiers and symbols are sadly overlooked. I tested the difference that's caused by using a thumb shift on the right AltGr ANSI on the side (the same thing I'm using right now), and while the difference is significant (+1 point), it's nowhere near enough to explain the remaining 6 points. The stagger is just much more efficient; the travel distance reductions are massive. I did test out DreymaR's symbol rotation mod as well. While the difference was tiny (+0.05 points), it's siginficant when you realise that it's for moving just a few relatively rare keys. I did not test the difference an AltGr symbol layer (for the infrequent number row symbols) would make, but I believe it would have results similar to DreymaR's symbol mod; small, albeit significant. However, I would not put frequent symbols in a layer (such as the semicolon, the apostrophe, or the hypen); I believe it would hurt typing flow.

    Last edited by Viper (16-Jan-2021 21:21:30)
    Offline
    • 0
    • Reputation: 7
    • Registered: 18-Nov-2017
    • Posts: 67

    Hi

    Your three sample texts (and Complex had way too much Greek :-) have poor character frequency. So a layout actually designed for English character frequency would not necessarily perform at its best.

    Easy: ⍽etaohnisrdlu⮠wmgyfc,bp.k"vI'-TAMSHWB;?!xDCNOLjPqJERYGFz_K:VUX()Q1[]2*037Z948`65|&=#/$

    Average: ⍽etaonihsrdlu⮠mwcyfg,pb.vk"I'-TA;HMS?!xWBjqCGLPY:NDOFzERJVK)(1*U0Q2X38549Z76$[]&=/+{}#

    Complex: ⍽etaonishrldcufmwgpy,b⮠v.kIT-;x'A"jqSHWBOCM1PN:EF23Gz4DL()!R058J?796UKYV[]XZ&Q*/$=+|#@⭲<>%^

    Anyway, I tested them with Den's KLATest, results FWIW on ANSI: (accidentally picked Colman instead of plain Colemak). Possibly some of these still need to be set to use the other thumb than what they currently use,


    Easy:
    Rank    Layout                    +Effort   Overall Score
    #1    Nirvana ANSI                +0%          80.87
    #2    hieamtsrn.en.ansi           +12%         90.81
    #3    mtgap.en.ansi               +16%         94.09
    #4    balance-twelve.en.ansi      +17%         94.46
    #5    qgmlwy.en.ansi              +19%         96.25
    #6    colman.en.ansi              +20%         97.03
    #7    vukeys.en.ansi              +21%         97.49
    #8    colemak-mod-DH-full.en.ansi +25%        101.13
    #9    dvorak.en.ansi              +26%        101.57
    #10   workman.en.ansi             +28%        103.15
    #11   norman.en.ansi              +36%        110.32
    #12   qwerty.en.ansi              +51%        121.9
    
    Average:
    Rank  Layout                      +Effort   Overall Score
    #1    Nirvana ANSI                +0%          78.33
    #2    hieamtsrn.en.ansi           +12%         88.11
    #3    balance-twelve.en.ansi      +16%         90.68
    #4    mtgap.en.ansi               +16%         91.02
    #5    qgmlwy.en.ansi              +17%         91.87
    #6    vukeys.en.ansi              +18%         92.55
    #7    colman.en.ansi              +18%         92.57
    #8    colemak-mod-DH-full.en.ansi +23%         96.03
    #9    dvorak.en.ansi              +25%         97.83
    #10   workman.en.ansi             +26%         99.04
    #11   norman.en.ansi              +34%        105.22
    #12   qwerty.en.ansi              +51%        118.02
    
    Complex:
    Rank  Layout                      +Effort    Overall Score
    #1    Nirvana ANSI                +0%          71.9
    #2    hieamtsrn.en.ansi           +13%         81.35
    #3    mtgap.en.ansi               +15%         82.33
    #4    colman.en.ansi              +16%         83.12
    #5    qgmlwy.en.ansi              +16%         83.32
    #6    vukeys.en.ansi              +17%         84.44
    #7    balance-twelve.en.ansi      +18%         84.9
    #8    dvorak.en.ansi              +21%         87
    #9    colemak-mod-DH-full.en.ansi +21%         87.09
    #10   workman.en.ansi             +27%         91.29
    #11   norman.en.ansi              +36%         97.83
    #12   qwerty.en.ansi              +57%        112.65

    Will see which of those have ergo versions tomorrow.

    Cheers, Ian

    Offline
    • 0
    • Reputation: 7
    • Registered: 18-Nov-2017
    • Posts: 67

    Ergo boards.

    Notes:
    1. A mix of Ergodox and matrix. Those that say ergolinear have been converted to matrix, I should have fixed the names at the same time.

    2. Nirvana is slightly different between ANSI/Ergo because of ANSI's shift and Enter.

    3. Hands down is technically illegal, it has some minor chars on ShiftAltGr, but Shift and AltGr on same thumb.

    4. YOP_UIAN has some letters on bottom row of Ergodox, which works in KLA but will be awkward in real life.

    5. I includud 30k of random text as a negative cross-check.


    Easy
    Rank Layout                                +Effort  Overall Score
    #1   Nirvana Programmer.en.matrix          +0%       66.45
    #2   Hands Down Ref ortho ts.en.ergolinear +7%       71.41
    #3   YOP_UIAN Kinesis 1                    +7%       71.42
    #4   BEAKL 15 Matrix                       +11%      73.94
    #5   colemak-thumbshift.en.ergodox         +13%      75.16
    #6   mtgap-thumbshift.en.ergodox           +14%      76.06
    #7   qgmlwy.en.ergolinear                  +18%      78.68
    #8   vukeys.en.ergolinear                  +19%      79.13
    #9   dvorak.en.ergolinear                  +23%      81.86
    #10  maltron-us-90.en.ergodox              +38%      91.52
    #11  norman.en.ergodox                     +61%     106.87
    #12  qwerty-thumbshift.en.ergodox          +68%     111.77
       
       
    Average   
    Rank Layout                                +Effort  Overall Score
    #1   Nirvana Programmer.en.matrix          +0%       64.79
    #2   YOP_UIAN Kinesis 1                    +7%       69.47
    #3   Hands Down Ref ortho ts.en.ergolinear +7%       69.59
    #4   BEAKL 15 Matrix                       +11%      72.12
    #5   colemak-thumbshift.en.ergodox         +13%      73.2
    #6   mtgap-thumbshift.en.ergodox           +14%      73.92
    #7   qgmlwy.en.ergolinear                  +17%      75.91
    #8   vukeys.en.ergolinear                  +18%      76.2
    #9   dvorak.en.ergolinear                  +23%      79.82
    #10  maltron-us-90.en.ergodox              +35%      87.38
    #11  norman.en.ergodox                     +57%     101.83
    #12  qwerty-thumbshift.en.ergodox          +68%     108.67
       
       
    Complex   
    Rank Layout                                +Effort  Overall Score
    #1   Nirvana Programmer.en.matrix          +0%       62.45
    #2   YOP_UIAN Kinesis 1                    +7%       66.79
    #3   Hands Down Ref ortho ts.en.ergolinear +9%       67.85
    #4   colemak-thumbshift.en.ergodox         +10%      68.78
    #5   BEAKL 15 Matrix                       +11%      69.15
    #6   mtgap-thumbshift.en.ergodox           +13%      70.59
    #7   qgmlwy.en.ergolinear                  +16%      72.59
    #8   vukeys.en.ergolinear                  +18%      73.68
    #9   dvorak.en.ergolinear                  +23%      76.77
    #10  maltron-us-90.en.ergodox              +31%      81.62
    #11  norman.en.ergodox                     +52%      95.03
    #12  qwerty-thumbshift.en.ergodox          +68%     105.1
    
    Random   
    Rank Layout                                +Effort Overall Score
    #1   YOP_UIAN Kinesis 1                    +0%     200.43
    #2   BEAKL 15 Matrix                       +4%     208.38
    #3   qwerty-thumbshift.en.ergodox          +15%    230.86
    #4   dvorak.en.ergolinear                  +16%    231.56
    #5   qgmlwy.en.ergolinear                  +19%    238.52
    #6   vukeys.en.ergolinear                  +19%    239
    #7   mtgap-thumbshift.en.ergodox           +29%    258.94
    #8   colemak-thumbshift.en.ergodox         +32%    265.36
    #9   Nirvana Programmer.en.matrix          +35%    270.23
    #10  Hands Down Ref ortho ts.en.ergolinear +42%    284.95
    #11  norman.en.ergodox                     +45%    290.06
    #12  maltron-us-90.en.ergodox              +50%    301

    Cheers, Ian

    Offline
    • 0
    • Reputation: 0
    • Registered: 18-Apr-2021
    • Posts: 2
    iandoug said:

    Ergo boards.

    Notes:
    1. A mix of Ergodox and matrix. Those that say ergolinear have been converted to matrix, I should have fixed the names at the same time.

    2. Nirvana is slightly different between ANSI/Ergo because of ANSI's shift and Enter.

    3. Hands down is technically illegal, it has some minor chars on ShiftAltGr, but Shift and AltGr on same thumb.

    4. YOP_UIAN has some letters on bottom row of Ergodox, which works in KLA but will be awkward in real life.

    5. I includud 30k of random text as a negative cross-check.


    Cheers, Ian

    I can't speak to the Ergodox (I don't have one), but I don't have a problem with the bottom row on my Kinesis Advantage2. I've used YOP_UIAN for about a year now (I'm typing on it right now).  :)

    Offline
    • 0
    • Reputation: 7
    • Registered: 18-Nov-2017
    • Posts: 67
    Snarfangel said:

    I can't speak to the Ergodox (I don't have one), but I don't have a problem with the bottom row on my Kinesis Advantage2. I've used YOP_UIAN for about a year now (I'm typing on it right now).  :)

    So noted, thanks. When you type on bottom row, do your other fingers leave Home position?

    Thanks, Ian

    Offline
    • 0
    • Reputation: 0
    • Registered: 18-Apr-2021
    • Posts: 2
    iandoug said:
    Snarfangel said:

    I can't speak to the Ergodox (I don't have one), but I don't have a problem with the bottom row on my Kinesis Advantage2. I've used YOP_UIAN for about a year now (I'm typing on it right now).  :)

    So noted, thanks. When you type on bottom row, do your other fingers leave Home position?

    Thanks, Ian

    I didn't notice until you asked, but my fingers typically hover a tiny bit over the keys. When I hit a key on the bottom row with my index, middle, or ring finger, the nearest finger moves a half-key down. For the middle finger, the ring and index fingers both shift half key.

    Reaching the top row shifts the other fingers more, though. The middle finger brings the index a full key or so when reaching the top row.

    Offline
    • 0