Skip to content

Latest commit

 

History

History
73 lines (45 loc) · 4.45 KB

README.org

File metadata and controls

73 lines (45 loc) · 4.45 KB

colemak-cyrillic

Cyrillic Colemak keyboard layout variant supporting Serbian, Russian, Bulgarian, and Macedonian language

Motivation

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.

Implementation

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.

Base Cyrillic

For the majority of Cyrillic letters, it is easy. Just replace Latin equivalent with the Cyrillic one: a -> а, b -> б, v -> в, …

Serbian

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 as AltGr + D
  • Ж - ditto, but for з, it went to AltGr + Z
  • Љ - AltGr - L. In addition to that, it went to replace Q, since that’s where it located in standard Serbian keyboard.
  • Њ - AltGr + N and W, for the same reasons as above.
  • Ч - AltGr + C
  • Ћ - AltGr + T - not the happiest choice, but C war already taken
  • Џ - went directly to X 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, replacing Y

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

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 became AltGr + u, a, o respectively. Easy to remember
  • Й went to AlgGr + J using the same phonetic principle. If I were a native Russian speaker, I would probably map it directly to J, but since Serbian and other languages need J, Russians will have to deal with it.
  • Э - it went ot AltGr + E, for the same phonetical reasons
  • Ы - went to AltGr + 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 to AltGr + 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 Latin b and B, 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 to AltGr + Q and AltGr + 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.

Bulgarian

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.

Macedonian

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 to AltGr + G
  • Ќ mapped to AltGr + K

Others Languages

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.

Other platforms

I would also be happy to receive a pull request to get the same difinition under Linux.

Screenshots

Here’s how the layout actually looks like. For brevity only capital letters, small letters are located at the same position.

CyrColemShft.jpg CyrColemShftAltGr.jpg