The penmux module keytalbe xsd schema is the definition of keymappings to use specific module functions.
Here is the whole schema for the current version:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="KeyType">
<xs:sequence>
<xs:element name="Key" type="xs:string" />
<xs:element name="Func" type="xs:string" />
<xs:element name="Description" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:element name="PenmuxModuleKeytable">
<xs:complexType>
<xs:sequence>
<xs:element name="PrefixKey" type="xs:string" />
<xs:element name="Key" type="KeyType" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
We'll go through all the relevant parts of the schema and describe what the elements are for.
The PenmuxModuleKeytable is the actual module keytable description itself:
<xs:element name="PenmuxModuleKeytable">
<xs:complexType>
<xs:sequence>
<xs:element name="PrefixKey" type="xs:string" />
<xs:element name="Key" type="KeyType" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
We'll now go through all the elements one by one to describe what they are doing.
The PrefixKey defines the key that is needed to enter the module keytable. All other keybindings require this prefix to be executed.
The Key element is of type KeyType and defines the function triggered by the key press.
A KeyType defines a fuction that is requested to be executed by the module:
<xs:complexType name="KeyType">
<xs:sequence>
<xs:element name="Key" type="xs:string" />
<xs:element name="Func" type="xs:string" />
<xs:element name="Description" type="xs:string" />
</xs:sequence>
</xs:complexType>
We'll now go through the different types and the attributes and describe their behavior.
The key which is referenced. A.e.: 'n' will refer to the n key of the keyboard.
The Func element is a string that will be parsed by the module and matched to a function that should be executed.
More about this in the Module development guide
The Description element is a description of what the function is about to do.