• You are not logged in.

    Optimized Colemak for European Languages

    • Started by Sprachprofi
    • 10 Replies:
    • Reputation: 0
    • Registered: 17-Mar-2010
    • Posts: 2

    Thank you very much for creating this more rational keyboard layout! I think Colemak is great.

    I would like to switch to Colemak completely, even though it means having to re-learn the location of all the pesky punctuation (right now I touch-type on German QWERTZ) - for a programmer, that is very annoying. But I'm so convinced about Colemak that I'll do it. The only thing is that German letters are really too hard to type on the standard Colemak implementation. For example Alt Gr + y for ü... painful!  I type a lot in English when programming or participating in forums, but I also type a lot in German and French, in fact I have to write a thesis in German about French literature. Both German and French are a pain to type in the current implementation, and same goes for any language with a reasonable amount of accented letters really.

    For this reason I have created an adapted version of Colemak - almost everything stays the same really - which can be used to effortlessly type in any Romance, Celtic or Germanic language (or all at once!), and which still saves speakers of Slavic, Baltic or Turkic languages a lot of time, compared to the regular Colemak implementation.

    Please have a look at the pictures of this: plain, with shift, with Alt Gr

    https://www.learncolemak.com/multilingual.php contains detailed information about my rationale, goal, method and so on.

    If you'd like to use this keyboard layout on your computer and you have Windows, I created an installer for it, which you can download here . I used Microsoft Keyboard Layout Creator, so the result is a valid and fully functional keyboard layout that you can add to your system much like you'd add support for the Spanish keyboard layout. No additional programs are necessary, but you still need the caps lock-to-backspace patch if you want that - the patch is locale-specific, so I thought it better not to provide it.

    Please let me know what you think!

    Offline
    • 0
    • Reputation: 0
    • Registered: 05-Jan-2010
    • Posts: 91

    It's an interesting design, but even though I type a lot in Swedish and a little French and Norwegian, I'm kind of content with the current position of international characters. Also, as a programmer, I find the position of the special punctuation a lot more intuitive and advantageous in the US Qwerty/Colemak than in any national variant. (The Swedish is horrible in that aspect, and several others!)

    Offline
    • 0
    • Reputation: 114
    • From: Oslo, Norway
    • Registered: 13-Dec-2006
    • Posts: 4,744

    Hi! Welcome to the forums, and thanks for your interest and work!

    I agree with you that keeping the main Colemak setup intact is a great benefit. I've worked from the standard Colemak myself, keeping everything the same in the normal and Shift states (apart from VK_102) and implementing all my other stuff in the AltGr states and the SwissCaps states only.

    I feel that your layout isn't quite tidy enough? I wouldn't duplicate dead keys for instance. Keeping the standard Colemak's accent mappings isn't much of a point since I don't think they're very well known as they are and they don't strike me as perfect anyway. Instead, I use a Linux-like dead key scheme where almost all punctuation/number keys with AltGr are a dead key: The :; key for diaeresis/umlaut for instance, and all accent keys are their deadkeys with AltGr. However, in many programs you actually have to input the symbol without dead key and it's very annoying for coding so Shift+AltGr will give the symbol itself.

    Sacrificing the dash for a macron dead key seems overmuch to me! I bet that'll annoy the hell out of a lot of users and not really be worth it? It'd certainly do me in!

    I think that a national user needs a national layout, but at the same time it should be very minimalistically changed! That way you could change between the national layout you needed but in reality only change the mappings for a couple of keys! So I use all the punctuation like in the standard Colemak (ergo the US QWERTY). This helps compliance with a lot of program's hotkeys too, and is good for coding because otherwise you'll find yourself needing easy access to some key that your layout hides away too much.

    I use the VK_102 for the most needed national symbol (in Norwegian, that's 'Ø'; in German, maybe 'ü' or 'ß'?). The next needed chars are on AltGr+[] (I use 'ä' and 'ü' there - or rather, the Norwegian 'æ' and 'å' which I believe play a similar role) and if more are needed (say, for a slavic language) I'd use the \| and /? keys too. In my experience, this is necessary for writing your non-English language a lot, and with my solution it flows well enough I think. New users may take a little while to get used to the AltGr mapping for a few keys but as long as the letters are rare it's really not a hassle.

    You mention that the AltGr key is hard to hit because you have to twist your hand. This depends a bit on which keyboard you're using but generally speaking you have a point. However, I strongly recommend using a Wide ergonomic mod (see the last images in the linked topic) for any ISO keyboard because this will let you completely off the hook! Shorter distance to the Enter and Backspace keys are an added perk, and the changed key positions are so easy to learn that I even convinced my wife to use them (and she isn't into keyboard improvements at all).

    I haven't finished my layout completely because I'm very ambitious about it - I want to be able to use it for not only Latin-based European languages but also Greek/Cyrillic, most African languages and IPA. But if you like you could check out what I have so far.

    Last edited by DreymaR (18-Mar-2010 10:04:16)

    *** 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: 17-Mar-2010
    • Posts: 2

    Thank you for your feedback.

    >I feel that your layout isn't quite tidy enough? I wouldn't duplicate dead keys for instance. Keeping the standard Colemak's accent mappings isn't much of a point since I don't think they're very well known as they are and they don't strike me as perfect anyway.

    Just didn't want to make any enemies ;-)  I don't really care what is on the Alt+Gr keys, but somebody else might.

    >Sacrificing the dash for a macron dead key seems overmuch to me! I bet that'll annoy the hell out of a lot of users and not really be worth it? It'd certainly do me in!

    For me it's not a big deal because a) it's possible to use the minus key and b) after the dash you'd normally type a space anyway, so typing two spaces instead isn't too much of a difference. However, that is probably the weakest point of my proposed layout and I'm ready to move the macron key somewhere else where it's accessible enough. I personally need it for Latin and Chinese Pinyin.

    >I think that a national user needs a national layout, but at the same time it should be very minimalistically changed! That way you could change between the national layout you needed but in reality only change the mappings for a couple of keys! So I use all the punctuation like in the standard Colemak (ergo the US QWERTY).

    I disagree. Looking at the national layouts nowadays almost none changed the QWERTY keys in a significant way, just moved the punctuation for no good reason and made space for accented characters. Also, letter distribution is not all that different across languages, and two-letter combinations are limited by what our mouths can produce. I believe the advantage of having one keyboard to type all languages is a huge advantage in this age where most Europeans are multilingual. I'm okay with using US placement of punctuation for all.

    > I use the VK_102 for the most needed national symbol (in Norwegian, that's 'Ø'; in German, maybe 'ü' or 'ß'?). The next needed chars are on AltGr+[] (I use 'ä' and 'ü' there - or rather, the Norwegian 'æ' and 'å' which I believe play a similar role) and if more are needed (say, for a slavic language) I'd use the \| and /? keys too.

    This is a reasonable way to handle it if you're assuming monolingual users and languages with a limited amount of special letters. For French and for Slavic languages for example, you absolutely need dead keys for character input because of the wide variety of accents. Even being German I don't see the advantage of having one key each for the ä ö ü and even before I heard of Dvorak and Colemak I was playing with the idea of designing a keyboard that would unify those and leave more space for other accents.

    The problem with the approach of always putting the most needed accented letter in a place is that you have to re-learn how to type for every language. For example, é should figure somewhere (hidden away) on the English keyboard for unusual cases like déjà vu, but the same key needs to be prominent on a French keyboard. The ¨ key is needed for French (for words like Noël) but not nearly as often as ´ ` or ^ . For German, it is essential. So this key will be present on both keyboards but placed in different positions as well. I believe this confusion is way more annoying than having all Western European accent keys readily available in defined spots, even if it means a less-than-perfect placement considering national letter frequency.

    > You mention that the AltGr key is hard to hit because you have to twist your hand. This depends a bit on which keyboard you're using but generally speaking you have a point. However, I strongly recommend using a Wide ergonomic mod (see the last images in the linked topic) for any ISO keyboard because this will let you completely off the hook!

    I'm already using an ergonomic keyboard. The main issue I was getting at is that it's impossible to use Alt Gr with your left hand (under Windows, Alt doesn't have the same functionality as Alt Gr), and using Alt Gr with your right hand while trying to hit another letter with your right hand at the same time is very uncomfortable.

    > I haven't finished my layout completely because I'm very ambitious about it - I want to be able to use it for not only Latin-based European languages but also Greek/Cyrillic, most African languages and IPA. But if you like you could check out what I have so far.

    I'm a student of Modern Greek as well, but I wouldn't think of including it on the main keyboard. At the moment I just hit Alt-Shift to switch to another custom keyboard and I can type phonetically in Greek letters, including the tonos and Greek punctuation. This is a lot more reasonable than having to keep hitting a deadkey. I would put a dead key for Greek letters somewhere among the Alt Gr places though just to enable English speakers to access Greek letters for math/physics formulas. For Cyrillic, which is not used by English speakers at all, a separate keyboard has to suffice. It might make sense to keep IPA on the main keyboard, but I'm putting it on a separate one anyway because it's too different. If you want to support the full IPA, there are way too many new letters and new diacritics to make it viable, and the average English speaker won't ever need any of them.

    According to my survey, the following languages are now supported in Colemak, and my flavour in particular:

    --

    Optimal support (= all letters can be typed without use of Alt Gr; only listing the languages where that wasn't the case with regular Colemak):
    Afrikaans
    Albanian
    Catalan
    Danish
    Dutch
    Esperanto
    Faroese
    Filipino
    French
    Galician
    German
    Hawaiian
    Icelandic
    Irish
    Italian
    Kurdish
    Latin (with vowel length indications)
    Leonese
    Maori
    Norwegian
    Occitan
    Portuguese
    Scottish Gaelic
    Spanish
    Swedish
    Welsh

    Almost optimal support:
    Estonian (just missing the haceks that might occur in foreign words)
    Finnish (same as Estonian, except the haceks may be replaced by h)

    Better supported than in pure Colemak (= some accents are easier to produce, some are still hidden in the depths):
    Azerbaijani
    Bosnian
    Chinese in romanization (Pinyin)
    Crimean Tartar
    Croatian
    Czech
    Gagauz
    Lakota
    Latvian
    Lithuanian
    Livonian
    Polish
    Romanian
    Slovak
    Turkish

    Same as Colemak:
    Maltese
    All languages that don't have diacritics or special letters, e. g. English, Malay, Swahili, Nahuatl, countless other indigenous languages

    Latin alphabets not supported:
    Aymara? (unable to find a computer implementation of their special letters)
    International Phonetic Alphabet
    Vietnamese

    --

    There are not many unsupported languages, apart from those requiring a completely different alphabet (Tibetan anyone?). I think this is a great achievement for Colemak.

    Last edited by Sprachprofi (23-Mar-2010 14:03:16)
    Offline
    • 0
    • Reputation: 114
    • From: Oslo, Norway
    • Registered: 13-Dec-2006
    • Posts: 4,744

    Hmmm... seems I didn't get through with all my messages. I'll probably have to show you what I mean by example. Unless I manage to prepare anything presentable for this forum, I may contact you personally instead to discuss the finer points further.

    However, to make one or two things clear already:

    - I too want to keep all the punctuation like in the US layout (and Colemak's recommendation)! That's not at all what I meant by a 'national layout'. What I envision is that only a few keys change between the various national layouts. In most cases, this will only have to be the VK_102, the AltGr mappings of the brackets and possibly one or two more keys as needed (such as the AltGr mappings of \| and maybe /? although I would like to use that one for a slash dead key). What I do with Norwegian chars is one layout where the brackets are on AltGr mappings (if you have to type a LOT in Norwegian and little coding) and one where the 'æ' and 'å' are on the AltGr mappings (this one I use exclusively since I do as much coding as Norwegian if not more) - but otherwise they're the same. It's easy to switch between the national-focused and coding/international-focused variant by hotkey like you say.

    - I too want a common (Colemak) layout for most languages! You may be interested in reading the topic on character use frequency on this forum, or my files on the topic. Turns out Colemak works surprisingly well for all the European-based languages... in theory at least (and I believe it!). Seems to me it has an edge on Dvorak for instance, in that respect.

    - I too use dead keys extensively. For some languages, you may have to rely on them because you need a lot of accents. However, in my and others' experiences typing your own language using dead keys more than very rarely gets quite disruptive. I need my 'æøå' letters nearby! The balance I struck was to use AltGr for the two rarest of them and a plain mapping for the most common. In use, this feels comfortable. Whenever I need to type a German or Swedish 'ä' for instance, my umlaut dead key is quite sufficient of course (especially since it's very accessible).

    - So, I'll always keep rarely used characters and accents available by dead key. But in most non-English languages you'll also need a few extra characters and I think those should be kept easily accessible. The trick is to introduce this variation in as few mappings as possible, which I why I reserve only a few keys as variable "easy access" keys. Anyone could find the 'ø' on a dead key (slash-o), but a Norwegian user will also find it on the VK_102 key. A Slavic user will not have enough easy-access keys for everything, but will use the available keys for the most common characters and dead keys for the remainder.

    - Your point of relearning this for each language is not a big one I think: It's only needed if you type a given language much, in which case you'll easily learn it for that particular language whenever you feel it's worth it over using the dead key mappings. If you don't want to learn the few variable key mappings for, say, French, that probably means you aren't typing a lot of French anyway.

    - My AltGr mappings are IPA, and of course you'll need a lot of dead key usage if you want a full set but for most uses (like specifying a word pronounciation in Wikipedia) you'll do fine with mostly AltGr. Incidentially, the AltGr mapped symbols are also to a large extent needed for latin scripts (like 'ðþ', 'ß' etc). It's more of an IPA+Latin-Extended mapping really.

    - I would never type any amount of Greek or Cyrillic using dead key mappings! That's not what I meant at all. I'm talking about additional shift states, which is somewhat akin to your layout switching but in my opinion more powerful. Tavultesoft's KeyMan has something similar.

    In conclusion, I firmly believe in not messing with the generic typing experience. This is why doubling of spaces and similar tweaks are anathema to me. Dead keys are great, but they disrupt typing flow if you use them for anything but special glyphs and rarely needed characters.

    As for the AltGr plus right-hand keys, my hands may be more dexterous because I've played musical instruments but I don't see any problem in hitting AltGr and certain right-hand keys at the same time! I have designed placements so that the less comfortable ones are rarely in use I think. AltGr with the apostrophe (for acute accent) or semicolon (for umlaut/diaeresis) keys for instance, is no trouble at all as far as my hands can tell. Your mileage may vary of course. I do feel that the Wide mod helped in this respect though. Whenever I need AltGr plus far-away right-hand keys I may help with the left hand, but those occasions should be rare so they don't affect overall speed.

    Last edited by DreymaR (23-Mar-2010 14:57:24)

    *** 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: 03-Jul-2009
    • Posts: 189

    Have you ever heard about the Compose key? https://en.wikipedia.org/wiki/Compose_key

    Much more expressive than AltGr combinations for an international layout.

    Natively supported on *nix systems. An utility exists which emulates it on Windows: http://allchars.zwolnet.com/

    Last edited by spremino (25-Mar-2010 11:14:23)

    Dvorak typist here.  Please take my comments with a grain of salt.

    Offline
    • 0
    • Reputation: 114
    • From: Oslo, Norway
    • Registered: 13-Dec-2006
    • Posts: 4,744

    Yeah, but most people don't want to run extra apps to compose stuff. Call us backwards.

    What I do instead, is to comply with much of the compose combinations in my dead key mappings. A compose like Slash+o for 'ø' will instead be AltGr+slash then 'o' in Windows. Same basic combination, same number of keypresses. Composing is inherently more powerful than dead key mappings, but both get the job done if done right, I think.

    Last edited by DreymaR (25-Mar-2010 11:28:56)

    *** 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: 03-Jul-2009
    • Posts: 189
    DreymaR said:

    A compose like Slash+o for 'ø' will instead be AltGr+slash then 'o' in Windows. Same basic combination, same number of keypresses. Composing is inherently more powerful than dead key mappings, but both get the job done if done right, I think.

    Well, if you can "compose" characters with AltGr too - as you have showed - I agree. I didn't know that (it doesn't work with Italian layout on Windows). Do you know whether such combinations work on *nix systems, too?

    Regarding dead keys, let's keep in mind they are customizable on Windows, whilst being fixed on *nix. Note: I assume we want an international layout to behave the same on (almost) all platforms.

    Last edited by spremino (25-Mar-2010 12:05:17)

    Dvorak typist here.  Please take my comments with a grain of salt.

    Offline
    • 0
    • Reputation: 114
    • From: Oslo, Norway
    • Registered: 13-Dec-2006
    • Posts: 4,744

    Fixed? You mean you cannot for the life of you add, say, a Won symbol to a slash deadkey? Sounds too odd to believe.

    At any rate, a lot of what I do with dead keys in my Windows layout can be reproduced by adding composes on *nix systems. And that's the "right" way to do it in accordance with the *nix paradigm I guess; I'll probably run into a lot of collision trouble I fear, but that's a worry for another day.

    *** 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: 03-Jul-2009
    • Posts: 189
    DreymaR said:

    Fixed? You mean you cannot for the life of you add, say, a Won symbol to a slash deadkey? Sounds too odd to believe.

    I mean you can't customize the output character of a dead key on *nix (that's the reason DDvorak is a Windows-only layout). Who does know otherwise?

    DreymaR said:

    At any rate, a lot of what I do with dead keys in my Windows layout can be reproduced by adding composes on *nix systems.

    Agreed, but then the typing experience would not be the same, since dead keys and Compose behave differently. That is: Windows and *nix layouts would be different.

    Last edited by spremino (25-Mar-2010 13:27:12)

    Dvorak typist here.  Please take my comments with a grain of salt.

    Offline
    • 0
    • Reputation: 15
    • From: Belgium
    • Registered: 26-Feb-2008
    • Posts: 451
    spremino said:

    Regarding dead keys, let's keep in mind they are customizable on Windows, whilst being fixed on *nix. Note: I assume we want an international layout to behave the same on (almost) all platforms.

    You can easily add your own compose sequences and dead keys on X11, too (actually, they are implemented the same way).  Look here for an example how I added Colemak's Altgr+\ special characters on Unix (by mapping Altgr+\ to an unused character first).

    Offline
    • 0