[Home] [Purchase] [Download] [Manual] [Acknowledgements] [Sitemap] [Release Notes] [FAQ]

[ Up ] [ Swapping Caps Lock and Ctrl ] [ Disabling the WINDOWS key ] [ Mapping multimedia/web keys to numeric keypad ] [ Assigning characters to multimedia/web keys ] [ Multi-lingual English/French keyboard ] [ Multi-alphabet Serbian Cyrillic/Latin keyboard ] [ Tri-lingual Serbian Cyrillic / Latin / Greek keyboard ] [ Replacing AltGR with Kana ] [ French improved keyboard ] [ Multi-lingual Russian phonetic / US English keyboard ] [ Multi-lingual Bulgarian phonetic / US English keyboard ] [ Colemak keyboard ] [ Multi-lingual Hindi / US English keyboard ] [ Multi-lingual Hebrew / US English keyboard ] [ French multilingual keyboard ] [ Emulating Compose key using chained dead keys ] [ US English with all Latin accents using chained dead keys ] [ Mac Boot Camp: fixed positions of Alt, Windows and Ctrl keys ] [ Using NLS functions to simulate the "Context menu" key ] [ Using NLS functions to make Caps Lock and Alt Gr share the same key ] [ Using NLS functions to simulate togglable ROYA/LOYA modifier keys ] [ Sanskrit keyboard with Vedic extensions ]

Example - US English keyboard with all Latin accents using chained dead keys

Installer package: KbdEditInstallerUSChainedDeadKeyMultiAccent.exe

Layout file: US Chained Dead Key Multi Accent.zip

Dead key table file: Chained Dead Table All Accents.zip

You can use the installer package to deploy this keyboard layout without any restrictions. Free Demo version can be used to make changes and test them. To deploy a modified version, a Premium, Personal or Lite edition is needed.

The Unicode standard defines many accented versions of Latin letters. Most standard Windows layouts support at least some accents through dead keys, depending on the needs of particular language.

The standard also defines many double accents consisting of two simple accents simultaneously applied to a letter. These accents are heavily used in  Vietnamese alphabet, where five tone marks (grave  ̀ , hook  ̉ , tilde  ̃  , acute  ́  and dot below   ̣  ) can be combined with already accented letters to produce final letters like ậ or ữ (and several other combinations). Double accents can also appear in Pinyin Chinese Romanization ( ǖ ǘ ǚ ǜ ).

Double accents are generally not available in standard Windows keyboards. An earlier KbdEdit example - French multilingual keyboard - does a decent job of mapping a rich subset of double accents to custom dead keys. However, it suffers from a typical limitation of "classic" dead keys - each double accent is mapped to a distinct VK/modifier position. This limits the number of accessible double accents and forces them to be mapped to counter-intuitive key combinations that are difficult to memorize.

This example goes one step further by supporting all "conventional" single accents, plus all double-accent combinations, through a convenient subset of easy-to-memorize dead keys. Chained dead keys are used to produce double accents using two-key sequences of their single-accent components (see further below for a complete table of double accents). This way, a total of 62 accents (26 single + 36 double) is produced using only 26 dead keys.

The image below shows the positions of accents that have direct high-level dead key mappings. They are mapped to AltGr and Shift+AltGr positions, leaving the original US English Base and Shift positions intact. Where the same accent exists in both "above" and "below" version (like 'Diaeresis'  ̈  and 'Diaeresis Below'  ̤ ), an effort has been made to map the "below" accent to AltGr and the "above" counterpart to AltGr+Shift position of the same key.

US with all accents on chained dead keys
(click to see full sized image)

If you normally use the standard US English layout, you can use the attached layout file US Chained Dead Key Multi Accent.zip without modifications (the examples page explains how). If you are not happy with the placement of accent dead keys, you can use the high-level editor to rearrange them to your taste.

If you use a different layout, you will first have to use the Import dead char table from KLD file command in the Dead char editor to import the attached dead table file Chained Dead Table All Accents.zip. You should then use the high-level editor to map the accents you are interested in to VK/modifier positions of your choice.

Unless you specifically want to have double accents available through a single keystroke, you should create dead-key mappings only for the single accents - the double accents are available by default through chaining and don't require any additional effort.

First-level dead keys - single accents

The example supports 26 "single" accents, each of which is mapped to its own VK key / modifier position in the high-level editor.

Each dead character is represented by the Unicode character for the accent it represents. E.g. dead character for accent 'Breve' is Unicode character 0306  ̆  'Combining Breve'.

This table shows all single accents, along with the keystrokes to produce them:

Dead character Mapped to Sample transformation
From To
U0301  ́ Acute  ́ AltGr+' U0061 a U00E1 á
U0306  ̆ Breve  ̆ AltGr+Shift+2 U0061 a U0103 ă
U032E  ̮ Breve Below  ̮ AltGr+2 U0068 h U1E2B ḫ
U030C  ̌ Caron  ̌ AltGr+\ U0061 a U01CE ǎ
U0327  ̧ Cedilla  ̧ AltGr+4 U0063 c U00E7 ç
U0302  ̂ Circumflex  ̂ AltGr+Shift+6 U0061 a U00E2 â
U032D  ̭ Circumflex Below  ̭ AltGr+6 U0064 d U1E13 ḓ
U0326  ̦ Comma Below  ̦ AltGr+, U0073 s U0219 ș
U0308  ̈ Diaeresis  ̈ AltGr+Shift+3 U0061 a U00E4 ä
U0324  ̤ Diaeresis Below  ̤ AltGr+3 U0075 u U1E73 ṳ
U0307  ̇ Dot Above  ̇ AltGr+Shift+. U0061 a U0227 ȧ
U0323  ̣ Dot Below  ̣ AltGr+. U0061 a U1EA1 ạ
U0300   ̀ Grave  ̀ AltGr+Shift+' U0061 a U00E0 à
U0309  ̉ Hook Above  ̉ AltGr+Shift+, U0061 a U1EA3 ả
U031B  ̛ Horn  ̛ AltGr+Shift+4 U006F o U01A1 ơ
U0311  ̑ Inverted Breve  ̑ AltGr+Shift+1 U0061 a U0203 ȃ
U0331  ̱ Line Below  ̱ AltGr+Shift+- U0062 b U1E07 ḇ
U0304  ̄ Macron  ̄ AltGr+- U0061 a U0101 ā
U00B7  · Middle Dot  · AltGr+Shift+/ U006C l U0140 ŀ
U0328  ̨ Ogonek  ̨ AltGr+0 U0061 a U0105 ą
U02BE  ʾ Right Half Ring  ʾ AltGr+Shift+0 U0061 a U1E9A ẚ
U030A  ̊ Ring Above  ̊ AltGr+Shift+o U0061 a U00E5 å
U0325  ̥ Ring Below  ̥ AltGr+o U0061 a U1E01 ḁ
U002F  / Stroke / AltGr+/ U0061 a U2C65 ⱥ
U0303   ̃ Tilde  ̃ AltGr+Shift+` U0061 a U00E3 ã
U0330  ̰ Tilde Below  ̰ AltGr+` U0065 e U1E1B ḛ

Second-level dead keys - double accents

Further 36 dead characters represent double accents produced by chaining two simple accents together.

Since Unicode generally does not define convenient single characters for complex accents, and the corresponding dead characters are not meant to be directly mapped to VK code / modifier positions anyway, numeric values for the chained dead characters are chosen arbitrarily from the "Private use" area (E000 - E036).

In most cases, chaining sequences are symmetrical: e.g. double accent 'Breve And Acute' can be produced by either 'Breve' followed by 'Acute' or 'Acute' followed by 'Breve'. The only exception is the Macron / Diaeresis pair - interestingly, "Diaeresis And Macron" and "Macron And Diaeresis" are two distinct accents, hence 'Macron' followed by 'Diaeresis' produces different result from 'Diaeresis' followed by 'Macron'.

Also note that 'Double Acute', even though technically not a double accent, is produced by pressing 'Acute' twice rather than being given its own first-level dead character. Likewise, 'Double Grave' is produced by pressing 'Grave' twice. This way, two VK code / modifier positions are saved in the high-level editor. Of course, if you prefer these accents to be produced by a single keystroke, you can easily assign them to key/modifier positions of their own.

This table shows all double accents supported by the example, along with the chaining sequences to produce them:

Dead character Mapped to Sample transformation
From To
UE011 Acute And Dot Above  ́̇ AltGr+'  AltGr+Shift+.
AltGr+Shift+.  AltGr+'
U0073 s U1E65 ṥ
UE01A Breve And Acute  ̆́ AltGr+Shift+2  AltGr+'
AltGr+'  AltGr+Shift+2
U0061 a U1EAF ắ
UE01E Breve And Dot Below  ̣̆ AltGr+Shift+2  AltGr+.
AltGr+.  AltGr+Shift+2
U0061 a U1EB7 ặ
UE01B Breve And Grave  ̆̀ AltGr+Shift+2  AltGr+Shift+'
AltGr+Shift+'  AltGr+Shift+2
U0061 a U1EB1 ằ
UE01C Breve And Hook Above  ̆̉ AltGr+Shift+2  AltGr+Shift+,
AltGr+Shift+,  AltGr+Shift+2
U0061 a U1EB3 ẳ
UE01D Breve And Tilde  ̆̃ AltGr+Shift+2  AltGr+Shift+`
AltGr+Shift+`  AltGr+Shift+2
U0061 a U1EB5 ẵ
UE012 Caron And Dot Above  ̌̇ AltGr+\  AltGr+Shift+.
AltGr+Shift+.  AltGr+\
U0073 s U1E67 ṧ
UE00A Cedilla And Acute  ̧́ AltGr+4  AltGr+'
AltGr+'  AltGr+4
U0063 c U1E09 ḉ
UE00D Cedilla And Breve  ̧̆ AltGr+4  AltGr+Shift+2
AltGr+Shift+2  AltGr+4
U0065 e U1E1D ḝ
UE015 Circumflex And Acute  ̂́ AltGr+Shift+6  AltGr+'
AltGr+'  AltGr+Shift+6
U0061 a U1EA5 ấ
UE019 Circumflex And Dot Below  ̣̂ AltGr+Shift+6  AltGr+.
AltGr+.  AltGr+Shift+6
U0061 a U1EAD ậ
UE016 Circumflex And Grave  ̂̀ AltGr+Shift+6  AltGr+Shift+'
AltGr+Shift+'  AltGr+Shift+6
U0061 a U1EA7 ầ
UE017 Circumflex And Hook Above  ̂̉ AltGr+Shift+6  AltGr+Shift+,
AltGr+Shift+,  AltGr+Shift+6
U0061 a U1EA9 ẩ
UE018 Circumflex And Tilde  ̂̃ AltGr+Shift+6  AltGr+Shift+`
AltGr+Shift+`  AltGr+Shift+6
U0061 a U1EAB ẫ
UE003 Diaeresis And Acute  ̈́ AltGr+Shift+3  AltGr+'
AltGr+'  AltGr+Shift+3
U0069 i U1E2F ḯ
UE004 Diaeresis And Caron  ̈̌ AltGr+Shift+3  AltGr+\
AltGr+\  AltGr+Shift+3
U0075 u U01DA ǚ
UE005 Diaeresis And Grave  ̈̀ AltGr+Shift+3  AltGr+Shift+'
AltGr+Shift+'  AltGr+Shift+3
U0075 u U01DC ǜ
UE002 Diaeresis And Macron  ̈̄ AltGr+Shift+3  AltGr+- U0061 a U01DF ǟ
UE006 Dot Above And Macron  ̇̄ AltGr+Shift+.  AltGr+-
AltGr+-  AltGr+Shift+.
U0061 a U01E1 ǡ
UE013 Dot Below And Dot Above  ̣̇ AltGr+.  AltGr+Shift+.
AltGr+Shift+.  AltGr+.
U0073 s U1E69 ṩ
UE00E Dot Below And Macron  ̣̄ AltGr+.  AltGr+-
AltGr+-  AltGr+.
U006C l U1E39 ḹ
UE000 Double Acute  ̋ AltGr+'  AltGr+' U006F o U0151 ő
UE001 Double Grave  ̏ AltGr+Shift+'  AltGr+Shift+' U0061 a U0201 ȁ
UE01F Horn And Acute  ̛́ AltGr+Shift+4  AltGr+'
AltGr+'  AltGr+Shift+4
U006F o U1EDB ớ
UE023 Horn And Dot Below  ̛̣ AltGr+Shift+4  AltGr+.
AltGr+.  AltGr+Shift+4
U006F o U1EE3 ợ
UE020 Horn And Grave  ̛̀ AltGr+Shift+4  AltGr+Shift+'
AltGr+Shift+'  AltGr+Shift+4
U006F o U1EDD ờ
UE021 Horn And Hook Above  ̛̉ AltGr+Shift+4  AltGr+Shift+,
AltGr+Shift+,  AltGr+Shift+4
U006F o U1EDF ở
UE022 Horn And Tilde  ̛̃ AltGr+Shift+4  AltGr+Shift+`
AltGr+Shift+`  AltGr+Shift+4
U006F o U1EE1 ỡ
UE00C Macron And Acute  ̄́ AltGr+-  AltGr+'
AltGr+'  AltGr+-
U006F o U1E53 ṓ
UE014 Macron And Diaeresis  ̄̈ AltGr+-  AltGr+Shift+3 U0075 u U1E7B ṻ
UE00B Macron And Grave  ̄̀ AltGr+-  AltGr+Shift+'
AltGr+Shift+'  AltGr+-
U0065 e U1E15 ḕ
UE007 Ogonek And Macron  ̨̄ AltGr+0  AltGr+-
AltGr+-  AltGr+0
U006F o U01ED ǭ
UE008 Ring Above And Acute  ̊́ AltGr+Shift+o  AltGr+'
AltGr+'  AltGr+Shift+o
U0061 a U01FB ǻ
UE00F Tilde And Acute  ̃́ AltGr+Shift+`  AltGr+'
AltGr+'  AltGr+Shift+`
U006F o U1E4D ṍ
UE010 Tilde And Diaeresis  ̃̈ AltGr+Shift+`  AltGr+Shift+3
AltGr+Shift+3  AltGr+Shift+`
U006F o U1E4F ṏ
UE009 Tilde And Macron  ̃̄ AltGr+Shift+`  AltGr+-
AltGr+-  AltGr+Shift+`
U006F o U022D ȭ

Manual index

Copyright © KbdSoft 2007-2026