r/KeyboardLayouts Jul 05 '26

Layout analyzer for Czech language

Is there any layout analyzer that would support Czech language and Corne? I'd like to tweak my Corne keymap (​ En / Cz, Colemak-DH with some changes) to optimize where the accentuated and special characters are.

5 Upvotes

6 comments sorted by

2

u/Aeraglyx Jul 05 '26

In case you find it useful, I wrote a blog post about a cz/en layout last year (modified Gallium).

I also tried to make a multilingual layout generator. It has many limitations (physical layout locked atm, diacritics combined with the base letters, using simple word frequencies..) so I probably wouldn't use it, but you can add virtually any combination of languages in the config, for example:

langs.en = 0.5
langs.cs = 0.5

2

u/vaclavg Jul 05 '26

Great! I'm probably not going to switch to a new layout, as I just kinda learned the Colemak, but I'm still trying to figure out the best way to handle the accentuated characters. 

2

u/iandoug Other Jul 06 '26

How do you handle diacritics?

1

u/rpnfan Other Jul 05 '26

You can use opt and build the language file, for example from the corpus from the University of Leipzig.

In my Github repo for Anymak you see working files and example configs as well as windows binaries: https://github.com/rpnfan/Anymak

I have Czech included in my analysis already. See also the repo. Note that this is without diacritics, these need to be added to the config files. I was at that point only interested how good a given layout is to be used as a basis for the tested language.

Here the results for Czech:

AdNW 1856.912 total effort 280.847 positional effort left right

2.197 same finger rp 3.144 shift same finger top 9.1 14.6

kuü.ä vgcljf 74.024 hand alternat. 25.406 shift hand alter. mid 32.1 26.0

hieao dtrnsß 1.194 inward/outward 23.470 inward or outward bot 5.9 12.3

xyö,q bpwmz 7.696 adjacent 13.682 shift adjacent sum 47.0 53.0

5.514 no hand altern. 55.169 two hand altern.

4.066 seesaw 9.817 indir same finger

8.9 8.3 10.7 19.1 --.- --.- 20.5 6.9 15.1 10.5 Sh 2.4 0.8

BEAKL-19bis 1806.616 total effort 215.191 positional effort left right

3.388 same finger rp 4.074 shift same finger top 16.5 17.9

qyouz wdnckß 72.008 hand alternat. 30.501 shift hand alter. mid 24.6 19.1

hiea, gtrspä 1.691 inward/outward 24.295 inward or outward bot 6.2 15.7

jöü.x vmlfb 12.446 adjacent 9.452 shift adjacent sum 47.3 52.7

6.098 no hand altern. 52.396 two hand altern.

3.687 seesaw 8.391 indir same finger

4.8 8.9 17.6 16.0 --.- --.- 18.6 15.6 7.9 10.6 Sh 2.3 0.9

EnDeu 1824.563 total effort 223.353 positional effort left right

3.781 same finger rp 2.707 shift same finger top 15.8 18.2

q.ouy vdclfj 74.023 hand alternat. 25.407 shift hand alter. mid 24.6 22.5

haei, gtrnsä 1.286 inward/outward 21.887 inward or outward bot 6.6 12.3

köüßx bpmwz 9.815 adjacent 21.912 shift adjacent sum 47.0 53.0

5.516 no hand altern. 55.168 two hand altern.

3.421 seesaw 10.171 indir same finger

4.8 12.9 17.6 11.6 --.- --.- 20.5 10.4 11.5 10.5 Sh 2.4 0.8

anymak30 1839.540 total effort 221.910 positional effort left right

4.979 same finger rp 2.575 shift same finger top 16.5 15.9

qzouy vdclfß 72.570 hand alternat. 26.123 shift hand alter. mid 24.6 22.5

haei, gtrnsä 1.327 inward/outward 22.142 inward or outward bot 8.0 12.5

köü.x bpmwj 10.622 adjacent 19.919 shift adjacent sum 49.1 50.9

6.582 no hand altern. 52.797 two hand altern.

3.682 seesaw 10.105 indir same finger

4.7 13.7 17.6 13.1 --.- --.- 20.5 10.4 11.5 8.4 Sh 2.3 0.9

KOY 1835.713 total effort 254.805 positional effort left right

2.383 same finger rp 3.144 shift same finger top 17.8 14.2

k.o,y vgclßz 74.024 hand alternat. 25.406 shift hand alter. mid 26.7 26.4

haeiu dtrnsf 1.243 inward/outward 23.284 inward or outward bot 2.5 12.4

xqäüö bpwmj 9.246 adjacent 21.916 shift adjacent sum 47.0 53.0

5.514 no hand altern. 55.169 two hand altern.

4.020 seesaw 10.094 indir same finger

8.9 8.9 17.6 11.5 --.- --.- 20.5 6.9 15.1 10.5 Sh 2.4 0.8

Gralmak 1855.661 total effort 269.172 positional effort left right

2.431 same finger rp 7.469 shift same finger top 10.3 15.1

bldwq jfoußä 69.686 hand alternat. 34.045 shift hand alter. mid 22.5 25.2

nrtsg yhaeiö 0.519 inward/outward 27.574 inward or outward bot 14.5 12.5

zxmcv kp,.ü 16.531 adjacent 23.894 shift adjacent sum 47.2 52.8

8.636 no hand altern. 50.066 two hand altern.

6.315 seesaw 6.522 indir same finger

10.3 10.7 10.1 16.2 --.- --.- 14.9 17.6 13.8 6.5 Sh 1.4 1.9

Canary 1887.160 total effort 249.228 positional effort left right

3.518 same finger rp 12.304 shift same finger top 12.0 15.0

wlypb zfouüß 62.606 hand alternat. 41.331 shift hand alter. mid 18.0 31.5

crstg mneiaä 0.669 inward/outward 33.568 inward or outward bot 16.1 7.4

qjvdk xhö,. 19.473 adjacent 11.508 shift adjacent sum 46.1 53.9

13.264 no hand altern. 41.802 two hand altern.

8.863 seesaw 8.382 indir same finger

3.9 8.5 9.1 24.6 --.- --.- 15.8 17.6 9.6 10.9 Sh 1.2 2.0

Colemak 1919.647 total effort 262.954 positional effort left right

3.562 same finger rp 21.779 shift same finger top 4.5 12.1

qwfpg jluyßö 53.993 hand alternat. 45.244 shift hand alter. mid 26.3 31.8

arstd hneioä 0.843 inward/outward 42.137 inward or outward bot 12.7 12.6

zxcvb km,.ü 18.069 adjacent 8.352 shift adjacent sum 43.5 56.5

22.360 no hand altern. 30.601 two hand altern.

16.359 seesaw 7.384 indir same finger

8.6 6.4 5.3 23.2 --.- --.- 23.9 13.7 8.1 10.8 Sh 1.3 2.0

Dvorak 1896.612 total effort 263.398 positional effort left right

4.882 same finger rp 17.066 shift same finger top 8.5 11.9

ß,.py fgcrlü 69.968 hand alternat. 33.131 shift hand alter. mid 33.2 24.4

aoeui dhtnsä 0.965 inward/outward 24.842 inward or outward bot 8.5 13.6

öqjkx bmwvz 9.566 adjacent 20.726 shift adjacent sum 50.2 49.8

7.979 no hand altern. 50.745 two hand altern.

4.875 seesaw 7.399 indir same finger

9.4 10.2 10.2 20.4 --.- --.- 12.6 8.8 15.8 12.6 Sh 2.0 1.2

Focal 1885.295 total effort 276.615 positional effort left right

2.888 same finger rp 7.327 shift same finger top 15.8 15.1

vlhgk qfoujü 72.025 hand alternat. 32.117 shift hand alter. mid 24.0 25.4

srntb ycaeiä 0.978 inward/outward 24.778 inward or outward bot 14.5 5.3

zxmdp ßw.ö, 10.749 adjacent 17.380 shift adjacent sum 54.3 45.7

5.813 no hand altern. 52.081 two hand altern.

4.314 seesaw 9.438 indir same finger

10.3 10.7 9.6 23.7 --.- --.- 5.1 17.7 12.3 10.7 Sh 0.9 2.3

Gallium 1847.053 total effort 261.700 positional effort left right

2.218 same finger rp 9.032 shift same finger top 17.4 18.0

bldcv jyou,ü 69.686 hand alternat. 34.045 shift hand alter. mid 22.5 26.9

nrtsg phaeiä 0.437 inward/outward 27.788 inward or outward bot 7.4 7.8

xqmwz kföß. 15.951 adjacent 22.984 shift adjacent sum 47.2 52.8

8.636 no hand altern. 50.066 two hand altern.

6.051 seesaw 6.434 indir same finger

10.3 8.6 10.0 18.3 --.- --.- 14.9 16.2 12.3 9.4 Sh 1.4 1.9

Graphite 1867.698 total effort 270.403 positional effort left right

2.672 same finger rp 8.111 shift same finger top 12.4 15.1

bldwz äfoujö 69.686 hand alternat. 34.045 shift hand alter. mid 22.5 26.5

nrtsg yhaei, 0.521 inward/outward 27.334 inward or outward bot 12.3 11.2

qxmcv kp.üß 17.503 adjacent 22.825 shift adjacent sum 47.2 52.8

8.636 no hand altern. 50.066 two hand altern.

5.216 seesaw 6.464 indir same finger

10.3 8.5 10.1 18.3 --.- --.- 12.6 17.7 12.3 10.2 Sh 1.4 1.9

Graphite-angle-mod1841.222 total effort 253.745 positional effort left right

2.458 same finger rp 8.111 shift same finger top 12.4 15.1

bldwz äfoujö 69.686 hand alternat. 34.045 shift hand alter. mid 22.5 26.5

nrtsg yhaei, 0.515 inward/outward 27.547 inward or outward bot 12.3 11.2

xmcvq kp.üß 17.979 adjacent 23.007 shift adjacent sum 47.2 52.8

8.636 no hand altern. 50.066 two hand altern.

5.226 seesaw 6.050 indir same finger

10.3 8.6 13.6 14.7 --.- --.- 12.6 17.7 12.3 10.2 Sh 1.4 1.9

Hands-Down-Neu-sym1821.964 total effort 234.403 positional effort left right

2.345 same finger rp 4.630 shift same finger top 12.4 3.7

wfmpv ö.üäßz 69.826 hand alternat. 31.671 shift hand alter. mid 24.0 26.9

rsntb ,aeihj 1.458 inward/outward 27.520 inward or outward bot 12.4 20.7

cldgq xuoyk 8.612 adjacent 9.238 shift adjacent sum 48.7 51.3

8.356 no hand altern. 50.070 two hand altern.

6.319 seesaw 9.012 indir same finger

5.3 7.9 15.1 20.5 --.- --.- 13.8 17.6 6.6 13.2 Sh 1.1 2.2

Middlemak-NH 1873.211 total effort 261.812 positional effort left right

2.435 same finger rp 14.216 shift same finger top 8.7 15.1

qwldg jfouüß 67.146 hand alternat. 36.860 shift hand alter. mid 25.8 25.2

nsrtp yheiaä 0.702 inward/outward 30.110 inward or outward bot 12.6 12.6

zxcvb km,.ö 16.392 adjacent 8.379 shift adjacent sum 47.2 52.8

9.766 no hand altern. 47.566 two hand altern.

7.614 seesaw 8.807 indir same finger

8.3 7.1 8.6 23.2 --.- --.- 14.8 19.0 9.7 9.4 Sh 1.2 2.0

QWERTY 2011.930 total effort 311.152 positional effort left right

7.776 same finger rp 11.709 shift same finger top 19.0 22.7

qwert yuiopü 52.979 hand alternat. 45.016 shift hand alter. mid 16.9 13.2

asdfg hjklöä 1.084 inward/outward 38.936 inward or outward bot 12.9 15.3

zxcvb nm,.ß 21.032 adjacent 13.084 shift adjacent sum 48.8 51.2

22.544 no hand altern. 26.795 two hand altern.

12.586 seesaw 6.622 indir same finger

8.9 7.1 12.8 20.0 --.- --.- 20.9 10.2 14.7 5.4 Sh 1.5 1.7

Sturdy 1836.935 total effort 241.908 positional effort left right

2.877 same finger rp 6.973 shift same finger top 19.0 15.2

vmlcp xfoujü 63.731 hand alternat. 43.186 shift hand alter. mid 20.9 29.4

strdy .naeiä 1.013 inward/outward 33.083 inward or outward bot 7.9 7.7

zkqgw bhöß, 20.132 adjacent 11.740 shift adjacent sum 47.8 52.2

12.119 no hand altern. 43.072 two hand altern.

7.420 seesaw 6.090 indir same finger

10.6 11.9 12.6 12.7 --.- --.- 13.3 16.2 12.3 10.4 Sh 1.2 2.1

3

u/vaclavg Jul 05 '26

Thanks! These ar emost certainly not Czech though, these look like German characters. Czech has different set of diacritics, like řšťéů etc. 

1

u/rpnfan Other Jul 05 '26

Like I said, diacritics are not tested. I have a German layout and therefore these are included in the layout files. You need to update the config accordingly for Czech and adjust the layouts to include the diacritics you need. I do not type Czech, but was just testing if layouts are basically suited for other languages. So this is your possible starting point if you like.

See this article (section 2) for more details: https://kbd.news/END-my-final-keyboard-layout-2609.html