US International++

As anyone learning a language (or who speaks multiple languages) will tell you, one of the most annoying things to deal with is typing in a foreign language on a computer. Using the default US Standard keyboard layout, you're stuck using alt codes to input characters outside of English which are difficult to remember and use. You can use a keyboard layout for that language, which may not write in English well and likely won't match the letters printed on your keyboard. This leaves you switching between your English layout and your foreign language layout, which is time consuming and requires you to learn two separate layouts. The third main option (assuming your foreign language uses Latin-based characters) is to use US International. US International allows you to easily enter commonly used foreign characters while still preserving the QWERTY layout that you are used to and is printed on your keyboard. This is great in principle; however, there are a few places where it falls short on execution.

Default ms us-international keyboard layout
Red represents a "dead key", where pressing the key does not print the character, but waits for the next key and combines with it (e.g. ` + a = à). Blue represents the character that will print if right Alt (a.k.a. AltGr) is held.

Without pressing AltGr or any modifier, `, ', and ^ are dead keys. This opposes the idea of a transparent addition of extra characters, as pressing ' does not create an apostrophe, but instead waits for another keypress. This is easy to forget and mistakes are easy to make, not to mention is problematic if someone else uses the keyboard and expects the keys to work as they do in US Standard. Additionally, not all of the extra characters are intuitive. To make !, you use shift, but to make ¡, you use AltGr only (not shift). The range of international characters available is also surprisingly small (doesn't support Romanian or Polish), given that is the layout's primary purpose.

With this said, I humbly present my alternative: the US International++ layout.

US International++ keyboard layout with AltGr depressed
Keys with AltGr depressed. Grey represents dead keys.
US International++ keyboard layout with AltGr and Shift depressed
Keys with Shift and AltGr depressed. Again, grey represents dead keys.

Although not shown, the keys without AltGr depressed work exactly the way they do in US Standard. Exactly as you'd expect. There is no need to switch to US Standard layout. Ç has been moved to C, dead keys have been added for cedilla (į, ç, ę, etc), ˘ (ŭ, ă, ĭ, etc), · (ż), / (ø, ł, etc), and - (ɨ). Ț, Ș, Ă, Î, and  have been added for Romanian (the Romanian letters are in their normal placement from the Romanian Standard layout.) Ź has been added for Polish and is accessible from the ' dead key. Aside from the additions and some minor placement changes where I felt it was more logical, the layout is very similar to US International, so if you are already used to that layout, it is an easy switch.

Without further ado, here's the file:

Windows: US International++

To install, simply unzip the file, run Setup.exe, and US International Plus will be added to your languages. You can (and should) set it to your default input in Control Panel -> Languages (exact steps vary depending on version of Windows).

Linux: US International++

To install, unzip the file and replace your xkb files with the ones from the zip. For added safety and because these are text files and not binaries, you can diff them and simply add the lines you need for US-Intl++. For Ubuntu 20.04, the us file is located at /usr/share/X11/xkb/symbols/us, evdev.lst is at /usr/share/X11/xkb/rules/evdev.lst and evdev.xml is at /usr/share/X11/xkb/rules/evdev.xml. Your distribution may differ.

Note - due to some complexities with how dead keys work in xkb, the Linux version has ɨ accessible through the / deadkey instead of -. Also, AltGr plus , is only cedilla (e.g. ȩ) and AltGr plus ; is ogonek (e.g. ę). The Windows version may be updated to match this in the future.

categorized as: keyboard-layouts