Cyrillic Colemak keyboard layout variant supporting Serbian, Russian, Bulgarian, and Macedonian language
I wanted to have a Cyrillic equivalent of Colemak that I can use, with the following limitations:
- All special keys should stay where they are in the standard Colemak layout. Only Latin keys are remapped. I would rather not remap
.
or;
to something, and then having to chase for it on the keyboard. - No dead keys. This is a personal preference, I just don’t like key compos for something that should be one letter.
I decided to use Microsoft Keyboard Layout Creator under Windows. Other implementations may come latter (contributors welcome).
Source file Cyrillic.klc is included for people that want to play with different layout versions. I don’t care for DH, Wide, Angle … but everyone is free to adapt for its needs.
For the majority of Cyrillic letters, it is easy. Just replace Latin equivalent with the Cyrillic one: a
-> а
, b
-> б
, v
-> в
, …
Serbian language has some additional letters, that are not covered by these simple Latin equivalents. Mainly, I tried to follow a phonetic principle and put those extra letters on the letters they are most similar to. I ended up with the following:
Ђ
- it comes after Cyrillicд
, has the same base, so I put it asAltGr + D
Ж
- ditto, but forз
, it went toAltGr + Z
Љ
-AltGr - L
. In addition to that, it went to replaceQ
, since that’s where it located in standard Serbian keyboard.Њ
-AltGr + N
andW
, for the same reasons as above.Ч
-AltGr + C
Ћ
-AltGr + T
- not the happiest choice, butC
war already takenЏ
- went directly toX
positionШ
-AltGr + S
Ѕ
- OK, strictly speaking, this letter doesn’t exist in Serbian, but my local dialect has it, so I added it to the same place it was already there in some keyboard layouts, replacingY
After adding Serbian support, I realised that I could just extend the layout, so I can also type in other Cyrillic-based languages, so decided to just do it.
Russian also has some extra letters. Unlike Serbian, it has some letters that are pronounced as two sounds, starting with the sound j
. For example, Ю
pronounced as ju
or Я
as ja
. I followed the principle to map them as an AltGr + the base sound
.
Ю, Я, Ё
- it becameAltGr
+u, a, o
respectively. Easy to rememberЙ
went toAlgGr + J
using the same phonetic principle. If I were a native Russian speaker, I would probably map it directly toJ
, but since Serbian and other languages needJ
, Russians will have to deal with it.Э
- it went otAltGr + E
, for the same phonetical reasonsЫ
- went toAltGr + I
, since it’s the closest sound.Щ
- this one was hard, sinceШ
already took it place, and I didn’t want to introduce dead keys. As a workaround, I decided to put it toAltGr + R
, which is just one key left ofШ
in Colemak.Ь
андЪ
- this was a hard decision. There was not much keys left, and I didn’t want to remap symbols. First I wanted to map them to Latinb
andB
, since they are similar visually, but then I realised I actually need for different states, since both soft and hard marking have a small and a capital letter version. In the end, i decided to map them toAltGr + Q
andAltGr + W
, since they are free, next to each other. May not be the best choice, but couldn’t find a better place withoud breaking the core principle of no symbol override and no dead keys.
After finishing with Russian, I realised Bulgarian is also supported without having to do anything extra, since there are no extra letters in Bulgarian that are not already covered.
That was easy too. Since I already added Ѕ
in Serbian, there were only two letters left to support, which map pretty well to the phonetic principle.
Ѓ
mapped toAltGr + G
Ќ
mapped toAltGr + K
I’m open to adding mappings for other Cyrillic languages, given that the same principles are followed, and that it doesn’t require changes of the mappings to the existing languages.
I would also be happy to receive a pull request to get the same difinition under Linux.
Here’s how the layout actually looks like. For brevity only capital letters, small letters are located at the same position.