mirror of
https://github.com/keymanapp/keyman.git
synced 2026-09-26 17:47:40 +00:00
kmc-convert provides tooling to convert between various common keyboard description file formats. Each conversion will be implemented in its single, separate module (and each module will done in its own PR) This PR will address the conversion **keylayout → kmn** Co-authored-by: Marc Durdin <marc@durdin.net>
108 lines
4 KiB
XML
108 lines
4 KiB
XML
|
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!-- Created with Liquid Technologies Online Tools 1.0 (https://www.liquid-technologies.com) -->
|
|
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
|
|
|
|
<xs:element name="keyboard">
|
|
<xs:complexType>
|
|
<xs:sequence>
|
|
|
|
<!-- in TN 2056, the 'layouts' element is defined as maxOccurs="unbounded",
|
|
but in practice, only one 'layouts' element is used per .keylayout file.
|
|
<xs:element name="layouts" minOccurs="1" maxOccurs="unbounded"> -->
|
|
<xs:element name="layouts" minOccurs="1" maxOccurs="1">
|
|
<xs:complexType>
|
|
<xs:sequence>
|
|
<xs:element name="layout" minOccurs="1" maxOccurs="unbounded">
|
|
<xs:attribute name="first" />
|
|
<xs:attribute name="last" />
|
|
<xs:attribute name="mapSet" />
|
|
<xs:attribute name="modifiers" />
|
|
</xs:element>
|
|
</xs:sequence>
|
|
<xs:attribute />
|
|
</xs:complexType>
|
|
</xs:element>
|
|
|
|
<xs:element name="modifierMap" minOccurs="1" maxOccurs="unbounded">
|
|
<xs:complexType>
|
|
<xs:sequence>
|
|
<xs:element name="keyMapSelect" minOccurs="1" maxOccurs="unbounded">
|
|
<xs:complexType>
|
|
<xs:sequence>
|
|
<xs:element name="modifier" minOccurs="1" maxOccurs="unbounded">
|
|
<xs:attribute name="keys" />
|
|
</xs:element>
|
|
</xs:sequence>
|
|
<xs:attribute name="mapIndex" />
|
|
</xs:complexType>
|
|
</xs:element>
|
|
</xs:sequence>
|
|
<xs:attribute name="defaultIndex" />
|
|
<xs:attribute name="id" />
|
|
</xs:complexType>
|
|
</xs:element>
|
|
|
|
<xs:element name="keyMapSet" minOccurs="1" maxOccurs="unbounded">
|
|
<xs:complexType>
|
|
<xs:sequence>
|
|
<xs:element name="keyMap" minOccurs="1" maxOccurs="unbounded">
|
|
<xs:complexType>
|
|
<xs:sequence>
|
|
<xs:element name="key" minOccurs="1" maxOccurs="unbounded">
|
|
<xs:attribute name="code" />
|
|
<xs:attribute name="action" />
|
|
<xs:attribute name="output" />
|
|
</xs:element>
|
|
</xs:sequence>
|
|
<xs:attribute name="index" />
|
|
<xs:attribute name="baseIndex" />
|
|
<xs:attribute name="baseMapSet" />
|
|
</xs:complexType>
|
|
</xs:element>
|
|
<xs:attribute name="id" />
|
|
</xs:sequence>
|
|
</xs:complexType>
|
|
</xs:element>
|
|
|
|
<xs:element name="actions" minOccurs="0" maxOccurs="1">
|
|
<xs:complexType>
|
|
<xs:sequence>
|
|
<xs:element name="action" minOccurs="1" maxOccurs="unbounded">
|
|
<xs:complexType>
|
|
<xs:sequence>
|
|
<xs:element name="when" minOccurs="1" maxOccurs="unbounded">
|
|
<xs:attribute name="state" />
|
|
<xs:attribute name="output" />
|
|
<xs:attribute name="next" />
|
|
</xs:element>
|
|
</xs:sequence>
|
|
<xs:attribute name="id" />
|
|
</xs:complexType>
|
|
</xs:element>
|
|
</xs:sequence>
|
|
<xs:attribute />
|
|
</xs:complexType>
|
|
</xs:element>
|
|
|
|
<xs:element name="terminators" minOccurs="0" maxOccurs="1">
|
|
<xs:complexType>
|
|
<xs:sequence>
|
|
<xs:element name="when" minOccurs="1" maxOccurs="unbounded">
|
|
<xs:attribute name="state" />
|
|
<xs:attribute name="output" />
|
|
</xs:element>
|
|
</xs:sequence>
|
|
<xs:attribute />
|
|
</xs:complexType>
|
|
</xs:element>
|
|
|
|
<xs:attribute name="group" />
|
|
<xs:attribute name="id" />
|
|
<xs:attribute name="name" />
|
|
<xs:attribute name="maxout" />
|
|
</xs:sequence>
|
|
</xs:complexType>
|
|
</xs:element>
|
|
</xs:schema>
|