Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/markokocic/colemak-cyrillic
Cyrillic Colemak variant supporting Serbian, Russian, Bulgarian & Macedonian
https://github.com/markokocic/colemak-cyrillic
Last synced: about 2 months ago
JSON representation
Cyrillic Colemak variant supporting Serbian, Russian, Bulgarian & Macedonian
- Host: GitHub
- URL: https://github.com/markokocic/colemak-cyrillic
- Owner: markokocic
- License: mit
- Created: 2024-04-03T13:34:20.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2024-04-12T17:05:27.000Z (9 months ago)
- Last Synced: 2024-10-16T00:35:53.293Z (3 months ago)
- Size: 154 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.org
- License: LICENSE
Awesome Lists containing this project
README
* 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]]