Write most latin script based languages with special characters quickly and easily on a US layout keyboard in Windows

Update: Since I wrote this post, better systems made by other people have been developed. Since I don’t plan to continue development of Intuitive Keyboard Expander, I would suggest instead to check out WinCompose, which is the best such system I’ve found, and the one I currently use.

Do you have a US Standard layout keyboard, but need to write in another language which uses special letters or diacritics? Possibly even various languages with their own different latin script based characters? If you want the quickest, most versatile and intuitive way right away, you can skip the rest of this post and download Intuitive Keyboard Expander. If you want to know how it works, as well as other more limited ways to write such characters, then keep on reading.

Keyboard Language Settings

On Windows systems, perhaps the most used way to type another language’s special letters and characters is to change the keyboard language (layout) configuration. In the Regional and Language Options in the Control Panel, you can add other languages’ layouts, and change between them by either pressing the Alt+Shift key combination, or manually on the Languages toolbar, which normally appears on the Taskbar when you have more than one language installed. The shortcomings are that you need to activate the corresponding layout each time you want to change the language you’re using, and that you must know by heart which keys do what on each layout (for example, the ; key on a US Standard keyboard will write ñ instead on a Latin American layout, and most of the symbols are in different keys).

Character Map

Another, more cumbersome way, is to copy the needed characters from the Character Map (in Accesories->System Tools from the Start Menu). This way you can get practically any character you want, at the cost of having to look for it, copy it, and paste it on your document each time you need to use it. For typing lots of text, or just in a language with a lot of diacritics and special letters, this is obviously not practical because of the sheer amount of time you need to get each one of these characters.

RichEdit-Enabled Programs

In some programs which use the RichEdit control, such as Wordpad, you can enter many special characters by writing their Unicode Hexadecimal Code, followed by the Alt+X key combination. The disadvantages are that it doesn’t work in most programs, you have to actually know the Hexadecimal Code of every character you’re going to use, and that you can’t write numbers or the letters af immediately preceding the special character, because they’re going to be treated as part of the Code.

Alt Codes

A more technical, yet savvy way, is to use what is commonly known as the “Alt Codes”. There are actually two types of “Alt Codes”, the Decimal and the Hexadecimal. The Decimal codes work by default on most Windows installations, but the problem is they’re not Universal because they depend on your computer’s Code Page (basically the list of allowed characters on each specific language version of the Operating System, which has actually become obsolete thanks to the advent of Unicode, but for legacy reasons it’s still embedded in Windows up to this day). This means that two computers configured in different languages will write different characters for each Code. To use them you need to hold the Alt key while typing the Decimal Code of the character on the Numeric Keypad. Of course you need to know the Decimal Code for each character.

The Hexadecimal “Alt Codes” work in a very similar way to the Decimal ones, but with a few changes. First of all, they’re Universal, which means a given Code will type the same Unicode character on any computer, regardless of language settings. Also you have a way larger set of possible characters you can input, because it supports any Unicode character. The disadvantages would be that it’s not enabled by default in many versions of Windows, so you would need to add a key to the Registry for it to work (EnableHexNumpad as a REG_SZ type with a value of 1, in HKCU\Control Panel\Input Method\), and that as with the Decimal variant, you would need to know the Hexadecimal Code for each character. To use them, you need to hold the Alt key while typing first the + Key on the Numeric Keypad, and then the Hexadecimal Code anywhere on the keyboard.

Intuitive Keyboard Expander

So… is there a better way to type special characters from other languages? Yes, and it’s called Intuitive Keyboard Expander. What this free program does is transform some of your normal keys into special modifiers, much like Ctrl or Alt, but without losing the key’s functionality. For example, if you hold the (apostrophe) key while typing a letter, you will get that letter with an acute accent, as in áóúśź, but if you just release it without pressing other letters, you will get its intended function, in this case (apostrophe). All the modifiers are very intuitive and easy to remember (for example` for Grave Accents, , (comma) for Cedillas and Ogoneks, / for diagonal strikes as in øł¢, : for diaeresis and umlauts, etc.), and all in all they allow you to write more than 70 different latin script based languages.

This program works by using the Windows API to send Unicode characters as virtual keys. There are only two minor disadvantages, which are that you’ll need to hold the right arrow key to use the autorepeat functionality of the keys assigned as special modifiers, and that some key combinations may not work on cheaper keyboards because of key ghosting. The best of all is that it’s Open Source, which means you can check and even compile the code yourself, if you aren’t too trusting. Anyway if this sounds like a program that could be useful to you, check the full documentation and download it from the official website.