Coda is my solution to bring 'magic' to standard hardware keyboards. It places a focus on 'repeat magic' as that's where the majority of total magic usage comes from. You can use it anywhere you can install your own software. It was designed from the ground up with magic in mind using tools like Oxeylyzer with a repeat corpus, and Mana for analysis.
view coda
coda | monkeyracer
v d l f w x j o u q
s t r c y b n a e i .
z k m p g * h ' ; ,
Magic rules: aa cc dd ee ff gg hh ii jj kk ll mm oo pp qq rr ss tt ue vv ww xx yp '' ..
Heatmap score: 73.979%
Handbalance: 43.828% / 56.172%
Alt: 37.576%
Rolls (Total): 54.511%
Inroll: 22.727%
Outroll: 29.746%
In3roll: 1.04%
Out3roll: 0.998%
Redirect (+sfs): 6.186%
Redirect (Weak) (+sfs): 0.51%
┌────────────────┬──────────┬────────────┬─────────────┐
│ │ bigram │ skipgram │ skipgram2 │
├────────────────┼──────────┼────────────┼─────────────┤
│ same finger │ 0.61% │ 6.363% │ 8.169% │
│ repeat │ 0.112% │ 3.072% │ -- │
│ stretch │ 2.829% │ 4.036% │ 3.766% │
│ half scissor │ 1.824% │ 3.961% │ 2.517% │
│ full scissor │ 0.257% │ 0.903% │ 1.732% │
└────────────────┴──────────┴────────────┴─────────────┘
For reference, on the same corpus, Qwerty and every other layout without magic has a repeat bigram rate of 2.828%.
(stats via Mana, notably redirect stats in Mana include SFS rediects)
A 'magic' key is a key that produces a different output in different situations (* represents the magic key). In most cases the most useful output will be a repeat of the previous key, so "l*" outputs "ll" (fixing so-called 'same finger repeats'). Some keys don't ever repeat, or do so extremely rarely. In those cases we can look for other uses such as "u*" -> "ue", which fixes a 'same finger bigram' found in many modern layouts. You can also override a key with frequent repeats if you feel there is a more useful sequence. The default rules are intended to be uncontroversial.
We can go beyond single letter magic and have "y*" -> "you", or "b*" -> "because". Similarly we can broaden the context our magic rules consider and take into account multiple previous key presses. Within Kanata we do this via 'key-history' to set rules such that "u*" -> "ue", but "ou*" -> "ou'".
While this enables a great degree of complexity, even simple rules can substantially improve the typing experience.
I didn't set out to maximise a particular stat, just to make something solid for myself to use with the added challenge of squeezing a new key onto an already tightly packed board. Where I ended up is similar to the pre-existing layout Sturdy, and so shares many attributes with it.
It favours rolls to alts, features low pinky usage, very low SFBs, low weak redirects, and extremely low half scissors due to the right index setup. It's also one of the most vim friendly alt layouts I've seen with J taking an unusually nice spot and no important keys in bad spots. Even analyzed sans magic, the stats place it right alongside other modern layouts.
As far as weaknesses go, the 'lrm' middle finger column is quite high movement. It's on a strong finger which mitigates the issue but it's still noteworthy. Repeat magic also improves this column compared to how it would perform on a normal layout, with 'l' being the most frequently repeated key, 'r' being the 8th most repeated and 'm' seeing some repeats.
There is also the standard Sturdy complaint of the 'k' placement and mainly the 'sk' bigram. Personally I think this point is overblown as 'sk' appears with a frequency of 0.15% in popular competitive small dictionary wordlists like e200 on Monkeytype, however in normal corpora it's between 0.04% and 0.06%.
The biggest SFB is '*n', which for this layout would occur on 'oon' 'een', etc. This is a very nice alt if you hit '*' with index and 'n' with middle. Doing this alt brings the total SFBs below 0.5%.
'lm' is far less common, but it's a 2u sfb which is bad. This can be alted with 'l' on the middle finger and 'm' on index.
If you're aiming to type at speeds in the range of 140+ wpm you might also consider alting 'm_l', and 'l_m' skipgrams, such as in the word 'small'. You should ether hit 'm' with index or 'l' with ring, in cases like 'mpl'.
This is ultimately a personal decision, but I'll present my reasons for concluding that they are.
A repeat is a same finger bigram, there's just no movement so we could call it a 0u SFB. It's counter intuitive but some people type 0u SFBs slower than 1u sfbs, this could be influenced by the type of keyboard being used. To get a first hand sense of how fast you type 0u SFBs I recommend spending some time on zippywords. See how fast you type repeats and how comfortable you find hitting them as fast as possible. Some of the fastest Qwerty typists are also adding a repeat to their layout on Capslock or a punctuation key.
I made this layout because I wished it existed and it didn't. It's my main layout and I don't see myself switching unless someone figures out a significantly better repeat/magic setup for rowstag. I cannot see myself returning to a muggle layout by choice. Current Coda speed:
Some other magic layouts that are compatible with normal boards are Graphyre and Vylet. Both of which place much lower emphasis on repeats.
I'd like to say thank you to Oxey (see:Oxeylyzer) and Zak (see:Mana) for their tools that did most of the heavy lifting, Nova (Kanata config repo coming soon) for trying an earlier version and giving feedback, and the AKL discord in general for being a helpful friendly place.