This page explains how to use my keyboard driver. You should probably read this before trying to tackle the full keystroke chart or table.

Windows keyboard layouts use Unicode, which is the industry standard that gives every character a number so computers can use them. You don't need to know anything about it to use the keyboard, other than to know that if it's not in Unicode's list of characters (and supported by the font you're using), then no keyboard layout can produce it. (Aside for techies: for anything accessed through a sequence of 2 or more keystrokes, i.e. practically everything, it also needs to be in the first 65536 character encodings, called the “Basic Multilingual Plane”. Nearly everything useful is, but this does mean that even if your font supports it, it's not really possible to add e.g. Egyptian Hieroglyphs to a keyboard layout).

The layout includes sequences to access:

  • Unusual letters. This includes archaic letters (e.g. for Medieval texts), special letters used only by certain languages or in certain contexts (e.g. IPA or in mathematics) and letters from other scripts (Greek, Cyrillic).
  • Letters with diacritics (e.g. accents) that have their own code point in Unicode (see below; these are called “precomposed characters”). Most characters with a recognised modern use can be entered this way.
  • (Advanced) Stand-alone diacritics that can be combined with other letters. Unicode provides separate encodings for each diacritic as a separate character, which can be combined with the previous character; these are called (imaginatively enough) Combining Characters. So for example, the letter “a” with an acute accent (á) has its own number in Unicode (00e1), and can be typed as a single character; or it can be achieved by typing the letter “a” followed by the combining character for an acute accent (which has its own number, 0301), which your word processor or other application knows to combine together into a single character. Normally this isn't needed, but for some really obscure letter-diacritic combinations, the Unicode designers have decided not to provide a separate encoding for the combined character (those 65536 characters fill up suprisingly quickly), so you need to use combining characters to get the character you want. This generally doesn't apply to anything used in a common living language primarily written using the Latin alphabet, but can be relevant for e.g. complex IPA or medieval stuff.
  • Symbols. Lots of these are encoded and many more could be, but there is no point in defining a keystroke combination for a symbol that's used so rarely that no-one will remember what keystroke generates it. So there are a good load of commonly used symbols, mathematical symbols, arrows, etc., but this is by no means a complete encoding of all the symbols available in Unicode.

Most characters are reached by a sequence of more than one keystroke. Each keystroke sequence starts with a key pressed in combination with AltGr, and is then optionally followed by other keys pressed without AltGr. For example, the character “ȅ” (e double grave) is reached by a three-key sequence: AltGr+` (AltGr plus the grave character), followed by ` (the grave character on its own), followed by the letter e (i.e. AltGr+` ` e). Alternatively the same character can be entered by first typing the letter e (which will appear on the screen), and then typing the double grave combining character, which is reached by AltGr+`, then `, then the space bar (i.e. AltGr+` ` <sp>).

Weird behaviours

If you enter a sequence which doesn't exist, then you will get two characters: one moderately random character representative of the dead key you had reached, and the final key you pressed. Just press backspace a couple of times and try again. I've tried to make the "moderately random" character as helpful as I can to hint at what the dead key might be for, but due to limitations in the way Windows keyboard drivers work, this character has to be one of the first 4096 Unicode characters, and different for every dead key combination, so it's not been possible to be logical in every case.

Sometimes the character you've just pressed isn't in the font you're using (especially likely if it's a weird symbol). Often the program you're using will then switch font to one that does have the symbol, and then leave you in that font. This is a bit strange, since it affects the subsequent characters you type. It does at least mean that the character is entered! A good workaround for occasional symbols with this problem is to type space, then move left, then type the symbol you want, then move right again. Or use your program's built-in symbol insertion tool — just because this keyboard layout has the symbol doesn't mean it's always the most convenient way of entering it!

Now for the details.

Core layout

These are the characters that can be reached with a single keystroke. Red cells indicate dead keys that start a longer sequence.

  <sp> ` 1 2 3 4 5 6 7 8 9 0 - = q w e r t y u i o p [ ] a s d f g h j k l ; ' # \ z x c v b n m , . /
Shift <sp> ¬ ! " £ $ % ^ & * ( ) _ + Q W E R T Y U I O P { } A S D F G H J K L : @ ~ | Z X C V B N M < > ?
AltGr <nbsp> ˋ ʜ ˇ ◌ͣ ± ä å é ® þ ü ú í ó ö « » á ß ð ſ ȝ ı ø œ ł ˛ ´ § α æ × © ç ŋ ñ µ ¸ ◌̣ ø
AltGr+Shift <sp> ¯ ¡ ¨ ϰ ¤ ˚ ˆ œ ʒ ◌̑ ˘ ² Ä Å É Þ Ü Ú Í Ó Ö Á Ð Ȝ ə Ø Œ Ł ◌̉ ɐ ˜ и Æ ÷ ¢ Ç Ŋ Ñ ° < ˙ ¿

The letter key combinations attempt to capture the most common characters used when writing in Western languages, plus a few of the most common symbols. Most of the accented characters are accessible via longer sequences which are sometimes more memorable. The goal is to include the most commonly used characters, prioritising those for which the full sequence is not obvious.

AltGr+S gives the new uppercase variant of the German Sharp S character, which is generally only supported in Windows 7+ (it was only adopted in unicode in 2008!)

A full set of quote marks is included. With these, you can disable your word processor's smart quotes feature, and never have your quotes mangled again (if that's a problem for you, or you need to switch between quoting styles).

En dash and em dash are available from AltGr+- and AltGr+_ respectively. AltGr+<sp> gives a non-breaking space.


To enter a character with a diacritic, type one of the following keys followed by the relevant character.

Prefix Symbol Name
AltGr+` ◌̀ Grave
AltGr+` ` ◌̏ Double grave
AltGr+¬ ◌̄ Macron
AltGr+¬ ¬ ◌̱ Line below
AltGr+" ◌̈ Diaeresis (umlaut)
AltGr+% ◌̊ Ring
AltGr+^ ◌̂ Circumflex
AltGr+^ ^ ◌̭ Circumflex below
AltGr+6 ◌̌ Caron
AltGr+( ◌̑ Inverted breve
AltGr+) ◌̆ Breve
AltGr+; ◌̨ Ogonek
AltGr+: ◌̉ Hook above (Vietnamese)
AltGr+' ◌́ Acute accent
AltGr+' ' ◌̋ Double acute accent
AltGr+~ ◌̃ Tilde
AltGr+~ ~ ◌̰ Tilde below
AltGr+~ ~ ~ ◌̴ Middle tilde
AltGr+, ◌̧ Cedilla
AltGr+, ◌̛ Horn (Vietnamese)
AltGr+, , ◌̦ Comma below
AltGr+. ◌̣ Dot below
AltGr+> ◌̇ Dot above
AltGr+/ ◌̸ Solidus/stroke

The combining characters for these diacritics can generally be reached by keying the prefix followed by a space. This will add the diacritic to the previously typed character. Many other obscure combining diacritics are available and listed in the full keystroke chart.

The Vietnamese horn uses the same prefix as cedilla. It's only used for the o and u characters, and the cedilla is only used with consonants, so this isn't a problem. To get the combining character for horn, type “AltGr+, '”

“AltGr+> i” and “AltGr+> j” produce an i and j respectively without a dot.

Multiple diacritics

There are many precomposed characters which involve more than one diacritic. To input these, type both prefixes before the character, remembering that AltGr is only used for the first keystroke.

The diacritics should be entered in the following order:

  • Top diacritics, highest first (grave, acute, hook above, caron, macron, tilde, diaeresis, circumflex, breve, dot above
  • Bottom diacritics (dot below)
  • Diacritics attached to the letter (horn, cedilla, ogonek, stroke)

So to enter “ằ” (a with breve and grave), type AltGr+` ) a.

Miscellaneous combining characters

These are prefixed with AltGr+7 (below the ampersand). Most of these are for medieval usage.

Key <sp> ` 1 2 3 4 5 6 7 8 9 0 - = q w e r t y u i o p [ ] a s d f g h j k l ; ' # \ z x c v b n m , . /
                            ◌̿     ◌ͤ ◌ͬ ◌ͭ   ◌ͧ ◌ͥ ◌ͦ       ◌ͣ   ◌ͩ     ◌ͪ         ◌̕     ◌͛ ◌ͯ ◌ͨ ◌ͮ     ◌ͫ      
Shift   ◌̅                     ◌̠                                                                        
AltGr+7 _
                          ◌̠ ◌̳                                                     ◌͓                
Shift                   ◌͙     ◌̲                                                                     ◌͢  

Unusual letters


Ligatures (e.g. &#x00e6) are entered by typing AltGr+& followed by the letters forming the ligature (e.g. AltGr+& a e). A number of IPA and archaic digraphs are reached this way. There are a load more not in this table which often require special font support.

Sequence Character Code Character
AltGr+& ! ! 203c Double exclamation mark
AltGr+& ! ? 203d Interrobang
AltGr+& q p ȹ 0239 Latin small letter qp digraph
AltGr+& t s ʦ 02a6 Latin small letter ts digraph
AltGr+& t ; c ʨ 02a8 Latin small letter tc digraph with curl
AltGr+& t @ s ʧ 02a7 Latin small letter tesh digraph
AltGr+& o e œ 0153 Latin small ligature oe
AltGr+& o u ȣ 0223 Latin small letter ou
AltGr+& O E Π0152 Latin capital ligature oe
AltGr+& O U Ȣ 0222 Latin capital letter ou
AltGr+& a e æ 00e6 Latin small letter ae
AltGr+& d ; z ʥ 02a5 Latin small letter dz digraph with curl
AltGr+& d @ z ʤ 02a4 Latin small letter dezh digraph
AltGr+& d z ʣ 02a3 Latin small letter dz digraph
AltGr+& d b ȸ 0238 Latin small letter db digraph
AltGr+& f @ n ʩ 02a9 Latin small letter feng digraph
AltGr+& h v ƕ 0195 Latin small letter hv
AltGr+& H V Ƕ 01f6 Latin capital letter hwair
AltGr+& l s ʪ 02aa Latin small letter ls digraph
AltGr+& l @ z ɮ 026e Latin small letter lezh
AltGr+& l z ʫ 02ab Latin small letter lz digraph

Unicode contains a number of ligatures which are for compatibility purposes and should not be used in regular text. E.g. to enter “ij” in Dutch text, just type “i j”, not “AltGr+& i j”, even though a special character does exist for this.

Hooked letters

Letters with a hook are entered with the prefix AltGr+: or AltGr+: :. Letters with a curl are entered with the prefix AltGr+; ;.

Key <sp> ` 1 2 3 4 5 6 7 8 9 0 - = q w e r t y u i o p [ ] a s d f g h j k l ; ' # \ z x c v b n m , . /
  ◌̉       ɝ                   ʠ ɽ ƭ ƥ     ʂ ɗ ƒ ɠ ɦ   ƙ ɭ ˞       ȥ   ƈ ʋ ɓ ɲ ɱ ơ    
Shift ◌̉             â       Ă         Ƭ Ƥ       Ɗ Ƒ Ɠ   Ƙ   Ƴ ʮ     Ȥ   Ƈ Ʋ Ɓ Ɲ      
AltGr+: :
                              ɋ   ɚ ɻ ʈ ƴ                 ɖ     ɧ               ʐ       ɳ   ◌̡ ◌̢  
Shift                   ƺ         Ɋ     ɿ Ʈ Ƴ                     ʛ ʯ         ƺ                        
AltGr+; ;
          ʓ                           ȶ ỿ           ʆ ȡ       ʝ   ȴ         ʑ   ɕ   ȵ        
Shift                   ʓ                                                                        

Small capitals

Small capitals can be reached with the prefix AltGr+5 (aide-memoir: looks a bit like an S).

Key <sp> ` 1 2 3 4 5 6 7 8 9 0 - = q w e r t y u i o p [ ] a s d f g h j k l ; ' # \ z x c v b n m , . /
                                          ȝ <nbsp> ®                                       ©         Ø
Shift                 æ Ð           ʀ ʏ ɪ     ɢ ʜ ʟ ʛ ʁ       ʙ ɴ      

Turned letters and IPA

These are reached via AltGr+@. It does not include all the IPA alphabet, since many of these letters can be reached through other means (e.g. hooked letters, small capitals).

Key <sp> ` 1 2 3 4 5 6 7 8 9 0 - = q w e r t y u i o p [ ] a s d f g h j k l ; ' # \ z x c v b n m , . /
  ◌͡ ǁ     ɜ   ʡ ʢ ◌̚ ◌̼ ʭ ʘ   ǂ ɑ ʍ ə ɹ ʇ ʎ ʊ   ɵ ɸ ◌̪ ◌̺ ɐ ʃ     ɡ ɥ ɟ   ɬ ˑ ʼ ◌̻   ʒ ɣ ɔ ʌ     ɯ ˌ ◌̞ ʕ
Shift ◌͡   ǃ   ɞ   ʖ     ◌̫ ◌̜ ◌̹ ◌̟ ɒ ʬ ɘ ɾ θ       ɤ   ◌̘ ◌̙ ʅ       ʄ   ː ɼ ◌̴ ǀ   ◌̽ ʗ Ʌ     ɰ ˈ ◌̝ ʔ
AltGr+@ @
                                  ɛ ɼ                                                            
Shift                                   ɺ                                                            

Other letters

A number of miscellaneous letters are reached with the prefix AltGr+*. This includes a number of IPA letters that have become used for minority scripts and have uppercase forms.

Key <sp> ` 1 2 3 4 5 6 7 8 9 0 - = q w e r t y u i o p [ ] a s d f g h j k l ; ' # \ z x c v b n m , . /
          ɛ                   ɒ ƿ ǝ     ʊ ɩ         ɑ ʃ ɖ ſ ƣ               ʒ ɣ ɔ   ƞ       ɂ
Shift         Ɛ       Œ ɘ         Ƿ Ə   Ʀ Ʊ Ɩ         Ʃ Ɖ   Ƣ     ĸ         Ʒ Ɣ Ɔ   Ƞ       Ɂ

Greek letters

These are reached using the prefix AltGr+\.

Key <sp> ` 1 2 3 4 5 6 7 8 9 0 - = q w e r t y u i o p [ ] a s d f g h j k l ; ' # \ z x c v b n m , . /
  ◌̩ ◌̔ ϙ ϛ ϝ ϟ ϡ   ϗ             ς ε ρ τ υ θ ι ο π     α σ δ φ γ η ξ κ λ   ◌̓     ζ χ ψ ω β ν μ      
Shift ◌̩   Ϙ Ϛ Ϝ Ϟ Ϡ   Ϗ               Ε Ρ Τ Υ Θ Ι Ο Π     Α Σ Δ Φ Γ Η Ξ Κ Λ         Ζ Χ Ψ Ω Β Ν Μ      

Precomposed greek characters with diacritics have not been included at this stage, so combining characters are required. “AltGr+\ '” and “AltGr+\ `” give the combining characters for the old Greek breathing marks; to get the modern tonos, use the regular acute diacritic (AltGr+' <sp>).

In the numbers are included several archaic Greek characters now used only for Greek numerals and mathematics.

Cyrillic letters

These are reached using the prefix AltGr+|. A phonetic layout is used, rather than the standard Russian keyboard, since it is intended for the typing of occasional characters.

Key <sp> ` 1 2 3 4 5 6 7 8 9 0 - = q w e r t y u i o p [ ] a s d f g h j k l ; ' # \ z x c v b n m , . /
  ◌̍ ё                       ъ я ш е р т ы у и о п ю щ а с д ф г ч й к л ь ж   э з х ц в б н м      
Shift ◌̍ Ё   ◌̎                   Ъ Я Ш Е Р Т Ы У И О П Ю Щ А С Д Ф Г Ч Й К Л Ь Ж   Э З Х Ц В Б Н М      

Cyrillic letters not used in Russian are not included at present (mostly because I don't know where to put them!)

Mathematical letters

This includes a number of variants of Greek letters, and four Hebrew letters, used in mathematics.

Key <sp> ` 1 2 3 4 5 6 7 8 9 0 - = q w e r t y u i o p [ ] a s d f g h j k l ; ' # \ z x c v b n m , . /
                                  ϵ ϱ     ϑ             ϲ   ϕ     ϰ                   ϐ          
Shift                                       ϴ           Ϲ                                  

Superscripts, subscripts and modifier letters

Superscripts and modifier letters can be reached through the prefix AltGr++.

Subscripts use the prefix AltGr++ _.

Key <sp> ` 1 2 3 4 5 6 7 8 9 0 - = q w e r t y u i o p [ ] a s d f g h j k l ; ' # \ z x c v b n m , . /
      ¹ ² ³   ʷ ʳ ʴ ʸ ˔ º ʹ ˓ ˒ ª ˢ ˕   ˠ ʰ ʲ   ˡ ʽ ʼ     ˣ   ˬ   ˭     ʰ
Shift       ˮ     ˀ ˁ Ƕ   0       ʶ ʵ   ˄   ʺ ʿ ʾ     ˅ ˪ ˫ ʱ               ˟ ˥ ˦ ˧ ˨ ˩ ˂ ˃ ˤ
AltGr++ m
                          ˗ ˭                                                                      
Shift                           ˖                                                                      
AltGr++ _


Currency symbols

These are entered following the prefix AltGr+$.

Key <sp> ` 1 2 3 4 5 6 7 8 9 0 - = q w e r t y u i o p [ ] a s d f g h j k l ; ' # \ z x c v b n m , . /
  ¤                                                   ֏                       ¢              
Shift ¤                               ¥                                          

It includes keys for the new Indian Rupee symbol (AltGr+$ R) and Turkish Lira symbol (AltGr+$ t), although these are not yet well supported in fonts.


A number of basic fractions can be reached by typing AltGr+% followed by the top and bottom numbers. E.g. to enter one half (½), type AltGr+% 1 2.

This only works for fractions in unicode and supported by your font: one half, one quarter and three quarters are pretty universally supported; thirds, fifths, sixths and eighths are less well supported and might look a bit strange. You might be better off using a native formatting feature in your word processor.

Miscellaneous symbols

The most common symbols are found using AltGr+#.

Key <sp> ` 1 2 3 4 5 6 7 8 9 0 - = q w e r t y u i o p [ ] a s d f g h j k l ; ' # \ z x c v b n m , . /
  ¦ 1 2 3       8     <shy>             ° §                       ·

Note that the broken bar symbol (in normal UK keyboards reached with AltGr+`) is here, reached as AltGr+# `. It's not a very commonly used symbol and no-one can seem to remember what it's for!

“AltGr+# -” gives you a soft hyphen, which turns into a hyphen only when wrapping across a line.

Not all symbols are well supported by fonts. I've found the smileys are poorly supported for example, and you're better off using Microsoft Word's autocomplete sequence for “:-)” and “:-(”.

Mathematical symbols

The AltGr+= prefix gives access to a number of common mathematical symbols. A more comprehensive encoding scheme (involving longer sequences) almost certainly exists for these, but I haven't worked one out yet. However, you usually want to be using a specialist editor when entering mathematical equations anyway, which will have more sophisticated support for complex mathematical symbols.

Key <sp> ` 1 2 3 4 5 6 7 8 9 0 - = q w e r t y u i o p [ ] a s d f g h j k l ; ' # \ z x c v b n m , . /
Shift                     ±                                

The following additional key sequences can be used for common characters:

Prefix Symbol Name
AltGr+~ = 2248 Almost equal to
AltGr+/ = 2260 Not equal to
AltGr+/ < 226e Not less-than
AltGr+/ > 226f Not greater-than

Ringed symbols

To get ringed, double-ringed and black-on-white ringed symbols, use “AltGr+5 o”, “AltGr+5 p” and “AltGr+5 b” respectively. Font support may vary.

AltGr+5 o
Key <sp> ` 1 2 3 4 5 6 7 8 9 0 - = q w e r t y u i o p [ ] a s d f g h j k l ; ' # \ z x c v b n m , . /
AltGr+5 p
AltGr+5 b


A variety of arrows are available from the AltGr+< prefix. Again, font support may vary.

Key <sp> ` 1 2 3 4 5 6 7 8 9 0 - = q w e r t y u i o p [ ] a s d f g h j k l ; ' # \ z x c v b n m , . /

Single and double arrows can also be reached more memorably. Follow the prefix AltGr+<, AltGr+> AltGr+^ or AltGr+6 (for left, right, up and down respectively) with - or =.

Spaces and control characters

AltGr+Shift+<sp> gives access to spaces of different widths, as well as the non-breaking hyphen.

Sequence Code Character
AltGr+Shift+<sp> <sp> 202f Narrow no-break space
AltGr+Shift+<sp> 3 2004 Three-per-em space
AltGr+Shift+<sp> 4 2005 Four-per-em space
AltGr+Shift+<sp> 6 2006 Six-per-em space
AltGr+Shift+<sp> 0 200b Zero width space
AltGr+Shift+<sp> - 2011 Non-breaking hyphen
AltGr+Shift+<sp> = 205f Medium mathematical space
AltGr+Shift+<sp> t 2009 Thin space
AltGr+Shift+<sp> p 2008 Punctuation space
AltGr+Shift+<sp> f 2007 Figure space
AltGr+Shift+<sp> h 200a Hair space
AltGr+Shift+<sp> n 2002 En space
AltGr+Shift+<sp> N 2000 En quad
AltGr+Shift+<sp> m 2003 Em space
AltGr+Shift+<sp> M 2001 Em quad

It also gives access to some special unicode control characters. If you don't know what these do already then you probably shouldn't use them!

Sequence Code Character
AltGr+Shift+<sp> w 2060 Word joiner
AltGr+Shift+<sp> r 200f Right-to-left mark
AltGr+Shift+<sp> j 200d Zero width joiner
AltGr+Shift+<sp> l 200e Left-to-right mark
AltGr+Shift+<sp> z 200c Zero width non-joiner
AltGr+Shift+<sp> c 034f Combining grapheme joiner

Other characters

There are plenty more characters which I haven't listed here. Go to the full chart or table to find them!