aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/xkeyboard-config/rules
diff options
context:
space:
mode:
Diffstat (limited to 'xorg-server/xkeyboard-config/rules')
-rw-r--r--xorg-server/xkeyboard-config/rules/HDR33
-rw-r--r--xorg-server/xkeyboard-config/rules/Makefile.am236
-rw-r--r--xorg-server/xkeyboard-config/rules/README2
-rw-r--r--xorg-server/xkeyboard-config/rules/base.extras.xml.in86
-rw-r--r--xorg-server/xkeyboard-config/rules/base.hdr.part9
-rw-r--r--xorg-server/xkeyboard-config/rules/base.l1_k.part3
-rw-r--r--xorg-server/xkeyboard-config/rules/base.l1o_s.part2
-rw-r--r--xorg-server/xkeyboard-config/rules/base.l2o_s.part2
-rw-r--r--xorg-server/xkeyboard-config/rules/base.l3o_s.part2
-rw-r--r--xorg-server/xkeyboard-config/rules/base.l4o_s.part2
-rw-r--r--xorg-server/xkeyboard-config/rules/base.l_k.part3
-rw-r--r--xorg-server/xkeyboard-config/rules/base.lists.part107
-rw-r--r--xorg-server/xkeyboard-config/rules/base.lo_s.part2
-rw-r--r--xorg-server/xkeyboard-config/rules/base.m_g.part26
-rw-r--r--xorg-server/xkeyboard-config/rules/base.m_k.part14
-rw-r--r--xorg-server/xkeyboard-config/rules/base.m_s.part51
-rw-r--r--xorg-server/xkeyboard-config/rules/base.m_t.part4
-rw-r--r--xorg-server/xkeyboard-config/rules/base.ml1_c.part1
-rw-r--r--xorg-server/xkeyboard-config/rules/base.ml1_s.part15
-rw-r--r--xorg-server/xkeyboard-config/rules/base.ml2_s.part3
-rw-r--r--xorg-server/xkeyboard-config/rules/base.ml3_s.part3
-rw-r--r--xorg-server/xkeyboard-config/rules/base.ml4_s.part3
-rw-r--r--xorg-server/xkeyboard-config/rules/base.ml_c.part4
-rw-r--r--xorg-server/xkeyboard-config/rules/base.ml_g.part1
-rw-r--r--xorg-server/xkeyboard-config/rules/base.ml_s.part40
-rw-r--r--xorg-server/xkeyboard-config/rules/base.mlv_s.part4
-rw-r--r--xorg-server/xkeyboard-config/rules/base.o_c.part6
-rw-r--r--xorg-server/xkeyboard-config/rules/base.o_k.part0
-rw-r--r--xorg-server/xkeyboard-config/rules/base.o_s.part138
-rw-r--r--xorg-server/xkeyboard-config/rules/base.o_t.part8
-rw-r--r--xorg-server/xkeyboard-config/rules/base.xml.in5515
-rw-r--r--xorg-server/xkeyboard-config/rules/bin/Makefile.am10
-rw-r--r--xorg-server/xkeyboard-config/rules/bin/ml1_s.sh9
-rw-r--r--xorg-server/xkeyboard-config/rules/bin/ml1v1_s.sh7
-rw-r--r--xorg-server/xkeyboard-config/rules/bin/ml1v_s.sh7
-rw-r--r--xorg-server/xkeyboard-config/rules/bin/ml_s.sh9
-rw-r--r--xorg-server/xkeyboard-config/rules/bin/mln_s.sh10
-rw-r--r--xorg-server/xkeyboard-config/rules/bin/mlnvn_s.sh8
-rw-r--r--xorg-server/xkeyboard-config/rules/bin/mlv_s.sh7
-rw-r--r--xorg-server/xkeyboard-config/rules/compat/Makefile.am68
-rw-r--r--xorg-server/xkeyboard-config/rules/compat/base.l1v1_c.part1
-rw-r--r--xorg-server/xkeyboard-config/rules/compat/base.l2v2_c.part1
-rw-r--r--xorg-server/xkeyboard-config/rules/compat/base.l3v3_c.part1
-rw-r--r--xorg-server/xkeyboard-config/rules/compat/base.l4v4_c.part1
-rw-r--r--xorg-server/xkeyboard-config/rules/compat/base.lists.part2
-rw-r--r--xorg-server/xkeyboard-config/rules/compat/base.lv_c.part1
-rw-r--r--xorg-server/xkeyboard-config/rules/compat/base.o_s.part1
-rw-r--r--xorg-server/xkeyboard-config/rules/compat/layoutsMapping.lst27
-rw-r--r--xorg-server/xkeyboard-config/rules/compat/makefile53
-rw-r--r--xorg-server/xkeyboard-config/rules/compat/variantsMapping.lst50
-rw-r--r--xorg-server/xkeyboard-config/rules/evdev.m_k.part3
-rw-r--r--xorg-server/xkeyboard-config/rules/evdev.m_s.part3
-rw-r--r--xorg-server/xkeyboard-config/rules/extras/Makefile.am52
-rw-r--r--xorg-server/xkeyboard-config/rules/extras/layoutsMapping.lst1
-rw-r--r--xorg-server/xkeyboard-config/rules/extras/makefile53
-rw-r--r--xorg-server/xkeyboard-config/rules/extras/variantsMapping.lst5
-rw-r--r--xorg-server/xkeyboard-config/rules/makefile189
-rw-r--r--xorg-server/xkeyboard-config/rules/merge.py13
-rw-r--r--xorg-server/xkeyboard-config/rules/merge.sh25
-rw-r--r--xorg-server/xkeyboard-config/rules/xfree9829
-rw-r--r--xorg-server/xkeyboard-config/rules/xkb.dtd59
-rw-r--r--xorg-server/xkeyboard-config/rules/xml2lst.pl288
62 files changed, 7318 insertions, 0 deletions
diff --git a/xorg-server/xkeyboard-config/rules/HDR b/xorg-server/xkeyboard-config/rules/HDR
new file mode 100644
index 000000000..769b8fc7f
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/HDR
@@ -0,0 +1,33 @@
+! model = keycodes
+! layout[1] = keycodes
+! layout = keycodes
+! option = keycodes
+! model layout = geometry
+! model = geometry
+! model layout variant = symbols
+! model layout = symbols
+! model layout[1] = symbols
+! model layout[1] variant[1] = symbols
+! model layout[2] = symbols
+! model layout[3] = symbols
+! model layout[4] = symbols
+! model layout[2] variant[2] = symbols
+! model layout[3] variant[3] = symbols
+! model layout[4] variant[4] = symbols
+! model = symbols
+! layout variant = compat
+! layout[1] variant[1] = compat
+! layout[2] variant[2] = compat
+! layout[3] variant[3] = compat
+! layout[4] variant[4] = compat
+! model layout = compat
+! model layout[1] = compat
+! model = types
+! layout option = symbols
+! layout[1] option = symbols
+! layout[2] option = symbols
+! layout[3] option = symbols
+! layout[4] option = symbols
+! option = symbols
+! option = compat
+! option = types
diff --git a/xorg-server/xkeyboard-config/rules/Makefile.am b/xorg-server/xkeyboard-config/rules/Makefile.am
new file mode 100644
index 000000000..6ca04e7fa
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/Makefile.am
@@ -0,0 +1,236 @@
+SUBDIRS = bin compat extras
+
+if CREATE_RULES_SYMLINK
+# extra_rules_file = $(xkb_rules_symlink)
+# extra_dir_file = $(extra_rules_file).xml
+# extra_lst_file = $(extra_rules_file).lst
+
+install-data-hook:
+ for file in `echo "$(xkb_rules_symlink)" | sed 's/,/ /'` ; do \
+ extra_rules_file=$$file ; \
+ extra_dir_file=$$extra_rules_file.xml ; \
+ extra_lst_file=$$extra_rules_file.lst ; \
+ ln -sf base $(DESTDIR)$(rulesdir)/$$extra_rules_file ; \
+ ln -sf base.lst $(DESTDIR)$(rulesdir)/$$extra_lst_file ; \
+ ln -sf base.xml $(DESTDIR)$(rulesdir)/$$extra_dir_file ; \
+ done
+
+else
+install-data-hook:
+
+endif
+
+if USE_COMPAT_RULES
+
+base_parts = base.hdr.part base.lists.part \
+compat/base.lists.part \
+HDR base.m_k.part \
+HDR base.l1_k.part \
+HDR base.l_k.part \
+HDR base.o_k.part \
+HDR base.ml_g.part \
+HDR base.m_g.part \
+HDR compat/base.mlv_s.part extras/base.mlv_s.part base.mlv_s.part \
+HDR compat/base.ml_s.part extras/base.ml_s.part base.ml_s.part \
+HDR compat/base.ml1_s.part extras/base.ml1_s.part base.ml1_s.part \
+HDR compat/base.ml1v1_s.part extras/base.ml1v1_s.part \
+HDR compat/base.ml2_s.part extras/base.ml2_s.part base.ml2_s.part \
+HDR compat/base.ml3_s.part extras/base.ml3_s.part base.ml3_s.part \
+HDR compat/base.ml4_s.part extras/base.ml4_s.part base.ml4_s.part \
+HDR compat/base.ml2v2_s.part extras/base.ml2v2_s.part \
+HDR compat/base.ml3v3_s.part extras/base.ml3v3_s.part \
+HDR compat/base.ml4v4_s.part extras/base.ml4v4_s.part \
+HDR base.m_s.part \
+HDR compat/base.lv_c.part \
+HDR compat/base.l1v1_c.part \
+HDR compat/base.l2v2_c.part \
+HDR compat/base.l3v3_c.part \
+HDR compat/base.l4v4_c.part \
+HDR base.ml_c.part \
+HDR base.ml1_c.part \
+HDR base.m_t.part \
+HDR base.lo_s.part \
+HDR base.l1o_s.part \
+HDR base.l2o_s.part \
+HDR base.l3o_s.part \
+HDR base.l4o_s.part \
+HDR compat/base.o_s.part base.o_s.part \
+HDR base.o_c.part \
+HDR base.o_t.part
+
+evdev_parts = base.hdr.part base.lists.part \
+compat/base.lists.part \
+HDR evdev.m_k.part \
+HDR base.l1_k.part \
+HDR base.l_k.part \
+HDR base.o_k.part \
+HDR base.ml_g.part \
+HDR base.m_g.part \
+HDR compat/base.mlv_s.part extras/base.mlv_s.part base.mlv_s.part \
+HDR compat/base.ml_s.part extras/base.ml_s.part base.ml_s.part \
+HDR compat/base.ml1_s.part extras/base.ml1_s.part base.ml1_s.part \
+HDR compat/base.ml1v1_s.part extras/base.ml1v1_s.part \
+HDR compat/base.ml2_s.part extras/base.ml2_s.part base.ml2_s.part \
+HDR compat/base.ml3_s.part extras/base.ml3_s.part base.ml3_s.part \
+HDR compat/base.ml4_s.part extras/base.ml4_s.part base.ml4_s.part \
+HDR compat/base.ml2v2_s.part extras/base.ml2v2_s.part \
+HDR compat/base.ml3v3_s.part extras/base.ml3v3_s.part \
+HDR compat/base.ml4v4_s.part extras/base.ml4v4_s.part \
+HDR evdev.m_s.part \
+HDR compat/base.lv_c.part \
+HDR compat/base.l1v1_c.part \
+HDR compat/base.l2v2_c.part \
+HDR compat/base.l3v3_c.part \
+HDR compat/base.l4v4_c.part \
+HDR base.ml_c.part \
+HDR base.ml1_c.part \
+HDR base.m_t.part \
+HDR base.lo_s.part \
+HDR base.l1o_s.part \
+HDR base.l2o_s.part \
+HDR base.l3o_s.part \
+HDR base.l4o_s.part \
+HDR compat/base.o_s.part base.o_s.part \
+HDR base.o_c.part \
+HDR base.o_t.part
+
+else
+
+base_parts = base.hdr.part base.lists.part \
+HDR base.m_k.part \
+HDR base.l1_k.part \
+HDR base.l_k.part \
+HDR \
+HDR base.ml_g.part \
+HDR base.m_g.part \
+HDR extras/base.mlv_s.part base.mlv_s.part \
+HDR extras/base.ml_s.part base.ml_s.part \
+HDR extras/base.ml1_s.part base.ml1_s.part \
+HDR extras/base.ml1v1_s.part \
+HDR extras/base.ml2_s.part base.ml2_s.part \
+HDR extras/base.ml3_s.part base.ml3_s.part \
+HDR extras/base.ml4_s.part base.ml4_s.part \
+HDR extras/base.ml2v2_s.part \
+HDR extras/base.ml3v3_s.part \
+HDR extras/base.ml4v4_s.part \
+HDR base.m_s.part \
+HDR \
+HDR \
+HDR \
+HDR \
+HDR \
+HDR base.ml_c.part \
+HDR base.ml1_c.part \
+HDR base.m_t.part \
+HDR \
+HDR base.l1o_s.part \
+HDR base.l2o_s.part \
+HDR base.l3o_s.part \
+HDR base.l4o_s.part \
+HDR base.o_s.part \
+HDR base.o_c.part \
+HDR base.o_t.part
+
+evdev_parts = base.hdr.part base.lists.part \
+HDR evdev.m_k.part \
+HDR base.l1_k.part \
+HDR base.l_k.part \
+HDR \
+HDR base.ml_g.part \
+HDR base.m_g.part \
+HDR extras/base.mlv_s.part base.mlv_s.part \
+HDR extras/base.ml_s.part base.ml_s.part \
+HDR extras/base.ml1_s.part base.ml1_s.part \
+HDR extras/base.ml1v1_s.part \
+HDR extras/base.ml2_s.part base.ml2_s.part \
+HDR extras/base.ml3_s.part base.ml3_s.part \
+HDR extras/base.ml4_s.part base.ml4_s.part \
+HDR extras/base.ml2v2_s.part \
+HDR extras/base.ml3v3_s.part \
+HDR extras/base.ml4v4_s.part \
+HDR evdev.m_s.part \
+HDR \
+HDR \
+HDR \
+HDR \
+HDR \
+HDR base.ml_c.part \
+HDR base.ml1_c.part \
+HDR base.m_t.part \
+HDR \
+HDR base.l1o_s.part \
+HDR base.l2o_s.part \
+HDR base.l3o_s.part \
+HDR base.l4o_s.part \
+HDR base.o_s.part \
+HDR base.o_c.part \
+HDR base.o_t.part
+
+endif
+
+all_parts_dist = HDR base.hdr.part \
+base.lists.part \
+base.m_k.part \
+base.l1_k.part \
+base.l_k.part \
+base.o_k.part \
+base.ml_g.part \
+base.m_g.part \
+base.mlv_s.part \
+base.ml_s.part \
+base.ml1_s.part \
+base.ml2_s.part \
+base.ml3_s.part \
+base.ml4_s.part \
+base.m_s.part \
+base.ml_c.part \
+base.ml1_c.part \
+base.m_t.part \
+base.lo_s.part \
+base.l1o_s.part \
+base.l2o_s.part \
+base.l3o_s.part \
+base.l4o_s.part \
+base.o_s.part \
+base.o_c.part \
+base.o_t.part \
+evdev.m_k.part \
+evdev.m_s.part
+
+rules_files = base evdev xfree98
+
+lst_files = base.lst evdev.lst
+
+%.lst: %.xml
+ perl $(srcdir)/xml2lst.pl < $< > $@
+
+base: $(base_parts)
+ HDR="$(srcdir)/HDR" $(srcdir)/merge.sh $@ $(base_parts)
+
+evdev: $(evdev_parts)
+ HDR="$(srcdir)/HDR" $(srcdir)/merge.sh $@ $(evdev_parts)
+
+dist_files = xkb.dtd README
+
+rules_DATA = $(rules_files) $(lst_files) $(dist_files)
+
+xml_in_files = base.xml.in evdev.xml.in base.extras.xml.in evdev.extras.xml.in
+xml_DATA = $(xml_in_files:.xml.in=.xml)
+
+$(srcdir)/evdev.xml.in: base.xml.in
+ cp $< $@
+
+$(srcdir)/evdev.extras.xml.in: base.extras.xml.in
+ cp $< $@
+
+EXTRA_DIST= $(xml_in_files) xfree98 \
+ $(all_parts_dist) \
+ xml2lst.pl merge.sh $(dist_files)
+
+CLEANFILES = base base.xml base.lst evdev evdev.xml evdev.lst base.extras.xml evdev.extras.xml
+MAINTAINERCLEANFILES = $(srcdir)/evdev.xml.in $(srcdir)/evdev.extras.xml.in
+
+rulesdir = $(xkb_base)/rules
+xmldir = $(rulesdir)
+
+@INTLTOOL_XML_NOMERGE_RULE@
diff --git a/xorg-server/xkeyboard-config/rules/README b/xorg-server/xkeyboard-config/rules/README
new file mode 100644
index 000000000..bcf19ce0c
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/README
@@ -0,0 +1,2 @@
+This directory lists sets of rules which can be used to obtain an exact XKB
+configuration.
diff --git a/xorg-server/xkeyboard-config/rules/base.extras.xml.in b/xorg-server/xkeyboard-config/rules/base.extras.xml.in
new file mode 100644
index 000000000..a17205e54
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/base.extras.xml.in
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE xkbConfigRegistry SYSTEM "xkb.dtd">
+<xkbConfigRegistry>
+ <modelList/>
+ <layoutList>
+ <layout>
+ <configItem>
+ <name>apl</name>
+ <_shortDescription>APL</_shortDescription>
+ <_description>APL</_description>
+ <languageList><iso639Id>eng</iso639Id></languageList>
+ </configItem>
+ <variantList/>
+ </layout>
+ <layout>
+ <configItem>
+ <name>ir</name>
+ <_shortDescription>Iran</_shortDescription>
+ <_description>Iran</_description>
+ <languageList><iso639Id>per</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>ave</name>
+ <_description>Avestan</_description>
+ <languageList><iso639Id>ave</iso639Id></languageList>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>us</name>
+ <_shortDescription>USA</_shortDescription>
+ <_description>USA</_description>
+ <languageList><iso639Id>eng</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>intl-unicode</name>
+ <_description>International (AltGr Unicode combining)</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>alt-intl-unicode</name>
+ <_description>International (AltGr Unicode combining, alternative)</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>ats</name>
+ <_description>Atsina</_description>
+ <!-- No ISO code in ISO639-2, only draft ISO693-3 -->
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>crd</name>
+ <_description>Couer D'alene Salish</_description>
+ <languageList><iso639Id>crd</iso639Id></languageList>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>rs</name>
+ <_shortDescription>SRB</_shortDescription>
+ <_description>Serbia</_description>
+ <languageList><iso639Id>srp</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>combiningkeys</name>
+ <_description>Combining accents instead of dead keys</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ </layoutList>
+ <optionList/>
+</xkbConfigRegistry>
diff --git a/xorg-server/xkeyboard-config/rules/base.hdr.part b/xorg-server/xkeyboard-config/rules/base.hdr.part
new file mode 100644
index 000000000..d867c8876
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/base.hdr.part
@@ -0,0 +1,9 @@
+// $Xorg: xfree86,v 1.3 2000/08/17 19:54:42 cpqbld Exp $
+
+//
+// Rules for resolving XKB components for use with XFree86
+// Copyright 1996 by Joseph Moss
+//
+// 2002 Modifier: Ivan Pascal The XFree86 Project
+// $XFree86: xc/programs/xkbcomp/rules/xfree86,v 3.79 2004/01/09 00:16:01 dawes Exp $
+//
diff --git a/xorg-server/xkeyboard-config/rules/base.l1_k.part b/xorg-server/xkeyboard-config/rules/base.l1_k.part
new file mode 100644
index 000000000..91b775396
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/base.l1_k.part
@@ -0,0 +1,3 @@
+ $azerty = +aliases(azerty)
+ $qwertz = +aliases(qwertz)
+ * = +aliases(qwerty)
diff --git a/xorg-server/xkeyboard-config/rules/base.l1o_s.part b/xorg-server/xkeyboard-config/rules/base.l1o_s.part
new file mode 100644
index 000000000..592fab272
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/base.l1o_s.part
@@ -0,0 +1,2 @@
+ $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):1
+ * misc:typo = +typo(base):1
diff --git a/xorg-server/xkeyboard-config/rules/base.l2o_s.part b/xorg-server/xkeyboard-config/rules/base.l2o_s.part
new file mode 100644
index 000000000..aac680e9d
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/base.l2o_s.part
@@ -0,0 +1,2 @@
+ $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):2
+ * misc:typo = +typo(base):2
diff --git a/xorg-server/xkeyboard-config/rules/base.l3o_s.part b/xorg-server/xkeyboard-config/rules/base.l3o_s.part
new file mode 100644
index 000000000..1010e2e03
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/base.l3o_s.part
@@ -0,0 +1,2 @@
+ $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):3
+ * misc:typo = +typo(base):3
diff --git a/xorg-server/xkeyboard-config/rules/base.l4o_s.part b/xorg-server/xkeyboard-config/rules/base.l4o_s.part
new file mode 100644
index 000000000..49650ad9c
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/base.l4o_s.part
@@ -0,0 +1,2 @@
+ $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):4
+ * misc:typo = +typo(base):4
diff --git a/xorg-server/xkeyboard-config/rules/base.l_k.part b/xorg-server/xkeyboard-config/rules/base.l_k.part
new file mode 100644
index 000000000..91b775396
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/base.l_k.part
@@ -0,0 +1,3 @@
+ $azerty = +aliases(azerty)
+ $qwertz = +aliases(qwertz)
+ * = +aliases(qwerty)
diff --git a/xorg-server/xkeyboard-config/rules/base.lists.part b/xorg-server/xkeyboard-config/rules/base.lists.part
new file mode 100644
index 000000000..4cf47331a
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/base.lists.part
@@ -0,0 +1,107 @@
+
+// If you want non-latin layouts implicitly include the en_US layout
+// uncomment lines below
+//! $nonlatin = am ara ben bd bg bt by cs deva ge gh gr guj guru il \
+// in ir iku jp kan kh kr la lao lk mk mm mn mv mal ori pk \
+// ru scc sy syr tel th tj tam ua uz
+
+// PC models
+! $pcmodels = pc101 pc102 pc104 pc105
+
+// Microsoft models (using MS geometry)
+! $msmodels = microsoft microsoft7000 microsoftpro microsoftprousb microsoftprose
+
+// Nokia devices and keyboards
+! $nokiamodels = nokiasu8w nokiarx44 nokiarx51
+
+// PC geometries - they have special geometry but symbols are mostly pc105
+! $pcgeometries = latitude
+
+// TypeMatrix geometries
+! $tmgeometries = tm2020 tm2030PS2 tm2030USB tm2030USB-102 tm2030USB-106
+
+// Layouts that provide further specializations for the OLPC
+! $olpclayouts = af am ara br ca es et fr it kh kz in mn np ru th tr us
+
+! $macbooks = macbook78 macbook79
+! $maclaptop = ibook powerbook macbook78 macbook79
+! $applealu = applealu_ansi applealu_iso applealu_jis
+! $macs = macintosh macintosh_old ibook powerbook macbook78 macbook79
+
+! $macvendorlayouts = ch de dk fi fr gb is it latam nl no pt se us
+
+! $azerty = be fr
+! $qwertz = al cz de hr hu ro si sk
+
+! $inetkbds = acer_c300 acer_ferrari4k acer_laptop \
+ airkey \
+ apple armada azonaRF2300 \
+ benqx brother \
+ btc5113rf btc9000 btc9000a btc9001ah btc5090 btc9019u \
+ cherryblue cherrybluea cherryblueb \
+ cherrycyboard cherrycmexpert \
+ chicony chicony0108 chicony0420 chicony9885 \
+ compalfl90 \
+ compaqeak8 compaqik7 compaqik13 compaqik18 \
+ creativedw7000 \
+ cymotionlinux \
+ dell dellm65 inspiron dellusbmm \
+ emachines ennyah_dkb1008 evdev \
+ genius geniuscomfy2 \
+ gyration honeywell_euroboard \
+ hp250x hp5xx hp500fa hpdv5 \
+ hpi6 hpxe3gc hpxe3gf hpxe4xxx hpxt1000 hpzt11xx \
+ ibm_spacesaver ipaq inspiron intel \
+ kinesis \
+ logiaccess logicda logicink \
+ logiex110 logiclx300 \
+ logiinkse logiinkseusb logiitc logiik \
+ logitech_base itouch logiultrax \
+ logitech_g15 \
+ logidinovo logidinovoedge \
+ microsoft7000 microsoftinet microsoftprousb microsoftprooem microsoftprose \
+ microsoftoffice microsoftmult \
+ mx1998 mx2500 mx2750 \
+ oretec \
+ pc105 \
+ presario propeller \
+ qtronix \
+ rapidaccess rapidaccess2 thinkpad60 \
+ samsung4500 samsung4510 \
+ silvercrest \
+ sk1300 sk2500 sk6200 sk7100 \
+ sven sven303 symplon \
+ tm2030USB toshiba_s3000 trust trustda \
+ unitekkb1925 yahoo
+
+// all layouts with 3rd and 4th groups
+! $threelevellayouts = al az \
+ be br bt \
+ ca ch cs cz \
+ de dk \
+ ee es \
+ fi fo fr \
+ gb gr \
+ hu \
+ ie ir is it \
+ latam \
+ lk lt \
+ mn mt \
+ nl no \
+ pl pt \
+ ro \
+ se sk \
+ tr \
+ us \
+ vn \
+ za
+
+! $evdevkbds = ibm_spacesaver
+
+! $thinkpads = thinkpad thinkpad60 thinkpadz60
+
+! $sun_t6_custom = ara be br ca ch cz de dk \
+ ee es fi fr gb gr it kr \
+ lt lv nl no pl pt ro ru \
+ se sk tr tw ua
+
diff --git a/xorg-server/xkeyboard-config/rules/base.lo_s.part b/xorg-server/xkeyboard-config/rules/base.lo_s.part
new file mode 100644
index 000000000..dee7b6daa
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/base.lo_s.part
@@ -0,0 +1,2 @@
+ $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle)
+ * misc:typo = +typo(base)
diff --git a/xorg-server/xkeyboard-config/rules/base.m_g.part b/xorg-server/xkeyboard-config/rules/base.m_g.part
new file mode 100644
index 000000000..eab19eb9d
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/base.m_g.part
@@ -0,0 +1,26 @@
+ microsoftelite = microsoft(elite)
+ $msmodels = microsoft(natural)
+ dell101 = dell(dell101)
+ dellm65 = dell(dellm65)
+ latitude = dell(latitude)
+ flexpro = keytronic(FlexPro)
+ hp6000 = hp(omnibook)
+ hpmini110 = hp(mini110)
+ hpdv5 = hp(dv5)
+ omnikey101 = northgate(omnikey101)
+ $pcmodels = pc(%m)
+ $pcgeometries = pc(%m)
+ everex = everex(STEPnote)
+ thinkpad = thinkpad(intl)
+ thinkpad60 = thinkpad(60)
+ thinkpadz60 = thinkpad(60)
+ $tmgeometries = typematrix(%m)
+ winbook = winbook(XP5)
+ pc98 = nec(pc98)
+ $applealu = macintosh(%m)
+ $macbooks = macintosh(%m)
+ $macs = macintosh(macintosh)
+ hhk = hhk(basic)
+ kinesis = kinesis(model100)
+ $nokiamodels = nokia(%m)
+ * = pc(pc104)
diff --git a/xorg-server/xkeyboard-config/rules/base.m_k.part b/xorg-server/xkeyboard-config/rules/base.m_k.part
new file mode 100644
index 000000000..2c621208f
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/base.m_k.part
@@ -0,0 +1,14 @@
+ amiga = amiga(de)
+ ataritt = ataritt(de)
+ empty = empty
+ sun4 = sun(type4_euro)
+ sun5 = sun(type5_euro)
+ sun6 = sun(type6_usb)
+ sun6euro = sun(type6tuv_usb)
+ pc98 = xfree98(pc98)
+ $applealu = macintosh(alukbd)
+ macintosh_hhk = macintosh(hhk)
+ macintosh_old = macintosh(old)
+ $macs = macintosh
+ thinkpadz60 = xfree86(thinkpadz60)
+ * = xfree86
diff --git a/xorg-server/xkeyboard-config/rules/base.m_s.part b/xorg-server/xkeyboard-config/rules/base.m_s.part
new file mode 100644
index 000000000..4bbbcce31
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/base.m_s.part
@@ -0,0 +1,51 @@
+ a4techKB21 = +inet(media_nav_common)
+ a4techKBS8 = +inet(media_nav_acpi_common)
+ a4_rfkb23 = +inet(media_nav_acpi_common)
+ asus_laptop = +inet(media_common)
+ acer_tm_800 = +inet(acer_laptop)
+ benqx730 = +inet(benqx)
+ benqx800 = +inet(benqx)
+ btc5126t = +inet(nav_acpi_common)
+ btc9116u = +inet(btc9019u)
+ btc6301urf = +inet(media_nav_acpi_common)
+ dellsk8125 = +inet(dell)
+ dellsk8135 = +inet(dell)
+ cherrybunlim = +inet(nav_common)
+ dexxa = +inet(media_nav_common)
+ dtk2000 = +inet(media_nav_acpi_common)
+ fscaa1667g = +inet(media_nav_common)
+ geniuskb19e = +inet(media_nav_acpi_common)
+ geniuscomfy = +inet(media_nav_acpi_common)
+ geniuskkb2050hs = +inet(dellusbmm)
+ hpnx9020 = +inet(hpi6)
+ latitude = +inet(media_common)
+ logicd = +inet(logitech_base)
+ logicd_it = +inet(logitech_base)
+ logicd_nav = +inet(logitech_base)
+ logicd_opt = +inet(logitech_base)
+ logiultrax = +inet(logitech_base)
+ logiclx300 = +inet(logiex110)
+ logii350 = +inet(logiex110)
+ logimel = +inet(logiex110)
+ logicdit = +inet(logicd)
+ logicdo = +inet(logicd)
+ logicdp = +inet(logicd)
+ logicdpa = +inet(logicda)
+ logiciink = +inet(logicink)
+ ltcd = +inet(logicda)
+ microsoftccurve2k = +inet(microsoftprooem)
+ microsoftpro = +inet(media_nav_acpi_common)
+ precision_m = +inet(media_nav_common)
+ scorpius = +inet(media_nav_acpi_common)
+ sp_inet = +inet(media_nav_acpi_common)
+ targa_v811 = +inet(media_nav_acpi_common)
+ thinkpad = +inet(media_nav_common)
+ thinkpadz60 = +inet(thinkpad60)
+ tm2030USB-102 = +inet(media_nav_acpi_common)
+ tm2030USB-106 = +inet(media_nav_acpi_common)
+ trust_slimline = +inet(media_nav_acpi_common)
+ vsonku306 = +inet(microsoftprooem)
+ $inetkbds = +inet(%m)
+ $maclaptop = +inet(apple)+level3(enter_switch)
+ $applealu = +inet(apple)
+ $macs = +inet(apple)
diff --git a/xorg-server/xkeyboard-config/rules/base.m_t.part b/xorg-server/xkeyboard-config/rules/base.m_t.part
new file mode 100644
index 000000000..7ccbf47b9
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/base.m_t.part
@@ -0,0 +1,4 @@
+ $macs = complete+numpad(mac)
+ $applealu = complete+numpad(mac)
+ $nokiamodels = complete+nokia
+ * = complete
diff --git a/xorg-server/xkeyboard-config/rules/base.ml1_c.part b/xorg-server/xkeyboard-config/rules/base.ml1_c.part
new file mode 100644
index 000000000..f59e596d5
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/base.ml1_c.part
@@ -0,0 +1 @@
+ * * = complete
diff --git a/xorg-server/xkeyboard-config/rules/base.ml1_s.part b/xorg-server/xkeyboard-config/rules/base.ml1_s.part
new file mode 100644
index 000000000..efe8ae124
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/base.ml1_s.part
@@ -0,0 +1,15 @@
+ ataritt * = xfree68_vndr/ataritt(us)+%l[1]%(v[1])
+ amiga * = xfree68_vndr/amiga(usa1)+%l[1]%(v[1])
+ sun4 * = latin+sun_vndr/us(type4)+%l[1]%(v[1])
+ sun5 * = latin+sun_vndr/us(type5)+%l[1]%(v[1])
+ macintosh_old us = macintosh_vndr/us(oldmac)
+ macintosh_old $macvendorlayouts = macintosh_vndr/us(oldmac)+macintosh_vndr/%l[1]%(v[1])
+ macintosh_old * = macintosh_vndr/us(oldmac)+%l[1]%(v[1])
+ applealu_jis us = macintosh_vndr/apple(alukbd)+macintosh_vndr/jp(usmac)
+ $applealu $macvendorlayouts = macintosh_vndr/apple(alukbd)+macintosh_vndr/%l[1]%(v[1])
+ $applealu * = macintosh_vndr/apple(alukbd)+%l[1]%(v[1])
+ $macs $macvendorlayouts = pc+macintosh_vndr/%l[1]%(v[1])
+ nokiarx51 cz(qwerty) = nokia_vndr/rx-51(common)+nokia_vndr/rx-51(cz_qwerty)
+ nokiarx51 * = nokia_vndr/rx-51(common)+nokia_vndr/rx-51(%l[1]%_v[1])
+ $thinkpads br = pc+%l[1](thinkpad)
+ * * = pc+%l[1]%(v[1])
diff --git a/xorg-server/xkeyboard-config/rules/base.ml2_s.part b/xorg-server/xkeyboard-config/rules/base.ml2_s.part
new file mode 100644
index 000000000..3c80545d5
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/base.ml2_s.part
@@ -0,0 +1,3 @@
+ nokiarx51 cz(qwerty) = +nokia_vndr/rx-51(cz_qwerty):2
+ nokiarx51 * = +nokia_vndr/rx-51(%l[2]%_v[2]):2
+ * * = +%l[2]%(v[2]):2
diff --git a/xorg-server/xkeyboard-config/rules/base.ml3_s.part b/xorg-server/xkeyboard-config/rules/base.ml3_s.part
new file mode 100644
index 000000000..b7e669f87
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/base.ml3_s.part
@@ -0,0 +1,3 @@
+ nokiarx51 cz(qwerty) = +nokia_vndr/rx-51(cz_qwerty):3
+ nokiarx51 * = +nokia_vndr/rx-51(%l[3]%_v[3]):3
+ * * = +%l[3]%(v[3]):3
diff --git a/xorg-server/xkeyboard-config/rules/base.ml4_s.part b/xorg-server/xkeyboard-config/rules/base.ml4_s.part
new file mode 100644
index 000000000..d8830ae34
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/base.ml4_s.part
@@ -0,0 +1,3 @@
+ nokiarx51 cz(qwerty) = +nokia_vndr/rx-51(cz_qwerty):4
+ nokiarx51 * = +nokia_vndr/rx-51(%l[4]%_v[4]):4
+ * * = +%l[4]%(v[4]):4
diff --git a/xorg-server/xkeyboard-config/rules/base.ml_c.part b/xorg-server/xkeyboard-config/rules/base.ml_c.part
new file mode 100644
index 000000000..ec8f02291
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/base.ml_c.part
@@ -0,0 +1,4 @@
+ pc98 nec_vndr/jp = pc98(basic)
+ * jp = complete+japan
+ olpc * = olpc
+ * * = complete
diff --git a/xorg-server/xkeyboard-config/rules/base.ml_g.part b/xorg-server/xkeyboard-config/rules/base.ml_g.part
new file mode 100644
index 000000000..e66bb0b50
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/base.ml_g.part
@@ -0,0 +1 @@
+ thinkpad us = thinkpad(us)
diff --git a/xorg-server/xkeyboard-config/rules/base.ml_s.part b/xorg-server/xkeyboard-config/rules/base.ml_s.part
new file mode 100644
index 000000000..d59c54f26
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/base.ml_s.part
@@ -0,0 +1,40 @@
+ ataritt $nonlatin = xfree68_vndr/ataritt(us)+%l%(v):2
+ ataritt * = xfree68_vndr/ataritt(us)+%l%(v)
+ amiga $nonlatin = xfree68_vndr/amiga(usa1)+%l%(v):2
+ amiga * = xfree68_vndr/amiga(usa1)+%l%(v)
+ classmate us = pc+%l(classmate)
+ empty * = empty(basic)
+ * empty = empty(basic)
+ sun4 $nonlatin = latin+sun_vndr/us(type4)+%l%(v):2
+ sun4 * = latin+sun_vndr/us(type4)+%l%(v)
+ sun5 $nonlatin = latin+sun_vndr/us(type5)+%l%(v):2
+ sun5 * = latin+sun_vndr/us(type5)+%l%(v)
+ sun6 us = pc+sun_vndr/us(type6)
+ sun6 en_US = pc+sun_vndr/us(type6)+iso9995-3(basic)
+ sun6 $sun_t6_custom = pc+sun_vndr/us(type6)+sun_vndr/%l%(v)
+ sun6 * = pc+sun_vndr/us(type6)+%l%(v)
+ sun6euro us = pc+sun_vndr/us(type6)
+ sun6euro en_US = pc+sun_vndr/us(type6)+iso9995-3(basic)
+ sun6euro $sun_t6_custom = pc+sun_vndr/us(type6)+sun_vndr/%l%(v)
+ sun6euro * = pc+sun_vndr/us(type6)+%l%(v)
+ pc98 nec_vndr/jp = nec_vndr/jp(pc98)
+ macintosh_old us = macintosh_vndr/us(oldmac)
+ macintosh_old en_US = macintosh_vndr/us(oldmac)
+ macintosh_old $macvendorlayouts = macintosh_vndr/us(oldmac)+macintosh_vndr/%l%(v)
+ macintosh_old $nonlatin = macintosh_vndr/us(oldmac)+%l%(v):2
+ macintosh_old * = macintosh_vndr/us(oldmac)+%l%(v)
+ applealu_jis jp = macintosh_vndr/apple(alukbd)+macintosh_vndr/jp(usmac)+macintosh_vndr/jp(mac):2
+ applealu_jis * = macintosh_vndr/apple(alukbd)+%l%(v)+macintosh_vndr/jp(mac):2
+ $applealu $macvendorlayouts = macintosh_vndr/apple(alukbd)+macintosh_vndr/%l%(v)
+ $applealu * = macintosh_vndr/apple(alukbd)+%l%(v)
+ $macs en_US = pc+macintosh_vndr/us(extended)
+ $macs $macvendorlayouts = pc+macintosh_vndr/%l%(v)
+ nokiarx44 * = nokia_vndr/rx-44(%l)
+ nokiarx51 cz(qwerty) = nokia_vndr/rx-51(common)+nokia_vndr/rx-51(cz_qwerty)
+ nokiarx51 * = nokia_vndr/rx-51(common)+nokia_vndr/rx-51(%l%_v)
+ nokiasu8w * = nokia_vndr/su-8w(%l)
+ olpc $olpclayouts = olpc+%l%(m)
+ olpc * = olpc+%l%(v)
+ $thinkpads br = pc+br(thinkpad)
+ * $nonlatin = pc+us+%l%(v):2
+ * * = pc+%l%(v)
diff --git a/xorg-server/xkeyboard-config/rules/base.mlv_s.part b/xorg-server/xkeyboard-config/rules/base.mlv_s.part
new file mode 100644
index 000000000..1eecc55c0
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/base.mlv_s.part
@@ -0,0 +1,4 @@
+ classmate us intl = pc+us(classmate-intl)
+ classmate us alt-intl = pc+us(classmate-alt-intl)
+ classmate us altgr-intl = pc+us(classmate-altgr-intl)
+ nokiarx51 cz qwerty = nokia_vndr/rx-51(cz_qwerty)
diff --git a/xorg-server/xkeyboard-config/rules/base.o_c.part b/xorg-server/xkeyboard-config/rules/base.o_c.part
new file mode 100644
index 000000000..352f8b363
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/base.o_c.part
@@ -0,0 +1,6 @@
+ grp_led:num = +lednum(group_lock)
+ grp_led:caps = +ledcaps(group_lock)
+ grp_led:scroll = +ledscroll(group_lock)
+ japan:kana_lock = +japan(kana_lock)
+ caps:shiftlock = +ledcaps(shift_lock)
+
diff --git a/xorg-server/xkeyboard-config/rules/base.o_k.part b/xorg-server/xkeyboard-config/rules/base.o_k.part
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/base.o_k.part
diff --git a/xorg-server/xkeyboard-config/rules/base.o_s.part b/xorg-server/xkeyboard-config/rules/base.o_s.part
new file mode 100644
index 000000000..f8f5e5421
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/base.o_s.part
@@ -0,0 +1,138 @@
+ altwin:menu = +altwin(menu)
+ altwin:meta_alt = +altwin(meta_alt)
+ altwin:ctrl_win = +altwin(ctrl_win)
+ altwin:ctrl_alt_win = +altwin(ctrl_alt_win)
+ altwin:meta_win = +altwin(meta_win)
+ altwin:left_meta_win = +altwin(left_meta_win)
+ altwin:hyper_win = +altwin(hyper_win)
+ altwin:alt_super_win = +altwin(alt_super_win)
+ altwin:swap_lalt_lwin = +altwin(swap_lalt_lwin)
+ grp:switch = +group(switch)
+ grp:lswitch = +group(lswitch)
+ grp:win_switch = +group(win_switch)
+ grp:lwin_switch = +group(lwin_switch)
+ grp:rwin_switch = +group(rwin_switch)
+ grp:toggle = +group(toggle)
+ grp:shifts_toggle = +group(shifts_toggle)
+ grp:ctrls_toggle = +group(ctrls_toggle)
+ grp:alts_toggle = +group(alts_toggle)
+ grp:ctrl_shift_toggle = +group(ctrl_shift_toggle)
+ grp:lctrl_lshift_toggle = +group(lctrl_lshift_toggle)
+ grp:rctrl_rshift_toggle = +group(rctrl_rshift_toggle)
+ grp:caps_toggle = +capslock(grouplock)
+ grp:caps_switch = +capslock(groupshift)
+ grp:shift_caps_toggle = +group(shift_caps_toggle)
+ grp:shift_caps_switch = +group(shift_caps_switch)
+ grp:win_menu_switch = +group(win_menu_switch)
+ grp:alt_caps_toggle = +group(alt_caps_toggle)
+ grp:ctrl_alt_toggle = +group(ctrl_alt_toggle)
+ grp:alt_shift_toggle = +group(alt_shift_toggle)
+ grp:alt_space_toggle = +group(alt_space_toggle)
+ grp:menu_toggle = +group(menu_toggle)
+ grp:lwin_toggle = +group(lwin_toggle)
+ grp:rwin_toggle = +group(rwin_toggle)
+ grp:lshift_toggle = +group(lshift_toggle)
+ grp:rshift_toggle = +group(rshift_toggle)
+ grp:rctrl_switch = +group(rctrl_switch)
+ grp:lctrl_toggle = +group(lctrl_toggle)
+ grp:rctrl_toggle = +group(rctrl_toggle)
+ grp:lalt_toggle = +group(lalt_toggle)
+ grp:sclk_toggle = +group(sclk_toggle)
+ grp:lctrl_rctrl_switch = +group(lctrl_rctrl_switch)
+ lv3:switch = +level3(switch)
+ lv3:ralt_switch = +level3(ralt_switch)
+ lv3:ralt_switch_multikey = +level3(ralt_switch_multikey)
+ lv3:ralt_alt = +level3(ralt_alt)
+ lv3:lalt_switch = +level3(lalt_switch)
+ lv3:alt_switch = +level3(alt_switch)
+ lv3:menu_switch = +level3(menu_switch)
+ lv3:win_switch = +level3(win_switch)
+ lv3:lwin_switch = +level3(lwin_switch)
+ lv3:rwin_switch = +level3(rwin_switch)
+ lv3:enter_switch = +level3(enter_switch)
+ caps:capslock = +capslock(capslock)
+ caps:numlock = +capslock(numlock)
+ caps:shiftlock = +capslock(shiftlock)
+ caps:swapescape = +capslock(swapescape)
+ caps:escape = +capslock(escape)
+ caps:backspace = +capslock(backspace)
+ caps:super = +capslock(super)
+ caps:hyper = +capslock(hyper)
+ caps:none = +capslock(none)
+ ctrl:nocaps = +ctrl(nocaps)
+ ctrl:swapcaps = +ctrl(swapcaps)
+ ctrl:ctrl_ac = +ctrl(ctrl_ac)
+ ctrl:ctrl_aa = +ctrl(ctrl_aa)
+ ctrl:ctrl_ra = +ctrl(ctrl_ra)
+ ctrl:ctrl_menu = +ctrl(ctrl_menu)
+ compose:ralt = +compose(ralt)
+ compose:lwin = +compose(lwin)
+ compose:rwin = +compose(rwin)
+ compose:menu = +compose(menu)
+ compose:lctrl = +compose(lctrl)
+ compose:rctrl = +compose(rctrl)
+ compose:caps = +compose(caps)
+ compose:102 = +compose(102)
+ compose:paus = +compose(paus)
+ compose:prsc = +compose(prsc)
+ compose:sclk = +compose(sclk)
+ srvrkeys:none = +srvr_ctrl(no_srvr_keys)
+ eurosign:e = +eurosign(e)
+ eurosign:2 = +eurosign(2)
+ eurosign:4 = +eurosign(4)
+ eurosign:5 = +eurosign(5)
+ keypad:oss = +keypad(oss)
+ keypad:legacy = +keypad(legacy)
+ keypad:legacy_wang = +keypad(legacy_wang)
+ keypad:oss_wang = +keypad(oss_wang)
+ keypad:future = +keypad(future)
+ keypad:future_wang = +keypad(future_wang)
+ keypad:hex = +keypad(ops)+keypad(hex)
+ keypad:atm = +keypad(ops)+keypad(hex)+keypad(atm)
+ nbsp:none = +nbsp(none)
+ nbsp:level2 = +nbsp(level2)
+ nbsp:level3 = +nbsp(level3)
+ nbsp:level3s = +nbsp(level3s)
+ nbsp:level3n = +nbsp(level3n)
+ nbsp:level4 = +nbsp(level4)
+ nbsp:level4n = +nbsp(level4n)
+ nbsp:level4nl = +nbsp(level4nl)
+ japan:nicola_f_bs = +jp(nicola_f_bs)
+ kpdl:dot = +kpdl(dot)
+ kpdl:comma = +kpdl(comma)
+ kpdl:dotoss = +kpdl(dotoss)
+ kpdl:dotoss_latin9 = +kpdl(dotoss_latin9)
+ kpdl:commaoss = +kpdl(commaoss)
+ kpdl:momayyezoss = +kpdl(momayyezoss)
+ kpdl:kposs = +kpdl(kposs)
+ kpdl:semi = +kpdl(semi)
+ shift:breaks_caps = +shift(breaks_caps)
+ esperanto:qwerty = +epo(qwerty)
+ esperanto:dvorak = +epo(dvorak)
+ terminate:ctrl_alt_bksp = +terminate(ctrl_alt_bksp)
+ apple:alupckeys = +macintosh_vndr/apple(alupckeys)
+ shift:both_capslock = +shift(both_capslock)
+ shift:lshift_both_capslock = +shift(lshift_both_capslock)
+ shift:rshift_both_capslock = +shift(rshift_both_capslock)
+ shift:both_capslock_cancel = +shift(both_capslock_cancel)
+ shift:lshift_both_capslock_cancel = +shift(lshift_both_capslock_cancel)
+ shift:rshift_both_capslock_cancel = +shift(rshift_both_capslock_cancel)
+ shift:both_shiftlock = +shift(both_shiftlock)
+ shift:lshift_both_shiftlock = +shift(lshift_both_shiftlock)
+ shift:rshift_both_shiftlock = +shift(rshift_both_shiftlock)
+ lv3:caps_switch = +level3(caps_switch)
+ lv3:bksl_switch = +level3(bksl_switch)
+ lv3:lsgt_switch = +level3(lsgt_switch)
+ lv3:caps_switch_latch = +level3(caps_switch_latch)
+ lv3:bksl_switch_latch = +level3(bksl_switch_latch)
+ lv3:lsgt_switch_latch = +level3(lsgt_switch_latch)
+ lv5:lsgt_switch_lock = +level5(lsgt_switch_lock)
+ lv5:ralt_switch_lock = +level5(ralt_switch_lock)
+ lv5:lwin_switch_lock = +level5(lwin_switch_lock)
+ lv5:rwin_switch_lock = +level5(rwin_switch_lock)
+ lv5:lsgt_switch_lock_cancel = +level5(lsgt_switch_lock_cancel)
+ lv5:ralt_switch_lock_cancel = +level5(ralt_switch_lock_cancel)
+ lv5:lwin_switch_lock_cancel = +level5(lwin_switch_lock_cancel)
+ lv5:rwin_switch_lock_cancel = +level5(rwin_switch_lock_cancel)
+
+
diff --git a/xorg-server/xkeyboard-config/rules/base.o_t.part b/xorg-server/xkeyboard-config/rules/base.o_t.part
new file mode 100644
index 000000000..e0d4b15ed
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/base.o_t.part
@@ -0,0 +1,8 @@
+ caps:internal = +caps(internal)
+ caps:internal_nocancel = +caps(internal_nocancel)
+ caps:shift = +caps(shift)
+ caps:shift_nocancel = +caps(shift_nocancel)
+ numpad:pc = +numpad(pc)
+ numpad:mac = +numpad(mac)
+ numpad:microsoft = +numpad(microsoft)
+ numpad:shift3 = +numpad(shift3)
diff --git a/xorg-server/xkeyboard-config/rules/base.xml.in b/xorg-server/xkeyboard-config/rules/base.xml.in
new file mode 100644
index 000000000..84fd69339
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/base.xml.in
@@ -0,0 +1,5515 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE xkbConfigRegistry SYSTEM "xkb.dtd">
+<xkbConfigRegistry>
+ <modelList>
+ <model>
+ <configItem>
+ <name>pc101</name>
+ <_description>Generic 101-key PC</_description>
+ <vendor>Generic</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>pc102</name>
+ <_description>Generic 102-key (Intl) PC</_description>
+ <vendor>Generic</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>pc104</name>
+ <_description>Generic 104-key PC</_description>
+ <vendor>Generic</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>pc105</name>
+ <_description>Generic 105-key (Intl) PC</_description>
+ <vendor>Generic</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>dell101</name>
+ <_description>Dell 101-key PC</_description>
+ <vendor>Dell</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>latitude</name>
+ <_description>Dell Latitude series laptop</_description>
+ <vendor>Dell</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>dellm65</name>
+ <_description>Dell Precision M65</_description>
+ <vendor>Dell</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>everex</name>
+ <_description>Everex STEPnote</_description>
+ <vendor>Everex</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>flexpro</name>
+ <_description>Keytronic FlexPro</_description>
+ <vendor>Keytronic</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>microsoft</name>
+ <_description>Microsoft Natural</_description>
+ <vendor>Microsoft Inc.</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>omnikey101</name>
+ <_description>Northgate OmniKey 101</_description>
+ <vendor>Northgate</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>winbook</name>
+ <_description>Winbook Model XP5</_description>
+ <vendor>Generic</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>pc98</name>
+ <_description>PC-98xx Series</_description>
+ <vendor>Generic</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>a4techKB21</name>
+ <_description>A4Tech KB-21</_description>
+ <vendor>A4Tech</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>a4techKBS8</name>
+ <_description>A4Tech KBS-8</_description>
+ <vendor>A4Tech</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>a4_rfkb23</name>
+ <_description>A4Tech Wireless Desktop RFKB-23</_description>
+ <vendor>A4Tech</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>airkey</name>
+ <_description>Acer AirKey V</_description>
+ <vendor>Acer</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>azonaRF2300</name>
+ <_description>Azona RF2300 wireless Internet Keyboard</_description>
+ <vendor>Azona</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>scorpius</name>
+ <_description>Advance Scorpius KI</_description>
+ <vendor>Scorpius</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>brother</name>
+ <_description>Brother Internet Keyboard</_description>
+ <vendor>Brother</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>btc5113rf</name>
+ <_description>BTC 5113RF Multimedia</_description>
+ <vendor>BTC</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>btc5126t</name>
+ <_description>BTC 5126T</_description>
+ <vendor>BTC</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>btc6301urf</name>
+ <_description>BTC 6301URF</_description>
+ <vendor>BTC</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>btc9000</name>
+ <_description>BTC 9000</_description>
+ <vendor>BTC</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>btc9000a</name>
+ <_description>BTC 9000A</_description>
+ <vendor>BTC</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>btc9001ah</name>
+ <_description>BTC 9001AH</_description>
+ <vendor>BTC</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>btc5090</name>
+ <_description>BTC 5090</_description>
+ <vendor>BTC</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>btc9019u</name>
+ <_description>BTC 9019U</_description>
+ <vendor>BTC</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>btc9116u</name>
+ <_description>BTC 9116U Mini Wireless Internet and Gaming</_description>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>cherryblue</name>
+ <_description>Cherry Blue Line CyBo@rd</_description>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>cherryblueb</name>
+ <_description>Cherry CyMotion Master XPress</_description>
+ <vendor>Cherry</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>cherrybluea</name>
+ <_description>Cherry Blue Line CyBo@rd (alternate option)</_description>
+ <vendor>Cherry</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>cherrycyboard</name>
+ <_description>Cherry CyBo@rd USB-Hub</_description>
+ <vendor>Cherry</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>cherrycmexpert</name>
+ <_description>Cherry CyMotion Expert</_description>
+ <vendor>Cherry</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>cherrybunlim</name>
+ <_description>Cherry B.UNLIMITED</_description>
+ <vendor>Cherry</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>chicony</name>
+ <_description>Chicony Internet Keyboard</_description>
+ <vendor>Chicony</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>chicony0108</name>
+ <_description>Chicony KU-0108</_description>
+ <vendor>Chicony</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>chicony0420</name>
+ <_description>Chicony KU-0420</_description>
+ <vendor>Chicony</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>chicony9885</name>
+ <_description>Chicony KB-9885</_description>
+ <vendor>Chicony</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>compaqeak8</name>
+ <_description>Compaq Easy Access Keyboard</_description>
+ <vendor>Compaq</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>compaqik7</name>
+ <_description>Compaq Internet Keyboard (7 keys)</_description>
+ <vendor>Compaq</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>compaqik13</name>
+ <_description>Compaq Internet Keyboard (13 keys)</_description>
+ <vendor>Compaq</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>compaqik18</name>
+ <_description>Compaq Internet Keyboard (18 keys)</_description>
+ <vendor>Compaq</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>cymotionlinux</name>
+ <_description>Cherry CyMotion Master Linux</_description>
+ <vendor>Cherry</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>armada</name>
+ <_description>Laptop/notebook Compaq (eg. Armada) Laptop Keyboard</_description>
+ <vendor>Compaq</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>presario</name>
+ <_description>Laptop/notebook Compaq (eg. Presario) Internet Keyboard</_description>
+ <vendor>Compaq</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>ipaq</name>
+ <_description>Compaq iPaq Keyboard</_description>
+ <vendor>Compaq</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>dell</name>
+ <_description>Dell</_description>
+ <vendor>Dell</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>dellsk8125</name>
+ <_description>Dell SK-8125</_description>
+ <vendor>Dell</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>dellsk8135</name>
+ <_description>Dell SK-8135</_description>
+ <vendor>Dell</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>dellusbmm</name>
+ <_description>Dell USB Multimedia Keyboard</_description>
+ <vendor>Dell</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>inspiron</name>
+ <_description>Dell Laptop/notebook Inspiron 6xxx/8xxx</_description>
+ <vendor>Dell</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>precision_m</name>
+ <_description>Dell Laptop/notebook Precision M series</_description>
+ <vendor>Dell</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>dexxa</name>
+ <_description>Dexxa Wireless Desktop Keyboard</_description>
+ <vendor>Dexxa</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>diamond</name>
+ <_description>Diamond 9801 / 9802 series</_description>
+ <vendor>Diamond</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>dtk2000</name>
+ <_description>DTK2000</_description>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>ennyah_dkb1008</name>
+ <_description>Ennyah DKB-1008</_description>
+ <vendor>Ennyah</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>fscaa1667g</name>
+ <_description>Fujitsu-Siemens Computers AMILO laptop</_description>
+ <vendor>Fujitsu-Siemens</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>genius</name>
+ <_description>Genius Comfy KB-16M / Genius MM Keyboard KWD-910</_description>
+ <vendor>Genius</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>geniuscomfy</name>
+ <_description>Genius Comfy KB-12e</_description>
+ <vendor>Genius</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>geniuscomfy2</name>
+ <_description>Genius Comfy KB-21e-Scroll</_description>
+ <vendor>Genius</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>geniuskb19e</name>
+ <_description>Genius KB-19e NB</_description>
+ <vendor>Genius</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>geniuskkb2050hs</name>
+ <_description>Genius KKB-2050HS</_description>
+ <vendor>Genius</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>gyration</name>
+ <_description>Gyration</_description>
+ <vendor>Gyration</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>kinesis</name>
+ <_description>Kinesis</_description>
+ <vendor>Kinesis</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>logitech_base</name>
+ <_description>Logitech Generic Keyboard</_description>
+ <vendor>Logitech</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>logitech_g15</name>
+ <_description>Logitech G15 extra keys via G15daemon</_description>
+ <vendor>Logitech</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>hpi6</name>
+ <_description>Hewlett-Packard Internet Keyboard</_description>
+ <vendor>Hewlett-Packard</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>hp250x</name>
+ <_description>Hewlett-Packard SK-250x Multimedia Keyboard</_description>
+ <vendor>Hewlett-Packard</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>hpxe3gc</name>
+ <_description>Hewlett-Packard Omnibook XE3 GC</_description>
+ <vendor>Hewlett-Packard</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>hpxe3gf</name>
+ <_description>Hewlett-Packard Omnibook XE3 GF</_description>
+ <vendor>Hewlett-Packard</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>hpxt1000</name>
+ <_description>Hewlett-Packard Omnibook XT1000</_description>
+ <vendor>Hewlett-Packard</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>hpdv5</name>
+ <_description>Hewlett-Packard Pavilion dv5</_description>
+ <vendor>Hewlett-Packard</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>hpzt11xx</name>
+ <_description>Hewlett-Packard Pavilion ZT11xx</_description>
+ <vendor>Hewlett-Packard</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>hp500fa</name>
+ <_description>Hewlett-Packard Omnibook 500 FA</_description>
+ <vendor>Hewlett-Packard</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>hp5xx</name>
+ <_description>Hewlett-Packard Omnibook 5xx</_description>
+ <vendor>Hewlett-Packard</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>hpnx9020</name>
+ <_description>Hewlett-Packard nx9020</_description>
+ <vendor>Hewlett-Packard</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>hp6000</name>
+ <_description>Hewlett-Packard Omnibook 6000/6100</_description>
+ <vendor>Hewlett-Packard</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>honeywell_euroboard</name>
+ <_description>Honeywell Euroboard</_description>
+ <vendor>Hewlett-Packard</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>hpmini110</name>
+ <_description>Hewlett-Packard Mini 110 Notebook</_description>
+ <vendor>Hewlett-Packard</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>rapidaccess</name>
+ <_description>IBM Rapid Access</_description>
+ <vendor>Lenovo (previously IBM)</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>rapidaccess2</name>
+ <_description>IBM Rapid Access II</_description>
+ <vendor>Lenovo (previously IBM)</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>thinkpad</name>
+ <_description>IBM ThinkPad 560Z/600/600E/A22E</_description>
+ <vendor>Lenovo (previously IBM)</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>thinkpad60</name>
+ <_description>IBM ThinkPad R60/T60/R61/T61</_description>
+ <vendor>Lenovo (previously IBM)</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>thinkpadz60</name>
+ <_description>IBM ThinkPad Z60m/Z60t/Z61m/Z61t</_description>
+ <vendor>Lenovo (previously IBM)</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>ibm_spacesaver</name>
+ <_description>IBM Space Saver</_description>
+ <vendor>Lenovo (previously IBM)</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>logiaccess</name>
+ <_description>Logitech Access Keyboard</_description>
+ <vendor>Logitech</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>logiclx300</name>
+ <_description>Logitech Cordless Desktop LX-300</_description>
+ <vendor>Logitech</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>logii350</name>
+ <_description>Logitech Internet 350 Keyboard</_description>
+ <vendor>Logitech</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>logimel</name>
+ <_description>Logitech Media Elite Keyboard</_description>
+ <vendor>Logitech</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>logicd</name>
+ <_description>Logitech Cordless Desktop</_description>
+ <vendor>Logitech</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>logicd_it</name>
+ <_description>Logitech Cordless Desktop iTouch</_description>
+ <vendor>Logitech</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>logicd_nav</name>
+ <_description>Logitech Cordless Desktop Navigator</_description>
+ <vendor>Logitech</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>logicd_opt</name>
+ <_description>Logitech Cordless Desktop Optical</_description>
+ <vendor>Logitech</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>logicda</name>
+ <_description>Logitech Cordless Desktop (alternate option)</_description>
+ <vendor>Logitech</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>logicdpa2</name>
+ <_description>Logitech Cordless Desktop Pro (alternate option 2)</_description>
+ <vendor>Logitech</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>logicfn</name>
+ <_description>Logitech Cordless Freedom/Desktop Navigator</_description>
+ <vendor>Logitech</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>logicdn</name>
+ <_description>Logitech Cordless Desktop Navigator</_description>
+ <vendor>Logitech</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>logiitc</name>
+ <_description>Logitech iTouch Cordless Keyboard (model Y-RB6)</_description>
+ <vendor>Logitech</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>logiik</name>
+ <_description>Logitech Internet Keyboard</_description>
+ <vendor>Logitech</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>itouch</name>
+ <_description>Logitech iTouch</_description>
+ <vendor>Logitech</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>logicink</name>
+ <_description>Logitech Internet Navigator Keyboard</_description>
+ <vendor>Logitech</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>logiex110</name>
+ <_description>Logitech Cordless Desktop EX110</_description>
+ <vendor>Logitech</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>logiinkse</name>
+ <_description>Logitech iTouch Internet Navigator Keyboard SE</_description>
+ <vendor>Logitech</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>logiinkseusb</name>
+ <_description>Logitech iTouch Internet Navigator Keyboard SE (USB)</_description>
+ <vendor>Logitech</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>logiultrax</name>
+ <_description>Logitech Ultra-X Keyboard</_description>
+ <vendor>Logitech</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>logiultraxc</name>
+ <_description>Logitech Ultra-X Cordless Media Desktop Keyboard</_description>
+ <vendor>Logitech</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>logidinovo</name>
+ <_description>Logitech diNovo Keyboard</_description>
+ <vendor>Logitech</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>logidinovoedge</name>
+ <_description>Logitech diNovo Edge Keyboard</_description>
+ <vendor>Logitech</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>mx1998</name>
+ <_description>Memorex MX1998</_description>
+ <vendor>Memorex</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>mx2500</name>
+ <_description>Memorex MX2500 EZ-Access Keyboard</_description>
+ <vendor>Memorex</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>mx2750</name>
+ <_description>Memorex MX2750</_description>
+ <vendor>Memorex</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>microsoft7000</name>
+ <_description>Microsoft Natural Wireless Ergonomic Keyboard 7000</_description>
+ <vendor>Microsoft Inc.</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>microsoftinet</name>
+ <_description>Microsoft Internet Keyboard</_description>
+ <vendor>Microsoft Inc.</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>microsoftpro</name>
+ <_description>Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro</_description>
+ <vendor>Microsoft Inc.</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>microsoftprousb</name>
+ <_description>Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro</_description>
+ <vendor>Microsoft Inc.</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>microsoftprooem</name>
+ <_description>Microsoft Natural Keyboard Pro OEM</_description>
+ <vendor>Microsoft Inc.</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>vsonku306</name>
+ <_description>ViewSonic KU-306 Internet Keyboard</_description>
+ <vendor>ViewSonic</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>microsoftprose</name>
+ <_description>Microsoft Internet Keyboard Pro, Swedish</_description>
+ <vendor>Microsoft Inc.</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>microsoftoffice</name>
+ <_description>Microsoft Office Keyboard</_description>
+ <vendor>Microsoft Inc.</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>microsoftmult</name>
+ <_description>Microsoft Wireless Multimedia Keyboard 1.0A</_description>
+ <vendor>Microsoft Inc.</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>microsoftelite</name>
+ <_description>Microsoft Natural Keyboard Elite</_description>
+ <vendor>Microsoft Inc.</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>microsoftccurve2k</name>
+ <_description>Microsoft Comfort Curve Keyboard 2000</_description>
+ <vendor>Microsoft Inc.</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>oretec</name>
+ <_description>Ortek MCK-800 MM/Internet keyboard</_description>
+ <vendor>Ortek</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>propeller</name>
+ <_description>Propeller Voyager (KTEZ-1000)</_description>
+ <vendor>KeyTronic</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>qtronix</name>
+ <_description>QTronix Scorpius 98N+</_description>
+ <vendor>QTronix</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>samsung4500</name>
+ <_description>Samsung SDM 4500P</_description>
+ <vendor>Samsung</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>samsung4510</name>
+ <_description>Samsung SDM 4510P</_description>
+ <vendor>Samsung</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>sk1300</name>
+ <_description>SK-1300</_description>
+ <vendor>NEC</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>sk2500</name>
+ <_description>SK-2500</_description>
+ <vendor>NEC</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>sk6200</name>
+ <_description>SK-6200</_description>
+ <vendor>NEC</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>sk7100</name>
+ <_description>SK-7100</_description>
+ <vendor>NEC</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>sp_inet</name>
+ <_description>Super Power Multimedia Keyboard</_description>
+ <vendor>Generic</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>sven</name>
+ <_description>SVEN Ergonomic 2500</_description>
+ <vendor>SVEN</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>sven303</name>
+ <_description>SVEN Slim 303</_description>
+ <vendor>SVEN</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>symplon</name>
+ <_description>Symplon PaceBook (tablet PC)</_description>
+ <vendor>Symplon</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>toshiba_s3000</name>
+ <_description>Toshiba Satellite S3000</_description>
+ <vendor>Toshiba</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>trust</name>
+ <_description>Trust Wireless Keyboard Classic</_description>
+ <vendor>Trust</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>trustda</name>
+ <_description>Trust Direct Access Keyboard</_description>
+ <vendor>Trust</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>trust_slimline</name>
+ <_description>Trust Slimline</_description>
+ <vendor>Trust</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>tm2020</name>
+ <_description>TypeMatrix EZ-Reach 2020</_description>
+ <vendor>TypeMatrix</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>tm2030PS2</name>
+ <_description>TypeMatrix EZ-Reach 2030 PS2</_description>
+ <vendor>TypeMatrix</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>tm2030USB</name>
+ <_description>TypeMatrix EZ-Reach 2030 USB</_description>
+ <vendor>TypeMatrix</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>tm2030USB-102</name>
+ <_description>TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)</_description>
+ <vendor>TypeMatrix</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>tm2030USB-106</name>
+ <_description>TypeMatrix EZ-Reach 2030 USB (106:JP mode)</_description>
+ <vendor>TypeMatrix</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>yahoo</name>
+ <_description>Yahoo! Internet Keyboard</_description>
+ <vendor>Yahoo!</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>macbook78</name>
+ <_description>MacBook/MacBook Pro</_description>
+ <vendor>Apple</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>macbook79</name>
+ <_description>MacBook/MacBook Pro (Intl)</_description>
+ <vendor>Apple</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>macintosh</name>
+ <_description>Macintosh</_description>
+ <vendor>Apple</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>macintosh_old</name>
+ <_description>Macintosh Old</_description>
+ <vendor>Apple</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>macintosh_hhk</name>
+ <_description>Happy Hacking Keyboard for Mac</_description>
+ <vendor>Fujitsu</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>acer_c300</name>
+ <_description>Acer C300</_description>
+ <vendor>Acer</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>acer_ferrari4k</name>
+ <_description>Acer Ferrari 4000</_description>
+ <vendor>Acer</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>acer_laptop</name>
+ <_description>Acer Laptop</_description>
+ <vendor>Acer</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>asus_laptop</name>
+ <_description>Asus Laptop</_description>
+ <vendor>Asus</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>apple</name>
+ <_description>Apple</_description>
+ <vendor>Apple</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>apple_laptop</name>
+ <_description>Apple Laptop</_description>
+ <vendor>Apple</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>applealu_ansi</name>
+ <_description>Apple Aluminium Keyboard (ANSI)</_description>
+ <vendor>Apple</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>applealu_iso</name>
+ <_description>Apple Aluminium Keyboard (ISO)</_description>
+ <vendor>Apple</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>applealu_jis</name>
+ <_description>Apple Aluminium Keyboard (JIS)</_description>
+ <vendor>Apple</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>silvercrest</name>
+ <_description>SILVERCREST Multimedia Wireless Keyboard</_description>
+ <vendor>Silvercrest</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>emachines</name>
+ <_description>Laptop/notebook eMachines m68xx</_description>
+ <vendor>eMachines</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>benqx</name>
+ <_description>BenQ X-Touch</_description>
+ <vendor>BenQ</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>benqx730</name>
+ <_description>BenQ X-Touch 730</_description>
+ <vendor>BenQ</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>benqx800</name>
+ <_description>BenQ X-Touch 800</_description>
+ <vendor>BenQ</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>hhk</name>
+ <_description>Happy Hacking Keyboard</_description>
+ <vendor>Fujitsu</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>classmate</name>
+ <_description>Classmate PC</_description>
+ <vendor>Intel</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>olpc</name>
+ <_description>OLPC</_description>
+ <vendor>OLPC</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>sun6</name>
+ <_description>Sun Type 5/6</_description>
+ <vendor>Sun Microsystems</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>targa_v811</name>
+ <_description>Targa Visionary 811</_description>
+ <vendor>Targa</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>unitekkb1925</name>
+ <_description>Unitek KB-1925</_description>
+ <vendor>Unitek Group</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>compalfl90</name>
+ <_description>FL90</_description>
+ <vendor>Compal Electronics Inc.</vendor>
+ </configItem>
+ </model>
+ <model>
+ <configItem>
+ <name>creativedw7000</name>
+ <_description>Creative Desktop Wireless 7000</_description>
+ <vendor>Creative</vendor>
+ </configItem>
+ </model>
+ </modelList>
+ <layoutList>
+ <layout>
+ <configItem>
+ <name>us</name>
+ <_shortDescription>USA</_shortDescription>
+ <_description>USA</_description>
+ <languageList><iso639Id>eng</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>chr</name>
+ <_description>Cherokee</_description>
+ <languageList><iso639Id>chr</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>euro</name>
+ <_description>With EuroSign on 5</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>intl</name>
+ <_description>International (with dead keys)</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>alt-intl</name>
+ <_description>Alternative international</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>colemak</name>
+ <_description>Colemak</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>dvorak</name>
+ <_description>Dvorak</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>dvorak-intl</name>
+ <_description>Dvorak international (with dead keys)</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>dvorak-alt-intl</name>
+ <_description>Dvorak alternative international (no dead keys)</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>dvorak-l</name>
+ <_description>Left handed Dvorak</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>dvorak-r</name>
+ <_description>Right handed Dvorak</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>dvorak-classic</name>
+ <_description>Classic Dvorak</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>dvp</name>
+ <_description>Programmer Dvorak</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>rus</name>
+ <_description>Russian phonetic</_description>
+ <languageList><iso639Id>rus</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>mac</name>
+ <_description>Macintosh</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>altgr-intl</name>
+ <_description>International (AltGr dead keys)</_description>
+ <languageList><iso639Id>eng</iso639Id>
+ <iso639Id>fra</iso639Id>
+ <iso639Id>ger</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>olpc2</name>
+ <_description>Layout toggle on multiply/divide key</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>srp</name>
+ <_description>Serbian</_description>
+ <languageList><iso639Id>eng</iso639Id>
+ <iso639Id>srp</iso639Id> </languageList>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>ad</name>
+ <_shortDescription>And</_shortDescription>
+ <_description>Andorra</_description>
+ <languageList><iso639Id>cat</iso639Id></languageList>
+ </configItem>
+ <variantList/>
+ </layout>
+ <layout>
+ <configItem>
+ <name>af</name>
+ <_shortDescription>Afg</_shortDescription>
+ <_description>Afghanistan</_description>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>ps</name>
+ <_description>Pashto</_description>
+ <languageList><iso639Id>pus</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>uz</name>
+ <_description>Southern Uzbek</_description>
+ <languageList><iso639Id>uzb</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>olpc-ps</name>
+ <_description>OLPC Pashto</_description>
+ <languageList><iso639Id>pus</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>olpc-fa</name>
+ <_description>OLPC Dari</_description>
+ <!-- No ISO code in ISO639-2, only draft ISO693-3 -->
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>olpc-uz</name>
+ <_description>OLPC Southern Uzbek</_description>
+ <languageList><iso639Id>uzb</iso639Id></languageList>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>ara</name>
+ <_shortDescription>Ara</_shortDescription>
+ <_description>Arabic</_description>
+ <countryList>
+ <iso3166Id>AE</iso3166Id>
+ <iso3166Id>BH</iso3166Id>
+ <iso3166Id>DZ</iso3166Id>
+ <iso3166Id>EG</iso3166Id>
+ <iso3166Id>EH</iso3166Id>
+ <iso3166Id>JO</iso3166Id>
+ <iso3166Id>KW</iso3166Id>
+ <iso3166Id>LB</iso3166Id>
+ <iso3166Id>LY</iso3166Id>
+ <iso3166Id>MA</iso3166Id>
+ <iso3166Id>MR</iso3166Id>
+ <iso3166Id>OM</iso3166Id>
+ <iso3166Id>PS</iso3166Id>
+ <iso3166Id>QA</iso3166Id>
+ <iso3166Id>SA</iso3166Id>
+ <iso3166Id>SD</iso3166Id>
+ <iso3166Id>SY</iso3166Id>
+ <iso3166Id>TN</iso3166Id>
+ <iso3166Id>YE</iso3166Id>
+ </countryList>
+ <languageList><iso639Id>ara</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>azerty</name>
+ <_description>azerty</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>azerty_digits</name>
+ <_description>azerty/digits</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>digits</name>
+ <_description>digits</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>qwerty</name>
+ <_description>qwerty</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>qwerty_digits</name>
+ <_description>qwerty/digits</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>buckwalter</name>
+ <_description>Buckwalter</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>al</name>
+ <_shortDescription>Alb</_shortDescription>
+ <_description>Albania</_description>
+ <languageList><iso639Id>alb</iso639Id></languageList>
+ </configItem>
+ <variantList/>
+ </layout>
+ <layout>
+ <configItem>
+ <name>am</name>
+ <_shortDescription>Arm</_shortDescription>
+ <_description>Armenia</_description>
+ <languageList><iso639Id>hye</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>phonetic</name>
+ <_description>Phonetic</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>phonetic-alt</name>
+ <_description>Alternative Phonetic</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>eastern</name>
+ <_description>Eastern</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>western</name>
+ <_description>Western</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>eastern-alt</name>
+ <_description>Alternative Eastern</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>az</name>
+ <_shortDescription>Aze</_shortDescription>
+ <_description>Azerbaijan</_description>
+ <languageList><iso639Id>aze</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>cyrillic</name>
+ <_description>Cyrillic</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>by</name>
+ <_shortDescription>Blr</_shortDescription>
+ <_description>Belarus</_description>
+ <languageList><iso639Id>bel</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>legacy</name>
+ <_description>Legacy</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>latin</name>
+ <_description>Latin</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>be</name>
+ <_shortDescription>Bel</_shortDescription>
+ <_description>Belgium</_description>
+ <languageList><iso639Id>ger</iso639Id>
+ <iso639Id>nld</iso639Id>
+ <iso639Id>fra</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>oss</name>
+ <_description>Alternative</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>oss_latin9</name>
+ <_description>Alternative, latin-9 only</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>oss_sundeadkeys</name>
+ <_description>Alternative, Sun dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>iso-alternate</name>
+ <_description>ISO Alternate</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>nodeadkeys</name>
+ <_description>Eliminate dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>sundeadkeys</name>
+ <_description>Sun dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>wang</name>
+ <_description>Wang model 724 azerty</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>bd</name>
+ <_shortDescription>Bgd</_shortDescription>
+ <_description>Bangladesh</_description>
+ <languageList><iso639Id>ben</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>probhat</name>
+ <_description>Probhat</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>in</name>
+ <_shortDescription>Ind</_shortDescription>
+ <_description>India</_description>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>ben</name>
+ <_description>Bengali</_description>
+ <languageList><iso639Id>ben</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>ben_probhat</name>
+ <_description>Bengali Probhat</_description>
+ <languageList><iso639Id>ben</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>guj</name>
+ <_description>Gujarati</_description>
+ <languageList><iso639Id>guj</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>guru</name>
+ <_description>Gurmukhi</_description>
+ <languageList><iso639Id>pan</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>jhelum</name>
+ <_description>Gurmukhi Jhelum</_description>
+ <languageList><iso639Id>pan</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>kan</name>
+ <_description>Kannada</_description>
+ <languageList><iso639Id>kan</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>mal</name>
+ <_description>Malayalam</_description>
+ <languageList><iso639Id>mal</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>mal_lalitha</name>
+ <_description>Malayalam Lalitha</_description>
+ <languageList><iso639Id>mal</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>ori</name>
+ <_description>Oriya</_description>
+ <languageList><iso639Id>ori</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>tam_unicode</name>
+ <_description>Tamil Unicode</_description>
+ <languageList><iso639Id>tam</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>tam_keyboard_with_numerals</name>
+ <_description>Tamil Keyboard with Numerals</_description>
+ <languageList><iso639Id>tam</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>tam_TAB</name>
+ <_description>Tamil TAB Typewriter</_description>
+ <languageList><iso639Id>tam</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>tam_TSCII</name>
+ <_description>Tamil TSCII Typewriter</_description>
+ <languageList><iso639Id>tam</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>tam</name>
+ <_description>Tamil</_description>
+ <languageList><iso639Id>tam</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>tel</name>
+ <_description>Telugu</_description>
+ <languageList><iso639Id>tel</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>urd-phonetic</name>
+ <_description>Urdu, Phonetic</_description>
+ <languageList><iso639Id>urd</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>urd-phonetic3</name>
+ <_description>Urdu, Alternative phonetic</_description>
+ <languageList><iso639Id>urd</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>urd-winkeys</name>
+ <_description>Urdu, Winkeys</_description>
+ <languageList><iso639Id>urd</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>bolnagri</name>
+ <_description>Hindi Bolnagri</_description>
+ <languageList><iso639Id>hin</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>hin-wx</name>
+ <_description>Hindi Wx</_description>
+ <languageList><iso639Id>hin</iso639Id></languageList>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>ba</name>
+ <_shortDescription>Bih</_shortDescription>
+ <_description>Bosnia and Herzegovina</_description>
+ <languageList><iso639Id>bos</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>alternatequotes</name>
+ <_description> Use guillemets for quotes</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>unicode</name>
+ <_description>Use Bosnian digraphs</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>unicodeus</name>
+ <_description>US keyboard with Bosnian digraphs</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>us</name>
+ <_description>US keyboard with Bosnian letters</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>br</name>
+ <_shortDescription>Bra</_shortDescription>
+ <_description>Brazil</_description>
+ <languageList><iso639Id>por</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>nodeadkeys</name>
+ <_description>Eliminate dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>dvorak</name>
+ <_description>Dvorak</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>nativo</name>
+ <_description>Nativo</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>nativo-us</name>
+ <_description>Nativo for USA keyboards</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>nativo-epo</name>
+ <_description>Nativo for Esperanto</_description>
+ <languageList><iso639Id>epo</iso639Id></languageList>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>bg</name>
+ <_shortDescription>Bgr</_shortDescription>
+ <_description>Bulgaria</_description>
+ <languageList><iso639Id>bul</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>phonetic</name>
+ <_description>Traditional phonetic</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>bas_phonetic</name>
+ <_description>New phonetic</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>ma</name>
+ <_description>Morocco</_description>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>french</name>
+ <_description>French</_description>
+ <languageList><iso639Id>fra</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>tifinagh</name>
+ <_description>Tifinagh</_description>
+ <languageList><iso639Id>ber</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>tifinagh-alt</name>
+ <_description>Tifinagh Alternative</_description>
+ <languageList><iso639Id>ber</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>tifinagh-alt-phonetic</name>
+ <_description>Tifinagh Alternative Phonetic</_description>
+ <languageList><iso639Id>ber</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>tifinagh-extended</name>
+ <_description>Tifinagh Extended</_description>
+ <languageList><iso639Id>ber</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>tifinagh-phonetic</name>
+ <_description>Tifinagh Phonetic</_description>
+ <languageList><iso639Id>ber</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>tifinagh-extended-phonetic</name>
+ <_description>Tifinagh Extended Phonetic</_description>
+ <languageList><iso639Id>ber</iso639Id></languageList>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>mm</name>
+ <_shortDescription>Mmr</_shortDescription>
+ <_description>Myanmar</_description>
+ <languageList><iso639Id>mya</iso639Id></languageList>
+ </configItem>
+ <variantList/>
+ </layout>
+ <layout>
+ <configItem>
+ <name>ca</name>
+ <_shortDescription>Can</_shortDescription>
+ <_description>Canada</_description>
+ <languageList><iso639Id>fra</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>fr-dvorak</name>
+ <_description>French Dvorak</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>fr-legacy</name>
+ <_description>French (legacy)</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>multix</name>
+ <_description>Multilingual</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>multi</name>
+ <_description>Multilingual, first part</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>multi-2gr</name>
+ <_description>Multilingual, second part</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>ike</name>
+ <_description>Inuktitut</_description>
+ <languageList><iso639Id>iku</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>shs</name>
+ <_description>Secwepemctsin</_description>
+ <!-- No ISO code in ISO639-2, only draft ISO693-3 -->
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>kut</name>
+ <_description>Ktunaxa</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>eng</name>
+ <_description>English</_description>
+ <languageList><iso639Id>eng</iso639Id></languageList>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>cd</name>
+ <_shortDescription>COD</_shortDescription>
+ <_description>Congo, Democratic Republic of the</_description>
+ <languageList><iso639Id>fra</iso639Id></languageList>
+ </configItem>
+ <variantList/>
+ </layout>
+ <layout>
+ <configItem>
+ <name>cn</name>
+ <_shortDescription>Chn</_shortDescription>
+ <_description>China</_description>
+ <languageList><iso639Id>chi</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>tib</name>
+ <_description>Tibetan</_description>
+ <languageList><iso639Id>tib</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>tib_asciinum</name>
+ <_description>Tibetan (with ASCII numerals)</_description>
+ <languageList><iso639Id>tib</iso639Id></languageList>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>hr</name>
+ <_shortDescription>Hrv</_shortDescription>
+ <_description>Croatia</_description>
+ <languageList><iso639Id>scr</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>alternatequotes</name>
+ <_description>Use guillemets for quotes</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>unicode</name>
+ <_description>Use Croatian digraphs</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>unicodeus</name>
+ <_description>US keyboard with Croatian digraphs</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>us</name>
+ <_description>US keyboard with Croatian letters</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>cz</name>
+ <_shortDescription>Cze</_shortDescription>
+ <_description>Czechia</_description>
+ <languageList><iso639Id>cze</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>bksl</name>
+ <_description>With &lt;\|&gt; key</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>qwerty</name>
+ <_description>qwerty</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>qwerty_bksl</name>
+ <_description>qwerty, extended Backslash</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>ucw</name>
+ <_description>UCW layout (accented letters only)</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>dvorak-ucw</name>
+ <_description>US Dvorak with CZ UCW support</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>dk</name>
+ <_shortDescription>Dnk</_shortDescription>
+ <_description>Denmark</_description>
+ <languageList><iso639Id>dan</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>nodeadkeys</name>
+ <_description>Eliminate dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>mac</name>
+ <_description>Macintosh</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>mac_nodeadkeys</name>
+ <_description>Macintosh, eliminate dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>dvorak</name>
+ <_description>Dvorak</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>nl</name>
+ <_shortDescription>Nld</_shortDescription>
+ <_description>Netherlands</_description>
+ <languageList><iso639Id>nld</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>sundeadkeys</name>
+ <_description>Sun dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>mac</name>
+ <_description>Macintosh</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>std</name>
+ <_description>Standard</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>bt</name>
+ <_shortDescription>Btn</_shortDescription>
+ <_description>Bhutan</_description>
+ <languageList><iso639Id>dzo</iso639Id></languageList>
+ </configItem>
+ </layout>
+ <layout>
+ <configItem>
+ <name>ee</name>
+ <_shortDescription>Est</_shortDescription>
+ <_description>Estonia</_description>
+ <languageList><iso639Id>est</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>nodeadkeys</name>
+ <_description>Eliminate dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>dvorak</name>
+ <_description>Dvorak</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>us</name>
+ <_description>US keyboard with Estonian letters</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>ir</name>
+ <_shortDescription>Irn</_shortDescription>
+ <_description>Iran</_description>
+ <languageList><iso639Id>per</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>pes_keypad</name>
+ <_description>Persian, with Persian Keypad</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>ku</name>
+ <_description>Kurdish, Latin Q</_description>
+ <languageList><iso639Id>kur</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>ku_f</name>
+ <_description>Kurdish, (F)</_description>
+ <languageList><iso639Id>kur</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>ku_alt</name>
+ <_description>Kurdish, Latin Alt-Q</_description>
+ <languageList><iso639Id>kur</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>ku_ara</name>
+ <_description>Kurdish, Arabic-Latin</_description>
+ <languageList><iso639Id>kur</iso639Id></languageList>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>iq</name>
+ <_shortDescription>Irq</_shortDescription>
+ <_description>Iraq</_description>
+ <languageList><iso639Id>ara</iso639Id>
+ <iso639Id>kur</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>ku</name>
+ <_description>Kurdish, Latin Q</_description>
+ <languageList><iso639Id>kur</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>ku_f</name>
+ <_description>Kurdish, (F)</_description>
+ <languageList><iso639Id>kur</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>ku_alt</name>
+ <_description>Kurdish, Latin Alt-Q</_description>
+ <languageList><iso639Id>kur</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>ku_ara</name>
+ <_description>Kurdish, Arabic-Latin</_description>
+ <languageList><iso639Id>kur</iso639Id></languageList>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>fo</name>
+ <_shortDescription>Fro</_shortDescription>
+ <_description>Faroe Islands</_description>
+ <languageList><iso639Id>fao</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>nodeadkeys</name>
+ <_description>Eliminate dead keys</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>fi</name>
+ <_shortDescription>Fin</_shortDescription>
+ <_description>Finland</_description>
+ <languageList><iso639Id>fin</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>classic</name>
+ <_description>Classic</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>nodeadkeys</name>
+ <_description>Classic, eliminate dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>smi</name>
+ <_description>Northern Saami</_description>
+ <languageList><iso639Id>smi</iso639Id>
+ <iso639Id>sme</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>mac</name>
+ <_description>Macintosh</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>fr</name>
+ <_shortDescription>Fra</_shortDescription>
+ <_description>France</_description>
+ <languageList><iso639Id>fra</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>nodeadkeys</name>
+ <_description>Eliminate dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>sundeadkeys</name>
+ <_description>Sun dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>oss</name>
+ <_description>Alternative</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>oss_latin9</name>
+ <_description>Alternative, latin-9 only</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>oss_nodeadkeys</name>
+ <_description>Alternative, eliminate dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>oss_sundeadkeys</name>
+ <_description>Alternative, Sun dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>latin9</name>
+ <_description>(Legacy) Alternative</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>latin9_nodeadkeys</name>
+ <_description>(Legacy) Alternative, eliminate dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>latin9_sundeadkeys</name>
+ <_description>(Legacy) Alternative, Sun dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>bepo</name>
+ <_description>Bepo, ergonomic, Dvorak way</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>bepo_latin9</name>
+ <_description>Bepo, ergonomic, Dvorak way, latin-9 only</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>dvorak</name>
+ <_description>Dvorak</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>mac</name>
+ <_description>Macintosh</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>bre</name>
+ <_description>Breton</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>oci</name>
+ <_description>Occitan</_description>
+ <languageList><iso639Id>oci</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>geo</name>
+ <_description>Georgian AZERTY Tskapo</_description>
+ <languageList><iso639Id>geo</iso639Id></languageList>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>gh</name>
+ <_shortDescription>Gha</_shortDescription>
+ <_description>Ghana</_description>
+ <languageList><iso639Id>eng</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>generic</name>
+ <_description>Multilingual</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>akan</name>
+ <_description>Akan</_description>
+ <languageList><iso639Id>aka</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>ewe</name>
+ <_description>Ewe</_description>
+ <languageList><iso639Id>ewe</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>fula</name>
+ <_description>Fula</_description>
+ <languageList><iso639Id>ful</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>ga</name>
+ <_description>Ga</_description>
+ <languageList><iso639Id>gaa</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>hausa</name>
+ <_description>Hausa</_description>
+ <languageList><iso639Id>hau</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>avn</name>
+ <_description>Avatime</_description>
+ <languageList><iso639Id>avn</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>gillbt</name>
+ <_description>GILLBT</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>gn</name>
+ <_shortDescription>Gin</_shortDescription>
+ <_description>Guinea</_description>
+ <languageList><iso639Id>fra</iso639Id></languageList>
+ </configItem>
+ <variantList/>
+ </layout>
+ <layout>
+ <configItem>
+ <name>ge</name>
+ <_shortDescription>Geo</_shortDescription>
+ <_description>Georgia</_description>
+ <languageList><iso639Id>geo</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>ergonomic</name>
+ <_description>Ergonomic</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>mess</name>
+ <_description>MESS</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>ru</name>
+ <_description>Russian</_description>
+ <languageList><iso639Id>rus</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>os</name>
+ <_description>Ossetian</_description>
+ <languageList><iso639Id>oss</iso639Id></languageList>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>de</name>
+ <_shortDescription>Deu</_shortDescription>
+ <_description>Germany</_description>
+ <languageList><iso639Id>ger</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>deadacute</name>
+ <_description>Dead acute</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>deadgraveacute</name>
+ <_description>Dead grave acute</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>nodeadkeys</name>
+ <_description>Eliminate dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>ro</name>
+ <_description>Romanian keyboard with German letters</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>ro_nodeadkeys</name>
+ <_description>Romanian keyboard with German letters, eliminate dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>dvorak</name>
+ <_description>Dvorak</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>sundeadkeys</name>
+ <_description>Sun dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>neo</name>
+ <_description>Neo 2</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>mac</name>
+ <_description>Macintosh</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>mac_nodeadkeys</name>
+ <_description>Macintosh, eliminate dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>dsb</name>
+ <_description>Lower Sorbian</_description>
+ <languageList><iso639Id>dsb</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>dsb_qwertz</name>
+ <_description>Lower Sorbian (qwertz)</_description>
+ <languageList><iso639Id>dsb</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>qwerty</name>
+ <_description>qwerty</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>gr</name>
+ <_shortDescription>Grc</_shortDescription>
+ <_description>Greece</_description>
+ <languageList><iso639Id>gre</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>simple</name>
+ <_description>Simple</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>extended</name>
+ <_description>Extended</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>nodeadkeys</name>
+ <_description>Eliminate dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>polytonic</name>
+ <_description>Polytonic</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>hu</name>
+ <_shortDescription>Hun</_shortDescription>
+ <_description>Hungary</_description>
+ <languageList><iso639Id>hun</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>standard</name>
+ <_description>Standard</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>nodeadkeys</name>
+ <_description>Eliminate dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>qwerty</name>
+ <_description>qwerty</_description>
+ </configItem>
+ </variant>
+
+ <!-- 101 keys -->
+ <variant>
+ <configItem>
+ <name>101_qwertz_comma_dead</name>
+ <_description>101/qwertz/comma/Dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>101_qwertz_comma_nodead</name>
+ <_description>101/qwertz/comma/Eliminate dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>101_qwertz_dot_dead</name>
+ <_description>101/qwertz/dot/Dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>101_qwertz_dot_nodead</name>
+ <_description>101/qwertz/dot/Eliminate dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>101_qwerty_comma_dead</name>
+ <_description>101/qwerty/comma/Dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>101_qwerty_comma_nodead</name>
+ <_description>101/qwerty/comma/Eliminate dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>101_qwerty_dot_dead</name>
+ <_description>101/qwerty/dot/Dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>101_qwerty_dot_nodead</name>
+ <_description>101/qwerty/dot/Eliminate dead keys</_description>
+ </configItem>
+ </variant>
+
+
+ <!-- 102 keys -->
+ <variant>
+ <configItem>
+ <name>102_qwertz_comma_dead</name>
+ <_description>102/qwertz/comma/Dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>102_qwertz_comma_nodead</name>
+ <_description>102/qwertz/comma/Eliminate dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>102_qwertz_dot_dead</name>
+ <_description>102/qwertz/dot/Dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>102_qwertz_dot_nodead</name>
+ <_description>102/qwertz/dot/Eliminate dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>102_qwerty_comma_dead</name>
+ <_description>102/qwerty/comma/Dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>102_qwerty_comma_nodead</name>
+ <_description>102/qwerty/comma/Eliminate dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>102_qwerty_dot_dead</name>
+ <_description>102/qwerty/dot/Dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>102_qwerty_dot_nodead</name>
+ <_description>102/qwerty/dot/Eliminate dead keys</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>is</name>
+ <_shortDescription>Isl</_shortDescription>
+ <_description>Iceland</_description>
+ <languageList><iso639Id>ice</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>Sundeadkeys</name>
+ <_description>Sun dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>nodeadkeys</name>
+ <_description>Eliminate dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>mac</name>
+ <_description>Macintosh</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>dvorak</name>
+ <_description>Dvorak</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>il</name>
+ <_shortDescription>Isr</_shortDescription>
+ <_description>Israel</_description>
+ <languageList><iso639Id>heb</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>lyx</name>
+ <_description>lyx</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>phonetic</name>
+ <_description>Phonetic</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>biblical</name>
+ <_description>Biblical Hebrew (Tiro)</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>it</name>
+ <_shortDescription>Ita</_shortDescription>
+ <_description>Italy</_description>
+ <languageList><iso639Id>ita</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>nodeadkeys</name>
+ <_description>Eliminate dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>mac</name>
+ <_description>Macintosh</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>us</name>
+ <_description>US keyboard with Italian letters</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>geo</name>
+ <_description>Georgian</_description>
+ <languageList><iso639Id>geo</iso639Id></languageList>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>jp</name>
+ <_shortDescription>Jpn</_shortDescription>
+ <_description>Japan</_description>
+ <languageList><iso639Id>jpn</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>kana</name>
+ <_description>Kana</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>OADG109A</name>
+ <_description>OADG 109A</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>mac</name>
+ <_description>Macintosh</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>kg</name>
+ <_shortDescription>Kgz</_shortDescription>
+ <_description>Kyrgyzstan</_description>
+ <languageList><iso639Id>kir</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>phonetic</name>
+ <_description>Phonetic</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>kh</name>
+ <_shortDescription>Khm</_shortDescription>
+ <_description>Cambodia</_description>
+ <languageList><iso639Id>khm</iso639Id></languageList>
+ </configItem>
+ <variantList/>
+ </layout>
+ <layout>
+ <configItem>
+ <name>kz</name>
+ <_shortDescription>Kaz</_shortDescription>
+ <_description>Kazakhstan</_description>
+ <languageList><iso639Id>kaz</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>ruskaz</name>
+ <_description>Russian with Kazakh</_description>
+ <languageList><iso639Id>kaz</iso639Id>
+ <iso639Id>rus</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>kazrus</name>
+ <_description>Kazakh with Russian</_description>
+ <languageList><iso639Id>kaz</iso639Id>
+ <iso639Id>rus</iso639Id></languageList>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>la</name>
+ <_shortDescription>Lao</_shortDescription>
+ <_description>Laos</_description>
+ <languageList><iso639Id>lao</iso639Id></languageList>
+ </configItem>
+ <variantList/>
+ </layout>
+ <layout>
+ <configItem>
+ <name>latam</name>
+ <_shortDescription>LAm</_shortDescription>
+ <_description>Latin American</_description>
+ <countryList>
+ <iso3166Id>AR</iso3166Id>
+ <iso3166Id>BO</iso3166Id>
+ <iso3166Id>CL</iso3166Id>
+ <iso3166Id>CO</iso3166Id>
+ <iso3166Id>CR</iso3166Id>
+ <iso3166Id>CU</iso3166Id>
+ <iso3166Id>DO</iso3166Id>
+ <iso3166Id>EC</iso3166Id>
+ <iso3166Id>GT</iso3166Id>
+ <iso3166Id>HN</iso3166Id>
+ <iso3166Id>HT</iso3166Id>
+ <iso3166Id>MX</iso3166Id>
+ <iso3166Id>NI</iso3166Id>
+ <iso3166Id>PA</iso3166Id>
+ <iso3166Id>PE</iso3166Id>
+ <iso3166Id>PR</iso3166Id>
+ <iso3166Id>PY</iso3166Id>
+ <iso3166Id>SV</iso3166Id>
+ <iso3166Id>US</iso3166Id>
+ <iso3166Id>UY</iso3166Id>
+ <iso3166Id>VE</iso3166Id>
+ </countryList>
+ <languageList><iso639Id>spa</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>nodeadkeys</name>
+ <_description>Eliminate dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>deadtilde</name>
+ <_description>Include dead tilde</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>sundeadkeys</name>
+ <_description>Sun dead keys</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>lt</name>
+ <_shortDescription>Ltu</_shortDescription>
+ <_description>Lithuania</_description>
+ <languageList><iso639Id>lit</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>std</name>
+ <_description>Standard</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>us</name>
+ <_description>US keyboard with Lithuanian letters</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>ibm</name>
+ <_description>IBM (LST 1205-92)</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>lekp</name>
+ <_description>LEKP</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>lekpa</name>
+ <_description>LEKPa</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>lv</name>
+ <_shortDescription>Lva</_shortDescription>
+ <_description>Latvia</_description>
+ <languageList><iso639Id>lav</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>apostrophe</name>
+ <_description>Apostrophe (') variant</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>tilde</name>
+ <_description>Tilde (~) variant</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>fkey</name>
+ <_description>F-letter (F) variant</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>mao</name>
+ <_shortDescription>Mao</_shortDescription>
+ <_description>Maori</_description>
+ <languageList><iso639Id>mao</iso639Id></languageList>
+ </configItem>
+ <variantList/>
+ </layout>
+ <layout>
+ <configItem>
+ <name>me</name>
+ <_shortDescription>MNE</_shortDescription>
+ <_description>Montenegro</_description>
+ <languageList><iso639Id>srp</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>cyrillic</name>
+ <_description>Cyrillic</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>cyrillicyz</name>
+ <_description>Cyrillic, Z and ZHE swapped</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>latinunicode</name>
+ <_description>Latin unicode</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>latinyz</name>
+ <_description>Latin qwerty</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>latinunicodeyz</name>
+ <_description>Latin unicode qwerty</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>cyrillicalternatequotes</name>
+ <_description>Cyrillic with guillemets</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>latinalternatequotes</name>
+ <_description>Latin with guillemets</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>mk</name>
+ <_shortDescription>Mkd</_shortDescription>
+ <_description>Macedonia</_description>
+ <languageList><iso639Id>mkd</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>nodeadkeys</name>
+ <_description>Eliminate dead keys</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>mt</name>
+ <_shortDescription>Mlt</_shortDescription>
+ <_description>Malta</_description>
+ <languageList><iso639Id>mlt</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>us</name>
+ <_description>Maltese keyboard with US layout</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>mn</name>
+ <_shortDescription>Mng</_shortDescription>
+ <_description>Mongolia</_description>
+ <languageList><iso639Id>mng</iso639Id></languageList>
+ </configItem>
+ <variantList/>
+ </layout>
+ <layout>
+ <configItem>
+ <name>no</name>
+ <_shortDescription>Nor</_shortDescription>
+ <_description>Norway</_description>
+ <languageList><iso639Id>nor</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>nodeadkeys</name>
+ <_description>Eliminate dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>dvorak</name>
+ <_description>Dvorak</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>smi</name>
+ <_description>Northern Saami</_description>
+ <languageList><iso639Id>sme</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>smi_nodeadkeys</name>
+ <_description>Northern Saami, eliminate dead keys</_description>
+ <languageList><iso639Id>sme</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>mac</name>
+ <_description>Macintosh</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>mac_nodeadkeys</name>
+ <_description>Macintosh, eliminate dead keys</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>pl</name>
+ <_shortDescription>Pol</_shortDescription>
+ <_description>Poland</_description>
+ <languageList><iso639Id>pol</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>qwertz</name>
+ <_description>qwertz</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>dvorak</name>
+ <_description>Dvorak</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>dvorak_quotes</name>
+ <_description>Dvorak, Polish quotes on quotemark key</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>dvorak_altquotes</name>
+ <_description>Dvorak, Polish quotes on key 1</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>csb</name>
+ <_description>Kashubian</_description>
+ <languageList><iso639Id>csb</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>ru_phonetic_dvorak</name>
+ <_description>Russian phonetic Dvorak</_description>
+ <languageList><iso639Id>rus</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>dvp</name>
+ <_description>Programmer Dvorak</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>pt</name>
+ <_shortDescription>Prt</_shortDescription>
+ <_description>Portugal</_description>
+ <languageList><iso639Id>por</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>nodeadkeys</name>
+ <_description>Eliminate dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>sundeadkeys</name>
+ <_description>Sun dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>mac</name>
+ <_description>Macintosh</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>mac_nodeadkeys</name>
+ <_description>Macintosh, eliminate dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>mac_sundeadkeys</name>
+ <_description>Macintosh, Sun dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>nativo</name>
+ <_description>Nativo</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>nativo-us</name>
+ <_description>Nativo for USA keyboards</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>nativo-epo</name>
+ <_description>Nativo for Esperanto</_description>
+ <languageList><iso639Id>epo</iso639Id></languageList>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>ro</name>
+ <_shortDescription>Rou</_shortDescription>
+ <_description>Romania</_description>
+ <languageList><iso639Id>rum</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>cedilla</name>
+ <_description>Cedilla</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>std</name>
+ <_description>Standard</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>std_cedilla</name>
+ <_description>Standard (Cedilla)</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>winkeys</name>
+ <_description>Winkeys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>crh_f</name>
+ <_description>Crimean Tatar (Turkish F)</_description>
+ <languageList><iso639Id>crh</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>crh_alt</name>
+ <_description>Crimean Tatar (Turkish Alt-Q)</_description>
+ <languageList><iso639Id>crh</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>crh_dobruca1</name>
+ <_description>Crimean Tatar (Dobruca-1 Q)</_description>
+ <languageList><iso639Id>crh</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>crh_dobruca2</name>
+ <_description>Crimean Tatar (Dobruca-2 Q)</_description>
+ <languageList><iso639Id>crh</iso639Id></languageList>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>ru</name>
+ <_shortDescription>Rus</_shortDescription>
+ <_description>Russia</_description>
+ <languageList><iso639Id>rus</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>phonetic</name>
+ <_description>Phonetic</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>phonetic_winkeys</name>
+ <_description>Phonetic Winkeys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>typewriter</name>
+ <_description>Typewriter</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>legacy</name>
+ <_description>Legacy</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>typewriter-legacy</name>
+ <_description>Typewriter, legacy</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>tt</name>
+ <_description>Tatar</_description>
+ <languageList><iso639Id>tat</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>os_legacy</name>
+ <_description>Ossetian, legacy</_description>
+ <languageList><iso639Id>oss</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>os_winkeys</name>
+ <_description>Ossetian, Winkeys</_description>
+ <languageList><iso639Id>oss</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>cv</name>
+ <_description>Chuvash</_description>
+ <languageList><iso639Id>chv</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>cv_latin</name>
+ <_description>Chuvash Latin</_description>
+ <languageList><iso639Id>chv</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>udm</name>
+ <_description>Udmurt</_description>
+ <languageList><iso639Id>udm</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>kom</name>
+ <_description>Komi</_description>
+ <languageList><iso639Id>kom</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>sah</name>
+ <_description>Yakut</_description>
+ <languageList><iso639Id>sah</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>xal</name>
+ <_description>Kalmyk</_description>
+ <languageList><iso639Id>xal</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>dos</name>
+ <_description>DOS</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>srp</name>
+ <_description>Serbian</_description>
+ <languageList><iso639Id>rus</iso639Id>
+ <iso639Id>srp</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>bak</name>
+ <_description>Bashkirian</_description>
+ <languageList><iso639Id>bak</iso639Id></languageList>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>rs</name>
+ <_shortDescription>SRB</_shortDescription>
+ <_description>Serbia</_description>
+ <languageList><iso639Id>srp</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>yz</name>
+ <_description>Z and ZHE swapped</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>latin</name>
+ <_description>Latin</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>latinunicode</name>
+ <_description>Latin Unicode</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>latinyz</name>
+ <_description>Latin qwerty</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>latinunicodeyz</name>
+ <_description>Latin Unicode qwerty</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>alternatequotes</name>
+ <_description>With guillemets</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>latinalternatequotes</name>
+ <_description>Latin with guillemets</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>rue</name>
+ <_description>Pannonian Rusyn Homophonic</_description>
+ <languageList><iso639Id>rue</iso639Id></languageList>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>si</name>
+ <_shortDescription>Svn</_shortDescription>
+ <_description>Slovenia</_description>
+ <languageList><iso639Id>slv</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>alternatequotes</name>
+ <_description>Use guillemets for quotes</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>us</name>
+ <_description>US keyboard with Slovenian letters</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>sk</name>
+ <_shortDescription>Svk</_shortDescription>
+ <_description>Slovakia</_description>
+ <languageList><iso639Id>slo</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>bksl</name>
+ <_description>Extended Backslash</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>qwerty</name>
+ <_description>qwerty</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>qwerty_bksl</name>
+ <_description>qwerty, extended Backslash</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>es</name>
+ <_shortDescription>Esp</_shortDescription>
+ <_description>Spain</_description>
+ <languageList><iso639Id>spa</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>nodeadkeys</name>
+ <_description>Eliminate dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>deadtilde</name>
+ <_description>Include dead tilde</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>sundeadkeys</name>
+ <_description>Sun dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>dvorak</name>
+ <_description>Dvorak</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>ast</name>
+ <_description>Asturian variant with bottom-dot H and bottom-dot L</_description>
+ <languageList><iso639Id>ast</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>cat</name>
+ <_description>Catalan variant with middle-dot L</_description>
+ <languageList><iso639Id>cat</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>mac</name>
+ <_description>Macintosh</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>se</name>
+ <_shortDescription>Swe</_shortDescription>
+ <_description>Sweden</_description>
+ <languageList><iso639Id>swe</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>nodeadkeys</name>
+ <_description>Eliminate dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>dvorak</name>
+ <_description>Dvorak</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>rus</name>
+ <_description>Russian phonetic</_description>
+ <languageList><iso639Id>rus</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>rus_nodeadkeys</name>
+ <_description>Russian phonetic, eliminate dead keys</_description>
+ <languageList><iso639Id>rus</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>smi</name>
+ <_description>Northern Saami</_description>
+ <languageList><iso639Id>sme</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>mac</name>
+ <_description>Macintosh</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>svdvorak</name>
+ <_description>Svdvorak</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>ch</name>
+ <_shortDescription>Che</_shortDescription>
+ <_description>Switzerland</_description>
+ <languageList><iso639Id>ger</iso639Id>
+ <iso639Id>gsw</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>legacy</name>
+ <_description>Legacy</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>de_nodeadkeys</name>
+ <_description>German, eliminate dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>de_sundeadkeys</name>
+ <_description>German, Sun dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>fr</name>
+ <_description>French</_description>
+ <languageList><iso639Id>fra</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>fr_nodeadkeys</name>
+ <_description>French, eliminate dead keys</_description>
+ <languageList><iso639Id>fra</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>fr_sundeadkeys</name>
+ <_description>French, Sun dead keys</_description>
+ <languageList><iso639Id>fra</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>fr_mac</name>
+ <_description>French (Macintosh)</_description>
+ <languageList><iso639Id>fra</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>de_mac</name>
+ <_description>German (Macintosh)</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>sy</name>
+ <_shortDescription>Syr</_shortDescription>
+ <_description>Syria</_description>
+ <languageList><iso639Id>syr</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>syc</name>
+ <_description>Syriac</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>syc_phonetic</name>
+ <_description>Syriac phonetic</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>ku</name>
+ <_description>Kurdish, Latin Q</_description>
+ <languageList><iso639Id>kur</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>ku_f</name>
+ <_description>Kurdish, (F)</_description>
+ <languageList><iso639Id>kur</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>ku_alt</name>
+ <_description>Kurdish, Latin Alt-Q</_description>
+ <languageList><iso639Id>kur</iso639Id></languageList>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>tj</name>
+ <_shortDescription>Tjk</_shortDescription>
+ <_description>Tajikistan</_description>
+ <languageList><iso639Id>tgk</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>legacy</name>
+ <_description>Legacy</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>lk</name>
+ <_shortDescription>Lka</_shortDescription>
+ <_description>Sri Lanka</_description>
+ <languageList><iso639Id>sin</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>tam_unicode</name>
+ <_description>Tamil Unicode</_description>
+ <languageList><iso639Id>tam</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>tam_TAB</name>
+ <_description>Tamil TAB Typewriter</_description>
+ <languageList><iso639Id>tam</iso639Id></languageList>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>th</name>
+ <_shortDescription>Tha</_shortDescription>
+ <_description>Thailand</_description>
+ <languageList><iso639Id>tha</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>tis</name>
+ <_description>TIS-820.2538</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>pat</name>
+ <_description>Pattachote</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>tr</name>
+ <_shortDescription>Tur</_shortDescription>
+ <_description>Turkey</_description>
+ <languageList><iso639Id>tur</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>f</name>
+ <_description>(F)</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>alt</name>
+ <_description>Alt-Q</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>sundeadkeys</name>
+ <_description>Sun dead keys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>ku</name>
+ <_description>Kurdish, Latin Q</_description>
+ <languageList><iso639Id>kur</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>ku_f</name>
+ <_description>Kurdish, (F)</_description>
+ <languageList><iso639Id>kur</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>ku_alt</name>
+ <_description>Kurdish, Latin Alt-Q</_description>
+ <languageList><iso639Id>kur</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>intl</name>
+ <_description>International (with dead keys)</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>crh</name>
+ <_description>Crimean Tatar (Turkish Q)</_description>
+ <languageList><iso639Id>crh</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>crh_f</name>
+ <_description>Crimean Tatar (Turkish F)</_description>
+ <languageList><iso639Id>crh</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>crh_alt</name>
+ <_description>Crimean Tatar (Turkish Alt-Q)</_description>
+ <languageList><iso639Id>crh</iso639Id></languageList>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>ua</name>
+ <_shortDescription>Ukr</_shortDescription>
+ <_description>Ukraine</_description>
+ <languageList><iso639Id>ukr</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>phonetic</name>
+ <_description>Phonetic</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>typewriter</name>
+ <_description>Typewriter</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>winkeys</name>
+ <_description>Winkeys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>legacy</name>
+ <_description>Legacy</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>rstu</name>
+<!-- RSTU 2019-91 -->
+ <_description>Standard RSTU</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>rstu_ru</name>
+<!-- RSTU 2019-91 -->
+ <_description>Standard RSTU on Russian layout</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>homophonic</name>
+ <_description>Homophonic</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>crh</name>
+ <_description>Crimean Tatar (Turkish Q)</_description>
+ <languageList><iso639Id>crh</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>crh_f</name>
+ <_description>Crimean Tatar (Turkish F)</_description>
+ <languageList><iso639Id>crh</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>crh_alt</name>
+ <_description>Crimean Tatar (Turkish Alt-Q)</_description>
+ <languageList><iso639Id>crh</iso639Id></languageList>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>gb</name>
+ <_shortDescription>GBr</_shortDescription>
+ <_description>United Kingdom</_description>
+ <languageList><iso639Id>eng</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>extd</name>
+ <_description>Extended - Winkeys</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>intl</name>
+ <_description>International (with dead keys)</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>dvorak</name>
+ <_description>Dvorak</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>dvorakukp</name>
+ <_description>Dvorak (UK Punctuation)</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>mac</name>
+ <_description>Macintosh</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>mac_intl</name>
+ <_description>Macintosh (International)</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>colemak</name>
+ <_description>Colemak</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>uz</name>
+ <_shortDescription>Uzb</_shortDescription>
+ <_description>Uzbekistan</_description>
+ <languageList><iso639Id>uzb</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>latin</name>
+ <_description>Latin</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>crh</name>
+ <_description>Crimean Tatar (Turkish Q)</_description>
+ <languageList><iso639Id>crh</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>crh_f</name>
+ <_description>Crimean Tatar (Turkish F)</_description>
+ <languageList><iso639Id>crh</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>crh_alt</name>
+ <_description>Crimean Tatar (Turkish Alt-Q)</_description>
+ <languageList><iso639Id>crh</iso639Id></languageList>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>vn</name>
+ <_shortDescription>Vnm</_shortDescription>
+ <_description>Vietnam</_description>
+ <languageList><iso639Id>vie</iso639Id></languageList>
+ </configItem>
+ <variantList/>
+ </layout>
+ <layout>
+ <configItem>
+ <name>kr</name>
+ <_shortDescription>Kor</_shortDescription>
+ <_description>Korea, Republic of</_description>
+ <languageList><iso639Id>kor</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>kr104</name>
+ <_description>101/104 key Compatible</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>nec_vndr/jp</name>
+ <_shortDescription>Jpn</_shortDescription>
+ <_description>Japan (PC-98xx Series)</_description>
+ <countryList><iso3166Id>JP</iso3166Id></countryList>
+ <languageList><iso639Id>jpn</iso639Id></languageList>
+ </configItem>
+ <variantList/>
+ </layout>
+ <layout>
+ <configItem>
+ <name>ie</name>
+ <_shortDescription>Irl</_shortDescription>
+ <_description>Ireland</_description>
+ <languageList><iso639Id>eng</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>CloGaelach</name>
+ <_description>CloGaelach</_description>
+ <languageList><iso639Id>gla</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>UnicodeExpert</name>
+ <_description>UnicodeExpert</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>ogam</name>
+ <_description>Ogham</_description>
+ <!-- No ISO code in ISO639 -->
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>ogam_is434</name>
+ <_description>Ogham IS434</_description>
+ <!-- No ISO code in ISO639 -->
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>pk</name>
+ <_shortDescription>Pak</_shortDescription>
+ <_description>Pakistan</_description>
+ <languageList><iso639Id>urd</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>urd-crulp</name>
+ <_description>CRULP</_description>
+ <languageList><iso639Id>urd</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>urd-nla</name>
+ <_description>NLA</_description>
+ <languageList><iso639Id>urd</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>ara</name>
+ <_description>Arabic</_description>
+ <languageList><iso639Id>ara</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>snd</name>
+ <_description>Sindhi</_description>
+ <languageList><iso639Id>sd</iso639Id></languageList>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>mv</name>
+ <_shortDescription>Mdv</_shortDescription>
+ <_description>Maldives</_description>
+ <languageList><iso639Id>div</iso639Id></languageList>
+ </configItem>
+ <variantList/>
+ </layout>
+ <layout>
+ <configItem>
+ <name>za</name>
+ <_shortDescription>Zaf</_shortDescription>
+ <_description>South Africa</_description>
+ <languageList><iso639Id>eng</iso639Id></languageList>
+ </configItem>
+ </layout>
+ <layout>
+ <configItem>
+ <name>epo</name>
+ <_shortDescription>Epo</_shortDescription>
+ <_description>Esperanto</_description>
+ <languageList><iso639Id>epo</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>legacy</name>
+ <_description>displaced semicolon and quote (obsolete)</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>np</name>
+ <_shortDescription>Npl</_shortDescription>
+ <_description>Nepal</_description>
+ <languageList><iso639Id>nep</iso639Id></languageList>
+ </configItem>
+ </layout>
+ <layout>
+ <configItem>
+ <name>ng</name>
+ <_shortDescription>Nga</_shortDescription>
+ <_description>Nigeria</_description>
+ <languageList><iso639Id>eng</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>igbo</name>
+ <_description>Igbo</_description>
+ <languageList><iso639Id>ibo</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>yoruba</name>
+ <_description>Yoruba</_description>
+ <languageList><iso639Id>yor</iso639Id></languageList>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>hausa</name>
+ <_description>Hausa</_description>
+ <languageList><iso639Id>hau</iso639Id></languageList>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>et</name>
+ <_shortDescription>Eth</_shortDescription>
+ <_description>Ethiopia</_description>
+ <languageList><iso639Id>amh</iso639Id></languageList>
+ </configItem>
+ <variantList/>
+ </layout>
+ <layout>
+ <configItem>
+ <name>sn</name>
+ <_shortDescription>Sen</_shortDescription>
+ <_description>Senegal</_description>
+ <languageList><iso639Id>wol</iso639Id></languageList>
+ </configItem>
+ <variantList/>
+ </layout>
+ <layout>
+ <configItem>
+ <name>brai</name>
+ <_shortDescription>Brl</_shortDescription>
+ <_description>Braille</_description>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>left_hand</name>
+ <_description>Left hand</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>right_hand</name>
+ <_description>Right hand</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>tm</name>
+ <_shortDescription>Tkm</_shortDescription>
+ <_description>Turkmenistan</_description>
+ <languageList><iso639Id>tuk</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>alt</name>
+ <_description>Alt-Q</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>ml</name>
+ <_shortDescription>Mli</_shortDescription>
+ <_description>Mali</_description>
+ <languageList><iso639Id>bam</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>fr-oss</name>
+ <_description>Français (France Alternative)</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>us-mac</name>
+ <_description>English (USA Macintosh)</_description>
+ </configItem>
+ </variant>
+ <variant>
+ <configItem>
+ <name>us-intl</name>
+ <_description>English (USA International)</_description>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>tz</name>
+ <_shortDescription>Tza</_shortDescription>
+ <_description>Tanzania</_description>
+ <languageList><iso639Id>swa</iso639Id></languageList>
+ </configItem>
+ </layout>
+ <layout>
+ <configItem>
+ <name>ke</name>
+ <_shortDescription>Ken</_shortDescription>
+ <_description>Kenya</_description>
+ <languageList><iso639Id>swa</iso639Id></languageList>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>kik</name>
+ <_description>Kikuyu</_description>
+ <languageList><iso639Id>kik</iso639Id></languageList>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
+ <layout>
+ <configItem>
+ <name>bw</name>
+ <_shortDescription>Bwa</_shortDescription>
+ <_description>Botswana</_description>
+ <languageList><iso639Id>tsn</iso639Id></languageList>
+ </configItem>
+ </layout>
+ </layoutList>
+ <optionList>
+ <group allowMultipleSelection="true">
+ <!-- The key combination used to switch between groups -->
+ <configItem>
+ <name>grp</name>
+ <_description>Key(s) to change layout</_description>
+ </configItem>
+ <option>
+ <configItem>
+ <name>grp:switch</name>
+ <_description>Right Alt (while pressed)</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>grp:lswitch</name>
+ <_description>Left Alt (while pressed)</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>grp:lwin_switch</name>
+ <_description>Left Win (while pressed)</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>grp:rwin_switch</name>
+ <_description>Right Win (while pressed)</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>grp:win_switch</name>
+ <_description>Any Win key (while pressed)</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>grp:caps_switch</name>
+ <_description>Caps Lock (while pressed), Alt+Caps Lock does the original capslock action</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>grp:rctrl_switch</name>
+ <_description>Right Ctrl (while pressed)</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>grp:toggle</name>
+ <_description>Right Alt</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>grp:lalt_toggle</name>
+ <_description>Left Alt</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>grp:caps_toggle</name>
+ <_description>Caps Lock</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>grp:shift_caps_toggle</name>
+ <_description>Shift+Caps Lock</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>grp:shift_caps_switch</name>
+ <_description>Caps Lock (to first layout), Shift+Caps Lock (to last layout)</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>grp:win_menu_switch</name>
+ <_description>Left Win (to first layout), Right Win/Menu (to last layout)</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>grp:lctrl_rctrl_switch</name>
+ <_description>Left Ctrl (to first layout), Right Ctrl (to last layout)</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>grp:alt_caps_toggle</name>
+ <_description>Alt+Caps Lock</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>grp:shifts_toggle</name>
+ <_description>Both Shift keys together</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>grp:alts_toggle</name>
+ <_description>Both Alt keys together</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>grp:ctrls_toggle</name>
+ <_description>Both Ctrl keys together</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>grp:ctrl_shift_toggle</name>
+ <_description>Ctrl+Shift</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>grp:lctrl_lshift_toggle</name>
+ <_description>Left Ctrl+Left Shift</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>grp:rctrl_rshift_toggle</name>
+ <_description>Right Ctrl+Right Shift</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>grp:ctrl_alt_toggle</name>
+ <_description>Alt+Ctrl</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>grp:alt_shift_toggle</name>
+ <_description>Alt+Shift</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>grp:alt_space_toggle</name>
+ <_description>Alt+Space</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>grp:menu_toggle</name>
+ <_description>Menu</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>grp:lwin_toggle</name>
+ <_description>Left Win</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>grp:rwin_toggle</name>
+ <_description>Right Win</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>grp:lshift_toggle</name>
+ <_description>Left Shift</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>grp:rshift_toggle</name>
+ <_description>Right Shift</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>grp:lctrl_toggle</name>
+ <_description>Left Ctrl</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>grp:rctrl_toggle</name>
+ <_description>Right Ctrl</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>grp:sclk_toggle</name>
+ <_description>Scroll Lock</_description>
+ </configItem>
+ </option>
+ </group>
+ <group allowMultipleSelection="true">
+ <!-- The key combination used to choose the 3rd (and 4th, together with Shift)
+ level of symbols -->
+ <configItem>
+ <name>lv3</name>
+ <_description>Key to choose 3rd level</_description>
+ </configItem>
+ <option>
+ <configItem>
+ <name>lv3:switch</name>
+ <_description>Right Ctrl</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>lv3:menu_switch</name>
+ <_description>Menu</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>lv3:win_switch</name>
+ <_description>Any Win key</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>lv3:lwin_switch</name>
+ <_description>Left Win</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>lv3:rwin_switch</name>
+ <_description>Right Win</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>lv3:alt_switch</name>
+ <_description>Any Alt key</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>lv3:lalt_switch</name>
+ <_description>Left Alt</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>lv3:ralt_switch</name>
+ <_description>Right Alt</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>lv3:ralt_switch_multikey</name>
+ <_description>Right Alt, Shift+Right Alt key is Multi_Key</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>lv3:ralt_alt</name>
+ <_description>Right Alt key never chooses 3rd level</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>lv3:enter_switch</name>
+ <_description>Enter on keypad</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>lv3:caps_switch</name>
+ <_description>Caps Lock</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>lv3:bksl_switch</name>
+ <_description>Backslash</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>lv3:lsgt_switch</name>
+ <description>&lt;Less/Greater&gt;</description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>lv3:caps_switch_latch</name>
+ <description>Caps Lock (chooses 3rd level, latches when pressed together with another 3rd-level-chooser)</description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>lv3:bksl_switch_latch</name>
+ <description>Backslash chooses 3rd level, latches when pressed together with another 3rd-level-chooser)</description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>lv3:lsgt_switch_latch</name>
+ <description>&lt;Less/Greater&gt; (chooses 3rd level, latches when pressed together with another 3rd-level-chooser)</description>
+ </configItem>
+ </option>
+ </group>
+ <group allowMultipleSelection="true">
+ <!-- Tweaking the position of the "Ctrl" key -->
+ <configItem>
+ <name>ctrl</name>
+ <_description>Ctrl key position</_description>
+ </configItem>
+ <option>
+ <configItem>
+ <name>ctrl:nocaps</name>
+ <_description>Make Caps Lock an additional Ctrl</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>ctrl:swapcaps</name>
+ <_description>Swap Ctrl and Caps Lock</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>ctrl:ctrl_ac</name>
+ <_description>At left of 'A'</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>ctrl:ctrl_aa</name>
+ <_description>At bottom left</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>ctrl:ctrl_ra</name>
+ <_description>Right Ctrl as Right Alt</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>ctrl:ctrl_menu</name>
+ <description>Right Ctrl is mapped to Menu</description>
+ </configItem>
+ </option>
+ </group>
+ <group allowMultipleSelection="true">
+ <!-- Using startard LEDs to indicate the alternative (not first) group(s) -->
+ <configItem>
+ <name>grp_led</name>
+ <_description>Use keyboard LED to show alternative layout</_description>
+ </configItem>
+ <option>
+ <configItem>
+ <name>grp_led:num</name>
+ <_description>Num Lock</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>grp_led:caps</name>
+ <_description>Caps Lock</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>grp_led:scroll</name>
+ <_description>Scroll Lock</_description>
+ </configItem>
+ </option>
+ </group>
+ <group allowMultipleSelection="false">
+ <!-- Select a keypad type -->
+ <configItem>
+ <name>keypad</name>
+ <_description>Numeric keypad layout selection</_description>
+ </configItem>
+ <option>
+ <configItem>
+ <name>keypad:legacy</name>
+ <_description>Legacy</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>keypad:oss</name>
+ <_description>Unicode additions (arrows and math operators)</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>keypad:future</name>
+ <_description>Unicode additions (arrows and math operators). Math operators on default level</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>keypad:legacy_wang</name>
+ <_description>Legacy Wang 724</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>keypad:oss_wang</name>
+ <_description>Wang 724 keypad with unicode additions (arrows and math operators)</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>keypad:future_wang</name>
+ <_description>Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>keypad:hex</name>
+ <_description>Hexadecimal</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>keypad:atm</name>
+ <_description>ATM/phone-style</_description>
+ </configItem>
+ </option>
+ </group>
+ <!-- This option should override the KPDL key defined in keypad; I hope it's declared in the right place -->
+ <group allowMultipleSelection="false">
+ <!-- Select a keypad KPDL variant -->
+ <configItem>
+ <name>kpdl</name>
+ <_description>Numeric keypad delete key behaviour</_description>
+ </configItem>
+ <option>
+ <configItem>
+ <!-- Actually, with KP_DECIMAL, as the old keypad(dot) -->
+ <name>kpdl:dot</name>
+ <_description>Legacy key with dot</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>kpdl:comma</name>
+ <!-- Actually, with KP_SEPARATOR, as the old keypad(comma) -->
+ <_description>Legacy key with comma</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>kpdl:dotoss</name>
+ <_description>Four-level key with dot</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>kpdl:dotoss_latin9</name>
+ <_description>Four-level key with dot, latin-9 restriction</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>kpdl:commaoss</name>
+ <_description>Four-level key with comma</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>kpdl:momayyezoss</name>
+ <_description>Four-level key with momayyez</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>kpdl:kposs</name>
+ <!-- This assumes the KP_ abstract symbols are actually useful for some apps
+ The description needs to be rewritten -->
+ <_description>Four-level key with abstract separators</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>kpdl:semi</name>
+ <_description>Semi-colon on third level</_description>
+ </configItem>
+ </option>
+ </group>
+ <group allowMultipleSelection="false">
+ <!-- Caps Lock tweaks.
+ "Internal" capitalization means capitalization using some internal tables.
+ Otherwise "as Shift" - means using next group. -->
+ <configItem>
+ <name>caps</name>
+ <_description>Caps Lock key behavior</_description>
+ </configItem>
+ <option>
+ <configItem>
+ <name>caps:internal</name>
+ <_description>Caps Lock uses internal capitalization. Shift "pauses" Caps Lock</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>caps:internal_nocancel</name>
+ <_description>Caps Lock uses internal capitalization. Shift doesn't affect Caps Lock</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>caps:shift</name>
+ <_description>Caps Lock acts as Shift with locking. Shift "pauses" Caps Lock</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>caps:shift_nocancel</name>
+ <_description>Caps Lock acts as Shift with locking. Shift doesn't affect Caps Lock</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>caps:capslock</name>
+ <_description>Caps Lock toggles normal capitalization of alphabetic characters</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>caps:numlock</name>
+ <_description>Make Caps Lock an additional Num Lock</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>caps:swapescape</name>
+ <_description>Swap ESC and Caps Lock</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>caps:escape</name>
+ <_description>Make Caps Lock an additional ESC</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>caps:backspace</name>
+ <_description>Make Caps Lock an additional Backspace</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>caps:super</name>
+ <_description>Make Caps Lock an additional Super</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>caps:hyper</name>
+ <_description>Make Caps Lock an additional Hyper</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>caps:shiftlock</name>
+ <_description>Caps Lock toggles Shift so all keys are affected</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>caps:none</name>
+ <_description>Caps Lock is disabled</_description>
+ </configItem>
+ </option>
+ </group>
+ <group allowMultipleSelection="false">
+ <!-- Using special PC keys (Win, Menu) to work as standard X keys (Super, Hyper, etc.) -->
+ <configItem>
+ <name>altwin</name>
+ <_description>Alt/Win key behavior</_description>
+ </configItem>
+ <option>
+ <configItem>
+ <name>altwin:menu</name>
+ <_description>Add the standard behavior to Menu key</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>altwin:meta_alt</name>
+ <_description>Alt and Meta are on Alt keys</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>altwin:ctrl_win</name>
+ <_description>Control is mapped to Win keys (and the usual Ctrl keys)</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>altwin:ctrl_alt_win</name>
+ <_description>Control is mapped to Alt keys, Alt is mapped to Win keys</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>altwin:meta_win</name>
+ <_description>Meta is mapped to Win keys</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>altwin:left_meta_win</name>
+ <_description>Meta is mapped to Left Win</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>altwin:hyper_win</name>
+ <_description>Hyper is mapped to Win-keys</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>altwin:alt_super_win</name>
+ <_description>Alt is mapped to Right Win, Super to Menu</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>altwin:swap_lalt_lwin</name>
+ <_description>Left Alt is swapped with Left Win</_description>
+ </configItem>
+ </option>
+ </group>
+ <group allowMultipleSelection="true">
+ <!-- Tweaking the position of the "Compose" key: mapping to existing PC keys -->
+ <configItem>
+ <name>Compose key</name>
+ <_description>Compose key position</_description>
+ </configItem>
+ <option>
+ <configItem>
+ <name>compose:ralt</name>
+ <_description>Right Alt</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>compose:lwin</name>
+ <_description>Left Win</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>compose:rwin</name>
+ <_description>Right Win</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>compose:menu</name>
+ <_description>Menu</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>compose:lctrl</name>
+ <_description>Left Ctrl</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>compose:rctrl</name>
+ <_description>Right Ctrl</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>compose:caps</name>
+ <_description>Caps Lock</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>compose:102</name>
+ <_description>&lt;Less/Greater&gt;</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>compose:paus</name>
+ <_description>Pause</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>compose:prsc</name>
+ <_description>PrtSc</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>compose:sclk</name>
+ <_description>Scroll Lock</_description>
+ </configItem>
+ </option>
+ </group>
+ <group allowMultipleSelection="true">
+ <configItem>
+ <name>compat</name>
+ <_description>Miscellaneous compatibility options</_description>
+ </configItem>
+ <option>
+ <configItem>
+ <name>numpad:pc</name>
+ <_description>Default numeric keypad keys</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>numpad:mac</name>
+ <_description>Numeric keypad keys work as with Mac</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>numpad:microsoft</name>
+ <_description>Shift with numeric keypad keys works as in MS Windows</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>numpad:shift3</name>
+ <_description>Shift does not cancel Num Lock, chooses 3rd level instead</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>srvrkeys:none</name>
+ <_description>Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>apple:alupckeys</name>
+ <_description>Apple Aluminium Keyboard: emulate PC keys (Print, Scroll Lock, Pause, Num Lock)</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>shift:breaks_caps</name>
+ <_description>Shift cancels Caps Lock</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>misc:typo</name>
+ <_description>Enable extra typographic characters</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>shift:both_capslock</name>
+ <_description>Both Shift-Keys together toggle Caps Lock</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>shift:both_capslock_cancel</name>
+ <description>Both Shift-Keys together activate Caps Lock, one Shift-Key deactivates</description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>shift:both_shiftlock</name>
+ <description>Both Shift-Keys together toggle ShiftLock</description>
+ </configItem>
+ </option>
+ </group>
+ <group allowMultipleSelection="true">
+ <!-- Special shortcuts for the Euro character -->
+ <configItem>
+ <name>eurosign</name>
+ <_description>Adding EuroSign to certain keys</_description>
+ </configItem>
+ <option>
+ <configItem>
+ <name>eurosign:e</name>
+ <_description>E</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>eurosign:2</name>
+ <_description>2</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>eurosign:4</name>
+ <_description>4</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>eurosign:5</name>
+ <_description>5</_description>
+ </configItem>
+ </option>
+ </group>
+ <group allowMultipleSelection="true">
+ <configItem>
+ <name>lv5</name>
+ <_description>Key to choose 5th level</_description>
+ </configItem>
+ <option>
+ <configItem>
+ <name>lv5:lsgt_switch_lock</name>
+ <_description>&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>lv5:ralt_switch_lock</name>
+ <_description>Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>lv5:lwin_switch_lock</name>
+ <_description>Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>lv5:rwin_switch_lock</name>
+ <_description>Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>lv5:lsgt_switch_lock_cancel</name>
+ <_description>&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>lv5:ralt_switch_lock_cancel</name>
+ <_description>Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>lv5:lwin_switch_lock_cancel</name>
+ <_description>Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>lv5:rwin_switch_lock_cancel</name>
+ <_description>Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>lv5:lsgt_switch_lock_cancel</name>
+ <description>&lt;Less/Greater&gt; chooses 5th level and activates level5-Lock when pressed together with another 5th-level-chooser, one press releases the lock</description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>lv5:ralt_switch_lock_cancel</name>
+ <description>Right Alt chooses 5th level and activates level5-Lock when pressed together with another 5th-level-chooser, one press releases the lock</description>
+ </configItem>
+ </option>
+ </group>
+ <group allowMultipleSelection="false">
+ <!-- Let space output NBSP, NNBSP, ZWNJ, and ZWJ for the desired level -->
+ <configItem>
+ <name>nbsp</name>
+ <_description>Using space key to input non-breakable space character</_description>
+ </configItem>
+ <option>
+ <configItem>
+ <name>nbsp:none</name>
+ <_description>Usual space at any level</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>nbsp:level2</name>
+ <_description>Non-breakable space character at second level</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>nbsp:level3</name>
+ <_description>Non-breakable space character at third level</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>nbsp:level3s</name>
+ <_description>Non-breakable space character at third level, nothing at fourth level</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>nbsp:level3n</name>
+ <_description>Non-breakable space character at third level, thin non-breakable space character at fourth level</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>nbsp:level4</name>
+ <_description>Non-breakable space character at fourth level</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>nbsp:level4n</name>
+ <_description>Non-breakable space character at fourth level, thin non-breakable space character at sixth level</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>nbsp:level4nl</name>
+ <_description>Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>nbsp:zwnj2</name>
+ <_description>Zero-width non-joiner character at second level</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>nbsp:zwnj2zwj3</name>
+ <_description>Zero-width non-joiner character at second level, zero-width joiner character at third level</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>nbsp:zwnj2zwj3nb4</name>
+ <_description>Zero-width non-joiner character at second level, zero-width joiner character at third level, non-breakable space character at fourth level</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>nbsp:zwnj2nb3</name>
+ <_description>Zero-width non-joiner character at second level, non-breakable space character at third level</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>nbsp:zwnj2nb3s</name>
+ <_description>Zero-width non-joiner character at second level, non-breakable space character at third level, nothing at fourth level</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>nbsp:zwnj2nb3zwj4</name>
+ <_description>Zero-width non-joiner character at second level, non-breakable space character at third level, zero-width joiner at fourth level</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>nbsp:zwnj2nb3nnb4</name>
+ <_description>Zero-width non-joiner character at second level, non-breakable space character at third level, thin non-breakable space at fourth level</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>nbsp:zwnj3zwj4</name>
+ <_description>Zero-width non-joiner character at third level, zero-width joiner at fourth level</_description>
+ </configItem>
+ </option>
+ </group>
+ <group allowMultipleSelection="true">
+ <configItem>
+ <name>japan</name>
+ <_description>Japanese keyboard options</_description>
+ </configItem>
+ <option>
+ <configItem>
+ <name>japan:kana_lock</name>
+ <_description>Kana Lock key is locking</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>japan:nicola_f_bs</name>
+ <_description>NICOLA-F style Backspace</_description>
+ </configItem>
+ </option>
+ </group>
+ <group allowMultipleSelection="false">
+ <configItem>
+ <name>esperanto</name>
+ <_description>Adding Esperanto circumflexes (supersigno)</_description>
+ </configItem>
+ <option>
+ <configItem>
+ <name>esperanto:qwerty</name>
+ <_description>To the corresponding key in a Qwerty keyboard.</_description>
+ </configItem>
+ </option>
+ <option>
+ <configItem>
+ <name>esperanto:dvorak</name>
+ <_description>To the corresponding key in a Dvorak keyboard.</_description>
+ </configItem>
+ </option>
+ </group>
+ <group allowMultipleSelection="true">
+ <configItem>
+ <name>terminate</name>
+ <_description>Key sequence to kill the X server</_description>
+ </configItem>
+ <option>
+ <configItem>
+ <name>terminate:ctrl_alt_bksp</name>
+ <_description>Control + Alt + Backspace</_description>
+ </configItem>
+ </option>
+ </group>
+ </optionList>
+</xkbConfigRegistry>
diff --git a/xorg-server/xkeyboard-config/rules/bin/Makefile.am b/xorg-server/xkeyboard-config/rules/bin/Makefile.am
new file mode 100644
index 000000000..787e34f8a
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/bin/Makefile.am
@@ -0,0 +1,10 @@
+transform_scripts= \
+mln_s.sh \
+mlnvn_s.sh \
+ml_s.sh \
+mlv_s.sh \
+ml1_s.sh \
+ml1v_s.sh \
+ml1v1_s.sh
+
+EXTRA_DIST=$(transform_scripts)
diff --git a/xorg-server/xkeyboard-config/rules/bin/ml1_s.sh b/xorg-server/xkeyboard-config/rules/bin/ml1_s.sh
new file mode 100644
index 000000000..b09459a5d
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/bin/ml1_s.sh
@@ -0,0 +1,9 @@
+@echo off
+
+set OUTFILE=base.ml1_s.part
+
+if exist %OUTFILE% del %OUTFILE%
+
+gawk "{ if (index($2, """(""") == 0) { printf """ * %%s = pc+%%s%%%%(v[1])\n""", $1, $2; } else { printf """ * %%s = pc+%%s\n""", $1, $2; }}" < layoutsMapping.lst >> %OUTFILE%
+
+gawk "{ printf """ * %%s(%%s) = pc+%%s(%%s)\n""", $1, $2, $3, $4; }" < variantsMapping.lst >> %OUTFILE%
diff --git a/xorg-server/xkeyboard-config/rules/bin/ml1v1_s.sh b/xorg-server/xkeyboard-config/rules/bin/ml1v1_s.sh
new file mode 100644
index 000000000..4d492e02b
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/bin/ml1v1_s.sh
@@ -0,0 +1,7 @@
+@echo off
+
+set OUTFILE=base.ml1v1_s.part
+
+if exist %OUTFILE% del %OUTFILE%
+
+gawk "{ printf """ * %%s %%s = pc+%%s(%%s)\n""", $1, $2, $3, $4; }" < variantsMapping.lst >> %OUTFILE%
diff --git a/xorg-server/xkeyboard-config/rules/bin/ml1v_s.sh b/xorg-server/xkeyboard-config/rules/bin/ml1v_s.sh
new file mode 100644
index 000000000..cec1334c0
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/bin/ml1v_s.sh
@@ -0,0 +1,7 @@
+@echo off
+
+set OUTFILE=base.ml1v_s.part
+
+if exist %OUTFILE% del %OUTFILE%
+
+gawk "{ printf """ * %%s %%s = pc+%%s(%%s)\n""", $1, $2, $3, $4; }" < variantsMapping.lst >> %OUTFILE%
diff --git a/xorg-server/xkeyboard-config/rules/bin/ml_s.sh b/xorg-server/xkeyboard-config/rules/bin/ml_s.sh
new file mode 100644
index 000000000..b7f0d9c46
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/bin/ml_s.sh
@@ -0,0 +1,9 @@
+@echo off
+
+set OUTFILE=base.ml_s.part
+
+if exist %OUTFILE% del %OUTFILE%
+
+gawk "{ printf """ * %%s = pc+%%s\n""", $1, $2; }" < layoutsMapping.lst >> %OUTFILE%
+
+gawk "{ printf """ * %%s(%%s) = pc+%%s(%%s)\n""", $1, $2, $3, $4; }" < variantsMapping.lst >> %OUTFILE%
diff --git a/xorg-server/xkeyboard-config/rules/bin/mln_s.sh b/xorg-server/xkeyboard-config/rules/bin/mln_s.sh
new file mode 100644
index 000000000..66794a4fc
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/bin/mln_s.sh
@@ -0,0 +1,10 @@
+@echo off
+set variant=%1
+
+set OUTFILE=base.ml%variant%_s.part
+
+if exist %OUTFILE% del %OUTFILE%
+
+echo "{ if (index($2, """(""") == 0) { printf """ * %%s = +%%s%%%%(v[%variant%]):%variant%\n""", $1, $2; } else { printf """ * %%s = +%%s:%variant%\n""", $1, $2; }}" < layoutsMapping.lst >> %OUTFILE%
+
+gawk "{ printf """ * %%s(%%s) = +%%s(%%s):%variant%\n""", $1, $2, $3, $4;}" < variantsMapping.lst >> %OUTFILE%
diff --git a/xorg-server/xkeyboard-config/rules/bin/mlnvn_s.sh b/xorg-server/xkeyboard-config/rules/bin/mlnvn_s.sh
new file mode 100644
index 000000000..8e252943b
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/bin/mlnvn_s.sh
@@ -0,0 +1,8 @@
+@echo off
+set variant=%1
+
+set OUTFILE=base.ml%variant%v%variant%_s.part
+
+if exist %OUTFILE% del %OUTFILE%
+
+gawk "{ printf """ * %%s %%s = +%%s(%%s):%variant%\n""", $1, $2, $3, $4;}" < variantsMapping.lst >> %OUTFILE%
diff --git a/xorg-server/xkeyboard-config/rules/bin/mlv_s.sh b/xorg-server/xkeyboard-config/rules/bin/mlv_s.sh
new file mode 100644
index 000000000..573cb930f
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/bin/mlv_s.sh
@@ -0,0 +1,7 @@
+@echo off
+
+set OUTFILE=base.mlv_s.part
+
+if exist %OUTFILE% del %OUTFILE%
+
+gawk "{ printf """ * %%s %%s = pc+%%s(%%s)\n""", $1, $2, $3, $4; }" < variantsMapping.lst >> %OUTFILE%
diff --git a/xorg-server/xkeyboard-config/rules/compat/Makefile.am b/xorg-server/xkeyboard-config/rules/compat/Makefile.am
new file mode 100644
index 000000000..087263427
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/compat/Makefile.am
@@ -0,0 +1,68 @@
+
+transform_files=layoutsMapping.lst variantsMapping.lst
+
+dist_parts=base.o_s.part \
+base.lv_c.part \
+base.l1v1_c.part \
+base.l2v2_c.part \
+base.l3v3_c.part \
+base.l4v4_c.part
+
+scripts_dir=$(srcdir)/../bin
+
+scripts= \
+base.ml2_s.part \
+base.ml3_s.part \
+base.ml4_s.part \
+base.ml2v2_s.part \
+base.ml3v3_s.part \
+base.ml4v4_s.part \
+base.ml_s.part \
+base.ml1_s.part \
+base.mlv_s.part \
+base.ml1v1_s.part \
+base.ml_s.part
+
+if USE_COMPAT_RULES
+
+noinst_SCRIPTS=$(scripts) $(dist_parts)
+
+else
+
+noinst_SCRIPTS=
+
+endif
+
+base.ml2_s.part: $(scripts_dir)/mln_s.sh $(transform_files)
+ sh $< 2 $(srcdir)
+
+base.ml3_s.part: $(scripts_dir)/mln_s.sh $(transform_files)
+ sh $< 3 $(srcdir)
+
+base.ml4_s.part: $(scripts_dir)/mln_s.sh $(transform_files)
+ sh $< 4 $(srcdir)
+
+base.ml2v2_s.part: $(scripts_dir)/mlnvn_s.sh $(transform_files)
+ sh $< 2 $(srcdir)
+
+base.ml3v3_s.part: $(scripts_dir)/mlnvn_s.sh $(transform_files)
+ sh $< 3 $(srcdir)
+
+base.ml4v4_s.part: $(scripts_dir)/mlnvn_s.sh $(transform_files)
+ sh $< 4 $(srcdir)
+
+base.ml_s.part: $(scripts_dir)/ml_s.sh $(transform_files)
+ sh $< $(srcdir)
+
+base.ml1_s.part: $(scripts_dir)/ml1_s.sh $(transform_files)
+ sh $< $(srcdir)
+
+base.mlv_s.part: $(scripts_dir)/mlv_s.sh $(transform_files)
+ sh $< $(srcdir)
+
+base.ml1v1_s.part: $(scripts_dir)/ml1v1_s.sh $(transform_files)
+ sh $< $(srcdir)
+
+EXTRA_DIST=base.lists.part $(transform_files) $(dist_parts)
+
+CLEANFILES=$(scripts)
diff --git a/xorg-server/xkeyboard-config/rules/compat/base.l1v1_c.part b/xorg-server/xkeyboard-config/rules/compat/base.l1v1_c.part
new file mode 100644
index 000000000..64ff0f2f5
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/compat/base.l1v1_c.part
@@ -0,0 +1 @@
+ de neo = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock)
diff --git a/xorg-server/xkeyboard-config/rules/compat/base.l2v2_c.part b/xorg-server/xkeyboard-config/rules/compat/base.l2v2_c.part
new file mode 100644
index 000000000..fea61be76
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/compat/base.l2v2_c.part
@@ -0,0 +1 @@
+ de neo = +caps(caps_lock):2+misc(assign_shift_left_action):2+level5(level5_lock):2
diff --git a/xorg-server/xkeyboard-config/rules/compat/base.l3v3_c.part b/xorg-server/xkeyboard-config/rules/compat/base.l3v3_c.part
new file mode 100644
index 000000000..5a1fb2f8a
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/compat/base.l3v3_c.part
@@ -0,0 +1 @@
+ de neo = +caps(caps_lock):3+misc(assign_shift_left_action):3+level5(level5_lock):3
diff --git a/xorg-server/xkeyboard-config/rules/compat/base.l4v4_c.part b/xorg-server/xkeyboard-config/rules/compat/base.l4v4_c.part
new file mode 100644
index 000000000..ac8a91102
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/compat/base.l4v4_c.part
@@ -0,0 +1 @@
+ de neo = +caps(caps_lock):4+misc(assign_shift_left_action):4+level5(level5_lock):4
diff --git a/xorg-server/xkeyboard-config/rules/compat/base.lists.part b/xorg-server/xkeyboard-config/rules/compat/base.lists.part
new file mode 100644
index 000000000..f1cf7ee22
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/compat/base.lists.part
@@ -0,0 +1,2 @@
+
+! $dvoraklayouts = br ca de ee es fr gb no pl se us
diff --git a/xorg-server/xkeyboard-config/rules/compat/base.lv_c.part b/xorg-server/xkeyboard-config/rules/compat/base.lv_c.part
new file mode 100644
index 000000000..64ff0f2f5
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/compat/base.lv_c.part
@@ -0,0 +1 @@
+ de neo = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock)
diff --git a/xorg-server/xkeyboard-config/rules/compat/base.o_s.part b/xorg-server/xkeyboard-config/rules/compat/base.o_s.part
new file mode 100644
index 000000000..8f1e9e452
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/compat/base.o_s.part
@@ -0,0 +1 @@
+ grp:shift_toggle = +group(shifts_toggle)
diff --git a/xorg-server/xkeyboard-config/rules/compat/layoutsMapping.lst b/xorg-server/xkeyboard-config/rules/compat/layoutsMapping.lst
new file mode 100644
index 000000000..cecda6d8a
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/compat/layoutsMapping.lst
@@ -0,0 +1,27 @@
+ar ara
+ben in(ben)
+bs ba
+cs rs
+cz_qwerty cz(qwerty)
+dev in(deva)
+dvorak us(dvorak)
+dzdwi bt
+el gr
+en_US latin
+guj in(guj)
+gur in(guru)
+iu ca(ike)
+lo la
+kan in(kan)
+mi mao
+ml in(mal)
+ogham ie(ogam)
+ori ie(ori)
+sapmi no(smi)
+sr srp
+syr sy(syc)
+tel in(tel)
+tml in(tam)
+yu srp
+fr-latin9 fr(latin9)
+us_intl us(alt-intl)
diff --git a/xorg-server/xkeyboard-config/rules/compat/makefile b/xorg-server/xkeyboard-config/rules/compat/makefile
new file mode 100644
index 000000000..75610a8e9
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/compat/makefile
@@ -0,0 +1,53 @@
+transform_files=layoutsMapping.lst variantsMapping.lst
+
+scripts_dir=..\bin
+
+SCRIPTS= \
+base.ml2_s.part \
+base.ml3_s.part \
+base.ml4_s.part \
+base.ml2v2_s.part \
+base.ml3v3_s.part \
+base.ml4v4_s.part \
+base.ml_s.part \
+base.ml1_s.part \
+base.mlv_s.part \
+base.ml1v1_s.part \
+base.ml_s.part
+
+SH=cmd /c
+
+base.ml2_s.part: mln_s.bat $(transform_files)
+ $(SH) $< 2
+
+base.ml3_s.part: mln_s.bat $(transform_files)
+ $(SH) $< 3
+
+base.ml4_s.part: mln_s.bat $(transform_files)
+ $(SH) $< 4
+
+base.ml2v2_s.part: mlnvn_s.bat $(transform_files)
+ $(SH) $< 2
+
+base.ml3v3_s.part: mlnvn_s.bat $(transform_files)
+ $(SH) $< 3
+
+base.ml4v4_s.part: mlnvn_s.bat $(transform_files)
+ $(SH) $< 4
+
+base.ml_s.part: ml_s.bat $(transform_files)
+ $(SH) $<
+
+base.ml1_s.part: ml1_s.bat $(transform_files)
+ $(SH) $<
+
+base.mlv_s.part: mlv_s.bat $(transform_files)
+ $(SH) $<
+
+base.ml1v1_s.part: ml1v1_s.bat $(transform_files)
+ $(SH) $<
+
+%.bat: $(scripts_dir)\%.sh
+ copy $< $@
+
+all: $(SCRIPTS)
diff --git a/xorg-server/xkeyboard-config/rules/compat/variantsMapping.lst b/xorg-server/xkeyboard-config/rules/compat/variantsMapping.lst
new file mode 100644
index 000000000..be2a2bc40
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/compat/variantsMapping.lst
@@ -0,0 +1,50 @@
+ben basic in ben
+ben probhat in ben_probhat
+dev basic in deva
+dvorak $dvoraklayouts %v dvorak
+dvorak basic us dvorak
+dvorak pl_basic pl dvorak
+dvorak pl pl dvorak_quotes
+dvorak pl_altquotes pl dvorak_altquotes
+dzdwi basic bt basic
+fi basic fi classic
+ge azerty_tskapo fr geo
+guj basic in guj
+gur basic in guru
+ie laptop ie basic
+ie CloGaelachLaptop ie CloGaelach
+il si1452 ie basic
+in urd in urd-phonetic
+iu basic ca ike
+lo basic la basic
+kan basic in kan
+mal basic in mal
+mal mlplusnum in mal
+ogham basic ie ogam
+ogham laptop ie ogam
+ogham is434 ie ogam_is434
+ogham is434laptop ie ogam_is434
+ori basic in ori
+ro de ro winkeys
+ro us ro std
+ro academic ro std
+ro std_comma ro std
+ro comma ro basic
+ru os ru os_legacy
+pk urd pk urd-phonetic
+sapmi basic no smi
+sapmi nodeadkeys no smi_nodeadkeys
+sapmi sefi fi smi
+sin phonetic-static in sin_phonetic
+syr basic sy syc
+syr phonetic sy syc_phonetic
+tam INSCRIPT in tam
+tam UNI in tam_unicode
+tam NUMERAL-KEYBOARD in tam_keyboard_with_numerals
+tam TAB in tam_TAB
+tam TSCII in tam_TSCII
+tel basic in tel
+yu basic srp latin
+yu unicode srp latinunicode
+yu yz srp latinyz
+yu unicodeyz srp latinunicodeyz
diff --git a/xorg-server/xkeyboard-config/rules/evdev.m_k.part b/xorg-server/xkeyboard-config/rules/evdev.m_k.part
new file mode 100644
index 000000000..4f1c5c30a
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/evdev.m_k.part
@@ -0,0 +1,3 @@
+ pc98 = evdev(pc98)
+ applealu_jis = evdev+macintosh(jisevdev)
+ * = evdev
diff --git a/xorg-server/xkeyboard-config/rules/evdev.m_s.part b/xorg-server/xkeyboard-config/rules/evdev.m_s.part
new file mode 100644
index 000000000..1b423053c
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/evdev.m_s.part
@@ -0,0 +1,3 @@
+ $evdevkbds = +inet(evdev)+inet(%m)
+ applealu_jis = +inet(evdev)+macintosh_vndr/jp(alujiskeys)
+ * = +inet(evdev)
diff --git a/xorg-server/xkeyboard-config/rules/extras/Makefile.am b/xorg-server/xkeyboard-config/rules/extras/Makefile.am
new file mode 100644
index 000000000..16119a3f0
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/extras/Makefile.am
@@ -0,0 +1,52 @@
+transform_files=layoutsMapping.lst variantsMapping.lst
+
+scripts_dir=$(srcdir)/../bin
+
+scripts= \
+base.ml2_s.part \
+base.ml3_s.part \
+base.ml4_s.part \
+base.ml2v2_s.part \
+base.ml3v3_s.part \
+base.ml4v4_s.part \
+base.ml_s.part \
+base.ml1_s.part \
+base.mlv_s.part \
+base.ml1v1_s.part \
+base.ml_s.part
+
+noinst_SCRIPTS=$(scripts)
+
+base.ml2_s.part: $(scripts_dir)/mln_s.sh $(transform_files)
+ sh $< 2 $(srcdir)
+
+base.ml3_s.part: $(scripts_dir)/mln_s.sh $(transform_files)
+ sh $< 3 $(srcdir)
+
+base.ml4_s.part: $(scripts_dir)/mln_s.sh $(transform_files)
+ sh $< 4 $(srcdir)
+
+base.ml2v2_s.part: $(scripts_dir)/mlnvn_s.sh $(transform_files)
+ sh $< 2 $(srcdir)
+
+base.ml3v3_s.part: $(scripts_dir)/mlnvn_s.sh $(transform_files)
+ sh $< 3 $(srcdir)
+
+base.ml4v4_s.part: $(scripts_dir)/mlnvn_s.sh $(transform_files)
+ sh $< 4 $(srcdir)
+
+base.ml_s.part: $(scripts_dir)/ml_s.sh $(transform_files)
+ sh $< $(srcdir)
+
+base.ml1_s.part: $(scripts_dir)/ml1_s.sh $(transform_files)
+ sh $< $(srcdir)
+
+base.mlv_s.part: $(scripts_dir)/mlv_s.sh $(transform_files)
+ sh $< $(srcdir)
+
+base.ml1v1_s.part: $(scripts_dir)/ml1v1_s.sh $(transform_files)
+ sh $< $(srcdir)
+
+EXTRA_DIST=$(transform_files)
+
+CLEANFILES=$(scripts)
diff --git a/xorg-server/xkeyboard-config/rules/extras/layoutsMapping.lst b/xorg-server/xkeyboard-config/rules/extras/layoutsMapping.lst
new file mode 100644
index 000000000..d75b4f44d
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/extras/layoutsMapping.lst
@@ -0,0 +1 @@
+apl extras/apl
diff --git a/xorg-server/xkeyboard-config/rules/extras/makefile b/xorg-server/xkeyboard-config/rules/extras/makefile
new file mode 100644
index 000000000..2712ec269
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/extras/makefile
@@ -0,0 +1,53 @@
+transform_files=layoutsMapping.lst variantsMapping.lst
+
+scripts_dir=..\bin
+
+SCRIPTS= \
+base.ml2_s.part \
+base.ml3_s.part \
+base.ml4_s.part \
+base.ml2v2_s.part \
+base.ml3v3_s.part \
+base.ml4v4_s.part \
+base.ml_s.part \
+base.ml1_s.part \
+base.mlv_s.part \
+base.ml1v1_s.part \
+base.ml_s.part
+
+SH=cmd /c
+
+base.ml2_s.part: mln_s.bat $(transform_files)
+ $(SH) $< 2
+
+base.ml3_s.part: mln_s.bat $(transform_files)
+ $(SH) $< 3
+
+base.ml4_s.part: mln_s.bat $(transform_files)
+ $(SH) $< 4
+
+base.ml2v2_s.part: mlnvn_s.bat $(transform_files)
+ $(SH) $< 2
+
+base.ml3v3_s.part: mlnvn_s.bat $(transform_files)
+ $(SH) $< 3
+
+base.ml4v4_s.part: mlnvn_s.bat $(transform_files)
+ $(SH) $< 4
+
+base.ml_s.part: ml_s.bat $(transform_files)
+ $(SH) $<
+
+base.ml1_s.part: ml1_s.bat $(transform_files)
+ $(SH) $<
+
+base.mlv_s.part: mlv_s.bat $(transform_files)
+ $(SH) $<
+
+base.ml1v1_s.part: ml1v1_s.bat $(transform_files)
+ $(SH) $<
+
+%.bat: $(scripts_dir)\%.sh
+ copy $< $@
+
+all=$(SCRIPTS)
diff --git a/xorg-server/xkeyboard-config/rules/extras/variantsMapping.lst b/xorg-server/xkeyboard-config/rules/extras/variantsMapping.lst
new file mode 100644
index 000000000..36af488d1
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/extras/variantsMapping.lst
@@ -0,0 +1,5 @@
+rs combiningkeys extras/rs combiningkeys
+ir ave extras/ir ave
+us alt-intl-unicode extras/us alt-intl-unicode
+us crd extras/us crd
+us intl-unicode extras/us intl-unicode
diff --git a/xorg-server/xkeyboard-config/rules/makefile b/xorg-server/xkeyboard-config/rules/makefile
new file mode 100644
index 000000000..42f962258
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/makefile
@@ -0,0 +1,189 @@
+ifeq ($(MAKESERVER),1)
+$(error Please do not specify MAKESERVER=1)
+endif
+
+load_makefile compat\makefile DEBUG=$(DEBUG)
+load_makefile extras\makefile DEBUG=$(DEBUG)
+
+DESTDIR=$(MHMAKECONF)\xorg-server\xkbdata\rules
+
+BASE_PARTS_NO_COMPAT = base.hdr.part base.lists.part \
+compat/base.lists.part \
+HDR base.m_k.part \
+HDR base.l1_k.part \
+HDR base.l_k.part \
+HDR base.o_k.part \
+HDR base.ml_g.part \
+HDR base.m_g.part \
+HDR compat/base.mlv_s.part extras/base.mlv_s.part base.mlv_s.part \
+HDR compat/base.ml_s.part extras/base.ml_s.part base.ml_s.part \
+HDR compat/base.ml1_s.part extras/base.ml1_s.part base.ml1_s.part \
+HDR compat/base.ml1v1_s.part extras/base.ml1v1_s.part \
+HDR compat/base.ml2_s.part extras/base.ml2_s.part base.ml2_s.part \
+HDR compat/base.ml3_s.part extras/base.ml3_s.part base.ml3_s.part \
+HDR compat/base.ml4_s.part extras/base.ml4_s.part base.ml4_s.part \
+HDR compat/base.ml2v2_s.part extras/base.ml2v2_s.part \
+HDR compat/base.ml3v3_s.part extras/base.ml3v3_s.part \
+HDR compat/base.ml4v4_s.part extras/base.ml4v4_s.part \
+HDR base.m_s.part \
+HDR compat/base.lv_c.part \
+HDR compat/base.l1v1_c.part \
+HDR compat/base.l2v2_c.part \
+HDR compat/base.l3v3_c.part \
+HDR compat/base.l4v4_c.part \
+HDR base.ml_c.part \
+HDR base.ml1_c.part \
+HDR base.m_t.part \
+HDR base.lo_s.part \
+HDR base.l1o_s.part \
+HDR base.l2o_s.part \
+HDR base.l3o_s.part \
+HDR base.l4o_s.part \
+HDR compat/base.o_s.part base.o_s.part \
+HDR base.o_c.part \
+HDR base.o_t.part
+
+EVDEV_PARTS_NO_COMPAT = base.hdr.part base.lists.part \
+compat/base.lists.part \
+HDR evdev.m_k.part \
+HDR base.l1_k.part \
+HDR base.l_k.part \
+HDR base.o_k.part \
+HDR base.ml_g.part \
+HDR base.m_g.part \
+HDR compat/base.mlv_s.part extras/base.mlv_s.part base.mlv_s.part \
+HDR compat/base.ml_s.part extras/base.ml_s.part base.ml_s.part \
+HDR compat/base.ml1_s.part extras/base.ml1_s.part base.ml1_s.part \
+HDR compat/base.ml1v1_s.part extras/base.ml1v1_s.part \
+HDR compat/base.ml2_s.part extras/base.ml2_s.part base.ml2_s.part \
+HDR compat/base.ml3_s.part extras/base.ml3_s.part base.ml3_s.part \
+HDR compat/base.ml4_s.part extras/base.ml4_s.part base.ml4_s.part \
+HDR compat/base.ml2v2_s.part extras/base.ml2v2_s.part \
+HDR compat/base.ml3v3_s.part extras/base.ml3v3_s.part \
+HDR compat/base.ml4v4_s.part extras/base.ml4v4_s.part \
+HDR evdev.m_s.part \
+HDR compat/base.lv_c.part \
+HDR compat/base.l1v1_c.part \
+HDR compat/base.l2v2_c.part \
+HDR compat/base.l3v3_c.part \
+HDR compat/base.l4v4_c.part \
+HDR base.ml_c.part \
+HDR base.ml1_c.part \
+HDR base.m_t.part \
+HDR base.lo_s.part \
+HDR base.l1o_s.part \
+HDR base.l2o_s.part \
+HDR base.l3o_s.part \
+HDR base.l4o_s.part \
+HDR compat/base.o_s.part base.o_s.part \
+HDR base.o_c.part \
+HDR base.o_t.part
+
+BASE_PARTS = base.hdr.part base.lists.part \
+HDR base.m_k.part \
+HDR base.l1_k.part \
+HDR base.l_k.part \
+HDR \
+HDR base.ml_g.part \
+HDR base.m_g.part \
+HDR extras/base.mlv_s.part base.mlv_s.part \
+HDR extras/base.ml_s.part base.ml_s.part \
+HDR extras/base.ml1_s.part base.ml1_s.part \
+HDR extras/base.ml1v1_s.part \
+HDR extras/base.ml2_s.part base.ml2_s.part \
+HDR extras/base.ml3_s.part base.ml3_s.part \
+HDR extras/base.ml4_s.part base.ml4_s.part \
+HDR extras/base.ml2v2_s.part \
+HDR extras/base.ml3v3_s.part \
+HDR extras/base.ml4v4_s.part \
+HDR base.m_s.part \
+HDR \
+HDR \
+HDR \
+HDR \
+HDR \
+HDR base.ml_c.part \
+HDR base.ml1_c.part \
+HDR base.m_t.part \
+HDR \
+HDR base.l1o_s.part \
+HDR base.l2o_s.part \
+HDR base.l3o_s.part \
+HDR base.l4o_s.part \
+HDR base.o_s.part \
+HDR base.o_c.part \
+HDR base.o_t.part
+
+EVDEV_PARTS = base.hdr.part base.lists.part \
+HDR evdev.m_k.part \
+HDR base.l1_k.part \
+HDR base.l_k.part \
+HDR \
+HDR base.ml_g.part \
+HDR base.m_g.part \
+HDR extras/base.mlv_s.part base.mlv_s.part \
+HDR extras/base.ml_s.part base.ml_s.part \
+HDR extras/base.ml1_s.part base.ml1_s.part \
+HDR extras/base.ml1v1_s.part \
+HDR extras/base.ml2_s.part base.ml2_s.part \
+HDR extras/base.ml3_s.part base.ml3_s.part \
+HDR extras/base.ml4_s.part base.ml4_s.part \
+HDR extras/base.ml2v2_s.part \
+HDR extras/base.ml3v3_s.part \
+HDR extras/base.ml4v4_s.part \
+HDR evdev.m_s.part \
+HDR \
+HDR \
+HDR \
+HDR \
+HDR \
+HDR base.ml_c.part \
+HDR base.ml1_c.part \
+HDR base.m_t.part \
+HDR \
+HDR base.l1o_s.part \
+HDR base.l2o_s.part \
+HDR base.l3o_s.part \
+HDR base.l4o_s.part \
+HDR base.o_s.part \
+HDR base.o_c.part \
+HDR base.o_t.part
+
+RULES_FILES = base evdev xfree98
+
+LST_FILES = base.lst evdev.lst
+
+$(DESTDIR)\%.lst: $(DESTDIR)\%.xml
+ perl xml2lst.pl < $< > $@
+
+$(DESTDIR)\base: compat\all $(BASE_PARTS_NO_COMPAT)
+ merge $@ $(BASE_PARTS)
+
+$(DESTDIR)\evdev: compat\all $(EVDEV_PARTS_NO_COMPAT)
+ merge $@ $(EVDEV_PARTS)
+
+ALL_RULES_FILES = $(RULES_FILES) $(LST_FILES) \
+xkb.dtd README
+
+COMPATFILES=xorg xorg.xml xorg.lst
+$(DESTDIR)\xorg: $(DESTDIR)\base
+ copy $< $@
+$(DESTDIR)\xorg%: $(DESTDIR)\base%
+ copy $< $@
+
+rules_DATA = $(ALL_RULES_FILES) $(COMPATFILES)
+
+xml_DATA = base.xml evdev.xml base.extras.xml evdev.extras.xml
+
+$(DESTDIR)\%.xml: %.xml.in
+ copy $< $@
+
+$(DESTDIR)\evdev.xml: base.xml.in
+ cp $< $@
+
+$(DESTDIR)\evdev.extras.xml: base.extras.xml.in
+ cp $< $@
+
+DATA_FILES=$(rules_DATA:%=$(DESTDIR)\%) $(xml_DATA:%=$(DESTDIR)\%)
+
+include ..\xkbrules.mak
diff --git a/xorg-server/xkeyboard-config/rules/merge.py b/xorg-server/xkeyboard-config/rules/merge.py
new file mode 100644
index 000000000..442a866f2
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/merge.py
@@ -0,0 +1,13 @@
+import sys
+
+pOUT=open(sys.argv[1],"wb")
+pHDR=open("HDR","r")
+for item in sys.argv[2:]:
+ if item == 'HDR':
+ pOUT.write("\n")
+ pOUT.write(pHDR.readline())
+ else:
+ pOUT.write(open(item,"rb").read())
+
+pOUT.close()
+
diff --git a/xorg-server/xkeyboard-config/rules/merge.sh b/xorg-server/xkeyboard-config/rules/merge.sh
new file mode 100644
index 000000000..b18af7c3d
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/merge.sh
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+INDIR=`dirname $0`
+DEST=$1
+shift
+
+if [ -z "$HDR" ]; then
+ HDR="HDR"
+fi
+
+basename=`basename $0`
+echo "// DO NOT EDIT THIS FILE - IT WAS AUTOGENERATED BY $basename FROM rules/*.part" >$DEST
+
+for i in $*; do
+ if [ "$i" = "$HDR" ] || [ "$i" = "HDR" ]; then
+ echo >> $DEST;
+ read hdr
+ echo "$hdr" >> $DEST
+ elif test -f $i; then
+ cat $i >> $DEST || exit 1
+ else
+ cat $INDIR/$i >> $DEST || exit 1
+ fi
+done < $HDR
+
diff --git a/xorg-server/xkeyboard-config/rules/xfree98 b/xorg-server/xkeyboard-config/rules/xfree98
new file mode 100644
index 000000000..ca7a18bf7
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/xfree98
@@ -0,0 +1,29 @@
+//
+// Rules for resolving XKB components for use with XFree86
+// Copyright 1996 by Joseph Moss
+//
+// $XFree86: xc/programs/xkbcomp/rules/xfree86,v 3.5 1996/12/17 21:03:59 dawes Exp $
+//
+
+! model = keycodes geometry
+ pc98 = xfree98(pc98) nec(pc98)
+ jp106 = xfree98(jp106) pc(jp106)
+
+! model layout = symbols
+ pc98 nec_vndr/jp = nec_vndr/jp(pc98)
+ jp106 jp = jp
+
+! model layout = compat types
+ * * = complete complete
+
+! option = symbols
+ grp:switch = +group(switch)
+ grp:toggle = +group(toggle)
+ grp:shift_toggle = +group(shifts_toggle)
+ grp:ctrl_shift_toggle = +group(ctrl_shift_toggle)
+ grp:ctrl_alt_toggle = +group(ctrl_alt_toggle)
+ ctrl:nocaps = +ctrl(nocaps)
+ ctrl:swapcaps = +ctrl(swapcaps)
+ ctrl:ctrl_ac = +ctrl(ctrl_ac)
+ ctrl:ctrl_aa = +ctrl(ctrl_aa)
+
diff --git a/xorg-server/xkeyboard-config/rules/xkb.dtd b/xorg-server/xkeyboard-config/rules/xkb.dtd
new file mode 100644
index 000000000..4452712fd
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/xkb.dtd
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+ Description: XKB configuration file DTD
+ Author: Sergey V. Udaltsov
+
+-->
+
+<!ELEMENT xkbConfigRegistry (modelList,layoutList,optionList)>
+
+<!ATTLIST xkbConfigRegistry
+ version CDATA "1.0">
+
+<!ELEMENT modelList (model*)>
+
+<!ELEMENT model (configItem)>
+
+<!ELEMENT layoutList (layout*)>
+
+<!ELEMENT layout (configItem,variantList?)>
+
+<!ELEMENT optionList (group*)>
+
+<!ELEMENT variantList (variant*)>
+
+<!ELEMENT variant (configItem)>
+
+<!ELEMENT group (configItem,option*)>
+<!ATTLIST group
+ allowMultipleSelection (true|false) "false">
+
+<!ELEMENT option (configItem)>
+
+<!ELEMENT configItem (name,shortDescription*,description*,vendor?,countryList?,languageList?)>
+
+<!ATTLIST configItem
+ popularity (standard|exotic) "standard">
+
+<!ELEMENT name (#PCDATA)>
+
+<!ELEMENT shortDescription (#PCDATA)>
+<!ATTLIST shortDescription
+ xml:lang CDATA #IMPLIED>
+
+<!ELEMENT description (#PCDATA)>
+<!ATTLIST description
+ xml:lang CDATA #IMPLIED>
+
+<!ELEMENT vendor (#PCDATA)>
+
+<!ELEMENT countryList (iso3166Id+)>
+
+<!ELEMENT iso3166Id (#PCDATA)>
+
+<!ELEMENT languageList (iso639Id+)>
+
+<!ELEMENT iso639Id (#PCDATA)>
+
diff --git a/xorg-server/xkeyboard-config/rules/xml2lst.pl b/xorg-server/xkeyboard-config/rules/xml2lst.pl
new file mode 100644
index 000000000..478fce89c
--- /dev/null
+++ b/xorg-server/xkeyboard-config/rules/xml2lst.pl
@@ -0,0 +1,288 @@
+#!/usr/bin/perl
+
+# converts the <rules>.xml file to the old format <rules>.lst file
+#
+# Usage:
+#
+# perl xml2lst.pl [lang] < filename.xml > filename.lst
+#
+# author Ivan Pascal
+
+if (@ARGV) {
+ $lang = shift @ARGV;
+} else {
+ $lang = '';
+}
+
+$doc = new_document( 0, '');
+parse('', $doc);
+
+($reg) = node_by_name($doc, '/xkbConfigRegistry');
+@models = node_by_name($reg, 'modelList/model/configItem');
+@layouts = node_by_name($reg, 'layoutList/layout/configItem');
+@options = node_by_name($reg, 'optionList/group/configItem');
+
+print "! model\n";
+for $i (@models) {
+ ($name) = node_by_name($i, 'name');
+ @desc = node_by_name($i, 'description');
+ $descr = with_attribute(\@desc, 'xml:lang='.$lang);
+ if (! defined $descr) {
+ $descr = with_attribute(\@desc, 'xml:lang=');
+ }
+ printf(" %-15s %s\n", text_child($name), text_child($descr));
+}
+
+print "\n! layout\n";
+for $i (@layouts) {
+ ($name) = node_by_name($i, 'name');
+ @desc = node_by_name($i, 'description');
+ $descr = with_attribute(\@desc, 'xml:lang='.$lang);
+ if (! defined $descr ) {
+ $descr = with_attribute(\@desc, 'xml:lang=');
+ }
+ printf(" %-15s %s\n", text_child($name), text_child($descr));
+}
+
+print "\n! variant\n";
+for $l (@layouts) {
+ ($lname) = node_by_name($l, 'name');
+ @variants = node_by_name($l, '../variantList/variant/configItem');
+ for $v (@variants) {
+ ($name) = node_by_name($v, 'name');
+ @desc = node_by_name($v, 'description');
+ $descr = with_attribute(\@desc, 'xml:lang='.$lang);
+ if (! defined $descr) {
+ $descr = with_attribute(\@desc, 'xml:lang=');
+ }
+ printf(" %-15s %s: %s\n",
+ text_child($name), text_child($lname), text_child($descr));
+ }
+}
+
+print "\n! option\n";
+for $g (@options) {
+ ($name) = node_by_name($g, 'name');
+ @desc = node_by_name($g, 'description');
+ $descr = with_attribute(\@desc, 'xml:lang='.$lang);
+ if (! defined $descr) {
+ $descr = with_attribute(\@desc, 'xml:lang=');
+ }
+ printf(" %-20s %s\n", text_child($name), text_child($descr));
+
+ @opts = node_by_name($g, '../option/configItem');
+ for $o (@opts) {
+ ($name) = node_by_name($o, 'name');
+ @desc = node_by_name($o, 'description');
+ $descr = with_attribute(\@desc, 'xml:lang='.$lang);
+ if (! defined $descr) {
+ $descr = with_attribute(\@desc, 'xml:lang=');
+ }
+ printf(" %-20s %s\n",
+ text_child($name), text_child($descr));
+ }
+}
+
+sub with_attribute {
+ local ($nodelist, $attrexpr) = @_;
+ local ($attr, $value) = split (/=/, $attrexpr);
+ local ($node, $attrvalue);
+ if (defined $value && $value ne '') {
+ $value =~ s/"//g;
+ foreach $node (@{$nodelist}) {
+ $attrvalue = node_attribute($node, $attr);
+ if (defined $attrvalue && $attrvalue eq $value) {
+ return $node;
+ }
+ }
+ } else {
+ foreach $node (@{$nodelist}) {
+ if (! defined node_attribute($node, $attr)) {
+ return $node;
+ }
+ }
+ }
+ undef;
+}
+
+# Subroutines
+
+sub parse {
+ local $intag = 0;
+ my (@node_stack, $parent);
+ $parent = @_[1];
+ local ($tag, $text);
+
+ while (<>) {
+ chomp;
+ @str = split /([<>])/;
+ shift @str if ($str[0] eq '' || $str[0] =~ /^[ \t]*$/);
+
+ while (scalar @str) {
+ $token = shift @str;
+ if ($token eq '<') {
+ $intag = 1;
+ if (defined $text) {
+ add_text_node($parent, $text);
+ undef $text;
+ }
+ } elsif ($token eq '>') {
+ $intag = 0;
+ if ($tag =~ /^\/(.*)/) { # close tag
+ $parent = pop @node_stack;
+ } elsif ($tag =~ /^([^\/]*)\/$/) {
+ empty_tag($parent, $1);
+ } else {
+ if (defined ($node = open_tag($parent, $tag))) {
+ push @node_stack, $parent;
+ $parent = $node;
+ }
+ }
+ undef $tag;
+ } else {
+ if ($intag == 1) {
+ if (defined $tag) {
+ $tag .= ' '. $token;
+ } else {
+ $tag = $token;
+ }
+ } else {
+ if (defined $text) {
+ $text .= "\n" . $token;
+ } else {
+ $text = $token;
+ }
+ }
+ }
+ }
+ }
+}
+
+sub new_document {
+ $doc = new_node( 0, '', 'DOCUMENT');
+ $doc->{CHILDREN} = [];
+ return $doc;
+}
+
+sub new_node {
+ local ($parent_node, $tag, $type) = @_;
+
+ my %node;
+ $node{PARENT} = $parent_node;
+ $node{TYPE} = $type;
+
+ if ($type eq 'COMMENT' || $type eq 'TEXT') {
+ $node{TEXT} = $tag;
+ $node{NAME} = $type;
+ return \%node;
+ }
+
+ local ($tname, $attr) = split(' ', $tag, 2);
+ $node{NAME} = $tname;
+
+ if (defined $attr && $attr ne '') {
+ my %attr_table;
+ local @attr_list = split ( /"/, $attr);
+ local ($name, $value);
+ while (scalar @attr_list) {
+ $name = shift @attr_list;
+ $name =~ s/[ =]//g;
+ next if ($name eq '');
+ $value = shift @attr_list;
+ $attr_table{$name} =$value;
+ }
+ $node{ATTRIBUTES} = \%attr_table;
+ }
+ return \%node;
+}
+
+sub add_node {
+ local ($parent_node, $node) = @_;
+ push @{$parent_node->{CHILDREN}}, $node;
+
+ local $tname = $node->{NAME};
+ if (defined $parent_node->{$tname}) {
+ push @{$parent_node->{$tname}}, $node
+ } else {
+ $parent_node->{$tname} = [ $node ];
+ }
+}
+
+sub empty_tag {
+ local ($parent_node, $tag) = @_;
+ local $node = new_node($parent_node, $tag, 'EMPTY');
+ add_node($parent_node, $node);
+}
+
+sub open_tag {
+ local ($parent_node, $tag) = @_;
+ local $node;
+
+ if ($tag =~ /^\?.*/ || $tag =~ /^\!.*/) {
+ $node = new_node($parent_node, $tag, 'COMMENT');
+ add_node($parent_node, $node);
+ undef; return;
+ } else {
+ $node = new_node($parent_node, $tag, 'NODE');
+ $node->{CHILDREN} = [];
+ add_node($parent_node, $node);
+ return $node;
+ }
+}
+
+sub add_text_node {
+ local ($parent_node, $text) = @_;
+ local $node = new_node($parent_node, $text, 'TEXT');
+ add_node($parent_node, $node);
+}
+
+sub node_by_name {
+ local ($node, $name) = @_;
+ local ($tagname, $path) = split(/\//, $name, 2);
+
+ my @nodelist;
+
+ if ($tagname eq '') {
+ while ($node->{PARENT} != 0) {
+ $node = $node->{PARENT};
+ }
+ sublist_by_name($node, $path, \@nodelist);
+ } else {
+ sublist_by_name($node, $name, \@nodelist);
+ }
+ return @nodelist;
+}
+
+sub sublist_by_name {
+ local ($node, $name, $res) = @_;
+ local ($tagname, $path) = split(/\//, $name, 2);
+
+ if (! defined $path) {
+ push @{$res}, (@{$node->{$tagname}});
+ return;
+ }
+
+ if ($tagname eq '..' && $node->{PARENT} != 0) {
+ $node = $node->{PARENT};
+ sublist_by_name($node, $path, $res);
+ } else {
+ local $n;
+ for $n (@{$node->{$tagname}}) {
+ sublist_by_name($n, $path, $res);
+ }
+ }
+}
+
+sub node_attribute {
+ local $node = @_[0];
+ if (defined $node->{ATTRIBUTES}) {
+ return $node->{ATTRIBUTES}{@_[1]};
+ }
+ undef;
+}
+
+sub text_child {
+ local ($node) = @_;
+ local ($child) = node_by_name($node, 'TEXT');
+ return $child->{TEXT};
+}