I am playing with xkeyboard-config. Currently, I'm trying to understand the rules files.
xkbcomp to get the current keymap from the X server and write it to a file. This keymap is the default keymap, which loads without errors when
setxkbmap is run without any arguments. I've then pulled the individual components into their own files, and I've placed the files into a directory structure resembling the xkb config directory structure.
It looks like this:
xkb ├── compat │ └── current ├── geometry │ └── current ├── keycodes │ └── current ├── rules │ ├── current │ ├── current.lst │ └── current.xml ├── symbols │ └── current └── types └── current
I have created the files in the rules subdirectory myself in an attempt to create a minimal set of rules files capable of loading a single layout.
When I point
setxkbmap at this directory and try to load the keymap therin, I get an error, despite not having at all changed the contents of the components.
$ setxkbmap -Ixkb -v 10 -rules current -layout current -model current -variant current Setting verbose level to 10 locale is C Warning! Multiple definitions of rules file Using command line, ignoring X server Warning! Multiple definitions of keyboard model Using command line, ignoring X server Warning! Multiple definitions of keyboard layout Using command line, ignoring X server Trying to load rules file ./rules/current... Trying to load rules file /usr/share/X11/xkb/rules/current... Trying to load rules file xkb/rules/current... Success. Applied rules from current: rules: current model: current layout: current variant: current Trying to build keymap using the following components: keycodes: current types: current compat: current symbols: current geometry: current Error loading new keyboard description
If I load the keymap by adding the
setxkbmap, and piping the result into
xkbcomp, the keymap is compiled and loaded without any errors.
Since the only things that have substantially changed from how the X server loads the keymap to how I load the keymap are the rules files being used and the organization of the components, I'm presuming that the source of the error resides there. What is wrong with the setup that I have created? Why do I get an error when I try to reload the keymap using
For reference, the contents of the rules files follow.
! model layout variant = keycodes types compat symbols geometry current current current = current current current current current
! layout current Current Layout
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE xkbConfigRegistry SYSTEM "xkb.dtd"> <xkbConfigRegistry version="1.1"> <modelList> <model> <configItem> <name>current</name> <description>Current Model</description> <vendor>Zistack</vendor> </configItem> </model> </modelList> <layoutList> <layout> <configItem> <name>current</name> <description>Current Layout</description> <languageList> <iso639Id>eng</iso639Id> </languageList> </configItem> <variantList> <variant> <configItem> <name>current</name> <shortDescription>current</shortDescription> <description>current</description> <languageList> <iso639Id>eng</iso639Id> </languageList> </configItem> </variant> </variantList> </layout> </layoutList> </xkbConfigRegistry>