summaryrefslogtreecommitdiff
path: root/xt9/keychars
diff options
context:
space:
mode:
Diffstat (limited to 'xt9/keychars')
-rw-r--r--xt9/keychars/qwerty-ar_EG.kcm355
-rw-r--r--xt9/keychars/qwerty-cs_CZ.kcm547
-rw-r--r--xt9/keychars/qwerty-da_DK.kcm443
-rw-r--r--xt9/keychars/qwerty-de_CH.kcm451
-rw-r--r--xt9/keychars/qwerty-de_DE.kcm477
-rw-r--r--xt9/keychars/qwerty-el_GR.kcm447
-rw-r--r--xt9/keychars/qwerty-en_CA.kcm407
-rw-r--r--xt9/keychars/qwerty-en_GB.kcm426
-rw-r--r--xt9/keychars/qwerty-en_GR.kcm407
-rw-r--r--xt9/keychars/qwerty-en_US.kcm407
-rw-r--r--xt9/keychars/qwerty-es_ES.kcm439
-rw-r--r--xt9/keychars/qwerty-es_US.kcm504
-rw-r--r--xt9/keychars/qwerty-fi_FI.kcm443
-rw-r--r--xt9/keychars/qwerty-fr_BE.kcm482
-rw-r--r--xt9/keychars/qwerty-fr_CA.kcm462
-rw-r--r--xt9/keychars/qwerty-fr_CH.kcm441
-rw-r--r--xt9/keychars/qwerty-fr_FR.kcm489
-rw-r--r--xt9/keychars/qwerty-hu_HU.kcm565
-rw-r--r--xt9/keychars/qwerty-it_CH.kcm421
-rw-r--r--xt9/keychars/qwerty-it_IT.kcm421
-rw-r--r--xt9/keychars/qwerty-iw_IL.kcm429
-rw-r--r--xt9/keychars/qwerty-nb_NO.kcm441
-rw-r--r--xt9/keychars/qwerty-nl_BE.kcm482
-rw-r--r--xt9/keychars/qwerty-nl_NL.kcm504
-rw-r--r--xt9/keychars/qwerty-pl_PL.kcm438
-rw-r--r--xt9/keychars/qwerty-pt_BR.kcm439
-rw-r--r--xt9/keychars/qwerty-pt_PT.kcm433
-rw-r--r--xt9/keychars/qwerty-ru_RU.kcm414
-rw-r--r--xt9/keychars/qwerty-sv_SE.kcm443
-rw-r--r--xt9/keychars/qwerty-tr_TR.kcm475
-rw-r--r--xt9/keychars/qwerty-zh_CN.kcm407
-rw-r--r--xt9/keychars/qwerty-zh_TW.kcm407
32 files changed, 14346 insertions, 0 deletions
diff --git a/xt9/keychars/qwerty-ar_EG.kcm b/xt9/keychars/qwerty-ar_EG.kcm
new file mode 100644
index 0000000..5af383f
--- /dev/null
+++ b/xt9/keychars/qwerty-ar_EG.kcm
@@ -0,0 +1,355 @@
+type FULL
+
+key GRAVE {
+ label, number: '\u0630'
+ base: '\u0630'
+ shift: '\u0651'
+ alt, ctrl, meta: none
+}
+
+key 1 {
+ label, number: '\u0661'
+ base: '\u0661'
+ shift: '!'
+ alt, ctrl, meta: none
+}
+
+key 2 {
+ label, number: '\u0662'
+ base: '\u0662'
+ shift: '@'
+ alt, ctrl, meta: none
+}
+
+key 3 {
+ label, number: '\u0663'
+ base: '\u0663'
+ shift: '#'
+ alt, ctrl, meta: none
+}
+
+key 4 {
+ label, number: '\u0664'
+ base: '\u0664'
+ shift: '$'
+ alt, ctrl, meta: none
+}
+
+key 5 {
+ label, number: '\u0665'
+ base: '\u0665'
+ shift: '%'
+ alt, ctrl, meta: none
+}
+
+key 6 {
+ label, number: '\u0666'
+ base: '\u0666'
+ shift: '^'
+ alt, ctrl, meta: none
+}
+
+key 7 {
+ label, number: '\u0667'
+ base: '\u0667'
+ shift: '&'
+ alt, ctrl, meta: none
+}
+
+key 8 {
+ label, number: '\u0668'
+ base: '\u0668'
+ shift: '*'
+ alt, ctrl, meta: none
+}
+
+key 9 {
+ label, number: '\u0669'
+ base: '\u0669'
+ shift: '('
+ alt, ctrl, meta: none
+}
+
+key 0 {
+ label, number: '\u0660'
+ base: '\u0660'
+ shift: ')'
+ alt, ctrl, meta: none
+}
+
+key MINUS {
+ label, number: '-'
+ base: '-'
+ shift: '_'
+ alt, ctrl, meta: none
+}
+
+key EQUALS {
+ label, number: '='
+ base: '='
+ shift: '+'
+ alt, ctrl, meta: none
+}
+
+key TAB {
+ label, number: '\t'
+ base: '\t'
+ alt, ctrl, meta: none
+}
+
+key Q {
+ label, number: '\u0636'
+ base: '\u0636'
+ shift: '\u064e'
+ alt, ctrl, meta: none
+}
+
+key W {
+ label, number: '\u0635'
+ base: '\u0635'
+ shift: '\u064b'
+ alt, ctrl, meta: none
+}
+
+key E {
+ label, number: '\u062b'
+ base: '\u062b'
+ shift: '\u064f'
+ alt, ctrl, meta: none
+}
+
+key R {
+ label, number: '\u0642'
+ base: '\u0642'
+ shift: '\u064c'
+ alt, ctrl, meta: none
+}
+
+key T {
+ label, number: '\u0641'
+ base: '\u0641'
+ shift: '\ufef9'
+ alt, ctrl, meta: none
+}
+
+key Y {
+ label, number: '\u063a'
+ base: '\u063a'
+ shift: '\u0625'
+ alt, ctrl, meta: none
+}
+
+key U {
+ label, number: '\u0639'
+ base: '\u0639'
+ shift: '\u2018'
+ alt, ctrl, meta: none
+}
+
+key I {
+ label, number: '\u0647'
+ base: '\u0647'
+ shift: '\u00f7'
+ alt, ctrl, meta: none
+}
+
+key O {
+ label, number: '\u062e'
+ base: '\u062e'
+ shift: '\u00d7'
+ alt, ctrl, meta: none
+}
+
+key P {
+ label, number: '\u062d'
+ base: '\u062d'
+ shift: '\u061b'
+ alt, ctrl, meta: none
+}
+
+key LEFT_BRACKET {
+ label, number: '\u062c'
+ base: '\u062c'
+ shift: '<'
+ alt, ctrl, meta: none
+}
+
+key RIGHT_BRACKET {
+ label, number: '\u062f'
+ base: '\u062f'
+ shift: '>'
+ alt, ctrl, meta: none
+}
+
+key BACKSLASH {
+ label, number: '\\'
+ base: '\\'
+ shift: '|'
+ alt, ctrl, meta: none
+}
+
+key A {
+ label, number: '\u0634'
+ base: '\u0634'
+ shift: '\u0650'
+ alt, ctrl, meta: none
+}
+
+key S {
+ label, number: '\u0633'
+ base: '\u0633'
+ shift: '\u064d'
+ alt, ctrl, meta: none
+}
+
+key D {
+ label, number: '\u064a'
+ base: '\u064a'
+ shift: '['
+ alt, ctrl, meta: none
+}
+
+key F {
+ label, number: '\u0628'
+ base: '\u0628'
+ shift: ']'
+ alt, ctrl, meta: none
+}
+
+key G {
+ label, number: '\u0644'
+ base: '\u0644'
+ shift: '\ufef7'
+ alt, ctrl, meta: none
+}
+
+key H {
+ label, number: '\u0627'
+ base: '\u0627'
+ shift: '\u0623'
+ alt, ctrl, meta: none
+}
+
+key J {
+ label, number: '\u062a'
+ base: '\u062a'
+ shift: '\u0640'
+ alt, ctrl, meta: none
+}
+
+key K {
+ label, number: '\u0646'
+ base: '\u0646'
+ shift: '\u060c'
+ alt, ctrl, meta: none
+}
+
+key L {
+ label, number: '\u0645'
+ base: '\u0645'
+ shift: '/'
+ alt, ctrl, meta: none
+}
+
+key SEMICOLON {
+ label, number: '\u0643'
+ base: '\u0643'
+ shift: ':'
+ alt, ctrl, meta: none
+}
+
+key APOSTROPHE {
+ label, number: '\u0637'
+ base: '\u0637'
+ shift: '"'
+ alt, ctrl, meta: none
+}
+
+key ENTER {
+ label, number: '\n'
+ base: '\n'
+ alt, ctrl, meta: none
+}
+
+key Z {
+ label, number: '\u0626'
+ base: '\u0626'
+ shift: '~'
+ alt, ctrl, meta: none
+}
+
+key X {
+ label, number: '\u0621'
+ base: '\u0621'
+ shift: '\u0652'
+ alt, ctrl, meta: none
+}
+
+key C {
+ label, number: '\u0624'
+ base: '\u0624'
+ shift: '{'
+ alt, ctrl, meta: none
+}
+
+key V {
+ label, number: '\u0631'
+ base: '\u0631'
+ shift: '}'
+ alt, ctrl, meta: none
+}
+
+key B {
+ label, number: '\ufefb'
+ base: '\ufefb'
+ shift: '\ufef5'
+ alt, ctrl, meta: none
+}
+
+key N {
+ label, number: '\u0649'
+ base: '\u0649'
+ shift: '\u0622'
+ alt, ctrl, meta: none
+}
+
+key M {
+ label, number: '\u0629'
+ base: '\u0629'
+ shift: '\u2019'
+ alt, ctrl, meta: none
+}
+
+key COMMA {
+ label, number: '\u0648'
+ base: '\u0648'
+ shift: ','
+ alt, ctrl, meta: none
+}
+
+key PERIOD {
+ label, number: '\u0632'
+ base: '\u0632'
+ shift: '.'
+ alt, ctrl, meta: none
+}
+
+key SLASH {
+ label, number: '\u0638'
+ base: '\u0638'
+ shift: '\u061f'
+ alt, ctrl, meta: none
+}
+
+key SPACE {
+ label, number: ' '
+ base: ' '
+ alt, ctrl, meta: none
+}
+
+key EUROPE_2 {
+ label, number: '\\'
+ base: '\\'
+ shift: '|'
+ alt, ctrl, meta: none
+}
diff --git a/xt9/keychars/qwerty-cs_CZ.kcm b/xt9/keychars/qwerty-cs_CZ.kcm
new file mode 100644
index 0000000..68acbd9
--- /dev/null
+++ b/xt9/keychars/qwerty-cs_CZ.kcm
@@ -0,0 +1,547 @@
+type FULL
+
+key GRAVE {
+ label, number: ';'
+ base: ';'
+ shift: '\u030a'
+ alt, ctrl, meta: none
+}
+
+key 1 {
+ label, number: '+'
+ base: '+'
+ shift: '1'
+ alt: '~'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 2 {
+ label, number: '\u011b'
+ base: '\u011b'
+ shift: '2'
+ capslock: '\u011a'
+ alt: '\u030c'
+ alt+shift: none
+ capslock+alt: '\u030c'
+ capslock+shift: '2'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key 3 {
+ label, number: '\u0161'
+ base: '\u0161'
+ shift: '3'
+ capslock: '\u0160'
+ alt: '\u0302'
+ alt+shift: none
+ capslock+alt: '\u0302'
+ capslock+shift: '3'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key 4 {
+ label, number: '\u010d'
+ base: '\u010d'
+ shift: '4'
+ capslock: '\u010c'
+ alt: '\u0306'
+ alt+shift: none
+ capslock+alt: '\u0306'
+ capslock+shift: '4'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key 5 {
+ label, number: '\u0159'
+ base: '\u0159'
+ shift: '5'
+ capslock: '\u0158'
+ alt: '\u030a'
+ alt+shift: none
+ capslock+alt: '\u030a'
+ capslock+shift: '5'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key 6 {
+ label, number: '\u017e'
+ base: '\u017e'
+ shift: '6'
+ capslock: '\u017d'
+ alt: '\u0328'
+ alt+shift: none
+ capslock+alt: '\u0328'
+ capslock+shift: '6'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key 7 {
+ label, number: '\u00fd'
+ base: '\u00fd'
+ shift: '7'
+ capslock: '\u00dd'
+ alt: '\u0300'
+ alt+shift: none
+ capslock+alt: '\u0300'
+ capslock+shift: '7'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key 8 {
+ label, number: '\u00e1'
+ base: '\u00e1'
+ shift: '8'
+ capslock: '\u00c1'
+ alt: '\u0307'
+ alt+shift: none
+ capslock+alt: '\u0307'
+ capslock+shift: '8'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key 9 {
+ label, number: '\u00ed'
+ base: '\u00ed'
+ shift: '9'
+ capslock: '\u00cd'
+ alt: '\u0301'
+ alt+shift: none
+ capslock+alt: '\u0301'
+ capslock+shift: '9'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key 0 {
+ label, number: '\u00e9'
+ base: '\u00e9'
+ shift: '0'
+ capslock: '\u00c9'
+ alt: '\u030b'
+ alt+shift: none
+ capslock+alt: '\u030b'
+ capslock+shift: '0'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key MINUS {
+ label, number: '='
+ base: '='
+ shift: '%'
+ alt: '\u0308'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key EQUALS {
+ label, number: '\u0301'
+ base: '\u0301'
+ shift: '\u030c'
+ alt: '\u0327'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key TAB {
+ label, number: '\t'
+ base: '\t'
+ alt, ctrl, meta: none
+}
+
+key Q {
+ label: 'Q'
+ number: '7'
+ base: 'q'
+ shift, capslock: 'Q'
+ alt: '\\'
+ alt+shift: none
+ capslock+alt: '\\'
+ capslock+shift: 'q'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key W {
+ label: 'W'
+ number: '9'
+ base: 'w'
+ shift, capslock: 'W'
+ alt: '|'
+ alt+shift: none
+ capslock+alt: '|'
+ capslock+shift: 'w'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key E {
+ label: 'E'
+ number: '3'
+ base: 'e'
+ shift, capslock: 'E'
+ alt: '\u20ac'
+ alt+shift: none
+ capslock+alt: '\u20ac'
+ capslock+shift: 'e'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key R {
+ label: 'R'
+ number: '7'
+ base: 'r'
+ shift, capslock: 'R'
+ capslock+shift: 'r'
+ alt, ctrl, meta: none
+}
+
+key T {
+ label: 'T'
+ number: '8'
+ base: 't'
+ shift, capslock: 'T'
+ capslock+shift: 't'
+ alt, ctrl, meta: none
+}
+
+key Z {
+ label: 'Z'
+ number: '9'
+ base: 'z'
+ shift, capslock: 'Z'
+ capslock+shift: 'z'
+ alt, ctrl, meta: none
+}
+
+key U {
+ label: 'U'
+ number: '8'
+ base: 'u'
+ shift, capslock: 'U'
+ capslock+shift: 'u'
+ alt, ctrl, meta: none
+}
+
+key I {
+ label: 'I'
+ number: '4'
+ base: 'i'
+ shift, capslock: 'I'
+ capslock+shift: 'i'
+ alt, ctrl, meta: none
+}
+
+key O {
+ label: 'O'
+ number: '6'
+ base: 'o'
+ shift, capslock: 'O'
+ capslock+shift: 'o'
+ alt, ctrl, meta: none
+}
+
+key P {
+ label: 'P'
+ number: '7'
+ base: 'p'
+ shift, capslock: 'P'
+ capslock+shift: 'p'
+ alt, ctrl, meta: none
+}
+
+key LEFT_BRACKET {
+ label, number: '\u00da'
+ base: '\u00fa'
+ shift: '/'
+ capslock: '\u00da'
+ alt: '\u00f7'
+ alt+shift: none
+ capslock+alt: '\u00f7'
+ capslock+shift: '/'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key RIGHT_BRACKET {
+ label, number: ')'
+ base: ')'
+ shift: '('
+ alt: '\u00d7'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key A {
+ label: 'A'
+ number: '2'
+ base: 'a'
+ shift, capslock: 'A'
+ capslock+shift: 'a'
+ alt, ctrl, meta: none
+}
+
+key S {
+ label: 'S'
+ number: '7'
+ base: 's'
+ shift, capslock: 'S'
+ alt: '\u0111'
+ alt+shift: none
+ capslock+alt: '\u0111'
+ capslock+shift: 's'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key D {
+ label: 'D'
+ number: '3'
+ base: 'd'
+ shift, capslock: 'D'
+ alt: '\u0110'
+ alt+shift: none
+ capslock+alt: '\u0110'
+ capslock+shift: 'd'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key F {
+ label: 'F'
+ number: '3'
+ base: 'f'
+ shift, capslock: 'F'
+ alt: '['
+ alt+shift: none
+ capslock+alt: '['
+ capslock+shift: 'f'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key G {
+ label: 'G'
+ number: '4'
+ base: 'g'
+ shift, capslock: 'G'
+ alt: ']'
+ alt+shift: none
+ capslock+alt: ']'
+ capslock+shift: 'g'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key H {
+ label: 'H'
+ number: '4'
+ base: 'h'
+ shift, capslock: 'H'
+ capslock+shift: 'h'
+ alt, ctrl, meta: none
+}
+
+key J {
+ label: 'J'
+ number: '5'
+ base: 'j'
+ shift, capslock: 'J'
+ capslock+shift: 'j'
+ alt, ctrl, meta: none
+}
+
+key K {
+ label: 'K'
+ number: '5'
+ base: 'k'
+ shift, capslock: 'K'
+ alt: '\u0142'
+ alt+shift: none
+ capslock+alt: '\u0142'
+ capslock+shift: 'k'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key L {
+ label: 'L'
+ number: '5'
+ base: 'l'
+ shift, capslock: 'L'
+ alt: '\u0141'
+ alt+shift: none
+ capslock+alt: '\u0141'
+ capslock+shift: 'l'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key SEMICOLON {
+ label, number: '\u016e'
+ base: '\u016f'
+ shift: '"'
+ capslock: '\u016e'
+ alt: '$'
+ alt+shift: none
+ capslock+alt: '$'
+ capslock+shift: '"'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key APOSTROPHE {
+ label, number: '\u00a7'
+ base: '\u00a7'
+ shift: '!'
+ alt: '\u00df'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key BACKSLASH {
+ label, number: '\u0308'
+ base: '\u0308'
+ shift: '\''
+ alt: '\u00a4'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key ENTER {
+ label, number: '\n'
+ base: '\n'
+ alt, ctrl, meta: none
+}
+
+key EUROPE_2 {
+ label, number: '\\'
+ base: '\\'
+ shift: '|'
+ alt, ctrl, meta: none
+}
+
+key Y {
+ label: 'Y'
+ number: '9'
+ base: 'y'
+ shift, capslock: 'Y'
+ capslock+shift: 'y'
+ alt, ctrl, meta: none
+}
+
+key X {
+ label: 'X'
+ number: '9'
+ base: 'x'
+ shift, capslock: 'X'
+ alt: '#'
+ alt+shift: none
+ capslock+alt: '#'
+ capslock+shift: 'x'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key C {
+ label: 'C'
+ number: '2'
+ base: 'c'
+ shift, capslock: 'C'
+ alt: '&'
+ alt+shift: none
+ capslock+alt: '&'
+ capslock+shift: 'c'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key V {
+ label: 'V'
+ number: '8'
+ base: 'v'
+ shift, capslock: 'V'
+ alt: '@'
+ alt+shift: none
+ capslock+alt: '@'
+ capslock+shift: 'v'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key B {
+ label: 'B'
+ number: '2'
+ base: 'b'
+ shift, capslock: 'B'
+ alt: '{'
+ alt+shift: none
+ capslock+alt: '{'
+ capslock+shift: 'b'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key N {
+ label: 'N'
+ number: '6'
+ base: 'n'
+ shift, capslock: 'N'
+ alt: '}'
+ alt+shift: none
+ capslock+alt: '}'
+ capslock+shift: 'n'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key M {
+ label: 'M'
+ number: '6'
+ base: 'm'
+ shift, capslock: 'M'
+ capslock+shift: 'm'
+ alt, ctrl, meta: none
+}
+
+key COMMA {
+ label, number: ','
+ base: ','
+ shift: '?'
+ alt: '<'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key PERIOD {
+ label, number: '.'
+ base: '.'
+ shift: ':'
+ alt: '>'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key SLASH {
+ label, number: '-'
+ base: '-'
+ shift: '_'
+ alt: '*'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key SPACE {
+ label, number: ' '
+ base: ' '
+ alt, ctrl, meta: none
+}
diff --git a/xt9/keychars/qwerty-da_DK.kcm b/xt9/keychars/qwerty-da_DK.kcm
new file mode 100644
index 0000000..0f425e9
--- /dev/null
+++ b/xt9/keychars/qwerty-da_DK.kcm
@@ -0,0 +1,443 @@
+type FULL
+
+key GRAVE {
+ label, number: '\u00bd'
+ base: '\u00bd'
+ shift: '\u00a7'
+ alt, ctrl, meta: none
+}
+
+key 1 {
+ label, number: '1'
+ base: '1'
+ shift: '!'
+ alt, ctrl, meta: none
+}
+
+key 2 {
+ label, number: '2'
+ base: '2'
+ shift: '"'
+ alt: '@'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 3 {
+ label, number: '3'
+ base: '3'
+ shift: '#'
+ alt: '\u00a3'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 4 {
+ label, number: '4'
+ base: '4'
+ shift: '\u00a4'
+ alt: '$'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 5 {
+ label, number: '5'
+ base: '5'
+ shift: '%'
+ alt: '\u20ac'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 6 {
+ label, number: '6'
+ base: '6'
+ shift: '&'
+ alt, ctrl, meta: none
+}
+
+key 7 {
+ label, number: '7'
+ base: '7'
+ shift: '/'
+ alt: '{'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 8 {
+ label, number: '8'
+ base: '8'
+ shift: '('
+ alt: '['
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 9 {
+ label, number: '9'
+ base: '9'
+ shift: ')'
+ alt: ']'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 0 {
+ label, number: '0'
+ base: '0'
+ shift: '='
+ alt: '}'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key MINUS {
+ label, number: '+'
+ base: '+'
+ shift: '?'
+ alt, ctrl, meta: none
+}
+
+key EQUALS {
+ label, number: '\u0301'
+ base: '\u0301'
+ shift: '\u0300'
+ alt: '|'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key TAB {
+ label, number: '\t'
+ base: '\t'
+ alt, ctrl, meta: none
+}
+
+key Q {
+ label: 'Q'
+ number: '7'
+ base: 'q'
+ shift, capslock: 'Q'
+ capslock+shift: 'q'
+ alt, ctrl, meta: none
+}
+
+key W {
+ label: 'W'
+ number: '9'
+ base: 'w'
+ shift, capslock: 'W'
+ capslock+shift: 'w'
+ alt, ctrl, meta: none
+}
+
+key E {
+ label: 'E'
+ number: '3'
+ base: 'e'
+ shift, capslock: 'E'
+ alt: '\u20ac'
+ alt+shift: none
+ capslock+alt: '\u20ac'
+ capslock+shift: 'e'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key R {
+ label: 'R'
+ number: '7'
+ base: 'r'
+ shift, capslock: 'R'
+ capslock+shift: 'r'
+ alt, ctrl, meta: none
+}
+
+key T {
+ label: 'T'
+ number: '8'
+ base: 't'
+ shift, capslock: 'T'
+ capslock+shift: 't'
+ alt, ctrl, meta: none
+}
+
+key Y {
+ label: 'Y'
+ number: '9'
+ base: 'y'
+ shift, capslock: 'Y'
+ capslock+shift: 'y'
+ alt, ctrl, meta: none
+}
+
+key U {
+ label: 'U'
+ number: '8'
+ base: 'u'
+ shift, capslock: 'U'
+ capslock+shift: 'u'
+ alt, ctrl, meta: none
+}
+
+key I {
+ label: 'I'
+ number: '4'
+ base: 'i'
+ shift, capslock: 'I'
+ capslock+shift: 'i'
+ alt, ctrl, meta: none
+}
+
+key O {
+ label: 'O'
+ number: '6'
+ base: 'o'
+ shift, capslock: 'O'
+ capslock+shift: 'o'
+ alt, ctrl, meta: none
+}
+
+key P {
+ label: 'P'
+ number: '7'
+ base: 'p'
+ shift, capslock: 'P'
+ capslock+shift: 'p'
+ alt, ctrl, meta: none
+}
+
+key LEFT_BRACKET {
+ label: '\u00c5'
+ number: '\u00e5'
+ base: '\u00e5'
+ shift, capslock: '\u00c5'
+ capslock+shift: '\u00e5'
+ alt, ctrl, meta: none
+}
+
+key RIGHT_BRACKET {
+ label, number: '\u0308'
+ base: '\u0308'
+ shift: '\u0302'
+ alt: '\u0303'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key A {
+ label: 'A'
+ number: '2'
+ base: 'a'
+ shift, capslock: 'A'
+ capslock+shift: 'a'
+ alt, ctrl, meta: none
+}
+
+key S {
+ label: 'S'
+ number: '7'
+ base: 's'
+ shift, capslock: 'S'
+ capslock+shift: 's'
+ alt, ctrl, meta: none
+}
+
+key D {
+ label: 'D'
+ number: '3'
+ base: 'd'
+ shift, capslock: 'D'
+ capslock+shift: 'd'
+ alt, ctrl, meta: none
+}
+
+key F {
+ label: 'F'
+ number: '3'
+ base: 'f'
+ shift, capslock: 'F'
+ capslock+shift: 'f'
+ alt, ctrl, meta: none
+}
+
+key G {
+ label: 'G'
+ number: '4'
+ base: 'g'
+ shift, capslock: 'G'
+ capslock+shift: 'g'
+ alt, ctrl, meta: none
+}
+
+key H {
+ label: 'H'
+ number: '4'
+ base: 'h'
+ shift, capslock: 'H'
+ capslock+shift: 'h'
+ alt, ctrl, meta: none
+}
+
+key J {
+ label: 'J'
+ number: '5'
+ base: 'j'
+ shift, capslock: 'J'
+ capslock+shift: 'j'
+ alt, ctrl, meta: none
+}
+
+key K {
+ label: 'K'
+ number: '5'
+ base: 'k'
+ shift, capslock: 'K'
+ capslock+shift: 'k'
+ alt, ctrl, meta: none
+}
+
+key L {
+ label: 'L'
+ number: '5'
+ base: 'l'
+ shift, capslock: 'L'
+ capslock+shift: 'l'
+ alt, ctrl, meta: none
+}
+
+key SEMICOLON {
+ label: '\u00c6'
+ number: '\u00e6'
+ base: '\u00e6'
+ shift, capslock: '\u00c6'
+ capslock+shift: '\u00e6'
+ alt, ctrl, meta: none
+}
+
+key APOSTROPHE {
+ label: '\u00d8'
+ number: '\u00f8'
+ base: '\u00f8'
+ shift, capslock: '\u00d8'
+ capslock+shift: '\u00f8'
+ alt, ctrl, meta: none
+}
+
+key BACKSLASH {
+ label, number: '\''
+ base: '\''
+ shift: '*'
+ alt, ctrl, meta: none
+}
+
+key ENTER {
+ label, number: '\n'
+ base: '\n'
+ alt, ctrl, meta: none
+}
+
+key EUROPE_2 {
+ label, number: '<'
+ base: '<'
+ shift: '>'
+ alt: '\\'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key Z {
+ label: 'Z'
+ number: '9'
+ base: 'z'
+ shift, capslock: 'Z'
+ capslock+shift: 'z'
+ alt, ctrl, meta: none
+}
+
+key X {
+ label: 'X'
+ number: '9'
+ base: 'x'
+ shift, capslock: 'X'
+ capslock+shift: 'x'
+ alt, ctrl, meta: none
+}
+
+key C {
+ label: 'C'
+ number: '2'
+ base: 'c'
+ shift, capslock: 'C'
+ capslock+shift: 'c'
+ alt, ctrl, meta: none
+}
+
+key V {
+ label: 'V'
+ number: '8'
+ base: 'v'
+ shift, capslock: 'V'
+ capslock+shift: 'v'
+ alt, ctrl, meta: none
+}
+
+key B {
+ label: 'B'
+ number: '2'
+ base: 'b'
+ shift, capslock: 'B'
+ capslock+shift: 'b'
+ alt, ctrl, meta: none
+}
+
+key N {
+ label: 'N'
+ number: '6'
+ base: 'n'
+ shift, capslock: 'N'
+ capslock+shift: 'n'
+ alt, ctrl, meta: none
+}
+
+key M {
+ label: 'M'
+ number: '6'
+ base: 'm'
+ shift, capslock: 'M'
+ alt: '\u00b5'
+ alt+shift: none
+ capslock+alt: '\u00b5'
+ capslock+shift: 'm'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key COMMA {
+ label, number: ','
+ base: ','
+ shift: ';'
+ alt, ctrl, meta: none
+}
+
+key PERIOD {
+ label, number: '.'
+ base: '.'
+ shift: ':'
+ alt, ctrl, meta: none
+}
+
+key SLASH {
+ label, number: '-'
+ base: '-'
+ shift: '_'
+ alt, ctrl, meta: none
+}
+
+key SPACE {
+ label, number: ' '
+ base: ' '
+ alt, ctrl, meta: none
+}
diff --git a/xt9/keychars/qwerty-de_CH.kcm b/xt9/keychars/qwerty-de_CH.kcm
new file mode 100644
index 0000000..9b9e92f
--- /dev/null
+++ b/xt9/keychars/qwerty-de_CH.kcm
@@ -0,0 +1,451 @@
+type FULL
+
+key GRAVE {
+ label, number: '\u00a7'
+ base: '\u00a7'
+ shift: '\u00b0'
+ alt, ctrl, meta: none
+}
+
+key 1 {
+ label, number: '1'
+ base: '1'
+ shift: '+'
+ alt: '\u00a6'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 2 {
+ label, number: '2'
+ base: '2'
+ shift: '"'
+ alt: '@'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 3 {
+ label, number: '3'
+ base: '3'
+ shift: '*'
+ alt: '#'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 4 {
+ label, number: '4'
+ base: '4'
+ shift: '\u00e7'
+ alt: '\u00b0'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 5 {
+ label, number: '5'
+ base: '5'
+ shift: '%'
+ alt: '\u00a7'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 6 {
+ label, number: '6'
+ base: '6'
+ shift: '&'
+ alt: '\u00ac'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 7 {
+ label, number: '7'
+ base: '7'
+ shift: '/'
+ alt: '|'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 8 {
+ label, number: '8'
+ base: '8'
+ shift: '('
+ alt: '\u00a2'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 9 {
+ label, number: '9'
+ base: '9'
+ shift: ')'
+ alt, ctrl, meta: none
+}
+
+key 0 {
+ label, number: '0'
+ base: '0'
+ shift: '='
+ alt, ctrl, meta: none
+}
+
+key MINUS {
+ label, number: '\''
+ base: '\''
+ shift: '?'
+ alt: '\u0301'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key EQUALS {
+ label, number: '\u0302'
+ base: '\u0302'
+ shift: '\u0300'
+ alt: '\u0303'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key TAB {
+ label, number: '\t'
+ base: '\t'
+ alt, ctrl, meta: none
+}
+
+key Q {
+ label: 'Q'
+ number: '7'
+ base: 'q'
+ shift, capslock: 'Q'
+ capslock+shift: 'q'
+ alt, ctrl, meta: none
+}
+
+key W {
+ label: 'W'
+ number: '9'
+ base: 'w'
+ shift, capslock: 'W'
+ capslock+shift: 'w'
+ alt, ctrl, meta: none
+}
+
+key E {
+ label: 'E'
+ number: '3'
+ base: 'e'
+ shift, capslock: 'E'
+ alt: '\u20ac'
+ alt+shift: none
+ capslock+alt: '\u20ac'
+ capslock+shift: 'e'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key R {
+ label: 'R'
+ number: '7'
+ base: 'r'
+ shift, capslock: 'R'
+ capslock+shift: 'r'
+ alt, ctrl, meta: none
+}
+
+key T {
+ label: 'T'
+ number: '8'
+ base: 't'
+ shift, capslock: 'T'
+ capslock+shift: 't'
+ alt, ctrl, meta: none
+}
+
+key Z {
+ label: 'Z'
+ number: '9'
+ base: 'z'
+ shift, capslock: 'Z'
+ capslock+shift: 'z'
+ alt, ctrl, meta: none
+}
+
+key U {
+ label: 'U'
+ number: '8'
+ base: 'u'
+ shift, capslock: 'U'
+ capslock+shift: 'u'
+ alt, ctrl, meta: none
+}
+
+key I {
+ label: 'I'
+ number: '4'
+ base: 'i'
+ shift, capslock: 'I'
+ capslock+shift: 'i'
+ alt, ctrl, meta: none
+}
+
+key O {
+ label: 'O'
+ number: '6'
+ base: 'o'
+ shift, capslock: 'O'
+ capslock+shift: 'o'
+ alt, ctrl, meta: none
+}
+
+key P {
+ label: 'P'
+ number: '7'
+ base: 'p'
+ shift, capslock: 'P'
+ capslock+shift: 'p'
+ alt, ctrl, meta: none
+}
+
+key LEFT_BRACKET {
+ label, number: '\u00fc'
+ base: '\u00fc'
+ shift: '\u00e8'
+ capslock: '\u00dc'
+ alt: '['
+ alt+shift: none
+ capslock+alt: '['
+ capslock+shift: '\u00c8'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key RIGHT_BRACKET {
+ label, number: '\u0308'
+ base: '\u0308'
+ shift: '!'
+ alt: ']'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key A {
+ label: 'A'
+ number: '2'
+ base: 'a'
+ shift, capslock: 'A'
+ capslock+shift: 'a'
+ alt, ctrl, meta: none
+}
+
+key S {
+ label: 'S'
+ number: '7'
+ base: 's'
+ shift, capslock: 'S'
+ capslock+shift: 's'
+ alt, ctrl, meta: none
+}
+
+key D {
+ label: 'D'
+ number: '3'
+ base: 'd'
+ shift, capslock: 'D'
+ capslock+shift: 'd'
+ alt, ctrl, meta: none
+}
+
+key F {
+ label: 'F'
+ number: '3'
+ base: 'f'
+ shift, capslock: 'F'
+ capslock+shift: 'f'
+ alt, ctrl, meta: none
+}
+
+key G {
+ label: 'G'
+ number: '4'
+ base: 'g'
+ shift, capslock: 'G'
+ capslock+shift: 'g'
+ alt, ctrl, meta: none
+}
+
+key H {
+ label: 'H'
+ number: '4'
+ base: 'h'
+ shift, capslock: 'H'
+ capslock+shift: 'h'
+ alt, ctrl, meta: none
+}
+
+key J {
+ label: 'J'
+ number: '5'
+ base: 'j'
+ shift, capslock: 'J'
+ capslock+shift: 'j'
+ alt, ctrl, meta: none
+}
+
+key K {
+ label: 'K'
+ number: '5'
+ base: 'k'
+ shift, capslock: 'K'
+ capslock+shift: 'k'
+ alt, ctrl, meta: none
+}
+
+key L {
+ label: 'L'
+ number: '5'
+ base: 'l'
+ shift, capslock: 'L'
+ capslock+shift: 'l'
+ alt, ctrl, meta: none
+}
+
+key SEMICOLON {
+ label, number: '\u00f6'
+ base: '\u00f6'
+ shift: '\u00e9'
+ capslock: '\u00d6'
+ capslock+shift: '\u00c9'
+ alt, ctrl, meta: none
+}
+
+key APOSTROPHE {
+ label, number: '\u00e4'
+ base: '\u00e4'
+ shift: '\u00e0'
+ capslock: '\u00c4'
+ alt: '{'
+ alt+shift: none
+ capslock+alt: '{'
+ capslock+shift: '\u00c0'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key BACKSLASH {
+ label, number: '$'
+ base: '$'
+ shift: '\u00a3'
+ alt: '}'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key ENTER {
+ label, number: '\n'
+ base: '\n'
+ alt, ctrl, meta: none
+}
+
+key EUROPE_2 {
+ label, number: '<'
+ base: '<'
+ shift: '>'
+ alt: '\\'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key Y {
+ label: 'Y'
+ number: '9'
+ base: 'y'
+ shift, capslock: 'Y'
+ capslock+shift: 'y'
+ alt, ctrl, meta: none
+}
+
+key X {
+ label: 'X'
+ number: '9'
+ base: 'x'
+ shift, capslock: 'X'
+ capslock+shift: 'x'
+ alt, ctrl, meta: none
+}
+
+key C {
+ label: 'C'
+ number: '2'
+ base: 'c'
+ shift, capslock: 'C'
+ capslock+shift: 'c'
+ alt, ctrl, meta: none
+}
+
+key V {
+ label: 'V'
+ number: '8'
+ base: 'v'
+ shift, capslock: 'V'
+ capslock+shift: 'v'
+ alt, ctrl, meta: none
+}
+
+key B {
+ label: 'B'
+ number: '2'
+ base: 'b'
+ shift, capslock: 'B'
+ capslock+shift: 'b'
+ alt, ctrl, meta: none
+}
+
+key N {
+ label: 'N'
+ number: '6'
+ base: 'n'
+ shift, capslock: 'N'
+ capslock+shift: 'n'
+ alt, ctrl, meta: none
+}
+
+key M {
+ label: 'M'
+ number: '6'
+ base: 'm'
+ shift, capslock: 'M'
+ capslock+shift: 'm'
+ alt, ctrl, meta: none
+}
+
+key COMMA {
+ label, number: ','
+ base: ','
+ shift: ';'
+ alt, ctrl, meta: none
+}
+
+key PERIOD {
+ label, number: '.'
+ base: '.'
+ shift: ':'
+ alt, ctrl, meta: none
+}
+
+key SLASH {
+ label, number: '-'
+ base: '-'
+ shift: '_'
+ alt, ctrl, meta: none
+}
+
+key SPACE {
+ label, number: ' '
+ base: ' '
+ alt, ctrl, meta: none
+}
diff --git a/xt9/keychars/qwerty-de_DE.kcm b/xt9/keychars/qwerty-de_DE.kcm
new file mode 100644
index 0000000..04bd4a7
--- /dev/null
+++ b/xt9/keychars/qwerty-de_DE.kcm
@@ -0,0 +1,477 @@
+type FULL
+
+key GRAVE {
+ label, number: '\u0302'
+ base: '\u0302'
+ shift: '\u00b0'
+ alt, ctrl, meta: none
+}
+
+key 1 {
+ label, number: '1'
+ base: '1'
+ shift, capslock: '!'
+ capslock+shift: '1'
+ alt, ctrl, meta: none
+}
+
+key 2 {
+ label, number: '2'
+ base: '2'
+ shift, capslock: '"'
+ alt: '\u00b2'
+ alt+shift: none
+ capslock+alt: '\u00b2'
+ capslock+shift: '2'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key 3 {
+ label, number: '3'
+ base: '3'
+ shift, capslock: '\u00a7'
+ alt: '\u00b3'
+ alt+shift: none
+ capslock+alt: '\u00b3'
+ capslock+shift: '3'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key 4 {
+ label, number: '4'
+ base: '4'
+ shift, capslock: '$'
+ capslock+shift: '4'
+ alt, ctrl, meta: none
+}
+
+key 5 {
+ label, number: '5'
+ base: '5'
+ shift, capslock: '%'
+ capslock+shift: '5'
+ alt, ctrl, meta: none
+}
+
+key 6 {
+ label, number: '6'
+ base: '6'
+ shift, capslock: '&'
+ capslock+shift: '6'
+ alt, ctrl, meta: none
+}
+
+key 7 {
+ label, number: '7'
+ base: '7'
+ shift, capslock: '/'
+ alt: '{'
+ alt+shift: none
+ capslock+alt: '{'
+ capslock+shift: '7'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key 8 {
+ label, number: '8'
+ base: '8'
+ shift, capslock: '('
+ alt: '['
+ alt+shift: none
+ capslock+alt: '['
+ capslock+shift: '8'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key 9 {
+ label, number: '9'
+ base: '9'
+ shift, capslock: ')'
+ alt: ']'
+ alt+shift: none
+ capslock+alt: ']'
+ capslock+shift: '9'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key 0 {
+ label, number: '0'
+ base: '0'
+ shift, capslock: '='
+ alt: '}'
+ alt+shift: none
+ capslock+alt: '}'
+ capslock+shift: '0'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key MINUS {
+ label, number: '\u00df'
+ base: '\u00df'
+ shift, capslock: '?'
+ alt: '\\'
+ alt+shift: none
+ capslock+alt: '\\'
+ capslock+shift: '\u00df'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key EQUALS {
+ label, number: '\u0301'
+ base: '\u0301'
+ shift: '\u0300'
+ alt, ctrl, meta: none
+}
+
+key TAB {
+ label, number: '\t'
+ base: '\t'
+ alt, ctrl, meta: none
+}
+
+key Q {
+ label: 'Q'
+ number: '7'
+ base: 'q'
+ shift, capslock: 'Q'
+ alt: '@'
+ alt+shift: none
+ capslock+alt: '@'
+ capslock+shift: 'q'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key W {
+ label: 'W'
+ number: '9'
+ base: 'w'
+ shift, capslock: 'W'
+ capslock+shift: 'w'
+ alt, ctrl, meta: none
+}
+
+key E {
+ label: 'E'
+ number: '3'
+ base: 'e'
+ shift, capslock: 'E'
+ alt: '\u20ac'
+ alt+shift: none
+ capslock+alt: '\u20ac'
+ capslock+shift: 'e'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key R {
+ label: 'R'
+ number: '7'
+ base: 'r'
+ shift, capslock: 'R'
+ capslock+shift: 'r'
+ alt, ctrl, meta: none
+}
+
+key T {
+ label: 'T'
+ number: '8'
+ base: 't'
+ shift, capslock: 'T'
+ capslock+shift: 't'
+ alt, ctrl, meta: none
+}
+
+key Z {
+ label: 'Z'
+ number: '9'
+ base: 'z'
+ shift, capslock: 'Z'
+ capslock+shift: 'z'
+ alt, ctrl, meta: none
+}
+
+key U {
+ label: 'U'
+ number: '8'
+ base: 'u'
+ shift, capslock: 'U'
+ capslock+shift: 'u'
+ alt, ctrl, meta: none
+}
+
+key I {
+ label: 'I'
+ number: '4'
+ base: 'i'
+ shift, capslock: 'I'
+ capslock+shift: 'i'
+ alt, ctrl, meta: none
+}
+
+key O {
+ label: 'O'
+ number: '6'
+ base: 'o'
+ shift, capslock: 'O'
+ capslock+shift: 'o'
+ alt, ctrl, meta: none
+}
+
+key P {
+ label: 'P'
+ number: '7'
+ base: 'p'
+ shift, capslock: 'P'
+ capslock+shift: 'p'
+ alt, ctrl, meta: none
+}
+
+key LEFT_BRACKET {
+ label: '\u00dc'
+ number: '\u00fc'
+ base: '\u00fc'
+ shift, capslock: '\u00dc'
+ capslock+shift: '\u00fc'
+ alt, ctrl, meta: none
+}
+
+key RIGHT_BRACKET {
+ label, number: '+'
+ base: '+'
+ shift, capslock: '*'
+ alt: '~'
+ alt+shift: none
+ capslock+alt: '~'
+ capslock+shift: '+'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key A {
+ label: 'A'
+ number: '2'
+ base: 'a'
+ shift, capslock: 'A'
+ capslock+shift: 'a'
+ alt, ctrl, meta: none
+}
+
+key S {
+ label: 'S'
+ number: '7'
+ base: 's'
+ shift, capslock: 'S'
+ capslock+shift: 's'
+ alt, ctrl, meta: none
+}
+
+key D {
+ label: 'D'
+ number: '3'
+ base: 'd'
+ shift, capslock: 'D'
+ capslock+shift: 'd'
+ alt, ctrl, meta: none
+}
+
+key F {
+ label: 'F'
+ number: '3'
+ base: 'f'
+ shift, capslock: 'F'
+ capslock+shift: 'f'
+ alt, ctrl, meta: none
+}
+
+key G {
+ label: 'G'
+ number: '4'
+ base: 'g'
+ shift, capslock: 'G'
+ capslock+shift: 'g'
+ alt, ctrl, meta: none
+}
+
+key H {
+ label: 'H'
+ number: '4'
+ base: 'h'
+ shift, capslock: 'H'
+ capslock+shift: 'h'
+ alt, ctrl, meta: none
+}
+
+key J {
+ label: 'J'
+ number: '5'
+ base: 'j'
+ shift, capslock: 'J'
+ capslock+shift: 'j'
+ alt, ctrl, meta: none
+}
+
+key K {
+ label: 'K'
+ number: '5'
+ base: 'k'
+ shift, capslock: 'K'
+ capslock+shift: 'k'
+ alt, ctrl, meta: none
+}
+
+key L {
+ label: 'L'
+ number: '5'
+ base: 'l'
+ shift, capslock: 'L'
+ capslock+shift: 'l'
+ alt, ctrl, meta: none
+}
+
+key SEMICOLON {
+ label: '\u00d6'
+ number: '\u00f6'
+ base: '\u00f6'
+ shift, capslock: '\u00d6'
+ capslock+shift: '\u00f6'
+ alt, ctrl, meta: none
+}
+
+key APOSTROPHE {
+ label: '\u00c4'
+ number: '\u00e4'
+ base: '\u00e4'
+ shift, capslock: '\u00c4'
+ capslock+shift: '\u00e4'
+ alt, ctrl, meta: none
+}
+
+key BACKSLASH {
+ label, number: '#'
+ base: '#'
+ shift, capslock: '\''
+ capslock+shift: '#'
+ alt, ctrl, meta: none
+}
+
+key ENTER {
+ label, number: '\n'
+ base: '\n'
+ alt, ctrl, meta: none
+}
+
+key EUROPE_2 {
+ label, number: '<'
+ base: '<'
+ shift, capslock: '>'
+ alt: '|'
+ alt+shift: none
+ capslock+alt: '|'
+ capslock+shift: '<'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key Y {
+ label: 'Y'
+ number: '9'
+ base: 'y'
+ shift, capslock: 'Y'
+ capslock+shift: 'y'
+ alt, ctrl, meta: none
+}
+
+key X {
+ label: 'X'
+ number: '9'
+ base: 'x'
+ shift, capslock: 'X'
+ capslock+shift: 'x'
+ alt, ctrl, meta: none
+}
+
+key C {
+ label: 'C'
+ number: '2'
+ base: 'c'
+ shift, capslock: 'C'
+ capslock+shift: 'c'
+ alt, ctrl, meta: none
+}
+
+key V {
+ label: 'V'
+ number: '8'
+ base: 'v'
+ shift, capslock: 'V'
+ capslock+shift: 'v'
+ alt, ctrl, meta: none
+}
+
+key B {
+ label: 'B'
+ number: '2'
+ base: 'b'
+ shift, capslock: 'B'
+ capslock+shift: 'b'
+ alt, ctrl, meta: none
+}
+
+key N {
+ label: 'N'
+ number: '6'
+ base: 'n'
+ shift, capslock: 'N'
+ capslock+shift: 'n'
+ alt, ctrl, meta: none
+}
+
+key M {
+ label: 'M'
+ number: '6'
+ base: 'm'
+ shift, capslock: 'M'
+ alt: '\u00b5'
+ alt+shift: none
+ capslock+alt: '\u00b5'
+ capslock+shift: 'm'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key COMMA {
+ label, number: ','
+ base: ','
+ shift, capslock: ';'
+ capslock+shift: ','
+ alt, ctrl, meta: none
+}
+
+key PERIOD {
+ label, number: '.'
+ base: '.'
+ shift, capslock: ':'
+ capslock+shift: '.'
+ alt, ctrl, meta: none
+}
+
+key SLASH {
+ label, number: '-'
+ base: '-'
+ shift: '_'
+ alt, ctrl, meta: none
+}
+
+key SPACE {
+ label, number: ' '
+ base: ' '
+ alt, ctrl, meta: none
+}
diff --git a/xt9/keychars/qwerty-el_GR.kcm b/xt9/keychars/qwerty-el_GR.kcm
new file mode 100644
index 0000000..509b1cc
--- /dev/null
+++ b/xt9/keychars/qwerty-el_GR.kcm
@@ -0,0 +1,447 @@
+type FULL
+
+key GRAVE {
+ label, number: '`'
+ base: '`'
+ shift: '~'
+ alt, ctrl, meta: none
+}
+
+key 1 {
+ label, number: '1'
+ base: '1'
+ shift: '!'
+ alt, ctrl, meta: none
+}
+
+key 2 {
+ label, number: '2'
+ base: '2'
+ shift: '@'
+ alt: '\u00b2'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 3 {
+ label, number: '3'
+ base: '3'
+ shift: '#'
+ alt: '\u00b3'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 4 {
+ label, number: '4'
+ base: '4'
+ shift: '$'
+ alt: '\u00a3'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 5 {
+ label, number: '5'
+ base: '5'
+ shift: '%'
+ alt: '\u00a7'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 6 {
+ label, number: '6'
+ base: '6'
+ shift: '^'
+ alt: '\u00b6'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 7 {
+ label, number: '7'
+ base: '7'
+ shift: '&'
+ alt, ctrl, meta: none
+}
+
+key 8 {
+ label, number: '8'
+ base: '8'
+ shift: '*'
+ alt: '\u00a4'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 9 {
+ label, number: '9'
+ base: '9'
+ shift: '('
+ alt: '\u00a6'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 0 {
+ label, number: '0'
+ base: '0'
+ shift: ')'
+ alt: '\u00b0'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key MINUS {
+ label, number: '-'
+ base: '-'
+ shift: '_'
+ alt: '\u00b1'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key EQUALS {
+ label, number: '='
+ base: '='
+ shift: '+'
+ alt: '\u00bd'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key TAB {
+ label, number: '\t'
+ base: '\t'
+ alt, ctrl, meta: none
+}
+
+key Q {
+ label: 'Q'
+ number: '7'
+ base: ';'
+ shift: ':'
+ alt, ctrl, meta: none
+}
+
+key W {
+ label: 'W'
+ number: '9'
+ base: '\u03c2'
+ shift: '\u0385'
+ alt, ctrl, meta: none
+}
+
+key E {
+ label: 'E'
+ number: '3'
+ base: '\u03b5'
+ shift, capslock: '\u0395'
+ alt: '\u20ac'
+ alt+shift: none
+ capslock+alt: '\u20ac'
+ capslock+shift: '\u03b5'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key R {
+ label: 'R'
+ number: '7'
+ base: '\u03c1'
+ shift, capslock: '\u03a1'
+ alt: '\u00ae'
+ alt+shift: none
+ capslock+alt: '\u00ae'
+ capslock+shift: '\u03c1'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key T {
+ label: 'T'
+ number: '8'
+ base: '\u03c4'
+ shift, capslock: '\u03a4'
+ capslock+shift: '\u03c4'
+ alt, ctrl, meta: none
+}
+
+key Y {
+ label: 'Y'
+ number: '9'
+ base: '\u03c5'
+ shift, capslock: '\u03a5'
+ alt: '\u00a5'
+ alt+shift: none
+ capslock+alt: '\u00a5'
+ capslock+shift: '\u03c5'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key U {
+ label: 'U'
+ number: '8'
+ base: '\u03b8'
+ shift, capslock: '\u0398'
+ capslock+shift: '\u03b8'
+ alt, ctrl, meta: none
+}
+
+key I {
+ label: 'I'
+ number: '4'
+ base: '\u03b9'
+ shift, capslock: '\u0399'
+ capslock+shift: '\u03b9'
+ alt, ctrl, meta: none
+}
+
+key O {
+ label: 'O'
+ number: '6'
+ base: '\u03bf'
+ shift, capslock: '\u039f'
+ capslock+shift: '\u03bf'
+ alt, ctrl, meta: none
+}
+
+key P {
+ label: 'P'
+ number: '7'
+ base: '\u03c0'
+ shift, capslock: '\u03a0'
+ capslock+shift: '\u03c0'
+ alt, ctrl, meta: none
+}
+
+key LEFT_BRACKET {
+ label, number: '['
+ base: '['
+ shift: '{'
+ alt: '\u00ab'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key RIGHT_BRACKET {
+ label, number: ']'
+ base: ']'
+ shift: '}'
+ alt: '\u00bb'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key A {
+ label: 'A'
+ number: '2'
+ base: '\u03b1'
+ shift, capslock: '\u0391'
+ capslock+shift: '\u03b1'
+ alt, ctrl, meta: none
+}
+
+key S {
+ label: 'S'
+ number: '7'
+ base: '\u03c3'
+ shift, capslock: '\u03a3'
+ capslock+shift: '\u03c3'
+ alt, ctrl, meta: none
+}
+
+key D {
+ label: 'D'
+ number: '3'
+ base: '\u03b4'
+ shift, capslock: '\u0394'
+ capslock+shift: '\u03b4'
+ alt, ctrl, meta: none
+}
+
+key F {
+ label: 'F'
+ number: '3'
+ base: '\u03c6'
+ shift, capslock: '\u03a6'
+ capslock+shift: '\u03c6'
+ alt, ctrl, meta: none
+}
+
+key G {
+ label: 'G'
+ number: '4'
+ base: '\u03b3'
+ shift, capslock: '\u0393'
+ capslock+shift: '\u03b3'
+ alt, ctrl, meta: none
+}
+
+key H {
+ label: 'H'
+ number: '4'
+ base: '\u03b7'
+ shift, capslock: '\u0397'
+ capslock+shift: '\u03b7'
+ alt, ctrl, meta: none
+}
+
+key J {
+ label: 'J'
+ number: '5'
+ base: '\u03be'
+ shift, capslock: '\u039e'
+ capslock+shift: '\u03be'
+ alt, ctrl, meta: none
+}
+
+key K {
+ label: 'K'
+ number: '5'
+ base: '\u03ba'
+ shift, capslock: '\u039a'
+ capslock+shift: '\u03ba'
+ alt, ctrl, meta: none
+}
+
+key L {
+ label: 'L'
+ number: '5'
+ base: '\u03bb'
+ shift, capslock: '\u039b'
+ capslock+shift: '\u03bb'
+ alt, ctrl, meta: none
+}
+
+key SEMICOLON {
+ label, number: ';'
+ base: '\u0384'
+ shift: '\u0308'
+ alt, ctrl, meta: none
+}
+
+key APOSTROPHE {
+ label, number: '\''
+ base: '\''
+ shift: '"'
+ alt, ctrl, meta: none
+}
+
+key BACKSLASH {
+ label, number: '#'
+ base: '\\'
+ shift: '|'
+ alt: '\u00ac'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key ENTER {
+ label, number: '\n'
+ base: '\n'
+ alt, ctrl, meta: none
+}
+
+key EUROPE_2 {
+ label, number: '<'
+ base: '<'
+ shift: '>'
+ alt, ctrl, meta: none
+}
+
+key Z {
+ label: 'Z'
+ number: '9'
+ base: '\u03b6'
+ shift, capslock: '\u0396'
+ capslock+shift: '\u03b6'
+ alt, ctrl, meta: none
+}
+
+key X {
+ label: 'X'
+ number: '9'
+ base: '\u03c7'
+ shift, capslock: '\u03a7'
+ capslock+shift: '\u03c7'
+ alt, ctrl, meta: none
+}
+
+key C {
+ label: 'C'
+ number: '2'
+ base: '\u03c8'
+ shift, capslock: '\u03a8'
+ alt: '\u00a9'
+ alt+shift: none
+ capslock+alt: '\u00a9'
+ capslock+shift: '\u03c8'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key V {
+ label: 'V'
+ number: '8'
+ base: '\u03c9'
+ shift, capslock: '\u03a9'
+ capslock+shift: '\u03c9'
+ alt, ctrl, meta: none
+}
+
+key B {
+ label: 'B'
+ number: '2'
+ base: '\u03b2'
+ shift, capslock: '\u0392'
+ capslock+shift: '\u03b2'
+ alt, ctrl, meta: none
+}
+
+key N {
+ label: 'N'
+ number: '6'
+ base: '\u03bd'
+ shift, capslock: '\u039d'
+ capslock+shift: '\u03bd'
+ alt, ctrl, meta: none
+}
+
+key M {
+ label: 'M'
+ number: '6'
+ base: '\u03bc'
+ shift, capslock: '\u039c'
+ capslock+shift: '\u03bc'
+ alt, ctrl, meta: none
+}
+
+key COMMA {
+ label, number: ','
+ base: ','
+ shift: '<'
+ alt, ctrl, meta: none
+}
+
+key PERIOD {
+ label, number: '.'
+ base: '.'
+ shift: '>'
+ alt, ctrl, meta: none
+}
+
+key SLASH {
+ label, number: '/'
+ base: '/'
+ shift: '?'
+ alt, ctrl, meta: none
+}
+
+key SPACE {
+ label, number: ' '
+ base: ' '
+ alt, ctrl, meta: none
+}
diff --git a/xt9/keychars/qwerty-en_CA.kcm b/xt9/keychars/qwerty-en_CA.kcm
new file mode 100644
index 0000000..7c79dc0
--- /dev/null
+++ b/xt9/keychars/qwerty-en_CA.kcm
@@ -0,0 +1,407 @@
+type FULL
+
+key GRAVE {
+ label, number: '`'
+ base: '`'
+ shift: '~'
+ alt, ctrl, meta: none
+}
+
+key 1 {
+ label, number: '1'
+ base: '1'
+ shift: '!'
+ alt, ctrl, meta: none
+}
+
+key 2 {
+ label, number: '2'
+ base: '2'
+ shift: '@'
+ alt, ctrl, meta: none
+}
+
+key 3 {
+ label, number: '3'
+ base: '3'
+ shift: '#'
+ alt, ctrl, meta: none
+}
+
+key 4 {
+ label, number: '4'
+ base: '4'
+ shift: '$'
+ alt, ctrl, meta: none
+}
+
+key 5 {
+ label, number: '5'
+ base: '5'
+ shift: '%'
+ alt, ctrl, meta: none
+}
+
+key 6 {
+ label, number: '6'
+ base: '6'
+ shift: '^'
+ alt, ctrl, meta: none
+}
+
+key 7 {
+ label, number: '7'
+ base: '7'
+ shift: '&'
+ alt, ctrl, meta: none
+}
+
+key 8 {
+ label, number: '8'
+ base: '8'
+ shift: '*'
+ alt, ctrl, meta: none
+}
+
+key 9 {
+ label, number: '9'
+ base: '9'
+ shift: '('
+ alt, ctrl, meta: none
+}
+
+key 0 {
+ label, number: '0'
+ base: '0'
+ shift: ')'
+ alt, ctrl, meta: none
+}
+
+key MINUS {
+ label, number: '-'
+ base: '-'
+ shift: '_'
+ alt, ctrl, meta: none
+}
+
+key EQUALS {
+ label, number: '='
+ base: '='
+ shift: '+'
+ alt, ctrl, meta: none
+}
+
+key TAB {
+ label, number: '\t'
+ base: '\t'
+ alt, ctrl, meta: none
+}
+
+key Q {
+ label: 'Q'
+ number: '7'
+ base: 'q'
+ shift, capslock: 'Q'
+ capslock+shift: 'q'
+ alt, ctrl, meta: none
+}
+
+key W {
+ label: 'W'
+ number: '9'
+ base: 'w'
+ shift, capslock: 'W'
+ capslock+shift: 'w'
+ alt, ctrl, meta: none
+}
+
+key E {
+ label: 'E'
+ number: '3'
+ base: 'e'
+ shift, capslock: 'E'
+ capslock+shift: 'e'
+ alt, ctrl, meta: none
+}
+
+key R {
+ label: 'R'
+ number: '7'
+ base: 'r'
+ shift, capslock: 'R'
+ capslock+shift: 'r'
+ alt, ctrl, meta: none
+}
+
+key T {
+ label: 'T'
+ number: '8'
+ base: 't'
+ shift, capslock: 'T'
+ capslock+shift: 't'
+ alt, ctrl, meta: none
+}
+
+key Y {
+ label: 'Y'
+ number: '9'
+ base: 'y'
+ shift, capslock: 'Y'
+ capslock+shift: 'y'
+ alt, ctrl, meta: none
+}
+
+key U {
+ label: 'U'
+ number: '8'
+ base: 'u'
+ shift, capslock: 'U'
+ capslock+shift: 'u'
+ alt, ctrl, meta: none
+}
+
+key I {
+ label: 'I'
+ number: '4'
+ base: 'i'
+ shift, capslock: 'I'
+ capslock+shift: 'i'
+ alt, ctrl, meta: none
+}
+
+key O {
+ label: 'O'
+ number: '6'
+ base: 'o'
+ shift, capslock: 'O'
+ capslock+shift: 'o'
+ alt, ctrl, meta: none
+}
+
+key P {
+ label: 'P'
+ number: '7'
+ base: 'p'
+ shift, capslock: 'P'
+ capslock+shift: 'p'
+ alt, ctrl, meta: none
+}
+
+key LEFT_BRACKET {
+ label, number: '['
+ base: '['
+ shift: '{'
+ alt, ctrl, meta: none
+}
+
+key RIGHT_BRACKET {
+ label, number: ']'
+ base: ']'
+ shift: '}'
+ alt, ctrl, meta: none
+}
+
+key BACKSLASH {
+ label, number: '\\'
+ base: '\\'
+ shift: '|'
+ alt, ctrl, meta: none
+}
+
+key A {
+ label: 'A'
+ number: '2'
+ base: 'a'
+ shift, capslock: 'A'
+ capslock+shift: 'a'
+ alt, ctrl, meta: none
+}
+
+key S {
+ label: 'S'
+ number: '7'
+ base: 's'
+ shift, capslock: 'S'
+ capslock+shift: 's'
+ alt, ctrl, meta: none
+}
+
+key D {
+ label: 'D'
+ number: '3'
+ base: 'd'
+ shift, capslock: 'D'
+ capslock+shift: 'd'
+ alt, ctrl, meta: none
+}
+
+key F {
+ label: 'F'
+ number: '3'
+ base: 'f'
+ shift, capslock: 'F'
+ capslock+shift: 'f'
+ alt, ctrl, meta: none
+}
+
+key G {
+ label: 'G'
+ number: '4'
+ base: 'g'
+ shift, capslock: 'G'
+ capslock+shift: 'g'
+ alt, ctrl, meta: none
+}
+
+key H {
+ label: 'H'
+ number: '4'
+ base: 'h'
+ shift, capslock: 'H'
+ capslock+shift: 'h'
+ alt, ctrl, meta: none
+}
+
+key J {
+ label: 'J'
+ number: '5'
+ base: 'j'
+ shift, capslock: 'J'
+ capslock+shift: 'j'
+ alt, ctrl, meta: none
+}
+
+key K {
+ label: 'K'
+ number: '5'
+ base: 'k'
+ shift, capslock: 'K'
+ capslock+shift: 'k'
+ alt, ctrl, meta: none
+}
+
+key L {
+ label: 'L'
+ number: '5'
+ base: 'l'
+ shift, capslock: 'L'
+ capslock+shift: 'l'
+ alt, ctrl, meta: none
+}
+
+key SEMICOLON {
+ label, number: ';'
+ base: ';'
+ shift: ':'
+ alt, ctrl, meta: none
+}
+
+key APOSTROPHE {
+ label, number: '\''
+ base: '\''
+ shift: '"'
+ alt, ctrl, meta: none
+}
+
+key ENTER {
+ label, number: '\n'
+ base: '\n'
+ alt, ctrl, meta: none
+}
+
+key Z {
+ label: 'Z'
+ number: '9'
+ base: 'z'
+ shift, capslock: 'Z'
+ capslock+shift: 'z'
+ alt, ctrl, meta: none
+}
+
+key X {
+ label: 'X'
+ number: '9'
+ base: 'x'
+ shift, capslock: 'X'
+ capslock+shift: 'x'
+ alt, ctrl, meta: none
+}
+
+key C {
+ label: 'C'
+ number: '2'
+ base: 'c'
+ shift, capslock: 'C'
+ capslock+shift: 'c'
+ alt, ctrl, meta: none
+}
+
+key V {
+ label: 'V'
+ number: '8'
+ base: 'v'
+ shift, capslock: 'V'
+ capslock+shift: 'v'
+ alt, ctrl, meta: none
+}
+
+key B {
+ label: 'B'
+ number: '2'
+ base: 'b'
+ shift, capslock: 'B'
+ capslock+shift: 'b'
+ alt, ctrl, meta: none
+}
+
+key N {
+ label: 'N'
+ number: '6'
+ base: 'n'
+ shift, capslock: 'N'
+ capslock+shift: 'n'
+ alt, ctrl, meta: none
+}
+
+key M {
+ label: 'M'
+ number: '6'
+ base: 'm'
+ shift, capslock: 'M'
+ capslock+shift: 'm'
+ alt, ctrl, meta: none
+}
+
+key COMMA {
+ label, number: ','
+ base: ','
+ shift: '<'
+ alt, ctrl, meta: none
+}
+
+key PERIOD {
+ label, number: '.'
+ base: '.'
+ shift: '>'
+ alt, ctrl, meta: none
+}
+
+key SLASH {
+ label, number: '/'
+ base: '/'
+ shift: '?'
+ alt, ctrl, meta: none
+}
+
+key SPACE {
+ label, number: ' '
+ base: ' '
+ alt, ctrl, meta: none
+}
+
+key EUROPE_2 {
+ label, number: '\\'
+ base: '\\'
+ shift: '|'
+ alt, ctrl, meta: none
+}
diff --git a/xt9/keychars/qwerty-en_GB.kcm b/xt9/keychars/qwerty-en_GB.kcm
new file mode 100644
index 0000000..3d600e8
--- /dev/null
+++ b/xt9/keychars/qwerty-en_GB.kcm
@@ -0,0 +1,426 @@
+type FULL
+
+key GRAVE {
+ label, number: '`'
+ base: '`'
+ shift: '\u00ac'
+ alt: '\u00a6'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 1 {
+ label, number: '1'
+ base: '1'
+ shift: '!'
+ alt, ctrl, meta: none
+}
+
+key 2 {
+ label, number: '2'
+ base: '2'
+ shift: '"'
+ alt, ctrl, meta: none
+}
+
+key 3 {
+ label, number: '3'
+ base: '3'
+ shift: '\u00a3'
+ alt, ctrl, meta: none
+}
+
+key 4 {
+ label, number: '4'
+ base: '4'
+ shift: '$'
+ alt: '\u20ac'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 5 {
+ label, number: '5'
+ base: '5'
+ shift: '%'
+ alt, ctrl, meta: none
+}
+
+key 6 {
+ label, number: '6'
+ base: '6'
+ shift: '^'
+ alt, ctrl, meta: none
+}
+
+key 7 {
+ label, number: '7'
+ base: '7'
+ shift: '&'
+ alt, ctrl, meta: none
+}
+
+key 8 {
+ label, number: '8'
+ base: '8'
+ shift: '*'
+ alt, ctrl, meta: none
+}
+
+key 9 {
+ label, number: '9'
+ base: '9'
+ shift: '('
+ alt, ctrl, meta: none
+}
+
+key 0 {
+ label, number: '0'
+ base: '0'
+ shift: ')'
+ alt, ctrl, meta: none
+}
+
+key MINUS {
+ label, number: '-'
+ base: '-'
+ shift: '_'
+ alt, ctrl, meta: none
+}
+
+key EQUALS {
+ label, number: '='
+ base: '='
+ shift: '+'
+ alt, ctrl, meta: none
+}
+
+key TAB {
+ label, number: '\t'
+ base: '\t'
+ alt, ctrl, meta: none
+}
+
+key Q {
+ label: 'Q'
+ number: '7'
+ base: 'q'
+ shift, capslock: 'Q'
+ capslock+shift: 'q'
+ alt, ctrl, meta: none
+}
+
+key W {
+ label: 'W'
+ number: '9'
+ base: 'w'
+ shift, capslock: 'W'
+ capslock+shift: 'w'
+ alt, ctrl, meta: none
+}
+
+key E {
+ label: 'E'
+ number: '3'
+ base: 'e'
+ shift, capslock: 'E'
+ alt: '\u00e9'
+ alt+shift, capslock+alt: '\u00c9'
+ capslock+shift: 'e'
+ capslock+alt+shift: '\u00e9'
+ ctrl, meta: none
+}
+
+key R {
+ label: 'R'
+ number: '7'
+ base: 'r'
+ shift, capslock: 'R'
+ capslock+shift: 'r'
+ alt, ctrl, meta: none
+}
+
+key T {
+ label: 'T'
+ number: '8'
+ base: 't'
+ shift, capslock: 'T'
+ capslock+shift: 't'
+ alt, ctrl, meta: none
+}
+
+key Y {
+ label: 'Y'
+ number: '9'
+ base: 'y'
+ shift, capslock: 'Y'
+ capslock+shift: 'y'
+ alt, ctrl, meta: none
+}
+
+key U {
+ label: 'U'
+ number: '8'
+ base: 'u'
+ shift, capslock: 'U'
+ alt: '\u00fa'
+ alt+shift, capslock+alt: '\u00da'
+ capslock+shift: 'u'
+ capslock+alt+shift: '\u00fa'
+ ctrl, meta: none
+}
+
+key I {
+ label: 'I'
+ number: '4'
+ base: 'i'
+ shift, capslock: 'I'
+ alt: '\u00ed'
+ alt+shift, capslock+alt: '\u00cd'
+ capslock+shift: 'i'
+ capslock+alt+shift: '\u00ed'
+ ctrl, meta: none
+}
+
+key O {
+ label: 'O'
+ number: '6'
+ base: 'o'
+ shift, capslock: 'O'
+ alt: '\u00f3'
+ alt+shift, capslock+alt: '\u00d3'
+ capslock+shift: 'o'
+ capslock+alt+shift: '\u00f3'
+ ctrl, meta: none
+}
+
+key P {
+ label: 'P'
+ number: '7'
+ base: 'p'
+ shift, capslock: 'P'
+ capslock+shift: 'p'
+ alt, ctrl, meta: none
+}
+
+key LEFT_BRACKET {
+ label, number: '['
+ base: '['
+ shift: '{'
+ alt, ctrl, meta: none
+}
+
+key RIGHT_BRACKET {
+ label, number: ']'
+ base: ']'
+ shift: '}'
+ alt, ctrl, meta: none
+}
+
+key A {
+ label: 'A'
+ number: '2'
+ base: 'a'
+ shift, capslock: 'A'
+ alt: '\u00e1'
+ alt+shift, capslock+alt: '\u00c1'
+ capslock+shift: 'a'
+ capslock+alt+shift: '\u00e1'
+ ctrl, meta: none
+}
+
+key S {
+ label: 'S'
+ number: '7'
+ base: 's'
+ shift, capslock: 'S'
+ capslock+shift: 's'
+ alt, ctrl, meta: none
+}
+
+key D {
+ label: 'D'
+ number: '3'
+ base: 'd'
+ shift, capslock: 'D'
+ capslock+shift: 'd'
+ alt, ctrl, meta: none
+}
+
+key F {
+ label: 'F'
+ number: '3'
+ base: 'f'
+ shift, capslock: 'F'
+ capslock+shift: 'f'
+ alt, ctrl, meta: none
+}
+
+key G {
+ label: 'G'
+ number: '4'
+ base: 'g'
+ shift, capslock: 'G'
+ capslock+shift: 'g'
+ alt, ctrl, meta: none
+}
+
+key H {
+ label: 'H'
+ number: '4'
+ base: 'h'
+ shift, capslock: 'H'
+ capslock+shift: 'h'
+ alt, ctrl, meta: none
+}
+
+key J {
+ label: 'J'
+ number: '5'
+ base: 'j'
+ shift, capslock: 'J'
+ capslock+shift: 'j'
+ alt, ctrl, meta: none
+}
+
+key K {
+ label: 'K'
+ number: '5'
+ base: 'k'
+ shift, capslock: 'K'
+ capslock+shift: 'k'
+ alt, ctrl, meta: none
+}
+
+key L {
+ label: 'L'
+ number: '5'
+ base: 'l'
+ shift, capslock: 'L'
+ capslock+shift: 'l'
+ alt, ctrl, meta: none
+}
+
+key SEMICOLON {
+ label, number: ';'
+ base: ';'
+ shift: ':'
+ alt, ctrl, meta: none
+}
+
+key APOSTROPHE {
+ label, number: '\''
+ base: '\''
+ shift: '@'
+ alt, ctrl, meta: none
+}
+
+key BACKSLASH {
+ label, number: '#'
+ base: '#'
+ shift: '~'
+ alt, ctrl, meta: none
+}
+
+key ENTER {
+ label, number: '\n'
+ base: '\n'
+ alt, ctrl, meta: none
+}
+
+key EUROPE_2 {
+ label, number: '\\'
+ base: '\\'
+ shift: '|'
+ alt, ctrl, meta: none
+}
+
+key Z {
+ label: 'Z'
+ number: '9'
+ base: 'z'
+ shift, capslock: 'Z'
+ capslock+shift: 'z'
+ alt, ctrl, meta: none
+}
+
+key X {
+ label: 'X'
+ number: '9'
+ base: 'x'
+ shift, capslock: 'X'
+ capslock+shift: 'x'
+ alt, ctrl, meta: none
+}
+
+key C {
+ label: 'C'
+ number: '2'
+ base: 'c'
+ shift, capslock: 'C'
+ capslock+shift: 'c'
+ alt, ctrl, meta: none
+}
+
+key V {
+ label: 'V'
+ number: '8'
+ base: 'v'
+ shift, capslock: 'V'
+ capslock+shift: 'v'
+ alt, ctrl, meta: none
+}
+
+key B {
+ label: 'B'
+ number: '2'
+ base: 'b'
+ shift, capslock: 'B'
+ capslock+shift: 'b'
+ alt, ctrl, meta: none
+}
+
+key N {
+ label: 'N'
+ number: '6'
+ base: 'n'
+ shift, capslock: 'N'
+ capslock+shift: 'n'
+ alt, ctrl, meta: none
+}
+
+key M {
+ label: 'M'
+ number: '6'
+ base: 'm'
+ shift, capslock: 'M'
+ capslock+shift: 'm'
+ alt, ctrl, meta: none
+}
+
+key COMMA {
+ label, number: ','
+ base: ','
+ shift: '<'
+ alt, ctrl, meta: none
+}
+
+key PERIOD {
+ label, number: '.'
+ base: '.'
+ shift: '>'
+ alt, ctrl, meta: none
+}
+
+key SLASH {
+ label, number: '/'
+ base: '/'
+ shift: '?'
+ alt, ctrl, meta: none
+}
+
+key SPACE {
+ label, number: ' '
+ base: ' '
+ alt, ctrl, meta: none
+}
diff --git a/xt9/keychars/qwerty-en_GR.kcm b/xt9/keychars/qwerty-en_GR.kcm
new file mode 100644
index 0000000..6ea53a7
--- /dev/null
+++ b/xt9/keychars/qwerty-en_GR.kcm
@@ -0,0 +1,407 @@
+type FULL
+
+key GRAVE {
+ label, number: '`'
+ base: '`'
+ shift: '~'
+ alt, ctrl, meta: none
+}
+
+key 1 {
+ label, number: '1'
+ base: '1'
+ shift: '!'
+ alt, ctrl, meta: none
+}
+
+key 2 {
+ label, number: '2'
+ base: '2'
+ shift: '@'
+ alt, ctrl, meta: none
+}
+
+key 3 {
+ label, number: '3'
+ base: '3'
+ shift: '#'
+ alt, ctrl, meta: none
+}
+
+key 4 {
+ label, number: '4'
+ base: '4'
+ shift: '$'
+ alt, ctrl, meta: none
+}
+
+key 5 {
+ label, number: '5'
+ base: '5'
+ shift: '%'
+ alt, ctrl, meta: none
+}
+
+key 6 {
+ label, number: '6'
+ base: '6'
+ shift: '^'
+ alt, ctrl, meta: none
+}
+
+key 7 {
+ label, number: '7'
+ base: '7'
+ shift: '&'
+ alt, ctrl, meta: none
+}
+
+key 8 {
+ label, number: '8'
+ base: '8'
+ shift: '*'
+ alt, ctrl, meta: none
+}
+
+key 9 {
+ label, number: '9'
+ base: '9'
+ shift: '('
+ alt, ctrl, meta: none
+}
+
+key 0 {
+ label, number: '0'
+ base: '0'
+ shift: ')'
+ alt, ctrl, meta: none
+}
+
+key MINUS {
+ label, number: '-'
+ base: '-'
+ shift: '_'
+ alt, ctrl, meta: none
+}
+
+key EQUALS {
+ label, number: '='
+ base: '='
+ shift: '+'
+ alt, ctrl, meta: none
+}
+
+key TAB {
+ label, number: '\t'
+ base: '\t'
+ alt, ctrl, meta: none
+}
+
+key Q {
+ label: 'Q'
+ number: '7'
+ base: 'q'
+ shift, capslock: 'Q'
+ capslock+shift: 'q'
+ alt, ctrl, meta: none
+}
+
+key W {
+ label: 'W'
+ number: '9'
+ base: 'w'
+ shift, capslock: 'W'
+ capslock+shift: 'w'
+ alt, ctrl, meta: none
+}
+
+key E {
+ label: 'E'
+ number: '3'
+ base: 'e'
+ shift, capslock: 'E'
+ capslock+shift: 'e'
+ alt, ctrl, meta: none
+}
+
+key R {
+ label: 'R'
+ number: '7'
+ base: 'r'
+ shift, capslock: 'R'
+ capslock+shift: 'r'
+ alt, ctrl, meta: none
+}
+
+key T {
+ label: 'T'
+ number: '8'
+ base: 't'
+ shift, capslock: 'T'
+ capslock+shift: 't'
+ alt, ctrl, meta: none
+}
+
+key Y {
+ label: 'Y'
+ number: '9'
+ base: 'y'
+ shift, capslock: 'Y'
+ capslock+shift: 'y'
+ alt, ctrl, meta: none
+}
+
+key U {
+ label: 'U'
+ number: '8'
+ base: 'u'
+ shift, capslock: 'U'
+ capslock+shift: 'u'
+ alt, ctrl, meta: none
+}
+
+key I {
+ label: 'I'
+ number: '4'
+ base: 'i'
+ shift, capslock: 'I'
+ capslock+shift: 'i'
+ alt, ctrl, meta: none
+}
+
+key O {
+ label: 'O'
+ number: '6'
+ base: 'o'
+ shift, capslock: 'O'
+ capslock+shift: 'o'
+ alt, ctrl, meta: none
+}
+
+key P {
+ label: 'P'
+ number: '7'
+ base: 'p'
+ shift, capslock: 'P'
+ capslock+shift: 'p'
+ alt, ctrl, meta: none
+}
+
+key LEFT_BRACKET {
+ label, number: '['
+ base: '['
+ shift: '{'
+ alt, ctrl, meta: none
+}
+
+key RIGHT_BRACKET {
+ label, number: ']'
+ base: ']'
+ shift: '}'
+ alt, ctrl, meta: none
+}
+
+key A {
+ label: 'A'
+ number: '2'
+ base: 'a'
+ shift, capslock: 'A'
+ capslock+shift: 'a'
+ alt, ctrl, meta: none
+}
+
+key S {
+ label: 'S'
+ number: '7'
+ base: 's'
+ shift, capslock: 'S'
+ capslock+shift: 's'
+ alt, ctrl, meta: none
+}
+
+key D {
+ label: 'D'
+ number: '3'
+ base: 'd'
+ shift, capslock: 'D'
+ capslock+shift: 'd'
+ alt, ctrl, meta: none
+}
+
+key F {
+ label: 'F'
+ number: '3'
+ base: 'f'
+ shift, capslock: 'F'
+ capslock+shift: 'f'
+ alt, ctrl, meta: none
+}
+
+key G {
+ label: 'G'
+ number: '4'
+ base: 'g'
+ shift, capslock: 'G'
+ capslock+shift: 'g'
+ alt, ctrl, meta: none
+}
+
+key H {
+ label: 'H'
+ number: '4'
+ base: 'h'
+ shift, capslock: 'H'
+ capslock+shift: 'h'
+ alt, ctrl, meta: none
+}
+
+key J {
+ label: 'J'
+ number: '5'
+ base: 'j'
+ shift, capslock: 'J'
+ capslock+shift: 'j'
+ alt, ctrl, meta: none
+}
+
+key K {
+ label: 'K'
+ number: '5'
+ base: 'k'
+ shift, capslock: 'K'
+ capslock+shift: 'k'
+ alt, ctrl, meta: none
+}
+
+key L {
+ label: 'L'
+ number: '5'
+ base: 'l'
+ shift, capslock: 'L'
+ capslock+shift: 'l'
+ alt, ctrl, meta: none
+}
+
+key SEMICOLON {
+ label, number: ';'
+ base: ';'
+ shift: ':'
+ alt, ctrl, meta: none
+}
+
+key APOSTROPHE {
+ label, number: '\''
+ base: '\''
+ shift: '"'
+ alt, ctrl, meta: none
+}
+
+key BACKSLASH {
+ label, number: '\\'
+ base: '\\'
+ shift: '|'
+ alt, ctrl, meta: none
+}
+
+key ENTER {
+ label, number: '\n'
+ base: '\n'
+ alt, ctrl, meta: none
+}
+
+key EUROPE_2 {
+ label, number: '<'
+ base: '<'
+ shift: '>'
+ alt, ctrl, meta: none
+}
+
+key Z {
+ label: 'Z'
+ number: '9'
+ base: 'z'
+ shift, capslock: 'Z'
+ capslock+shift: 'z'
+ alt, ctrl, meta: none
+}
+
+key X {
+ label: 'X'
+ number: '9'
+ base: 'x'
+ shift, capslock: 'X'
+ capslock+shift: 'x'
+ alt, ctrl, meta: none
+}
+
+key C {
+ label: 'C'
+ number: '2'
+ base: 'c'
+ shift, capslock: 'C'
+ capslock+shift: 'c'
+ alt, ctrl, meta: none
+}
+
+key V {
+ label: 'V'
+ number: '8'
+ base: 'v'
+ shift, capslock: 'V'
+ capslock+shift: 'v'
+ alt, ctrl, meta: none
+}
+
+key B {
+ label: 'B'
+ number: '2'
+ base: 'b'
+ shift, capslock: 'B'
+ capslock+shift: 'b'
+ alt, ctrl, meta: none
+}
+
+key N {
+ label: 'N'
+ number: '6'
+ base: 'n'
+ shift, capslock: 'N'
+ capslock+shift: 'n'
+ alt, ctrl, meta: none
+}
+
+key M {
+ label: 'M'
+ number: '6'
+ base: 'm'
+ shift, capslock: 'M'
+ capslock+shift: 'm'
+ alt, ctrl, meta: none
+}
+
+key COMMA {
+ label, number: ','
+ base: ','
+ shift: '<'
+ alt, ctrl, meta: none
+}
+
+key PERIOD {
+ label, number: '.'
+ base: '.'
+ shift: '>'
+ alt, ctrl, meta: none
+}
+
+key SLASH {
+ label, number: '/'
+ base: '/'
+ shift: '?'
+ alt, ctrl, meta: none
+}
+
+key SPACE {
+ label, number: ' '
+ base: ' '
+ alt, ctrl, meta: none
+}
diff --git a/xt9/keychars/qwerty-en_US.kcm b/xt9/keychars/qwerty-en_US.kcm
new file mode 100644
index 0000000..7c79dc0
--- /dev/null
+++ b/xt9/keychars/qwerty-en_US.kcm
@@ -0,0 +1,407 @@
+type FULL
+
+key GRAVE {
+ label, number: '`'
+ base: '`'
+ shift: '~'
+ alt, ctrl, meta: none
+}
+
+key 1 {
+ label, number: '1'
+ base: '1'
+ shift: '!'
+ alt, ctrl, meta: none
+}
+
+key 2 {
+ label, number: '2'
+ base: '2'
+ shift: '@'
+ alt, ctrl, meta: none
+}
+
+key 3 {
+ label, number: '3'
+ base: '3'
+ shift: '#'
+ alt, ctrl, meta: none
+}
+
+key 4 {
+ label, number: '4'
+ base: '4'
+ shift: '$'
+ alt, ctrl, meta: none
+}
+
+key 5 {
+ label, number: '5'
+ base: '5'
+ shift: '%'
+ alt, ctrl, meta: none
+}
+
+key 6 {
+ label, number: '6'
+ base: '6'
+ shift: '^'
+ alt, ctrl, meta: none
+}
+
+key 7 {
+ label, number: '7'
+ base: '7'
+ shift: '&'
+ alt, ctrl, meta: none
+}
+
+key 8 {
+ label, number: '8'
+ base: '8'
+ shift: '*'
+ alt, ctrl, meta: none
+}
+
+key 9 {
+ label, number: '9'
+ base: '9'
+ shift: '('
+ alt, ctrl, meta: none
+}
+
+key 0 {
+ label, number: '0'
+ base: '0'
+ shift: ')'
+ alt, ctrl, meta: none
+}
+
+key MINUS {
+ label, number: '-'
+ base: '-'
+ shift: '_'
+ alt, ctrl, meta: none
+}
+
+key EQUALS {
+ label, number: '='
+ base: '='
+ shift: '+'
+ alt, ctrl, meta: none
+}
+
+key TAB {
+ label, number: '\t'
+ base: '\t'
+ alt, ctrl, meta: none
+}
+
+key Q {
+ label: 'Q'
+ number: '7'
+ base: 'q'
+ shift, capslock: 'Q'
+ capslock+shift: 'q'
+ alt, ctrl, meta: none
+}
+
+key W {
+ label: 'W'
+ number: '9'
+ base: 'w'
+ shift, capslock: 'W'
+ capslock+shift: 'w'
+ alt, ctrl, meta: none
+}
+
+key E {
+ label: 'E'
+ number: '3'
+ base: 'e'
+ shift, capslock: 'E'
+ capslock+shift: 'e'
+ alt, ctrl, meta: none
+}
+
+key R {
+ label: 'R'
+ number: '7'
+ base: 'r'
+ shift, capslock: 'R'
+ capslock+shift: 'r'
+ alt, ctrl, meta: none
+}
+
+key T {
+ label: 'T'
+ number: '8'
+ base: 't'
+ shift, capslock: 'T'
+ capslock+shift: 't'
+ alt, ctrl, meta: none
+}
+
+key Y {
+ label: 'Y'
+ number: '9'
+ base: 'y'
+ shift, capslock: 'Y'
+ capslock+shift: 'y'
+ alt, ctrl, meta: none
+}
+
+key U {
+ label: 'U'
+ number: '8'
+ base: 'u'
+ shift, capslock: 'U'
+ capslock+shift: 'u'
+ alt, ctrl, meta: none
+}
+
+key I {
+ label: 'I'
+ number: '4'
+ base: 'i'
+ shift, capslock: 'I'
+ capslock+shift: 'i'
+ alt, ctrl, meta: none
+}
+
+key O {
+ label: 'O'
+ number: '6'
+ base: 'o'
+ shift, capslock: 'O'
+ capslock+shift: 'o'
+ alt, ctrl, meta: none
+}
+
+key P {
+ label: 'P'
+ number: '7'
+ base: 'p'
+ shift, capslock: 'P'
+ capslock+shift: 'p'
+ alt, ctrl, meta: none
+}
+
+key LEFT_BRACKET {
+ label, number: '['
+ base: '['
+ shift: '{'
+ alt, ctrl, meta: none
+}
+
+key RIGHT_BRACKET {
+ label, number: ']'
+ base: ']'
+ shift: '}'
+ alt, ctrl, meta: none
+}
+
+key BACKSLASH {
+ label, number: '\\'
+ base: '\\'
+ shift: '|'
+ alt, ctrl, meta: none
+}
+
+key A {
+ label: 'A'
+ number: '2'
+ base: 'a'
+ shift, capslock: 'A'
+ capslock+shift: 'a'
+ alt, ctrl, meta: none
+}
+
+key S {
+ label: 'S'
+ number: '7'
+ base: 's'
+ shift, capslock: 'S'
+ capslock+shift: 's'
+ alt, ctrl, meta: none
+}
+
+key D {
+ label: 'D'
+ number: '3'
+ base: 'd'
+ shift, capslock: 'D'
+ capslock+shift: 'd'
+ alt, ctrl, meta: none
+}
+
+key F {
+ label: 'F'
+ number: '3'
+ base: 'f'
+ shift, capslock: 'F'
+ capslock+shift: 'f'
+ alt, ctrl, meta: none
+}
+
+key G {
+ label: 'G'
+ number: '4'
+ base: 'g'
+ shift, capslock: 'G'
+ capslock+shift: 'g'
+ alt, ctrl, meta: none
+}
+
+key H {
+ label: 'H'
+ number: '4'
+ base: 'h'
+ shift, capslock: 'H'
+ capslock+shift: 'h'
+ alt, ctrl, meta: none
+}
+
+key J {
+ label: 'J'
+ number: '5'
+ base: 'j'
+ shift, capslock: 'J'
+ capslock+shift: 'j'
+ alt, ctrl, meta: none
+}
+
+key K {
+ label: 'K'
+ number: '5'
+ base: 'k'
+ shift, capslock: 'K'
+ capslock+shift: 'k'
+ alt, ctrl, meta: none
+}
+
+key L {
+ label: 'L'
+ number: '5'
+ base: 'l'
+ shift, capslock: 'L'
+ capslock+shift: 'l'
+ alt, ctrl, meta: none
+}
+
+key SEMICOLON {
+ label, number: ';'
+ base: ';'
+ shift: ':'
+ alt, ctrl, meta: none
+}
+
+key APOSTROPHE {
+ label, number: '\''
+ base: '\''
+ shift: '"'
+ alt, ctrl, meta: none
+}
+
+key ENTER {
+ label, number: '\n'
+ base: '\n'
+ alt, ctrl, meta: none
+}
+
+key Z {
+ label: 'Z'
+ number: '9'
+ base: 'z'
+ shift, capslock: 'Z'
+ capslock+shift: 'z'
+ alt, ctrl, meta: none
+}
+
+key X {
+ label: 'X'
+ number: '9'
+ base: 'x'
+ shift, capslock: 'X'
+ capslock+shift: 'x'
+ alt, ctrl, meta: none
+}
+
+key C {
+ label: 'C'
+ number: '2'
+ base: 'c'
+ shift, capslock: 'C'
+ capslock+shift: 'c'
+ alt, ctrl, meta: none
+}
+
+key V {
+ label: 'V'
+ number: '8'
+ base: 'v'
+ shift, capslock: 'V'
+ capslock+shift: 'v'
+ alt, ctrl, meta: none
+}
+
+key B {
+ label: 'B'
+ number: '2'
+ base: 'b'
+ shift, capslock: 'B'
+ capslock+shift: 'b'
+ alt, ctrl, meta: none
+}
+
+key N {
+ label: 'N'
+ number: '6'
+ base: 'n'
+ shift, capslock: 'N'
+ capslock+shift: 'n'
+ alt, ctrl, meta: none
+}
+
+key M {
+ label: 'M'
+ number: '6'
+ base: 'm'
+ shift, capslock: 'M'
+ capslock+shift: 'm'
+ alt, ctrl, meta: none
+}
+
+key COMMA {
+ label, number: ','
+ base: ','
+ shift: '<'
+ alt, ctrl, meta: none
+}
+
+key PERIOD {
+ label, number: '.'
+ base: '.'
+ shift: '>'
+ alt, ctrl, meta: none
+}
+
+key SLASH {
+ label, number: '/'
+ base: '/'
+ shift: '?'
+ alt, ctrl, meta: none
+}
+
+key SPACE {
+ label, number: ' '
+ base: ' '
+ alt, ctrl, meta: none
+}
+
+key EUROPE_2 {
+ label, number: '\\'
+ base: '\\'
+ shift: '|'
+ alt, ctrl, meta: none
+}
diff --git a/xt9/keychars/qwerty-es_ES.kcm b/xt9/keychars/qwerty-es_ES.kcm
new file mode 100644
index 0000000..cba5e50
--- /dev/null
+++ b/xt9/keychars/qwerty-es_ES.kcm
@@ -0,0 +1,439 @@
+type FULL
+
+key GRAVE {
+ label, number: '\u00ba'
+ base: '\u00ba'
+ shift: '\u00aa'
+ alt: '\\'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 1 {
+ label, number: '1'
+ base: '1'
+ shift: '!'
+ alt: '|'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 2 {
+ label, number: '2'
+ base: '2'
+ shift: '"'
+ alt: '@'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 3 {
+ label, number: '3'
+ base: '3'
+ shift: '\u00b7'
+ alt: '#'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 4 {
+ label, number: '4'
+ base: '4'
+ shift: '$'
+ alt: '\u0303'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 5 {
+ label, number: '5'
+ base: '5'
+ shift: '%'
+ alt: '\u20ac'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 6 {
+ label, number: '6'
+ base: '6'
+ shift: '&'
+ alt: '\u00ac'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 7 {
+ label, number: '7'
+ base: '7'
+ shift: '/'
+ alt, ctrl, meta: none
+}
+
+key 8 {
+ label, number: '8'
+ base: '8'
+ shift: '('
+ alt, ctrl, meta: none
+}
+
+key 9 {
+ label, number: '9'
+ base: '9'
+ shift: ')'
+ alt, ctrl, meta: none
+}
+
+key 0 {
+ label, number: '0'
+ base: '0'
+ shift: '='
+ alt, ctrl, meta: none
+}
+
+key MINUS {
+ label, number: '\''
+ base: '\''
+ shift: '?'
+ alt, ctrl, meta: none
+}
+
+key EQUALS {
+ label, number: '\u00a1'
+ base: '\u00a1'
+ shift: '\u00bf'
+ alt, ctrl, meta: none
+}
+
+key TAB {
+ label, number: '\t'
+ base: '\t'
+ alt, ctrl, meta: none
+}
+
+key Q {
+ label: 'Q'
+ number: '7'
+ base: 'q'
+ shift, capslock: 'Q'
+ capslock+shift: 'q'
+ alt, ctrl, meta: none
+}
+
+key W {
+ label: 'W'
+ number: '9'
+ base: 'w'
+ shift, capslock: 'W'
+ capslock+shift: 'w'
+ alt, ctrl, meta: none
+}
+
+key E {
+ label: 'E'
+ number: '3'
+ base: 'e'
+ shift, capslock: 'E'
+ alt: '\u20ac'
+ alt+shift: none
+ capslock+alt: '\u20ac'
+ capslock+shift: 'e'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key R {
+ label: 'R'
+ number: '7'
+ base: 'r'
+ shift, capslock: 'R'
+ capslock+shift: 'r'
+ alt, ctrl, meta: none
+}
+
+key T {
+ label: 'T'
+ number: '8'
+ base: 't'
+ shift, capslock: 'T'
+ capslock+shift: 't'
+ alt, ctrl, meta: none
+}
+
+key Y {
+ label: 'Y'
+ number: '9'
+ base: 'y'
+ shift, capslock: 'Y'
+ capslock+shift: 'y'
+ alt, ctrl, meta: none
+}
+
+key U {
+ label: 'U'
+ number: '8'
+ base: 'u'
+ shift, capslock: 'U'
+ capslock+shift: 'u'
+ alt, ctrl, meta: none
+}
+
+key I {
+ label: 'I'
+ number: '4'
+ base: 'i'
+ shift, capslock: 'I'
+ capslock+shift: 'i'
+ alt, ctrl, meta: none
+}
+
+key O {
+ label: 'O'
+ number: '6'
+ base: 'o'
+ shift, capslock: 'O'
+ capslock+shift: 'o'
+ alt, ctrl, meta: none
+}
+
+key P {
+ label: 'P'
+ number: '7'
+ base: 'p'
+ shift, capslock: 'P'
+ capslock+shift: 'p'
+ alt, ctrl, meta: none
+}
+
+key LEFT_BRACKET {
+ label, number: '\u0300'
+ base: '\u0300'
+ shift: '\u0302'
+ alt: '['
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key RIGHT_BRACKET {
+ label, number: '+'
+ base: '+'
+ shift: '*'
+ alt: ']'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key A {
+ label: 'A'
+ number: '2'
+ base: 'a'
+ shift, capslock: 'A'
+ capslock+shift: 'a'
+ alt, ctrl, meta: none
+}
+
+key S {
+ label: 'S'
+ number: '7'
+ base: 's'
+ shift, capslock: 'S'
+ capslock+shift: 's'
+ alt, ctrl, meta: none
+}
+
+key D {
+ label: 'D'
+ number: '3'
+ base: 'd'
+ shift, capslock: 'D'
+ capslock+shift: 'd'
+ alt, ctrl, meta: none
+}
+
+key F {
+ label: 'F'
+ number: '3'
+ base: 'f'
+ shift, capslock: 'F'
+ capslock+shift: 'f'
+ alt, ctrl, meta: none
+}
+
+key G {
+ label: 'G'
+ number: '4'
+ base: 'g'
+ shift, capslock: 'G'
+ capslock+shift: 'g'
+ alt, ctrl, meta: none
+}
+
+key H {
+ label: 'H'
+ number: '4'
+ base: 'h'
+ shift, capslock: 'H'
+ capslock+shift: 'h'
+ alt, ctrl, meta: none
+}
+
+key J {
+ label: 'J'
+ number: '5'
+ base: 'j'
+ shift, capslock: 'J'
+ capslock+shift: 'j'
+ alt, ctrl, meta: none
+}
+
+key K {
+ label: 'K'
+ number: '5'
+ base: 'k'
+ shift, capslock: 'K'
+ capslock+shift: 'k'
+ alt, ctrl, meta: none
+}
+
+key L {
+ label: 'L'
+ number: '5'
+ base: 'l'
+ shift, capslock: 'L'
+ capslock+shift: 'l'
+ alt, ctrl, meta: none
+}
+
+key SEMICOLON {
+ label: '\u00d1'
+ number: '\u00f1'
+ base: '\u00f1'
+ shift, capslock: '\u00d1'
+ capslock+shift: '\u00f1'
+ alt, ctrl, meta: none
+}
+
+key APOSTROPHE {
+ label, number: '\u0301'
+ base: '\u0301'
+ shift: '\u0308'
+ alt: '{'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key BACKSLASH {
+ label: '\u00c7'
+ number: '\u00e7'
+ base: '\u00e7'
+ shift, capslock: '\u00c7'
+ alt: '}'
+ alt+shift: none
+ capslock+alt: '}'
+ capslock+shift: '\u00e7'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key ENTER {
+ label, number: '\n'
+ base: '\n'
+ alt, ctrl, meta: none
+}
+
+key EUROPE_2 {
+ label, number: '<'
+ base: '<'
+ shift: '>'
+ alt, ctrl, meta: none
+}
+
+key Z {
+ label: 'Z'
+ number: '9'
+ base: 'z'
+ shift, capslock: 'Z'
+ capslock+shift: 'z'
+ alt, ctrl, meta: none
+}
+
+key X {
+ label: 'X'
+ number: '9'
+ base: 'x'
+ shift, capslock: 'X'
+ capslock+shift: 'x'
+ alt, ctrl, meta: none
+}
+
+key C {
+ label: 'C'
+ number: '2'
+ base: 'c'
+ shift, capslock: 'C'
+ capslock+shift: 'c'
+ alt, ctrl, meta: none
+}
+
+key V {
+ label: 'V'
+ number: '8'
+ base: 'v'
+ shift, capslock: 'V'
+ capslock+shift: 'v'
+ alt, ctrl, meta: none
+}
+
+key B {
+ label: 'B'
+ number: '2'
+ base: 'b'
+ shift, capslock: 'B'
+ capslock+shift: 'b'
+ alt, ctrl, meta: none
+}
+
+key N {
+ label: 'N'
+ number: '6'
+ base: 'n'
+ shift, capslock: 'N'
+ capslock+shift: 'n'
+ alt, ctrl, meta: none
+}
+
+key M {
+ label: 'M'
+ number: '6'
+ base: 'm'
+ shift, capslock: 'M'
+ capslock+shift: 'm'
+ alt, ctrl, meta: none
+}
+
+key COMMA {
+ label, number: ','
+ base: ','
+ shift: ';'
+ alt, ctrl, meta: none
+}
+
+key PERIOD {
+ label, number: '.'
+ base: '.'
+ shift: ':'
+ alt, ctrl, meta: none
+}
+
+key SLASH {
+ label, number: '-'
+ base: '-'
+ shift: '_'
+ alt, ctrl, meta: none
+}
+
+key SPACE {
+ label, number: ' '
+ base: ' '
+ alt, ctrl, meta: none
+}
diff --git a/xt9/keychars/qwerty-es_US.kcm b/xt9/keychars/qwerty-es_US.kcm
new file mode 100644
index 0000000..4445bc0
--- /dev/null
+++ b/xt9/keychars/qwerty-es_US.kcm
@@ -0,0 +1,504 @@
+type FULL
+
+key GRAVE {
+ label, number: '\u0300'
+ base: '\u0300'
+ shift: '\u0303'
+ alt, ctrl, meta: none
+}
+
+key 1 {
+ label, number: '1'
+ base: '1'
+ shift: '!'
+ alt: '\u00a1'
+ alt+shift: '\u00b9'
+ ctrl, meta: none
+}
+
+key 2 {
+ label, number: '2'
+ base: '2'
+ shift: '@'
+ alt: '\u00b2'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 3 {
+ label, number: '3'
+ base: '3'
+ shift: '#'
+ alt: '\u00b3'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 4 {
+ label, number: '4'
+ base: '4'
+ shift: '$'
+ alt: '\u00a4'
+ alt+shift: '\u00a3'
+ ctrl, meta: none
+}
+
+key 5 {
+ label, number: '5'
+ base: '5'
+ shift: '%'
+ alt: '\u20ac'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 6 {
+ label, number: '6'
+ base: '6'
+ shift: '\u0302'
+ alt: '\u00bc'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 7 {
+ label, number: '7'
+ base: '7'
+ shift: '&'
+ alt: '\u00bd'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 8 {
+ label, number: '8'
+ base: '8'
+ shift: '*'
+ alt: '\u00be'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 9 {
+ label, number: '9'
+ base: '9'
+ shift: '('
+ alt: '\u2018'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 0 {
+ label, number: '0'
+ base: '0'
+ shift: ')'
+ alt: '\u2019'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key MINUS {
+ label, number: '-'
+ base: '-'
+ shift: '_'
+ alt: '\u00a5'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key EQUALS {
+ label, number: '='
+ base: '='
+ shift: '+'
+ alt: '\u00d7'
+ alt+shift: '\u00f7'
+ ctrl, meta: none
+}
+
+key TAB {
+ label, number: '\t'
+ base: '\t'
+ alt, ctrl, meta: none
+}
+
+key Q {
+ label: 'Q'
+ number: '7'
+ base: 'q'
+ shift, capslock: 'Q'
+ alt: '\u00e4'
+ alt+shift, capslock+alt: '\u00c4'
+ capslock+shift: 'q'
+ capslock+alt+shift: '\u00e4'
+ ctrl, meta: none
+}
+
+key W {
+ label: 'W'
+ number: '9'
+ base: 'w'
+ shift, capslock: 'W'
+ alt: '\u00e5'
+ alt+shift, capslock+alt: '\u00c5'
+ capslock+shift: 'w'
+ capslock+alt+shift: '\u00e5'
+ ctrl, meta: none
+}
+
+key E {
+ label: 'E'
+ number: '3'
+ base: 'e'
+ shift, capslock: 'E'
+ alt: '\u00e9'
+ alt+shift, capslock+alt: '\u00c9'
+ capslock+shift: 'e'
+ capslock+alt+shift: '\u00e9'
+ ctrl, meta: none
+}
+
+key R {
+ label: 'R'
+ number: '7'
+ base: 'r'
+ shift, capslock: 'R'
+ alt: '\u00ae'
+ alt+shift: none
+ capslock+alt: '\u00ae'
+ capslock+shift: 'r'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key T {
+ label: 'T'
+ number: '8'
+ base: 't'
+ shift, capslock: 'T'
+ alt: '\u00fe'
+ alt+shift, capslock+alt: '\u00de'
+ capslock+shift: 't'
+ capslock+alt+shift: '\u00fe'
+ ctrl, meta: none
+}
+
+key Y {
+ label: 'Y'
+ number: '9'
+ base: 'y'
+ shift, capslock: 'Y'
+ alt: '\u00fc'
+ alt+shift, capslock+alt: '\u00dc'
+ capslock+shift: 'y'
+ capslock+alt+shift: '\u00fc'
+ ctrl, meta: none
+}
+
+key U {
+ label: 'U'
+ number: '8'
+ base: 'u'
+ shift, capslock: 'U'
+ alt: '\u00fa'
+ alt+shift, capslock+alt: '\u00da'
+ capslock+shift: 'u'
+ capslock+alt+shift: '\u00fa'
+ ctrl, meta: none
+}
+
+key I {
+ label: 'I'
+ number: '4'
+ base: 'i'
+ shift, capslock: 'I'
+ alt: '\u00ed'
+ alt+shift, capslock+alt: '\u00cd'
+ capslock+shift: 'i'
+ capslock+alt+shift: '\u00ed'
+ ctrl, meta: none
+}
+
+key O {
+ label: 'O'
+ number: '6'
+ base: 'o'
+ shift, capslock: 'O'
+ alt: '\u00f3'
+ alt+shift, capslock+alt: '\u00d3'
+ capslock+shift: 'o'
+ capslock+alt+shift: '\u00f3'
+ ctrl, meta: none
+}
+
+key P {
+ label: 'P'
+ number: '7'
+ base: 'p'
+ shift, capslock: 'P'
+ alt: '\u00f6'
+ alt+shift, capslock+alt: '\u00d6'
+ capslock+shift: 'p'
+ capslock+alt+shift: '\u00f6'
+ ctrl, meta: none
+}
+
+key LEFT_BRACKET {
+ label, number: '['
+ base: '['
+ shift: '{'
+ alt: '\u00ab'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key RIGHT_BRACKET {
+ label, number: ']'
+ base: ']'
+ shift: '}'
+ alt: '\u00bb'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key BACKSLASH {
+ label, number: '\\'
+ base: '\\'
+ shift: '|'
+ alt: '\u00ac'
+ alt+shift: '\u00a6'
+ ctrl, meta: none
+}
+
+key A {
+ label: 'A'
+ number: '2'
+ base: 'a'
+ shift, capslock: 'A'
+ alt: '\u00e1'
+ alt+shift, capslock+alt: '\u00c1'
+ capslock+shift: 'a'
+ capslock+alt+shift: '\u00e1'
+ ctrl, meta: none
+}
+
+key S {
+ label: 'S'
+ number: '7'
+ base: 's'
+ shift, capslock: 'S'
+ alt: '\u00df'
+ alt+shift: '\u00a7'
+ capslock+alt: '\u00df'
+ capslock+shift: 's'
+ capslock+alt+shift: '\u00a7'
+ ctrl, meta: none
+}
+
+key D {
+ label: 'D'
+ number: '3'
+ base: 'd'
+ shift, capslock: 'D'
+ alt: '\u00f0'
+ alt+shift, capslock+alt: '\u00d0'
+ capslock+shift: 'd'
+ capslock+alt+shift: '\u00f0'
+ ctrl, meta: none
+}
+
+key F {
+ label: 'F'
+ number: '3'
+ base: 'f'
+ shift, capslock: 'F'
+ capslock+shift: 'f'
+ alt, ctrl, meta: none
+}
+
+key G {
+ label: 'G'
+ number: '4'
+ base: 'g'
+ shift, capslock: 'G'
+ capslock+shift: 'g'
+ alt, ctrl, meta: none
+}
+
+key H {
+ label: 'H'
+ number: '4'
+ base: 'h'
+ shift, capslock: 'H'
+ capslock+shift: 'h'
+ alt, ctrl, meta: none
+}
+
+key J {
+ label: 'J'
+ number: '5'
+ base: 'j'
+ shift, capslock: 'J'
+ capslock+shift: 'j'
+ alt, ctrl, meta: none
+}
+
+key K {
+ label: 'K'
+ number: '5'
+ base: 'k'
+ shift, capslock: 'K'
+ capslock+shift: 'k'
+ alt, ctrl, meta: none
+}
+
+key L {
+ label: 'L'
+ number: '5'
+ base: 'l'
+ shift, capslock: 'L'
+ alt: '\u00f8'
+ alt+shift, capslock+alt: '\u00d8'
+ capslock+shift: 'l'
+ capslock+alt+shift: '\u00f8'
+ ctrl, meta: none
+}
+
+key SEMICOLON {
+ label, number: ';'
+ base: ';'
+ shift: ':'
+ alt: '\u00b6'
+ alt+shift: '\u00b0'
+ ctrl, meta: none
+}
+
+key APOSTROPHE {
+ label, number: '\u1df0'
+ base: '\u1df0'
+ shift: '\u1df1'
+ alt: '\u00b4'
+ alt+shift: '\u00a8'
+ ctrl, meta: none
+}
+
+key ENTER {
+ label, number: '\n'
+ base: '\n'
+ alt, ctrl, meta: none
+}
+
+key Z {
+ label: 'Z'
+ number: '9'
+ base: 'z'
+ shift, capslock: 'Z'
+ alt: '\u00e6'
+ alt+shift, capslock+alt: '\u00c6'
+ capslock+shift: 'z'
+ capslock+alt+shift: '\u00e6'
+ ctrl, meta: none
+}
+
+key X {
+ label: 'X'
+ number: '9'
+ base: 'x'
+ shift, capslock: 'X'
+ capslock+shift: 'x'
+ alt, ctrl, meta: none
+}
+
+key C {
+ label: 'C'
+ number: '2'
+ base: 'c'
+ shift, capslock: 'C'
+ alt: '\u00a9'
+ alt+shift: '\u00a2'
+ capslock+alt: '\u00a9'
+ capslock+shift: 'c'
+ capslock+alt+shift: '\u00a2'
+ ctrl, meta: none
+}
+
+key V {
+ label: 'V'
+ number: '8'
+ base: 'v'
+ shift, capslock: 'V'
+ capslock+shift: 'v'
+ alt, ctrl, meta: none
+}
+
+key B {
+ label: 'B'
+ number: '2'
+ base: 'b'
+ shift, capslock: 'B'
+ capslock+shift: 'b'
+ alt, ctrl, meta: none
+}
+
+key N {
+ label: 'N'
+ number: '6'
+ base: 'n'
+ shift, capslock: 'N'
+ alt: '\u00f1'
+ alt+shift, capslock+alt: '\u00d1'
+ capslock+shift: 'n'
+ capslock+alt+shift: '\u00f1'
+ ctrl, meta: none
+}
+
+key M {
+ label: 'M'
+ number: '6'
+ base: 'm'
+ shift, capslock: 'M'
+ alt: '\u00b5'
+ alt+shift: none
+ capslock+alt: '\u00b5'
+ capslock+shift: 'm'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key COMMA {
+ label, number: ','
+ base: ','
+ shift: '<'
+ alt: '\u00e7'
+ alt+shift, capslock+alt: '\u00c7'
+ capslock+alt+shift: '\u00e7'
+ ctrl, meta: none
+}
+
+key PERIOD {
+ label, number: '.'
+ base: '.'
+ shift: '>'
+ alt, ctrl, meta: none
+}
+
+key SLASH {
+ label, number: '/'
+ base: '/'
+ shift: '?'
+ alt: '\u00bf'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key SPACE {
+ label, number: ' '
+ base: ' '
+ alt, ctrl, meta: none
+}
+
+key EUROPE_2 {
+ label, number: '\\'
+ base: '\\'
+ shift: '|'
+ alt, ctrl, meta: none
+}
diff --git a/xt9/keychars/qwerty-fi_FI.kcm b/xt9/keychars/qwerty-fi_FI.kcm
new file mode 100644
index 0000000..ec5110f
--- /dev/null
+++ b/xt9/keychars/qwerty-fi_FI.kcm
@@ -0,0 +1,443 @@
+type FULL
+
+key GRAVE {
+ label, number: '\u00a7'
+ base: '\u00a7'
+ shift: '\u00bd'
+ alt, ctrl, meta: none
+}
+
+key 1 {
+ label, number: '1'
+ base: '1'
+ shift: '!'
+ alt, ctrl, meta: none
+}
+
+key 2 {
+ label, number: '2'
+ base: '2'
+ shift: '"'
+ alt: '@'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 3 {
+ label, number: '3'
+ base: '3'
+ shift: '#'
+ alt: '\u00a3'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 4 {
+ label, number: '4'
+ base: '4'
+ shift: '\u00a4'
+ alt: '$'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 5 {
+ label, number: '5'
+ base: '5'
+ shift: '%'
+ alt: '\u20ac'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 6 {
+ label, number: '6'
+ base: '6'
+ shift: '&'
+ alt, ctrl, meta: none
+}
+
+key 7 {
+ label, number: '7'
+ base: '7'
+ shift: '/'
+ alt: '{'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 8 {
+ label, number: '8'
+ base: '8'
+ shift: '('
+ alt: '['
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 9 {
+ label, number: '9'
+ base: '9'
+ shift: ')'
+ alt: ']'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 0 {
+ label, number: '0'
+ base: '0'
+ shift: '='
+ alt: '}'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key MINUS {
+ label, number: '+'
+ base: '+'
+ shift: '?'
+ alt: '\\'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key EQUALS {
+ label, number: '\u0301'
+ base: '\u0301'
+ shift: '\u0300'
+ alt, ctrl, meta: none
+}
+
+key TAB {
+ label, number: '\t'
+ base: '\t'
+ alt, ctrl, meta: none
+}
+
+key Q {
+ label: 'Q'
+ number: '7'
+ base: 'q'
+ shift, capslock: 'Q'
+ capslock+shift: 'q'
+ alt, ctrl, meta: none
+}
+
+key W {
+ label: 'W'
+ number: '9'
+ base: 'w'
+ shift, capslock: 'W'
+ capslock+shift: 'w'
+ alt, ctrl, meta: none
+}
+
+key E {
+ label: 'E'
+ number: '3'
+ base: 'e'
+ shift, capslock: 'E'
+ alt: '\u20ac'
+ alt+shift: none
+ capslock+alt: '\u20ac'
+ capslock+shift: 'e'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key R {
+ label: 'R'
+ number: '7'
+ base: 'r'
+ shift, capslock: 'R'
+ capslock+shift: 'r'
+ alt, ctrl, meta: none
+}
+
+key T {
+ label: 'T'
+ number: '8'
+ base: 't'
+ shift, capslock: 'T'
+ capslock+shift: 't'
+ alt, ctrl, meta: none
+}
+
+key Y {
+ label: 'Y'
+ number: '9'
+ base: 'y'
+ shift, capslock: 'Y'
+ capslock+shift: 'y'
+ alt, ctrl, meta: none
+}
+
+key U {
+ label: 'U'
+ number: '8'
+ base: 'u'
+ shift, capslock: 'U'
+ capslock+shift: 'u'
+ alt, ctrl, meta: none
+}
+
+key I {
+ label: 'I'
+ number: '4'
+ base: 'i'
+ shift, capslock: 'I'
+ capslock+shift: 'i'
+ alt, ctrl, meta: none
+}
+
+key O {
+ label: 'O'
+ number: '6'
+ base: 'o'
+ shift, capslock: 'O'
+ capslock+shift: 'o'
+ alt, ctrl, meta: none
+}
+
+key P {
+ label: 'P'
+ number: '7'
+ base: 'p'
+ shift, capslock: 'P'
+ capslock+shift: 'p'
+ alt, ctrl, meta: none
+}
+
+key LEFT_BRACKET {
+ label: '\u00c5'
+ number: '\u00e5'
+ base: '\u00e5'
+ shift, capslock: '\u00c5'
+ capslock+shift: '\u00e5'
+ alt, ctrl, meta: none
+}
+
+key RIGHT_BRACKET {
+ label, number: '\u0308'
+ base: '\u0308'
+ shift: '\u0302'
+ alt: '\u0303'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key A {
+ label: 'A'
+ number: '2'
+ base: 'a'
+ shift, capslock: 'A'
+ capslock+shift: 'a'
+ alt, ctrl, meta: none
+}
+
+key S {
+ label: 'S'
+ number: '7'
+ base: 's'
+ shift, capslock: 'S'
+ capslock+shift: 's'
+ alt, ctrl, meta: none
+}
+
+key D {
+ label: 'D'
+ number: '3'
+ base: 'd'
+ shift, capslock: 'D'
+ capslock+shift: 'd'
+ alt, ctrl, meta: none
+}
+
+key F {
+ label: 'F'
+ number: '3'
+ base: 'f'
+ shift, capslock: 'F'
+ capslock+shift: 'f'
+ alt, ctrl, meta: none
+}
+
+key G {
+ label: 'G'
+ number: '4'
+ base: 'g'
+ shift, capslock: 'G'
+ capslock+shift: 'g'
+ alt, ctrl, meta: none
+}
+
+key H {
+ label: 'H'
+ number: '4'
+ base: 'h'
+ shift, capslock: 'H'
+ capslock+shift: 'h'
+ alt, ctrl, meta: none
+}
+
+key J {
+ label: 'J'
+ number: '5'
+ base: 'j'
+ shift, capslock: 'J'
+ capslock+shift: 'j'
+ alt, ctrl, meta: none
+}
+
+key K {
+ label: 'K'
+ number: '5'
+ base: 'k'
+ shift, capslock: 'K'
+ capslock+shift: 'k'
+ alt, ctrl, meta: none
+}
+
+key L {
+ label: 'L'
+ number: '5'
+ base: 'l'
+ shift, capslock: 'L'
+ capslock+shift: 'l'
+ alt, ctrl, meta: none
+}
+
+key SEMICOLON {
+ label: '\u00d6'
+ number: '\u00f6'
+ base: '\u00f6'
+ shift, capslock: '\u00d6'
+ capslock+shift: '\u00f6'
+ alt, ctrl, meta: none
+}
+
+key APOSTROPHE {
+ label: '\u00c4'
+ number: '\u00e4'
+ base: '\u00e4'
+ shift, capslock: '\u00c4'
+ capslock+shift: '\u00e4'
+ alt, ctrl, meta: none
+}
+
+key BACKSLASH {
+ label, number: '\''
+ base: '\''
+ shift: '*'
+ alt, ctrl, meta: none
+}
+
+key ENTER {
+ label, number: '\n'
+ base: '\n'
+ alt, ctrl, meta: none
+}
+
+key EUROPE_2 {
+ label, number: '<'
+ base: '<'
+ shift: '>'
+ alt: '|'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key Z {
+ label: 'Z'
+ number: '9'
+ base: 'z'
+ shift, capslock: 'Z'
+ capslock+shift: 'z'
+ alt, ctrl, meta: none
+}
+
+key X {
+ label: 'X'
+ number: '9'
+ base: 'x'
+ shift, capslock: 'X'
+ capslock+shift: 'x'
+ alt, ctrl, meta: none
+}
+
+key C {
+ label: 'C'
+ number: '2'
+ base: 'c'
+ shift, capslock: 'C'
+ capslock+shift: 'c'
+ alt, ctrl, meta: none
+}
+
+key V {
+ label: 'V'
+ number: '8'
+ base: 'v'
+ shift, capslock: 'V'
+ capslock+shift: 'v'
+ alt, ctrl, meta: none
+}
+
+key B {
+ label: 'B'
+ number: '2'
+ base: 'b'
+ shift, capslock: 'B'
+ capslock+shift: 'b'
+ alt, ctrl, meta: none
+}
+
+key N {
+ label: 'N'
+ number: '6'
+ base: 'n'
+ shift, capslock: 'N'
+ capslock+shift: 'n'
+ alt, ctrl, meta: none
+}
+
+key M {
+ label: 'M'
+ number: '6'
+ base: 'm'
+ shift, capslock: 'M'
+ alt: '\u00b5'
+ alt+shift: none
+ capslock+alt: '\u00b5'
+ capslock+shift: 'm'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key COMMA {
+ label, number: ','
+ base: ','
+ shift: ';'
+ alt, ctrl, meta: none
+}
+
+key PERIOD {
+ label, number: '.'
+ base: '.'
+ shift: ':'
+ alt, ctrl, meta: none
+}
+
+key SLASH {
+ label, number: '-'
+ base: '-'
+ shift: '_'
+ alt, ctrl, meta: none
+}
+
+key SPACE {
+ label, number: ' '
+ base: ' '
+ alt, ctrl, meta: none
+}
diff --git a/xt9/keychars/qwerty-fr_BE.kcm b/xt9/keychars/qwerty-fr_BE.kcm
new file mode 100644
index 0000000..903dfce
--- /dev/null
+++ b/xt9/keychars/qwerty-fr_BE.kcm
@@ -0,0 +1,482 @@
+type FULL
+
+key GRAVE {
+ label, number: '\u00b2'
+ base: '\u00b2'
+ shift: '\u00b3'
+ alt, ctrl, meta: none
+}
+
+key 1 {
+ label, number: '&'
+ base: '&'
+ shift, capslock: '1'
+ alt: '|'
+ alt+shift: none
+ capslock+alt: '|'
+ capslock+shift: '&'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key 2 {
+ label, number: '\u00e9'
+ base: '\u00e9'
+ shift, capslock: '2'
+ alt: '@'
+ alt+shift: none
+ capslock+alt: '@'
+ capslock+shift: '\u00e9'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key 3 {
+ label, number: '"'
+ base: '"'
+ shift, capslock: '3'
+ alt: '#'
+ alt+shift: none
+ capslock+alt: '#'
+ capslock+shift: '"'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key 4 {
+ label, number: '\''
+ base: '\''
+ shift, capslock: '4'
+ alt: '{'
+ alt+shift: none
+ capslock+alt: '{'
+ capslock+shift: '\''
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key 5 {
+ label, number: '('
+ base: '('
+ shift, capslock: '5'
+ alt: '['
+ alt+shift: none
+ capslock+alt: '['
+ capslock+shift: '('
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key 6 {
+ label, number: '\u00a7'
+ base: '\u00a7'
+ shift, capslock: '6'
+ alt: '^'
+ alt+shift: none
+ capslock+alt: '^'
+ capslock+shift: '\u00a7'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key 7 {
+ label, number: '\u00e8'
+ base: '\u00e8'
+ shift, capslock: '7'
+ capslock+shift: '\u00e8'
+ alt, ctrl, meta: none
+}
+
+key 8 {
+ label, number: '!'
+ base: '!'
+ shift, capslock: '8'
+ capslock+shift: '!'
+ alt, ctrl, meta: none
+}
+
+key 9 {
+ label, number: '\u00e7'
+ base: '\u00e7'
+ shift, capslock: '9'
+ alt: '{'
+ alt+shift: none
+ capslock+alt: '{'
+ capslock+shift: '\u00e7'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key 0 {
+ label, number: '\u00e0'
+ base: '\u00e0'
+ shift, capslock: '0'
+ alt: '}'
+ alt+shift: none
+ capslock+alt: '}'
+ capslock+shift: '\u00e0'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key MINUS {
+ label, number: ')'
+ base: ')'
+ shift, capslock: '\u00b0'
+ capslock+shift: ')'
+ alt, ctrl, meta: none
+}
+
+key EQUALS {
+ label, number: '-'
+ base: '-'
+ shift, capslock: '_'
+ capslock+shift: '-'
+ alt, ctrl, meta: none
+}
+
+key TAB {
+ label, number: '\t'
+ base: '\t'
+ alt, ctrl, meta: none
+}
+
+key A {
+ label: 'A'
+ number: '2'
+ base: 'a'
+ shift, capslock: 'A'
+ capslock+shift: 'a'
+ alt, ctrl, meta: none
+}
+
+key Z {
+ label: 'Z'
+ number: '9'
+ base: 'z'
+ shift, capslock: 'Z'
+ capslock+shift: 'z'
+ alt, ctrl, meta: none
+}
+
+key E {
+ label: 'E'
+ number: '3'
+ base: 'e'
+ shift, capslock: 'E'
+ alt: '\u20ac'
+ alt+shift: none
+ capslock+alt: '\u20ac'
+ capslock+shift: 'e'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key R {
+ label: 'R'
+ number: '7'
+ base: 'r'
+ shift, capslock: 'R'
+ capslock+shift: 'r'
+ alt, ctrl, meta: none
+}
+
+key T {
+ label: 'T'
+ number: '8'
+ base: 't'
+ shift, capslock: 'T'
+ capslock+shift: 't'
+ alt, ctrl, meta: none
+}
+
+key Y {
+ label: 'Y'
+ number: '9'
+ base: 'y'
+ shift, capslock: 'Y'
+ capslock+shift: 'y'
+ alt, ctrl, meta: none
+}
+
+key U {
+ label: 'U'
+ number: '8'
+ base: 'u'
+ shift, capslock: 'U'
+ capslock+shift: 'u'
+ alt, ctrl, meta: none
+}
+
+key I {
+ label: 'I'
+ number: '4'
+ base: 'i'
+ shift, capslock: 'I'
+ capslock+shift: 'i'
+ alt, ctrl, meta: none
+}
+
+key O {
+ label: 'O'
+ number: '6'
+ base: 'o'
+ shift, capslock: 'O'
+ capslock+shift: 'o'
+ alt, ctrl, meta: none
+}
+
+key P {
+ label: 'P'
+ number: '7'
+ base: 'p'
+ shift, capslock: 'P'
+ capslock+shift: 'p'
+ alt, ctrl, meta: none
+}
+
+key LEFT_BRACKET {
+ label, number: '\u0302'
+ base: '\u0302'
+ shift, capslock: '\u0308'
+ alt: '['
+ alt+shift: none
+ capslock+alt: '['
+ capslock+shift: '\u0302'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key RIGHT_BRACKET {
+ label, number: '$'
+ base: '$'
+ shift, capslock: '*'
+ alt: ']'
+ alt+shift: none
+ capslock+alt: ']'
+ capslock+shift: '$'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key Q {
+ label: 'Q'
+ number: '7'
+ base: 'q'
+ shift, capslock: 'Q'
+ capslock+shift: 'q'
+ alt, ctrl, meta: none
+}
+
+key S {
+ label: 'S'
+ number: '7'
+ base: 's'
+ shift, capslock: 'S'
+ capslock+shift: 's'
+ alt, ctrl, meta: none
+}
+
+key D {
+ label: 'D'
+ number: '3'
+ base: 'd'
+ shift, capslock: 'D'
+ capslock+shift: 'd'
+ alt, ctrl, meta: none
+}
+
+key F {
+ label: 'F'
+ number: '3'
+ base: 'f'
+ shift, capslock: 'F'
+ capslock+shift: 'f'
+ alt, ctrl, meta: none
+}
+
+key G {
+ label: 'G'
+ number: '4'
+ base: 'g'
+ shift, capslock: 'G'
+ capslock+shift: 'g'
+ alt, ctrl, meta: none
+}
+
+key H {
+ label: 'H'
+ number: '4'
+ base: 'h'
+ shift, capslock: 'H'
+ capslock+shift: 'h'
+ alt, ctrl, meta: none
+}
+
+key J {
+ label: 'J'
+ number: '5'
+ base: 'j'
+ shift, capslock: 'J'
+ capslock+shift: 'j'
+ alt, ctrl, meta: none
+}
+
+key K {
+ label: 'K'
+ number: '5'
+ base: 'k'
+ shift, capslock: 'K'
+ capslock+shift: 'k'
+ alt, ctrl, meta: none
+}
+
+key L {
+ label: 'L'
+ number: '5'
+ base: 'l'
+ shift, capslock: 'L'
+ capslock+shift: 'l'
+ alt, ctrl, meta: none
+}
+
+key M {
+ label: 'M'
+ number: '6'
+ base: 'm'
+ shift, capslock: 'M'
+ capslock+shift: 'm'
+ alt, ctrl, meta: none
+}
+
+key APOSTROPHE {
+ label, number: '\u00f9'
+ base: '\u00f9'
+ shift, capslock: '%'
+ alt: '\u0301'
+ alt+shift, capslock+alt: '\u0301'
+ capslock+shift: '\u00f9'
+ capslock+alt+shift: '\u0301'
+ ctrl, meta: none
+}
+
+key BACKSLASH {
+ label, number: '\u00b5'
+ base: '\u00b5'
+ shift, capslock: '\u00a3'
+ alt: '\u0300'
+ alt+shift, capslock+alt: '\u0300'
+ capslock+shift: '\u00b5'
+ capslock+alt+shift: '\u0300'
+ ctrl, meta: none
+}
+
+key ENTER {
+ label, number: '\n'
+ base: '\n'
+ alt, ctrl, meta: none
+}
+
+key EUROPE_2 {
+ label, number: '<'
+ base: '<'
+ shift: '>'
+ alt: '\\'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key W {
+ label: 'W'
+ number: '9'
+ base: 'w'
+ shift, capslock: 'W'
+ capslock+shift: 'w'
+ alt, ctrl, meta: none
+}
+
+key X {
+ label: 'X'
+ number: '9'
+ base: 'x'
+ shift, capslock: 'X'
+ capslock+shift: 'x'
+ alt, ctrl, meta: none
+}
+
+key C {
+ label: 'C'
+ number: '2'
+ base: 'c'
+ shift, capslock: 'C'
+ capslock+shift: 'c'
+ alt, ctrl, meta: none
+}
+
+key V {
+ label: 'V'
+ number: '8'
+ base: 'v'
+ shift, capslock: 'V'
+ capslock+shift: 'v'
+ alt, ctrl, meta: none
+}
+
+key B {
+ label: 'B'
+ number: '2'
+ base: 'b'
+ shift, capslock: 'B'
+ capslock+shift: 'b'
+ alt, ctrl, meta: none
+}
+
+key N {
+ label: 'N'
+ number: '6'
+ base: 'n'
+ shift, capslock: 'N'
+ capslock+shift: 'n'
+ alt, ctrl, meta: none
+}
+
+key COMMA {
+ label, number: ','
+ base: ','
+ shift, capslock: '?'
+ capslock+shift: ','
+ alt, ctrl, meta: none
+}
+
+key SEMICOLON {
+ label, number: ';'
+ base: ';'
+ shift, capslock: '.'
+ capslock+shift: ';'
+ alt, ctrl, meta: none
+}
+
+key PERIOD {
+ label, number: ':'
+ base: ':'
+ shift, capslock: '/'
+ capslock+shift: ':'
+ alt, ctrl, meta: none
+}
+
+key SLASH {
+ label, number: '='
+ base: '='
+ shift, capslock: '+'
+ alt: '\u0303'
+ alt+shift, capslock+alt: '\u0303'
+ capslock+shift: '='
+ capslock+alt+shift: '\u0303'
+ ctrl, meta: none
+}
+
+key SPACE {
+ label, number: ' '
+ base: ' '
+ alt, ctrl, meta: none
+}
diff --git a/xt9/keychars/qwerty-fr_CA.kcm b/xt9/keychars/qwerty-fr_CA.kcm
new file mode 100644
index 0000000..744f044
--- /dev/null
+++ b/xt9/keychars/qwerty-fr_CA.kcm
@@ -0,0 +1,462 @@
+type FULL
+
+key GRAVE {
+ label, number: '#'
+ base: '#'
+ shift: '|'
+ alt: '\\'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 1 {
+ label, number: '1'
+ base: '1'
+ shift: '!'
+ alt: '\u00b1'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 2 {
+ label, number: '2'
+ base: '2'
+ shift: '"'
+ alt: '@'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 3 {
+ label, number: '3'
+ base: '3'
+ shift: '/'
+ alt: '\u00a3'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 4 {
+ label, number: '4'
+ base: '4'
+ shift: '$'
+ alt: '\u00a2'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 5 {
+ label, number: '5'
+ base: '5'
+ shift: '%'
+ alt: '\u00a4'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 6 {
+ label, number: '6'
+ base: '6'
+ shift: '?'
+ alt: '\u00ac'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 7 {
+ label, number: '7'
+ base: '7'
+ shift: '&'
+ alt: '\u00a6'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 8 {
+ label, number: '8'
+ base: '8'
+ shift: '*'
+ alt: '\u00b2'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 9 {
+ label, number: '9'
+ base: '9'
+ shift: '('
+ alt: '\u00b3'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 0 {
+ label, number: '0'
+ base: '0'
+ shift: ')'
+ alt: '\u00bc'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key MINUS {
+ label, number: '-'
+ base: '-'
+ shift: '_'
+ alt: '\u00bd'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key EQUALS {
+ label, number: '='
+ base: '='
+ shift: '+'
+ alt: '\u00be'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key TAB {
+ label, number: '\t'
+ base: '\t'
+ alt, ctrl, meta: none
+}
+
+key Q {
+ label: 'Q'
+ number: '7'
+ base: 'q'
+ shift, capslock: 'Q'
+ capslock+shift: 'q'
+ alt, ctrl, meta: none
+}
+
+key W {
+ label: 'W'
+ number: '9'
+ base: 'w'
+ shift, capslock: 'W'
+ capslock+shift: 'w'
+ alt, ctrl, meta: none
+}
+
+key E {
+ label: 'E'
+ number: '3'
+ base: 'e'
+ shift, capslock: 'E'
+ capslock+shift: 'e'
+ alt, ctrl, meta: none
+}
+
+key R {
+ label: 'R'
+ number: '7'
+ base: 'r'
+ shift, capslock: 'R'
+ capslock+shift: 'r'
+ alt, ctrl, meta: none
+}
+
+key T {
+ label: 'T'
+ number: '8'
+ base: 't'
+ shift, capslock: 'T'
+ capslock+shift: 't'
+ alt, ctrl, meta: none
+}
+
+key Y {
+ label: 'Y'
+ number: '9'
+ base: 'y'
+ shift, capslock: 'Y'
+ capslock+shift: 'y'
+ alt, ctrl, meta: none
+}
+
+key U {
+ label: 'U'
+ number: '8'
+ base: 'u'
+ shift, capslock: 'U'
+ capslock+shift: 'u'
+ alt, ctrl, meta: none
+}
+
+key I {
+ label: 'I'
+ number: '4'
+ base: 'i'
+ shift, capslock: 'I'
+ capslock+shift: 'i'
+ alt, ctrl, meta: none
+}
+
+key O {
+ label: 'O'
+ number: '6'
+ base: 'o'
+ shift, capslock: 'O'
+ alt: '\u00a7'
+ alt+shift: none
+ capslock+alt: '\u00a7'
+ capslock+shift: 'o'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key P {
+ label: 'P'
+ number: '7'
+ base: 'p'
+ shift, capslock: 'P'
+ alt: '\u00b6'
+ alt+shift: none
+ capslock+alt: '\u00b6'
+ capslock+shift: 'p'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key LEFT_BRACKET {
+ label, number: '\u0302'
+ base: '\u0302'
+ alt: '['
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key RIGHT_BRACKET {
+ label, number: '\u0327'
+ base: '\u0327'
+ shift: '\u0308'
+ alt: ']'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key A {
+ label: 'A'
+ number: '2'
+ base: 'a'
+ shift, capslock: 'A'
+ capslock+shift: 'a'
+ alt, ctrl, meta: none
+}
+
+key S {
+ label: 'S'
+ number: '7'
+ base: 's'
+ shift, capslock: 'S'
+ capslock+shift: 's'
+ alt, ctrl, meta: none
+}
+
+key D {
+ label: 'D'
+ number: '3'
+ base: 'd'
+ shift, capslock: 'D'
+ capslock+shift: 'd'
+ alt, ctrl, meta: none
+}
+
+key F {
+ label: 'F'
+ number: '3'
+ base: 'f'
+ shift, capslock: 'F'
+ capslock+shift: 'f'
+ alt, ctrl, meta: none
+}
+
+key G {
+ label: 'G'
+ number: '4'
+ base: 'g'
+ shift, capslock: 'G'
+ capslock+shift: 'g'
+ alt, ctrl, meta: none
+}
+
+key H {
+ label: 'H'
+ number: '4'
+ base: 'h'
+ shift, capslock: 'H'
+ capslock+shift: 'h'
+ alt, ctrl, meta: none
+}
+
+key J {
+ label: 'J'
+ number: '5'
+ base: 'j'
+ shift, capslock: 'J'
+ capslock+shift: 'j'
+ alt, ctrl, meta: none
+}
+
+key K {
+ label: 'K'
+ number: '5'
+ base: 'k'
+ shift, capslock: 'K'
+ capslock+shift: 'k'
+ alt, ctrl, meta: none
+}
+
+key L {
+ label: 'L'
+ number: '5'
+ base: 'l'
+ shift, capslock: 'L'
+ capslock+shift: 'l'
+ alt, ctrl, meta: none
+}
+
+key SEMICOLON {
+ label, number: ';'
+ base: ';'
+ shift: ':'
+ alt: '\u0303'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key APOSTROPHE {
+ label, number: '\u0300'
+ base: '\u0300'
+ alt: '{'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key BACKSLASH {
+ label, number: '<'
+ base: '<'
+ shift: '>'
+ alt: '}'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key ENTER {
+ label, number: '\n'
+ base: '\n'
+ alt, ctrl, meta: none
+}
+
+key EUROPE_2 {
+ label, number: '\u00ab'
+ base: '\u00ab'
+ shift: '\u00bb'
+ alt: '\u00b0'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key Z {
+ label: 'Z'
+ number: '9'
+ base: 'z'
+ shift, capslock: 'Z'
+ capslock+shift: 'z'
+ alt, ctrl, meta: none
+}
+
+key X {
+ label: 'X'
+ number: '9'
+ base: 'x'
+ shift, capslock: 'X'
+ capslock+shift: 'x'
+ alt, ctrl, meta: none
+}
+
+key C {
+ label: 'C'
+ number: '2'
+ base: 'c'
+ shift, capslock: 'C'
+ capslock+shift: 'c'
+ alt, ctrl, meta: none
+}
+
+key V {
+ label: 'V'
+ number: '8'
+ base: 'v'
+ shift, capslock: 'V'
+ capslock+shift: 'v'
+ alt, ctrl, meta: none
+}
+
+key B {
+ label: 'B'
+ number: '2'
+ base: 'b'
+ shift, capslock: 'B'
+ capslock+shift: 'b'
+ alt, ctrl, meta: none
+}
+
+key N {
+ label: 'N'
+ number: '6'
+ base: 'n'
+ shift, capslock: 'N'
+ capslock+shift: 'n'
+ alt, ctrl, meta: none
+}
+
+key M {
+ label: 'M'
+ number: '6'
+ base: 'm'
+ shift, capslock: 'M'
+ alt: '\u00b5'
+ alt+shift: none
+ capslock+alt: '\u00b5'
+ capslock+shift: 'm'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key COMMA {
+ label, number: ','
+ base: ','
+ shift: '\''
+ alt: '\u00af'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key PERIOD {
+ label, number: '.'
+ base: '.'
+ alt, ctrl, meta: none
+}
+
+key SLASH {
+ label: '\u00c9'
+ number: '\u00e9'
+ base: '\u00e9'
+ shift, capslock: '\u00c9'
+ alt: '\u0301'
+ alt+shift: none
+ capslock+alt: '\u0301'
+ capslock+shift: '\u00e9'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key SPACE {
+ label, number: ' '
+ base: ' '
+ alt, ctrl, meta: none
+}
diff --git a/xt9/keychars/qwerty-fr_CH.kcm b/xt9/keychars/qwerty-fr_CH.kcm
new file mode 100644
index 0000000..8f159f3
--- /dev/null
+++ b/xt9/keychars/qwerty-fr_CH.kcm
@@ -0,0 +1,441 @@
+type FULL
+
+key GRAVE {
+ label, number: '\u00a7'
+ base: '\u00a7'
+ shift: '\u00b0'
+ alt, ctrl, meta: none
+}
+
+key 1 {
+ label, number: '1'
+ base: '1'
+ shift: '+'
+ alt: '\u00a6'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 2 {
+ label, number: '2'
+ base: '2'
+ shift: '"'
+ alt: '@'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 3 {
+ label, number: '3'
+ base: '3'
+ shift: '*'
+ alt: '#'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 4 {
+ label, number: '4'
+ base: '4'
+ shift: '\u00e7'
+ alt: '\u00b0'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 5 {
+ label, number: '5'
+ base: '5'
+ shift: '%'
+ alt: '\u00a7'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 6 {
+ label, number: '6'
+ base: '6'
+ shift: '&'
+ alt: '\u00ac'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 7 {
+ label, number: '7'
+ base: '7'
+ shift: '/'
+ alt: '|'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 8 {
+ label, number: '8'
+ base: '8'
+ shift: '('
+ alt: '\u00a2'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 9 {
+ label, number: '9'
+ base: '9'
+ shift: ')'
+ alt, ctrl, meta: none
+}
+
+key 0 {
+ label, number: '0'
+ base: '0'
+ shift: '='
+ alt, ctrl, meta: none
+}
+
+key MINUS {
+ label, number: '\''
+ base: '\''
+ shift: '?'
+ alt: '\u0301'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key EQUALS {
+ label, number: '\u0302'
+ base: '\u0302'
+ shift: '\u0300'
+ alt: '\u0303'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key TAB {
+ label, number: '\t'
+ base: '\t'
+ alt, ctrl, meta: none
+}
+
+key Q {
+ label: 'Q'
+ number: '7'
+ base: 'q'
+ shift, capslock: 'Q'
+ capslock+shift: 'q'
+ alt, ctrl, meta: none
+}
+
+key W {
+ label: 'W'
+ number: '9'
+ base: 'w'
+ shift, capslock: 'W'
+ capslock+shift: 'w'
+ alt, ctrl, meta: none
+}
+
+key E {
+ label: 'E'
+ number: '3'
+ base: 'e'
+ shift, capslock: 'E'
+ alt: '\u20ac'
+ alt+shift: none
+ capslock+alt: '\u20ac'
+ capslock+shift: 'e'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key R {
+ label: 'R'
+ number: '7'
+ base: 'r'
+ shift, capslock: 'R'
+ capslock+shift: 'r'
+ alt, ctrl, meta: none
+}
+
+key T {
+ label: 'T'
+ number: '8'
+ base: 't'
+ shift, capslock: 'T'
+ capslock+shift: 't'
+ alt, ctrl, meta: none
+}
+
+key Z {
+ label: 'Z'
+ number: '9'
+ base: 'z'
+ shift, capslock: 'Z'
+ capslock+shift: 'z'
+ alt, ctrl, meta: none
+}
+
+key U {
+ label: 'U'
+ number: '8'
+ base: 'u'
+ shift, capslock: 'U'
+ capslock+shift: 'u'
+ alt, ctrl, meta: none
+}
+
+key I {
+ label: 'I'
+ number: '4'
+ base: 'i'
+ shift, capslock: 'I'
+ capslock+shift: 'i'
+ alt, ctrl, meta: none
+}
+
+key O {
+ label: 'O'
+ number: '6'
+ base: 'o'
+ shift, capslock: 'O'
+ capslock+shift: 'o'
+ alt, ctrl, meta: none
+}
+
+key P {
+ label: 'P'
+ number: '7'
+ base: 'p'
+ shift, capslock: 'P'
+ capslock+shift: 'p'
+ alt, ctrl, meta: none
+}
+
+key LEFT_BRACKET {
+ label, number: '\u00e8'
+ base: '\u00e8'
+ shift: '\u00fc'
+ alt: '['
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key RIGHT_BRACKET {
+ label, number: '\u0308'
+ base: '\u0308'
+ shift: '!'
+ alt: ']'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key A {
+ label: 'A'
+ number: '2'
+ base: 'a'
+ shift, capslock: 'A'
+ capslock+shift: 'a'
+ alt, ctrl, meta: none
+}
+
+key S {
+ label: 'S'
+ number: '7'
+ base: 's'
+ shift, capslock: 'S'
+ capslock+shift: 's'
+ alt, ctrl, meta: none
+}
+
+key D {
+ label: 'D'
+ number: '3'
+ base: 'd'
+ shift, capslock: 'D'
+ capslock+shift: 'd'
+ alt, ctrl, meta: none
+}
+
+key F {
+ label: 'F'
+ number: '3'
+ base: 'f'
+ shift, capslock: 'F'
+ capslock+shift: 'f'
+ alt, ctrl, meta: none
+}
+
+key G {
+ label: 'G'
+ number: '4'
+ base: 'g'
+ shift, capslock: 'G'
+ capslock+shift: 'g'
+ alt, ctrl, meta: none
+}
+
+key H {
+ label: 'H'
+ number: '4'
+ base: 'h'
+ shift, capslock: 'H'
+ capslock+shift: 'h'
+ alt, ctrl, meta: none
+}
+
+key J {
+ label: 'J'
+ number: '5'
+ base: 'j'
+ shift, capslock: 'J'
+ capslock+shift: 'j'
+ alt, ctrl, meta: none
+}
+
+key K {
+ label: 'K'
+ number: '5'
+ base: 'k'
+ shift, capslock: 'K'
+ capslock+shift: 'k'
+ alt, ctrl, meta: none
+}
+
+key L {
+ label: 'L'
+ number: '5'
+ base: 'l'
+ shift, capslock: 'L'
+ capslock+shift: 'l'
+ alt, ctrl, meta: none
+}
+
+key SEMICOLON {
+ label, number: '\u00e9'
+ base: '\u00e9'
+ shift: '\u00f6'
+ alt, ctrl, meta: none
+}
+
+key APOSTROPHE {
+ label, number: '\u00e0'
+ base: '\u00e0'
+ shift: '\u00e4'
+ alt: '{'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key BACKSLASH {
+ label, number: '$'
+ base: '$'
+ shift: '\u00a3'
+ alt: '}'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key ENTER {
+ label, number: '\n'
+ base: '\n'
+ alt, ctrl, meta: none
+}
+
+key EUROPE_2 {
+ label, number: '<'
+ base: '<'
+ shift: '>'
+ alt: '\\'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key Y {
+ label: 'Y'
+ number: '9'
+ base: 'y'
+ shift, capslock: 'Y'
+ capslock+shift: 'y'
+ alt, ctrl, meta: none
+}
+
+key X {
+ label: 'X'
+ number: '9'
+ base: 'x'
+ shift, capslock: 'X'
+ capslock+shift: 'x'
+ alt, ctrl, meta: none
+}
+
+key C {
+ label: 'C'
+ number: '2'
+ base: 'c'
+ shift, capslock: 'C'
+ capslock+shift: 'c'
+ alt, ctrl, meta: none
+}
+
+key V {
+ label: 'V'
+ number: '8'
+ base: 'v'
+ shift, capslock: 'V'
+ capslock+shift: 'v'
+ alt, ctrl, meta: none
+}
+
+key B {
+ label: 'B'
+ number: '2'
+ base: 'b'
+ shift, capslock: 'B'
+ capslock+shift: 'b'
+ alt, ctrl, meta: none
+}
+
+key N {
+ label: 'N'
+ number: '6'
+ base: 'n'
+ shift, capslock: 'N'
+ capslock+shift: 'n'
+ alt, ctrl, meta: none
+}
+
+key M {
+ label: 'M'
+ number: '6'
+ base: 'm'
+ shift, capslock: 'M'
+ capslock+shift: 'm'
+ alt, ctrl, meta: none
+}
+
+key COMMA {
+ label, number: ','
+ base: ','
+ shift: ';'
+ alt, ctrl, meta: none
+}
+
+key PERIOD {
+ label, number: '.'
+ base: '.'
+ shift: ':'
+ alt, ctrl, meta: none
+}
+
+key SLASH {
+ label, number: '-'
+ base: '-'
+ shift: '_'
+ alt, ctrl, meta: none
+}
+
+key SPACE {
+ label, number: ' '
+ base: ' '
+ alt, ctrl, meta: none
+}
diff --git a/xt9/keychars/qwerty-fr_FR.kcm b/xt9/keychars/qwerty-fr_FR.kcm
new file mode 100644
index 0000000..41134d4
--- /dev/null
+++ b/xt9/keychars/qwerty-fr_FR.kcm
@@ -0,0 +1,489 @@
+type FULL
+
+key GRAVE {
+ label, number: '\u00b2'
+ base: '\u00b2'
+ shift: none
+ alt, ctrl, meta: none
+}
+
+key 1 {
+ label: '&'
+ number: '1'
+ base: '&'
+ shift, capslock: '1'
+ capslock+shift: '&'
+ alt, ctrl, meta: none
+}
+
+key 2 {
+ label: '\u00e9'
+ number: '2'
+ base: '\u00e9'
+ shift, capslock: '2'
+ alt: '\u0303'
+ alt+shift: none
+ capslock+alt: '\u0303'
+ capslock+shift: '\u00e9'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key 3 {
+ label: '"'
+ number: '3'
+ base: '"'
+ shift, capslock: '3'
+ alt: '#'
+ alt+shift: none
+ capslock+alt: '#'
+ capslock+shift: '"'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key 4 {
+ label: '\''
+ number: '4'
+ base: '\''
+ shift, capslock: '4'
+ alt: '{'
+ alt+shift: none
+ capslock+alt: '{'
+ capslock+shift: '\''
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key 5 {
+ label: '('
+ number: '5'
+ base: '('
+ shift, capslock: '5'
+ alt: '['
+ alt+shift: none
+ capslock+alt: '['
+ capslock+shift: '('
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key 6 {
+ label: '-'
+ number: '6'
+ base: '-'
+ shift, capslock: '6'
+ alt: '|'
+ alt+shift: none
+ capslock+alt: '|'
+ capslock+shift: '-'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key 7 {
+ label: '\u00e8'
+ number: '7'
+ base: '\u00e8'
+ shift, capslock: '7'
+ alt: '\u0300'
+ alt+shift: none
+ capslock+alt: '\u0300'
+ capslock+shift: '\u00e8'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key 8 {
+ label: '_'
+ number: '8'
+ base: '_'
+ shift, capslock: '8'
+ alt: '\\'
+ alt+shift: none
+ capslock+alt: '\\'
+ capslock+shift: '_'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key 9 {
+ label: '\u00e7'
+ number: '9'
+ base: '\u00e7'
+ shift, capslock: '9'
+ alt: '^'
+ alt+shift: none
+ capslock+alt: '^'
+ capslock+shift: '\u00e7'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key 0 {
+ label: '\u00e0'
+ number: '0'
+ base: '\u00e0'
+ shift, capslock: '0'
+ alt: '@'
+ alt+shift: none
+ capslock+alt: '@'
+ capslock+shift: '\u00e0'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key MINUS {
+ label, number: ')'
+ base: ')'
+ shift, capslock: '\u00b0'
+ alt: ']'
+ alt+shift: none
+ capslock+alt: ']'
+ capslock+shift: ')'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key EQUALS {
+ label, number: '='
+ base: '='
+ shift, capslock: '+'
+ alt: '}'
+ alt+shift: none
+ capslock+alt: '}'
+ capslock+shift: '='
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key TAB {
+ label, number: '\t'
+ base: '\t'
+ alt, ctrl, meta: none
+}
+
+key A {
+ label: 'A'
+ number: '2'
+ base: 'a'
+ shift, capslock: 'A'
+ capslock+shift: 'a'
+ alt, ctrl, meta: none
+}
+
+key Z {
+ label: 'Z'
+ number: '9'
+ base: 'z'
+ shift, capslock: 'Z'
+ capslock+shift: 'z'
+ alt, ctrl, meta: none
+}
+
+key E {
+ label: 'E'
+ number: '3'
+ base: 'e'
+ shift, capslock: 'E'
+ alt: '\u20ac'
+ alt+shift: none
+ capslock+alt: '\u20ac'
+ capslock+shift: 'e'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key R {
+ label: 'R'
+ number: '7'
+ base: 'r'
+ shift, capslock: 'R'
+ capslock+shift: 'r'
+ alt, ctrl, meta: none
+}
+
+key T {
+ label: 'T'
+ number: '8'
+ base: 't'
+ shift, capslock: 'T'
+ capslock+shift: 't'
+ alt, ctrl, meta: none
+}
+
+key Y {
+ label: 'Y'
+ number: '9'
+ base: 'y'
+ shift, capslock: 'Y'
+ capslock+shift: 'y'
+ alt, ctrl, meta: none
+}
+
+key U {
+ label: 'U'
+ number: '8'
+ base: 'u'
+ shift, capslock: 'U'
+ capslock+shift: 'u'
+ alt, ctrl, meta: none
+}
+
+key I {
+ label: 'I'
+ number: '4'
+ base: 'i'
+ shift, capslock: 'I'
+ capslock+shift: 'i'
+ alt, ctrl, meta: none
+}
+
+key O {
+ label: 'O'
+ number: '6'
+ base: 'o'
+ shift, capslock: 'O'
+ capslock+shift: 'o'
+ alt, ctrl, meta: none
+}
+
+key P {
+ label: 'P'
+ number: '7'
+ base: 'p'
+ shift, capslock: 'P'
+ capslock+shift: 'p'
+ alt, ctrl, meta: none
+}
+
+key LEFT_BRACKET {
+ label, number: '\u0302'
+ base: '\u0302'
+ shift, capslock: '\u0308'
+ capslock+shift: '\u0302'
+ alt, ctrl, meta: none
+}
+
+key RIGHT_BRACKET {
+ label, number: '$'
+ base: '$'
+ shift, capslock: '\u00a3'
+ alt: '\u00a4'
+ alt+shift: none
+ capslock+alt: '\u00a4'
+ capslock+shift: '$'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key Q {
+ label: 'Q'
+ number: '7'
+ base: 'q'
+ shift, capslock: 'Q'
+ capslock+shift: 'q'
+ alt, ctrl, meta: none
+}
+
+key S {
+ label: 'S'
+ number: '7'
+ base: 's'
+ shift, capslock: 'S'
+ capslock+shift: 's'
+ alt, ctrl, meta: none
+}
+
+key D {
+ label: 'D'
+ number: '3'
+ base: 'd'
+ shift, capslock: 'D'
+ capslock+shift: 'd'
+ alt, ctrl, meta: none
+}
+
+key F {
+ label: 'F'
+ number: '3'
+ base: 'f'
+ shift, capslock: 'F'
+ capslock+shift: 'f'
+ alt, ctrl, meta: none
+}
+
+key G {
+ label: 'G'
+ number: '4'
+ base: 'g'
+ shift, capslock: 'G'
+ capslock+shift: 'g'
+ alt, ctrl, meta: none
+}
+
+key H {
+ label: 'H'
+ number: '4'
+ base: 'h'
+ shift, capslock: 'H'
+ capslock+shift: 'h'
+ alt, ctrl, meta: none
+}
+
+key J {
+ label: 'J'
+ number: '5'
+ base: 'j'
+ shift, capslock: 'J'
+ capslock+shift: 'j'
+ alt, ctrl, meta: none
+}
+
+key K {
+ label: 'K'
+ number: '5'
+ base: 'k'
+ shift, capslock: 'K'
+ capslock+shift: 'k'
+ alt, ctrl, meta: none
+}
+
+key L {
+ label: 'L'
+ number: '5'
+ base: 'l'
+ shift, capslock: 'L'
+ capslock+shift: 'l'
+ alt, ctrl, meta: none
+}
+
+key M {
+ label: 'M'
+ number: '6'
+ base: 'm'
+ shift, capslock: 'M'
+ capslock+shift: 'm'
+ alt, ctrl, meta: none
+}
+
+key APOSTROPHE {
+ label, number: '\u00f9'
+ base: '\u00f9'
+ shift, capslock: '%'
+ capslock+shift: '\u00f9'
+ alt, ctrl, meta: none
+}
+
+key BACKSLASH {
+ label, number: '*'
+ base: '*'
+ shift, capslock: '\u00b5'
+ capslock+shift: '*'
+ alt, ctrl, meta: none
+}
+
+key ENTER {
+ label, number: '\n'
+ base: '\n'
+ alt, ctrl, meta: none
+}
+
+key EUROPE_2 {
+ label, number: '<'
+ base: '<'
+ shift: '>'
+ alt, ctrl, meta: none
+}
+
+key W {
+ label: 'W'
+ number: '9'
+ base: 'w'
+ shift, capslock: 'W'
+ capslock+shift: 'w'
+ alt, ctrl, meta: none
+}
+
+key X {
+ label: 'X'
+ number: '9'
+ base: 'x'
+ shift, capslock: 'X'
+ capslock+shift: 'x'
+ alt, ctrl, meta: none
+}
+
+key C {
+ label: 'C'
+ number: '2'
+ base: 'c'
+ shift, capslock: 'C'
+ capslock+shift: 'c'
+ alt, ctrl, meta: none
+}
+
+key V {
+ label: 'V'
+ number: '8'
+ base: 'v'
+ shift, capslock: 'V'
+ capslock+shift: 'v'
+ alt, ctrl, meta: none
+}
+
+key B {
+ label: 'B'
+ number: '2'
+ base: 'b'
+ shift, capslock: 'B'
+ capslock+shift: 'b'
+ alt, ctrl, meta: none
+}
+
+key N {
+ label: 'N'
+ number: '6'
+ base: 'n'
+ shift, capslock: 'N'
+ capslock+shift: 'n'
+ alt, ctrl, meta: none
+}
+
+key COMMA {
+ label, number: ','
+ base: ','
+ shift, capslock: '?'
+ capslock+shift: ','
+ alt, ctrl, meta: none
+}
+
+key SEMICOLON {
+ label, number: ';'
+ base: ';'
+ shift, capslock: '.'
+ capslock+shift: ';'
+ alt, ctrl, meta: none
+}
+
+key PERIOD {
+ label, number: ':'
+ base: ':'
+ shift, capslock: '/'
+ capslock+shift: ':'
+ alt, ctrl, meta: none
+}
+
+key SLASH {
+ label, number: '!'
+ base: '!'
+ shift, capslock: '\u00a7'
+ capslock+shift: '!'
+ alt, ctrl, meta: none
+}
+
+key SPACE {
+ label, number: ' '
+ base: ' '
+ alt, ctrl, meta: none
+}
diff --git a/xt9/keychars/qwerty-hu_HU.kcm b/xt9/keychars/qwerty-hu_HU.kcm
new file mode 100644
index 0000000..8bbc150
--- /dev/null
+++ b/xt9/keychars/qwerty-hu_HU.kcm
@@ -0,0 +1,565 @@
+type FULL
+
+key GRAVE {
+ label, number: '0'
+ base: '0'
+ shift: '\u00a7'
+ alt, ctrl, meta: none
+}
+
+key 1 {
+ label, number: '1'
+ base: '1'
+ shift: '\''
+ alt: '~'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 2 {
+ label, number: '2'
+ base: '2'
+ shift: '"'
+ alt: '\u030c'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 3 {
+ label, number: '3'
+ base: '3'
+ shift: '+'
+ alt: '\u0302'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 4 {
+ label, number: '4'
+ base: '4'
+ shift: '!'
+ alt: '\u0306'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 5 {
+ label, number: '5'
+ base: '5'
+ shift: '%'
+ alt: '\u030a'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 6 {
+ label, number: '6'
+ base: '6'
+ shift: '/'
+ alt: '\u0328'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 7 {
+ label, number: '7'
+ base: '7'
+ shift: '='
+ alt: '`'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 8 {
+ label, number: '8'
+ base: '8'
+ shift: '('
+ alt: '\u0307'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 9 {
+ label, number: '9'
+ base: '9'
+ shift: ')'
+ alt: '\u0301'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 0 {
+ label: '\u00d6'
+ number: '\u00f6'
+ base: '\u00f6'
+ shift, capslock: '\u00d6'
+ alt: '\u030b'
+ alt+shift: none
+ capslock+alt: '\u030b'
+ capslock+shift: '\u00f6'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key MINUS {
+ label: '\u00dc'
+ number: '\u00fc'
+ base: '\u00fc'
+ shift, capslock: '\u00dc'
+ alt: '\u0308'
+ alt+shift: none
+ capslock+alt: '\u0308'
+ capslock+shift: '\u00fc'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key EQUALS {
+ label: '\u00d3'
+ number: '\u00f3'
+ base: '\u00f3'
+ shift, capslock: '\u00d3'
+ alt: '\u0327'
+ alt+shift: none
+ capslock+alt: '\u0327'
+ capslock+shift: '\u00f3'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key TAB {
+ label, number: '\t'
+ base: '\t'
+ alt, ctrl, meta: none
+}
+
+key Q {
+ label: 'Q'
+ number: '7'
+ base: 'q'
+ shift, capslock: 'Q'
+ alt: '\\'
+ alt+shift: none
+ capslock+alt: '\\'
+ capslock+shift: 'q'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key W {
+ label: 'W'
+ number: '9'
+ base: 'w'
+ shift, capslock: 'W'
+ alt: '|'
+ alt+shift: none
+ capslock+alt: '|'
+ capslock+shift: 'w'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key E {
+ label: 'E'
+ number: '3'
+ base: 'e'
+ shift, capslock: 'E'
+ alt: '\u00c4'
+ alt+shift: none
+ capslock+alt: '\u00c4'
+ capslock+shift: 'e'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key R {
+ label: 'R'
+ number: '7'
+ base: 'r'
+ shift, capslock: 'R'
+ capslock+shift: 'r'
+ alt, ctrl, meta: none
+}
+
+key T {
+ label: 'T'
+ number: '8'
+ base: 't'
+ shift, capslock: 'T'
+ capslock+shift: 't'
+ alt, ctrl, meta: none
+}
+
+key Z {
+ label: 'Z'
+ number: '9'
+ base: 'z'
+ shift, capslock: 'Z'
+ capslock+shift: 'z'
+ alt, ctrl, meta: none
+}
+
+key U {
+ label: 'U'
+ number: '8'
+ base: 'u'
+ shift, capslock: 'U'
+ alt: '\u20ac'
+ alt+shift: none
+ capslock+alt: '\u20ac'
+ capslock+shift: 'u'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key I {
+ label: 'I'
+ number: '4'
+ base: 'i'
+ shift, capslock: 'I'
+ alt: '\u00cd'
+ alt+shift: none
+ capslock+alt: '\u00cd'
+ capslock+shift: 'i'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key O {
+ label: 'O'
+ number: '6'
+ base: 'o'
+ shift, capslock: 'O'
+ capslock+shift: 'o'
+ alt, ctrl, meta: none
+}
+
+key P {
+ label: 'P'
+ number: '7'
+ base: 'p'
+ shift, capslock: 'P'
+ capslock+shift: 'p'
+ alt, ctrl, meta: none
+}
+
+key LEFT_BRACKET {
+ label: '\u0150'
+ number: '\u0151'
+ base: '\u0151'
+ shift, capslock: '\u0150'
+ alt: '\u00f7'
+ alt+shift: none
+ capslock+alt: '\u00f7'
+ capslock+shift: '\u0151'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key RIGHT_BRACKET {
+ label: '\u00da'
+ number: '\u00fa'
+ base: '\u00fa'
+ shift, capslock: '\u00da'
+ alt: '\u00d7'
+ alt+shift: none
+ capslock+alt: '\u00d7'
+ capslock+shift: '\u00fa'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key A {
+ label: 'A'
+ number: '2'
+ base: 'a'
+ shift, capslock: 'A'
+ alt: '\u00e4'
+ alt+shift: none
+ capslock+alt: '\u00e4'
+ capslock+shift: 'a'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key S {
+ label: 'S'
+ number: '7'
+ base: 's'
+ shift, capslock: 'S'
+ alt: '\u0111'
+ alt+shift: none
+ capslock+alt: '\u0111'
+ capslock+shift: 's'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key D {
+ label: 'D'
+ number: '3'
+ base: 'd'
+ shift, capslock: 'D'
+ alt: '\u0110'
+ alt+shift: none
+ capslock+alt: '\u0110'
+ capslock+shift: 'd'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key F {
+ label: 'F'
+ number: '3'
+ base: 'f'
+ shift, capslock: 'F'
+ alt: '['
+ alt+shift: none
+ capslock+alt: '['
+ capslock+shift: 'f'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key G {
+ label: 'G'
+ number: '4'
+ base: 'g'
+ shift, capslock: 'G'
+ alt: ']'
+ alt+shift: none
+ capslock+alt: ']'
+ capslock+shift: 'g'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key H {
+ label: 'H'
+ number: '4'
+ base: 'h'
+ shift, capslock: 'H'
+ capslock+shift: 'h'
+ alt, ctrl, meta: none
+}
+
+key J {
+ label: 'J'
+ number: '5'
+ base: 'j'
+ shift, capslock: 'J'
+ alt: '\u00ed'
+ alt+shift: none
+ capslock+alt: '\u00ed'
+ capslock+shift: 'j'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key K {
+ label: 'K'
+ number: '5'
+ base: 'k'
+ shift, capslock: 'K'
+ alt: '\u0142'
+ alt+shift: none
+ capslock+alt: '\u0142'
+ capslock+shift: 'k'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key L {
+ label: 'L'
+ number: '5'
+ base: 'l'
+ shift, capslock: 'L'
+ alt: '\u0141'
+ alt+shift: none
+ capslock+alt: '\u0141'
+ capslock+shift: 'l'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key SEMICOLON {
+ label: '\u00c9'
+ number: '\u00e9'
+ base: '\u00e9'
+ shift, capslock: '\u00c9'
+ alt: '$'
+ alt+shift: none
+ capslock+alt: '$'
+ capslock+shift: '\u00e9'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key APOSTROPHE {
+ label: '\u00c1'
+ number: '\u00e1'
+ base: '\u00e1'
+ shift, capslock: '\u00c1'
+ alt: '\u00df'
+ alt+shift: none
+ capslock+alt: '\u00df'
+ capslock+shift: '\u00e1'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key BACKSLASH {
+ label: '\u0170'
+ number: '\u0171'
+ base: '\u0171'
+ shift, capslock: '\u0170'
+ alt: '\u00a4'
+ alt+shift: none
+ capslock+alt: '\u00a4'
+ capslock+shift: '\u0171'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key ENTER {
+ label, number: '\n'
+ base: '\n'
+ alt, ctrl, meta: none
+}
+
+key EUROPE_2 {
+ label: '\u00cd'
+ number: '\u00ed'
+ base: '\u00ed'
+ shift, capslock: '\u00cd'
+ alt: '<'
+ alt+shift: none
+ capslock+alt: '<'
+ capslock+shift: '\u00ed'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key Y {
+ label: 'Y'
+ number: '9'
+ base: 'y'
+ shift, capslock: 'Y'
+ alt: '>'
+ alt+shift: none
+ capslock+alt: '>'
+ capslock+shift: 'y'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key X {
+ label: 'X'
+ number: '9'
+ base: 'x'
+ shift, capslock: 'X'
+ alt: '#'
+ alt+shift: none
+ capslock+alt: '#'
+ capslock+shift: 'x'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key C {
+ label: 'C'
+ number: '2'
+ base: 'c'
+ shift, capslock: 'C'
+ alt: '&'
+ alt+shift: none
+ capslock+alt: '&'
+ capslock+shift: 'c'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key V {
+ label: 'V'
+ number: '8'
+ base: 'v'
+ shift, capslock: 'V'
+ alt: '@'
+ alt+shift: none
+ capslock+alt: '@'
+ capslock+shift: 'v'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key B {
+ label: 'B'
+ number: '2'
+ base: 'b'
+ shift, capslock: 'B'
+ alt: '{'
+ alt+shift: none
+ capslock+alt: '{'
+ capslock+shift: 'b'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key N {
+ label: 'N'
+ number: '6'
+ base: 'n'
+ shift, capslock: 'N'
+ alt: '}'
+ alt+shift: none
+ capslock+alt: '}'
+ capslock+shift: 'n'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key M {
+ label: 'M'
+ number: '6'
+ base: 'm'
+ shift, capslock: 'M'
+ alt: '<'
+ alt+shift: none
+ capslock+alt: '<'
+ capslock+shift: 'm'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key COMMA {
+ label, number: ','
+ base: ','
+ shift: '?'
+ alt: ';'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key PERIOD {
+ label, number: '.'
+ base: '.'
+ shift: ':'
+ alt: '>'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key SLASH {
+ label, number: '-'
+ base: '-'
+ shift: '_'
+ alt: '*'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key SPACE {
+ label, number: ' '
+ base: ' '
+ alt, ctrl, meta: none
+}
diff --git a/xt9/keychars/qwerty-it_CH.kcm b/xt9/keychars/qwerty-it_CH.kcm
new file mode 100644
index 0000000..72d1020
--- /dev/null
+++ b/xt9/keychars/qwerty-it_CH.kcm
@@ -0,0 +1,421 @@
+type FULL
+
+key GRAVE {
+ label, number: '\\'
+ base: '\\'
+ shift: '|'
+ alt, ctrl, meta: none
+}
+
+key 1 {
+ label, number: '1'
+ base: '1'
+ shift: '!'
+ alt, ctrl, meta: none
+}
+
+key 2 {
+ label, number: '2'
+ base: '2'
+ shift: '"'
+ alt, ctrl, meta: none
+}
+
+key 3 {
+ label, number: '3'
+ base: '3'
+ shift: '\u00a3'
+ alt, ctrl, meta: none
+}
+
+key 4 {
+ label, number: '4'
+ base: '4'
+ shift: '$'
+ alt, ctrl, meta: none
+}
+
+key 5 {
+ label, number: '5'
+ base: '5'
+ shift: '%'
+ alt: '\u20ac'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 6 {
+ label, number: '6'
+ base: '6'
+ shift: '&'
+ alt, ctrl, meta: none
+}
+
+key 7 {
+ label, number: '7'
+ base: '7'
+ shift: '/'
+ alt, ctrl, meta: none
+}
+
+key 8 {
+ label, number: '8'
+ base: '8'
+ shift: '('
+ alt, ctrl, meta: none
+}
+
+key 9 {
+ label, number: '9'
+ base: '9'
+ shift: ')'
+ alt, ctrl, meta: none
+}
+
+key 0 {
+ label, number: '0'
+ base: '0'
+ shift: '='
+ alt, ctrl, meta: none
+}
+
+key MINUS {
+ label, number: '\''
+ base: '\''
+ shift: '?'
+ alt, ctrl, meta: none
+}
+
+key EQUALS {
+ label, number: '\u00ec'
+ base: '\u00ec'
+ shift: '^'
+ alt, ctrl, meta: none
+}
+
+key TAB {
+ label, number: '\t'
+ base: '\t'
+ alt, ctrl, meta: none
+}
+
+key Q {
+ label: 'Q'
+ number: '7'
+ base: 'q'
+ shift, capslock: 'Q'
+ capslock+shift: 'q'
+ alt, ctrl, meta: none
+}
+
+key W {
+ label: 'W'
+ number: '9'
+ base: 'w'
+ shift, capslock: 'W'
+ capslock+shift: 'w'
+ alt, ctrl, meta: none
+}
+
+key E {
+ label: 'E'
+ number: '3'
+ base: 'e'
+ shift, capslock: 'E'
+ alt: '\u20ac'
+ alt+shift: none
+ capslock+alt: '\u20ac'
+ capslock+shift: 'e'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key R {
+ label: 'R'
+ number: '7'
+ base: 'r'
+ shift, capslock: 'R'
+ capslock+shift: 'r'
+ alt, ctrl, meta: none
+}
+
+key T {
+ label: 'T'
+ number: '8'
+ base: 't'
+ shift, capslock: 'T'
+ capslock+shift: 't'
+ alt, ctrl, meta: none
+}
+
+key Y {
+ label: 'Y'
+ number: '9'
+ base: 'y'
+ shift, capslock: 'Y'
+ capslock+shift: 'y'
+ alt, ctrl, meta: none
+}
+
+key U {
+ label: 'U'
+ number: '8'
+ base: 'u'
+ shift, capslock: 'U'
+ capslock+shift: 'u'
+ alt, ctrl, meta: none
+}
+
+key I {
+ label: 'I'
+ number: '4'
+ base: 'i'
+ shift, capslock: 'I'
+ capslock+shift: 'i'
+ alt, ctrl, meta: none
+}
+
+key O {
+ label: 'O'
+ number: '6'
+ base: 'o'
+ shift, capslock: 'O'
+ capslock+shift: 'o'
+ alt, ctrl, meta: none
+}
+
+key P {
+ label: 'P'
+ number: '7'
+ base: 'p'
+ shift, capslock: 'P'
+ capslock+shift: 'p'
+ alt, ctrl, meta: none
+}
+
+key LEFT_BRACKET {
+ label, number: '\u00e8'
+ base: '\u00e8'
+ shift: '\u00e9'
+ alt: '['
+ alt+shift: '{'
+ ctrl, meta: none
+}
+
+key RIGHT_BRACKET {
+ label, number: '+'
+ base: '+'
+ shift: '*'
+ alt: ']'
+ alt+shift: '}'
+ ctrl, meta: none
+}
+
+key A {
+ label: 'A'
+ number: '2'
+ base: 'a'
+ shift, capslock: 'A'
+ capslock+shift: 'a'
+ alt, ctrl, meta: none
+}
+
+key S {
+ label: 'S'
+ number: '7'
+ base: 's'
+ shift, capslock: 'S'
+ capslock+shift: 's'
+ alt, ctrl, meta: none
+}
+
+key D {
+ label: 'D'
+ number: '3'
+ base: 'd'
+ shift, capslock: 'D'
+ capslock+shift: 'd'
+ alt, ctrl, meta: none
+}
+
+key F {
+ label: 'F'
+ number: '3'
+ base: 'f'
+ shift, capslock: 'F'
+ capslock+shift: 'f'
+ alt, ctrl, meta: none
+}
+
+key G {
+ label: 'G'
+ number: '4'
+ base: 'g'
+ shift, capslock: 'G'
+ capslock+shift: 'g'
+ alt, ctrl, meta: none
+}
+
+key H {
+ label: 'H'
+ number: '4'
+ base: 'h'
+ shift, capslock: 'H'
+ capslock+shift: 'h'
+ alt, ctrl, meta: none
+}
+
+key J {
+ label: 'J'
+ number: '5'
+ base: 'j'
+ shift, capslock: 'J'
+ capslock+shift: 'j'
+ alt, ctrl, meta: none
+}
+
+key K {
+ label: 'K'
+ number: '5'
+ base: 'k'
+ shift, capslock: 'K'
+ capslock+shift: 'k'
+ alt, ctrl, meta: none
+}
+
+key L {
+ label: 'L'
+ number: '5'
+ base: 'l'
+ shift, capslock: 'L'
+ capslock+shift: 'l'
+ alt, ctrl, meta: none
+}
+
+key SEMICOLON {
+ label, number: '\u00f2'
+ base: '\u00f2'
+ shift: '\u00e7'
+ alt: '@'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key APOSTROPHE {
+ label, number: '\u00e0'
+ base: '\u00e0'
+ shift: '\u00b0'
+ alt: '#'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key BACKSLASH {
+ label, number: '\u00f9'
+ base: '\u00f9'
+ shift: '\u00a7'
+ alt, ctrl, meta: none
+}
+
+key ENTER {
+ label, number: '\n'
+ base: '\n'
+ alt, ctrl, meta: none
+}
+
+key EUROPE_2 {
+ label, number: '<'
+ base: '<'
+ shift: '>'
+ alt, ctrl, meta: none
+}
+
+key Z {
+ label: 'Z'
+ number: '9'
+ base: 'z'
+ shift, capslock: 'Z'
+ capslock+shift: 'z'
+ alt, ctrl, meta: none
+}
+
+key X {
+ label: 'X'
+ number: '9'
+ base: 'x'
+ shift, capslock: 'X'
+ capslock+shift: 'x'
+ alt, ctrl, meta: none
+}
+
+key C {
+ label: 'C'
+ number: '2'
+ base: 'c'
+ shift, capslock: 'C'
+ capslock+shift: 'c'
+ alt, ctrl, meta: none
+}
+
+key V {
+ label: 'V'
+ number: '8'
+ base: 'v'
+ shift, capslock: 'V'
+ capslock+shift: 'v'
+ alt, ctrl, meta: none
+}
+
+key B {
+ label: 'B'
+ number: '2'
+ base: 'b'
+ shift, capslock: 'B'
+ capslock+shift: 'b'
+ alt, ctrl, meta: none
+}
+
+key N {
+ label: 'N'
+ number: '6'
+ base: 'n'
+ shift, capslock: 'N'
+ capslock+shift: 'n'
+ alt, ctrl, meta: none
+}
+
+key M {
+ label: 'M'
+ number: '6'
+ base: 'm'
+ shift, capslock: 'M'
+ capslock+shift: 'm'
+ alt, ctrl, meta: none
+}
+
+key COMMA {
+ label, number: ','
+ base: ','
+ shift: ';'
+ alt, ctrl, meta: none
+}
+
+key PERIOD {
+ label, number: '.'
+ base: '.'
+ shift: ':'
+ alt, ctrl, meta: none
+}
+
+key SLASH {
+ label, number: '-'
+ base: '-'
+ shift: '_'
+ alt, ctrl, meta: none
+}
+
+key SPACE {
+ label, number: ' '
+ base: ' '
+ alt, ctrl, meta: none
+}
diff --git a/xt9/keychars/qwerty-it_IT.kcm b/xt9/keychars/qwerty-it_IT.kcm
new file mode 100644
index 0000000..72d1020
--- /dev/null
+++ b/xt9/keychars/qwerty-it_IT.kcm
@@ -0,0 +1,421 @@
+type FULL
+
+key GRAVE {
+ label, number: '\\'
+ base: '\\'
+ shift: '|'
+ alt, ctrl, meta: none
+}
+
+key 1 {
+ label, number: '1'
+ base: '1'
+ shift: '!'
+ alt, ctrl, meta: none
+}
+
+key 2 {
+ label, number: '2'
+ base: '2'
+ shift: '"'
+ alt, ctrl, meta: none
+}
+
+key 3 {
+ label, number: '3'
+ base: '3'
+ shift: '\u00a3'
+ alt, ctrl, meta: none
+}
+
+key 4 {
+ label, number: '4'
+ base: '4'
+ shift: '$'
+ alt, ctrl, meta: none
+}
+
+key 5 {
+ label, number: '5'
+ base: '5'
+ shift: '%'
+ alt: '\u20ac'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 6 {
+ label, number: '6'
+ base: '6'
+ shift: '&'
+ alt, ctrl, meta: none
+}
+
+key 7 {
+ label, number: '7'
+ base: '7'
+ shift: '/'
+ alt, ctrl, meta: none
+}
+
+key 8 {
+ label, number: '8'
+ base: '8'
+ shift: '('
+ alt, ctrl, meta: none
+}
+
+key 9 {
+ label, number: '9'
+ base: '9'
+ shift: ')'
+ alt, ctrl, meta: none
+}
+
+key 0 {
+ label, number: '0'
+ base: '0'
+ shift: '='
+ alt, ctrl, meta: none
+}
+
+key MINUS {
+ label, number: '\''
+ base: '\''
+ shift: '?'
+ alt, ctrl, meta: none
+}
+
+key EQUALS {
+ label, number: '\u00ec'
+ base: '\u00ec'
+ shift: '^'
+ alt, ctrl, meta: none
+}
+
+key TAB {
+ label, number: '\t'
+ base: '\t'
+ alt, ctrl, meta: none
+}
+
+key Q {
+ label: 'Q'
+ number: '7'
+ base: 'q'
+ shift, capslock: 'Q'
+ capslock+shift: 'q'
+ alt, ctrl, meta: none
+}
+
+key W {
+ label: 'W'
+ number: '9'
+ base: 'w'
+ shift, capslock: 'W'
+ capslock+shift: 'w'
+ alt, ctrl, meta: none
+}
+
+key E {
+ label: 'E'
+ number: '3'
+ base: 'e'
+ shift, capslock: 'E'
+ alt: '\u20ac'
+ alt+shift: none
+ capslock+alt: '\u20ac'
+ capslock+shift: 'e'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key R {
+ label: 'R'
+ number: '7'
+ base: 'r'
+ shift, capslock: 'R'
+ capslock+shift: 'r'
+ alt, ctrl, meta: none
+}
+
+key T {
+ label: 'T'
+ number: '8'
+ base: 't'
+ shift, capslock: 'T'
+ capslock+shift: 't'
+ alt, ctrl, meta: none
+}
+
+key Y {
+ label: 'Y'
+ number: '9'
+ base: 'y'
+ shift, capslock: 'Y'
+ capslock+shift: 'y'
+ alt, ctrl, meta: none
+}
+
+key U {
+ label: 'U'
+ number: '8'
+ base: 'u'
+ shift, capslock: 'U'
+ capslock+shift: 'u'
+ alt, ctrl, meta: none
+}
+
+key I {
+ label: 'I'
+ number: '4'
+ base: 'i'
+ shift, capslock: 'I'
+ capslock+shift: 'i'
+ alt, ctrl, meta: none
+}
+
+key O {
+ label: 'O'
+ number: '6'
+ base: 'o'
+ shift, capslock: 'O'
+ capslock+shift: 'o'
+ alt, ctrl, meta: none
+}
+
+key P {
+ label: 'P'
+ number: '7'
+ base: 'p'
+ shift, capslock: 'P'
+ capslock+shift: 'p'
+ alt, ctrl, meta: none
+}
+
+key LEFT_BRACKET {
+ label, number: '\u00e8'
+ base: '\u00e8'
+ shift: '\u00e9'
+ alt: '['
+ alt+shift: '{'
+ ctrl, meta: none
+}
+
+key RIGHT_BRACKET {
+ label, number: '+'
+ base: '+'
+ shift: '*'
+ alt: ']'
+ alt+shift: '}'
+ ctrl, meta: none
+}
+
+key A {
+ label: 'A'
+ number: '2'
+ base: 'a'
+ shift, capslock: 'A'
+ capslock+shift: 'a'
+ alt, ctrl, meta: none
+}
+
+key S {
+ label: 'S'
+ number: '7'
+ base: 's'
+ shift, capslock: 'S'
+ capslock+shift: 's'
+ alt, ctrl, meta: none
+}
+
+key D {
+ label: 'D'
+ number: '3'
+ base: 'd'
+ shift, capslock: 'D'
+ capslock+shift: 'd'
+ alt, ctrl, meta: none
+}
+
+key F {
+ label: 'F'
+ number: '3'
+ base: 'f'
+ shift, capslock: 'F'
+ capslock+shift: 'f'
+ alt, ctrl, meta: none
+}
+
+key G {
+ label: 'G'
+ number: '4'
+ base: 'g'
+ shift, capslock: 'G'
+ capslock+shift: 'g'
+ alt, ctrl, meta: none
+}
+
+key H {
+ label: 'H'
+ number: '4'
+ base: 'h'
+ shift, capslock: 'H'
+ capslock+shift: 'h'
+ alt, ctrl, meta: none
+}
+
+key J {
+ label: 'J'
+ number: '5'
+ base: 'j'
+ shift, capslock: 'J'
+ capslock+shift: 'j'
+ alt, ctrl, meta: none
+}
+
+key K {
+ label: 'K'
+ number: '5'
+ base: 'k'
+ shift, capslock: 'K'
+ capslock+shift: 'k'
+ alt, ctrl, meta: none
+}
+
+key L {
+ label: 'L'
+ number: '5'
+ base: 'l'
+ shift, capslock: 'L'
+ capslock+shift: 'l'
+ alt, ctrl, meta: none
+}
+
+key SEMICOLON {
+ label, number: '\u00f2'
+ base: '\u00f2'
+ shift: '\u00e7'
+ alt: '@'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key APOSTROPHE {
+ label, number: '\u00e0'
+ base: '\u00e0'
+ shift: '\u00b0'
+ alt: '#'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key BACKSLASH {
+ label, number: '\u00f9'
+ base: '\u00f9'
+ shift: '\u00a7'
+ alt, ctrl, meta: none
+}
+
+key ENTER {
+ label, number: '\n'
+ base: '\n'
+ alt, ctrl, meta: none
+}
+
+key EUROPE_2 {
+ label, number: '<'
+ base: '<'
+ shift: '>'
+ alt, ctrl, meta: none
+}
+
+key Z {
+ label: 'Z'
+ number: '9'
+ base: 'z'
+ shift, capslock: 'Z'
+ capslock+shift: 'z'
+ alt, ctrl, meta: none
+}
+
+key X {
+ label: 'X'
+ number: '9'
+ base: 'x'
+ shift, capslock: 'X'
+ capslock+shift: 'x'
+ alt, ctrl, meta: none
+}
+
+key C {
+ label: 'C'
+ number: '2'
+ base: 'c'
+ shift, capslock: 'C'
+ capslock+shift: 'c'
+ alt, ctrl, meta: none
+}
+
+key V {
+ label: 'V'
+ number: '8'
+ base: 'v'
+ shift, capslock: 'V'
+ capslock+shift: 'v'
+ alt, ctrl, meta: none
+}
+
+key B {
+ label: 'B'
+ number: '2'
+ base: 'b'
+ shift, capslock: 'B'
+ capslock+shift: 'b'
+ alt, ctrl, meta: none
+}
+
+key N {
+ label: 'N'
+ number: '6'
+ base: 'n'
+ shift, capslock: 'N'
+ capslock+shift: 'n'
+ alt, ctrl, meta: none
+}
+
+key M {
+ label: 'M'
+ number: '6'
+ base: 'm'
+ shift, capslock: 'M'
+ capslock+shift: 'm'
+ alt, ctrl, meta: none
+}
+
+key COMMA {
+ label, number: ','
+ base: ','
+ shift: ';'
+ alt, ctrl, meta: none
+}
+
+key PERIOD {
+ label, number: '.'
+ base: '.'
+ shift: ':'
+ alt, ctrl, meta: none
+}
+
+key SLASH {
+ label, number: '-'
+ base: '-'
+ shift: '_'
+ alt, ctrl, meta: none
+}
+
+key SPACE {
+ label, number: ' '
+ base: ' '
+ alt, ctrl, meta: none
+}
diff --git a/xt9/keychars/qwerty-iw_IL.kcm b/xt9/keychars/qwerty-iw_IL.kcm
new file mode 100644
index 0000000..422d858
--- /dev/null
+++ b/xt9/keychars/qwerty-iw_IL.kcm
@@ -0,0 +1,429 @@
+type FULL
+
+key GRAVE {
+ label, number: ';'
+ base: ';'
+ shift: '~'
+ capslock+shift: '\u05b0'
+ alt, ctrl, meta: none
+}
+
+key 1 {
+ label, number: '1'
+ base: '1'
+ shift: '!'
+ capslock+shift: '\u05b1'
+ alt, ctrl, meta: none
+}
+
+key 2 {
+ label, number: '2'
+ base: '2'
+ shift: '@'
+ capslock+shift: '\u05b2'
+ alt, ctrl, meta: none
+}
+
+key 3 {
+ label, number: '3'
+ base: '3'
+ shift: '#'
+ capslock+shift: '\u05b3'
+ alt, ctrl, meta: none
+}
+
+key 4 {
+ label, number: '4'
+ base: '4'
+ shift: '$'
+ alt: '\u20aa'
+ alt+shift: none
+ capslock+shift: '\u05b4'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key 5 {
+ label, number: '5'
+ base: '5'
+ shift: '%'
+ capslock+shift: '\u05b5'
+ alt, ctrl, meta: none
+}
+
+key 6 {
+ label, number: '6'
+ base: '6'
+ shift: '^'
+ capslock+shift: '\u05b6'
+ alt, ctrl, meta: none
+}
+
+key 7 {
+ label, number: '7'
+ base: '7'
+ shift: '&'
+ capslock+shift: '\u05b7'
+ alt, ctrl, meta: none
+}
+
+key 8 {
+ label, number: '8'
+ base: '8'
+ shift: '*'
+ capslock+shift: '\u05b8'
+ alt, ctrl, meta: none
+}
+
+key 9 {
+ label, number: '9'
+ base: '9'
+ shift: '('
+ capslock+shift: '\u05c2'
+ alt, ctrl, meta: none
+}
+
+key 0 {
+ label, number: '0'
+ base: '0'
+ shift: ')'
+ capslock+shift: '\u05c1'
+ alt, ctrl, meta: none
+}
+
+key MINUS {
+ label, number: '-'
+ base: '-'
+ shift: '_'
+ alt: '\u05bf'
+ alt+shift: none
+ capslock+shift: '\u05b9'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key EQUALS {
+ label, number: '='
+ base: '='
+ shift: '+'
+ capslock+shift: '\u05bc'
+ alt, ctrl, meta: none
+}
+
+key TAB {
+ label, number: '\t'
+ base: '\t'
+ alt, ctrl, meta: none
+}
+
+key Q {
+ label, number: '/'
+ base: '/'
+ shift, capslock: 'Q'
+ capslock+shift: '/'
+ alt, ctrl, meta: none
+}
+
+key W {
+ label, number: '\''
+ base: '\''
+ shift, capslock: 'W'
+ capslock+shift: '\''
+ alt, ctrl, meta: none
+}
+
+key E {
+ label, number: '\u05e7'
+ base: '\u05e7'
+ shift, capslock: 'E'
+ alt: '\u20ac'
+ alt+shift: none
+ capslock+alt: '\u20ac'
+ capslock+shift: '\u05e7'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key R {
+ label, number: '\u05e8'
+ base: '\u05e8'
+ shift, capslock: 'R'
+ capslock+shift: '\u05e8'
+ alt, ctrl, meta: none
+}
+
+key T {
+ label, number: '\u05d0'
+ base: '\u05d0'
+ shift, capslock: 'T'
+ capslock+shift: '\u05d0'
+ alt, ctrl, meta: none
+}
+
+key Y {
+ label, number: '\u05d8'
+ base: '\u05d8'
+ shift, capslock: 'Y'
+ capslock+shift: '\u05d8'
+ alt, ctrl, meta: none
+}
+
+key U {
+ label, number: '\u05d5'
+ base: '\u05d5'
+ shift, capslock: 'U'
+ alt: '\u05f0'
+ alt+shift: none
+ capslock+alt: '\u05f0'
+ capslock+shift: '\u05d5'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key I {
+ label, number: '\u05df'
+ base: '\u05df'
+ shift, capslock: 'I'
+ capslock+shift: '\u05df'
+ alt, ctrl, meta: none
+}
+
+key O {
+ label, number: '\u05dd'
+ base: '\u05dd'
+ shift, capslock: 'O'
+ capslock+shift: '\u05dd'
+ alt, ctrl, meta: none
+}
+
+key P {
+ label, number: '\u05e4'
+ base: '\u05e4'
+ shift, capslock: 'P'
+ capslock+shift: '\u05e4'
+ alt, ctrl, meta: none
+}
+
+key LEFT_BRACKET {
+ label, number: '['
+ base: '['
+ shift: '{'
+ capslock+shift: '['
+ alt, ctrl, meta: none
+}
+
+key RIGHT_BRACKET {
+ label, number: ']'
+ base: ']'
+ shift: '}'
+ capslock+shift: ']'
+ alt, ctrl, meta: none
+}
+
+key BACKSLASH {
+ label, number: '\\'
+ base: '\\'
+ shift: '|'
+ capslock+shift: '\u05bb'
+ alt, ctrl, meta: none
+}
+
+key A {
+ label, number: '\u05e9'
+ base: '\u05e9'
+ shift, capslock: 'A'
+ capslock+shift: '\u05e9'
+ alt, ctrl, meta: none
+}
+
+key S {
+ label, number: '\u05d3'
+ base: '\u05d3'
+ shift, capslock: 'S'
+ capslock+shift: '\u05d3'
+ alt, ctrl, meta: none
+}
+
+key D {
+ label, number: '\u05d2'
+ base: '\u05d2'
+ shift, capslock: 'D'
+ capslock+shift: '\u05d2'
+ alt, ctrl, meta: none
+}
+
+key F {
+ label, number: '\u05db'
+ base: '\u05db'
+ shift, capslock: 'F'
+ capslock+shift: '\u05db'
+ alt, ctrl, meta: none
+}
+
+key G {
+ label, number: '\u05e2'
+ base: '\u05e2'
+ shift, capslock: 'G'
+ capslock+shift: '\u05e2'
+ alt, ctrl, meta: none
+}
+
+key H {
+ label, number: '\u05d9'
+ base: '\u05d9'
+ shift, capslock: 'H'
+ alt: '\u05f2'
+ alt+shift: none
+ capslock+alt: '\u05f2'
+ capslock+shift: '\u05d9'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key J {
+ label, number: '\u05d7'
+ base: '\u05d7'
+ shift, capslock: 'J'
+ alt: '\u05f1'
+ alt+shift: none
+ capslock+alt: '\u05f1'
+ capslock+shift: '\u05d7'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key K {
+ label, number: '\u05dc'
+ base: '\u05dc'
+ shift, capslock: 'K'
+ capslock+shift: '\u05dc'
+ alt, ctrl, meta: none
+}
+
+key L {
+ label, number: '\u05da'
+ base: '\u05da'
+ shift, capslock: 'L'
+ capslock+shift: '\u05da'
+ alt, ctrl, meta: none
+}
+
+key SEMICOLON {
+ label, number: '\u05e3'
+ base: '\u05e3'
+ shift: ':'
+ capslock: ';'
+ capslock+shift: '\u05e3'
+ alt, ctrl, meta: none
+}
+
+key APOSTROPHE {
+ label, number: ','
+ base: ','
+ shift: '"'
+ capslock: '\''
+ capslock+shift: ','
+ alt, ctrl, meta: none
+}
+
+key ENTER {
+ label, number: '\n'
+ base: '\n'
+ alt, ctrl, meta: none
+}
+
+key Z {
+ label, number: '\u05d6'
+ base: '\u05d6'
+ shift, capslock: 'Z'
+ capslock+shift: '\u05d6'
+ alt, ctrl, meta: none
+}
+
+key X {
+ label, number: '\u05e1'
+ base: '\u05e1'
+ shift, capslock: 'X'
+ capslock+shift: '\u05e1'
+ alt, ctrl, meta: none
+}
+
+key C {
+ label, number: '\u05d1'
+ base: '\u05d1'
+ shift, capslock: 'C'
+ capslock+shift: '\u05d1'
+ alt, ctrl, meta: none
+}
+
+key V {
+ label, number: '\u05d4'
+ base: '\u05d4'
+ shift, capslock: 'V'
+ capslock+shift: '\u05d4'
+ alt, ctrl, meta: none
+}
+
+key B {
+ label, number: '\u05e0'
+ base: '\u05e0'
+ shift, capslock: 'B'
+ capslock+shift: '\u05e0'
+ alt, ctrl, meta: none
+}
+
+key N {
+ label, number: '\u05de'
+ base: '\u05de'
+ shift, capslock: 'N'
+ capslock+shift: '\u05de'
+ alt, ctrl, meta: none
+}
+
+key M {
+ label, number: '\u05e6'
+ base: '\u05e6'
+ shift, capslock: 'M'
+ capslock+shift: '\u05e6'
+ alt, ctrl, meta: none
+}
+
+key COMMA {
+ label, number: '\u05ea'
+ base: '\u05ea'
+ shift: '<'
+ capslock: ','
+ capslock+shift: '\u05ea'
+ alt, ctrl, meta: none
+}
+
+key PERIOD {
+ label, number: '\u05e5'
+ base: '\u05e5'
+ shift: '>'
+ capslock: '.'
+ capslock+shift: '\u05e5'
+ alt, ctrl, meta: none
+}
+
+key SLASH {
+ label, number: '.'
+ base: '.'
+ shift: '?'
+ capslock: '/'
+ capslock+shift: '.'
+ alt, ctrl, meta: none
+}
+
+key SPACE {
+ label, number: ' '
+ base: ' '
+ alt, ctrl, meta: none
+}
+
+key EUROPE_2 {
+ label, number: '\\'
+ base: '\\'
+ shift: '|'
+ alt, ctrl, meta: none
+}
diff --git a/xt9/keychars/qwerty-nb_NO.kcm b/xt9/keychars/qwerty-nb_NO.kcm
new file mode 100644
index 0000000..a611593
--- /dev/null
+++ b/xt9/keychars/qwerty-nb_NO.kcm
@@ -0,0 +1,441 @@
+type FULL
+
+key GRAVE {
+ label, number: '|'
+ base: '|'
+ shift: '\u00a7'
+ alt, ctrl, meta: none
+}
+
+key 1 {
+ label, number: '1'
+ base: '1'
+ shift: '!'
+ alt, ctrl, meta: none
+}
+
+key 2 {
+ label, number: '2'
+ base: '2'
+ shift: '"'
+ alt: '@'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 3 {
+ label, number: '3'
+ base: '3'
+ shift: '#'
+ alt: '\u00a3'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 4 {
+ label, number: '4'
+ base: '4'
+ shift: '\u00a4'
+ alt: '$'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 5 {
+ label, number: '5'
+ base: '5'
+ shift: '%'
+ alt: '\u20ac'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 6 {
+ label, number: '6'
+ base: '6'
+ shift: '&'
+ alt, ctrl, meta: none
+}
+
+key 7 {
+ label, number: '7'
+ base: '7'
+ shift: '/'
+ alt: '{'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 8 {
+ label, number: '8'
+ base: '8'
+ shift: '('
+ alt: '['
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 9 {
+ label, number: '9'
+ base: '9'
+ shift: ')'
+ alt: ']'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 0 {
+ label, number: '0'
+ base: '0'
+ shift: '='
+ alt: '}'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key MINUS {
+ label, number: '+'
+ base: '+'
+ shift: '?'
+ alt, ctrl, meta: none
+}
+
+key EQUALS {
+ label, number: '\\'
+ base: '\\'
+ shift: '\u0300'
+ alt: '\u0301'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key TAB {
+ label, number: '\t'
+ base: '\t'
+ alt, ctrl, meta: none
+}
+
+key Q {
+ label: 'Q'
+ number: '7'
+ base: 'q'
+ shift, capslock: 'Q'
+ capslock+shift: 'q'
+ alt, ctrl, meta: none
+}
+
+key W {
+ label: 'W'
+ number: '9'
+ base: 'w'
+ shift, capslock: 'W'
+ capslock+shift: 'w'
+ alt, ctrl, meta: none
+}
+
+key E {
+ label: 'E'
+ number: '3'
+ base: 'e'
+ shift, capslock: 'E'
+ alt: '\u20ac'
+ alt+shift: none
+ capslock+alt: '\u20ac'
+ capslock+shift: 'e'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key R {
+ label: 'R'
+ number: '7'
+ base: 'r'
+ shift, capslock: 'R'
+ capslock+shift: 'r'
+ alt, ctrl, meta: none
+}
+
+key T {
+ label: 'T'
+ number: '8'
+ base: 't'
+ shift, capslock: 'T'
+ capslock+shift: 't'
+ alt, ctrl, meta: none
+}
+
+key Y {
+ label: 'Y'
+ number: '9'
+ base: 'y'
+ shift, capslock: 'Y'
+ capslock+shift: 'y'
+ alt, ctrl, meta: none
+}
+
+key U {
+ label: 'U'
+ number: '8'
+ base: 'u'
+ shift, capslock: 'U'
+ capslock+shift: 'u'
+ alt, ctrl, meta: none
+}
+
+key I {
+ label: 'I'
+ number: '4'
+ base: 'i'
+ shift, capslock: 'I'
+ capslock+shift: 'i'
+ alt, ctrl, meta: none
+}
+
+key O {
+ label: 'O'
+ number: '6'
+ base: 'o'
+ shift, capslock: 'O'
+ capslock+shift: 'o'
+ alt, ctrl, meta: none
+}
+
+key P {
+ label: 'P'
+ number: '7'
+ base: 'p'
+ shift, capslock: 'P'
+ capslock+shift: 'p'
+ alt, ctrl, meta: none
+}
+
+key LEFT_BRACKET {
+ label: '\u00c5'
+ number: '\u00e5'
+ base: '\u00e5'
+ shift, capslock: '\u00c5'
+ capslock+shift: '\u00e5'
+ alt, ctrl, meta: none
+}
+
+key RIGHT_BRACKET {
+ label, number: '\u0308'
+ base: '\u0308'
+ shift: '\u0302'
+ alt: '\u0303'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key A {
+ label: 'A'
+ number: '2'
+ base: 'a'
+ shift, capslock: 'A'
+ capslock+shift: 'a'
+ alt, ctrl, meta: none
+}
+
+key S {
+ label: 'S'
+ number: '7'
+ base: 's'
+ shift, capslock: 'S'
+ capslock+shift: 's'
+ alt, ctrl, meta: none
+}
+
+key D {
+ label: 'D'
+ number: '3'
+ base: 'd'
+ shift, capslock: 'D'
+ capslock+shift: 'd'
+ alt, ctrl, meta: none
+}
+
+key F {
+ label: 'F'
+ number: '3'
+ base: 'f'
+ shift, capslock: 'F'
+ capslock+shift: 'f'
+ alt, ctrl, meta: none
+}
+
+key G {
+ label: 'G'
+ number: '4'
+ base: 'g'
+ shift, capslock: 'G'
+ capslock+shift: 'g'
+ alt, ctrl, meta: none
+}
+
+key H {
+ label: 'H'
+ number: '4'
+ base: 'h'
+ shift, capslock: 'H'
+ capslock+shift: 'h'
+ alt, ctrl, meta: none
+}
+
+key J {
+ label: 'J'
+ number: '5'
+ base: 'j'
+ shift, capslock: 'J'
+ capslock+shift: 'j'
+ alt, ctrl, meta: none
+}
+
+key K {
+ label: 'K'
+ number: '5'
+ base: 'k'
+ shift, capslock: 'K'
+ capslock+shift: 'k'
+ alt, ctrl, meta: none
+}
+
+key L {
+ label: 'L'
+ number: '5'
+ base: 'l'
+ shift, capslock: 'L'
+ capslock+shift: 'l'
+ alt, ctrl, meta: none
+}
+
+key SEMICOLON {
+ label: '\u00d8'
+ number: '\u00f8'
+ base: '\u00f8'
+ shift, capslock: '\u00d8'
+ capslock+shift: '\u00f8'
+ alt, ctrl, meta: none
+}
+
+key APOSTROPHE {
+ label: '\u00c6'
+ number: '\u00e6'
+ base: '\u00e6'
+ shift, capslock: '\u00c6'
+ capslock+shift: '\u00e6'
+ alt, ctrl, meta: none
+}
+
+key BACKSLASH {
+ label, number: '\''
+ base: '\''
+ shift: '*'
+ alt, ctrl, meta: none
+}
+
+key ENTER {
+ label, number: '\n'
+ base: '\n'
+ alt, ctrl, meta: none
+}
+
+key EUROPE_2 {
+ label, number: '<'
+ base: '<'
+ shift: '>'
+ alt, ctrl, meta: none
+}
+
+key Z {
+ label: 'Z'
+ number: '9'
+ base: 'z'
+ shift, capslock: 'Z'
+ capslock+shift: 'z'
+ alt, ctrl, meta: none
+}
+
+key X {
+ label: 'X'
+ number: '9'
+ base: 'x'
+ shift, capslock: 'X'
+ capslock+shift: 'x'
+ alt, ctrl, meta: none
+}
+
+key C {
+ label: 'C'
+ number: '2'
+ base: 'c'
+ shift, capslock: 'C'
+ capslock+shift: 'c'
+ alt, ctrl, meta: none
+}
+
+key V {
+ label: 'V'
+ number: '8'
+ base: 'v'
+ shift, capslock: 'V'
+ capslock+shift: 'v'
+ alt, ctrl, meta: none
+}
+
+key B {
+ label: 'B'
+ number: '2'
+ base: 'b'
+ shift, capslock: 'B'
+ capslock+shift: 'b'
+ alt, ctrl, meta: none
+}
+
+key N {
+ label: 'N'
+ number: '6'
+ base: 'n'
+ shift, capslock: 'N'
+ capslock+shift: 'n'
+ alt, ctrl, meta: none
+}
+
+key M {
+ label: 'M'
+ number: '6'
+ base: 'm'
+ shift, capslock: 'M'
+ alt: '\u00b5'
+ alt+shift: none
+ capslock+alt: '\u00b5'
+ capslock+shift: 'm'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key COMMA {
+ label, number: ','
+ base: ','
+ shift: ';'
+ alt, ctrl, meta: none
+}
+
+key PERIOD {
+ label, number: '.'
+ base: '.'
+ shift: ':'
+ alt, ctrl, meta: none
+}
+
+key SLASH {
+ label, number: '-'
+ base: '-'
+ shift: '_'
+ alt, ctrl, meta: none
+}
+
+key SPACE {
+ label, number: ' '
+ base: ' '
+ alt, ctrl, meta: none
+}
diff --git a/xt9/keychars/qwerty-nl_BE.kcm b/xt9/keychars/qwerty-nl_BE.kcm
new file mode 100644
index 0000000..903dfce
--- /dev/null
+++ b/xt9/keychars/qwerty-nl_BE.kcm
@@ -0,0 +1,482 @@
+type FULL
+
+key GRAVE {
+ label, number: '\u00b2'
+ base: '\u00b2'
+ shift: '\u00b3'
+ alt, ctrl, meta: none
+}
+
+key 1 {
+ label, number: '&'
+ base: '&'
+ shift, capslock: '1'
+ alt: '|'
+ alt+shift: none
+ capslock+alt: '|'
+ capslock+shift: '&'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key 2 {
+ label, number: '\u00e9'
+ base: '\u00e9'
+ shift, capslock: '2'
+ alt: '@'
+ alt+shift: none
+ capslock+alt: '@'
+ capslock+shift: '\u00e9'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key 3 {
+ label, number: '"'
+ base: '"'
+ shift, capslock: '3'
+ alt: '#'
+ alt+shift: none
+ capslock+alt: '#'
+ capslock+shift: '"'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key 4 {
+ label, number: '\''
+ base: '\''
+ shift, capslock: '4'
+ alt: '{'
+ alt+shift: none
+ capslock+alt: '{'
+ capslock+shift: '\''
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key 5 {
+ label, number: '('
+ base: '('
+ shift, capslock: '5'
+ alt: '['
+ alt+shift: none
+ capslock+alt: '['
+ capslock+shift: '('
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key 6 {
+ label, number: '\u00a7'
+ base: '\u00a7'
+ shift, capslock: '6'
+ alt: '^'
+ alt+shift: none
+ capslock+alt: '^'
+ capslock+shift: '\u00a7'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key 7 {
+ label, number: '\u00e8'
+ base: '\u00e8'
+ shift, capslock: '7'
+ capslock+shift: '\u00e8'
+ alt, ctrl, meta: none
+}
+
+key 8 {
+ label, number: '!'
+ base: '!'
+ shift, capslock: '8'
+ capslock+shift: '!'
+ alt, ctrl, meta: none
+}
+
+key 9 {
+ label, number: '\u00e7'
+ base: '\u00e7'
+ shift, capslock: '9'
+ alt: '{'
+ alt+shift: none
+ capslock+alt: '{'
+ capslock+shift: '\u00e7'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key 0 {
+ label, number: '\u00e0'
+ base: '\u00e0'
+ shift, capslock: '0'
+ alt: '}'
+ alt+shift: none
+ capslock+alt: '}'
+ capslock+shift: '\u00e0'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key MINUS {
+ label, number: ')'
+ base: ')'
+ shift, capslock: '\u00b0'
+ capslock+shift: ')'
+ alt, ctrl, meta: none
+}
+
+key EQUALS {
+ label, number: '-'
+ base: '-'
+ shift, capslock: '_'
+ capslock+shift: '-'
+ alt, ctrl, meta: none
+}
+
+key TAB {
+ label, number: '\t'
+ base: '\t'
+ alt, ctrl, meta: none
+}
+
+key A {
+ label: 'A'
+ number: '2'
+ base: 'a'
+ shift, capslock: 'A'
+ capslock+shift: 'a'
+ alt, ctrl, meta: none
+}
+
+key Z {
+ label: 'Z'
+ number: '9'
+ base: 'z'
+ shift, capslock: 'Z'
+ capslock+shift: 'z'
+ alt, ctrl, meta: none
+}
+
+key E {
+ label: 'E'
+ number: '3'
+ base: 'e'
+ shift, capslock: 'E'
+ alt: '\u20ac'
+ alt+shift: none
+ capslock+alt: '\u20ac'
+ capslock+shift: 'e'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key R {
+ label: 'R'
+ number: '7'
+ base: 'r'
+ shift, capslock: 'R'
+ capslock+shift: 'r'
+ alt, ctrl, meta: none
+}
+
+key T {
+ label: 'T'
+ number: '8'
+ base: 't'
+ shift, capslock: 'T'
+ capslock+shift: 't'
+ alt, ctrl, meta: none
+}
+
+key Y {
+ label: 'Y'
+ number: '9'
+ base: 'y'
+ shift, capslock: 'Y'
+ capslock+shift: 'y'
+ alt, ctrl, meta: none
+}
+
+key U {
+ label: 'U'
+ number: '8'
+ base: 'u'
+ shift, capslock: 'U'
+ capslock+shift: 'u'
+ alt, ctrl, meta: none
+}
+
+key I {
+ label: 'I'
+ number: '4'
+ base: 'i'
+ shift, capslock: 'I'
+ capslock+shift: 'i'
+ alt, ctrl, meta: none
+}
+
+key O {
+ label: 'O'
+ number: '6'
+ base: 'o'
+ shift, capslock: 'O'
+ capslock+shift: 'o'
+ alt, ctrl, meta: none
+}
+
+key P {
+ label: 'P'
+ number: '7'
+ base: 'p'
+ shift, capslock: 'P'
+ capslock+shift: 'p'
+ alt, ctrl, meta: none
+}
+
+key LEFT_BRACKET {
+ label, number: '\u0302'
+ base: '\u0302'
+ shift, capslock: '\u0308'
+ alt: '['
+ alt+shift: none
+ capslock+alt: '['
+ capslock+shift: '\u0302'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key RIGHT_BRACKET {
+ label, number: '$'
+ base: '$'
+ shift, capslock: '*'
+ alt: ']'
+ alt+shift: none
+ capslock+alt: ']'
+ capslock+shift: '$'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key Q {
+ label: 'Q'
+ number: '7'
+ base: 'q'
+ shift, capslock: 'Q'
+ capslock+shift: 'q'
+ alt, ctrl, meta: none
+}
+
+key S {
+ label: 'S'
+ number: '7'
+ base: 's'
+ shift, capslock: 'S'
+ capslock+shift: 's'
+ alt, ctrl, meta: none
+}
+
+key D {
+ label: 'D'
+ number: '3'
+ base: 'd'
+ shift, capslock: 'D'
+ capslock+shift: 'd'
+ alt, ctrl, meta: none
+}
+
+key F {
+ label: 'F'
+ number: '3'
+ base: 'f'
+ shift, capslock: 'F'
+ capslock+shift: 'f'
+ alt, ctrl, meta: none
+}
+
+key G {
+ label: 'G'
+ number: '4'
+ base: 'g'
+ shift, capslock: 'G'
+ capslock+shift: 'g'
+ alt, ctrl, meta: none
+}
+
+key H {
+ label: 'H'
+ number: '4'
+ base: 'h'
+ shift, capslock: 'H'
+ capslock+shift: 'h'
+ alt, ctrl, meta: none
+}
+
+key J {
+ label: 'J'
+ number: '5'
+ base: 'j'
+ shift, capslock: 'J'
+ capslock+shift: 'j'
+ alt, ctrl, meta: none
+}
+
+key K {
+ label: 'K'
+ number: '5'
+ base: 'k'
+ shift, capslock: 'K'
+ capslock+shift: 'k'
+ alt, ctrl, meta: none
+}
+
+key L {
+ label: 'L'
+ number: '5'
+ base: 'l'
+ shift, capslock: 'L'
+ capslock+shift: 'l'
+ alt, ctrl, meta: none
+}
+
+key M {
+ label: 'M'
+ number: '6'
+ base: 'm'
+ shift, capslock: 'M'
+ capslock+shift: 'm'
+ alt, ctrl, meta: none
+}
+
+key APOSTROPHE {
+ label, number: '\u00f9'
+ base: '\u00f9'
+ shift, capslock: '%'
+ alt: '\u0301'
+ alt+shift, capslock+alt: '\u0301'
+ capslock+shift: '\u00f9'
+ capslock+alt+shift: '\u0301'
+ ctrl, meta: none
+}
+
+key BACKSLASH {
+ label, number: '\u00b5'
+ base: '\u00b5'
+ shift, capslock: '\u00a3'
+ alt: '\u0300'
+ alt+shift, capslock+alt: '\u0300'
+ capslock+shift: '\u00b5'
+ capslock+alt+shift: '\u0300'
+ ctrl, meta: none
+}
+
+key ENTER {
+ label, number: '\n'
+ base: '\n'
+ alt, ctrl, meta: none
+}
+
+key EUROPE_2 {
+ label, number: '<'
+ base: '<'
+ shift: '>'
+ alt: '\\'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key W {
+ label: 'W'
+ number: '9'
+ base: 'w'
+ shift, capslock: 'W'
+ capslock+shift: 'w'
+ alt, ctrl, meta: none
+}
+
+key X {
+ label: 'X'
+ number: '9'
+ base: 'x'
+ shift, capslock: 'X'
+ capslock+shift: 'x'
+ alt, ctrl, meta: none
+}
+
+key C {
+ label: 'C'
+ number: '2'
+ base: 'c'
+ shift, capslock: 'C'
+ capslock+shift: 'c'
+ alt, ctrl, meta: none
+}
+
+key V {
+ label: 'V'
+ number: '8'
+ base: 'v'
+ shift, capslock: 'V'
+ capslock+shift: 'v'
+ alt, ctrl, meta: none
+}
+
+key B {
+ label: 'B'
+ number: '2'
+ base: 'b'
+ shift, capslock: 'B'
+ capslock+shift: 'b'
+ alt, ctrl, meta: none
+}
+
+key N {
+ label: 'N'
+ number: '6'
+ base: 'n'
+ shift, capslock: 'N'
+ capslock+shift: 'n'
+ alt, ctrl, meta: none
+}
+
+key COMMA {
+ label, number: ','
+ base: ','
+ shift, capslock: '?'
+ capslock+shift: ','
+ alt, ctrl, meta: none
+}
+
+key SEMICOLON {
+ label, number: ';'
+ base: ';'
+ shift, capslock: '.'
+ capslock+shift: ';'
+ alt, ctrl, meta: none
+}
+
+key PERIOD {
+ label, number: ':'
+ base: ':'
+ shift, capslock: '/'
+ capslock+shift: ':'
+ alt, ctrl, meta: none
+}
+
+key SLASH {
+ label, number: '='
+ base: '='
+ shift, capslock: '+'
+ alt: '\u0303'
+ alt+shift, capslock+alt: '\u0303'
+ capslock+shift: '='
+ capslock+alt+shift: '\u0303'
+ ctrl, meta: none
+}
+
+key SPACE {
+ label, number: ' '
+ base: ' '
+ alt, ctrl, meta: none
+}
diff --git a/xt9/keychars/qwerty-nl_NL.kcm b/xt9/keychars/qwerty-nl_NL.kcm
new file mode 100644
index 0000000..4445bc0
--- /dev/null
+++ b/xt9/keychars/qwerty-nl_NL.kcm
@@ -0,0 +1,504 @@
+type FULL
+
+key GRAVE {
+ label, number: '\u0300'
+ base: '\u0300'
+ shift: '\u0303'
+ alt, ctrl, meta: none
+}
+
+key 1 {
+ label, number: '1'
+ base: '1'
+ shift: '!'
+ alt: '\u00a1'
+ alt+shift: '\u00b9'
+ ctrl, meta: none
+}
+
+key 2 {
+ label, number: '2'
+ base: '2'
+ shift: '@'
+ alt: '\u00b2'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 3 {
+ label, number: '3'
+ base: '3'
+ shift: '#'
+ alt: '\u00b3'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 4 {
+ label, number: '4'
+ base: '4'
+ shift: '$'
+ alt: '\u00a4'
+ alt+shift: '\u00a3'
+ ctrl, meta: none
+}
+
+key 5 {
+ label, number: '5'
+ base: '5'
+ shift: '%'
+ alt: '\u20ac'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 6 {
+ label, number: '6'
+ base: '6'
+ shift: '\u0302'
+ alt: '\u00bc'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 7 {
+ label, number: '7'
+ base: '7'
+ shift: '&'
+ alt: '\u00bd'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 8 {
+ label, number: '8'
+ base: '8'
+ shift: '*'
+ alt: '\u00be'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 9 {
+ label, number: '9'
+ base: '9'
+ shift: '('
+ alt: '\u2018'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 0 {
+ label, number: '0'
+ base: '0'
+ shift: ')'
+ alt: '\u2019'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key MINUS {
+ label, number: '-'
+ base: '-'
+ shift: '_'
+ alt: '\u00a5'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key EQUALS {
+ label, number: '='
+ base: '='
+ shift: '+'
+ alt: '\u00d7'
+ alt+shift: '\u00f7'
+ ctrl, meta: none
+}
+
+key TAB {
+ label, number: '\t'
+ base: '\t'
+ alt, ctrl, meta: none
+}
+
+key Q {
+ label: 'Q'
+ number: '7'
+ base: 'q'
+ shift, capslock: 'Q'
+ alt: '\u00e4'
+ alt+shift, capslock+alt: '\u00c4'
+ capslock+shift: 'q'
+ capslock+alt+shift: '\u00e4'
+ ctrl, meta: none
+}
+
+key W {
+ label: 'W'
+ number: '9'
+ base: 'w'
+ shift, capslock: 'W'
+ alt: '\u00e5'
+ alt+shift, capslock+alt: '\u00c5'
+ capslock+shift: 'w'
+ capslock+alt+shift: '\u00e5'
+ ctrl, meta: none
+}
+
+key E {
+ label: 'E'
+ number: '3'
+ base: 'e'
+ shift, capslock: 'E'
+ alt: '\u00e9'
+ alt+shift, capslock+alt: '\u00c9'
+ capslock+shift: 'e'
+ capslock+alt+shift: '\u00e9'
+ ctrl, meta: none
+}
+
+key R {
+ label: 'R'
+ number: '7'
+ base: 'r'
+ shift, capslock: 'R'
+ alt: '\u00ae'
+ alt+shift: none
+ capslock+alt: '\u00ae'
+ capslock+shift: 'r'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key T {
+ label: 'T'
+ number: '8'
+ base: 't'
+ shift, capslock: 'T'
+ alt: '\u00fe'
+ alt+shift, capslock+alt: '\u00de'
+ capslock+shift: 't'
+ capslock+alt+shift: '\u00fe'
+ ctrl, meta: none
+}
+
+key Y {
+ label: 'Y'
+ number: '9'
+ base: 'y'
+ shift, capslock: 'Y'
+ alt: '\u00fc'
+ alt+shift, capslock+alt: '\u00dc'
+ capslock+shift: 'y'
+ capslock+alt+shift: '\u00fc'
+ ctrl, meta: none
+}
+
+key U {
+ label: 'U'
+ number: '8'
+ base: 'u'
+ shift, capslock: 'U'
+ alt: '\u00fa'
+ alt+shift, capslock+alt: '\u00da'
+ capslock+shift: 'u'
+ capslock+alt+shift: '\u00fa'
+ ctrl, meta: none
+}
+
+key I {
+ label: 'I'
+ number: '4'
+ base: 'i'
+ shift, capslock: 'I'
+ alt: '\u00ed'
+ alt+shift, capslock+alt: '\u00cd'
+ capslock+shift: 'i'
+ capslock+alt+shift: '\u00ed'
+ ctrl, meta: none
+}
+
+key O {
+ label: 'O'
+ number: '6'
+ base: 'o'
+ shift, capslock: 'O'
+ alt: '\u00f3'
+ alt+shift, capslock+alt: '\u00d3'
+ capslock+shift: 'o'
+ capslock+alt+shift: '\u00f3'
+ ctrl, meta: none
+}
+
+key P {
+ label: 'P'
+ number: '7'
+ base: 'p'
+ shift, capslock: 'P'
+ alt: '\u00f6'
+ alt+shift, capslock+alt: '\u00d6'
+ capslock+shift: 'p'
+ capslock+alt+shift: '\u00f6'
+ ctrl, meta: none
+}
+
+key LEFT_BRACKET {
+ label, number: '['
+ base: '['
+ shift: '{'
+ alt: '\u00ab'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key RIGHT_BRACKET {
+ label, number: ']'
+ base: ']'
+ shift: '}'
+ alt: '\u00bb'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key BACKSLASH {
+ label, number: '\\'
+ base: '\\'
+ shift: '|'
+ alt: '\u00ac'
+ alt+shift: '\u00a6'
+ ctrl, meta: none
+}
+
+key A {
+ label: 'A'
+ number: '2'
+ base: 'a'
+ shift, capslock: 'A'
+ alt: '\u00e1'
+ alt+shift, capslock+alt: '\u00c1'
+ capslock+shift: 'a'
+ capslock+alt+shift: '\u00e1'
+ ctrl, meta: none
+}
+
+key S {
+ label: 'S'
+ number: '7'
+ base: 's'
+ shift, capslock: 'S'
+ alt: '\u00df'
+ alt+shift: '\u00a7'
+ capslock+alt: '\u00df'
+ capslock+shift: 's'
+ capslock+alt+shift: '\u00a7'
+ ctrl, meta: none
+}
+
+key D {
+ label: 'D'
+ number: '3'
+ base: 'd'
+ shift, capslock: 'D'
+ alt: '\u00f0'
+ alt+shift, capslock+alt: '\u00d0'
+ capslock+shift: 'd'
+ capslock+alt+shift: '\u00f0'
+ ctrl, meta: none
+}
+
+key F {
+ label: 'F'
+ number: '3'
+ base: 'f'
+ shift, capslock: 'F'
+ capslock+shift: 'f'
+ alt, ctrl, meta: none
+}
+
+key G {
+ label: 'G'
+ number: '4'
+ base: 'g'
+ shift, capslock: 'G'
+ capslock+shift: 'g'
+ alt, ctrl, meta: none
+}
+
+key H {
+ label: 'H'
+ number: '4'
+ base: 'h'
+ shift, capslock: 'H'
+ capslock+shift: 'h'
+ alt, ctrl, meta: none
+}
+
+key J {
+ label: 'J'
+ number: '5'
+ base: 'j'
+ shift, capslock: 'J'
+ capslock+shift: 'j'
+ alt, ctrl, meta: none
+}
+
+key K {
+ label: 'K'
+ number: '5'
+ base: 'k'
+ shift, capslock: 'K'
+ capslock+shift: 'k'
+ alt, ctrl, meta: none
+}
+
+key L {
+ label: 'L'
+ number: '5'
+ base: 'l'
+ shift, capslock: 'L'
+ alt: '\u00f8'
+ alt+shift, capslock+alt: '\u00d8'
+ capslock+shift: 'l'
+ capslock+alt+shift: '\u00f8'
+ ctrl, meta: none
+}
+
+key SEMICOLON {
+ label, number: ';'
+ base: ';'
+ shift: ':'
+ alt: '\u00b6'
+ alt+shift: '\u00b0'
+ ctrl, meta: none
+}
+
+key APOSTROPHE {
+ label, number: '\u1df0'
+ base: '\u1df0'
+ shift: '\u1df1'
+ alt: '\u00b4'
+ alt+shift: '\u00a8'
+ ctrl, meta: none
+}
+
+key ENTER {
+ label, number: '\n'
+ base: '\n'
+ alt, ctrl, meta: none
+}
+
+key Z {
+ label: 'Z'
+ number: '9'
+ base: 'z'
+ shift, capslock: 'Z'
+ alt: '\u00e6'
+ alt+shift, capslock+alt: '\u00c6'
+ capslock+shift: 'z'
+ capslock+alt+shift: '\u00e6'
+ ctrl, meta: none
+}
+
+key X {
+ label: 'X'
+ number: '9'
+ base: 'x'
+ shift, capslock: 'X'
+ capslock+shift: 'x'
+ alt, ctrl, meta: none
+}
+
+key C {
+ label: 'C'
+ number: '2'
+ base: 'c'
+ shift, capslock: 'C'
+ alt: '\u00a9'
+ alt+shift: '\u00a2'
+ capslock+alt: '\u00a9'
+ capslock+shift: 'c'
+ capslock+alt+shift: '\u00a2'
+ ctrl, meta: none
+}
+
+key V {
+ label: 'V'
+ number: '8'
+ base: 'v'
+ shift, capslock: 'V'
+ capslock+shift: 'v'
+ alt, ctrl, meta: none
+}
+
+key B {
+ label: 'B'
+ number: '2'
+ base: 'b'
+ shift, capslock: 'B'
+ capslock+shift: 'b'
+ alt, ctrl, meta: none
+}
+
+key N {
+ label: 'N'
+ number: '6'
+ base: 'n'
+ shift, capslock: 'N'
+ alt: '\u00f1'
+ alt+shift, capslock+alt: '\u00d1'
+ capslock+shift: 'n'
+ capslock+alt+shift: '\u00f1'
+ ctrl, meta: none
+}
+
+key M {
+ label: 'M'
+ number: '6'
+ base: 'm'
+ shift, capslock: 'M'
+ alt: '\u00b5'
+ alt+shift: none
+ capslock+alt: '\u00b5'
+ capslock+shift: 'm'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key COMMA {
+ label, number: ','
+ base: ','
+ shift: '<'
+ alt: '\u00e7'
+ alt+shift, capslock+alt: '\u00c7'
+ capslock+alt+shift: '\u00e7'
+ ctrl, meta: none
+}
+
+key PERIOD {
+ label, number: '.'
+ base: '.'
+ shift: '>'
+ alt, ctrl, meta: none
+}
+
+key SLASH {
+ label, number: '/'
+ base: '/'
+ shift: '?'
+ alt: '\u00bf'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key SPACE {
+ label, number: ' '
+ base: ' '
+ alt, ctrl, meta: none
+}
+
+key EUROPE_2 {
+ label, number: '\\'
+ base: '\\'
+ shift: '|'
+ alt, ctrl, meta: none
+}
diff --git a/xt9/keychars/qwerty-pl_PL.kcm b/xt9/keychars/qwerty-pl_PL.kcm
new file mode 100644
index 0000000..2cbe69f
--- /dev/null
+++ b/xt9/keychars/qwerty-pl_PL.kcm
@@ -0,0 +1,438 @@
+type FULL
+
+key GRAVE {
+ label, number: '`'
+ base: '`'
+ shift: '~'
+ alt, ctrl, meta: none
+}
+
+key 1 {
+ label, number: '1'
+ base: '1'
+ shift: '!'
+ alt, ctrl, meta: none
+}
+
+key 2 {
+ label, number: '2'
+ base: '2'
+ shift: '@'
+ alt, ctrl, meta: none
+}
+
+key 3 {
+ label, number: '3'
+ base: '3'
+ shift: '#'
+ alt, ctrl, meta: none
+}
+
+key 4 {
+ label, number: '4'
+ base: '4'
+ shift: '$'
+ alt, ctrl, meta: none
+}
+
+key 5 {
+ label, number: '5'
+ base: '5'
+ shift: '%'
+ alt, ctrl, meta: none
+}
+
+key 6 {
+ label, number: '6'
+ base: '6'
+ shift: '^'
+ alt, ctrl, meta: none
+}
+
+key 7 {
+ label, number: '7'
+ base: '7'
+ shift: '&'
+ alt, ctrl, meta: none
+}
+
+key 8 {
+ label, number: '8'
+ base: '8'
+ shift: '*'
+ alt, ctrl, meta: none
+}
+
+key 9 {
+ label, number: '9'
+ base: '9'
+ shift: '('
+ alt, ctrl, meta: none
+}
+
+key 0 {
+ label, number: '0'
+ base: '0'
+ shift: ')'
+ alt, ctrl, meta: none
+}
+
+key MINUS {
+ label, number: '-'
+ base: '-'
+ shift: '_'
+ alt, ctrl, meta: none
+}
+
+key EQUALS {
+ label, number: '='
+ base: '='
+ shift: '+'
+ alt, ctrl, meta: none
+}
+
+key TAB {
+ label, number: '\t'
+ base: '\t'
+ alt, ctrl, meta: none
+}
+
+key Q {
+ label: 'Q'
+ number: '7'
+ base: 'q'
+ shift, capslock: 'Q'
+ capslock+shift: 'q'
+ alt, ctrl, meta: none
+}
+
+key W {
+ label: 'W'
+ number: '9'
+ base: 'w'
+ shift, capslock: 'W'
+ capslock+shift: 'w'
+ alt, ctrl, meta: none
+}
+
+key E {
+ label: 'E'
+ number: '3'
+ base: 'e'
+ shift, capslock: 'E'
+ alt: '\u0119'
+ alt+shift, capslock+alt: '\u0118'
+ capslock+shift: 'e'
+ capslock+alt+shift: '\u0119'
+ ctrl, meta: none
+}
+
+key R {
+ label: 'R'
+ number: '7'
+ base: 'r'
+ shift, capslock: 'R'
+ capslock+shift: 'r'
+ alt, ctrl, meta: none
+}
+
+key T {
+ label: 'T'
+ number: '8'
+ base: 't'
+ shift, capslock: 'T'
+ capslock+shift: 't'
+ alt, ctrl, meta: none
+}
+
+key Y {
+ label: 'Y'
+ number: '9'
+ base: 'y'
+ shift, capslock: 'Y'
+ capslock+shift: 'y'
+ alt, ctrl, meta: none
+}
+
+key U {
+ label: 'U'
+ number: '8'
+ base: 'u'
+ shift, capslock: 'U'
+ alt: '\u20ac'
+ alt+shift: none
+ capslock+alt: '\u20ac'
+ capslock+shift: 'u'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key I {
+ label: 'I'
+ number: '4'
+ base: 'i'
+ shift, capslock: 'I'
+ capslock+shift: 'i'
+ alt, ctrl, meta: none
+}
+
+key O {
+ label: 'O'
+ number: '6'
+ base: 'o'
+ shift, capslock: 'O'
+ alt: '\u00f3'
+ alt+shift, capslock+alt: '\u00d3'
+ capslock+shift: 'o'
+ capslock+alt+shift: '\u00f3'
+ ctrl, meta: none
+}
+
+key P {
+ label: 'P'
+ number: '7'
+ base: 'p'
+ shift, capslock: 'P'
+ capslock+shift: 'p'
+ alt, ctrl, meta: none
+}
+
+key LEFT_BRACKET {
+ label, number: '['
+ base: '['
+ shift: '{'
+ alt, ctrl, meta: none
+}
+
+key RIGHT_BRACKET {
+ label, number: ']'
+ base: ']'
+ shift: '}'
+ alt, ctrl, meta: none
+}
+
+key BACKSLASH {
+ label, number: '\\'
+ base: '\\'
+ shift: '|'
+ alt, ctrl, meta: none
+}
+
+key A {
+ label: 'A'
+ number: '2'
+ base: 'a'
+ shift, capslock: 'A'
+ alt: '\u0105'
+ alt+shift, capslock+alt: '\u0104'
+ capslock+shift: 'a'
+ capslock+alt+shift: '\u0105'
+ ctrl, meta: none
+}
+
+key S {
+ label: 'S'
+ number: '7'
+ base: 's'
+ shift, capslock: 'S'
+ alt: '\u015b'
+ alt+shift, capslock+alt: '\u015a'
+ capslock+shift: 's'
+ capslock+alt+shift: '\u015b'
+ ctrl, meta: none
+}
+
+key D {
+ label: 'D'
+ number: '3'
+ base: 'd'
+ shift, capslock: 'D'
+ capslock+shift: 'd'
+ alt, ctrl, meta: none
+}
+
+key F {
+ label: 'F'
+ number: '3'
+ base: 'f'
+ shift, capslock: 'F'
+ capslock+shift: 'f'
+ alt, ctrl, meta: none
+}
+
+key G {
+ label: 'G'
+ number: '4'
+ base: 'g'
+ shift, capslock: 'G'
+ capslock+shift: 'g'
+ alt, ctrl, meta: none
+}
+
+key H {
+ label: 'H'
+ number: '4'
+ base: 'h'
+ shift, capslock: 'H'
+ capslock+shift: 'h'
+ alt, ctrl, meta: none
+}
+
+key J {
+ label: 'J'
+ number: '5'
+ base: 'j'
+ shift, capslock: 'J'
+ capslock+shift: 'j'
+ alt, ctrl, meta: none
+}
+
+key K {
+ label: 'K'
+ number: '5'
+ base: 'k'
+ shift, capslock: 'K'
+ capslock+shift: 'k'
+ alt, ctrl, meta: none
+}
+
+key L {
+ label: 'L'
+ number: '5'
+ base: 'l'
+ shift, capslock: 'L'
+ alt: '\u0142'
+ alt+shift, capslock+alt: '\u0141'
+ capslock+shift: 'l'
+ capslock+alt+shift: '\u0142'
+ ctrl, meta: none
+}
+
+key SEMICOLON {
+ label, number: ';'
+ base: ';'
+ shift: ':'
+ alt, ctrl, meta: none
+}
+
+key APOSTROPHE {
+ label, number: '\''
+ base: '\''
+ shift: '"'
+ alt, ctrl, meta: none
+}
+
+key ENTER {
+ label, number: '\n'
+ base: '\n'
+ alt, ctrl, meta: none
+}
+
+key Z {
+ label: 'Z'
+ number: '9'
+ base: 'z'
+ shift, capslock: 'Z'
+ alt: '\u017c'
+ alt+shift, capslock+alt: '\u017b'
+ capslock+shift: 'z'
+ capslock+alt+shift: '\u017c'
+ ctrl, meta: none
+}
+
+key X {
+ label: 'X'
+ number: '9'
+ base: 'x'
+ shift, capslock: 'X'
+ alt: '\u017a'
+ alt+shift, capslock+alt: '\u0179'
+ capslock+shift: 'x'
+ capslock+alt+shift: '\u017a'
+ ctrl, meta: none
+}
+
+key C {
+ label: 'C'
+ number: '2'
+ base: 'c'
+ shift, capslock: 'C'
+ alt: '\u0107'
+ alt+shift, capslock+alt: '\u0106'
+ capslock+shift: 'c'
+ capslock+alt+shift: '\u0107'
+ ctrl, meta: none
+}
+
+key V {
+ label: 'V'
+ number: '8'
+ base: 'v'
+ shift, capslock: 'V'
+ capslock+shift: 'v'
+ alt, ctrl, meta: none
+}
+
+key B {
+ label: 'B'
+ number: '2'
+ base: 'b'
+ shift, capslock: 'B'
+ capslock+shift: 'b'
+ alt, ctrl, meta: none
+}
+
+key N {
+ label: 'N'
+ number: '6'
+ base: 'n'
+ shift, capslock: 'N'
+ alt: '\u0144'
+ alt+shift, capslock+alt: '\u0143'
+ capslock+shift: 'n'
+ capslock+alt+shift: '\u0144'
+ ctrl, meta: none
+}
+
+key M {
+ label: 'M'
+ number: '6'
+ base: 'm'
+ shift, capslock: 'M'
+ capslock+shift: 'm'
+ alt, ctrl, meta: none
+}
+
+key COMMA {
+ label, number: ','
+ base: ','
+ shift: '<'
+ alt, ctrl, meta: none
+}
+
+key PERIOD {
+ label, number: '.'
+ base: '.'
+ shift: '>'
+ alt, ctrl, meta: none
+}
+
+key SLASH {
+ label, number: '/'
+ base: '/'
+ shift: '?'
+ alt, ctrl, meta: none
+}
+
+key SPACE {
+ label, number: ' '
+ base: ' '
+ alt, ctrl, meta: none
+}
+
+key EUROPE_2 {
+ label, number: '\\'
+ base: '\\'
+ shift: '|'
+ alt, ctrl, meta: none
+}
diff --git a/xt9/keychars/qwerty-pt_BR.kcm b/xt9/keychars/qwerty-pt_BR.kcm
new file mode 100644
index 0000000..40b8fd9
--- /dev/null
+++ b/xt9/keychars/qwerty-pt_BR.kcm
@@ -0,0 +1,439 @@
+type FULL
+
+key GRAVE {
+ label, number: '\''
+ base: '\''
+ shift: '"'
+ alt, ctrl, meta: none
+}
+
+key 1 {
+ label, number: '1'
+ base: '1'
+ shift: '!'
+ alt: '\u00b9'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 2 {
+ label, number: '2'
+ base: '2'
+ shift: '@'
+ alt: '\u00b2'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 3 {
+ label, number: '3'
+ base: '3'
+ shift: '#'
+ alt: '\u00b3'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 4 {
+ label, number: '4'
+ base: '4'
+ shift: '$'
+ alt: '\u00a3'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 5 {
+ label, number: '5'
+ base: '5'
+ shift: '%'
+ alt: '\u00a2'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 6 {
+ label, number: '6'
+ base: '6'
+ shift: '\u0308'
+ alt: '\u00ac'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 7 {
+ label, number: '7'
+ base: '7'
+ shift: '&'
+ alt, ctrl, meta: none
+}
+
+key 8 {
+ label, number: '8'
+ base: '8'
+ shift: '*'
+ alt, ctrl, meta: none
+}
+
+key 9 {
+ label, number: '9'
+ base: '9'
+ shift: '('
+ alt, ctrl, meta: none
+}
+
+key 0 {
+ label, number: '0'
+ base: '0'
+ shift: ')'
+ alt, ctrl, meta: none
+}
+
+key MINUS {
+ label, number: '-'
+ base: '-'
+ shift: '_'
+ alt, ctrl, meta: none
+}
+
+key EQUALS {
+ label, number: '='
+ base: '='
+ shift: '+'
+ alt: '\u00a7'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key TAB {
+ label, number: '\t'
+ base: '\t'
+ alt, ctrl, meta: none
+}
+
+key Q {
+ label: 'Q'
+ number: '7'
+ base: 'q'
+ shift, capslock: 'Q'
+ alt: '/'
+ alt+shift: none
+ capslock+alt: '/'
+ capslock+shift: 'q'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key W {
+ label: 'W'
+ number: '9'
+ base: 'w'
+ shift, capslock: 'W'
+ alt: '?'
+ alt+shift: none
+ capslock+alt: '?'
+ capslock+shift: 'w'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key E {
+ label: 'E'
+ number: '3'
+ base: 'e'
+ shift, capslock: 'E'
+ alt: '\u00b0'
+ alt+shift: none
+ capslock+alt: '\u00b0'
+ capslock+shift: 'e'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key R {
+ label: 'R'
+ number: '7'
+ base: 'r'
+ shift, capslock: 'R'
+ capslock+shift: 'r'
+ alt, ctrl, meta: none
+}
+
+key T {
+ label: 'T'
+ number: '8'
+ base: 't'
+ shift, capslock: 'T'
+ capslock+shift: 't'
+ alt, ctrl, meta: none
+}
+
+key Y {
+ label: 'Y'
+ number: '9'
+ base: 'y'
+ shift, capslock: 'Y'
+ capslock+shift: 'y'
+ alt, ctrl, meta: none
+}
+
+key U {
+ label: 'U'
+ number: '8'
+ base: 'u'
+ shift, capslock: 'U'
+ capslock+shift: 'u'
+ alt, ctrl, meta: none
+}
+
+key I {
+ label: 'I'
+ number: '4'
+ base: 'i'
+ shift, capslock: 'I'
+ capslock+shift: 'i'
+ alt, ctrl, meta: none
+}
+
+key O {
+ label: 'O'
+ number: '6'
+ base: 'o'
+ shift, capslock: 'O'
+ capslock+shift: 'o'
+ alt, ctrl, meta: none
+}
+
+key P {
+ label: 'P'
+ number: '7'
+ base: 'p'
+ shift, capslock: 'P'
+ capslock+shift: 'p'
+ alt, ctrl, meta: none
+}
+
+key LEFT_BRACKET {
+ label, number: '\u0301'
+ base: '\u0301'
+ shift: '\u0300'
+ alt, ctrl, meta: none
+}
+
+key RIGHT_BRACKET {
+ label, number: '['
+ base: '['
+ shift: '{'
+ alt: '\u00aa'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key A {
+ label: 'A'
+ number: '2'
+ base: 'a'
+ shift, capslock: 'A'
+ capslock+shift: 'a'
+ alt, ctrl, meta: none
+}
+
+key S {
+ label: 'S'
+ number: '7'
+ base: 's'
+ shift, capslock: 'S'
+ capslock+shift: 's'
+ alt, ctrl, meta: none
+}
+
+key D {
+ label: 'D'
+ number: '3'
+ base: 'd'
+ shift, capslock: 'D'
+ capslock+shift: 'd'
+ alt, ctrl, meta: none
+}
+
+key F {
+ label: 'F'
+ number: '3'
+ base: 'f'
+ shift, capslock: 'F'
+ capslock+shift: 'f'
+ alt, ctrl, meta: none
+}
+
+key G {
+ label: 'G'
+ number: '4'
+ base: 'g'
+ shift, capslock: 'G'
+ capslock+shift: 'g'
+ alt, ctrl, meta: none
+}
+
+key H {
+ label: 'H'
+ number: '4'
+ base: 'h'
+ shift, capslock: 'H'
+ capslock+shift: 'h'
+ alt, ctrl, meta: none
+}
+
+key J {
+ label: 'J'
+ number: '5'
+ base: 'j'
+ shift, capslock: 'J'
+ capslock+shift: 'j'
+ alt, ctrl, meta: none
+}
+
+key K {
+ label: 'K'
+ number: '5'
+ base: 'k'
+ shift, capslock: 'K'
+ capslock+shift: 'k'
+ alt, ctrl, meta: none
+}
+
+key L {
+ label: 'L'
+ number: '5'
+ base: 'l'
+ shift, capslock: 'L'
+ capslock+shift: 'l'
+ alt, ctrl, meta: none
+}
+
+key SEMICOLON {
+ label: '\u00c7'
+ number: '\u00e7'
+ base: '\u00e7'
+ shift, capslock: '\u00c7'
+ capslock+shift: '\u00e7'
+ alt, ctrl, meta: none
+}
+
+key APOSTROPHE {
+ label, number: '\u0303'
+ base: '\u0303'
+ shift: '\u0302'
+ alt, ctrl, meta: none
+}
+
+key BACKSLASH {
+ label, number: ']'
+ base: ']'
+ shift: '}'
+ alt: '\u00ba'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key ENTER {
+ label, number: '\n'
+ base: '\n'
+ alt, ctrl, meta: none
+}
+
+key EUROPE_2 {
+ label, number: '\\'
+ base: '\\'
+ shift: '|'
+ alt, ctrl, meta: none
+}
+
+key Z {
+ label: 'Z'
+ number: '9'
+ base: 'z'
+ shift, capslock: 'Z'
+ capslock+shift: 'z'
+ alt, ctrl, meta: none
+}
+
+key X {
+ label: 'X'
+ number: '9'
+ base: 'x'
+ shift, capslock: 'X'
+ capslock+shift: 'x'
+ alt, ctrl, meta: none
+}
+
+key C {
+ label: 'C'
+ number: '2'
+ base: 'c'
+ shift, capslock: 'C'
+ capslock+shift: 'c'
+ alt, ctrl, meta: none
+}
+
+key V {
+ label: 'V'
+ number: '8'
+ base: 'v'
+ shift, capslock: 'V'
+ capslock+shift: 'v'
+ alt, ctrl, meta: none
+}
+
+key B {
+ label: 'B'
+ number: '2'
+ base: 'b'
+ shift, capslock: 'B'
+ capslock+shift: 'b'
+ alt, ctrl, meta: none
+}
+
+key N {
+ label: 'N'
+ number: '6'
+ base: 'n'
+ shift, capslock: 'N'
+ capslock+shift: 'n'
+ alt, ctrl, meta: none
+}
+
+key M {
+ label: 'M'
+ number: '6'
+ base: 'm'
+ shift, capslock: 'M'
+ capslock+shift: 'm'
+ alt, ctrl, meta: none
+}
+
+key COMMA {
+ label, number: ','
+ base: ','
+ shift: '<'
+ alt, ctrl, meta: none
+}
+
+key PERIOD {
+ label, number: '.'
+ base: '.'
+ shift: '>'
+ alt, ctrl, meta: none
+}
+
+key SLASH {
+ label, number: ';'
+ base: ';'
+ shift: ':'
+ alt, ctrl, meta: none
+}
+
+key SPACE {
+ label, number: ' '
+ base: ' '
+ alt, ctrl, meta: none
+}
diff --git a/xt9/keychars/qwerty-pt_PT.kcm b/xt9/keychars/qwerty-pt_PT.kcm
new file mode 100644
index 0000000..3f5fa02
--- /dev/null
+++ b/xt9/keychars/qwerty-pt_PT.kcm
@@ -0,0 +1,433 @@
+type FULL
+
+key GRAVE {
+ label, number: '\\'
+ base: '\\'
+ shift: '|'
+ alt, ctrl, meta: none
+}
+
+key 1 {
+ label, number: '1'
+ base: '1'
+ shift: '!'
+ alt, ctrl, meta: none
+}
+
+key 2 {
+ label, number: '2'
+ base: '2'
+ shift: '"'
+ alt: '@'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 3 {
+ label, number: '3'
+ base: '3'
+ shift: '#'
+ alt: '\u00a3'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 4 {
+ label, number: '4'
+ base: '4'
+ shift: '$'
+ alt: '\u00a7'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 5 {
+ label, number: '5'
+ base: '5'
+ shift: '%'
+ alt: '\u20ac'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 6 {
+ label, number: '6'
+ base: '6'
+ shift: '&'
+ alt, ctrl, meta: none
+}
+
+key 7 {
+ label, number: '7'
+ base: '7'
+ shift: '/'
+ alt: '{'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 8 {
+ label, number: '8'
+ base: '8'
+ shift: '('
+ alt: '['
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 9 {
+ label, number: '9'
+ base: '9'
+ shift: ')'
+ alt: ']'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 0 {
+ label, number: '0'
+ base: '0'
+ shift: '='
+ alt: '}'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key MINUS {
+ label, number: '\''
+ base: '\''
+ shift: '?'
+ alt, ctrl, meta: none
+}
+
+key EQUALS {
+ label, number: '\u00ab'
+ base: '\u00ab'
+ shift: '\u00bb'
+ alt, ctrl, meta: none
+}
+
+key TAB {
+ label, number: '\t'
+ base: '\t'
+ alt, ctrl, meta: none
+}
+
+key Q {
+ label: 'Q'
+ number: '7'
+ base: 'q'
+ shift, capslock: 'Q'
+ capslock+shift: 'q'
+ alt, ctrl, meta: none
+}
+
+key W {
+ label: 'W'
+ number: '9'
+ base: 'w'
+ shift, capslock: 'W'
+ capslock+shift: 'w'
+ alt, ctrl, meta: none
+}
+
+key E {
+ label: 'E'
+ number: '3'
+ base: 'e'
+ shift, capslock: 'E'
+ alt: '\u20ac'
+ alt+shift: none
+ capslock+alt: '\u20ac'
+ capslock+shift: 'e'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key R {
+ label: 'R'
+ number: '7'
+ base: 'r'
+ shift, capslock: 'R'
+ capslock+shift: 'r'
+ alt, ctrl, meta: none
+}
+
+key T {
+ label: 'T'
+ number: '8'
+ base: 't'
+ shift, capslock: 'T'
+ capslock+shift: 't'
+ alt, ctrl, meta: none
+}
+
+key Y {
+ label: 'Y'
+ number: '9'
+ base: 'y'
+ shift, capslock: 'Y'
+ capslock+shift: 'y'
+ alt, ctrl, meta: none
+}
+
+key U {
+ label: 'U'
+ number: '8'
+ base: 'u'
+ shift, capslock: 'U'
+ capslock+shift: 'u'
+ alt, ctrl, meta: none
+}
+
+key I {
+ label: 'I'
+ number: '4'
+ base: 'i'
+ shift, capslock: 'I'
+ capslock+shift: 'i'
+ alt, ctrl, meta: none
+}
+
+key O {
+ label: 'O'
+ number: '6'
+ base: 'o'
+ shift, capslock: 'O'
+ capslock+shift: 'o'
+ alt, ctrl, meta: none
+}
+
+key P {
+ label: 'P'
+ number: '7'
+ base: 'p'
+ shift, capslock: 'P'
+ capslock+shift: 'p'
+ alt, ctrl, meta: none
+}
+
+key LEFT_BRACKET {
+ label, number: '+'
+ base: '+'
+ shift: '*'
+ alt: '\u0308'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key RIGHT_BRACKET {
+ label, number: '\u0301'
+ base: '\u0301'
+ shift: '\u0300'
+ alt: ']'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key A {
+ label: 'A'
+ number: '2'
+ base: 'a'
+ shift, capslock: 'A'
+ capslock+shift: 'a'
+ alt, ctrl, meta: none
+}
+
+key S {
+ label: 'S'
+ number: '7'
+ base: 's'
+ shift, capslock: 'S'
+ capslock+shift: 's'
+ alt, ctrl, meta: none
+}
+
+key D {
+ label: 'D'
+ number: '3'
+ base: 'd'
+ shift, capslock: 'D'
+ capslock+shift: 'd'
+ alt, ctrl, meta: none
+}
+
+key F {
+ label: 'F'
+ number: '3'
+ base: 'f'
+ shift, capslock: 'F'
+ capslock+shift: 'f'
+ alt, ctrl, meta: none
+}
+
+key G {
+ label: 'G'
+ number: '4'
+ base: 'g'
+ shift, capslock: 'G'
+ capslock+shift: 'g'
+ alt, ctrl, meta: none
+}
+
+key H {
+ label: 'H'
+ number: '4'
+ base: 'h'
+ shift, capslock: 'H'
+ capslock+shift: 'h'
+ alt, ctrl, meta: none
+}
+
+key J {
+ label: 'J'
+ number: '5'
+ base: 'j'
+ shift, capslock: 'J'
+ capslock+shift: 'j'
+ alt, ctrl, meta: none
+}
+
+key K {
+ label: 'K'
+ number: '5'
+ base: 'k'
+ shift, capslock: 'K'
+ capslock+shift: 'k'
+ alt, ctrl, meta: none
+}
+
+key L {
+ label: 'L'
+ number: '5'
+ base: 'l'
+ shift, capslock: 'L'
+ capslock+shift: 'l'
+ alt, ctrl, meta: none
+}
+
+key SEMICOLON {
+ label: '\u00c7'
+ number: '\u00e7'
+ base: '\u00e7'
+ shift, capslock: '\u00c7'
+ capslock+shift: '\u00e7'
+ alt, ctrl, meta: none
+}
+
+key APOSTROPHE {
+ label, number: '\u00ba'
+ base: '\u00ba'
+ shift: '\u00aa'
+ alt, ctrl, meta: none
+}
+
+key BACKSLASH {
+ label, number: '\u0303'
+ base: '\u0303'
+ shift: '\u0302'
+ alt, ctrl, meta: none
+}
+
+key ENTER {
+ label, number: '\n'
+ base: '\n'
+ alt, ctrl, meta: none
+}
+
+key EUROPE_2 {
+ label, number: '<'
+ base: '<'
+ shift: '>'
+ alt, ctrl, meta: none
+}
+
+key Z {
+ label: 'Z'
+ number: '9'
+ base: 'z'
+ shift, capslock: 'Z'
+ capslock+shift: 'z'
+ alt, ctrl, meta: none
+}
+
+key X {
+ label: 'X'
+ number: '9'
+ base: 'x'
+ shift, capslock: 'X'
+ capslock+shift: 'x'
+ alt, ctrl, meta: none
+}
+
+key C {
+ label: 'C'
+ number: '2'
+ base: 'c'
+ shift, capslock: 'C'
+ capslock+shift: 'c'
+ alt, ctrl, meta: none
+}
+
+key V {
+ label: 'V'
+ number: '8'
+ base: 'v'
+ shift, capslock: 'V'
+ capslock+shift: 'v'
+ alt, ctrl, meta: none
+}
+
+key B {
+ label: 'B'
+ number: '2'
+ base: 'b'
+ shift, capslock: 'B'
+ capslock+shift: 'b'
+ alt, ctrl, meta: none
+}
+
+key N {
+ label: 'N'
+ number: '6'
+ base: 'n'
+ shift, capslock: 'N'
+ capslock+shift: 'n'
+ alt, ctrl, meta: none
+}
+
+key M {
+ label: 'M'
+ number: '6'
+ base: 'm'
+ shift, capslock: 'M'
+ capslock+shift: 'm'
+ alt, ctrl, meta: none
+}
+
+key COMMA {
+ label, number: ','
+ base: ','
+ shift: ';'
+ alt, ctrl, meta: none
+}
+
+key PERIOD {
+ label, number: '.'
+ base: '.'
+ shift: ':'
+ alt, ctrl, meta: none
+}
+
+key SLASH {
+ label, number: '-'
+ base: '-'
+ shift: '_'
+ alt, ctrl, meta: none
+}
+
+key SPACE {
+ label, number: ' '
+ base: ' '
+ alt, ctrl, meta: none
+}
diff --git a/xt9/keychars/qwerty-ru_RU.kcm b/xt9/keychars/qwerty-ru_RU.kcm
new file mode 100644
index 0000000..529149d
--- /dev/null
+++ b/xt9/keychars/qwerty-ru_RU.kcm
@@ -0,0 +1,414 @@
+type FULL
+
+key GRAVE {
+ label, number: '`'
+ base: '\u0451'
+ shift, capslock: '\u0401'
+ capslock+shift: '\u0451'
+ alt, ctrl, meta: none
+}
+
+key 1 {
+ label, number: '1'
+ base: '1'
+ shift: '!'
+ alt, ctrl, meta: none
+}
+
+key 2 {
+ label, number: '2'
+ base: '2'
+ shift: '"'
+ alt, ctrl, meta: none
+}
+
+key 3 {
+ label, number: '3'
+ base: '3'
+ shift: '\u2116'
+ alt, ctrl, meta: none
+}
+
+key 4 {
+ label, number: '4'
+ base: '4'
+ shift: ';'
+ alt, ctrl, meta: none
+}
+
+key 5 {
+ label, number: '5'
+ base: '5'
+ shift: '%'
+ alt, ctrl, meta: none
+}
+
+key 6 {
+ label, number: '6'
+ base: '6'
+ shift: ':'
+ alt, ctrl, meta: none
+}
+
+key 7 {
+ label, number: '7'
+ base: '7'
+ shift: '?'
+ alt, ctrl, meta: none
+}
+
+key 8 {
+ label, number: '8'
+ base: '8'
+ shift: '*'
+ alt, ctrl, meta: none
+}
+
+key 9 {
+ label, number: '9'
+ base: '9'
+ shift: '('
+ alt, ctrl, meta: none
+}
+
+key 0 {
+ label, number: '0'
+ base: '0'
+ shift: ')'
+ alt, ctrl, meta: none
+}
+
+key MINUS {
+ label, number: '-'
+ base: '-'
+ shift: '_'
+ alt, ctrl, meta: none
+}
+
+key EQUALS {
+ label, number: '='
+ base: '='
+ shift: '+'
+ alt, ctrl, meta: none
+}
+
+key TAB {
+ label, number: '\t'
+ base: '\t'
+ alt, ctrl, meta: none
+}
+
+key Q {
+ label: 'Q'
+ number: '7'
+ base: '\u0439'
+ shift, capslock: '\u0419'
+ capslock+shift: '\u0439'
+ alt, ctrl, meta: none
+}
+
+key W {
+ label: 'W'
+ number: '9'
+ base: '\u0446'
+ shift, capslock: '\u0426'
+ capslock+shift: '\u0446'
+ alt, ctrl, meta: none
+}
+
+key E {
+ label: 'E'
+ number: '3'
+ base: '\u0443'
+ shift, capslock: '\u0423'
+ capslock+shift: '\u0443'
+ alt, ctrl, meta: none
+}
+
+key R {
+ label: 'R'
+ number: '7'
+ base: '\u043a'
+ shift, capslock: '\u041a'
+ capslock+shift: '\u043a'
+ alt, ctrl, meta: none
+}
+
+key T {
+ label: 'T'
+ number: '8'
+ base: '\u0435'
+ shift, capslock: '\u0415'
+ capslock+shift: '\u0435'
+ alt, ctrl, meta: none
+}
+
+key Y {
+ label: 'Y'
+ number: '9'
+ base: '\u043d'
+ shift, capslock: '\u041d'
+ capslock+shift: '\u043d'
+ alt, ctrl, meta: none
+}
+
+key U {
+ label: 'U'
+ number: '8'
+ base: '\u0433'
+ shift, capslock: '\u0413'
+ capslock+shift: '\u0433'
+ alt, ctrl, meta: none
+}
+
+key I {
+ label: 'I'
+ number: '4'
+ base: '\u0448'
+ shift, capslock: '\u0428'
+ capslock+shift: '\u0448'
+ alt, ctrl, meta: none
+}
+
+key O {
+ label: 'O'
+ number: '6'
+ base: '\u0449'
+ shift, capslock: '\u0429'
+ capslock+shift: '\u0449'
+ alt, ctrl, meta: none
+}
+
+key P {
+ label: 'P'
+ number: '7'
+ base: '\u0437'
+ shift, capslock: '\u0417'
+ capslock+shift: '\u0437'
+ alt, ctrl, meta: none
+}
+
+key LEFT_BRACKET {
+ label, number: '['
+ base: '\u0445'
+ shift, capslock: '\u0425'
+ capslock+shift: '\u0445'
+ alt, ctrl, meta: none
+}
+
+key RIGHT_BRACKET {
+ label, number: ']'
+ base: '\u044a'
+ shift, capslock: '\u042a'
+ capslock+shift: '\u044a'
+ alt, ctrl, meta: none
+}
+
+key BACKSLASH {
+ label, number: '\\'
+ base: '\\'
+ shift: '/'
+ alt, ctrl, meta: none
+}
+
+key A {
+ label: 'A'
+ number: '2'
+ base: '\u0444'
+ shift, capslock: '\u0424'
+ capslock+shift: '\u0444'
+ alt, ctrl, meta: none
+}
+
+key S {
+ label: 'S'
+ number: '7'
+ base: '\u044b'
+ shift, capslock: '\u042b'
+ capslock+shift: '\u044b'
+ alt, ctrl, meta: none
+}
+
+key D {
+ label: 'D'
+ number: '3'
+ base: '\u0432'
+ shift, capslock: '\u0412'
+ capslock+shift: '\u0432'
+ alt, ctrl, meta: none
+}
+
+key F {
+ label: 'F'
+ number: '3'
+ base: '\u0430'
+ shift, capslock: '\u0410'
+ capslock+shift: '\u0430'
+ alt, ctrl, meta: none
+}
+
+key G {
+ label: 'G'
+ number: '4'
+ base: '\u043f'
+ shift, capslock: '\u041f'
+ capslock+shift: '\u043f'
+ alt, ctrl, meta: none
+}
+
+key H {
+ label: 'H'
+ number: '4'
+ base: '\u0440'
+ shift, capslock: '\u0420'
+ capslock+shift: '\u0440'
+ alt, ctrl, meta: none
+}
+
+key J {
+ label: 'J'
+ number: '5'
+ base: '\u043e'
+ shift, capslock: '\u041e'
+ capslock+shift: '\u043e'
+ alt, ctrl, meta: none
+}
+
+key K {
+ label: 'K'
+ number: '5'
+ base: '\u043b'
+ shift, capslock: '\u041b'
+ capslock+shift: '\u043b'
+ alt, ctrl, meta: none
+}
+
+key L {
+ label: 'L'
+ number: '5'
+ base: '\u0434'
+ shift, capslock: '\u0414'
+ capslock+shift: '\u0434'
+ alt, ctrl, meta: none
+}
+
+key SEMICOLON {
+ label, number: ';'
+ base: '\u0436'
+ shift, capslock: '\u0416'
+ capslock+shift: '\u0436'
+ alt, ctrl, meta: none
+}
+
+key APOSTROPHE {
+ label, number: '\''
+ base: '\u044d'
+ shift, capslock: '\u042d'
+ capslock+shift: '\u044d'
+ alt, ctrl, meta: none
+}
+
+key ENTER {
+ label, number: '\n'
+ base: '\n'
+ alt, ctrl, meta: none
+}
+
+key Z {
+ label: 'Z'
+ number: '9'
+ base: '\u044f'
+ shift, capslock: '\u042f'
+ capslock+shift: '\u044f'
+ alt, ctrl, meta: none
+}
+
+key X {
+ label: 'X'
+ number: '9'
+ base: '\u0447'
+ shift, capslock: '\u0427'
+ capslock+shift: '\u0447'
+ alt, ctrl, meta: none
+}
+
+key C {
+ label: 'C'
+ number: '2'
+ base: '\u0441'
+ shift, capslock: '\u0421'
+ capslock+shift: '\u0441'
+ alt, ctrl, meta: none
+}
+
+key V {
+ label: 'V'
+ number: '8'
+ base: '\u043c'
+ shift, capslock: '\u041c'
+ capslock+shift: '\u043c'
+ alt, ctrl, meta: none
+}
+
+key B {
+ label: 'B'
+ number: '2'
+ base: '\u0438'
+ shift, capslock: '\u0418'
+ capslock+shift: '\u0438'
+ alt, ctrl, meta: none
+}
+
+key N {
+ label: 'N'
+ number: '6'
+ base: '\u0442'
+ shift, capslock: '\u0422'
+ capslock+shift: '\u0442'
+ alt, ctrl, meta: none
+}
+
+key M {
+ label: 'M'
+ number: '6'
+ base: '\u044c'
+ shift, capslock: '\u042c'
+ capslock+shift: '\u044c'
+ alt, ctrl, meta: none
+}
+
+key COMMA {
+ label, number: ','
+ base: '\u0431'
+ shift, capslock: '\u0411'
+ capslock+shift: '\u0431'
+ alt, ctrl, meta: none
+}
+
+key PERIOD {
+ label, number: '.'
+ base: '\u044e'
+ shift, capslock: '\u042e'
+ capslock+shift: '\u044e'
+ alt, ctrl, meta: none
+}
+
+key SLASH {
+ label, number: '/'
+ base: '.'
+ shift: ','
+ alt, ctrl, meta: none
+}
+
+key SPACE {
+ label, number: ' '
+ base: ' '
+ alt, ctrl, meta: none
+}
+
+key EUROPE_2 {
+ label, number: '\\'
+ base: '\\'
+ shift: '|'
+ alt, ctrl, meta: none
+}
diff --git a/xt9/keychars/qwerty-sv_SE.kcm b/xt9/keychars/qwerty-sv_SE.kcm
new file mode 100644
index 0000000..ec5110f
--- /dev/null
+++ b/xt9/keychars/qwerty-sv_SE.kcm
@@ -0,0 +1,443 @@
+type FULL
+
+key GRAVE {
+ label, number: '\u00a7'
+ base: '\u00a7'
+ shift: '\u00bd'
+ alt, ctrl, meta: none
+}
+
+key 1 {
+ label, number: '1'
+ base: '1'
+ shift: '!'
+ alt, ctrl, meta: none
+}
+
+key 2 {
+ label, number: '2'
+ base: '2'
+ shift: '"'
+ alt: '@'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 3 {
+ label, number: '3'
+ base: '3'
+ shift: '#'
+ alt: '\u00a3'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 4 {
+ label, number: '4'
+ base: '4'
+ shift: '\u00a4'
+ alt: '$'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 5 {
+ label, number: '5'
+ base: '5'
+ shift: '%'
+ alt: '\u20ac'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 6 {
+ label, number: '6'
+ base: '6'
+ shift: '&'
+ alt, ctrl, meta: none
+}
+
+key 7 {
+ label, number: '7'
+ base: '7'
+ shift: '/'
+ alt: '{'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 8 {
+ label, number: '8'
+ base: '8'
+ shift: '('
+ alt: '['
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 9 {
+ label, number: '9'
+ base: '9'
+ shift: ')'
+ alt: ']'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 0 {
+ label, number: '0'
+ base: '0'
+ shift: '='
+ alt: '}'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key MINUS {
+ label, number: '+'
+ base: '+'
+ shift: '?'
+ alt: '\\'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key EQUALS {
+ label, number: '\u0301'
+ base: '\u0301'
+ shift: '\u0300'
+ alt, ctrl, meta: none
+}
+
+key TAB {
+ label, number: '\t'
+ base: '\t'
+ alt, ctrl, meta: none
+}
+
+key Q {
+ label: 'Q'
+ number: '7'
+ base: 'q'
+ shift, capslock: 'Q'
+ capslock+shift: 'q'
+ alt, ctrl, meta: none
+}
+
+key W {
+ label: 'W'
+ number: '9'
+ base: 'w'
+ shift, capslock: 'W'
+ capslock+shift: 'w'
+ alt, ctrl, meta: none
+}
+
+key E {
+ label: 'E'
+ number: '3'
+ base: 'e'
+ shift, capslock: 'E'
+ alt: '\u20ac'
+ alt+shift: none
+ capslock+alt: '\u20ac'
+ capslock+shift: 'e'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key R {
+ label: 'R'
+ number: '7'
+ base: 'r'
+ shift, capslock: 'R'
+ capslock+shift: 'r'
+ alt, ctrl, meta: none
+}
+
+key T {
+ label: 'T'
+ number: '8'
+ base: 't'
+ shift, capslock: 'T'
+ capslock+shift: 't'
+ alt, ctrl, meta: none
+}
+
+key Y {
+ label: 'Y'
+ number: '9'
+ base: 'y'
+ shift, capslock: 'Y'
+ capslock+shift: 'y'
+ alt, ctrl, meta: none
+}
+
+key U {
+ label: 'U'
+ number: '8'
+ base: 'u'
+ shift, capslock: 'U'
+ capslock+shift: 'u'
+ alt, ctrl, meta: none
+}
+
+key I {
+ label: 'I'
+ number: '4'
+ base: 'i'
+ shift, capslock: 'I'
+ capslock+shift: 'i'
+ alt, ctrl, meta: none
+}
+
+key O {
+ label: 'O'
+ number: '6'
+ base: 'o'
+ shift, capslock: 'O'
+ capslock+shift: 'o'
+ alt, ctrl, meta: none
+}
+
+key P {
+ label: 'P'
+ number: '7'
+ base: 'p'
+ shift, capslock: 'P'
+ capslock+shift: 'p'
+ alt, ctrl, meta: none
+}
+
+key LEFT_BRACKET {
+ label: '\u00c5'
+ number: '\u00e5'
+ base: '\u00e5'
+ shift, capslock: '\u00c5'
+ capslock+shift: '\u00e5'
+ alt, ctrl, meta: none
+}
+
+key RIGHT_BRACKET {
+ label, number: '\u0308'
+ base: '\u0308'
+ shift: '\u0302'
+ alt: '\u0303'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key A {
+ label: 'A'
+ number: '2'
+ base: 'a'
+ shift, capslock: 'A'
+ capslock+shift: 'a'
+ alt, ctrl, meta: none
+}
+
+key S {
+ label: 'S'
+ number: '7'
+ base: 's'
+ shift, capslock: 'S'
+ capslock+shift: 's'
+ alt, ctrl, meta: none
+}
+
+key D {
+ label: 'D'
+ number: '3'
+ base: 'd'
+ shift, capslock: 'D'
+ capslock+shift: 'd'
+ alt, ctrl, meta: none
+}
+
+key F {
+ label: 'F'
+ number: '3'
+ base: 'f'
+ shift, capslock: 'F'
+ capslock+shift: 'f'
+ alt, ctrl, meta: none
+}
+
+key G {
+ label: 'G'
+ number: '4'
+ base: 'g'
+ shift, capslock: 'G'
+ capslock+shift: 'g'
+ alt, ctrl, meta: none
+}
+
+key H {
+ label: 'H'
+ number: '4'
+ base: 'h'
+ shift, capslock: 'H'
+ capslock+shift: 'h'
+ alt, ctrl, meta: none
+}
+
+key J {
+ label: 'J'
+ number: '5'
+ base: 'j'
+ shift, capslock: 'J'
+ capslock+shift: 'j'
+ alt, ctrl, meta: none
+}
+
+key K {
+ label: 'K'
+ number: '5'
+ base: 'k'
+ shift, capslock: 'K'
+ capslock+shift: 'k'
+ alt, ctrl, meta: none
+}
+
+key L {
+ label: 'L'
+ number: '5'
+ base: 'l'
+ shift, capslock: 'L'
+ capslock+shift: 'l'
+ alt, ctrl, meta: none
+}
+
+key SEMICOLON {
+ label: '\u00d6'
+ number: '\u00f6'
+ base: '\u00f6'
+ shift, capslock: '\u00d6'
+ capslock+shift: '\u00f6'
+ alt, ctrl, meta: none
+}
+
+key APOSTROPHE {
+ label: '\u00c4'
+ number: '\u00e4'
+ base: '\u00e4'
+ shift, capslock: '\u00c4'
+ capslock+shift: '\u00e4'
+ alt, ctrl, meta: none
+}
+
+key BACKSLASH {
+ label, number: '\''
+ base: '\''
+ shift: '*'
+ alt, ctrl, meta: none
+}
+
+key ENTER {
+ label, number: '\n'
+ base: '\n'
+ alt, ctrl, meta: none
+}
+
+key EUROPE_2 {
+ label, number: '<'
+ base: '<'
+ shift: '>'
+ alt: '|'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key Z {
+ label: 'Z'
+ number: '9'
+ base: 'z'
+ shift, capslock: 'Z'
+ capslock+shift: 'z'
+ alt, ctrl, meta: none
+}
+
+key X {
+ label: 'X'
+ number: '9'
+ base: 'x'
+ shift, capslock: 'X'
+ capslock+shift: 'x'
+ alt, ctrl, meta: none
+}
+
+key C {
+ label: 'C'
+ number: '2'
+ base: 'c'
+ shift, capslock: 'C'
+ capslock+shift: 'c'
+ alt, ctrl, meta: none
+}
+
+key V {
+ label: 'V'
+ number: '8'
+ base: 'v'
+ shift, capslock: 'V'
+ capslock+shift: 'v'
+ alt, ctrl, meta: none
+}
+
+key B {
+ label: 'B'
+ number: '2'
+ base: 'b'
+ shift, capslock: 'B'
+ capslock+shift: 'b'
+ alt, ctrl, meta: none
+}
+
+key N {
+ label: 'N'
+ number: '6'
+ base: 'n'
+ shift, capslock: 'N'
+ capslock+shift: 'n'
+ alt, ctrl, meta: none
+}
+
+key M {
+ label: 'M'
+ number: '6'
+ base: 'm'
+ shift, capslock: 'M'
+ alt: '\u00b5'
+ alt+shift: none
+ capslock+alt: '\u00b5'
+ capslock+shift: 'm'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key COMMA {
+ label, number: ','
+ base: ','
+ shift: ';'
+ alt, ctrl, meta: none
+}
+
+key PERIOD {
+ label, number: '.'
+ base: '.'
+ shift: ':'
+ alt, ctrl, meta: none
+}
+
+key SLASH {
+ label, number: '-'
+ base: '-'
+ shift: '_'
+ alt, ctrl, meta: none
+}
+
+key SPACE {
+ label, number: ' '
+ base: ' '
+ alt, ctrl, meta: none
+}
diff --git a/xt9/keychars/qwerty-tr_TR.kcm b/xt9/keychars/qwerty-tr_TR.kcm
new file mode 100644
index 0000000..f017ca6
--- /dev/null
+++ b/xt9/keychars/qwerty-tr_TR.kcm
@@ -0,0 +1,475 @@
+type FULL
+
+key GRAVE {
+ label, number: '"'
+ base: '"'
+ shift: '\u00e9'
+ alt: '<'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 1 {
+ label, number: '1'
+ base: '1'
+ shift: '!'
+ alt: '>'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 2 {
+ label, number: '2'
+ base: '2'
+ shift: '\''
+ alt: '\u00a3'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 3 {
+ label, number: '3'
+ base: '3'
+ shift: '^'
+ alt: '#'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 4 {
+ label, number: '4'
+ base: '4'
+ shift: '+'
+ alt: '$'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 5 {
+ label, number: '5'
+ base: '5'
+ shift: '%'
+ alt: '\u00bd'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 6 {
+ label, number: '6'
+ base: '6'
+ shift: '&'
+ alt, ctrl, meta: none
+}
+
+key 7 {
+ label, number: '7'
+ base: '7'
+ shift: '/'
+ alt: '{'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 8 {
+ label, number: '8'
+ base: '8'
+ shift: '('
+ alt: '['
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 9 {
+ label, number: '9'
+ base: '9'
+ shift: ')'
+ alt: ']'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key 0 {
+ label, number: '0'
+ base: '0'
+ shift: '='
+ alt: '}'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key MINUS {
+ label, number: '*'
+ base: '*'
+ shift: '?'
+ alt: '\\'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key EQUALS {
+ label, number: '-'
+ base: '-'
+ shift: '_'
+ alt: '|'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key TAB {
+ label, number: '\t'
+ base: '\t'
+ alt, ctrl, meta: none
+}
+
+key Q {
+ label: 'Q'
+ number: '7'
+ base: 'q'
+ shift, capslock: 'Q'
+ alt: '@'
+ alt+shift: none
+ capslock+alt: '@'
+ capslock+shift: 'q'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key W {
+ label: 'W'
+ number: '9'
+ base: 'w'
+ shift, capslock: 'W'
+ capslock+shift: 'w'
+ alt, ctrl, meta: none
+}
+
+key E {
+ label: 'E'
+ number: '3'
+ base: 'e'
+ shift, capslock: 'E'
+ alt: '\u20ac'
+ alt+shift: none
+ capslock+alt: '\u20ac'
+ capslock+shift: 'e'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key R {
+ label: 'R'
+ number: '7'
+ base: 'r'
+ shift, capslock: 'R'
+ capslock+shift: 'r'
+ alt, ctrl, meta: none
+}
+
+key T {
+ label: 'T'
+ number: '8'
+ base: 't'
+ shift, capslock: 'T'
+ capslock+shift: 't'
+ alt, ctrl, meta: none
+}
+
+key Y {
+ label: 'Y'
+ number: '9'
+ base: 'y'
+ shift, capslock: 'Y'
+ capslock+shift: 'y'
+ alt, ctrl, meta: none
+}
+
+key U {
+ label: 'U'
+ number: '8'
+ base: 'u'
+ shift, capslock: 'U'
+ capslock+shift: 'u'
+ alt, ctrl, meta: none
+}
+
+key I {
+ label: 'I'
+ number: '4'
+ base: 'i'
+ shift, capslock: 'I'
+ capslock+shift: 'i'
+ alt, ctrl, meta: none
+}
+
+key O {
+ label: 'O'
+ number: '6'
+ base: 'o'
+ shift, capslock: 'O'
+ capslock+shift: 'o'
+ alt, ctrl, meta: none
+}
+
+key P {
+ label: 'P'
+ number: '7'
+ base: 'p'
+ shift, capslock: 'P'
+ capslock+shift: 'p'
+ alt, ctrl, meta: none
+}
+
+key LEFT_BRACKET {
+ label: '\u011e'
+ number: '\u011f'
+ base: '\u011f'
+ shift, capslock: '\u011e'
+ alt: '\u0308'
+ alt+shift: none
+ capslock+alt: '\u0308'
+ capslock+shift: '\u011f'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key RIGHT_BRACKET {
+ label: '\u00dc'
+ number: '\u00fc'
+ base: '\u00fc'
+ shift, capslock: '\u00dc'
+ alt: '\u0303'
+ alt+shift: none
+ capslock+alt: '\u0303'
+ capslock+shift: '\u00fc'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key A {
+ label: 'A'
+ number: '2'
+ base: 'a'
+ shift, capslock: 'A'
+ alt: '\u00e6'
+ alt+shift: none
+ capslock+alt: '\u00c6'
+ capslock+shift: 'a'
+ capslock+alt+shift: '\u00e6'
+ ctrl, meta: none
+}
+
+key S {
+ label: 'S'
+ number: '7'
+ base: 's'
+ shift, capslock: 'S'
+ alt: '\u00df'
+ alt+shift: none
+ capslock+alt: '\u00df'
+ capslock+shift: 's'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key D {
+ label: 'D'
+ number: '3'
+ base: 'd'
+ shift, capslock: 'D'
+ capslock+shift: 'd'
+ alt, ctrl, meta: none
+}
+
+key F {
+ label: 'F'
+ number: '3'
+ base: 'f'
+ shift, capslock: 'F'
+ capslock+shift: 'f'
+ alt, ctrl, meta: none
+}
+
+key G {
+ label: 'G'
+ number: '4'
+ base: 'g'
+ shift, capslock: 'G'
+ capslock+shift: 'g'
+ alt, ctrl, meta: none
+}
+
+key H {
+ label: 'H'
+ number: '4'
+ base: 'h'
+ shift, capslock: 'H'
+ capslock+shift: 'h'
+ alt, ctrl, meta: none
+}
+
+key J {
+ label: 'J'
+ number: '5'
+ base: 'j'
+ shift, capslock: 'J'
+ capslock+shift: 'j'
+ alt, ctrl, meta: none
+}
+
+key K {
+ label: 'K'
+ number: '5'
+ base: 'k'
+ shift, capslock: 'K'
+ capslock+shift: 'k'
+ alt, ctrl, meta: none
+}
+
+key L {
+ label: 'L'
+ number: '5'
+ base: 'l'
+ shift, capslock: 'L'
+ capslock+shift: 'l'
+ alt, ctrl, meta: none
+}
+
+key SEMICOLON {
+ label: '\u015e'
+ number: '\u015f'
+ base: '\u015f'
+ shift, capslock: '\u015e'
+ alt: '\u0301'
+ alt+shift: none
+ capslock+alt: '\u0301'
+ capslock+shift: '\u015f'
+ capslock+alt+shift: none
+ ctrl, meta: none
+}
+
+key APOSTROPHE {
+ label: '\u0130'
+ number: 'i'
+ base: 'i'
+ shift, capslock: '\u0130'
+ capslock+shift: 'i'
+ alt, ctrl, meta: none
+}
+
+key BACKSLASH {
+ label, number: ','
+ base: ','
+ shift: ';'
+ alt: '\u0300'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key ENTER {
+ label, number: '\n'
+ base: '\n'
+ alt, ctrl, meta: none
+}
+
+key EUROPE_2 {
+ label, number: '<'
+ base: '<'
+ shift: '>'
+ alt: '|'
+ alt+shift: none
+ ctrl, meta: none
+}
+
+key Z {
+ label: 'Z'
+ number: '9'
+ base: 'z'
+ shift, capslock: 'Z'
+ capslock+shift: 'z'
+ alt, ctrl, meta: none
+}
+
+key X {
+ label: 'X'
+ number: '9'
+ base: 'x'
+ shift, capslock: 'X'
+ capslock+shift: 'x'
+ alt, ctrl, meta: none
+}
+
+key C {
+ label: 'C'
+ number: '2'
+ base: 'c'
+ shift, capslock: 'C'
+ capslock+shift: 'c'
+ alt, ctrl, meta: none
+}
+
+key V {
+ label: 'V'
+ number: '8'
+ base: 'v'
+ shift, capslock: 'V'
+ capslock+shift: 'v'
+ alt, ctrl, meta: none
+}
+
+key B {
+ label: 'B'
+ number: '2'
+ base: 'b'
+ shift, capslock: 'B'
+ capslock+shift: 'b'
+ alt, ctrl, meta: none
+}
+
+key N {
+ label: 'N'
+ number: '6'
+ base: 'n'
+ shift, capslock: 'N'
+ capslock+shift: 'n'
+ alt, ctrl, meta: none
+}
+
+key M {
+ label: 'M'
+ number: '6'
+ base: 'm'
+ shift, capslock: 'M'
+ capslock+shift: 'm'
+ alt, ctrl, meta: none
+}
+
+key COMMA {
+ label: '\u00d6'
+ number: '\u00f6'
+ base: '\u00f6'
+ shift, capslock: '\u00d6'
+ capslock+shift: '\u00f6'
+ alt, ctrl, meta: none
+}
+
+key PERIOD {
+ label: '\u00c7'
+ number: '\u00e7'
+ base: '\u00e7'
+ shift, capslock: '\u00c7'
+ capslock+shift: '\u00e7'
+ alt, ctrl, meta: none
+}
+
+key SLASH {
+ label, number: '.'
+ base: '.'
+ shift: ':'
+ alt, ctrl, meta: none
+}
+
+key SPACE {
+ label, number: ' '
+ base: ' '
+ alt, ctrl, meta: none
+}
diff --git a/xt9/keychars/qwerty-zh_CN.kcm b/xt9/keychars/qwerty-zh_CN.kcm
new file mode 100644
index 0000000..7c79dc0
--- /dev/null
+++ b/xt9/keychars/qwerty-zh_CN.kcm
@@ -0,0 +1,407 @@
+type FULL
+
+key GRAVE {
+ label, number: '`'
+ base: '`'
+ shift: '~'
+ alt, ctrl, meta: none
+}
+
+key 1 {
+ label, number: '1'
+ base: '1'
+ shift: '!'
+ alt, ctrl, meta: none
+}
+
+key 2 {
+ label, number: '2'
+ base: '2'
+ shift: '@'
+ alt, ctrl, meta: none
+}
+
+key 3 {
+ label, number: '3'
+ base: '3'
+ shift: '#'
+ alt, ctrl, meta: none
+}
+
+key 4 {
+ label, number: '4'
+ base: '4'
+ shift: '$'
+ alt, ctrl, meta: none
+}
+
+key 5 {
+ label, number: '5'
+ base: '5'
+ shift: '%'
+ alt, ctrl, meta: none
+}
+
+key 6 {
+ label, number: '6'
+ base: '6'
+ shift: '^'
+ alt, ctrl, meta: none
+}
+
+key 7 {
+ label, number: '7'
+ base: '7'
+ shift: '&'
+ alt, ctrl, meta: none
+}
+
+key 8 {
+ label, number: '8'
+ base: '8'
+ shift: '*'
+ alt, ctrl, meta: none
+}
+
+key 9 {
+ label, number: '9'
+ base: '9'
+ shift: '('
+ alt, ctrl, meta: none
+}
+
+key 0 {
+ label, number: '0'
+ base: '0'
+ shift: ')'
+ alt, ctrl, meta: none
+}
+
+key MINUS {
+ label, number: '-'
+ base: '-'
+ shift: '_'
+ alt, ctrl, meta: none
+}
+
+key EQUALS {
+ label, number: '='
+ base: '='
+ shift: '+'
+ alt, ctrl, meta: none
+}
+
+key TAB {
+ label, number: '\t'
+ base: '\t'
+ alt, ctrl, meta: none
+}
+
+key Q {
+ label: 'Q'
+ number: '7'
+ base: 'q'
+ shift, capslock: 'Q'
+ capslock+shift: 'q'
+ alt, ctrl, meta: none
+}
+
+key W {
+ label: 'W'
+ number: '9'
+ base: 'w'
+ shift, capslock: 'W'
+ capslock+shift: 'w'
+ alt, ctrl, meta: none
+}
+
+key E {
+ label: 'E'
+ number: '3'
+ base: 'e'
+ shift, capslock: 'E'
+ capslock+shift: 'e'
+ alt, ctrl, meta: none
+}
+
+key R {
+ label: 'R'
+ number: '7'
+ base: 'r'
+ shift, capslock: 'R'
+ capslock+shift: 'r'
+ alt, ctrl, meta: none
+}
+
+key T {
+ label: 'T'
+ number: '8'
+ base: 't'
+ shift, capslock: 'T'
+ capslock+shift: 't'
+ alt, ctrl, meta: none
+}
+
+key Y {
+ label: 'Y'
+ number: '9'
+ base: 'y'
+ shift, capslock: 'Y'
+ capslock+shift: 'y'
+ alt, ctrl, meta: none
+}
+
+key U {
+ label: 'U'
+ number: '8'
+ base: 'u'
+ shift, capslock: 'U'
+ capslock+shift: 'u'
+ alt, ctrl, meta: none
+}
+
+key I {
+ label: 'I'
+ number: '4'
+ base: 'i'
+ shift, capslock: 'I'
+ capslock+shift: 'i'
+ alt, ctrl, meta: none
+}
+
+key O {
+ label: 'O'
+ number: '6'
+ base: 'o'
+ shift, capslock: 'O'
+ capslock+shift: 'o'
+ alt, ctrl, meta: none
+}
+
+key P {
+ label: 'P'
+ number: '7'
+ base: 'p'
+ shift, capslock: 'P'
+ capslock+shift: 'p'
+ alt, ctrl, meta: none
+}
+
+key LEFT_BRACKET {
+ label, number: '['
+ base: '['
+ shift: '{'
+ alt, ctrl, meta: none
+}
+
+key RIGHT_BRACKET {
+ label, number: ']'
+ base: ']'
+ shift: '}'
+ alt, ctrl, meta: none
+}
+
+key BACKSLASH {
+ label, number: '\\'
+ base: '\\'
+ shift: '|'
+ alt, ctrl, meta: none
+}
+
+key A {
+ label: 'A'
+ number: '2'
+ base: 'a'
+ shift, capslock: 'A'
+ capslock+shift: 'a'
+ alt, ctrl, meta: none
+}
+
+key S {
+ label: 'S'
+ number: '7'
+ base: 's'
+ shift, capslock: 'S'
+ capslock+shift: 's'
+ alt, ctrl, meta: none
+}
+
+key D {
+ label: 'D'
+ number: '3'
+ base: 'd'
+ shift, capslock: 'D'
+ capslock+shift: 'd'
+ alt, ctrl, meta: none
+}
+
+key F {
+ label: 'F'
+ number: '3'
+ base: 'f'
+ shift, capslock: 'F'
+ capslock+shift: 'f'
+ alt, ctrl, meta: none
+}
+
+key G {
+ label: 'G'
+ number: '4'
+ base: 'g'
+ shift, capslock: 'G'
+ capslock+shift: 'g'
+ alt, ctrl, meta: none
+}
+
+key H {
+ label: 'H'
+ number: '4'
+ base: 'h'
+ shift, capslock: 'H'
+ capslock+shift: 'h'
+ alt, ctrl, meta: none
+}
+
+key J {
+ label: 'J'
+ number: '5'
+ base: 'j'
+ shift, capslock: 'J'
+ capslock+shift: 'j'
+ alt, ctrl, meta: none
+}
+
+key K {
+ label: 'K'
+ number: '5'
+ base: 'k'
+ shift, capslock: 'K'
+ capslock+shift: 'k'
+ alt, ctrl, meta: none
+}
+
+key L {
+ label: 'L'
+ number: '5'
+ base: 'l'
+ shift, capslock: 'L'
+ capslock+shift: 'l'
+ alt, ctrl, meta: none
+}
+
+key SEMICOLON {
+ label, number: ';'
+ base: ';'
+ shift: ':'
+ alt, ctrl, meta: none
+}
+
+key APOSTROPHE {
+ label, number: '\''
+ base: '\''
+ shift: '"'
+ alt, ctrl, meta: none
+}
+
+key ENTER {
+ label, number: '\n'
+ base: '\n'
+ alt, ctrl, meta: none
+}
+
+key Z {
+ label: 'Z'
+ number: '9'
+ base: 'z'
+ shift, capslock: 'Z'
+ capslock+shift: 'z'
+ alt, ctrl, meta: none
+}
+
+key X {
+ label: 'X'
+ number: '9'
+ base: 'x'
+ shift, capslock: 'X'
+ capslock+shift: 'x'
+ alt, ctrl, meta: none
+}
+
+key C {
+ label: 'C'
+ number: '2'
+ base: 'c'
+ shift, capslock: 'C'
+ capslock+shift: 'c'
+ alt, ctrl, meta: none
+}
+
+key V {
+ label: 'V'
+ number: '8'
+ base: 'v'
+ shift, capslock: 'V'
+ capslock+shift: 'v'
+ alt, ctrl, meta: none
+}
+
+key B {
+ label: 'B'
+ number: '2'
+ base: 'b'
+ shift, capslock: 'B'
+ capslock+shift: 'b'
+ alt, ctrl, meta: none
+}
+
+key N {
+ label: 'N'
+ number: '6'
+ base: 'n'
+ shift, capslock: 'N'
+ capslock+shift: 'n'
+ alt, ctrl, meta: none
+}
+
+key M {
+ label: 'M'
+ number: '6'
+ base: 'm'
+ shift, capslock: 'M'
+ capslock+shift: 'm'
+ alt, ctrl, meta: none
+}
+
+key COMMA {
+ label, number: ','
+ base: ','
+ shift: '<'
+ alt, ctrl, meta: none
+}
+
+key PERIOD {
+ label, number: '.'
+ base: '.'
+ shift: '>'
+ alt, ctrl, meta: none
+}
+
+key SLASH {
+ label, number: '/'
+ base: '/'
+ shift: '?'
+ alt, ctrl, meta: none
+}
+
+key SPACE {
+ label, number: ' '
+ base: ' '
+ alt, ctrl, meta: none
+}
+
+key EUROPE_2 {
+ label, number: '\\'
+ base: '\\'
+ shift: '|'
+ alt, ctrl, meta: none
+}
diff --git a/xt9/keychars/qwerty-zh_TW.kcm b/xt9/keychars/qwerty-zh_TW.kcm
new file mode 100644
index 0000000..7c79dc0
--- /dev/null
+++ b/xt9/keychars/qwerty-zh_TW.kcm
@@ -0,0 +1,407 @@
+type FULL
+
+key GRAVE {
+ label, number: '`'
+ base: '`'
+ shift: '~'
+ alt, ctrl, meta: none
+}
+
+key 1 {
+ label, number: '1'
+ base: '1'
+ shift: '!'
+ alt, ctrl, meta: none
+}
+
+key 2 {
+ label, number: '2'
+ base: '2'
+ shift: '@'
+ alt, ctrl, meta: none
+}
+
+key 3 {
+ label, number: '3'
+ base: '3'
+ shift: '#'
+ alt, ctrl, meta: none
+}
+
+key 4 {
+ label, number: '4'
+ base: '4'
+ shift: '$'
+ alt, ctrl, meta: none
+}
+
+key 5 {
+ label, number: '5'
+ base: '5'
+ shift: '%'
+ alt, ctrl, meta: none
+}
+
+key 6 {
+ label, number: '6'
+ base: '6'
+ shift: '^'
+ alt, ctrl, meta: none
+}
+
+key 7 {
+ label, number: '7'
+ base: '7'
+ shift: '&'
+ alt, ctrl, meta: none
+}
+
+key 8 {
+ label, number: '8'
+ base: '8'
+ shift: '*'
+ alt, ctrl, meta: none
+}
+
+key 9 {
+ label, number: '9'
+ base: '9'
+ shift: '('
+ alt, ctrl, meta: none
+}
+
+key 0 {
+ label, number: '0'
+ base: '0'
+ shift: ')'
+ alt, ctrl, meta: none
+}
+
+key MINUS {
+ label, number: '-'
+ base: '-'
+ shift: '_'
+ alt, ctrl, meta: none
+}
+
+key EQUALS {
+ label, number: '='
+ base: '='
+ shift: '+'
+ alt, ctrl, meta: none
+}
+
+key TAB {
+ label, number: '\t'
+ base: '\t'
+ alt, ctrl, meta: none
+}
+
+key Q {
+ label: 'Q'
+ number: '7'
+ base: 'q'
+ shift, capslock: 'Q'
+ capslock+shift: 'q'
+ alt, ctrl, meta: none
+}
+
+key W {
+ label: 'W'
+ number: '9'
+ base: 'w'
+ shift, capslock: 'W'
+ capslock+shift: 'w'
+ alt, ctrl, meta: none
+}
+
+key E {
+ label: 'E'
+ number: '3'
+ base: 'e'
+ shift, capslock: 'E'
+ capslock+shift: 'e'
+ alt, ctrl, meta: none
+}
+
+key R {
+ label: 'R'
+ number: '7'
+ base: 'r'
+ shift, capslock: 'R'
+ capslock+shift: 'r'
+ alt, ctrl, meta: none
+}
+
+key T {
+ label: 'T'
+ number: '8'
+ base: 't'
+ shift, capslock: 'T'
+ capslock+shift: 't'
+ alt, ctrl, meta: none
+}
+
+key Y {
+ label: 'Y'
+ number: '9'
+ base: 'y'
+ shift, capslock: 'Y'
+ capslock+shift: 'y'
+ alt, ctrl, meta: none
+}
+
+key U {
+ label: 'U'
+ number: '8'
+ base: 'u'
+ shift, capslock: 'U'
+ capslock+shift: 'u'
+ alt, ctrl, meta: none
+}
+
+key I {
+ label: 'I'
+ number: '4'
+ base: 'i'
+ shift, capslock: 'I'
+ capslock+shift: 'i'
+ alt, ctrl, meta: none
+}
+
+key O {
+ label: 'O'
+ number: '6'
+ base: 'o'
+ shift, capslock: 'O'
+ capslock+shift: 'o'
+ alt, ctrl, meta: none
+}
+
+key P {
+ label: 'P'
+ number: '7'
+ base: 'p'
+ shift, capslock: 'P'
+ capslock+shift: 'p'
+ alt, ctrl, meta: none
+}
+
+key LEFT_BRACKET {
+ label, number: '['
+ base: '['
+ shift: '{'
+ alt, ctrl, meta: none
+}
+
+key RIGHT_BRACKET {
+ label, number: ']'
+ base: ']'
+ shift: '}'
+ alt, ctrl, meta: none
+}
+
+key BACKSLASH {
+ label, number: '\\'
+ base: '\\'
+ shift: '|'
+ alt, ctrl, meta: none
+}
+
+key A {
+ label: 'A'
+ number: '2'
+ base: 'a'
+ shift, capslock: 'A'
+ capslock+shift: 'a'
+ alt, ctrl, meta: none
+}
+
+key S {
+ label: 'S'
+ number: '7'
+ base: 's'
+ shift, capslock: 'S'
+ capslock+shift: 's'
+ alt, ctrl, meta: none
+}
+
+key D {
+ label: 'D'
+ number: '3'
+ base: 'd'
+ shift, capslock: 'D'
+ capslock+shift: 'd'
+ alt, ctrl, meta: none
+}
+
+key F {
+ label: 'F'
+ number: '3'
+ base: 'f'
+ shift, capslock: 'F'
+ capslock+shift: 'f'
+ alt, ctrl, meta: none
+}
+
+key G {
+ label: 'G'
+ number: '4'
+ base: 'g'
+ shift, capslock: 'G'
+ capslock+shift: 'g'
+ alt, ctrl, meta: none
+}
+
+key H {
+ label: 'H'
+ number: '4'
+ base: 'h'
+ shift, capslock: 'H'
+ capslock+shift: 'h'
+ alt, ctrl, meta: none
+}
+
+key J {
+ label: 'J'
+ number: '5'
+ base: 'j'
+ shift, capslock: 'J'
+ capslock+shift: 'j'
+ alt, ctrl, meta: none
+}
+
+key K {
+ label: 'K'
+ number: '5'
+ base: 'k'
+ shift, capslock: 'K'
+ capslock+shift: 'k'
+ alt, ctrl, meta: none
+}
+
+key L {
+ label: 'L'
+ number: '5'
+ base: 'l'
+ shift, capslock: 'L'
+ capslock+shift: 'l'
+ alt, ctrl, meta: none
+}
+
+key SEMICOLON {
+ label, number: ';'
+ base: ';'
+ shift: ':'
+ alt, ctrl, meta: none
+}
+
+key APOSTROPHE {
+ label, number: '\''
+ base: '\''
+ shift: '"'
+ alt, ctrl, meta: none
+}
+
+key ENTER {
+ label, number: '\n'
+ base: '\n'
+ alt, ctrl, meta: none
+}
+
+key Z {
+ label: 'Z'
+ number: '9'
+ base: 'z'
+ shift, capslock: 'Z'
+ capslock+shift: 'z'
+ alt, ctrl, meta: none
+}
+
+key X {
+ label: 'X'
+ number: '9'
+ base: 'x'
+ shift, capslock: 'X'
+ capslock+shift: 'x'
+ alt, ctrl, meta: none
+}
+
+key C {
+ label: 'C'
+ number: '2'
+ base: 'c'
+ shift, capslock: 'C'
+ capslock+shift: 'c'
+ alt, ctrl, meta: none
+}
+
+key V {
+ label: 'V'
+ number: '8'
+ base: 'v'
+ shift, capslock: 'V'
+ capslock+shift: 'v'
+ alt, ctrl, meta: none
+}
+
+key B {
+ label: 'B'
+ number: '2'
+ base: 'b'
+ shift, capslock: 'B'
+ capslock+shift: 'b'
+ alt, ctrl, meta: none
+}
+
+key N {
+ label: 'N'
+ number: '6'
+ base: 'n'
+ shift, capslock: 'N'
+ capslock+shift: 'n'
+ alt, ctrl, meta: none
+}
+
+key M {
+ label: 'M'
+ number: '6'
+ base: 'm'
+ shift, capslock: 'M'
+ capslock+shift: 'm'
+ alt, ctrl, meta: none
+}
+
+key COMMA {
+ label, number: ','
+ base: ','
+ shift: '<'
+ alt, ctrl, meta: none
+}
+
+key PERIOD {
+ label, number: '.'
+ base: '.'
+ shift: '>'
+ alt, ctrl, meta: none
+}
+
+key SLASH {
+ label, number: '/'
+ base: '/'
+ shift: '?'
+ alt, ctrl, meta: none
+}
+
+key SPACE {
+ label, number: ' '
+ base: ' '
+ alt, ctrl, meta: none
+}
+
+key EUROPE_2 {
+ label, number: '\\'
+ base: '\\'
+ shift: '|'
+ alt, ctrl, meta: none
+}