A keyboard layout analyzer based on Ergo-L analyzer, in Rust.
Unlike most analyzers, it supports dead keys, which are used in various languages to make accents (e.g. in French: ^e → ê), and are heavily relied upon for alternative layouts such as Ergo-L. Dead keys can be arbitrarily nested.
It takes as input a layout file generated by kalamine and a corpus generated by kalamine-corpus.
./klayan azerty.json en+fr.json
finger usage sfb sku symbol stats bigram stats trigram stats
left pinky 9.6 0.22 0.00 unsupported 0.37 sku 2.03 sks 1.48
left ring 7.8 0.10 0.35 left hand 57.1 sfb 5.24 sfs 5.57
left middle 19.7 2.13 0.26 right hand 42.8 lsb 2.70 redirects 5.21
left index 20.1 1.27 0.44 thumbs 0.0 scissors 4.76 bad redirects 0.59
right index 18.8 0.90 0.13 in rolls 14.5 all redirects 5.80
right middle 7.8 0.09 0.01 out rolls 13.9
right ring 11.0 0.35 0.65 all rolls 28.4
right pinky 5.1 0.18 0.20
sku sfb lsb scissor in roll out rol sks sfs redirect bad redi unsprtd
ll 0.53 de 0.94 te 0.89 as 0.60 er 1.33 re 1.44 ere 0.16 for 0.23 ver 0.19 ses 0.07 “ 0.152
ss 0.34 ce 0.56 et 0.60 sa 0.52 on 1.22 es 1.19 eme 0.11 ver 0.19 ave 0.19 ead 0.04 ” 0.150
tt 0.21 ed 0.46 be 0.33 rs 0.28 ou 1.21 te 0.89 eve 0.09 ter 0.17 ter 0.17 eas 0.04 ñ 0.023
ee 0.20 tr 0.42 ge 0.22 ad 0.25 in 1.15 ve 0.62 ses 0.07 che 0.16 est 0.17 ese 0.04 ‘ 0.013
rr 0.13 un 0.36 ét 0.10 ca 0.24 se 0.84 hi 0.55 ava 0.06 nch 0.16 ere 0.16 cas 0.02 — 0.012
nn 0.13 rt 0.26 té 0.08 ul 0.20 at 0.66 ho 0.53 nan 0.04 end 0.12 ion 0.15 mil 0.02 œ 0.011
oo 0.12 lo 0.21 ^o 0.07 ac 0.20 ar 0.63 il 0.53 ete 0.04 hou 0.12 hou 0.12 omi 0.02 « 0.004
mm 0.11 wa 0.18 éc 0.06 pl 0.20 et 0.60 sa 0.52 ese 0.04 you 0.12 ers 0.12 exc 0.02 » 0.002
For acronyms and definitions, see Keyboard layout doc (EN) or Ergo-L glossary (FR).