• You are not logged in.
  • Index
  • General
  • Ukromak & Rulemak (Shared Cyrillic layout for QMK keyboards)

    Ukromak & Rulemak (Shared Cyrillic layout for QMK keyboards)

    • Started by martian
    • 17 Replies:
    • Reputation: 1
    • Registered: 17-Aug-2020
    • Posts: 27

    You may know me from this topic: https://forum.colemak.com/topic/2611-ru … r-natives/

    After almost 4 long years, I will finally be getting a proper ergo keyboard (Skeletyl), so I plan to switch back to Colemak and continue working on my own version of Ukromak & Rulemak. Some considerations:

    1. Since I need to use 4 languages (English, Portuguese, Ukrainian, Russian), I decided it makes much more sense to condense them to just 2 layouts, "Latin" and "Cyrillic". This is what I do right now on my macbook qwerty, and I much prefer it. MacOS actually already has it implemented, I just use ABC international layout which has stuff like ˜ on alt-layer, and Ukrainian which has ы (alt + i), э (alt + є) etc. etc. Makes switching much easier.
    2. I had a lot of thoughts on what I should implement on hardware and what on software side. E.g. since I'll use a custom keyboard, I can just flash the hardware, so that it will be colemak on the hardware, not software level (as opposed to an OS layout which gets qwerty signals and then remaps it to colemak, "S" means "R" etc.; instead it just gets "R").

    I thought: maybe I could do something similar for my Cyrillic layout? Make an additional layer on hardware, that would be gibberish in latin, but would be a Mapping from ЙЦУКЕН to Rulemak. This would have benefit of being able to connect my keyboard to someone else's computer with default qwerty & jcuken and be able to use colemak & ukromak/rulemak, and could work independent of OS instead of creating a layout for each new OS I'll use. But 2 considerations:

    a) I'd have to send hotkey to change language and change my layer at the same time. Could be done but some headache. I'm more familiar with creating layers in Ukelele than QMK.
    b) Could work if I wanted just Ukromak or just Rulemak, but since I want a shared Cyrillic layout, how can I know that, say, if I decide to use Windows or Linux, it will have the same nifty Ukrainian + Russian letters on alt layer layout that macOS does? I don't think they have it so I'd have to create new layouts anyway if I had to use other OS.

    So in the end: additional headache with no real benefit.
    Hence why I decided to go the custom layout path. Creating 3 custom layouts (mac, windows, linux — I plan to use all of them) seems easier tbh, it's not that hard. But another consideration:
    Since I will have Colemak (Colemak-DH to be precise) on the hardware level, I'll need to another make some gibberish mapping... E.g. I want Cyrillic Р where the R is in Colemak. But since layout interface is supposed to take qwerty signals, I'll put this Р where the R is in QWERTY... So in the end it will be something like a phonetic QWERTY layout for Cyrillic (they exist, it's called ЯВЕРТЫ I think) that will become a phonetic Colemak layout for Cyrillic because the keyboard is Colemak on the hardware level. Which is... still much more complicated than I would prefer. But I don't see other workarounds and at least I see how it could be done.

    Later in this topic I will document what I will use as my layout (I'll base it on already existing Rulemak, change for Ukrainian non-phonetically but how it's done in Ukrainian JCUKEN, we've discussed it before in the topic at the top). But I'll make 2 "versions": one that I will use "physically" (so an actual Ukromak that will be useful to other people), and another that I will program which will be more similar to a phonetic QWERTY. I'll then share my files when I create it for each OS (only macOS is planned for now), but they will only be useful to other people that decide to go this weird path of Ukromak on a Colemak programmed hardware keyboard. Hope that clarifies any misunderstandings.

    Offline
    • 0
    • Reputation: 1
    • Registered: 17-Aug-2020
    • Posts: 27

    Btw, I will use miryoku as my layout. It's a special layout for small 36-key keyboards with thumb clusters. It uses Colemak-DH as a base, and has numbers, symbols, function keys, media keys, and some cool stuff on other layers, and also has home row mods, it's pretty cool.

    Offline
    • 0
    • Reputation: 1
    • Registered: 17-Aug-2020
    • Posts: 27

    An alternative could be to use miryoku in the qwerty variant and use colemak-dh on the software level, but:
    1. I like the idea of connecting my keyboard to any computer or OS and using colemak there right away too much. While I can live without doing the same with my Cyrillic layout, since this is something I use personally mostly, for communication, an idea of connecting my keyboard to someone else's computer to troubleshoot some stuff or code something, I like it too much. Also, I plan to not learn qwerty on this keyboard at all, so that I can differentiate in my head "qwerty on normal keyboards" and "colemak on ergo keyboards" so that muscle memory does not overlap, so yeah, no qwerty there.
    2. I'd still have to create custom layouts for myself, I cannot reuse an already made Rulemak because I want my own Cyrillic layout, also I'm not sure if it's made for all OSs.

    Offline
    • 0
    • Reputation: 1
    • Registered: 17-Aug-2020
    • Posts: 27

    Version of Colemak-DH used in miryoku:

    Q W F P B    J L U Y '
    A R S T G    M N E I O
    Z X C D V    K H , . /

    While ; [ ] \ ` are on the other layers due to the limited amount of keys.

    So the Ukromak would be:

    Я Є Ф П Б    Й Л У І Ю
    А Р С Т Г    М Н Е И О
    Ц Х З Д В    К Ч , . Ь

    While ? goes to shift + 7 (like in jcuken),Ж to \, Ш and Щ to [ ] correspondingly, Ї to `, Ґ to alt + Г, " to shift + 2 (like jcuken), ' to shift + 4. ы is alt + i, э is alt + є, ъ is alt + ь, and ё is alt + e. I hope I haven't missed anything. Putting a language with 33 letters in alphabet + 4 letters from another language, as opposed to 26 letters in English, and everything on a tight 36-key layout... some compromises have to be made lol, but I think I'm happy with it.
    _____
    Hmm, I actually dislike having Ш on [ since [ is in place of Q on a 2nd layer. This makes a very common bigram ША quite cumbersome. Maybe I could put шщ on alt layer, e.g. alt + C = Ш, alt + T = Щ. Doesn't make sense "phonetically" but will be quite comfortable.
    ________
    Could also swap К & Ч like I did 4 years ago since K is much more common, though it breaks phonetics a bit (I mean I already swapped Ц З but this is simply required). Could also swap Ю and Ж, not sure which one is more common. *checked* well ж is slightly more common, but need to also take into consideration vowel VS consonant. Yeah right pinky is mostly for vowels so Ю stays there.
    _________
    The fact that shift + , . is occupied by <>, which are absolutely useless in cyrillic, is worrying, but I'd rather keep it simple. shift + , . = ;: is nice but this is not how it's done in miryoku and I don't want to introduce any changes to miryoku, just trying to shape my cyrillic layout around it.

    Last edited by martian (01-Jun-2024 03:50:44)
    Offline
    • 0
    • Reputation: 1
    • Registered: 17-Aug-2020
    • Posts: 27

    To sum it up better, miryoku has:

    Q W F P B                  J L U Y '
    A R S T G                   M N E I O
    Z X C D V                   K H , . /
    ESC SPC TAB      ENT BCKSPC DEL

    (main layer, the last layer is thumbs and is not for scale)

    [ 7 8 9 ]
    ; 4 5 6 =
    ` 1 2 3 \
    . 0 -

    (num layer; now that I think about it, the duplication of dot on thumb layer is kinda weird)

    { & * ( }
    : $ % ^ +
    ~ ! @ # |
    ( ) _

    (sym layer — now dot is replaced by a duplicate of open bracket for comfort; still kinda weird)



    Here's what Ukromak will have:

    Я Є Ф П Б    Й Л У І Ю
    А Р С Т Г    М Н Е И О
    Ц Х З Д В    К Ч , . Ь

    (alpha layer; thumbs don't change)

    [ 7 8 9 ]
    ; 4 5 6 =
    ї 1 2 3 ж
    . 0 -

    (num layer)

    { ? * ( }
    : ' % ^ +
    Ї ! " # Ж
    ( ) _

    (sym layer)

    And now the alt layer that is independent from miryoku (on latin alt layer I'll probably have some international characters including Portuguese):

    Я Э* Ф П Б       Й Л У Ы* Ю
    А Р Ш* Щ* Ґ*    М Н Ё* И О
    Ц Х З   Д В       К Ч , . Ъ*

    (alpha + alt layer; where letters aren't replaced I could duplicate the ones from the main layer to prevent errors during fast typing)


    Yes, I'm mostly happy with it. Only one consideration is that it feels weird to have some letters on num/sym layers, some on alt layer. Maybe I should just bring everything to the alt layer since I'm already using it. So Ї could be alt + И, and Ж could be alt + Р (or П, Д — not sure what's more ergonomic, home ring or ring upward/downward movement; probably ring)

    ________

    K is 3 times more common than Ч (3.486% vs 1.45%) but it's not like Ч is not used at all (e.g. Ц is just 0.486%) so I'll probably keep it the way it is to make it phonetically similar. After all, K is one of those rare letters that look the same and sound the same in Latin & Cyrillic. Only other such letters are... M & some vowels?

    Last edited by martian (01-Jun-2024 11:45:47)
    Offline
    • 0
    • Reputation: 1
    • Registered: 17-Aug-2020
    • Posts: 27

    Ok so, revert changes to the num layer (keep it like miryoku) and sym layer like this (removed ї ж as mentioned above):

    { ? * ( }
    : ' % ^ +
    ~ ! " # |
    ( ) _

    Alt layer:

    Я Э* Ф П Б       Й Л У Ы* Ю
    А Щ* Ш* Ж* Ґ*    М Н Ё* Ї* О
    Ц Х З   Д В       К Ч , . Ъ*

    (put ж ї and shifted around ш щ a bit looking at their frequency)

    And the alpha layer stays as mentioned above:

    Я Є Ф П Б    Й Л У І Ю
    А Р С Т Г    М Н Е И О
    Ц Х З Д В    К Ч , . Ь


    Now, in order to program it, I'll need to map it from latin to cyrillic like this:

    Q Я
    W Є
    alt + W Э
    F Ф
    P П
    B Б
    J Й
    L Л
    U У
    Y І
    alt + Y Ы
    ' Ю
    A A
    R P
    alt + R Щ
    S C
    alt + S Ш
    T T
    alt + T Ж
    G Г
    alt + G Ґ
    M M
    N Н
    E E
    alt + E Ё
    I И
    alt + I Ї
    O O
    Z Ц
    X X
    С Ц
    D Д
    V В
    K K
    Н Ч
    , ,
    . .
    / Ь
    alt + / Ъ

    (also all the same for uppercase)

    (could also put a euro sign somewhere... ok it makes more sense for shift + 4 to be euro, so ' could move to shift + 6)

    shift + 2 "
    shift + 4 €
    shift + 6 '
    shift + 7 ?

    Offline
    • 0
    • Reputation: 214
    • From: Viken, Norway
    • Registered: 13-Dec-2006
    • Posts: 5,364

    Could you sum up without referring to Miryoku, what changes you propose from Rulemak to Ukromak? And reasons therefore based on usage frequencies and n-grams.

    I'm planning to add Ukrainian Colemak to EPKL soon – should've done it already, but for time constraints.

    Keep in mind that I'm trying to implement a phonetic layout to keep it simpler for users of Colemak, so it won't be optimal for typing Ukrainian just like Rulemak isn't for Russian. At the same time, it shouldn't be horrible either so as long as we can do so we want to adapt. This seems to be what you're doing too.

    Also, since this will be a layout for people who type both English and Ukrainian it will be desirable to keep things that are only or mostly for Latin script (such as the <> you mention). There will be times when a user needs to type some Latin script in between the Kyrillic.

    Colemak-eD-Kyr in EPKL

    Last edited by DreymaR (02-Jun-2024 09:55:29)

    *** Learn Colemak in 2–5 steps with Tarmak! ***
    *** Check out my Big Bag of Keyboard Tricks for Win/Linux/TMK... ***

    Offline
    • 0
    • Reputation: 1
    • Registered: 17-Aug-2020
    • Posts: 27

    I also put Guillemets « » on alt + , . and there's an em dash — on shift + alt + - (and en dash – on alt + - but who cares) because this is how it's done on macos ABC layout, it's a bit tiresome to type on miryoku but we shall see.

    Here's the layout file for macOS! But as I said before, it's more like a phonteic Qwerty because it's supposed to be used with a colemak keyboard. I'm gonna test it in a week or two when the keyboard finally arrives.

    https://file.io/CsKRW1WDikSy
    (the link expires in 1 year though...)

    Offline
    • 0
    • Reputation: 1
    • Registered: 17-Aug-2020
    • Posts: 27
    DreymaR said:

    Could you sum up without referring to Miryoku, what changes you propose from Rulemak to Ukromak? And reasons therefore based on usage frequencies and n-grams.

    I'm planning to add Ukrainian Colemak to EPKL soon – should've done it already, but for time constraints.

    Keep in mind that I'm trying to implement a phonetic layout to keep it simpler for users of Colemak, so it won't be optimal for typing Ukrainian just like Rulemak isn't for Russian. At the same time, it shouldn't be horrible either so as long as we can do so we want to adapt. This seems to be what you're doing too.

    Also, since this will be a layout for people who type both English and Ukrainian it will be desirable to keep things that are only or mostly for Latin script (such as the <> you mention). There will be times when a user needs to type some Latin script in between the Kyrillic.

    Colemak-eD-Kyr in EPKL


    Yes, of course! First I mapped everything from Russian to Ukrainian the way it's done in JCUKEN even if it's phonetically weird (e.g. ы -> і, и -> и, even though phonetically it would make more sense to make it неіо instead of неио).
    I also replaced / and ' to put more characters on the primary layer without resorting to the alt. To combat this, I put " on shift + 2 and ? on shift + 7 (because this is how it's done in jcuken and the replace @ & that are not used in cyrillic at all), I also put ' on shift + 6 but it was a subjective decision.
    I also swapped З and Ц because З is much more frequent, in partcular a ЗА bigram, but understandable if you want to keep it more phonetical.
    Then I put Russian letters on alt layer the way it's done in macOS Ukrainian layout, so і -> ы, є -> э, ї -> ъ. Oh and also ґ is alt + г of course.
    I think this is it. Also put lots of letters on alt layers but that's because of keyboard limitations.

    Offline
    • 0
    • Reputation: 1
    • Registered: 17-Aug-2020
    • Posts: 27

    Regarding и і, it's a hard decision. For example if we have a Canadian-Ukrainian that sometimes types in Ukrainian, they would probably prefer неіо as it makes much more sense. But if we have someone from Ukraine who is used to jcuken and plans to use both ukromak and rulemak (like myself), they would prefer неио because this is how it's done in JCUKEN. Perhaps you could provide 2 versions as this is how it was done in macos at some point, that could be the best solution.

    Offline
    • 0
    • Reputation: 214
    • From: Viken, Norway
    • Registered: 13-Dec-2006
    • Posts: 5,364

    My take is probably to prefer coming from Colemak (favoring неіо as you say). But there's also the matter of similarity to Rulemak which is a minor benefit to also be considered, so I think I'll agree with you on keeping the неио from Rulemak/JCUKEN. I'm not a fan of keeping multiple versions around just because, as it causes confusion and decision paralysis, as well as tons of extra work for (an) already overworked implementor (implementors).

    If we settle for one solution, it should be somewhat open to testing and tweaking by people who use it, but at some point one solution will just have to be considered good enough and universal enough. Anyone wishing to tweak that further are of course free to do so, but unless their variant really catches wind and becomes very popular it'll have to be their personal variant and not an "official" one.

    Oh, I now remember that it was you continuing the Rulemak Forum thread in 2020. Nice! But to recap and then move on then, here's what I'll wish for now. This is the current Rulemak, again:

    Rulemak (2016):
    ===============
    ё 1 2 3 4 5 6 7 8 9 0 - ъ
        я ж ф п г й л у ы ю ш щ
         а р с т д ч н е и о ь э
        ´ з х ц в б к м , . /

        Rulemak Russian Kyrillic layout, by ghen (2016 version)

    Selecting Colemak-Ru_ISO_CAW in EPKL gives this:
    Cmk-Ru_ISO-CAW_s0_EPKL.png

    Could you make a diagram like this one, for Ukromak? You know, I don't speak the language and I get a bit confused by all the suggestions and stuff. Hehe.

    ё 1 2 3 4 5 6 7 8 9 0 - ъ
        я ж ф п г й л у ы ю ш щ
         а р с т д ч н е и о ь э
        ´ з х ц в б к м , . /
    Last edited by DreymaR (02-Jun-2024 14:55:25)

    *** Learn Colemak in 2–5 steps with Tarmak! ***
    *** Check out my Big Bag of Keyboard Tricks for Win/Linux/TMK... ***

    Offline
    • 0
    • Reputation: 23
    • From: Belgium
    • Registered: 26-Feb-2008
    • Posts: 482

    For an Ukrainian variant of Rulemak, I'd do as most Ukrainian layouts do: keep е and и in their current position (although they are not phonetically equivalent in Ukrainian, it's what Ukrainians are used to type), replace ы>і, э>є, ё>'.  ґ and ї can go on AltGr+г/і.

    @DreymaR: FWIW, there's a later update of Rulemak which restores =+ and moves rare ъ to AltGr+ь, and adds a few more symbols in йцукен position (where their Qwerty/Colemak symbols are not useful for Russian).  This was recently merged in xkeyboard-config.

    rulemak.png

    So Rulemak-UA would look like:

    rulemak-ua.png

    Offline
    • 0
    • Reputation: 1
    • Registered: 17-Aug-2020
    • Posts: 27

    @ghen ъ is not used in Ukrainian so ї could replace ъ, but I don't know, maybe ъ is already on alt-layer in rulemak? Then putting ї on alt layer also makes sense.

    Other than that, spot on! Though I'd prefer the Ukromak name, just like Bulemak has its own name etc. Up to you of course, I'm personally fine with it, just that there are a lot of traumatized Ukrainians now that get triggered by being associated with anything Russian. Not to throw shade on the Russian language, that's just how things are, unfortunately. Sorry for bringing in politics :/

    Also thanks for sharing your layout, maybe I should also put Ж on W, instead of Є/Э. But I suppose it's justified in my case as it's a dual-use key and I simply don't have more keys to put Є on. For Ж in my case, home index on alt layer isn't that bad of a position after all, and in line with colemak's "index fingers are for consonants".

    Offline
    • 1
    • Reputation: 1
    • Registered: 22-Nov-2024
    • Posts: 1
    Offline
    • 1
    • Reputation: 0
    • Registered: 25-Nov-2024
    • Posts: 2

    Some suggestions, as discussed with DreymaR in the Colemak Discord.
    • In order to add missing characters, map `~ to ʼ₴, as in the Windows Ukrainian layout. The apostrophe can be either ASCII (U+0027) or the more typographically correct modifier letter (U+02BC) according to personal preference. I personally prefer the latter, as it’s proper writing and the ASCII apostrophe may be accessible by other means.
    • Move їЇ to =+. It’s still around 0.8% in frequency, so it deserves a better spot than `~.
    • Relegate ґҐ to AltGr+7. It’s vanishingly rare enough (0.02%) to be put off the main layer, as is done in the Windows layout for ANSI keyboards.

    Last edited by Kharlamov (25-Nov-2024 17:34:40)
    Offline
    • 0
    • Reputation: 214
    • From: Viken, Norway
    • Registered: 13-Dec-2006
    • Posts: 5,364

    What do we do with the single and double quotes, then? We could always take another AltGr+number symbol pair away...

    Maybe it is, in fact, time to reassess the EPKL Rulemak BaseLayout? I chose to keep Latin script on AltGr, but some symbols probably aren't necessary! There's always Compose too, for rarely used stuff.

    So, which Kyrillic-relevant or base Latin symbols should displace what for general Kyrillic use?

    Last edited by DreymaR (26-Nov-2024 11:40:31)

    *** Learn Colemak in 2–5 steps with Tarmak! ***
    *** Check out my Big Bag of Keyboard Tricks for Win/Linux/TMK... ***

    Offline
    • 0
    • Reputation: 0
    • Registered: 25-Nov-2024
    • Posts: 2

    The ASCII single and double quotes are included in the current AltGr with the Latin script, I think. Gives you a choice between ` for a ‘proper’ apostrophe and AltGr+ь for an ASCII apostrophe.

    If we’re reassessing base Rulemak, then I’d definitely adopt a Kharlamak-esque AltGr and dead keys. There’s a Latin–Greek dead key in there too, for scientific notation mostly. For longer texts you’re better off just switching layouts IMO. In nearly three years of testing I haven’t used the dead key as often as I’d anticipated anyway.

    I could definitely implement that in EPKL. I’m also working on a huge Cyrillic add-on for EPKL, incorporating multiple layouts and Compose sequences. I’m finally satisfied with the design and symbol coverage, so the new Rulemak implementation may be a teaser for the storm that is to come :-)

    Offline
    • 0
    • Reputation: 214
    • From: Viken, Norway
    • Registered: 13-Dec-2006
    • Posts: 5,364

    I'd love to see your project implemented in EPKL, eventually!

    I'm thinking about the option of making subvariants of the locale ones. So there'd be a Kyrillic(+Latin) one for "most people", and one Kyrillic(complete) one for users needing church Slavonic etc, like Ghen's current Rulemak tries to provide.

    It'd be a lot better if we can squeeze all that into the main layout through clever use of sequences, though! Keep in mind that both custom DKs and custom composes are available both at the BaseLayout and Variant levels (and between us, I'm planning an additional LayStack level for Variants so changes for, e.g., Ukro- or Bulmak vs Rulemak can reside in one file each instead of having to be copied into each Layout.ini file!). Dutch and Portuguese are examples of doing this in EPKL. Again, a thumb CoDeKey is a perfect candidate for such enhancements.

    Furthermore: If we add Kyrillic releases to some existing DKs, these can coexist happily with the Latin-script releases. Auto-generated help images won't reflect the added functionality, but I think we can live with that? (There is even a way of making Kyrillic help images if one really wants them, by making a temporary set of corresponding Latin glyph releases for the HIG only.)

    On a side note: I saw you and Bojidar Marinov who was part of making Bulmak, discussing Bulgarian Colemak on the Discord. The disadvantage with that, as I've said before, is that things tend to get lost too quickly in the flow of Discord; it's best for impermanent chats. Could you therefore again condense some insights onto this Forum? Not in this topic I guess, as it has a focus on Ukraina after all. I think you have a Kharlamak topic going already? If not, there ought to be one!

    Last edited by DreymaR (01-Dec-2024 12:40:14)

    *** Learn Colemak in 2–5 steps with Tarmak! ***
    *** Check out my Big Bag of Keyboard Tricks for Win/Linux/TMK... ***

    Offline
    • 0
      • Index
      • General
      • Ukromak & Rulemak (Shared Cyrillic layout for QMK keyboards)