summaryrefslogtreecommitdiff
path: root/xt9
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2011-07-10 13:42:25 +0100
committerdakkar <dakkar@thenautilus.net>2011-07-10 13:42:25 +0100
commit31edee53e512db234a2db5d741f558db1970e534 (patch)
tree10ef1237f15a40e2880ae31bab19bb7cc9429270 /xt9
parentsome tools (diff)
downloadtf101-dvorak-keyboard-31edee53e512db234a2db5d741f558db1970e534.tar.gz
tf101-dvorak-keyboard-31edee53e512db234a2db5d741f558db1970e534.tar.bz2
tf101-dvorak-keyboard-31edee53e512db234a2db5d741f558db1970e534.zip
files from Honeycomb 3.1
Diffstat (limited to 'xt9')
-rw-r--r--xt9/config/databases.conf116
-rw-r--r--xt9/databases/hwr/PRC/dltsdb.datbin0 -> 553408 bytes
-rw-r--r--xt9/databases/hwr/TW/dlttdb.datbin0 -> 466672 bytes
-rw-r--r--xt9/databases/kdb/ZHhpd_pinyin_bpmf_stroke_cangjie.kdbbin0 -> 781 bytes
-rw-r--r--xt9/databases/kdb/azerty.french.center.kdbbin0 -> 17550 bytes
-rw-r--r--xt9/databases/kdb/kohqd.kdbbin0 -> 750 bytes
-rw-r--r--xt9/databases/kdb/qwerty.arabic.center.kdbbin0 -> 15806 bytes
-rw-r--r--xt9/databases/kdb/qwerty.english.center.kdbbin0 -> 17550 bytes
-rw-r--r--xt9/databases/kdb/qwerty.greek.center.kdbbin0 -> 37498 bytes
-rw-r--r--xt9/databases/kdb/qwerty.hebrew.center.kdbbin0 -> 39390 bytes
-rw-r--r--xt9/databases/kdb/qwerty.russian.center.kdbbin0 -> 47438 bytes
-rw-r--r--xt9/databases/kdb/qwerty.thai.center.kdbbin0 -> 34790 bytes
-rw-r--r--xt9/databases/kdb/qwertz.german.center.kdbbin0 -> 17550 bytes
-rw-r--r--xt9/databases/ldb/ARlsUN_xt9.ldbbin0 -> 189836 bytes
-rw-r--r--xt9/databases/ldb/CSlsUN_xt9.ldbbin0 -> 283061 bytes
-rw-r--r--xt9/databases/ldb/DAusUN_xt9.ldbbin0 -> 158869 bytes
-rw-r--r--xt9/databases/ldb/DEusUN_xt9_2.ldbbin0 -> 530336 bytes
-rw-r--r--xt9/databases/ldb/ELlsUN_xt9.ldbbin0 -> 315069 bytes
-rw-r--r--xt9/databases/ldb/ENubUN_xt9_2.ldbbin0 -> 306100 bytes
-rw-r--r--xt9/databases/ldb/ESusUN_xt9_2.ldbbin0 -> 343852 bytes
-rw-r--r--xt9/databases/ldb/FIusUN_xt9_2.ldbbin0 -> 528874 bytes
-rw-r--r--xt9/databases/ldb/FRusUN_xt9_2.ldbbin0 -> 343140 bytes
-rw-r--r--xt9/databases/ldb/HElsUN_xt9.ldbbin0 -> 163041 bytes
-rw-r--r--xt9/databases/ldb/HUlsUN_xt9.ldbbin0 -> 304199 bytes
-rw-r--r--xt9/databases/ldb/ITusUN_xt9_2.ldbbin0 -> 385101 bytes
-rw-r--r--xt9/databases/ldb/NLlsUN_xt9_2.ldbbin0 -> 137118 bytes
-rw-r--r--xt9/databases/ldb/NOlsUN_xt9.ldbbin0 -> 163851 bytes
-rw-r--r--xt9/databases/ldb/PLlsUN_xt9.ldbbin0 -> 260146 bytes
-rw-r--r--xt9/databases/ldb/PTusUN_xt9.ldbbin0 -> 98822 bytes
-rw-r--r--xt9/databases/ldb/RUlsUN_xt9_2.ldbbin0 -> 314005 bytes
-rw-r--r--xt9/databases/ldb/SKlsUN_xt9.ldbbin0 -> 247507 bytes
-rw-r--r--xt9/databases/ldb/SVusUN_xt9.ldbbin0 -> 145951 bytes
-rw-r--r--xt9/databases/ldb/THlsUN_xt9.ldbbin0 -> 61674 bytes
-rw-r--r--xt9/databases/ldb/TRlsUN_xt9.ldbbin0 -> 437478 bytes
-rw-r--r--xt9/databases/ldb/ZHsbUNps_GB2312_xt9.ldbbin0 -> 538838 bytes
-rw-r--r--xt9/databases/ldb/ZHtbUNps_Big5_bpmf_pinyin_CJ_xt9.ldbbin0 -> 1041512 bytes
-rw-r--r--xt9/databases/mdb/DE.txt1
-rw-r--r--xt9/databases/mdb/EN.txt0
-rw-r--r--xt9/databases/mdb/ES.txt1
-rw-r--r--xt9/databases/mdb/FR.txt1
-rw-r--r--xt9/databases/mdb/IT.txt1
-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
-rw-r--r--xt9/keylayout/qwerty-ar_EG.kl86
-rw-r--r--xt9/keylayout/qwerty-cs_CZ.kl86
-rw-r--r--xt9/keylayout/qwerty-da_DK.kl86
-rw-r--r--xt9/keylayout/qwerty-de_CH.kl86
-rw-r--r--xt9/keylayout/qwerty-de_DE.kl86
-rw-r--r--xt9/keylayout/qwerty-el_GR.kl86
-rw-r--r--xt9/keylayout/qwerty-en_CA.kl86
-rw-r--r--xt9/keylayout/qwerty-en_GB.kl86
-rw-r--r--xt9/keylayout/qwerty-en_GR.kl86
-rw-r--r--xt9/keylayout/qwerty-en_US.kl86
-rw-r--r--xt9/keylayout/qwerty-es_ES.kl86
-rw-r--r--xt9/keylayout/qwerty-es_US.kl86
-rw-r--r--xt9/keylayout/qwerty-fi_FI.kl86
-rw-r--r--xt9/keylayout/qwerty-fr_BE.kl86
-rw-r--r--xt9/keylayout/qwerty-fr_CA.kl86
-rw-r--r--xt9/keylayout/qwerty-fr_CH.kl86
-rw-r--r--xt9/keylayout/qwerty-fr_FR.kl86
-rw-r--r--xt9/keylayout/qwerty-hu_HU.kl86
-rw-r--r--xt9/keylayout/qwerty-it_CH.kl86
-rw-r--r--xt9/keylayout/qwerty-it_IT.kl86
-rw-r--r--xt9/keylayout/qwerty-iw_IL.kl86
-rw-r--r--xt9/keylayout/qwerty-nb_NO.kl86
-rw-r--r--xt9/keylayout/qwerty-nl_BE.kl86
-rw-r--r--xt9/keylayout/qwerty-nl_NL.kl86
-rw-r--r--xt9/keylayout/qwerty-pl_PL.kl86
-rw-r--r--xt9/keylayout/qwerty-pt_BR.kl86
-rw-r--r--xt9/keylayout/qwerty-pt_PT.kl86
-rw-r--r--xt9/keylayout/qwerty-ru_RU.kl86
-rw-r--r--xt9/keylayout/qwerty-sv_SE.kl86
-rw-r--r--xt9/keylayout/qwerty-tr_TR.kl86
-rw-r--r--xt9/keylayout/qwerty-zh_CN.kl86
-rw-r--r--xt9/keylayout/qwerty-zh_TW.kl86
105 files changed, 17218 insertions, 0 deletions
diff --git a/xt9/config/databases.conf b/xt9/config/databases.conf
new file mode 100644
index 0000000..d2cda54
--- /dev/null
+++ b/xt9/config/databases.conf
@@ -0,0 +1,116 @@
+
+##
+## Keyboard and language databases configure file. This file map keyboard and laguage IDs to the actual
+## physical path
+
+##
+## Keyboard database mapping. Although keyboard datatase ID can be formated any form as long as the ID
+## matches the ID defined within the keyboard file. However for easy understanding and having a standard, we compose
+## the keyboard ID as follow;
+## YYZZ -- two bytes hex digits encoding for keyboard databases
+## YY -- one byte defines the keyboard layout
+## 06 -- Phonepad (12-keys)
+## 07 -- Qwertz (use by View when current locale is German)
+## 08 -- Azerty (use by View when current locale is French)
+## 09 -- Qwerty
+## 0A -- Reduced qwerty
+## 0B -- Reduced azerty
+## 0C -- Reduced qwertz
+##
+## ZZ -- one byte define language ID
+## FF -- indicates language independent, meaning can be use as a default keyboard database
+## Example:
+## 0x09FF - Language independent qwerty keyboard database
+## 0x0919 - Russian qwerty keyboard database
+## 0x09FF - French qwerty keyboard
+## 0x08FF - French azerty keyboard
+## 0x0BFF - French reduced azerty keyboard
+## 0x07FF - German Qwertz
+## 0x0CFF - German reduced Qwertz keyboard
+
+[kdb]
+# Regional qwerty keyboard database that is use by most alphabetic languages. This is the default qwerty keyboard
+# database use if we could not find a match ID/keyboard database file
+0x09FF /system/usr/xt9/databases/kdb/qwerty.english.center.kdb
+0x07FF /system/usr/xt9/databases/kdb/qwertz.german.center.kdb
+0x08FF /system/usr/xt9/databases/kdb/azerty.french.center.kdb
+0x0A04 /system/usr/xt9/databases/kdb/ZHhpd_pinyin_bpmf_stroke_cangjie.kdb
+0x0919 /system/usr/xt9/databases/kdb/qwerty.russian.center.kdb
+0x0908 /system/usr/xt9/databases/kdb/qwerty.greek.center.kdb
+0x090d /system/usr/xt9/databases/kdb/qwerty.hebrew.center.kdb
+0x0901 /system/usr/xt9/databases/kdb/qwerty.arabic.center.kdb
+0x091E /system/usr/xt9/databases/kdb/qwerty.thai.center.kdb
+0x0912 /system/usr/xt9/databases/kdb/kohqd.kdb
+
+## Language datbases mapping. Two bytes hex digits encoding
+[ldb]
+0x0109 /system/usr/xt9/databases/ldb/ENubUN_xt9_2.ldb
+0x010C /system/usr/xt9/databases/ldb/FRusUN_xt9_2.ldb
+0x0107 /system/usr/xt9/databases/ldb/DEusUN_xt9_2.ldb
+0x010A /system/usr/xt9/databases/ldb/ESusUN_xt9_2.ldb
+0x0110 /system/usr/xt9/databases/ldb/ITusUN_xt9_2.ldb
+0x0113 /system/usr/xt9/databases/ldb/NLlsUN_xt9_2.ldb
+0x0119 /system/usr/xt9/databases/ldb/RUlsUN_xt9_2.ldb
+0x0106 /system/usr/xt9/databases/ldb/DAusUN_xt9.ldb
+0x0116 /system/usr/xt9/databases/ldb/PTusUN_xt9.ldb
+0x010b /system/usr/xt9/databases/ldb/FIusUN_xt9_2.ldb
+0x011d /system/usr/xt9/databases/ldb/SVusUN_xt9.ldb
+0x0114 /system/usr/xt9/databases/ldb/NOlsUN_xt9.ldb
+0x0105 /system/usr/xt9/databases/ldb/CSlsUN_xt9.ldb
+0x0115 /system/usr/xt9/databases/ldb/PLlsUN_xt9.ldb
+0x011f /system/usr/xt9/databases/ldb/TRlsUN_xt9.ldb
+0x0108 /system/usr/xt9/databases/ldb/ELlsUN_xt9.ldb
+0x011b /system/usr/xt9/databases/ldb/SKlsUN_xt9.ldb
+0x010E /system/usr/xt9/databases/ldb/HUlsUN_xt9.ldb
+0x0101 /system/usr/xt9/databases/ldb/ARlsUN_xt9.ldb
+0x010D /system/usr/xt9/databases/ldb/HElsUN_xt9.ldb
+0x011E /system/usr/xt9/databases/ldb/THlsUN_xt9.ldb
+0x00E0 /system/usr/xt9/databases/ldb/ZHtbUNps_Big5_bpmf_pinyin_CJ_xt9.ldb
+0x00E1 /system/usr/xt9/databases/ldb/ZHsbUNps_GB2312_xt9.ldb
+
+##
+# Decuma hwr dictionaries. use if present, otherwise will convert xt9 ldb to t9write dictionary at run time
+[hwr_dic]
+## If HWR dictionary is not specified, we'll use the xt9 ldb and convert to t9 write dictionary at runtime
+##0x0109 /system/usr/xt9/databases/hwr/Alpha/english_xt9_le.dat
+##0x01FF /system/usr/xt9/databases/hwr/Alpha/english_xt9_le.dat
+
+##
+# Decuma hwr template databases
+[hwr_db_template]
+0x0109 /system/usr/xt9/databases/hwr/Alpha/database_le.dat
+0x01FF /system/usr/xt9/databases/hwr/Alpha/database_le.dat
+0x00E1 /system/usr/xt9/databases/hwr/PRC/dltsdb.dat
+0x00E0 /system/usr/xt9/databases/hwr/TW/dlttdb.dat
+
+##
+## Manufacturer Database - a supplementary word list that may be added by OEMs.
+## If it exists, xt9 will read and supply the words alongside LDB words in the
+## selection list.
+##
+## Format: UTF8 text, line delimited (*NIX line breaks)
+[mdb]
+0x0109 /system/usr/xt9/databases/mdb/EN.txt
+0x010C /system/usr/xt9/databases/mdb/FR.txt
+0x0107 /system/usr/xt9/databases/mdb/DE.txt
+0x010A /system/usr/xt9/databases/mdb/ES.txt
+0x0110 /system/usr/xt9/databases/mdb/IT.txt
+
+##
+## User Dictionary. Words are added user dictionary if they are not in our LDB nor MDB. File is created at run time.
+##
+[udb]
+0x00FF /data/data/com.nuance.xt9.input/udb.bin
+0x00E0 /data/data/com.nuance.xt9.input/chinese_trad_udb.bin
+0x00E1 /data/data/com.nuance.xt9.input/chinese_simp_udb.bin
+
+##
+## Auto-substibution database. Create at run time.
+[asdb]
+0x00FF /data/data/com.nuance.xt9.input/asdb.bin
+
+##
+## Cdb
+[cdb]
+0x00FF /data/data/com.nuance.xt9.input/cdb.bin
+
diff --git a/xt9/databases/hwr/PRC/dltsdb.dat b/xt9/databases/hwr/PRC/dltsdb.dat
new file mode 100644
index 0000000..d4cf633
--- /dev/null
+++ b/xt9/databases/hwr/PRC/dltsdb.dat
Binary files differ
diff --git a/xt9/databases/hwr/TW/dlttdb.dat b/xt9/databases/hwr/TW/dlttdb.dat
new file mode 100644
index 0000000..adad96d
--- /dev/null
+++ b/xt9/databases/hwr/TW/dlttdb.dat
Binary files differ
diff --git a/xt9/databases/kdb/ZHhpd_pinyin_bpmf_stroke_cangjie.kdb b/xt9/databases/kdb/ZHhpd_pinyin_bpmf_stroke_cangjie.kdb
new file mode 100644
index 0000000..e93b182
--- /dev/null
+++ b/xt9/databases/kdb/ZHhpd_pinyin_bpmf_stroke_cangjie.kdb
Binary files differ
diff --git a/xt9/databases/kdb/azerty.french.center.kdb b/xt9/databases/kdb/azerty.french.center.kdb
new file mode 100644
index 0000000..abd617d
--- /dev/null
+++ b/xt9/databases/kdb/azerty.french.center.kdb
Binary files differ
diff --git a/xt9/databases/kdb/kohqd.kdb b/xt9/databases/kdb/kohqd.kdb
new file mode 100644
index 0000000..0d8bc24
--- /dev/null
+++ b/xt9/databases/kdb/kohqd.kdb
Binary files differ
diff --git a/xt9/databases/kdb/qwerty.arabic.center.kdb b/xt9/databases/kdb/qwerty.arabic.center.kdb
new file mode 100644
index 0000000..3eb912e
--- /dev/null
+++ b/xt9/databases/kdb/qwerty.arabic.center.kdb
Binary files differ
diff --git a/xt9/databases/kdb/qwerty.english.center.kdb b/xt9/databases/kdb/qwerty.english.center.kdb
new file mode 100644
index 0000000..6cde87c
--- /dev/null
+++ b/xt9/databases/kdb/qwerty.english.center.kdb
Binary files differ
diff --git a/xt9/databases/kdb/qwerty.greek.center.kdb b/xt9/databases/kdb/qwerty.greek.center.kdb
new file mode 100644
index 0000000..f5b5a5e
--- /dev/null
+++ b/xt9/databases/kdb/qwerty.greek.center.kdb
Binary files differ
diff --git a/xt9/databases/kdb/qwerty.hebrew.center.kdb b/xt9/databases/kdb/qwerty.hebrew.center.kdb
new file mode 100644
index 0000000..54fcc14
--- /dev/null
+++ b/xt9/databases/kdb/qwerty.hebrew.center.kdb
Binary files differ
diff --git a/xt9/databases/kdb/qwerty.russian.center.kdb b/xt9/databases/kdb/qwerty.russian.center.kdb
new file mode 100644
index 0000000..4aefbc1
--- /dev/null
+++ b/xt9/databases/kdb/qwerty.russian.center.kdb
Binary files differ
diff --git a/xt9/databases/kdb/qwerty.thai.center.kdb b/xt9/databases/kdb/qwerty.thai.center.kdb
new file mode 100644
index 0000000..f250550
--- /dev/null
+++ b/xt9/databases/kdb/qwerty.thai.center.kdb
Binary files differ
diff --git a/xt9/databases/kdb/qwertz.german.center.kdb b/xt9/databases/kdb/qwertz.german.center.kdb
new file mode 100644
index 0000000..f48eb8a
--- /dev/null
+++ b/xt9/databases/kdb/qwertz.german.center.kdb
Binary files differ
diff --git a/xt9/databases/ldb/ARlsUN_xt9.ldb b/xt9/databases/ldb/ARlsUN_xt9.ldb
new file mode 100644
index 0000000..db5ebe4
--- /dev/null
+++ b/xt9/databases/ldb/ARlsUN_xt9.ldb
Binary files differ
diff --git a/xt9/databases/ldb/CSlsUN_xt9.ldb b/xt9/databases/ldb/CSlsUN_xt9.ldb
new file mode 100644
index 0000000..fb889a4
--- /dev/null
+++ b/xt9/databases/ldb/CSlsUN_xt9.ldb
Binary files differ
diff --git a/xt9/databases/ldb/DAusUN_xt9.ldb b/xt9/databases/ldb/DAusUN_xt9.ldb
new file mode 100644
index 0000000..a1d2468
--- /dev/null
+++ b/xt9/databases/ldb/DAusUN_xt9.ldb
Binary files differ
diff --git a/xt9/databases/ldb/DEusUN_xt9_2.ldb b/xt9/databases/ldb/DEusUN_xt9_2.ldb
new file mode 100644
index 0000000..e4d05bd
--- /dev/null
+++ b/xt9/databases/ldb/DEusUN_xt9_2.ldb
Binary files differ
diff --git a/xt9/databases/ldb/ELlsUN_xt9.ldb b/xt9/databases/ldb/ELlsUN_xt9.ldb
new file mode 100644
index 0000000..7bc91a6
--- /dev/null
+++ b/xt9/databases/ldb/ELlsUN_xt9.ldb
Binary files differ
diff --git a/xt9/databases/ldb/ENubUN_xt9_2.ldb b/xt9/databases/ldb/ENubUN_xt9_2.ldb
new file mode 100644
index 0000000..8bc7f14
--- /dev/null
+++ b/xt9/databases/ldb/ENubUN_xt9_2.ldb
Binary files differ
diff --git a/xt9/databases/ldb/ESusUN_xt9_2.ldb b/xt9/databases/ldb/ESusUN_xt9_2.ldb
new file mode 100644
index 0000000..186059c
--- /dev/null
+++ b/xt9/databases/ldb/ESusUN_xt9_2.ldb
Binary files differ
diff --git a/xt9/databases/ldb/FIusUN_xt9_2.ldb b/xt9/databases/ldb/FIusUN_xt9_2.ldb
new file mode 100644
index 0000000..401041a
--- /dev/null
+++ b/xt9/databases/ldb/FIusUN_xt9_2.ldb
Binary files differ
diff --git a/xt9/databases/ldb/FRusUN_xt9_2.ldb b/xt9/databases/ldb/FRusUN_xt9_2.ldb
new file mode 100644
index 0000000..193576c
--- /dev/null
+++ b/xt9/databases/ldb/FRusUN_xt9_2.ldb
Binary files differ
diff --git a/xt9/databases/ldb/HElsUN_xt9.ldb b/xt9/databases/ldb/HElsUN_xt9.ldb
new file mode 100644
index 0000000..5ff1577
--- /dev/null
+++ b/xt9/databases/ldb/HElsUN_xt9.ldb
Binary files differ
diff --git a/xt9/databases/ldb/HUlsUN_xt9.ldb b/xt9/databases/ldb/HUlsUN_xt9.ldb
new file mode 100644
index 0000000..6a24c72
--- /dev/null
+++ b/xt9/databases/ldb/HUlsUN_xt9.ldb
Binary files differ
diff --git a/xt9/databases/ldb/ITusUN_xt9_2.ldb b/xt9/databases/ldb/ITusUN_xt9_2.ldb
new file mode 100644
index 0000000..7a1b1e7
--- /dev/null
+++ b/xt9/databases/ldb/ITusUN_xt9_2.ldb
Binary files differ
diff --git a/xt9/databases/ldb/NLlsUN_xt9_2.ldb b/xt9/databases/ldb/NLlsUN_xt9_2.ldb
new file mode 100644
index 0000000..f982f89
--- /dev/null
+++ b/xt9/databases/ldb/NLlsUN_xt9_2.ldb
Binary files differ
diff --git a/xt9/databases/ldb/NOlsUN_xt9.ldb b/xt9/databases/ldb/NOlsUN_xt9.ldb
new file mode 100644
index 0000000..c93bacc
--- /dev/null
+++ b/xt9/databases/ldb/NOlsUN_xt9.ldb
Binary files differ
diff --git a/xt9/databases/ldb/PLlsUN_xt9.ldb b/xt9/databases/ldb/PLlsUN_xt9.ldb
new file mode 100644
index 0000000..dffc782
--- /dev/null
+++ b/xt9/databases/ldb/PLlsUN_xt9.ldb
Binary files differ
diff --git a/xt9/databases/ldb/PTusUN_xt9.ldb b/xt9/databases/ldb/PTusUN_xt9.ldb
new file mode 100644
index 0000000..1dfe6fd
--- /dev/null
+++ b/xt9/databases/ldb/PTusUN_xt9.ldb
Binary files differ
diff --git a/xt9/databases/ldb/RUlsUN_xt9_2.ldb b/xt9/databases/ldb/RUlsUN_xt9_2.ldb
new file mode 100644
index 0000000..078e64e
--- /dev/null
+++ b/xt9/databases/ldb/RUlsUN_xt9_2.ldb
Binary files differ
diff --git a/xt9/databases/ldb/SKlsUN_xt9.ldb b/xt9/databases/ldb/SKlsUN_xt9.ldb
new file mode 100644
index 0000000..581c8b7
--- /dev/null
+++ b/xt9/databases/ldb/SKlsUN_xt9.ldb
Binary files differ
diff --git a/xt9/databases/ldb/SVusUN_xt9.ldb b/xt9/databases/ldb/SVusUN_xt9.ldb
new file mode 100644
index 0000000..1029ad9
--- /dev/null
+++ b/xt9/databases/ldb/SVusUN_xt9.ldb
Binary files differ
diff --git a/xt9/databases/ldb/THlsUN_xt9.ldb b/xt9/databases/ldb/THlsUN_xt9.ldb
new file mode 100644
index 0000000..020f018
--- /dev/null
+++ b/xt9/databases/ldb/THlsUN_xt9.ldb
Binary files differ
diff --git a/xt9/databases/ldb/TRlsUN_xt9.ldb b/xt9/databases/ldb/TRlsUN_xt9.ldb
new file mode 100644
index 0000000..05c3961
--- /dev/null
+++ b/xt9/databases/ldb/TRlsUN_xt9.ldb
Binary files differ
diff --git a/xt9/databases/ldb/ZHsbUNps_GB2312_xt9.ldb b/xt9/databases/ldb/ZHsbUNps_GB2312_xt9.ldb
new file mode 100644
index 0000000..f171ac5
--- /dev/null
+++ b/xt9/databases/ldb/ZHsbUNps_GB2312_xt9.ldb
Binary files differ
diff --git a/xt9/databases/ldb/ZHtbUNps_Big5_bpmf_pinyin_CJ_xt9.ldb b/xt9/databases/ldb/ZHtbUNps_Big5_bpmf_pinyin_CJ_xt9.ldb
new file mode 100644
index 0000000..b9afe57
--- /dev/null
+++ b/xt9/databases/ldb/ZHtbUNps_Big5_bpmf_pinyin_CJ_xt9.ldb
Binary files differ
diff --git a/xt9/databases/mdb/DE.txt b/xt9/databases/mdb/DE.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/xt9/databases/mdb/DE.txt
@@ -0,0 +1 @@
+
diff --git a/xt9/databases/mdb/EN.txt b/xt9/databases/mdb/EN.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/xt9/databases/mdb/EN.txt
diff --git a/xt9/databases/mdb/ES.txt b/xt9/databases/mdb/ES.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/xt9/databases/mdb/ES.txt
@@ -0,0 +1 @@
+
diff --git a/xt9/databases/mdb/FR.txt b/xt9/databases/mdb/FR.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/xt9/databases/mdb/FR.txt
@@ -0,0 +1 @@
+
diff --git a/xt9/databases/mdb/IT.txt b/xt9/databases/mdb/IT.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/xt9/databases/mdb/IT.txt
@@ -0,0 +1 @@
+
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
+}
diff --git a/xt9/keylayout/qwerty-ar_EG.kl b/xt9/keylayout/qwerty-ar_EG.kl
new file mode 100644
index 0000000..2d7e164
--- /dev/null
+++ b/xt9/keylayout/qwerty-ar_EG.kl
@@ -0,0 +1,86 @@
+key 41 GRAVE WAKE UNLOCK
+key 2 1 WAKE UNLOCK
+key 3 2 WAKE UNLOCK
+key 4 3 WAKE UNLOCK
+key 5 4 WAKE UNLOCK
+key 6 5 WAKE UNLOCK
+key 7 6 WAKE UNLOCK
+key 8 7 WAKE UNLOCK
+key 9 8 WAKE UNLOCK
+key 10 9 WAKE UNLOCK
+key 11 0 WAKE UNLOCK
+key 12 MINUS WAKE UNLOCK
+key 13 EQUALS WAKE UNLOCK
+key 14 DEL WAKE UNLOCK
+key 15 TAB WAKE UNLOCK
+key 16 Q WAKE UNLOCK
+key 17 W WAKE UNLOCK
+key 18 E WAKE UNLOCK
+key 19 R WAKE UNLOCK
+key 20 T WAKE UNLOCK
+key 21 Y WAKE UNLOCK
+key 22 U WAKE UNLOCK
+key 23 I WAKE UNLOCK
+key 24 O WAKE UNLOCK
+key 25 P WAKE UNLOCK
+key 26 LEFT_BRACKET WAKE UNLOCK
+key 27 RIGHT_BRACKET WAKE UNLOCK
+key 43 BACKSLASH WAKE UNLOCK
+key 58 CAPS_LOCK WAKE UNLOCK
+key 30 A WAKE UNLOCK
+key 31 S WAKE UNLOCK
+key 32 D WAKE UNLOCK
+key 33 F WAKE UNLOCK
+key 34 G WAKE UNLOCK
+key 35 H WAKE UNLOCK
+key 36 J WAKE UNLOCK
+key 37 K WAKE UNLOCK
+key 38 L WAKE UNLOCK
+key 39 SEMICOLON WAKE UNLOCK
+key 40 APOSTROPHE WAKE UNLOCK
+key 28 ENTER WAKE UNLOCK
+key 42 SHIFT_LEFT WAKE UNLOCK
+key 44 Z WAKE UNLOCK
+key 45 X WAKE UNLOCK
+key 46 C WAKE UNLOCK
+key 47 V WAKE UNLOCK
+key 48 B WAKE UNLOCK
+key 49 N WAKE UNLOCK
+key 50 M WAKE UNLOCK
+key 51 COMMA WAKE UNLOCK
+key 52 PERIOD WAKE UNLOCK
+key 53 SLASH WAKE UNLOCK
+key 54 SHIFT_RIGHT WAKE UNLOCK
+key 29 CTRL_LEFT WAKE UNLOCK
+key 217 SEARCH WAKE UNLOCK
+key 57 SPACE WAKE UNLOCK
+key 100 ALT_RIGHT WAKE UNLOCK
+key 97 CTRL_RIGHT WAKE UNLOCK
+key 115 VOLUME_UP WAKE UNLOCK
+key 142 SLEEP WAKE UNLOCK
+key 105 DPAD_LEFT WAKE UNLOCK
+key 103 DPAD_UP WAKE UNLOCK
+key 108 DPAD_DOWN WAKE UNLOCK
+key 106 DPAD_RIGHT WAKE UNLOCK
+key 158 BACK WAKE UNLOCK
+key 238 WIRELESS WAKE UNLOCK
+key 237 BLUETOOTH WAKE UNLOCK
+key 60 TOUCHPAD WAKE UNLOCK
+key 224 BRIGHTNESS_DOWN WAKE UNLOCK
+key 225 BRIGHTNESS_UP WAKE UNLOCK
+key 61 BRIGHTNESS_AUTO WAKE UNLOCK
+key 212 CAPTURE WAKE UNLOCK
+key 150 EXPLORER WAKE UNLOCK
+key 62 SETTINGS WAKE UNLOCK
+key 165 MEDIA_PREVIOUS WAKE UNLOCK
+key 164 MEDIA_PLAY_PAUSE WAKE UNLOCK
+key 163 MEDIA_NEXT WAKE UNLOCK
+key 114 VOLUME_DOWN WAKE UNLOCK
+key 113 VOLUME_MUTE WAKE UNLOCK
+key 172 HOME WAKE UNLOCK
+key 139 MENU WAKE UNLOCK
+key 104 PAGE_UP WAKE UNLOCK
+key 109 PAGE_DOWN WAKE UNLOCK
+key 107 MOVE_END WAKE UNLOCK
+key 102 MOVE_HOME WAKE UNLOCK
+key 86 EUROPE_2 WAKE UNLOCK
diff --git a/xt9/keylayout/qwerty-cs_CZ.kl b/xt9/keylayout/qwerty-cs_CZ.kl
new file mode 100644
index 0000000..adc4d92
--- /dev/null
+++ b/xt9/keylayout/qwerty-cs_CZ.kl
@@ -0,0 +1,86 @@
+key 41 GRAVE WAKE UNLOCK
+key 2 1 WAKE UNLOCK
+key 3 2 WAKE UNLOCK
+key 4 3 WAKE UNLOCK
+key 5 4 WAKE UNLOCK
+key 6 5 WAKE UNLOCK
+key 7 6 WAKE UNLOCK
+key 8 7 WAKE UNLOCK
+key 9 8 WAKE UNLOCK
+key 10 9 WAKE UNLOCK
+key 11 0 WAKE UNLOCK
+key 12 MINUS WAKE UNLOCK
+key 13 EQUALS WAKE UNLOCK
+key 14 DEL WAKE UNLOCK
+key 15 TAB WAKE UNLOCK
+key 16 Q WAKE UNLOCK
+key 17 W WAKE UNLOCK
+key 18 E WAKE UNLOCK
+key 19 R WAKE UNLOCK
+key 20 T WAKE UNLOCK
+key 21 Z WAKE UNLOCK
+key 22 U WAKE UNLOCK
+key 23 I WAKE UNLOCK
+key 24 O WAKE UNLOCK
+key 25 P WAKE UNLOCK
+key 26 LEFT_BRACKET WAKE UNLOCK
+key 27 RIGHT_BRACKET WAKE UNLOCK
+key 58 CAPS_LOCK WAKE UNLOCK
+key 30 A WAKE UNLOCK
+key 31 S WAKE UNLOCK
+key 32 D WAKE UNLOCK
+key 33 F WAKE UNLOCK
+key 34 G WAKE UNLOCK
+key 35 H WAKE UNLOCK
+key 36 J WAKE UNLOCK
+key 37 K WAKE UNLOCK
+key 38 L WAKE UNLOCK
+key 39 SEMICOLON WAKE UNLOCK
+key 40 APOSTROPHE WAKE UNLOCK
+key 43 BACKSLASH WAKE UNLOCK
+key 28 ENTER WAKE UNLOCK
+key 42 SHIFT_LEFT WAKE UNLOCK
+key 86 EUROPE_2 WAKE UNLOCK
+key 44 Y WAKE UNLOCK
+key 45 X WAKE UNLOCK
+key 46 C WAKE UNLOCK
+key 47 V WAKE UNLOCK
+key 48 B WAKE UNLOCK
+key 49 N WAKE UNLOCK
+key 50 M WAKE UNLOCK
+key 51 COMMA WAKE UNLOCK
+key 52 PERIOD WAKE UNLOCK
+key 53 SLASH WAKE UNLOCK
+key 54 SHIFT_RIGHT WAKE UNLOCK
+key 29 CTRL_LEFT WAKE UNLOCK
+key 217 SEARCH WAKE UNLOCK
+key 57 SPACE WAKE UNLOCK
+key 100 ALT_RIGHT WAKE UNLOCK
+key 97 CTRL_RIGHT WAKE UNLOCK
+key 115 VOLUME_UP WAKE UNLOCK
+key 142 SLEEP WAKE UNLOCK
+key 105 DPAD_LEFT WAKE UNLOCK
+key 103 DPAD_UP WAKE UNLOCK
+key 108 DPAD_DOWN WAKE UNLOCK
+key 106 DPAD_RIGHT WAKE UNLOCK
+key 158 BACK WAKE UNLOCK
+key 238 WIRELESS WAKE UNLOCK
+key 237 BLUETOOTH WAKE UNLOCK
+key 60 TOUCHPAD WAKE UNLOCK
+key 224 BRIGHTNESS_DOWN WAKE UNLOCK
+key 225 BRIGHTNESS_UP WAKE UNLOCK
+key 61 BRIGHTNESS_AUTO WAKE UNLOCK
+key 212 CAPTURE WAKE UNLOCK
+key 150 EXPLORER WAKE UNLOCK
+key 62 SETTINGS WAKE UNLOCK
+key 165 MEDIA_PREVIOUS WAKE UNLOCK
+key 164 MEDIA_PLAY_PAUSE WAKE UNLOCK
+key 163 MEDIA_NEXT WAKE UNLOCK
+key 114 VOLUME_DOWN WAKE UNLOCK
+key 113 VOLUME_MUTE WAKE UNLOCK
+key 172 HOME WAKE UNLOCK
+key 139 MENU WAKE UNLOCK
+key 104 PAGE_UP WAKE UNLOCK
+key 109 PAGE_DOWN WAKE UNLOCK
+key 107 MOVE_END WAKE UNLOCK
+key 102 MOVE_HOME WAKE UNLOCK
diff --git a/xt9/keylayout/qwerty-da_DK.kl b/xt9/keylayout/qwerty-da_DK.kl
new file mode 100644
index 0000000..74d5299
--- /dev/null
+++ b/xt9/keylayout/qwerty-da_DK.kl
@@ -0,0 +1,86 @@
+key 41 GRAVE WAKE UNLOCK
+key 2 1 WAKE UNLOCK
+key 3 2 WAKE UNLOCK
+key 4 3 WAKE UNLOCK
+key 5 4 WAKE UNLOCK
+key 6 5 WAKE UNLOCK
+key 7 6 WAKE UNLOCK
+key 8 7 WAKE UNLOCK
+key 9 8 WAKE UNLOCK
+key 10 9 WAKE UNLOCK
+key 11 0 WAKE UNLOCK
+key 12 MINUS WAKE UNLOCK
+key 13 EQUALS WAKE UNLOCK
+key 14 DEL WAKE UNLOCK
+key 15 TAB WAKE UNLOCK
+key 16 Q WAKE UNLOCK
+key 17 W WAKE UNLOCK
+key 18 E WAKE UNLOCK
+key 19 R WAKE UNLOCK
+key 20 T WAKE UNLOCK
+key 21 Y WAKE UNLOCK
+key 22 U WAKE UNLOCK
+key 23 I WAKE UNLOCK
+key 24 O WAKE UNLOCK
+key 25 P WAKE UNLOCK
+key 26 LEFT_BRACKET WAKE UNLOCK
+key 27 RIGHT_BRACKET WAKE UNLOCK
+key 58 CAPS_LOCK WAKE UNLOCK
+key 30 A WAKE UNLOCK
+key 31 S WAKE UNLOCK
+key 32 D WAKE UNLOCK
+key 33 F WAKE UNLOCK
+key 34 G WAKE UNLOCK
+key 35 H WAKE UNLOCK
+key 36 J WAKE UNLOCK
+key 37 K WAKE UNLOCK
+key 38 L WAKE UNLOCK
+key 39 SEMICOLON WAKE UNLOCK
+key 40 APOSTROPHE WAKE UNLOCK
+key 43 BACKSLASH WAKE UNLOCK
+key 28 ENTER WAKE UNLOCK
+key 42 SHIFT_LEFT WAKE UNLOCK
+key 86 EUROPE_2 WAKE UNLOCK
+key 44 Z WAKE UNLOCK
+key 45 X WAKE UNLOCK
+key 46 C WAKE UNLOCK
+key 47 V WAKE UNLOCK
+key 48 B WAKE UNLOCK
+key 49 N WAKE UNLOCK
+key 50 M WAKE UNLOCK
+key 51 COMMA WAKE UNLOCK
+key 52 PERIOD WAKE UNLOCK
+key 53 SLASH WAKE UNLOCK
+key 54 SHIFT_RIGHT WAKE UNLOCK
+key 29 CTRL_LEFT WAKE UNLOCK
+key 217 SEARCH WAKE UNLOCK
+key 57 SPACE WAKE UNLOCK
+key 100 ALT_RIGHT WAKE UNLOCK
+key 97 CTRL_RIGHT WAKE UNLOCK
+key 115 VOLUME_UP WAKE UNLOCK
+key 142 SLEEP WAKE UNLOCK
+key 105 DPAD_LEFT WAKE UNLOCK
+key 103 DPAD_UP WAKE UNLOCK
+key 108 DPAD_DOWN WAKE UNLOCK
+key 106 DPAD_RIGHT WAKE UNLOCK
+key 158 BACK WAKE UNLOCK
+key 238 WIRELESS WAKE UNLOCK
+key 237 BLUETOOTH WAKE UNLOCK
+key 60 TOUCHPAD WAKE UNLOCK
+key 224 BRIGHTNESS_DOWN WAKE UNLOCK
+key 225 BRIGHTNESS_UP WAKE UNLOCK
+key 61 BRIGHTNESS_AUTO WAKE UNLOCK
+key 212 CAPTURE WAKE UNLOCK
+key 150 EXPLORER WAKE UNLOCK
+key 62 SETTINGS WAKE UNLOCK
+key 165 MEDIA_PREVIOUS WAKE UNLOCK
+key 164 MEDIA_PLAY_PAUSE WAKE UNLOCK
+key 163 MEDIA_NEXT WAKE UNLOCK
+key 114 VOLUME_DOWN WAKE UNLOCK
+key 113 VOLUME_MUTE WAKE UNLOCK
+key 172 HOME WAKE UNLOCK
+key 139 MENU WAKE UNLOCK
+key 104 PAGE_UP WAKE UNLOCK
+key 109 PAGE_DOWN WAKE UNLOCK
+key 107 MOVE_END WAKE UNLOCK
+key 102 MOVE_HOME WAKE UNLOCK
diff --git a/xt9/keylayout/qwerty-de_CH.kl b/xt9/keylayout/qwerty-de_CH.kl
new file mode 100644
index 0000000..adc4d92
--- /dev/null
+++ b/xt9/keylayout/qwerty-de_CH.kl
@@ -0,0 +1,86 @@
+key 41 GRAVE WAKE UNLOCK
+key 2 1 WAKE UNLOCK
+key 3 2 WAKE UNLOCK
+key 4 3 WAKE UNLOCK
+key 5 4 WAKE UNLOCK
+key 6 5 WAKE UNLOCK
+key 7 6 WAKE UNLOCK
+key 8 7 WAKE UNLOCK
+key 9 8 WAKE UNLOCK
+key 10 9 WAKE UNLOCK
+key 11 0 WAKE UNLOCK
+key 12 MINUS WAKE UNLOCK
+key 13 EQUALS WAKE UNLOCK
+key 14 DEL WAKE UNLOCK
+key 15 TAB WAKE UNLOCK
+key 16 Q WAKE UNLOCK
+key 17 W WAKE UNLOCK
+key 18 E WAKE UNLOCK
+key 19 R WAKE UNLOCK
+key 20 T WAKE UNLOCK
+key 21 Z WAKE UNLOCK
+key 22 U WAKE UNLOCK
+key 23 I WAKE UNLOCK
+key 24 O WAKE UNLOCK
+key 25 P WAKE UNLOCK
+key 26 LEFT_BRACKET WAKE UNLOCK
+key 27 RIGHT_BRACKET WAKE UNLOCK
+key 58 CAPS_LOCK WAKE UNLOCK
+key 30 A WAKE UNLOCK
+key 31 S WAKE UNLOCK
+key 32 D WAKE UNLOCK
+key 33 F WAKE UNLOCK
+key 34 G WAKE UNLOCK
+key 35 H WAKE UNLOCK
+key 36 J WAKE UNLOCK
+key 37 K WAKE UNLOCK
+key 38 L WAKE UNLOCK
+key 39 SEMICOLON WAKE UNLOCK
+key 40 APOSTROPHE WAKE UNLOCK
+key 43 BACKSLASH WAKE UNLOCK
+key 28 ENTER WAKE UNLOCK
+key 42 SHIFT_LEFT WAKE UNLOCK
+key 86 EUROPE_2 WAKE UNLOCK
+key 44 Y WAKE UNLOCK
+key 45 X WAKE UNLOCK
+key 46 C WAKE UNLOCK
+key 47 V WAKE UNLOCK
+key 48 B WAKE UNLOCK
+key 49 N WAKE UNLOCK
+key 50 M WAKE UNLOCK
+key 51 COMMA WAKE UNLOCK
+key 52 PERIOD WAKE UNLOCK
+key 53 SLASH WAKE UNLOCK
+key 54 SHIFT_RIGHT WAKE UNLOCK
+key 29 CTRL_LEFT WAKE UNLOCK
+key 217 SEARCH WAKE UNLOCK
+key 57 SPACE WAKE UNLOCK
+key 100 ALT_RIGHT WAKE UNLOCK
+key 97 CTRL_RIGHT WAKE UNLOCK
+key 115 VOLUME_UP WAKE UNLOCK
+key 142 SLEEP WAKE UNLOCK
+key 105 DPAD_LEFT WAKE UNLOCK
+key 103 DPAD_UP WAKE UNLOCK
+key 108 DPAD_DOWN WAKE UNLOCK
+key 106 DPAD_RIGHT WAKE UNLOCK
+key 158 BACK WAKE UNLOCK
+key 238 WIRELESS WAKE UNLOCK
+key 237 BLUETOOTH WAKE UNLOCK
+key 60 TOUCHPAD WAKE UNLOCK
+key 224 BRIGHTNESS_DOWN WAKE UNLOCK
+key 225 BRIGHTNESS_UP WAKE UNLOCK
+key 61 BRIGHTNESS_AUTO WAKE UNLOCK
+key 212 CAPTURE WAKE UNLOCK
+key 150 EXPLORER WAKE UNLOCK
+key 62 SETTINGS WAKE UNLOCK
+key 165 MEDIA_PREVIOUS WAKE UNLOCK
+key 164 MEDIA_PLAY_PAUSE WAKE UNLOCK
+key 163 MEDIA_NEXT WAKE UNLOCK
+key 114 VOLUME_DOWN WAKE UNLOCK
+key 113 VOLUME_MUTE WAKE UNLOCK
+key 172 HOME WAKE UNLOCK
+key 139 MENU WAKE UNLOCK
+key 104 PAGE_UP WAKE UNLOCK
+key 109 PAGE_DOWN WAKE UNLOCK
+key 107 MOVE_END WAKE UNLOCK
+key 102 MOVE_HOME WAKE UNLOCK
diff --git a/xt9/keylayout/qwerty-de_DE.kl b/xt9/keylayout/qwerty-de_DE.kl
new file mode 100644
index 0000000..adc4d92
--- /dev/null
+++ b/xt9/keylayout/qwerty-de_DE.kl
@@ -0,0 +1,86 @@
+key 41 GRAVE WAKE UNLOCK
+key 2 1 WAKE UNLOCK
+key 3 2 WAKE UNLOCK
+key 4 3 WAKE UNLOCK
+key 5 4 WAKE UNLOCK
+key 6 5 WAKE UNLOCK
+key 7 6 WAKE UNLOCK
+key 8 7 WAKE UNLOCK
+key 9 8 WAKE UNLOCK
+key 10 9 WAKE UNLOCK
+key 11 0 WAKE UNLOCK
+key 12 MINUS WAKE UNLOCK
+key 13 EQUALS WAKE UNLOCK
+key 14 DEL WAKE UNLOCK
+key 15 TAB WAKE UNLOCK
+key 16 Q WAKE UNLOCK
+key 17 W WAKE UNLOCK
+key 18 E WAKE UNLOCK
+key 19 R WAKE UNLOCK
+key 20 T WAKE UNLOCK
+key 21 Z WAKE UNLOCK
+key 22 U WAKE UNLOCK
+key 23 I WAKE UNLOCK
+key 24 O WAKE UNLOCK
+key 25 P WAKE UNLOCK
+key 26 LEFT_BRACKET WAKE UNLOCK
+key 27 RIGHT_BRACKET WAKE UNLOCK
+key 58 CAPS_LOCK WAKE UNLOCK
+key 30 A WAKE UNLOCK
+key 31 S WAKE UNLOCK
+key 32 D WAKE UNLOCK
+key 33 F WAKE UNLOCK
+key 34 G WAKE UNLOCK
+key 35 H WAKE UNLOCK
+key 36 J WAKE UNLOCK
+key 37 K WAKE UNLOCK
+key 38 L WAKE UNLOCK
+key 39 SEMICOLON WAKE UNLOCK
+key 40 APOSTROPHE WAKE UNLOCK
+key 43 BACKSLASH WAKE UNLOCK
+key 28 ENTER WAKE UNLOCK
+key 42 SHIFT_LEFT WAKE UNLOCK
+key 86 EUROPE_2 WAKE UNLOCK
+key 44 Y WAKE UNLOCK
+key 45 X WAKE UNLOCK
+key 46 C WAKE UNLOCK
+key 47 V WAKE UNLOCK
+key 48 B WAKE UNLOCK
+key 49 N WAKE UNLOCK
+key 50 M WAKE UNLOCK
+key 51 COMMA WAKE UNLOCK
+key 52 PERIOD WAKE UNLOCK
+key 53 SLASH WAKE UNLOCK
+key 54 SHIFT_RIGHT WAKE UNLOCK
+key 29 CTRL_LEFT WAKE UNLOCK
+key 217 SEARCH WAKE UNLOCK
+key 57 SPACE WAKE UNLOCK
+key 100 ALT_RIGHT WAKE UNLOCK
+key 97 CTRL_RIGHT WAKE UNLOCK
+key 115 VOLUME_UP WAKE UNLOCK
+key 142 SLEEP WAKE UNLOCK
+key 105 DPAD_LEFT WAKE UNLOCK
+key 103 DPAD_UP WAKE UNLOCK
+key 108 DPAD_DOWN WAKE UNLOCK
+key 106 DPAD_RIGHT WAKE UNLOCK
+key 158 BACK WAKE UNLOCK
+key 238 WIRELESS WAKE UNLOCK
+key 237 BLUETOOTH WAKE UNLOCK
+key 60 TOUCHPAD WAKE UNLOCK
+key 224 BRIGHTNESS_DOWN WAKE UNLOCK
+key 225 BRIGHTNESS_UP WAKE UNLOCK
+key 61 BRIGHTNESS_AUTO WAKE UNLOCK
+key 212 CAPTURE WAKE UNLOCK
+key 150 EXPLORER WAKE UNLOCK
+key 62 SETTINGS WAKE UNLOCK
+key 165 MEDIA_PREVIOUS WAKE UNLOCK
+key 164 MEDIA_PLAY_PAUSE WAKE UNLOCK
+key 163 MEDIA_NEXT WAKE UNLOCK
+key 114 VOLUME_DOWN WAKE UNLOCK
+key 113 VOLUME_MUTE WAKE UNLOCK
+key 172 HOME WAKE UNLOCK
+key 139 MENU WAKE UNLOCK
+key 104 PAGE_UP WAKE UNLOCK
+key 109 PAGE_DOWN WAKE UNLOCK
+key 107 MOVE_END WAKE UNLOCK
+key 102 MOVE_HOME WAKE UNLOCK
diff --git a/xt9/keylayout/qwerty-el_GR.kl b/xt9/keylayout/qwerty-el_GR.kl
new file mode 100644
index 0000000..74d5299
--- /dev/null
+++ b/xt9/keylayout/qwerty-el_GR.kl
@@ -0,0 +1,86 @@
+key 41 GRAVE WAKE UNLOCK
+key 2 1 WAKE UNLOCK
+key 3 2 WAKE UNLOCK
+key 4 3 WAKE UNLOCK
+key 5 4 WAKE UNLOCK
+key 6 5 WAKE UNLOCK
+key 7 6 WAKE UNLOCK
+key 8 7 WAKE UNLOCK
+key 9 8 WAKE UNLOCK
+key 10 9 WAKE UNLOCK
+key 11 0 WAKE UNLOCK
+key 12 MINUS WAKE UNLOCK
+key 13 EQUALS WAKE UNLOCK
+key 14 DEL WAKE UNLOCK
+key 15 TAB WAKE UNLOCK
+key 16 Q WAKE UNLOCK
+key 17 W WAKE UNLOCK
+key 18 E WAKE UNLOCK
+key 19 R WAKE UNLOCK
+key 20 T WAKE UNLOCK
+key 21 Y WAKE UNLOCK
+key 22 U WAKE UNLOCK
+key 23 I WAKE UNLOCK
+key 24 O WAKE UNLOCK
+key 25 P WAKE UNLOCK
+key 26 LEFT_BRACKET WAKE UNLOCK
+key 27 RIGHT_BRACKET WAKE UNLOCK
+key 58 CAPS_LOCK WAKE UNLOCK
+key 30 A WAKE UNLOCK
+key 31 S WAKE UNLOCK
+key 32 D WAKE UNLOCK
+key 33 F WAKE UNLOCK
+key 34 G WAKE UNLOCK
+key 35 H WAKE UNLOCK
+key 36 J WAKE UNLOCK
+key 37 K WAKE UNLOCK
+key 38 L WAKE UNLOCK
+key 39 SEMICOLON WAKE UNLOCK
+key 40 APOSTROPHE WAKE UNLOCK
+key 43 BACKSLASH WAKE UNLOCK
+key 28 ENTER WAKE UNLOCK
+key 42 SHIFT_LEFT WAKE UNLOCK
+key 86 EUROPE_2 WAKE UNLOCK
+key 44 Z WAKE UNLOCK
+key 45 X WAKE UNLOCK
+key 46 C WAKE UNLOCK
+key 47 V WAKE UNLOCK
+key 48 B WAKE UNLOCK
+key 49 N WAKE UNLOCK
+key 50 M WAKE UNLOCK
+key 51 COMMA WAKE UNLOCK
+key 52 PERIOD WAKE UNLOCK
+key 53 SLASH WAKE UNLOCK
+key 54 SHIFT_RIGHT WAKE UNLOCK
+key 29 CTRL_LEFT WAKE UNLOCK
+key 217 SEARCH WAKE UNLOCK
+key 57 SPACE WAKE UNLOCK
+key 100 ALT_RIGHT WAKE UNLOCK
+key 97 CTRL_RIGHT WAKE UNLOCK
+key 115 VOLUME_UP WAKE UNLOCK
+key 142 SLEEP WAKE UNLOCK
+key 105 DPAD_LEFT WAKE UNLOCK
+key 103 DPAD_UP WAKE UNLOCK
+key 108 DPAD_DOWN WAKE UNLOCK
+key 106 DPAD_RIGHT WAKE UNLOCK
+key 158 BACK WAKE UNLOCK
+key 238 WIRELESS WAKE UNLOCK
+key 237 BLUETOOTH WAKE UNLOCK
+key 60 TOUCHPAD WAKE UNLOCK
+key 224 BRIGHTNESS_DOWN WAKE UNLOCK
+key 225 BRIGHTNESS_UP WAKE UNLOCK
+key 61 BRIGHTNESS_AUTO WAKE UNLOCK
+key 212 CAPTURE WAKE UNLOCK
+key 150 EXPLORER WAKE UNLOCK
+key 62 SETTINGS WAKE UNLOCK
+key 165 MEDIA_PREVIOUS WAKE UNLOCK
+key 164 MEDIA_PLAY_PAUSE WAKE UNLOCK
+key 163 MEDIA_NEXT WAKE UNLOCK
+key 114 VOLUME_DOWN WAKE UNLOCK
+key 113 VOLUME_MUTE WAKE UNLOCK
+key 172 HOME WAKE UNLOCK
+key 139 MENU WAKE UNLOCK
+key 104 PAGE_UP WAKE UNLOCK
+key 109 PAGE_DOWN WAKE UNLOCK
+key 107 MOVE_END WAKE UNLOCK
+key 102 MOVE_HOME WAKE UNLOCK
diff --git a/xt9/keylayout/qwerty-en_CA.kl b/xt9/keylayout/qwerty-en_CA.kl
new file mode 100644
index 0000000..2d7e164
--- /dev/null
+++ b/xt9/keylayout/qwerty-en_CA.kl
@@ -0,0 +1,86 @@
+key 41 GRAVE WAKE UNLOCK
+key 2 1 WAKE UNLOCK
+key 3 2 WAKE UNLOCK
+key 4 3 WAKE UNLOCK
+key 5 4 WAKE UNLOCK
+key 6 5 WAKE UNLOCK
+key 7 6 WAKE UNLOCK
+key 8 7 WAKE UNLOCK
+key 9 8 WAKE UNLOCK
+key 10 9 WAKE UNLOCK
+key 11 0 WAKE UNLOCK
+key 12 MINUS WAKE UNLOCK
+key 13 EQUALS WAKE UNLOCK
+key 14 DEL WAKE UNLOCK
+key 15 TAB WAKE UNLOCK
+key 16 Q WAKE UNLOCK
+key 17 W WAKE UNLOCK
+key 18 E WAKE UNLOCK
+key 19 R WAKE UNLOCK
+key 20 T WAKE UNLOCK
+key 21 Y WAKE UNLOCK
+key 22 U WAKE UNLOCK
+key 23 I WAKE UNLOCK
+key 24 O WAKE UNLOCK
+key 25 P WAKE UNLOCK
+key 26 LEFT_BRACKET WAKE UNLOCK
+key 27 RIGHT_BRACKET WAKE UNLOCK
+key 43 BACKSLASH WAKE UNLOCK
+key 58 CAPS_LOCK WAKE UNLOCK
+key 30 A WAKE UNLOCK
+key 31 S WAKE UNLOCK
+key 32 D WAKE UNLOCK
+key 33 F WAKE UNLOCK
+key 34 G WAKE UNLOCK
+key 35 H WAKE UNLOCK
+key 36 J WAKE UNLOCK
+key 37 K WAKE UNLOCK
+key 38 L WAKE UNLOCK
+key 39 SEMICOLON WAKE UNLOCK
+key 40 APOSTROPHE WAKE UNLOCK
+key 28 ENTER WAKE UNLOCK
+key 42 SHIFT_LEFT WAKE UNLOCK
+key 44 Z WAKE UNLOCK
+key 45 X WAKE UNLOCK
+key 46 C WAKE UNLOCK
+key 47 V WAKE UNLOCK
+key 48 B WAKE UNLOCK
+key 49 N WAKE UNLOCK
+key 50 M WAKE UNLOCK
+key 51 COMMA WAKE UNLOCK
+key 52 PERIOD WAKE UNLOCK
+key 53 SLASH WAKE UNLOCK
+key 54 SHIFT_RIGHT WAKE UNLOCK
+key 29 CTRL_LEFT WAKE UNLOCK
+key 217 SEARCH WAKE UNLOCK
+key 57 SPACE WAKE UNLOCK
+key 100 ALT_RIGHT WAKE UNLOCK
+key 97 CTRL_RIGHT WAKE UNLOCK
+key 115 VOLUME_UP WAKE UNLOCK
+key 142 SLEEP WAKE UNLOCK
+key 105 DPAD_LEFT WAKE UNLOCK
+key 103 DPAD_UP WAKE UNLOCK
+key 108 DPAD_DOWN WAKE UNLOCK
+key 106 DPAD_RIGHT WAKE UNLOCK
+key 158 BACK WAKE UNLOCK
+key 238 WIRELESS WAKE UNLOCK
+key 237 BLUETOOTH WAKE UNLOCK
+key 60 TOUCHPAD WAKE UNLOCK
+key 224 BRIGHTNESS_DOWN WAKE UNLOCK
+key 225 BRIGHTNESS_UP WAKE UNLOCK
+key 61 BRIGHTNESS_AUTO WAKE UNLOCK
+key 212 CAPTURE WAKE UNLOCK
+key 150 EXPLORER WAKE UNLOCK
+key 62 SETTINGS WAKE UNLOCK
+key 165 MEDIA_PREVIOUS WAKE UNLOCK
+key 164 MEDIA_PLAY_PAUSE WAKE UNLOCK
+key 163 MEDIA_NEXT WAKE UNLOCK
+key 114 VOLUME_DOWN WAKE UNLOCK
+key 113 VOLUME_MUTE WAKE UNLOCK
+key 172 HOME WAKE UNLOCK
+key 139 MENU WAKE UNLOCK
+key 104 PAGE_UP WAKE UNLOCK
+key 109 PAGE_DOWN WAKE UNLOCK
+key 107 MOVE_END WAKE UNLOCK
+key 102 MOVE_HOME WAKE UNLOCK
+key 86 EUROPE_2 WAKE UNLOCK
diff --git a/xt9/keylayout/qwerty-en_GB.kl b/xt9/keylayout/qwerty-en_GB.kl
new file mode 100644
index 0000000..74d5299
--- /dev/null
+++ b/xt9/keylayout/qwerty-en_GB.kl
@@ -0,0 +1,86 @@
+key 41 GRAVE WAKE UNLOCK
+key 2 1 WAKE UNLOCK
+key 3 2 WAKE UNLOCK
+key 4 3 WAKE UNLOCK
+key 5 4 WAKE UNLOCK
+key 6 5 WAKE UNLOCK
+key 7 6 WAKE UNLOCK
+key 8 7 WAKE UNLOCK
+key 9 8 WAKE UNLOCK
+key 10 9 WAKE UNLOCK
+key 11 0 WAKE UNLOCK
+key 12 MINUS WAKE UNLOCK
+key 13 EQUALS WAKE UNLOCK
+key 14 DEL WAKE UNLOCK
+key 15 TAB WAKE UNLOCK
+key 16 Q WAKE UNLOCK
+key 17 W WAKE UNLOCK
+key 18 E WAKE UNLOCK
+key 19 R WAKE UNLOCK
+key 20 T WAKE UNLOCK
+key 21 Y WAKE UNLOCK
+key 22 U WAKE UNLOCK
+key 23 I WAKE UNLOCK
+key 24 O WAKE UNLOCK
+key 25 P WAKE UNLOCK
+key 26 LEFT_BRACKET WAKE UNLOCK
+key 27 RIGHT_BRACKET WAKE UNLOCK
+key 58 CAPS_LOCK WAKE UNLOCK
+key 30 A WAKE UNLOCK
+key 31 S WAKE UNLOCK
+key 32 D WAKE UNLOCK
+key 33 F WAKE UNLOCK
+key 34 G WAKE UNLOCK
+key 35 H WAKE UNLOCK
+key 36 J WAKE UNLOCK
+key 37 K WAKE UNLOCK
+key 38 L WAKE UNLOCK
+key 39 SEMICOLON WAKE UNLOCK
+key 40 APOSTROPHE WAKE UNLOCK
+key 43 BACKSLASH WAKE UNLOCK
+key 28 ENTER WAKE UNLOCK
+key 42 SHIFT_LEFT WAKE UNLOCK
+key 86 EUROPE_2 WAKE UNLOCK
+key 44 Z WAKE UNLOCK
+key 45 X WAKE UNLOCK
+key 46 C WAKE UNLOCK
+key 47 V WAKE UNLOCK
+key 48 B WAKE UNLOCK
+key 49 N WAKE UNLOCK
+key 50 M WAKE UNLOCK
+key 51 COMMA WAKE UNLOCK
+key 52 PERIOD WAKE UNLOCK
+key 53 SLASH WAKE UNLOCK
+key 54 SHIFT_RIGHT WAKE UNLOCK
+key 29 CTRL_LEFT WAKE UNLOCK
+key 217 SEARCH WAKE UNLOCK
+key 57 SPACE WAKE UNLOCK
+key 100 ALT_RIGHT WAKE UNLOCK
+key 97 CTRL_RIGHT WAKE UNLOCK
+key 115 VOLUME_UP WAKE UNLOCK
+key 142 SLEEP WAKE UNLOCK
+key 105 DPAD_LEFT WAKE UNLOCK
+key 103 DPAD_UP WAKE UNLOCK
+key 108 DPAD_DOWN WAKE UNLOCK
+key 106 DPAD_RIGHT WAKE UNLOCK
+key 158 BACK WAKE UNLOCK
+key 238 WIRELESS WAKE UNLOCK
+key 237 BLUETOOTH WAKE UNLOCK
+key 60 TOUCHPAD WAKE UNLOCK
+key 224 BRIGHTNESS_DOWN WAKE UNLOCK
+key 225 BRIGHTNESS_UP WAKE UNLOCK
+key 61 BRIGHTNESS_AUTO WAKE UNLOCK
+key 212 CAPTURE WAKE UNLOCK
+key 150 EXPLORER WAKE UNLOCK
+key 62 SETTINGS WAKE UNLOCK
+key 165 MEDIA_PREVIOUS WAKE UNLOCK
+key 164 MEDIA_PLAY_PAUSE WAKE UNLOCK
+key 163 MEDIA_NEXT WAKE UNLOCK
+key 114 VOLUME_DOWN WAKE UNLOCK
+key 113 VOLUME_MUTE WAKE UNLOCK
+key 172 HOME WAKE UNLOCK
+key 139 MENU WAKE UNLOCK
+key 104 PAGE_UP WAKE UNLOCK
+key 109 PAGE_DOWN WAKE UNLOCK
+key 107 MOVE_END WAKE UNLOCK
+key 102 MOVE_HOME WAKE UNLOCK
diff --git a/xt9/keylayout/qwerty-en_GR.kl b/xt9/keylayout/qwerty-en_GR.kl
new file mode 100644
index 0000000..74d5299
--- /dev/null
+++ b/xt9/keylayout/qwerty-en_GR.kl
@@ -0,0 +1,86 @@
+key 41 GRAVE WAKE UNLOCK
+key 2 1 WAKE UNLOCK
+key 3 2 WAKE UNLOCK
+key 4 3 WAKE UNLOCK
+key 5 4 WAKE UNLOCK
+key 6 5 WAKE UNLOCK
+key 7 6 WAKE UNLOCK
+key 8 7 WAKE UNLOCK
+key 9 8 WAKE UNLOCK
+key 10 9 WAKE UNLOCK
+key 11 0 WAKE UNLOCK
+key 12 MINUS WAKE UNLOCK
+key 13 EQUALS WAKE UNLOCK
+key 14 DEL WAKE UNLOCK
+key 15 TAB WAKE UNLOCK
+key 16 Q WAKE UNLOCK
+key 17 W WAKE UNLOCK
+key 18 E WAKE UNLOCK
+key 19 R WAKE UNLOCK
+key 20 T WAKE UNLOCK
+key 21 Y WAKE UNLOCK
+key 22 U WAKE UNLOCK
+key 23 I WAKE UNLOCK
+key 24 O WAKE UNLOCK
+key 25 P WAKE UNLOCK
+key 26 LEFT_BRACKET WAKE UNLOCK
+key 27 RIGHT_BRACKET WAKE UNLOCK
+key 58 CAPS_LOCK WAKE UNLOCK
+key 30 A WAKE UNLOCK
+key 31 S WAKE UNLOCK
+key 32 D WAKE UNLOCK
+key 33 F WAKE UNLOCK
+key 34 G WAKE UNLOCK
+key 35 H WAKE UNLOCK
+key 36 J WAKE UNLOCK
+key 37 K WAKE UNLOCK
+key 38 L WAKE UNLOCK
+key 39 SEMICOLON WAKE UNLOCK
+key 40 APOSTROPHE WAKE UNLOCK
+key 43 BACKSLASH WAKE UNLOCK
+key 28 ENTER WAKE UNLOCK
+key 42 SHIFT_LEFT WAKE UNLOCK
+key 86 EUROPE_2 WAKE UNLOCK
+key 44 Z WAKE UNLOCK
+key 45 X WAKE UNLOCK
+key 46 C WAKE UNLOCK
+key 47 V WAKE UNLOCK
+key 48 B WAKE UNLOCK
+key 49 N WAKE UNLOCK
+key 50 M WAKE UNLOCK
+key 51 COMMA WAKE UNLOCK
+key 52 PERIOD WAKE UNLOCK
+key 53 SLASH WAKE UNLOCK
+key 54 SHIFT_RIGHT WAKE UNLOCK
+key 29 CTRL_LEFT WAKE UNLOCK
+key 217 SEARCH WAKE UNLOCK
+key 57 SPACE WAKE UNLOCK
+key 100 ALT_RIGHT WAKE UNLOCK
+key 97 CTRL_RIGHT WAKE UNLOCK
+key 115 VOLUME_UP WAKE UNLOCK
+key 142 SLEEP WAKE UNLOCK
+key 105 DPAD_LEFT WAKE UNLOCK
+key 103 DPAD_UP WAKE UNLOCK
+key 108 DPAD_DOWN WAKE UNLOCK
+key 106 DPAD_RIGHT WAKE UNLOCK
+key 158 BACK WAKE UNLOCK
+key 238 WIRELESS WAKE UNLOCK
+key 237 BLUETOOTH WAKE UNLOCK
+key 60 TOUCHPAD WAKE UNLOCK
+key 224 BRIGHTNESS_DOWN WAKE UNLOCK
+key 225 BRIGHTNESS_UP WAKE UNLOCK
+key 61 BRIGHTNESS_AUTO WAKE UNLOCK
+key 212 CAPTURE WAKE UNLOCK
+key 150 EXPLORER WAKE UNLOCK
+key 62 SETTINGS WAKE UNLOCK
+key 165 MEDIA_PREVIOUS WAKE UNLOCK
+key 164 MEDIA_PLAY_PAUSE WAKE UNLOCK
+key 163 MEDIA_NEXT WAKE UNLOCK
+key 114 VOLUME_DOWN WAKE UNLOCK
+key 113 VOLUME_MUTE WAKE UNLOCK
+key 172 HOME WAKE UNLOCK
+key 139 MENU WAKE UNLOCK
+key 104 PAGE_UP WAKE UNLOCK
+key 109 PAGE_DOWN WAKE UNLOCK
+key 107 MOVE_END WAKE UNLOCK
+key 102 MOVE_HOME WAKE UNLOCK
diff --git a/xt9/keylayout/qwerty-en_US.kl b/xt9/keylayout/qwerty-en_US.kl
new file mode 100644
index 0000000..2d7e164
--- /dev/null
+++ b/xt9/keylayout/qwerty-en_US.kl
@@ -0,0 +1,86 @@
+key 41 GRAVE WAKE UNLOCK
+key 2 1 WAKE UNLOCK
+key 3 2 WAKE UNLOCK
+key 4 3 WAKE UNLOCK
+key 5 4 WAKE UNLOCK
+key 6 5 WAKE UNLOCK
+key 7 6 WAKE UNLOCK
+key 8 7 WAKE UNLOCK
+key 9 8 WAKE UNLOCK
+key 10 9 WAKE UNLOCK
+key 11 0 WAKE UNLOCK
+key 12 MINUS WAKE UNLOCK
+key 13 EQUALS WAKE UNLOCK
+key 14 DEL WAKE UNLOCK
+key 15 TAB WAKE UNLOCK
+key 16 Q WAKE UNLOCK
+key 17 W WAKE UNLOCK
+key 18 E WAKE UNLOCK
+key 19 R WAKE UNLOCK
+key 20 T WAKE UNLOCK
+key 21 Y WAKE UNLOCK
+key 22 U WAKE UNLOCK
+key 23 I WAKE UNLOCK
+key 24 O WAKE UNLOCK
+key 25 P WAKE UNLOCK
+key 26 LEFT_BRACKET WAKE UNLOCK
+key 27 RIGHT_BRACKET WAKE UNLOCK
+key 43 BACKSLASH WAKE UNLOCK
+key 58 CAPS_LOCK WAKE UNLOCK
+key 30 A WAKE UNLOCK
+key 31 S WAKE UNLOCK
+key 32 D WAKE UNLOCK
+key 33 F WAKE UNLOCK
+key 34 G WAKE UNLOCK
+key 35 H WAKE UNLOCK
+key 36 J WAKE UNLOCK
+key 37 K WAKE UNLOCK
+key 38 L WAKE UNLOCK
+key 39 SEMICOLON WAKE UNLOCK
+key 40 APOSTROPHE WAKE UNLOCK
+key 28 ENTER WAKE UNLOCK
+key 42 SHIFT_LEFT WAKE UNLOCK
+key 44 Z WAKE UNLOCK
+key 45 X WAKE UNLOCK
+key 46 C WAKE UNLOCK
+key 47 V WAKE UNLOCK
+key 48 B WAKE UNLOCK
+key 49 N WAKE UNLOCK
+key 50 M WAKE UNLOCK
+key 51 COMMA WAKE UNLOCK
+key 52 PERIOD WAKE UNLOCK
+key 53 SLASH WAKE UNLOCK
+key 54 SHIFT_RIGHT WAKE UNLOCK
+key 29 CTRL_LEFT WAKE UNLOCK
+key 217 SEARCH WAKE UNLOCK
+key 57 SPACE WAKE UNLOCK
+key 100 ALT_RIGHT WAKE UNLOCK
+key 97 CTRL_RIGHT WAKE UNLOCK
+key 115 VOLUME_UP WAKE UNLOCK
+key 142 SLEEP WAKE UNLOCK
+key 105 DPAD_LEFT WAKE UNLOCK
+key 103 DPAD_UP WAKE UNLOCK
+key 108 DPAD_DOWN WAKE UNLOCK
+key 106 DPAD_RIGHT WAKE UNLOCK
+key 158 BACK WAKE UNLOCK
+key 238 WIRELESS WAKE UNLOCK
+key 237 BLUETOOTH WAKE UNLOCK
+key 60 TOUCHPAD WAKE UNLOCK
+key 224 BRIGHTNESS_DOWN WAKE UNLOCK
+key 225 BRIGHTNESS_UP WAKE UNLOCK
+key 61 BRIGHTNESS_AUTO WAKE UNLOCK
+key 212 CAPTURE WAKE UNLOCK
+key 150 EXPLORER WAKE UNLOCK
+key 62 SETTINGS WAKE UNLOCK
+key 165 MEDIA_PREVIOUS WAKE UNLOCK
+key 164 MEDIA_PLAY_PAUSE WAKE UNLOCK
+key 163 MEDIA_NEXT WAKE UNLOCK
+key 114 VOLUME_DOWN WAKE UNLOCK
+key 113 VOLUME_MUTE WAKE UNLOCK
+key 172 HOME WAKE UNLOCK
+key 139 MENU WAKE UNLOCK
+key 104 PAGE_UP WAKE UNLOCK
+key 109 PAGE_DOWN WAKE UNLOCK
+key 107 MOVE_END WAKE UNLOCK
+key 102 MOVE_HOME WAKE UNLOCK
+key 86 EUROPE_2 WAKE UNLOCK
diff --git a/xt9/keylayout/qwerty-es_ES.kl b/xt9/keylayout/qwerty-es_ES.kl
new file mode 100644
index 0000000..74d5299
--- /dev/null
+++ b/xt9/keylayout/qwerty-es_ES.kl
@@ -0,0 +1,86 @@
+key 41 GRAVE WAKE UNLOCK
+key 2 1 WAKE UNLOCK
+key 3 2 WAKE UNLOCK
+key 4 3 WAKE UNLOCK
+key 5 4 WAKE UNLOCK
+key 6 5 WAKE UNLOCK
+key 7 6 WAKE UNLOCK
+key 8 7 WAKE UNLOCK
+key 9 8 WAKE UNLOCK
+key 10 9 WAKE UNLOCK
+key 11 0 WAKE UNLOCK
+key 12 MINUS WAKE UNLOCK
+key 13 EQUALS WAKE UNLOCK
+key 14 DEL WAKE UNLOCK
+key 15 TAB WAKE UNLOCK
+key 16 Q WAKE UNLOCK
+key 17 W WAKE UNLOCK
+key 18 E WAKE UNLOCK
+key 19 R WAKE UNLOCK
+key 20 T WAKE UNLOCK
+key 21 Y WAKE UNLOCK
+key 22 U WAKE UNLOCK
+key 23 I WAKE UNLOCK
+key 24 O WAKE UNLOCK
+key 25 P WAKE UNLOCK
+key 26 LEFT_BRACKET WAKE UNLOCK
+key 27 RIGHT_BRACKET WAKE UNLOCK
+key 58 CAPS_LOCK WAKE UNLOCK
+key 30 A WAKE UNLOCK
+key 31 S WAKE UNLOCK
+key 32 D WAKE UNLOCK
+key 33 F WAKE UNLOCK
+key 34 G WAKE UNLOCK
+key 35 H WAKE UNLOCK
+key 36 J WAKE UNLOCK
+key 37 K WAKE UNLOCK
+key 38 L WAKE UNLOCK
+key 39 SEMICOLON WAKE UNLOCK
+key 40 APOSTROPHE WAKE UNLOCK
+key 43 BACKSLASH WAKE UNLOCK
+key 28 ENTER WAKE UNLOCK
+key 42 SHIFT_LEFT WAKE UNLOCK
+key 86 EUROPE_2 WAKE UNLOCK
+key 44 Z WAKE UNLOCK
+key 45 X WAKE UNLOCK
+key 46 C WAKE UNLOCK
+key 47 V WAKE UNLOCK
+key 48 B WAKE UNLOCK
+key 49 N WAKE UNLOCK
+key 50 M WAKE UNLOCK
+key 51 COMMA WAKE UNLOCK
+key 52 PERIOD WAKE UNLOCK
+key 53 SLASH WAKE UNLOCK
+key 54 SHIFT_RIGHT WAKE UNLOCK
+key 29 CTRL_LEFT WAKE UNLOCK
+key 217 SEARCH WAKE UNLOCK
+key 57 SPACE WAKE UNLOCK
+key 100 ALT_RIGHT WAKE UNLOCK
+key 97 CTRL_RIGHT WAKE UNLOCK
+key 115 VOLUME_UP WAKE UNLOCK
+key 142 SLEEP WAKE UNLOCK
+key 105 DPAD_LEFT WAKE UNLOCK
+key 103 DPAD_UP WAKE UNLOCK
+key 108 DPAD_DOWN WAKE UNLOCK
+key 106 DPAD_RIGHT WAKE UNLOCK
+key 158 BACK WAKE UNLOCK
+key 238 WIRELESS WAKE UNLOCK
+key 237 BLUETOOTH WAKE UNLOCK
+key 60 TOUCHPAD WAKE UNLOCK
+key 224 BRIGHTNESS_DOWN WAKE UNLOCK
+key 225 BRIGHTNESS_UP WAKE UNLOCK
+key 61 BRIGHTNESS_AUTO WAKE UNLOCK
+key 212 CAPTURE WAKE UNLOCK
+key 150 EXPLORER WAKE UNLOCK
+key 62 SETTINGS WAKE UNLOCK
+key 165 MEDIA_PREVIOUS WAKE UNLOCK
+key 164 MEDIA_PLAY_PAUSE WAKE UNLOCK
+key 163 MEDIA_NEXT WAKE UNLOCK
+key 114 VOLUME_DOWN WAKE UNLOCK
+key 113 VOLUME_MUTE WAKE UNLOCK
+key 172 HOME WAKE UNLOCK
+key 139 MENU WAKE UNLOCK
+key 104 PAGE_UP WAKE UNLOCK
+key 109 PAGE_DOWN WAKE UNLOCK
+key 107 MOVE_END WAKE UNLOCK
+key 102 MOVE_HOME WAKE UNLOCK
diff --git a/xt9/keylayout/qwerty-es_US.kl b/xt9/keylayout/qwerty-es_US.kl
new file mode 100644
index 0000000..2d7e164
--- /dev/null
+++ b/xt9/keylayout/qwerty-es_US.kl
@@ -0,0 +1,86 @@
+key 41 GRAVE WAKE UNLOCK
+key 2 1 WAKE UNLOCK
+key 3 2 WAKE UNLOCK
+key 4 3 WAKE UNLOCK
+key 5 4 WAKE UNLOCK
+key 6 5 WAKE UNLOCK
+key 7 6 WAKE UNLOCK
+key 8 7 WAKE UNLOCK
+key 9 8 WAKE UNLOCK
+key 10 9 WAKE UNLOCK
+key 11 0 WAKE UNLOCK
+key 12 MINUS WAKE UNLOCK
+key 13 EQUALS WAKE UNLOCK
+key 14 DEL WAKE UNLOCK
+key 15 TAB WAKE UNLOCK
+key 16 Q WAKE UNLOCK
+key 17 W WAKE UNLOCK
+key 18 E WAKE UNLOCK
+key 19 R WAKE UNLOCK
+key 20 T WAKE UNLOCK
+key 21 Y WAKE UNLOCK
+key 22 U WAKE UNLOCK
+key 23 I WAKE UNLOCK
+key 24 O WAKE UNLOCK
+key 25 P WAKE UNLOCK
+key 26 LEFT_BRACKET WAKE UNLOCK
+key 27 RIGHT_BRACKET WAKE UNLOCK
+key 43 BACKSLASH WAKE UNLOCK
+key 58 CAPS_LOCK WAKE UNLOCK
+key 30 A WAKE UNLOCK
+key 31 S WAKE UNLOCK
+key 32 D WAKE UNLOCK
+key 33 F WAKE UNLOCK
+key 34 G WAKE UNLOCK
+key 35 H WAKE UNLOCK
+key 36 J WAKE UNLOCK
+key 37 K WAKE UNLOCK
+key 38 L WAKE UNLOCK
+key 39 SEMICOLON WAKE UNLOCK
+key 40 APOSTROPHE WAKE UNLOCK
+key 28 ENTER WAKE UNLOCK
+key 42 SHIFT_LEFT WAKE UNLOCK
+key 44 Z WAKE UNLOCK
+key 45 X WAKE UNLOCK
+key 46 C WAKE UNLOCK
+key 47 V WAKE UNLOCK
+key 48 B WAKE UNLOCK
+key 49 N WAKE UNLOCK
+key 50 M WAKE UNLOCK
+key 51 COMMA WAKE UNLOCK
+key 52 PERIOD WAKE UNLOCK
+key 53 SLASH WAKE UNLOCK
+key 54 SHIFT_RIGHT WAKE UNLOCK
+key 29 CTRL_LEFT WAKE UNLOCK
+key 217 SEARCH WAKE UNLOCK
+key 57 SPACE WAKE UNLOCK
+key 100 ALT_RIGHT WAKE UNLOCK
+key 97 CTRL_RIGHT WAKE UNLOCK
+key 115 VOLUME_UP WAKE UNLOCK
+key 142 SLEEP WAKE UNLOCK
+key 105 DPAD_LEFT WAKE UNLOCK
+key 103 DPAD_UP WAKE UNLOCK
+key 108 DPAD_DOWN WAKE UNLOCK
+key 106 DPAD_RIGHT WAKE UNLOCK
+key 158 BACK WAKE UNLOCK
+key 238 WIRELESS WAKE UNLOCK
+key 237 BLUETOOTH WAKE UNLOCK
+key 60 TOUCHPAD WAKE UNLOCK
+key 224 BRIGHTNESS_DOWN WAKE UNLOCK
+key 225 BRIGHTNESS_UP WAKE UNLOCK
+key 61 BRIGHTNESS_AUTO WAKE UNLOCK
+key 212 CAPTURE WAKE UNLOCK
+key 150 EXPLORER WAKE UNLOCK
+key 62 SETTINGS WAKE UNLOCK
+key 165 MEDIA_PREVIOUS WAKE UNLOCK
+key 164 MEDIA_PLAY_PAUSE WAKE UNLOCK
+key 163 MEDIA_NEXT WAKE UNLOCK
+key 114 VOLUME_DOWN WAKE UNLOCK
+key 113 VOLUME_MUTE WAKE UNLOCK
+key 172 HOME WAKE UNLOCK
+key 139 MENU WAKE UNLOCK
+key 104 PAGE_UP WAKE UNLOCK
+key 109 PAGE_DOWN WAKE UNLOCK
+key 107 MOVE_END WAKE UNLOCK
+key 102 MOVE_HOME WAKE UNLOCK
+key 86 EUROPE_2 WAKE UNLOCK
diff --git a/xt9/keylayout/qwerty-fi_FI.kl b/xt9/keylayout/qwerty-fi_FI.kl
new file mode 100644
index 0000000..74d5299
--- /dev/null
+++ b/xt9/keylayout/qwerty-fi_FI.kl
@@ -0,0 +1,86 @@
+key 41 GRAVE WAKE UNLOCK
+key 2 1 WAKE UNLOCK
+key 3 2 WAKE UNLOCK
+key 4 3 WAKE UNLOCK
+key 5 4 WAKE UNLOCK
+key 6 5 WAKE UNLOCK
+key 7 6 WAKE UNLOCK
+key 8 7 WAKE UNLOCK
+key 9 8 WAKE UNLOCK
+key 10 9 WAKE UNLOCK
+key 11 0 WAKE UNLOCK
+key 12 MINUS WAKE UNLOCK
+key 13 EQUALS WAKE UNLOCK
+key 14 DEL WAKE UNLOCK
+key 15 TAB WAKE UNLOCK
+key 16 Q WAKE UNLOCK
+key 17 W WAKE UNLOCK
+key 18 E WAKE UNLOCK
+key 19 R WAKE UNLOCK
+key 20 T WAKE UNLOCK
+key 21 Y WAKE UNLOCK
+key 22 U WAKE UNLOCK
+key 23 I WAKE UNLOCK
+key 24 O WAKE UNLOCK
+key 25 P WAKE UNLOCK
+key 26 LEFT_BRACKET WAKE UNLOCK
+key 27 RIGHT_BRACKET WAKE UNLOCK
+key 58 CAPS_LOCK WAKE UNLOCK
+key 30 A WAKE UNLOCK
+key 31 S WAKE UNLOCK
+key 32 D WAKE UNLOCK
+key 33 F WAKE UNLOCK
+key 34 G WAKE UNLOCK
+key 35 H WAKE UNLOCK
+key 36 J WAKE UNLOCK
+key 37 K WAKE UNLOCK
+key 38 L WAKE UNLOCK
+key 39 SEMICOLON WAKE UNLOCK
+key 40 APOSTROPHE WAKE UNLOCK
+key 43 BACKSLASH WAKE UNLOCK
+key 28 ENTER WAKE UNLOCK
+key 42 SHIFT_LEFT WAKE UNLOCK
+key 86 EUROPE_2 WAKE UNLOCK
+key 44 Z WAKE UNLOCK
+key 45 X WAKE UNLOCK
+key 46 C WAKE UNLOCK
+key 47 V WAKE UNLOCK
+key 48 B WAKE UNLOCK
+key 49 N WAKE UNLOCK
+key 50 M WAKE UNLOCK
+key 51 COMMA WAKE UNLOCK
+key 52 PERIOD WAKE UNLOCK
+key 53 SLASH WAKE UNLOCK
+key 54 SHIFT_RIGHT WAKE UNLOCK
+key 29 CTRL_LEFT WAKE UNLOCK
+key 217 SEARCH WAKE UNLOCK
+key 57 SPACE WAKE UNLOCK
+key 100 ALT_RIGHT WAKE UNLOCK
+key 97 CTRL_RIGHT WAKE UNLOCK
+key 115 VOLUME_UP WAKE UNLOCK
+key 142 SLEEP WAKE UNLOCK
+key 105 DPAD_LEFT WAKE UNLOCK
+key 103 DPAD_UP WAKE UNLOCK
+key 108 DPAD_DOWN WAKE UNLOCK
+key 106 DPAD_RIGHT WAKE UNLOCK
+key 158 BACK WAKE UNLOCK
+key 238 WIRELESS WAKE UNLOCK
+key 237 BLUETOOTH WAKE UNLOCK
+key 60 TOUCHPAD WAKE UNLOCK
+key 224 BRIGHTNESS_DOWN WAKE UNLOCK
+key 225 BRIGHTNESS_UP WAKE UNLOCK
+key 61 BRIGHTNESS_AUTO WAKE UNLOCK
+key 212 CAPTURE WAKE UNLOCK
+key 150 EXPLORER WAKE UNLOCK
+key 62 SETTINGS WAKE UNLOCK
+key 165 MEDIA_PREVIOUS WAKE UNLOCK
+key 164 MEDIA_PLAY_PAUSE WAKE UNLOCK
+key 163 MEDIA_NEXT WAKE UNLOCK
+key 114 VOLUME_DOWN WAKE UNLOCK
+key 113 VOLUME_MUTE WAKE UNLOCK
+key 172 HOME WAKE UNLOCK
+key 139 MENU WAKE UNLOCK
+key 104 PAGE_UP WAKE UNLOCK
+key 109 PAGE_DOWN WAKE UNLOCK
+key 107 MOVE_END WAKE UNLOCK
+key 102 MOVE_HOME WAKE UNLOCK
diff --git a/xt9/keylayout/qwerty-fr_BE.kl b/xt9/keylayout/qwerty-fr_BE.kl
new file mode 100644
index 0000000..2a6e33e
--- /dev/null
+++ b/xt9/keylayout/qwerty-fr_BE.kl
@@ -0,0 +1,86 @@
+key 41 GRAVE WAKE UNLOCK
+key 2 1 WAKE UNLOCK
+key 3 2 WAKE UNLOCK
+key 4 3 WAKE UNLOCK
+key 5 4 WAKE UNLOCK
+key 6 5 WAKE UNLOCK
+key 7 6 WAKE UNLOCK
+key 8 7 WAKE UNLOCK
+key 9 8 WAKE UNLOCK
+key 10 9 WAKE UNLOCK
+key 11 0 WAKE UNLOCK
+key 12 MINUS WAKE UNLOCK
+key 13 EQUALS WAKE UNLOCK
+key 14 DEL WAKE UNLOCK
+key 15 TAB WAKE UNLOCK
+key 16 A WAKE UNLOCK
+key 17 Z WAKE UNLOCK
+key 18 E WAKE UNLOCK
+key 19 R WAKE UNLOCK
+key 20 T WAKE UNLOCK
+key 21 Y WAKE UNLOCK
+key 22 U WAKE UNLOCK
+key 23 I WAKE UNLOCK
+key 24 O WAKE UNLOCK
+key 25 P WAKE UNLOCK
+key 26 LEFT_BRACKET WAKE UNLOCK
+key 27 RIGHT_BRACKET WAKE UNLOCK
+key 58 CAPS_LOCK WAKE UNLOCK
+key 30 Q WAKE UNLOCK
+key 31 S WAKE UNLOCK
+key 32 D WAKE UNLOCK
+key 33 F WAKE UNLOCK
+key 34 G WAKE UNLOCK
+key 35 H WAKE UNLOCK
+key 36 J WAKE UNLOCK
+key 37 K WAKE UNLOCK
+key 38 L WAKE UNLOCK
+key 39 M WAKE UNLOCK
+key 40 APOSTROPHE WAKE UNLOCK
+key 43 BACKSLASH WAKE UNLOCK
+key 28 ENTER WAKE UNLOCK
+key 42 SHIFT_LEFT WAKE UNLOCK
+key 86 EUROPE_2 WAKE UNLOCK
+key 44 W WAKE UNLOCK
+key 45 X WAKE UNLOCK
+key 46 C WAKE UNLOCK
+key 47 V WAKE UNLOCK
+key 48 B WAKE UNLOCK
+key 49 N WAKE UNLOCK
+key 50 COMMA WAKE UNLOCK
+key 51 SEMICOLON WAKE UNLOCK
+key 52 PERIOD WAKE UNLOCK
+key 53 SLASH WAKE UNLOCK
+key 54 SHIFT_RIGHT WAKE UNLOCK
+key 29 CTRL_LEFT WAKE UNLOCK
+key 217 SEARCH WAKE UNLOCK
+key 57 SPACE WAKE UNLOCK
+key 100 ALT_RIGHT WAKE UNLOCK
+key 97 CTRL_RIGHT WAKE UNLOCK
+key 115 VOLUME_UP WAKE UNLOCK
+key 142 SLEEP WAKE UNLOCK
+key 105 DPAD_LEFT WAKE UNLOCK
+key 103 DPAD_UP WAKE UNLOCK
+key 108 DPAD_DOWN WAKE UNLOCK
+key 106 DPAD_RIGHT WAKE UNLOCK
+key 158 BACK WAKE UNLOCK
+key 238 WIRELESS WAKE UNLOCK
+key 237 BLUETOOTH WAKE UNLOCK
+key 60 TOUCHPAD WAKE UNLOCK
+key 224 BRIGHTNESS_DOWN WAKE UNLOCK
+key 225 BRIGHTNESS_UP WAKE UNLOCK
+key 61 BRIGHTNESS_AUTO WAKE UNLOCK
+key 212 CAPTURE WAKE UNLOCK
+key 150 EXPLORER WAKE UNLOCK
+key 62 SETTINGS WAKE UNLOCK
+key 165 MEDIA_PREVIOUS WAKE UNLOCK
+key 164 MEDIA_PLAY_PAUSE WAKE UNLOCK
+key 163 MEDIA_NEXT WAKE UNLOCK
+key 114 VOLUME_DOWN WAKE UNLOCK
+key 113 VOLUME_MUTE WAKE UNLOCK
+key 172 HOME WAKE UNLOCK
+key 139 MENU WAKE UNLOCK
+key 104 PAGE_UP WAKE UNLOCK
+key 109 PAGE_DOWN WAKE UNLOCK
+key 107 MOVE_END WAKE UNLOCK
+key 102 MOVE_HOME WAKE UNLOCK
diff --git a/xt9/keylayout/qwerty-fr_CA.kl b/xt9/keylayout/qwerty-fr_CA.kl
new file mode 100644
index 0000000..74d5299
--- /dev/null
+++ b/xt9/keylayout/qwerty-fr_CA.kl
@@ -0,0 +1,86 @@
+key 41 GRAVE WAKE UNLOCK
+key 2 1 WAKE UNLOCK
+key 3 2 WAKE UNLOCK
+key 4 3 WAKE UNLOCK
+key 5 4 WAKE UNLOCK
+key 6 5 WAKE UNLOCK
+key 7 6 WAKE UNLOCK
+key 8 7 WAKE UNLOCK
+key 9 8 WAKE UNLOCK
+key 10 9 WAKE UNLOCK
+key 11 0 WAKE UNLOCK
+key 12 MINUS WAKE UNLOCK
+key 13 EQUALS WAKE UNLOCK
+key 14 DEL WAKE UNLOCK
+key 15 TAB WAKE UNLOCK
+key 16 Q WAKE UNLOCK
+key 17 W WAKE UNLOCK
+key 18 E WAKE UNLOCK
+key 19 R WAKE UNLOCK
+key 20 T WAKE UNLOCK
+key 21 Y WAKE UNLOCK
+key 22 U WAKE UNLOCK
+key 23 I WAKE UNLOCK
+key 24 O WAKE UNLOCK
+key 25 P WAKE UNLOCK
+key 26 LEFT_BRACKET WAKE UNLOCK
+key 27 RIGHT_BRACKET WAKE UNLOCK
+key 58 CAPS_LOCK WAKE UNLOCK
+key 30 A WAKE UNLOCK
+key 31 S WAKE UNLOCK
+key 32 D WAKE UNLOCK
+key 33 F WAKE UNLOCK
+key 34 G WAKE UNLOCK
+key 35 H WAKE UNLOCK
+key 36 J WAKE UNLOCK
+key 37 K WAKE UNLOCK
+key 38 L WAKE UNLOCK
+key 39 SEMICOLON WAKE UNLOCK
+key 40 APOSTROPHE WAKE UNLOCK
+key 43 BACKSLASH WAKE UNLOCK
+key 28 ENTER WAKE UNLOCK
+key 42 SHIFT_LEFT WAKE UNLOCK
+key 86 EUROPE_2 WAKE UNLOCK
+key 44 Z WAKE UNLOCK
+key 45 X WAKE UNLOCK
+key 46 C WAKE UNLOCK
+key 47 V WAKE UNLOCK
+key 48 B WAKE UNLOCK
+key 49 N WAKE UNLOCK
+key 50 M WAKE UNLOCK
+key 51 COMMA WAKE UNLOCK
+key 52 PERIOD WAKE UNLOCK
+key 53 SLASH WAKE UNLOCK
+key 54 SHIFT_RIGHT WAKE UNLOCK
+key 29 CTRL_LEFT WAKE UNLOCK
+key 217 SEARCH WAKE UNLOCK
+key 57 SPACE WAKE UNLOCK
+key 100 ALT_RIGHT WAKE UNLOCK
+key 97 CTRL_RIGHT WAKE UNLOCK
+key 115 VOLUME_UP WAKE UNLOCK
+key 142 SLEEP WAKE UNLOCK
+key 105 DPAD_LEFT WAKE UNLOCK
+key 103 DPAD_UP WAKE UNLOCK
+key 108 DPAD_DOWN WAKE UNLOCK
+key 106 DPAD_RIGHT WAKE UNLOCK
+key 158 BACK WAKE UNLOCK
+key 238 WIRELESS WAKE UNLOCK
+key 237 BLUETOOTH WAKE UNLOCK
+key 60 TOUCHPAD WAKE UNLOCK
+key 224 BRIGHTNESS_DOWN WAKE UNLOCK
+key 225 BRIGHTNESS_UP WAKE UNLOCK
+key 61 BRIGHTNESS_AUTO WAKE UNLOCK
+key 212 CAPTURE WAKE UNLOCK
+key 150 EXPLORER WAKE UNLOCK
+key 62 SETTINGS WAKE UNLOCK
+key 165 MEDIA_PREVIOUS WAKE UNLOCK
+key 164 MEDIA_PLAY_PAUSE WAKE UNLOCK
+key 163 MEDIA_NEXT WAKE UNLOCK
+key 114 VOLUME_DOWN WAKE UNLOCK
+key 113 VOLUME_MUTE WAKE UNLOCK
+key 172 HOME WAKE UNLOCK
+key 139 MENU WAKE UNLOCK
+key 104 PAGE_UP WAKE UNLOCK
+key 109 PAGE_DOWN WAKE UNLOCK
+key 107 MOVE_END WAKE UNLOCK
+key 102 MOVE_HOME WAKE UNLOCK
diff --git a/xt9/keylayout/qwerty-fr_CH.kl b/xt9/keylayout/qwerty-fr_CH.kl
new file mode 100644
index 0000000..adc4d92
--- /dev/null
+++ b/xt9/keylayout/qwerty-fr_CH.kl
@@ -0,0 +1,86 @@
+key 41 GRAVE WAKE UNLOCK
+key 2 1 WAKE UNLOCK
+key 3 2 WAKE UNLOCK
+key 4 3 WAKE UNLOCK
+key 5 4 WAKE UNLOCK
+key 6 5 WAKE UNLOCK
+key 7 6 WAKE UNLOCK
+key 8 7 WAKE UNLOCK
+key 9 8 WAKE UNLOCK
+key 10 9 WAKE UNLOCK
+key 11 0 WAKE UNLOCK
+key 12 MINUS WAKE UNLOCK
+key 13 EQUALS WAKE UNLOCK
+key 14 DEL WAKE UNLOCK
+key 15 TAB WAKE UNLOCK
+key 16 Q WAKE UNLOCK
+key 17 W WAKE UNLOCK
+key 18 E WAKE UNLOCK
+key 19 R WAKE UNLOCK
+key 20 T WAKE UNLOCK
+key 21 Z WAKE UNLOCK
+key 22 U WAKE UNLOCK
+key 23 I WAKE UNLOCK
+key 24 O WAKE UNLOCK
+key 25 P WAKE UNLOCK
+key 26 LEFT_BRACKET WAKE UNLOCK
+key 27 RIGHT_BRACKET WAKE UNLOCK
+key 58 CAPS_LOCK WAKE UNLOCK
+key 30 A WAKE UNLOCK
+key 31 S WAKE UNLOCK
+key 32 D WAKE UNLOCK
+key 33 F WAKE UNLOCK
+key 34 G WAKE UNLOCK
+key 35 H WAKE UNLOCK
+key 36 J WAKE UNLOCK
+key 37 K WAKE UNLOCK
+key 38 L WAKE UNLOCK
+key 39 SEMICOLON WAKE UNLOCK
+key 40 APOSTROPHE WAKE UNLOCK
+key 43 BACKSLASH WAKE UNLOCK
+key 28 ENTER WAKE UNLOCK
+key 42 SHIFT_LEFT WAKE UNLOCK
+key 86 EUROPE_2 WAKE UNLOCK
+key 44 Y WAKE UNLOCK
+key 45 X WAKE UNLOCK
+key 46 C WAKE UNLOCK
+key 47 V WAKE UNLOCK
+key 48 B WAKE UNLOCK
+key 49 N WAKE UNLOCK
+key 50 M WAKE UNLOCK
+key 51 COMMA WAKE UNLOCK
+key 52 PERIOD WAKE UNLOCK
+key 53 SLASH WAKE UNLOCK
+key 54 SHIFT_RIGHT WAKE UNLOCK
+key 29 CTRL_LEFT WAKE UNLOCK
+key 217 SEARCH WAKE UNLOCK
+key 57 SPACE WAKE UNLOCK
+key 100 ALT_RIGHT WAKE UNLOCK
+key 97 CTRL_RIGHT WAKE UNLOCK
+key 115 VOLUME_UP WAKE UNLOCK
+key 142 SLEEP WAKE UNLOCK
+key 105 DPAD_LEFT WAKE UNLOCK
+key 103 DPAD_UP WAKE UNLOCK
+key 108 DPAD_DOWN WAKE UNLOCK
+key 106 DPAD_RIGHT WAKE UNLOCK
+key 158 BACK WAKE UNLOCK
+key 238 WIRELESS WAKE UNLOCK
+key 237 BLUETOOTH WAKE UNLOCK
+key 60 TOUCHPAD WAKE UNLOCK
+key 224 BRIGHTNESS_DOWN WAKE UNLOCK
+key 225 BRIGHTNESS_UP WAKE UNLOCK
+key 61 BRIGHTNESS_AUTO WAKE UNLOCK
+key 212 CAPTURE WAKE UNLOCK
+key 150 EXPLORER WAKE UNLOCK
+key 62 SETTINGS WAKE UNLOCK
+key 165 MEDIA_PREVIOUS WAKE UNLOCK
+key 164 MEDIA_PLAY_PAUSE WAKE UNLOCK
+key 163 MEDIA_NEXT WAKE UNLOCK
+key 114 VOLUME_DOWN WAKE UNLOCK
+key 113 VOLUME_MUTE WAKE UNLOCK
+key 172 HOME WAKE UNLOCK
+key 139 MENU WAKE UNLOCK
+key 104 PAGE_UP WAKE UNLOCK
+key 109 PAGE_DOWN WAKE UNLOCK
+key 107 MOVE_END WAKE UNLOCK
+key 102 MOVE_HOME WAKE UNLOCK
diff --git a/xt9/keylayout/qwerty-fr_FR.kl b/xt9/keylayout/qwerty-fr_FR.kl
new file mode 100644
index 0000000..2a6e33e
--- /dev/null
+++ b/xt9/keylayout/qwerty-fr_FR.kl
@@ -0,0 +1,86 @@
+key 41 GRAVE WAKE UNLOCK
+key 2 1 WAKE UNLOCK
+key 3 2 WAKE UNLOCK
+key 4 3 WAKE UNLOCK
+key 5 4 WAKE UNLOCK
+key 6 5 WAKE UNLOCK
+key 7 6 WAKE UNLOCK
+key 8 7 WAKE UNLOCK
+key 9 8 WAKE UNLOCK
+key 10 9 WAKE UNLOCK
+key 11 0 WAKE UNLOCK
+key 12 MINUS WAKE UNLOCK
+key 13 EQUALS WAKE UNLOCK
+key 14 DEL WAKE UNLOCK
+key 15 TAB WAKE UNLOCK
+key 16 A WAKE UNLOCK
+key 17 Z WAKE UNLOCK
+key 18 E WAKE UNLOCK
+key 19 R WAKE UNLOCK
+key 20 T WAKE UNLOCK
+key 21 Y WAKE UNLOCK
+key 22 U WAKE UNLOCK
+key 23 I WAKE UNLOCK
+key 24 O WAKE UNLOCK
+key 25 P WAKE UNLOCK
+key 26 LEFT_BRACKET WAKE UNLOCK
+key 27 RIGHT_BRACKET WAKE UNLOCK
+key 58 CAPS_LOCK WAKE UNLOCK
+key 30 Q WAKE UNLOCK
+key 31 S WAKE UNLOCK
+key 32 D WAKE UNLOCK
+key 33 F WAKE UNLOCK
+key 34 G WAKE UNLOCK
+key 35 H WAKE UNLOCK
+key 36 J WAKE UNLOCK
+key 37 K WAKE UNLOCK
+key 38 L WAKE UNLOCK
+key 39 M WAKE UNLOCK
+key 40 APOSTROPHE WAKE UNLOCK
+key 43 BACKSLASH WAKE UNLOCK
+key 28 ENTER WAKE UNLOCK
+key 42 SHIFT_LEFT WAKE UNLOCK
+key 86 EUROPE_2 WAKE UNLOCK
+key 44 W WAKE UNLOCK
+key 45 X WAKE UNLOCK
+key 46 C WAKE UNLOCK
+key 47 V WAKE UNLOCK
+key 48 B WAKE UNLOCK
+key 49 N WAKE UNLOCK
+key 50 COMMA WAKE UNLOCK
+key 51 SEMICOLON WAKE UNLOCK
+key 52 PERIOD WAKE UNLOCK
+key 53 SLASH WAKE UNLOCK
+key 54 SHIFT_RIGHT WAKE UNLOCK
+key 29 CTRL_LEFT WAKE UNLOCK
+key 217 SEARCH WAKE UNLOCK
+key 57 SPACE WAKE UNLOCK
+key 100 ALT_RIGHT WAKE UNLOCK
+key 97 CTRL_RIGHT WAKE UNLOCK
+key 115 VOLUME_UP WAKE UNLOCK
+key 142 SLEEP WAKE UNLOCK
+key 105 DPAD_LEFT WAKE UNLOCK
+key 103 DPAD_UP WAKE UNLOCK
+key 108 DPAD_DOWN WAKE UNLOCK
+key 106 DPAD_RIGHT WAKE UNLOCK
+key 158 BACK WAKE UNLOCK
+key 238 WIRELESS WAKE UNLOCK
+key 237 BLUETOOTH WAKE UNLOCK
+key 60 TOUCHPAD WAKE UNLOCK
+key 224 BRIGHTNESS_DOWN WAKE UNLOCK
+key 225 BRIGHTNESS_UP WAKE UNLOCK
+key 61 BRIGHTNESS_AUTO WAKE UNLOCK
+key 212 CAPTURE WAKE UNLOCK
+key 150 EXPLORER WAKE UNLOCK
+key 62 SETTINGS WAKE UNLOCK
+key 165 MEDIA_PREVIOUS WAKE UNLOCK
+key 164 MEDIA_PLAY_PAUSE WAKE UNLOCK
+key 163 MEDIA_NEXT WAKE UNLOCK
+key 114 VOLUME_DOWN WAKE UNLOCK
+key 113 VOLUME_MUTE WAKE UNLOCK
+key 172 HOME WAKE UNLOCK
+key 139 MENU WAKE UNLOCK
+key 104 PAGE_UP WAKE UNLOCK
+key 109 PAGE_DOWN WAKE UNLOCK
+key 107 MOVE_END WAKE UNLOCK
+key 102 MOVE_HOME WAKE UNLOCK
diff --git a/xt9/keylayout/qwerty-hu_HU.kl b/xt9/keylayout/qwerty-hu_HU.kl
new file mode 100644
index 0000000..adc4d92
--- /dev/null
+++ b/xt9/keylayout/qwerty-hu_HU.kl
@@ -0,0 +1,86 @@
+key 41 GRAVE WAKE UNLOCK
+key 2 1 WAKE UNLOCK
+key 3 2 WAKE UNLOCK
+key 4 3 WAKE UNLOCK
+key 5 4 WAKE UNLOCK
+key 6 5 WAKE UNLOCK
+key 7 6 WAKE UNLOCK
+key 8 7 WAKE UNLOCK
+key 9 8 WAKE UNLOCK
+key 10 9 WAKE UNLOCK
+key 11 0 WAKE UNLOCK
+key 12 MINUS WAKE UNLOCK
+key 13 EQUALS WAKE UNLOCK
+key 14 DEL WAKE UNLOCK
+key 15 TAB WAKE UNLOCK
+key 16 Q WAKE UNLOCK
+key 17 W WAKE UNLOCK
+key 18 E WAKE UNLOCK
+key 19 R WAKE UNLOCK
+key 20 T WAKE UNLOCK
+key 21 Z WAKE UNLOCK
+key 22 U WAKE UNLOCK
+key 23 I WAKE UNLOCK
+key 24 O WAKE UNLOCK
+key 25 P WAKE UNLOCK
+key 26 LEFT_BRACKET WAKE UNLOCK
+key 27 RIGHT_BRACKET WAKE UNLOCK
+key 58 CAPS_LOCK WAKE UNLOCK
+key 30 A WAKE UNLOCK
+key 31 S WAKE UNLOCK
+key 32 D WAKE UNLOCK
+key 33 F WAKE UNLOCK
+key 34 G WAKE UNLOCK
+key 35 H WAKE UNLOCK
+key 36 J WAKE UNLOCK
+key 37 K WAKE UNLOCK
+key 38 L WAKE UNLOCK
+key 39 SEMICOLON WAKE UNLOCK
+key 40 APOSTROPHE WAKE UNLOCK
+key 43 BACKSLASH WAKE UNLOCK
+key 28 ENTER WAKE UNLOCK
+key 42 SHIFT_LEFT WAKE UNLOCK
+key 86 EUROPE_2 WAKE UNLOCK
+key 44 Y WAKE UNLOCK
+key 45 X WAKE UNLOCK
+key 46 C WAKE UNLOCK
+key 47 V WAKE UNLOCK
+key 48 B WAKE UNLOCK
+key 49 N WAKE UNLOCK
+key 50 M WAKE UNLOCK
+key 51 COMMA WAKE UNLOCK
+key 52 PERIOD WAKE UNLOCK
+key 53 SLASH WAKE UNLOCK
+key 54 SHIFT_RIGHT WAKE UNLOCK
+key 29 CTRL_LEFT WAKE UNLOCK
+key 217 SEARCH WAKE UNLOCK
+key 57 SPACE WAKE UNLOCK
+key 100 ALT_RIGHT WAKE UNLOCK
+key 97 CTRL_RIGHT WAKE UNLOCK
+key 115 VOLUME_UP WAKE UNLOCK
+key 142 SLEEP WAKE UNLOCK
+key 105 DPAD_LEFT WAKE UNLOCK
+key 103 DPAD_UP WAKE UNLOCK
+key 108 DPAD_DOWN WAKE UNLOCK
+key 106 DPAD_RIGHT WAKE UNLOCK
+key 158 BACK WAKE UNLOCK
+key 238 WIRELESS WAKE UNLOCK
+key 237 BLUETOOTH WAKE UNLOCK
+key 60 TOUCHPAD WAKE UNLOCK
+key 224 BRIGHTNESS_DOWN WAKE UNLOCK
+key 225 BRIGHTNESS_UP WAKE UNLOCK
+key 61 BRIGHTNESS_AUTO WAKE UNLOCK
+key 212 CAPTURE WAKE UNLOCK
+key 150 EXPLORER WAKE UNLOCK
+key 62 SETTINGS WAKE UNLOCK
+key 165 MEDIA_PREVIOUS WAKE UNLOCK
+key 164 MEDIA_PLAY_PAUSE WAKE UNLOCK
+key 163 MEDIA_NEXT WAKE UNLOCK
+key 114 VOLUME_DOWN WAKE UNLOCK
+key 113 VOLUME_MUTE WAKE UNLOCK
+key 172 HOME WAKE UNLOCK
+key 139 MENU WAKE UNLOCK
+key 104 PAGE_UP WAKE UNLOCK
+key 109 PAGE_DOWN WAKE UNLOCK
+key 107 MOVE_END WAKE UNLOCK
+key 102 MOVE_HOME WAKE UNLOCK
diff --git a/xt9/keylayout/qwerty-it_CH.kl b/xt9/keylayout/qwerty-it_CH.kl
new file mode 100644
index 0000000..74d5299
--- /dev/null
+++ b/xt9/keylayout/qwerty-it_CH.kl
@@ -0,0 +1,86 @@
+key 41 GRAVE WAKE UNLOCK
+key 2 1 WAKE UNLOCK
+key 3 2 WAKE UNLOCK
+key 4 3 WAKE UNLOCK
+key 5 4 WAKE UNLOCK
+key 6 5 WAKE UNLOCK
+key 7 6 WAKE UNLOCK
+key 8 7 WAKE UNLOCK
+key 9 8 WAKE UNLOCK
+key 10 9 WAKE UNLOCK
+key 11 0 WAKE UNLOCK
+key 12 MINUS WAKE UNLOCK
+key 13 EQUALS WAKE UNLOCK
+key 14 DEL WAKE UNLOCK
+key 15 TAB WAKE UNLOCK
+key 16 Q WAKE UNLOCK
+key 17 W WAKE UNLOCK
+key 18 E WAKE UNLOCK
+key 19 R WAKE UNLOCK
+key 20 T WAKE UNLOCK
+key 21 Y WAKE UNLOCK
+key 22 U WAKE UNLOCK
+key 23 I WAKE UNLOCK
+key 24 O WAKE UNLOCK
+key 25 P WAKE UNLOCK
+key 26 LEFT_BRACKET WAKE UNLOCK
+key 27 RIGHT_BRACKET WAKE UNLOCK
+key 58 CAPS_LOCK WAKE UNLOCK
+key 30 A WAKE UNLOCK
+key 31 S WAKE UNLOCK
+key 32 D WAKE UNLOCK
+key 33 F WAKE UNLOCK
+key 34 G WAKE UNLOCK
+key 35 H WAKE UNLOCK
+key 36 J WAKE UNLOCK
+key 37 K WAKE UNLOCK
+key 38 L WAKE UNLOCK
+key 39 SEMICOLON WAKE UNLOCK
+key 40 APOSTROPHE WAKE UNLOCK
+key 43 BACKSLASH WAKE UNLOCK
+key 28 ENTER WAKE UNLOCK
+key 42 SHIFT_LEFT WAKE UNLOCK
+key 86 EUROPE_2 WAKE UNLOCK
+key 44 Z WAKE UNLOCK
+key 45 X WAKE UNLOCK
+key 46 C WAKE UNLOCK
+key 47 V WAKE UNLOCK
+key 48 B WAKE UNLOCK
+key 49 N WAKE UNLOCK
+key 50 M WAKE UNLOCK
+key 51 COMMA WAKE UNLOCK
+key 52 PERIOD WAKE UNLOCK
+key 53 SLASH WAKE UNLOCK
+key 54 SHIFT_RIGHT WAKE UNLOCK
+key 29 CTRL_LEFT WAKE UNLOCK
+key 217 SEARCH WAKE UNLOCK
+key 57 SPACE WAKE UNLOCK
+key 100 ALT_RIGHT WAKE UNLOCK
+key 97 CTRL_RIGHT WAKE UNLOCK
+key 115 VOLUME_UP WAKE UNLOCK
+key 142 SLEEP WAKE UNLOCK
+key 105 DPAD_LEFT WAKE UNLOCK
+key 103 DPAD_UP WAKE UNLOCK
+key 108 DPAD_DOWN WAKE UNLOCK
+key 106 DPAD_RIGHT WAKE UNLOCK
+key 158 BACK WAKE UNLOCK
+key 238 WIRELESS WAKE UNLOCK
+key 237 BLUETOOTH WAKE UNLOCK
+key 60 TOUCHPAD WAKE UNLOCK
+key 224 BRIGHTNESS_DOWN WAKE UNLOCK
+key 225 BRIGHTNESS_UP WAKE UNLOCK
+key 61 BRIGHTNESS_AUTO WAKE UNLOCK
+key 212 CAPTURE WAKE UNLOCK
+key 150 EXPLORER WAKE UNLOCK
+key 62 SETTINGS WAKE UNLOCK
+key 165 MEDIA_PREVIOUS WAKE UNLOCK
+key 164 MEDIA_PLAY_PAUSE WAKE UNLOCK
+key 163 MEDIA_NEXT WAKE UNLOCK
+key 114 VOLUME_DOWN WAKE UNLOCK
+key 113 VOLUME_MUTE WAKE UNLOCK
+key 172 HOME WAKE UNLOCK
+key 139 MENU WAKE UNLOCK
+key 104 PAGE_UP WAKE UNLOCK
+key 109 PAGE_DOWN WAKE UNLOCK
+key 107 MOVE_END WAKE UNLOCK
+key 102 MOVE_HOME WAKE UNLOCK
diff --git a/xt9/keylayout/qwerty-it_IT.kl b/xt9/keylayout/qwerty-it_IT.kl
new file mode 100644
index 0000000..74d5299
--- /dev/null
+++ b/xt9/keylayout/qwerty-it_IT.kl
@@ -0,0 +1,86 @@
+key 41 GRAVE WAKE UNLOCK
+key 2 1 WAKE UNLOCK
+key 3 2 WAKE UNLOCK
+key 4 3 WAKE UNLOCK
+key 5 4 WAKE UNLOCK
+key 6 5 WAKE UNLOCK
+key 7 6 WAKE UNLOCK
+key 8 7 WAKE UNLOCK
+key 9 8 WAKE UNLOCK
+key 10 9 WAKE UNLOCK
+key 11 0 WAKE UNLOCK
+key 12 MINUS WAKE UNLOCK
+key 13 EQUALS WAKE UNLOCK
+key 14 DEL WAKE UNLOCK
+key 15 TAB WAKE UNLOCK
+key 16 Q WAKE UNLOCK
+key 17 W WAKE UNLOCK
+key 18 E WAKE UNLOCK
+key 19 R WAKE UNLOCK
+key 20 T WAKE UNLOCK
+key 21 Y WAKE UNLOCK
+key 22 U WAKE UNLOCK
+key 23 I WAKE UNLOCK
+key 24 O WAKE UNLOCK
+key 25 P WAKE UNLOCK
+key 26 LEFT_BRACKET WAKE UNLOCK
+key 27 RIGHT_BRACKET WAKE UNLOCK
+key 58 CAPS_LOCK WAKE UNLOCK
+key 30 A WAKE UNLOCK
+key 31 S WAKE UNLOCK
+key 32 D WAKE UNLOCK
+key 33 F WAKE UNLOCK
+key 34 G WAKE UNLOCK
+key 35 H WAKE UNLOCK
+key 36 J WAKE UNLOCK
+key 37 K WAKE UNLOCK
+key 38 L WAKE UNLOCK
+key 39 SEMICOLON WAKE UNLOCK
+key 40 APOSTROPHE WAKE UNLOCK
+key 43 BACKSLASH WAKE UNLOCK
+key 28 ENTER WAKE UNLOCK
+key 42 SHIFT_LEFT WAKE UNLOCK
+key 86 EUROPE_2 WAKE UNLOCK
+key 44 Z WAKE UNLOCK
+key 45 X WAKE UNLOCK
+key 46 C WAKE UNLOCK
+key 47 V WAKE UNLOCK
+key 48 B WAKE UNLOCK
+key 49 N WAKE UNLOCK
+key 50 M WAKE UNLOCK
+key 51 COMMA WAKE UNLOCK
+key 52 PERIOD WAKE UNLOCK
+key 53 SLASH WAKE UNLOCK
+key 54 SHIFT_RIGHT WAKE UNLOCK
+key 29 CTRL_LEFT WAKE UNLOCK
+key 217 SEARCH WAKE UNLOCK
+key 57 SPACE WAKE UNLOCK
+key 100 ALT_RIGHT WAKE UNLOCK
+key 97 CTRL_RIGHT WAKE UNLOCK
+key 115 VOLUME_UP WAKE UNLOCK
+key 142 SLEEP WAKE UNLOCK
+key 105 DPAD_LEFT WAKE UNLOCK
+key 103 DPAD_UP WAKE UNLOCK
+key 108 DPAD_DOWN WAKE UNLOCK
+key 106 DPAD_RIGHT WAKE UNLOCK
+key 158 BACK WAKE UNLOCK
+key 238 WIRELESS WAKE UNLOCK
+key 237 BLUETOOTH WAKE UNLOCK
+key 60 TOUCHPAD WAKE UNLOCK
+key 224 BRIGHTNESS_DOWN WAKE UNLOCK
+key 225 BRIGHTNESS_UP WAKE UNLOCK
+key 61 BRIGHTNESS_AUTO WAKE UNLOCK
+key 212 CAPTURE WAKE UNLOCK
+key 150 EXPLORER WAKE UNLOCK
+key 62 SETTINGS WAKE UNLOCK
+key 165 MEDIA_PREVIOUS WAKE UNLOCK
+key 164 MEDIA_PLAY_PAUSE WAKE UNLOCK
+key 163 MEDIA_NEXT WAKE UNLOCK
+key 114 VOLUME_DOWN WAKE UNLOCK
+key 113 VOLUME_MUTE WAKE UNLOCK
+key 172 HOME WAKE UNLOCK
+key 139 MENU WAKE UNLOCK
+key 104 PAGE_UP WAKE UNLOCK
+key 109 PAGE_DOWN WAKE UNLOCK
+key 107 MOVE_END WAKE UNLOCK
+key 102 MOVE_HOME WAKE UNLOCK
diff --git a/xt9/keylayout/qwerty-iw_IL.kl b/xt9/keylayout/qwerty-iw_IL.kl
new file mode 100644
index 0000000..2d7e164
--- /dev/null
+++ b/xt9/keylayout/qwerty-iw_IL.kl
@@ -0,0 +1,86 @@
+key 41 GRAVE WAKE UNLOCK
+key 2 1 WAKE UNLOCK
+key 3 2 WAKE UNLOCK
+key 4 3 WAKE UNLOCK
+key 5 4 WAKE UNLOCK
+key 6 5 WAKE UNLOCK
+key 7 6 WAKE UNLOCK
+key 8 7 WAKE UNLOCK
+key 9 8 WAKE UNLOCK
+key 10 9 WAKE UNLOCK
+key 11 0 WAKE UNLOCK
+key 12 MINUS WAKE UNLOCK
+key 13 EQUALS WAKE UNLOCK
+key 14 DEL WAKE UNLOCK
+key 15 TAB WAKE UNLOCK
+key 16 Q WAKE UNLOCK
+key 17 W WAKE UNLOCK
+key 18 E WAKE UNLOCK
+key 19 R WAKE UNLOCK
+key 20 T WAKE UNLOCK
+key 21 Y WAKE UNLOCK
+key 22 U WAKE UNLOCK
+key 23 I WAKE UNLOCK
+key 24 O WAKE UNLOCK
+key 25 P WAKE UNLOCK
+key 26 LEFT_BRACKET WAKE UNLOCK
+key 27 RIGHT_BRACKET WAKE UNLOCK
+key 43 BACKSLASH WAKE UNLOCK
+key 58 CAPS_LOCK WAKE UNLOCK
+key 30 A WAKE UNLOCK
+key 31 S WAKE UNLOCK
+key 32 D WAKE UNLOCK
+key 33 F WAKE UNLOCK
+key 34 G WAKE UNLOCK
+key 35 H WAKE UNLOCK
+key 36 J WAKE UNLOCK
+key 37 K WAKE UNLOCK
+key 38 L WAKE UNLOCK
+key 39 SEMICOLON WAKE UNLOCK
+key 40 APOSTROPHE WAKE UNLOCK
+key 28 ENTER WAKE UNLOCK
+key 42 SHIFT_LEFT WAKE UNLOCK
+key 44 Z WAKE UNLOCK
+key 45 X WAKE UNLOCK
+key 46 C WAKE UNLOCK
+key 47 V WAKE UNLOCK
+key 48 B WAKE UNLOCK
+key 49 N WAKE UNLOCK
+key 50 M WAKE UNLOCK
+key 51 COMMA WAKE UNLOCK
+key 52 PERIOD WAKE UNLOCK
+key 53 SLASH WAKE UNLOCK
+key 54 SHIFT_RIGHT WAKE UNLOCK
+key 29 CTRL_LEFT WAKE UNLOCK
+key 217 SEARCH WAKE UNLOCK
+key 57 SPACE WAKE UNLOCK
+key 100 ALT_RIGHT WAKE UNLOCK
+key 97 CTRL_RIGHT WAKE UNLOCK
+key 115 VOLUME_UP WAKE UNLOCK
+key 142 SLEEP WAKE UNLOCK
+key 105 DPAD_LEFT WAKE UNLOCK
+key 103 DPAD_UP WAKE UNLOCK
+key 108 DPAD_DOWN WAKE UNLOCK
+key 106 DPAD_RIGHT WAKE UNLOCK
+key 158 BACK WAKE UNLOCK
+key 238 WIRELESS WAKE UNLOCK
+key 237 BLUETOOTH WAKE UNLOCK
+key 60 TOUCHPAD WAKE UNLOCK
+key 224 BRIGHTNESS_DOWN WAKE UNLOCK
+key 225 BRIGHTNESS_UP WAKE UNLOCK
+key 61 BRIGHTNESS_AUTO WAKE UNLOCK
+key 212 CAPTURE WAKE UNLOCK
+key 150 EXPLORER WAKE UNLOCK
+key 62 SETTINGS WAKE UNLOCK
+key 165 MEDIA_PREVIOUS WAKE UNLOCK
+key 164 MEDIA_PLAY_PAUSE WAKE UNLOCK
+key 163 MEDIA_NEXT WAKE UNLOCK
+key 114 VOLUME_DOWN WAKE UNLOCK
+key 113 VOLUME_MUTE WAKE UNLOCK
+key 172 HOME WAKE UNLOCK
+key 139 MENU WAKE UNLOCK
+key 104 PAGE_UP WAKE UNLOCK
+key 109 PAGE_DOWN WAKE UNLOCK
+key 107 MOVE_END WAKE UNLOCK
+key 102 MOVE_HOME WAKE UNLOCK
+key 86 EUROPE_2 WAKE UNLOCK
diff --git a/xt9/keylayout/qwerty-nb_NO.kl b/xt9/keylayout/qwerty-nb_NO.kl
new file mode 100644
index 0000000..74d5299
--- /dev/null
+++ b/xt9/keylayout/qwerty-nb_NO.kl
@@ -0,0 +1,86 @@
+key 41 GRAVE WAKE UNLOCK
+key 2 1 WAKE UNLOCK
+key 3 2 WAKE UNLOCK
+key 4 3 WAKE UNLOCK
+key 5 4 WAKE UNLOCK
+key 6 5 WAKE UNLOCK
+key 7 6 WAKE UNLOCK
+key 8 7 WAKE UNLOCK
+key 9 8 WAKE UNLOCK
+key 10 9 WAKE UNLOCK
+key 11 0 WAKE UNLOCK
+key 12 MINUS WAKE UNLOCK
+key 13 EQUALS WAKE UNLOCK
+key 14 DEL WAKE UNLOCK
+key 15 TAB WAKE UNLOCK
+key 16 Q WAKE UNLOCK
+key 17 W WAKE UNLOCK
+key 18 E WAKE UNLOCK
+key 19 R WAKE UNLOCK
+key 20 T WAKE UNLOCK
+key 21 Y WAKE UNLOCK
+key 22 U WAKE UNLOCK
+key 23 I WAKE UNLOCK
+key 24 O WAKE UNLOCK
+key 25 P WAKE UNLOCK
+key 26 LEFT_BRACKET WAKE UNLOCK
+key 27 RIGHT_BRACKET WAKE UNLOCK
+key 58 CAPS_LOCK WAKE UNLOCK
+key 30 A WAKE UNLOCK
+key 31 S WAKE UNLOCK
+key 32 D WAKE UNLOCK
+key 33 F WAKE UNLOCK
+key 34 G WAKE UNLOCK
+key 35 H WAKE UNLOCK
+key 36 J WAKE UNLOCK
+key 37 K WAKE UNLOCK
+key 38 L WAKE UNLOCK
+key 39 SEMICOLON WAKE UNLOCK
+key 40 APOSTROPHE WAKE UNLOCK
+key 43 BACKSLASH WAKE UNLOCK
+key 28 ENTER WAKE UNLOCK
+key 42 SHIFT_LEFT WAKE UNLOCK
+key 86 EUROPE_2 WAKE UNLOCK
+key 44 Z WAKE UNLOCK
+key 45 X WAKE UNLOCK
+key 46 C WAKE UNLOCK
+key 47 V WAKE UNLOCK
+key 48 B WAKE UNLOCK
+key 49 N WAKE UNLOCK
+key 50 M WAKE UNLOCK
+key 51 COMMA WAKE UNLOCK
+key 52 PERIOD WAKE UNLOCK
+key 53 SLASH WAKE UNLOCK
+key 54 SHIFT_RIGHT WAKE UNLOCK
+key 29 CTRL_LEFT WAKE UNLOCK
+key 217 SEARCH WAKE UNLOCK
+key 57 SPACE WAKE UNLOCK
+key 100 ALT_RIGHT WAKE UNLOCK
+key 97 CTRL_RIGHT WAKE UNLOCK
+key 115 VOLUME_UP WAKE UNLOCK
+key 142 SLEEP WAKE UNLOCK
+key 105 DPAD_LEFT WAKE UNLOCK
+key 103 DPAD_UP WAKE UNLOCK
+key 108 DPAD_DOWN WAKE UNLOCK
+key 106 DPAD_RIGHT WAKE UNLOCK
+key 158 BACK WAKE UNLOCK
+key 238 WIRELESS WAKE UNLOCK
+key 237 BLUETOOTH WAKE UNLOCK
+key 60 TOUCHPAD WAKE UNLOCK
+key 224 BRIGHTNESS_DOWN WAKE UNLOCK
+key 225 BRIGHTNESS_UP WAKE UNLOCK
+key 61 BRIGHTNESS_AUTO WAKE UNLOCK
+key 212 CAPTURE WAKE UNLOCK
+key 150 EXPLORER WAKE UNLOCK
+key 62 SETTINGS WAKE UNLOCK
+key 165 MEDIA_PREVIOUS WAKE UNLOCK
+key 164 MEDIA_PLAY_PAUSE WAKE UNLOCK
+key 163 MEDIA_NEXT WAKE UNLOCK
+key 114 VOLUME_DOWN WAKE UNLOCK
+key 113 VOLUME_MUTE WAKE UNLOCK
+key 172 HOME WAKE UNLOCK
+key 139 MENU WAKE UNLOCK
+key 104 PAGE_UP WAKE UNLOCK
+key 109 PAGE_DOWN WAKE UNLOCK
+key 107 MOVE_END WAKE UNLOCK
+key 102 MOVE_HOME WAKE UNLOCK
diff --git a/xt9/keylayout/qwerty-nl_BE.kl b/xt9/keylayout/qwerty-nl_BE.kl
new file mode 100644
index 0000000..2a6e33e
--- /dev/null
+++ b/xt9/keylayout/qwerty-nl_BE.kl
@@ -0,0 +1,86 @@
+key 41 GRAVE WAKE UNLOCK
+key 2 1 WAKE UNLOCK
+key 3 2 WAKE UNLOCK
+key 4 3 WAKE UNLOCK
+key 5 4 WAKE UNLOCK
+key 6 5 WAKE UNLOCK
+key 7 6 WAKE UNLOCK
+key 8 7 WAKE UNLOCK
+key 9 8 WAKE UNLOCK
+key 10 9 WAKE UNLOCK
+key 11 0 WAKE UNLOCK
+key 12 MINUS WAKE UNLOCK
+key 13 EQUALS WAKE UNLOCK
+key 14 DEL WAKE UNLOCK
+key 15 TAB WAKE UNLOCK
+key 16 A WAKE UNLOCK
+key 17 Z WAKE UNLOCK
+key 18 E WAKE UNLOCK
+key 19 R WAKE UNLOCK
+key 20 T WAKE UNLOCK
+key 21 Y WAKE UNLOCK
+key 22 U WAKE UNLOCK
+key 23 I WAKE UNLOCK
+key 24 O WAKE UNLOCK
+key 25 P WAKE UNLOCK
+key 26 LEFT_BRACKET WAKE UNLOCK
+key 27 RIGHT_BRACKET WAKE UNLOCK
+key 58 CAPS_LOCK WAKE UNLOCK
+key 30 Q WAKE UNLOCK
+key 31 S WAKE UNLOCK
+key 32 D WAKE UNLOCK
+key 33 F WAKE UNLOCK
+key 34 G WAKE UNLOCK
+key 35 H WAKE UNLOCK
+key 36 J WAKE UNLOCK
+key 37 K WAKE UNLOCK
+key 38 L WAKE UNLOCK
+key 39 M WAKE UNLOCK
+key 40 APOSTROPHE WAKE UNLOCK
+key 43 BACKSLASH WAKE UNLOCK
+key 28 ENTER WAKE UNLOCK
+key 42 SHIFT_LEFT WAKE UNLOCK
+key 86 EUROPE_2 WAKE UNLOCK
+key 44 W WAKE UNLOCK
+key 45 X WAKE UNLOCK
+key 46 C WAKE UNLOCK
+key 47 V WAKE UNLOCK
+key 48 B WAKE UNLOCK
+key 49 N WAKE UNLOCK
+key 50 COMMA WAKE UNLOCK
+key 51 SEMICOLON WAKE UNLOCK
+key 52 PERIOD WAKE UNLOCK
+key 53 SLASH WAKE UNLOCK
+key 54 SHIFT_RIGHT WAKE UNLOCK
+key 29 CTRL_LEFT WAKE UNLOCK
+key 217 SEARCH WAKE UNLOCK
+key 57 SPACE WAKE UNLOCK
+key 100 ALT_RIGHT WAKE UNLOCK
+key 97 CTRL_RIGHT WAKE UNLOCK
+key 115 VOLUME_UP WAKE UNLOCK
+key 142 SLEEP WAKE UNLOCK
+key 105 DPAD_LEFT WAKE UNLOCK
+key 103 DPAD_UP WAKE UNLOCK
+key 108 DPAD_DOWN WAKE UNLOCK
+key 106 DPAD_RIGHT WAKE UNLOCK
+key 158 BACK WAKE UNLOCK
+key 238 WIRELESS WAKE UNLOCK
+key 237 BLUETOOTH WAKE UNLOCK
+key 60 TOUCHPAD WAKE UNLOCK
+key 224 BRIGHTNESS_DOWN WAKE UNLOCK
+key 225 BRIGHTNESS_UP WAKE UNLOCK
+key 61 BRIGHTNESS_AUTO WAKE UNLOCK
+key 212 CAPTURE WAKE UNLOCK
+key 150 EXPLORER WAKE UNLOCK
+key 62 SETTINGS WAKE UNLOCK
+key 165 MEDIA_PREVIOUS WAKE UNLOCK
+key 164 MEDIA_PLAY_PAUSE WAKE UNLOCK
+key 163 MEDIA_NEXT WAKE UNLOCK
+key 114 VOLUME_DOWN WAKE UNLOCK
+key 113 VOLUME_MUTE WAKE UNLOCK
+key 172 HOME WAKE UNLOCK
+key 139 MENU WAKE UNLOCK
+key 104 PAGE_UP WAKE UNLOCK
+key 109 PAGE_DOWN WAKE UNLOCK
+key 107 MOVE_END WAKE UNLOCK
+key 102 MOVE_HOME WAKE UNLOCK
diff --git a/xt9/keylayout/qwerty-nl_NL.kl b/xt9/keylayout/qwerty-nl_NL.kl
new file mode 100644
index 0000000..2d7e164
--- /dev/null
+++ b/xt9/keylayout/qwerty-nl_NL.kl
@@ -0,0 +1,86 @@
+key 41 GRAVE WAKE UNLOCK
+key 2 1 WAKE UNLOCK
+key 3 2 WAKE UNLOCK
+key 4 3 WAKE UNLOCK
+key 5 4 WAKE UNLOCK
+key 6 5 WAKE UNLOCK
+key 7 6 WAKE UNLOCK
+key 8 7 WAKE UNLOCK
+key 9 8 WAKE UNLOCK
+key 10 9 WAKE UNLOCK
+key 11 0 WAKE UNLOCK
+key 12 MINUS WAKE UNLOCK
+key 13 EQUALS WAKE UNLOCK
+key 14 DEL WAKE UNLOCK
+key 15 TAB WAKE UNLOCK
+key 16 Q WAKE UNLOCK
+key 17 W WAKE UNLOCK
+key 18 E WAKE UNLOCK
+key 19 R WAKE UNLOCK
+key 20 T WAKE UNLOCK
+key 21 Y WAKE UNLOCK
+key 22 U WAKE UNLOCK
+key 23 I WAKE UNLOCK
+key 24 O WAKE UNLOCK
+key 25 P WAKE UNLOCK
+key 26 LEFT_BRACKET WAKE UNLOCK
+key 27 RIGHT_BRACKET WAKE UNLOCK
+key 43 BACKSLASH WAKE UNLOCK
+key 58 CAPS_LOCK WAKE UNLOCK
+key 30 A WAKE UNLOCK
+key 31 S WAKE UNLOCK
+key 32 D WAKE UNLOCK
+key 33 F WAKE UNLOCK
+key 34 G WAKE UNLOCK
+key 35 H WAKE UNLOCK
+key 36 J WAKE UNLOCK
+key 37 K WAKE UNLOCK
+key 38 L WAKE UNLOCK
+key 39 SEMICOLON WAKE UNLOCK
+key 40 APOSTROPHE WAKE UNLOCK
+key 28 ENTER WAKE UNLOCK
+key 42 SHIFT_LEFT WAKE UNLOCK
+key 44 Z WAKE UNLOCK
+key 45 X WAKE UNLOCK
+key 46 C WAKE UNLOCK
+key 47 V WAKE UNLOCK
+key 48 B WAKE UNLOCK
+key 49 N WAKE UNLOCK
+key 50 M WAKE UNLOCK
+key 51 COMMA WAKE UNLOCK
+key 52 PERIOD WAKE UNLOCK
+key 53 SLASH WAKE UNLOCK
+key 54 SHIFT_RIGHT WAKE UNLOCK
+key 29 CTRL_LEFT WAKE UNLOCK
+key 217 SEARCH WAKE UNLOCK
+key 57 SPACE WAKE UNLOCK
+key 100 ALT_RIGHT WAKE UNLOCK
+key 97 CTRL_RIGHT WAKE UNLOCK
+key 115 VOLUME_UP WAKE UNLOCK
+key 142 SLEEP WAKE UNLOCK
+key 105 DPAD_LEFT WAKE UNLOCK
+key 103 DPAD_UP WAKE UNLOCK
+key 108 DPAD_DOWN WAKE UNLOCK
+key 106 DPAD_RIGHT WAKE UNLOCK
+key 158 BACK WAKE UNLOCK
+key 238 WIRELESS WAKE UNLOCK
+key 237 BLUETOOTH WAKE UNLOCK
+key 60 TOUCHPAD WAKE UNLOCK
+key 224 BRIGHTNESS_DOWN WAKE UNLOCK
+key 225 BRIGHTNESS_UP WAKE UNLOCK
+key 61 BRIGHTNESS_AUTO WAKE UNLOCK
+key 212 CAPTURE WAKE UNLOCK
+key 150 EXPLORER WAKE UNLOCK
+key 62 SETTINGS WAKE UNLOCK
+key 165 MEDIA_PREVIOUS WAKE UNLOCK
+key 164 MEDIA_PLAY_PAUSE WAKE UNLOCK
+key 163 MEDIA_NEXT WAKE UNLOCK
+key 114 VOLUME_DOWN WAKE UNLOCK
+key 113 VOLUME_MUTE WAKE UNLOCK
+key 172 HOME WAKE UNLOCK
+key 139 MENU WAKE UNLOCK
+key 104 PAGE_UP WAKE UNLOCK
+key 109 PAGE_DOWN WAKE UNLOCK
+key 107 MOVE_END WAKE UNLOCK
+key 102 MOVE_HOME WAKE UNLOCK
+key 86 EUROPE_2 WAKE UNLOCK
diff --git a/xt9/keylayout/qwerty-pl_PL.kl b/xt9/keylayout/qwerty-pl_PL.kl
new file mode 100644
index 0000000..2d7e164
--- /dev/null
+++ b/xt9/keylayout/qwerty-pl_PL.kl
@@ -0,0 +1,86 @@
+key 41 GRAVE WAKE UNLOCK
+key 2 1 WAKE UNLOCK
+key 3 2 WAKE UNLOCK
+key 4 3 WAKE UNLOCK
+key 5 4 WAKE UNLOCK
+key 6 5 WAKE UNLOCK
+key 7 6 WAKE UNLOCK
+key 8 7 WAKE UNLOCK
+key 9 8 WAKE UNLOCK
+key 10 9 WAKE UNLOCK
+key 11 0 WAKE UNLOCK
+key 12 MINUS WAKE UNLOCK
+key 13 EQUALS WAKE UNLOCK
+key 14 DEL WAKE UNLOCK
+key 15 TAB WAKE UNLOCK
+key 16 Q WAKE UNLOCK
+key 17 W WAKE UNLOCK
+key 18 E WAKE UNLOCK
+key 19 R WAKE UNLOCK
+key 20 T WAKE UNLOCK
+key 21 Y WAKE UNLOCK
+key 22 U WAKE UNLOCK
+key 23 I WAKE UNLOCK
+key 24 O WAKE UNLOCK
+key 25 P WAKE UNLOCK
+key 26 LEFT_BRACKET WAKE UNLOCK
+key 27 RIGHT_BRACKET WAKE UNLOCK
+key 43 BACKSLASH WAKE UNLOCK
+key 58 CAPS_LOCK WAKE UNLOCK
+key 30 A WAKE UNLOCK
+key 31 S WAKE UNLOCK
+key 32 D WAKE UNLOCK
+key 33 F WAKE UNLOCK
+key 34 G WAKE UNLOCK
+key 35 H WAKE UNLOCK
+key 36 J WAKE UNLOCK
+key 37 K WAKE UNLOCK
+key 38 L WAKE UNLOCK
+key 39 SEMICOLON WAKE UNLOCK
+key 40 APOSTROPHE WAKE UNLOCK
+key 28 ENTER WAKE UNLOCK
+key 42 SHIFT_LEFT WAKE UNLOCK
+key 44 Z WAKE UNLOCK
+key 45 X WAKE UNLOCK
+key 46 C WAKE UNLOCK
+key 47 V WAKE UNLOCK
+key 48 B WAKE UNLOCK
+key 49 N WAKE UNLOCK
+key 50 M WAKE UNLOCK
+key 51 COMMA WAKE UNLOCK
+key 52 PERIOD WAKE UNLOCK
+key 53 SLASH WAKE UNLOCK
+key 54 SHIFT_RIGHT WAKE UNLOCK
+key 29 CTRL_LEFT WAKE UNLOCK
+key 217 SEARCH WAKE UNLOCK
+key 57 SPACE WAKE UNLOCK
+key 100 ALT_RIGHT WAKE UNLOCK
+key 97 CTRL_RIGHT WAKE UNLOCK
+key 115 VOLUME_UP WAKE UNLOCK
+key 142 SLEEP WAKE UNLOCK
+key 105 DPAD_LEFT WAKE UNLOCK
+key 103 DPAD_UP WAKE UNLOCK
+key 108 DPAD_DOWN WAKE UNLOCK
+key 106 DPAD_RIGHT WAKE UNLOCK
+key 158 BACK WAKE UNLOCK
+key 238 WIRELESS WAKE UNLOCK
+key 237 BLUETOOTH WAKE UNLOCK
+key 60 TOUCHPAD WAKE UNLOCK
+key 224 BRIGHTNESS_DOWN WAKE UNLOCK
+key 225 BRIGHTNESS_UP WAKE UNLOCK
+key 61 BRIGHTNESS_AUTO WAKE UNLOCK
+key 212 CAPTURE WAKE UNLOCK
+key 150 EXPLORER WAKE UNLOCK
+key 62 SETTINGS WAKE UNLOCK
+key 165 MEDIA_PREVIOUS WAKE UNLOCK
+key 164 MEDIA_PLAY_PAUSE WAKE UNLOCK
+key 163 MEDIA_NEXT WAKE UNLOCK
+key 114 VOLUME_DOWN WAKE UNLOCK
+key 113 VOLUME_MUTE WAKE UNLOCK
+key 172 HOME WAKE UNLOCK
+key 139 MENU WAKE UNLOCK
+key 104 PAGE_UP WAKE UNLOCK
+key 109 PAGE_DOWN WAKE UNLOCK
+key 107 MOVE_END WAKE UNLOCK
+key 102 MOVE_HOME WAKE UNLOCK
+key 86 EUROPE_2 WAKE UNLOCK
diff --git a/xt9/keylayout/qwerty-pt_BR.kl b/xt9/keylayout/qwerty-pt_BR.kl
new file mode 100644
index 0000000..74d5299
--- /dev/null
+++ b/xt9/keylayout/qwerty-pt_BR.kl
@@ -0,0 +1,86 @@
+key 41 GRAVE WAKE UNLOCK
+key 2 1 WAKE UNLOCK
+key 3 2 WAKE UNLOCK
+key 4 3 WAKE UNLOCK
+key 5 4 WAKE UNLOCK
+key 6 5 WAKE UNLOCK
+key 7 6 WAKE UNLOCK
+key 8 7 WAKE UNLOCK
+key 9 8 WAKE UNLOCK
+key 10 9 WAKE UNLOCK
+key 11 0 WAKE UNLOCK
+key 12 MINUS WAKE UNLOCK
+key 13 EQUALS WAKE UNLOCK
+key 14 DEL WAKE UNLOCK
+key 15 TAB WAKE UNLOCK
+key 16 Q WAKE UNLOCK
+key 17 W WAKE UNLOCK
+key 18 E WAKE UNLOCK
+key 19 R WAKE UNLOCK
+key 20 T WAKE UNLOCK
+key 21 Y WAKE UNLOCK
+key 22 U WAKE UNLOCK
+key 23 I WAKE UNLOCK
+key 24 O WAKE UNLOCK
+key 25 P WAKE UNLOCK
+key 26 LEFT_BRACKET WAKE UNLOCK
+key 27 RIGHT_BRACKET WAKE UNLOCK
+key 58 CAPS_LOCK WAKE UNLOCK
+key 30 A WAKE UNLOCK
+key 31 S WAKE UNLOCK
+key 32 D WAKE UNLOCK
+key 33 F WAKE UNLOCK
+key 34 G WAKE UNLOCK
+key 35 H WAKE UNLOCK
+key 36 J WAKE UNLOCK
+key 37 K WAKE UNLOCK
+key 38 L WAKE UNLOCK
+key 39 SEMICOLON WAKE UNLOCK
+key 40 APOSTROPHE WAKE UNLOCK
+key 43 BACKSLASH WAKE UNLOCK
+key 28 ENTER WAKE UNLOCK
+key 42 SHIFT_LEFT WAKE UNLOCK
+key 86 EUROPE_2 WAKE UNLOCK
+key 44 Z WAKE UNLOCK
+key 45 X WAKE UNLOCK
+key 46 C WAKE UNLOCK
+key 47 V WAKE UNLOCK
+key 48 B WAKE UNLOCK
+key 49 N WAKE UNLOCK
+key 50 M WAKE UNLOCK
+key 51 COMMA WAKE UNLOCK
+key 52 PERIOD WAKE UNLOCK
+key 53 SLASH WAKE UNLOCK
+key 54 SHIFT_RIGHT WAKE UNLOCK
+key 29 CTRL_LEFT WAKE UNLOCK
+key 217 SEARCH WAKE UNLOCK
+key 57 SPACE WAKE UNLOCK
+key 100 ALT_RIGHT WAKE UNLOCK
+key 97 CTRL_RIGHT WAKE UNLOCK
+key 115 VOLUME_UP WAKE UNLOCK
+key 142 SLEEP WAKE UNLOCK
+key 105 DPAD_LEFT WAKE UNLOCK
+key 103 DPAD_UP WAKE UNLOCK
+key 108 DPAD_DOWN WAKE UNLOCK
+key 106 DPAD_RIGHT WAKE UNLOCK
+key 158 BACK WAKE UNLOCK
+key 238 WIRELESS WAKE UNLOCK
+key 237 BLUETOOTH WAKE UNLOCK
+key 60 TOUCHPAD WAKE UNLOCK
+key 224 BRIGHTNESS_DOWN WAKE UNLOCK
+key 225 BRIGHTNESS_UP WAKE UNLOCK
+key 61 BRIGHTNESS_AUTO WAKE UNLOCK
+key 212 CAPTURE WAKE UNLOCK
+key 150 EXPLORER WAKE UNLOCK
+key 62 SETTINGS WAKE UNLOCK
+key 165 MEDIA_PREVIOUS WAKE UNLOCK
+key 164 MEDIA_PLAY_PAUSE WAKE UNLOCK
+key 163 MEDIA_NEXT WAKE UNLOCK
+key 114 VOLUME_DOWN WAKE UNLOCK
+key 113 VOLUME_MUTE WAKE UNLOCK
+key 172 HOME WAKE UNLOCK
+key 139 MENU WAKE UNLOCK
+key 104 PAGE_UP WAKE UNLOCK
+key 109 PAGE_DOWN WAKE UNLOCK
+key 107 MOVE_END WAKE UNLOCK
+key 102 MOVE_HOME WAKE UNLOCK
diff --git a/xt9/keylayout/qwerty-pt_PT.kl b/xt9/keylayout/qwerty-pt_PT.kl
new file mode 100644
index 0000000..74d5299
--- /dev/null
+++ b/xt9/keylayout/qwerty-pt_PT.kl
@@ -0,0 +1,86 @@
+key 41 GRAVE WAKE UNLOCK
+key 2 1 WAKE UNLOCK
+key 3 2 WAKE UNLOCK
+key 4 3 WAKE UNLOCK
+key 5 4 WAKE UNLOCK
+key 6 5 WAKE UNLOCK
+key 7 6 WAKE UNLOCK
+key 8 7 WAKE UNLOCK
+key 9 8 WAKE UNLOCK
+key 10 9 WAKE UNLOCK
+key 11 0 WAKE UNLOCK
+key 12 MINUS WAKE UNLOCK
+key 13 EQUALS WAKE UNLOCK
+key 14 DEL WAKE UNLOCK
+key 15 TAB WAKE UNLOCK
+key 16 Q WAKE UNLOCK
+key 17 W WAKE UNLOCK
+key 18 E WAKE UNLOCK
+key 19 R WAKE UNLOCK
+key 20 T WAKE UNLOCK
+key 21 Y WAKE UNLOCK
+key 22 U WAKE UNLOCK
+key 23 I WAKE UNLOCK
+key 24 O WAKE UNLOCK
+key 25 P WAKE UNLOCK
+key 26 LEFT_BRACKET WAKE UNLOCK
+key 27 RIGHT_BRACKET WAKE UNLOCK
+key 58 CAPS_LOCK WAKE UNLOCK
+key 30 A WAKE UNLOCK
+key 31 S WAKE UNLOCK
+key 32 D WAKE UNLOCK
+key 33 F WAKE UNLOCK
+key 34 G WAKE UNLOCK
+key 35 H WAKE UNLOCK
+key 36 J WAKE UNLOCK
+key 37 K WAKE UNLOCK
+key 38 L WAKE UNLOCK
+key 39 SEMICOLON WAKE UNLOCK
+key 40 APOSTROPHE WAKE UNLOCK
+key 43 BACKSLASH WAKE UNLOCK
+key 28 ENTER WAKE UNLOCK
+key 42 SHIFT_LEFT WAKE UNLOCK
+key 86 EUROPE_2 WAKE UNLOCK
+key 44 Z WAKE UNLOCK
+key 45 X WAKE UNLOCK
+key 46 C WAKE UNLOCK
+key 47 V WAKE UNLOCK
+key 48 B WAKE UNLOCK
+key 49 N WAKE UNLOCK
+key 50 M WAKE UNLOCK
+key 51 COMMA WAKE UNLOCK
+key 52 PERIOD WAKE UNLOCK
+key 53 SLASH WAKE UNLOCK
+key 54 SHIFT_RIGHT WAKE UNLOCK
+key 29 CTRL_LEFT WAKE UNLOCK
+key 217 SEARCH WAKE UNLOCK
+key 57 SPACE WAKE UNLOCK
+key 100 ALT_RIGHT WAKE UNLOCK
+key 97 CTRL_RIGHT WAKE UNLOCK
+key 115 VOLUME_UP WAKE UNLOCK
+key 142 SLEEP WAKE UNLOCK
+key 105 DPAD_LEFT WAKE UNLOCK
+key 103 DPAD_UP WAKE UNLOCK
+key 108 DPAD_DOWN WAKE UNLOCK
+key 106 DPAD_RIGHT WAKE UNLOCK
+key 158 BACK WAKE UNLOCK
+key 238 WIRELESS WAKE UNLOCK
+key 237 BLUETOOTH WAKE UNLOCK
+key 60 TOUCHPAD WAKE UNLOCK
+key 224 BRIGHTNESS_DOWN WAKE UNLOCK
+key 225 BRIGHTNESS_UP WAKE UNLOCK
+key 61 BRIGHTNESS_AUTO WAKE UNLOCK
+key 212 CAPTURE WAKE UNLOCK
+key 150 EXPLORER WAKE UNLOCK
+key 62 SETTINGS WAKE UNLOCK
+key 165 MEDIA_PREVIOUS WAKE UNLOCK
+key 164 MEDIA_PLAY_PAUSE WAKE UNLOCK
+key 163 MEDIA_NEXT WAKE UNLOCK
+key 114 VOLUME_DOWN WAKE UNLOCK
+key 113 VOLUME_MUTE WAKE UNLOCK
+key 172 HOME WAKE UNLOCK
+key 139 MENU WAKE UNLOCK
+key 104 PAGE_UP WAKE UNLOCK
+key 109 PAGE_DOWN WAKE UNLOCK
+key 107 MOVE_END WAKE UNLOCK
+key 102 MOVE_HOME WAKE UNLOCK
diff --git a/xt9/keylayout/qwerty-ru_RU.kl b/xt9/keylayout/qwerty-ru_RU.kl
new file mode 100644
index 0000000..2d7e164
--- /dev/null
+++ b/xt9/keylayout/qwerty-ru_RU.kl
@@ -0,0 +1,86 @@
+key 41 GRAVE WAKE UNLOCK
+key 2 1 WAKE UNLOCK
+key 3 2 WAKE UNLOCK
+key 4 3 WAKE UNLOCK
+key 5 4 WAKE UNLOCK
+key 6 5 WAKE UNLOCK
+key 7 6 WAKE UNLOCK
+key 8 7 WAKE UNLOCK
+key 9 8 WAKE UNLOCK
+key 10 9 WAKE UNLOCK
+key 11 0 WAKE UNLOCK
+key 12 MINUS WAKE UNLOCK
+key 13 EQUALS WAKE UNLOCK
+key 14 DEL WAKE UNLOCK
+key 15 TAB WAKE UNLOCK
+key 16 Q WAKE UNLOCK
+key 17 W WAKE UNLOCK
+key 18 E WAKE UNLOCK
+key 19 R WAKE UNLOCK
+key 20 T WAKE UNLOCK
+key 21 Y WAKE UNLOCK
+key 22 U WAKE UNLOCK
+key 23 I WAKE UNLOCK
+key 24 O WAKE UNLOCK
+key 25 P WAKE UNLOCK
+key 26 LEFT_BRACKET WAKE UNLOCK
+key 27 RIGHT_BRACKET WAKE UNLOCK
+key 43 BACKSLASH WAKE UNLOCK
+key 58 CAPS_LOCK WAKE UNLOCK
+key 30 A WAKE UNLOCK
+key 31 S WAKE UNLOCK
+key 32 D WAKE UNLOCK
+key 33 F WAKE UNLOCK
+key 34 G WAKE UNLOCK
+key 35 H WAKE UNLOCK
+key 36 J WAKE UNLOCK
+key 37 K WAKE UNLOCK
+key 38 L WAKE UNLOCK
+key 39 SEMICOLON WAKE UNLOCK
+key 40 APOSTROPHE WAKE UNLOCK
+key 28 ENTER WAKE UNLOCK
+key 42 SHIFT_LEFT WAKE UNLOCK
+key 44 Z WAKE UNLOCK
+key 45 X WAKE UNLOCK
+key 46 C WAKE UNLOCK
+key 47 V WAKE UNLOCK
+key 48 B WAKE UNLOCK
+key 49 N WAKE UNLOCK
+key 50 M WAKE UNLOCK
+key 51 COMMA WAKE UNLOCK
+key 52 PERIOD WAKE UNLOCK
+key 53 SLASH WAKE UNLOCK
+key 54 SHIFT_RIGHT WAKE UNLOCK
+key 29 CTRL_LEFT WAKE UNLOCK
+key 217 SEARCH WAKE UNLOCK
+key 57 SPACE WAKE UNLOCK
+key 100 ALT_RIGHT WAKE UNLOCK
+key 97 CTRL_RIGHT WAKE UNLOCK
+key 115 VOLUME_UP WAKE UNLOCK
+key 142 SLEEP WAKE UNLOCK
+key 105 DPAD_LEFT WAKE UNLOCK
+key 103 DPAD_UP WAKE UNLOCK
+key 108 DPAD_DOWN WAKE UNLOCK
+key 106 DPAD_RIGHT WAKE UNLOCK
+key 158 BACK WAKE UNLOCK
+key 238 WIRELESS WAKE UNLOCK
+key 237 BLUETOOTH WAKE UNLOCK
+key 60 TOUCHPAD WAKE UNLOCK
+key 224 BRIGHTNESS_DOWN WAKE UNLOCK
+key 225 BRIGHTNESS_UP WAKE UNLOCK
+key 61 BRIGHTNESS_AUTO WAKE UNLOCK
+key 212 CAPTURE WAKE UNLOCK
+key 150 EXPLORER WAKE UNLOCK
+key 62 SETTINGS WAKE UNLOCK
+key 165 MEDIA_PREVIOUS WAKE UNLOCK
+key 164 MEDIA_PLAY_PAUSE WAKE UNLOCK
+key 163 MEDIA_NEXT WAKE UNLOCK
+key 114 VOLUME_DOWN WAKE UNLOCK
+key 113 VOLUME_MUTE WAKE UNLOCK
+key 172 HOME WAKE UNLOCK
+key 139 MENU WAKE UNLOCK
+key 104 PAGE_UP WAKE UNLOCK
+key 109 PAGE_DOWN WAKE UNLOCK
+key 107 MOVE_END WAKE UNLOCK
+key 102 MOVE_HOME WAKE UNLOCK
+key 86 EUROPE_2 WAKE UNLOCK
diff --git a/xt9/keylayout/qwerty-sv_SE.kl b/xt9/keylayout/qwerty-sv_SE.kl
new file mode 100644
index 0000000..74d5299
--- /dev/null
+++ b/xt9/keylayout/qwerty-sv_SE.kl
@@ -0,0 +1,86 @@
+key 41 GRAVE WAKE UNLOCK
+key 2 1 WAKE UNLOCK
+key 3 2 WAKE UNLOCK
+key 4 3 WAKE UNLOCK
+key 5 4 WAKE UNLOCK
+key 6 5 WAKE UNLOCK
+key 7 6 WAKE UNLOCK
+key 8 7 WAKE UNLOCK
+key 9 8 WAKE UNLOCK
+key 10 9 WAKE UNLOCK
+key 11 0 WAKE UNLOCK
+key 12 MINUS WAKE UNLOCK
+key 13 EQUALS WAKE UNLOCK
+key 14 DEL WAKE UNLOCK
+key 15 TAB WAKE UNLOCK
+key 16 Q WAKE UNLOCK
+key 17 W WAKE UNLOCK
+key 18 E WAKE UNLOCK
+key 19 R WAKE UNLOCK
+key 20 T WAKE UNLOCK
+key 21 Y WAKE UNLOCK
+key 22 U WAKE UNLOCK
+key 23 I WAKE UNLOCK
+key 24 O WAKE UNLOCK
+key 25 P WAKE UNLOCK
+key 26 LEFT_BRACKET WAKE UNLOCK
+key 27 RIGHT_BRACKET WAKE UNLOCK
+key 58 CAPS_LOCK WAKE UNLOCK
+key 30 A WAKE UNLOCK
+key 31 S WAKE UNLOCK
+key 32 D WAKE UNLOCK
+key 33 F WAKE UNLOCK
+key 34 G WAKE UNLOCK
+key 35 H WAKE UNLOCK
+key 36 J WAKE UNLOCK
+key 37 K WAKE UNLOCK
+key 38 L WAKE UNLOCK
+key 39 SEMICOLON WAKE UNLOCK
+key 40 APOSTROPHE WAKE UNLOCK
+key 43 BACKSLASH WAKE UNLOCK
+key 28 ENTER WAKE UNLOCK
+key 42 SHIFT_LEFT WAKE UNLOCK
+key 86 EUROPE_2 WAKE UNLOCK
+key 44 Z WAKE UNLOCK
+key 45 X WAKE UNLOCK
+key 46 C WAKE UNLOCK
+key 47 V WAKE UNLOCK
+key 48 B WAKE UNLOCK
+key 49 N WAKE UNLOCK
+key 50 M WAKE UNLOCK
+key 51 COMMA WAKE UNLOCK
+key 52 PERIOD WAKE UNLOCK
+key 53 SLASH WAKE UNLOCK
+key 54 SHIFT_RIGHT WAKE UNLOCK
+key 29 CTRL_LEFT WAKE UNLOCK
+key 217 SEARCH WAKE UNLOCK
+key 57 SPACE WAKE UNLOCK
+key 100 ALT_RIGHT WAKE UNLOCK
+key 97 CTRL_RIGHT WAKE UNLOCK
+key 115 VOLUME_UP WAKE UNLOCK
+key 142 SLEEP WAKE UNLOCK
+key 105 DPAD_LEFT WAKE UNLOCK
+key 103 DPAD_UP WAKE UNLOCK
+key 108 DPAD_DOWN WAKE UNLOCK
+key 106 DPAD_RIGHT WAKE UNLOCK
+key 158 BACK WAKE UNLOCK
+key 238 WIRELESS WAKE UNLOCK
+key 237 BLUETOOTH WAKE UNLOCK
+key 60 TOUCHPAD WAKE UNLOCK
+key 224 BRIGHTNESS_DOWN WAKE UNLOCK
+key 225 BRIGHTNESS_UP WAKE UNLOCK
+key 61 BRIGHTNESS_AUTO WAKE UNLOCK
+key 212 CAPTURE WAKE UNLOCK
+key 150 EXPLORER WAKE UNLOCK
+key 62 SETTINGS WAKE UNLOCK
+key 165 MEDIA_PREVIOUS WAKE UNLOCK
+key 164 MEDIA_PLAY_PAUSE WAKE UNLOCK
+key 163 MEDIA_NEXT WAKE UNLOCK
+key 114 VOLUME_DOWN WAKE UNLOCK
+key 113 VOLUME_MUTE WAKE UNLOCK
+key 172 HOME WAKE UNLOCK
+key 139 MENU WAKE UNLOCK
+key 104 PAGE_UP WAKE UNLOCK
+key 109 PAGE_DOWN WAKE UNLOCK
+key 107 MOVE_END WAKE UNLOCK
+key 102 MOVE_HOME WAKE UNLOCK
diff --git a/xt9/keylayout/qwerty-tr_TR.kl b/xt9/keylayout/qwerty-tr_TR.kl
new file mode 100644
index 0000000..74d5299
--- /dev/null
+++ b/xt9/keylayout/qwerty-tr_TR.kl
@@ -0,0 +1,86 @@
+key 41 GRAVE WAKE UNLOCK
+key 2 1 WAKE UNLOCK
+key 3 2 WAKE UNLOCK
+key 4 3 WAKE UNLOCK
+key 5 4 WAKE UNLOCK
+key 6 5 WAKE UNLOCK
+key 7 6 WAKE UNLOCK
+key 8 7 WAKE UNLOCK
+key 9 8 WAKE UNLOCK
+key 10 9 WAKE UNLOCK
+key 11 0 WAKE UNLOCK
+key 12 MINUS WAKE UNLOCK
+key 13 EQUALS WAKE UNLOCK
+key 14 DEL WAKE UNLOCK
+key 15 TAB WAKE UNLOCK
+key 16 Q WAKE UNLOCK
+key 17 W WAKE UNLOCK
+key 18 E WAKE UNLOCK
+key 19 R WAKE UNLOCK
+key 20 T WAKE UNLOCK
+key 21 Y WAKE UNLOCK
+key 22 U WAKE UNLOCK
+key 23 I WAKE UNLOCK
+key 24 O WAKE UNLOCK
+key 25 P WAKE UNLOCK
+key 26 LEFT_BRACKET WAKE UNLOCK
+key 27 RIGHT_BRACKET WAKE UNLOCK
+key 58 CAPS_LOCK WAKE UNLOCK
+key 30 A WAKE UNLOCK
+key 31 S WAKE UNLOCK
+key 32 D WAKE UNLOCK
+key 33 F WAKE UNLOCK
+key 34 G WAKE UNLOCK
+key 35 H WAKE UNLOCK
+key 36 J WAKE UNLOCK
+key 37 K WAKE UNLOCK
+key 38 L WAKE UNLOCK
+key 39 SEMICOLON WAKE UNLOCK
+key 40 APOSTROPHE WAKE UNLOCK
+key 43 BACKSLASH WAKE UNLOCK
+key 28 ENTER WAKE UNLOCK
+key 42 SHIFT_LEFT WAKE UNLOCK
+key 86 EUROPE_2 WAKE UNLOCK
+key 44 Z WAKE UNLOCK
+key 45 X WAKE UNLOCK
+key 46 C WAKE UNLOCK
+key 47 V WAKE UNLOCK
+key 48 B WAKE UNLOCK
+key 49 N WAKE UNLOCK
+key 50 M WAKE UNLOCK
+key 51 COMMA WAKE UNLOCK
+key 52 PERIOD WAKE UNLOCK
+key 53 SLASH WAKE UNLOCK
+key 54 SHIFT_RIGHT WAKE UNLOCK
+key 29 CTRL_LEFT WAKE UNLOCK
+key 217 SEARCH WAKE UNLOCK
+key 57 SPACE WAKE UNLOCK
+key 100 ALT_RIGHT WAKE UNLOCK
+key 97 CTRL_RIGHT WAKE UNLOCK
+key 115 VOLUME_UP WAKE UNLOCK
+key 142 SLEEP WAKE UNLOCK
+key 105 DPAD_LEFT WAKE UNLOCK
+key 103 DPAD_UP WAKE UNLOCK
+key 108 DPAD_DOWN WAKE UNLOCK
+key 106 DPAD_RIGHT WAKE UNLOCK
+key 158 BACK WAKE UNLOCK
+key 238 WIRELESS WAKE UNLOCK
+key 237 BLUETOOTH WAKE UNLOCK
+key 60 TOUCHPAD WAKE UNLOCK
+key 224 BRIGHTNESS_DOWN WAKE UNLOCK
+key 225 BRIGHTNESS_UP WAKE UNLOCK
+key 61 BRIGHTNESS_AUTO WAKE UNLOCK
+key 212 CAPTURE WAKE UNLOCK
+key 150 EXPLORER WAKE UNLOCK
+key 62 SETTINGS WAKE UNLOCK
+key 165 MEDIA_PREVIOUS WAKE UNLOCK
+key 164 MEDIA_PLAY_PAUSE WAKE UNLOCK
+key 163 MEDIA_NEXT WAKE UNLOCK
+key 114 VOLUME_DOWN WAKE UNLOCK
+key 113 VOLUME_MUTE WAKE UNLOCK
+key 172 HOME WAKE UNLOCK
+key 139 MENU WAKE UNLOCK
+key 104 PAGE_UP WAKE UNLOCK
+key 109 PAGE_DOWN WAKE UNLOCK
+key 107 MOVE_END WAKE UNLOCK
+key 102 MOVE_HOME WAKE UNLOCK
diff --git a/xt9/keylayout/qwerty-zh_CN.kl b/xt9/keylayout/qwerty-zh_CN.kl
new file mode 100644
index 0000000..2d7e164
--- /dev/null
+++ b/xt9/keylayout/qwerty-zh_CN.kl
@@ -0,0 +1,86 @@
+key 41 GRAVE WAKE UNLOCK
+key 2 1 WAKE UNLOCK
+key 3 2 WAKE UNLOCK
+key 4 3 WAKE UNLOCK
+key 5 4 WAKE UNLOCK
+key 6 5 WAKE UNLOCK
+key 7 6 WAKE UNLOCK
+key 8 7 WAKE UNLOCK
+key 9 8 WAKE UNLOCK
+key 10 9 WAKE UNLOCK
+key 11 0 WAKE UNLOCK
+key 12 MINUS WAKE UNLOCK
+key 13 EQUALS WAKE UNLOCK
+key 14 DEL WAKE UNLOCK
+key 15 TAB WAKE UNLOCK
+key 16 Q WAKE UNLOCK
+key 17 W WAKE UNLOCK
+key 18 E WAKE UNLOCK
+key 19 R WAKE UNLOCK
+key 20 T WAKE UNLOCK
+key 21 Y WAKE UNLOCK
+key 22 U WAKE UNLOCK
+key 23 I WAKE UNLOCK
+key 24 O WAKE UNLOCK
+key 25 P WAKE UNLOCK
+key 26 LEFT_BRACKET WAKE UNLOCK
+key 27 RIGHT_BRACKET WAKE UNLOCK
+key 43 BACKSLASH WAKE UNLOCK
+key 58 CAPS_LOCK WAKE UNLOCK
+key 30 A WAKE UNLOCK
+key 31 S WAKE UNLOCK
+key 32 D WAKE UNLOCK
+key 33 F WAKE UNLOCK
+key 34 G WAKE UNLOCK
+key 35 H WAKE UNLOCK
+key 36 J WAKE UNLOCK
+key 37 K WAKE UNLOCK
+key 38 L WAKE UNLOCK
+key 39 SEMICOLON WAKE UNLOCK
+key 40 APOSTROPHE WAKE UNLOCK
+key 28 ENTER WAKE UNLOCK
+key 42 SHIFT_LEFT WAKE UNLOCK
+key 44 Z WAKE UNLOCK
+key 45 X WAKE UNLOCK
+key 46 C WAKE UNLOCK
+key 47 V WAKE UNLOCK
+key 48 B WAKE UNLOCK
+key 49 N WAKE UNLOCK
+key 50 M WAKE UNLOCK
+key 51 COMMA WAKE UNLOCK
+key 52 PERIOD WAKE UNLOCK
+key 53 SLASH WAKE UNLOCK
+key 54 SHIFT_RIGHT WAKE UNLOCK
+key 29 CTRL_LEFT WAKE UNLOCK
+key 217 SEARCH WAKE UNLOCK
+key 57 SPACE WAKE UNLOCK
+key 100 ALT_RIGHT WAKE UNLOCK
+key 97 CTRL_RIGHT WAKE UNLOCK
+key 115 VOLUME_UP WAKE UNLOCK
+key 142 SLEEP WAKE UNLOCK
+key 105 DPAD_LEFT WAKE UNLOCK
+key 103 DPAD_UP WAKE UNLOCK
+key 108 DPAD_DOWN WAKE UNLOCK
+key 106 DPAD_RIGHT WAKE UNLOCK
+key 158 BACK WAKE UNLOCK
+key 238 WIRELESS WAKE UNLOCK
+key 237 BLUETOOTH WAKE UNLOCK
+key 60 TOUCHPAD WAKE UNLOCK
+key 224 BRIGHTNESS_DOWN WAKE UNLOCK
+key 225 BRIGHTNESS_UP WAKE UNLOCK
+key 61 BRIGHTNESS_AUTO WAKE UNLOCK
+key 212 CAPTURE WAKE UNLOCK
+key 150 EXPLORER WAKE UNLOCK
+key 62 SETTINGS WAKE UNLOCK
+key 165 MEDIA_PREVIOUS WAKE UNLOCK
+key 164 MEDIA_PLAY_PAUSE WAKE UNLOCK
+key 163 MEDIA_NEXT WAKE UNLOCK
+key 114 VOLUME_DOWN WAKE UNLOCK
+key 113 VOLUME_MUTE WAKE UNLOCK
+key 172 HOME WAKE UNLOCK
+key 139 MENU WAKE UNLOCK
+key 104 PAGE_UP WAKE UNLOCK
+key 109 PAGE_DOWN WAKE UNLOCK
+key 107 MOVE_END WAKE UNLOCK
+key 102 MOVE_HOME WAKE UNLOCK
+key 86 EUROPE_2 WAKE UNLOCK
diff --git a/xt9/keylayout/qwerty-zh_TW.kl b/xt9/keylayout/qwerty-zh_TW.kl
new file mode 100644
index 0000000..2d7e164
--- /dev/null
+++ b/xt9/keylayout/qwerty-zh_TW.kl
@@ -0,0 +1,86 @@
+key 41 GRAVE WAKE UNLOCK
+key 2 1 WAKE UNLOCK
+key 3 2 WAKE UNLOCK
+key 4 3 WAKE UNLOCK
+key 5 4 WAKE UNLOCK
+key 6 5 WAKE UNLOCK
+key 7 6 WAKE UNLOCK
+key 8 7 WAKE UNLOCK
+key 9 8 WAKE UNLOCK
+key 10 9 WAKE UNLOCK
+key 11 0 WAKE UNLOCK
+key 12 MINUS WAKE UNLOCK
+key 13 EQUALS WAKE UNLOCK
+key 14 DEL WAKE UNLOCK
+key 15 TAB WAKE UNLOCK
+key 16 Q WAKE UNLOCK
+key 17 W WAKE UNLOCK
+key 18 E WAKE UNLOCK
+key 19 R WAKE UNLOCK
+key 20 T WAKE UNLOCK
+key 21 Y WAKE UNLOCK
+key 22 U WAKE UNLOCK
+key 23 I WAKE UNLOCK
+key 24 O WAKE UNLOCK
+key 25 P WAKE UNLOCK
+key 26 LEFT_BRACKET WAKE UNLOCK
+key 27 RIGHT_BRACKET WAKE UNLOCK
+key 43 BACKSLASH WAKE UNLOCK
+key 58 CAPS_LOCK WAKE UNLOCK
+key 30 A WAKE UNLOCK
+key 31 S WAKE UNLOCK
+key 32 D WAKE UNLOCK
+key 33 F WAKE UNLOCK
+key 34 G WAKE UNLOCK
+key 35 H WAKE UNLOCK
+key 36 J WAKE UNLOCK
+key 37 K WAKE UNLOCK
+key 38 L WAKE UNLOCK
+key 39 SEMICOLON WAKE UNLOCK
+key 40 APOSTROPHE WAKE UNLOCK
+key 28 ENTER WAKE UNLOCK
+key 42 SHIFT_LEFT WAKE UNLOCK
+key 44 Z WAKE UNLOCK
+key 45 X WAKE UNLOCK
+key 46 C WAKE UNLOCK
+key 47 V WAKE UNLOCK
+key 48 B WAKE UNLOCK
+key 49 N WAKE UNLOCK
+key 50 M WAKE UNLOCK
+key 51 COMMA WAKE UNLOCK
+key 52 PERIOD WAKE UNLOCK
+key 53 SLASH WAKE UNLOCK
+key 54 SHIFT_RIGHT WAKE UNLOCK
+key 29 CTRL_LEFT WAKE UNLOCK
+key 217 SEARCH WAKE UNLOCK
+key 57 SPACE WAKE UNLOCK
+key 100 ALT_RIGHT WAKE UNLOCK
+key 97 CTRL_RIGHT WAKE UNLOCK
+key 115 VOLUME_UP WAKE UNLOCK
+key 142 SLEEP WAKE UNLOCK
+key 105 DPAD_LEFT WAKE UNLOCK
+key 103 DPAD_UP WAKE UNLOCK
+key 108 DPAD_DOWN WAKE UNLOCK
+key 106 DPAD_RIGHT WAKE UNLOCK
+key 158 BACK WAKE UNLOCK
+key 238 WIRELESS WAKE UNLOCK
+key 237 BLUETOOTH WAKE UNLOCK
+key 60 TOUCHPAD WAKE UNLOCK
+key 224 BRIGHTNESS_DOWN WAKE UNLOCK
+key 225 BRIGHTNESS_UP WAKE UNLOCK
+key 61 BRIGHTNESS_AUTO WAKE UNLOCK
+key 212 CAPTURE WAKE UNLOCK
+key 150 EXPLORER WAKE UNLOCK
+key 62 SETTINGS WAKE UNLOCK
+key 165 MEDIA_PREVIOUS WAKE UNLOCK
+key 164 MEDIA_PLAY_PAUSE WAKE UNLOCK
+key 163 MEDIA_NEXT WAKE UNLOCK
+key 114 VOLUME_DOWN WAKE UNLOCK
+key 113 VOLUME_MUTE WAKE UNLOCK
+key 172 HOME WAKE UNLOCK
+key 139 MENU WAKE UNLOCK
+key 104 PAGE_UP WAKE UNLOCK
+key 109 PAGE_DOWN WAKE UNLOCK
+key 107 MOVE_END WAKE UNLOCK
+key 102 MOVE_HOME WAKE UNLOCK
+key 86 EUROPE_2 WAKE UNLOCK