Writing non-English languages with a QWERTY keyboard

QWERTY and nothing else

My first experience on a keyboard was on a Teletype Model 33. This was to learn how to program, not how to type, which I still haven't mastered... But I did develop a preference for mechanical keyboards. When IBM introduced to IBM PC AT (Advanced Technology), they also introduced the IBM Model M keyboard. I have been using these keyboards ever since. My Model M's have 101 keys in QWERTY layout and no key with a logo on it (some people call this the Windows key).

Picture of QWERTY layout

Microsoft International keyboard (with dead keys)

My native language is Dutch, but I read and write a few others. Most of these laguages have 'foreign' (accented) characters, which obviously are not available on the keyboard. Starting with Windows 3.0, there was a solution: The US International layout. It uses dead keys. A dead key no longer generates a character, it's a prefix for the next character. An apostrophe (') followed by the letter e will generate é (e-acute). Great stuff! But what if one needs to type an apostrophe? Just type ', followed by a space. Easy but very annoying for programmers (like me), who have to type quotes and double quotes all the time.

Picture of International with dead keys layout

The US International layout does have another feature: Most keys will generate special characters when pressed while the right Alt key is held down. (The right Alt key is marked AltGr on most localized keyboards.) No sequence of ' and e needed, but just AltGr-e. The number of accented characters (in most languages) is rather small. The letter é is common in French, but its frequency is only 1,5%. I started wondering what would happen if I changed the Microsoft design so that the dead keys were no longer dead (allowing me to program freely) but still would have é at my fingertips through AltGr-e. Removing the dead keys posed a problem: ë (which I use in Dutch) is not available through an AltGr combination but only through a dead key.

International keyboard (with AltGr dead keys)

I experimented with how awkward it would be if I used AltGr to get to the dead keys as well: for à, I would have to type AltGr-`, followed by a. Awkward indeed, but à is not very common in Dutch (fortunately). I got rid of the very annoying " followed by a space to get a single doublequote AND still had access to all characters! I used this layout for a number of years, modifying the .../X11/symbols/us file after every new installation of Linux.

Picture of International with altgr dead keys layout

Some people around me noticed my layout, which made me think of submitting it to ... (I didn't know). With some help, my proposal was accepted. Within one or two releases, I was able to stop modifiying files, but just select "International AltGr dead keys" from a menu. Great.

Some people started using the layout, some of them helping others to find it in Linux. Some got accustomed to the layout and wanted it to work on Windows too.

Western European keyboard (with AltGr dead keys)

Years later I recieved an e-mail from user Enno, who writes German a lot more than I do. His issue (obviously) was with the (common) letters ä, ë, ö and ü. They're available, but all over the keyboard. A somewhat logical layout would be nicer, but that would require breaking the Microsoft 'standard'.

Which made me think. What makes the Microsoft International keyboard eh... international? What rationale is behind having support for the letter ð (eth) - a letter used in Old English, Middle English, Icelandic, Faroese - languages with few speakers. The letter ã (atilde) is very common in Portugese, but that is only accessible through a dead key. Or, as Enno put it: ® (AltGr-r) is only common in Redmond.

We tried to come up with a layout that would support more languages a little better. We started looking at letter frequencies. (We used this for lack of a better source: the table at the bottom of the page suggests that ï has 0% occurrence in Dutch, which I know to be incorrect.) In the MS layout, each vowel has the acute version 'on' the vowel. AltGr-a produces á, AltGr-e becomes é. Makes sense. But where to put the other variants so that the user will remember?

Eventually, we decided on a few 'ground rules':

This layout supports English (of course), Danish, Dutch, Finnish, French, German, Italian, Norwegian, Portugese, Spanish and Swedish in the sense that all accented characters in the letter frequency table are available as one AltGr keystroke.

For Turkish, lacking letters are: ğ (AltGr-shift-9 followed by g) and ş (AltGr-, followed by s). The important Turkish dotless ı is available as AltGr-m. (A large number of Turks live in Western Europe.)

Picture of Western European with altgr dead keys layout

The layout is called altgr-weur. For languages of Eastern Europe, someone (who understands those languages) could make an altgr-eeur.

Would you like to try the altgr-weur layout?

You will need superuser access and you will need to know where the X11 directory is on your distribution for this to work. If you know those, you can try the layout for yourself. (This is written in July of 2016 - please check if the Western European layout is available in the keyboard configuration tools before you start modifying files.)

Change your current directory (this directory is not the same on all distros) and start editing the file 'us' as superuser (you are now warned). (Use any other text editor you like: nano, gedit...)

cd /usr/share/X11/xkb/symbols
sudo vi us

Insert altgr-weur just below altgr-intl (or at the very bottom of the file)

cd /usr/share/X11/xkb/rules
sudo vi evdev.xml

Insert altgr-weur_evdev.xml just below the section of altgr-intl

sudo vi xorg.lst

Add the following line just below altgr-intl

altgr-weur us: English (Western European AltGr dead keys)

On some (Debian based) distros you could:

sudo dpkg-reconfigure xkb-data

But a reboot seems to work on all systems.