Upload failed. Maybe wrong permissions?

User Tools

Site Tools

Create Your Own Windows Keyboard

The Problem

You may be satisfied with a US International keyboard layout which lets you type letters like á é í ó ú ý ä ë ï ö ü ÿ à è ì ò ù ã ñ õ â ê î ô û ç (and probably nothing more). It must be nice to be born in America and forget about diacritics, not to mention non-Latin scripts, but people are using computers everywhere, and… oh, I know, there are national layouts. Cool. Now, think about my problem. I’m Hungarian, so I need letters á é í ó ö ő ú ü ű. I’m learning Latvian, so I need also ā č ē ģ ī ķ ļ ņ š ū ž. I wrote a novel that took place in Prague, so I needed á č é ě í ň ó ř š ť ú ů ý ž. I wrote one that plays on Iceland, so I needed á æ ð é í ó ö þ ú ý. Together with Hungarian, since the novel itself is in Hungarian of course. I wrote one that’s in France, so I needed à â ç ê è ë î ô û ÿ. I’m occasionally writing articles that mention Estonian names, so I need ä ö ü õ. Now I’m writing a novel that takes place in the future Galaxy, and there are two languages (so far) created by myself that employ a lot of diacritics, including letters like ḱ ń ś ẃ ẁ ẅ ŵ ý ỳ ÿ ŷ ỹ and others (their meaning is not defined, and the choice was made by keeping in sight what can be expected by a modern publishing house). And I’m a linguist, so I need a lot of diacritic letters, including hundreds of those not included in Unicode. And other scripts of course.
  How many do you need of the symbols invented for writing by humans is up to you. The question is how to reach them from your keyboard.

Old Solutions

There was a question in a language group about how users type the diacritics and other special symbols they need. The answers can be sorted in the following types:
  – those who use a layout for their mother tongue and that’s enough for them;
  – those who speak more languages so they use their layouts and that’s enough for them;
  – those who use a layout with several dead keys, like US International;
  – those who use an online typing aid like TypeIt;
  – and those who made some shortcuts.

Now, all of these solutions, except the last one, may be very useful if you are satisfied with something designed by someone else, but only in that case. For example, if you need to type in Turkish, you can choose either a layout that looks like

 A S D F G H J K L Ş İ
  Z X C V B N M Ö Ç

or another one that looks like

 U İ E A Ü T K M L Y Ş X
  J Ö V Ç C Z S B

That’s all. Not much variety, isn’t it? If you are, say, a German speaker, you may be accustomed to a QWERTZ keyboard and you may look for letters Ö and Ü at completely different places. But now you are forced to type them at somewhere you never thought them to be and you’ll feel uncomfortable. And if you choose the second layout, you may have troubles with typing even HELLO.
  But your keyboard is your keyboard. There may be a solution. There is. Make some shortcuts. Or make a completely different, personally customized keyboard.

Your First Own Keyboard

(Note: this isn’t the only way to create your own keyboard. There are more. I feel this the simplest I know.)

Step one: install Autohotkey. It’s a free keyboard macro program for Windows.

Step two: turn any national keyboard layout off. Use the plain English layout.

Step three: open a new document in a text editor that creates plaintext (txt) files.

Step four: copy this line into it.

$x:: send P

Step five: save the document with the ending .ahk but be careful to choose the format UTF-8 with BOM. This will be important later. How to do that depends on the editor you’re using. For example, on Notepad++, there is an Encoding menu you can choose from. Locate the file in your file manager and double click on it.

Step six: check if you see a green icon with a white letter H to appear on your tray. If it’s missing, something was wrong. If it appears, go back to Notepad and try pressing key x. Instead of a letter x, a letter P should appear. If that’s not the case, something was wrong.

Step seven: right click on the icon and choose Exit from the menu.

Now, this was the first try. I mean, now you know most of what you’ll need. Try experimenting with it. Add a number of lines looking like the one you tried. First, a symbol $ (I forgot long ago what’s it for), then the key to remap, then two colons and the send commands :: send , a following space, and then the character you want to type. Or more characters. You can define sch or or even long texts on a single key.
  How to reach characters that aren’t on your keyboard yet is another question. For example, you can use Unicode-Table.com or a similar site to copy from.

To reach shifted key combinations, use the following symbols:

+ for Shift
^ for Ctrl
! for Alt
# for Windows

before the key. For example, $!c:: send č will map Alt C to a letter č. To reach function keys and other parts of the keyboard, enclose their names in braces like {f10}. You can find a more detailed description on this page.

You can now define a complete layout. If you need, say, a layout with the letters å č ë ń ŝ ţ ỹ, choose a key or key combination for each one and add a line for them. Any time you need more characters, you can add them. If some of them is no longer needed, you can remove them. If you have several projects with different character set requirements, you can have more ahk files.

A More Complex Way

Autohotkey is a complete programming language. This means you can do practically anything. For example, you can add automatic uppercase at the beginning of a sentence. (I have it on my keyboard.) You can define several layouts and a single key to page through them, or several keys to switch. (I have both: three keys are defined for Latin, Cyrillic and Greek, respectively, and the Latin key switches between Hungarian and Latvian.) You can create dead keys that modify the previously typed key. (I have some 30 of them: one for acute accent á ć é ǵ í ḱ ĺ…, one for tilde ã ẽ ĩ ñ õ ũ ỹ… and so on. I have characters so complex that they need 3-4 modifier keys.) You can store frequently used phrases like addresses, names etc. in ahk files, mapped on keys, and reach them quickly. (Something I didn’t do.)