My Big Bag Of Tricks topic mentions how I made locale variants for a bunch of countries. This topic lists and discusses them in more detail.
Note that for most of these you really should use a 102/105-key (ISO) keyboard! The 'US' 101/104 (ANSI) boards lack the lower left-hand <LSGT> key next to LShift and that one's very useful for adding extra symbols to the standard layout in a sufficiently accessible way.
The basis for these layouts is 'Colemak [edition DreymaR]', using my own preferred AltGr mappings (modifier lv3-4 in Linux terminology) for the Colemak layout. This is also on display in the 'Big Bag' topic. It makes several letters sufficiently accessible as long as they're rarely used: ʒƷ, ß (German 'ss'), øØ, œŒ, æÆ, þÞ, ðÐ, ʃƩ, ŋŊ, åÅ. Also quote marks: ‚‘’ „“” ‹› «». All the common dead keys are on symbol keys with AltGr (i.e., lv3). Common accents like the umlaut are in good positions. For rarely used accented letters, this should prove sufficient.
The Colemak [edition DreymaR] layout, using different lv3-4 mappings from the standard Colemak.
Shown with the ZXCVB_ 'Angle' ergonomic mod (see below), dead key emphasis and color-coded proposed fingering.
The trick here is separating the main letter block from the symbol keys in the layout definitions. (The semicolon is an in-between key since it's a symbol key that sits in the letter block; QWERTY is to blame for this inconsistency.) Doing this, I can with relative ease substitute the standard symbols for the ones used on locale QWERTY keyboard layout variants. This produces a range of 'Keep Local Symbols' locale variants, that should be in correspondence with what people from those locales are used to and what's printed on their key caps.
Please note: The letter block keys have Colemak[eD] mappings in these layouts! This could lead to redundancies or lack of a lv3-4 symbol (if it's defined on a letter key in the default locale layout and not in Cmk[eD]). If that happens and it's a problem, let me know. For the most consistent and complete set of AltGr mappings, use the 'Unified Symbols' variants.
However, I've abandoned the way of the locale symbols for myself. I found that the locale QWERTY layout for Norway where I live was messy. Furthermore, it made some symbols hard to produce. For instance: For a tilde which is often used in coding and stuff in the computing world you would have to press AltGr and Right Bracket; then since that's a dead key you'd have to type an additional space to release the tilde. Moreover, that won't even always work in apps (especially Java or Flash). Ugh. Other locale layouts aren't much better. Not that the US layout is perfect or anything, but at least it's what many know and expect - symbols that are easily reachable like said tilde or the caret are used in script languages for instance.
So I set out to make a simple and consistent way of providing the necessary locale symbols while keeping the main setup intact.
Here's what Shai has to say about making locale Colemak variants, on the Multilingual page of this site:
If you want to create a layout optimized variant for your language, you can remap the 102nd key (not shown in layout) and some of punctuation keys you don't use often.
I fully agree, and so that's what I've done!
- The LSGT and bracket keys may hold the most common locale-specific symbols.
• The oe/oslash/aring special letters may well be replaced; these should also be on dead keys.
(Also, the œ is rightly a ligature which fits the Compose method well.)
- Furthermore, a set of keys with non-essential lv3-4 mappings (like h/j/k/l) are up for grabs if need be.
• The K key is quite easily reached with AltGr and in the Colemak[eD] it holds non-essential mappings.
• The H key, similarly, is well placed and holds nothing really important.
• The L key, same.
• The J key is a bit of a reach with the AltGr key held down so I hope it won't be necessary.
- If there are many letters using one accent, a well placed dead key (on lv1-2) may be preferable.
• The AltGr dead keys will still be available and some of these (like umlaut and acute) are quite easily reachable too
• Using a lv1 dead key may be preferable for speed typing (Sean Wrona, apparently, uses a sticky Shift for this reason!)
The layouts presented herein will be shown with the AngleWide-Slash ('AWide-35') wide keyboard mod (again, see the 'Big Bag' topic). What this means is that the brackets are moved to the middle on the upper and home row, the VK_102/<LSGT> and Backslash/<BKSL> keys to the middle lower row, the += key to the middle upper row and finally the ?/ key to the upper right. I'm sorry if this confuses anyone, but when I made these images I didn't know of an easy way of changing back and forth between Wide and unmodded setups (I have now learnt to use 'setxkbmap -model' but too late for now...). To my advantage though, the AngleWide mod brings the LSGT/102 key and brackets together right in the middle with the other moddable keys so they can all be shown in a partial keyboard image without everything else in between them! :)
The standard "US English" Colemak [edition DreymaR] layout, shown with the 'AngleWide-35' ergonomic mod I use.
DISCLAIMER: If you study the layout images, don't pay too much heed to the grayed-out keys. The "edition DreymaR" mappings for AltGr (lv3-4) may have been tweaked slightly since they were created. The Colemak[eD] color image above should be correct.
See the next post for the list of locale layouts
See the third post for the list of phonetic script layouts
Some topics on the forum regarding different locale Colemak variants (let me know if I missed any):
Czech Colemak, by davkol
Spanish Colemak discussion (Colemak en Español), by javix
Spanish Colemak, by martinrinconbotero
Greek Colemak, by dkun
Hungarian Colemak, by mr.schyte
Brazilian Colemak discussion, by krp
Danish Colemak, by erw
European multilingual Colemak, by Sprachprofi (including some interesting discussions!)
Lithuanian Colemak, by Tautrimas
Russian Colemak – 'Rulemak' – by ghen (mostly based on KOI-8R)
Russian Colemak by vilem (quite similar to Rulemak, mostly based on phonetics/intuition)
Discussion of Colemak for other languages, by SpeedMorph
Swedish/Finnish Colemak discussion, by Linus
Swedish/Finnish Colemak, by Turbulenz
French Colemak, by Endaka
Portuguese Colemak discussion, by Bee
German Colemak, by vilem
Polish Colemak, by moskit
Norwegian Colemak, by Padde and by Jovlang
Last edited by DreymaR (02-Oct-2014 12:06:24)
In the following I've described how to make a set of locale layouts for many languages, remapping for the most part the bracket keys (LBr/RBr) and the "lesser/greater" key (LSGT) also known as VK_102. If more keys than these are needed, the KLJH keys with AltGr (lv3-4 mappings) are also available in my layout since they hold unessential mappings beforehand and are placed together.
There's quite a bunch of these! I can make more on request or whim. It'd be nice with feedback from local users as some design decisions are open to debate and depend on actual usage as well as personal preferences.
Here's what I've covered so far, for the most part both with conservative 'keep local symbols' and my preferred 'unified symbols' variants
(On a side note, there are but 11 Dvorak layouts so now Colemak really has wind in its locale sails!):
be br ca cz de dk es fi fr gb gr il is it latam nl no pl pt se us
The Belgian, Canadian (international) and French default QWERTY layouts are similar enough that a harmonized 'unified' variant was made for these locales.
This variant should be good for all users of the French and similar languages. One layout to rule them all...
The needed letters for French-type locales are Éé, ÀàÈèÙù, Çç, Œœ. The LBr key has cirkumflex (âêîôû) and umlaut (ëï).
Some letter frequencies for French: é 1.90%; à 0.49%; àèù 0.82%; ê 0.23%; ç 0.09% (which is still more than k at 0.05%); œ 0.02%.
Belgian 'Keep Local Symbols' Colemak[eD]
Canadian(Intl) 'Keep Local Symbols' Colemak[eD]
French 'Keep Local Symbols' Colemak[eD]
The '[eD] unified' solution for be+ca+fr:
• Judging by the letter frequencies, é and grave merit their own keys; the other accents are of less critical importance.
• Éé gets its own key (LSGT) instead of an acute dead key since it's quite frequent and only one letter.
• A Çç key is preferable to the cedilla dead key since there's only one letter needed, but lv3-4 is acceptable since it's a rare letter.
• For supporting various other accent needs, dead keys are the best option; some are common enough to merit a lv1-2 placement.
• LBr keeps its dead keys as in the default layout for easier access to the cirkumflex/umlaut letters even though these aren't very common.
• RBr gets the grave dead key on lv1 since àèù together are somewhat frequent.
• The numerosign (RBr lv2) is hardly in use generally (some use an N and the masculine ordinal to produce 'Nº') but in French locales it's used.
• The letter K is very rare in French, but lv1-2 mappings should not be changed unless absolutely necessary!
Belgian+Canadian(Intl)+French 'Unified Symbols' Colemak[eD]
Portuguese (Brazil) 'Keep Local Symbols' Colemak[eD]
Portuguese (Portugal) 'Keep Local Symbols' Colemak[eD]
The '[eD] unified' solution for br+pt:
• The two Portuguese locales' default layouts have the acute/grave key on LBr (br) and RBr (pt); that's too bad.
• I think that the acute is the more common accent? At any rate, it feels logical to place it on the LBr I feel.
• Tilde is also important and used for more than just ñ in Portuguese (ã and õ at least), and cirkumflex is also provided.
• The Çç has a prominent placement in the default locale layouts so it gets its own key (not really sure if that's necessary though?).
• The Brazilian ABNT-2 keyboard's extra key gets the ordinal markers º/ª. These are also placed on AltGr+o/O.
Portuguese (Brazil and Portugal) 'Unified Symbols' Colemak[eD]
Czech 'Keep Local Symbols' Colemak[eD]
Polish 'Keep Local Symbols' Colemak[eD]
The '[eD] unified' solution for cz and pl:
• These two locales ended up very similar, with one acute key and one other accent (hacek for cz, ogonek for pl) for commonly accented letters.
• The ů in Czech is hardly ever capitalized in normal text but the Ů is sometimes needed for caps and letter referrals so it's provided (also for consistency).
• The ż in Polish is the only letter using the dot-above accent so it gets a key for itself. I think the AltGr+period dead key is quite easy to hit though...
• The ł in Polish is only available on lv3-4 but I think AltGr+L is an easy reach.
Czech (middle) and Polish (right) 'Unified Symbols' Colemak[eD]
German 'Keep Local Symbols' Colemak[eD]
The '[eD] unified' solution for de:
• The German layout conserves the Üü position from the default layout.
• Ää and Öö are harmonized with the Scandinavian layouts.
• For ß only AltGr+s is provided; I think that's very easy to hit. The capitalized version isn't there but it's hardly ever used!?
German 'Unified Symbols' Colemak[eD]
The Scandinavian languages use the same special letters albeit written differently: Åå Ææ Øø for Danish and Norwegian, and Åå Ää Öö for Finnish and Swedish. Their default layouts are quite similar too, apart from stupid differences in punctuation placement which fortunately won't cause us trouble.
Danish 'Keep Local Symbols' Colemak[eD]
Norwegian 'Keep Local Symbols' Colemak[eD]
Finnish 'Keep Local Symbols' Colemak[eD]
Swedish 'Keep Local Symbols' Colemak[eD]
The '[eD] unified' solution for dk+no and fi+se:
• These locales use the same special letters. The Åå is kept in place (it's in the same position for all the Scandinavian default layouts).
• The Ææ is somewhat more common in Danish and the Øø in Norwegian, but that shouldn't matter much here! Both positions are decent enough.
• The Ää and Öö are placed in harmony with the other Scandinavian (and German!) layouts.
Danish-Norwegian (middle) and Finnish-Swedish (right) 'Unified Symbols' Colemak[eD]
Spanish (Spain) 'Keep Local Symbols' Colemak[eD]
Spanish (Latin America) 'Keep Local Symbols' Colemak[eD]
The '[eD] unified' solution for es+latam:
• For the Spanish-speaking countries, the tilde is important but only used for Ññ so that letter gets a key for itself.
• The acute and grave are important accents so they get lv1 placement in a logical fashion on the brackets ("up then down").
• Unfortunately, the Spain and LatAm default layouts have different placement of the acute accent key. That's silly I think?!
• The necessary but less common umlaut and cirkumflex accents are given lv2 placements.
• (One alternative idea from user javix for standard Spanish is to make a single dead key for acute and tilde on the <LSGT> key!)
Spanish (Spain and Latin America) 'Unified Symbols' Colemak[eD]
English (UK) 'Keep Local Symbols' Colemak[eD]
The '[eD] unified' solution for gb:
• There is none! The US (English) layout serves the needs of all English-speaking locales to my knowledge (the £ sign is there).
• Using the 'Keep Local Symbols' layout the Brits get to find all symbols where they're accustomed to – at the cost of dead keys etc.
Iceland managed to stick with the Þþ and Ðð letters when for instance English lost them and stupidly started writing 'th' instead. ;)
Other than that, they need the Ææ and Öö letters like the other Nordic countries do, but make do without the Åå (as they use Áá instead).
Icelandic uses the acute accent far more than the other Nordic countries.
Some letter frequencies for Icelandic are: ð 5.01%; þ 1.59%; á 1.55%; í 1.34%.
Icelandic 'Keep Local Symbols' Colemak[eD]
The '[eD] unified' solution for is:
• As the letter frequencies show, the Þþ and Ðð are so common that they shouldn't be kept on lv3-4 mappings for this locale.
• Ææ and Öö however, are less common and hopefully AltGr+a and AltGr+k respectively are easy enough to hit.
• There are several accented letters (Áá Éé Íí Óó Úú Ýý) and some are quite frequent, so a good acute dead key is needed.
Icelandic 'Unified Symbols' Colemak[eD]
Some letter frequencies for Italian: àèìòù 0.89% (è 0.42%; à 0.15%; ù 0.12%; ò 0.11%; ì 0.09%); é 0.06%.
If this is accurate, the accented letters are quite rare all in all.
Italian 'Keep Local Symbols' Colemak[eD]
The '[eD] unified' solution for it:
• For the Italian layout, several different accented letters are needed but capitalized letters weren't in the default layout.
• Thus, the letters were provided directly as in the default layout. The éè key was kept on LBr and the rest put together.
• The ìù were placed fairly logically on the phonetically related J, but had to go on lv3-4 mappings.
• If this approach doesn't suit you, I recommend using the Spanish layout instead! It does the same using dead keys.
Italian 'Unified Symbols' Colemak[eD]
Dutch 'Keep Local Symbols' Colemak[eD]
The '[eD] unified' solution for nl:
• The Dutch layout is similar to Belgian and other French-type ones but has more use of the umlaut than the cirkumflex.
• Therefore I didn't harmonize it fully with the French-type layouts but kept the LBr key the was it is in the default layout.
• The acute letter Éé is somewhat common as is Óó; the acute dead key on RBr should be good enough for that.
• The IJ ligature isn't provided in the default layout so it isn't here either; I think it's fallen into disuse. The Compose method has it.
Dutch 'Unified Symbols' Colemak[eD]
[¡ WARNING: THE ABOVE MAY STILL BE SUBJECT TO (HOPEFULLY SMALL) CHANGES !]
Last edited by DreymaR (04-Jul-2014 16:06:30)
For the phonetic variants of Greek and Hebrew script I merely moved the keys of their default layouts to a Colemak setup, not changing anything else. This type of layout already exists in QWERTY form, so making Colemak versions isn't hard.
Ideally, I should be able to define phonetic names for the keys corresponding to Colemak so that other 'phonetic' layouts would work automatically, but I think the XKB way of doing that may be too QWERTY-centric for that to work right now.
For the Kyrillic layouts it's slightly more tricky since Kyrillic script has more letters; user ghen has made a nice solution named Rulemak. There are other proposals as well; see the topics linked to above.
The Colemak phonetic layout for Greek script, simply moving around the keys of the default (here xkb) Greek layout.
The Colemak phonetic layout for Hebrew script, simply moving around the keys of the default (here xkb) Israeli layout.
The Colemak phonetic layout for Russian Kyrillic script – 'Rulemak' by user Ghen.
Based on KOI-8R, with the notable exception of ч for H because it's quite common and used in existing phonetic Russian layouts.
[Note: Rulemak is implemented in xkb and PKL (Win) by ghen himself and ported to my implementations – see the post below!]
The Colemak phonetic layout for Bulgarian Kyrillic script.
In the Rulemak topic I discussed this layout. Notably, ы and ё aren't used but ъ is more common than ю.
NOTE: In Rulemak, the VK_102/LSGT key is combining acute; in Bulgarian Colemak it's combining grave. Makes some accented letters easy to type.
Last edited by DreymaR (26-Jan-2014 19:40:32)
[Note: Rulemak is not currently implemented in xkb, but there's a PKL layout available?]
But the one I actually use(d) most is a vim keymap implementation; I can switch between layouts using Ctrl-6 and it affects insert mode only (command mode remains ascii/colemak).
Last edited by ghen (26-Nov-2013 22:43:35)
Thanks ghen! I realize you've had those lying there since 2009; sorry I'm a bit dense. ;)
As a first step, I added your Rulemak pkl file to my PKL archive, and spiffed it up with an icon and your png images as help images for state0/1 (base) and state6/7 (AltGr). Works fine as far as I can see.
It's a bit bare-bones without dead keys, but if users are interested that can be remedied with some copy-pasting and fidgeting. The dead keys would be mostly for the latin script anyway. Same if anyone needs a Wide version; that'd be a little work but not a lot.
NOTE: I started a fight in your Rulemak topic! Any thoughts on that?
[Update 2014-01-12: Updated the xkb files with Rulemak!
• You can select it as 'Russian (Colemak, phonetic Rulemak)' which is a bit Russia-centric but that's the way xkb rolls.
• I added a few lv3-4 mappings, and I use the dead_accents as in Colemak[eD] because I don't think combining accents are fully workable yet.]
Last edited by DreymaR (12-Jan-2014 22:15:14)