From 4f736752bbdf3bbf1a6325af7ad470198aa5a82a Mon Sep 17 00:00:00 2001 From: marha Date: Sat, 20 Mar 2010 15:17:43 +0000 Subject: libxcb git update --- libxcb/xcb-proto/autogen.sh | 12 + libxcb/xcb-proto/doc/xml-xcb.txt | 30 +- libxcb/xcb-proto/src/Makefile.am | 1 + libxcb/xcb-proto/src/ge.xml | 42 + libxcb/xcb-proto/src/import.py | 66 + libxcb/xcb-proto/src/size.py | 76 + libxcb/xcb-proto/src/type.py | 74 + libxcb/xcb-proto/src/xcb.xsd | 86 +- libxcb/xcb-proto/src/xf86vidmode.xml | 464 ++++++ libxcb/xcb-proto/src/xkb.xml | 2759 ++++++++++++++++++++++++++++++++++ 10 files changed, 3604 insertions(+), 6 deletions(-) create mode 100644 libxcb/xcb-proto/autogen.sh create mode 100644 libxcb/xcb-proto/src/ge.xml create mode 100644 libxcb/xcb-proto/src/import.py create mode 100644 libxcb/xcb-proto/src/size.py create mode 100644 libxcb/xcb-proto/src/type.py create mode 100644 libxcb/xcb-proto/src/xf86vidmode.xml create mode 100644 libxcb/xcb-proto/src/xkb.xml (limited to 'libxcb/xcb-proto') diff --git a/libxcb/xcb-proto/autogen.sh b/libxcb/xcb-proto/autogen.sh new file mode 100644 index 000000000..904cd6746 --- /dev/null +++ b/libxcb/xcb-proto/autogen.sh @@ -0,0 +1,12 @@ +#! /bin/sh + +srcdir=`dirname $0` +test -z "$srcdir" && srcdir=. + +ORIGDIR=`pwd` +cd $srcdir + +autoreconf -v --install || exit 1 +cd $ORIGDIR || exit $? + +$srcdir/configure --enable-maintainer-mode "$@" diff --git a/libxcb/xcb-proto/doc/xml-xcb.txt b/libxcb/xcb-proto/doc/xml-xcb.txt index feb99844f..3c6a15519 100644 --- a/libxcb/xcb-proto/doc/xml-xcb.txt +++ b/libxcb/xcb-proto/doc/xml-xcb.txt @@ -225,8 +225,17 @@ enum; the value is restricted to one of the constants named in the enum. defining the set of values included, and a list containing these values. value-mask-type gives the type of the bitmask; this must be CARD16 or CARD32. value-mask-name gives the field name of the bitmask, and - value-list-name gives the field name of the list of values. + value-list-name gives the field name of the list of values. Please use + instead for new protocol definitions. + switch expression + bitcase expression, fields + + This element represents conditional inclusion of fields. It can be viewed + as sequence of multiple ifs: if ( switch expression & bitcase expression ) + is equal to bitcase expression, bitcase fields are included in structure. + It can be used only as the last field of structure. New protocol definitions + should prefer to use this instead of . Expressions ----------- @@ -256,3 +265,22 @@ Expressions The bit element represents a literal bitmask value in an expression. The integer must be in the range 0..31, expanding to (1<enum item identifier + + This element represents a reference to item of enum. + +expression + + This element represents a unary operator, with the op attribute specifying + which operator. The only supported operation so far is ~, and its semantic + is identical to the corresponding operator in C. + + + + This element represents a sumation of the elements of the referenced list. + +expression + + This element represents the number of bits set in the expression. + diff --git a/libxcb/xcb-proto/src/Makefile.am b/libxcb/xcb-proto/src/Makefile.am index 0f0dfbcda..e1e2743be 100644 --- a/libxcb/xcb-proto/src/Makefile.am +++ b/libxcb/xcb-proto/src/Makefile.am @@ -21,6 +21,7 @@ xcbinclude_HEADERS = \ xfixes.xml \ xinerama.xml \ xinput.xml \ + xkb.xml \ xprint.xml \ xselinux.xml \ xtest.xml \ diff --git a/libxcb/xcb-proto/src/ge.xml b/libxcb/xcb-proto/src/ge.xml new file mode 100644 index 000000000..3a6210d97 --- /dev/null +++ b/libxcb/xcb-proto/src/ge.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + diff --git a/libxcb/xcb-proto/src/import.py b/libxcb/xcb-proto/src/import.py new file mode 100644 index 000000000..eb58f5561 --- /dev/null +++ b/libxcb/xcb-proto/src/import.py @@ -0,0 +1,66 @@ +#!/usr/bin/python + +from xml.sax.saxutils import XMLFilterBase, XMLGenerator +from xml.sax import make_parser +import sys, os + +path = [os.path.curdir, 'extensions'] +def find_file_on_path(name): + for d in path: + test = os.path.join(d, name) + if os.path.isfile(test): + return test + raise OSError(errno.ENOENT, os.strerror(errno.ENOENT), name) + +seen = {} + +class ProcessImports(XMLFilterBase): + def setContentHandler(self, handler): + self.handler = handler + XMLFilterBase.setContentHandler(self, handler) + + def ensure(self, name): + if not seen.has_key(name): + child = ProcessImports(make_parser()) + child.setContentHandler(self.handler) + child.parse(find_file_on_path(name + '.xml')) + + def startDocument(self): + pass + def endDocument(self): + pass + + inimport = None + + def startElement(self, name, attrs): + assert self.inimport is None + if name == 'import': + self.inimport = "" + return + XMLFilterBase.startElement(self, name, attrs) + if name == 'xcb': + seen[attrs['header']] = True + self.ensure('xproto') + + def characters(self, content): + if self.inimport is not None: + self.inimport += content + else: + XMLFilterBase.characters(self, content) + + def endElement(self, name): + if name == 'import': + self.ensure(self.inimport) + self.inimport = None + return + XMLFilterBase.endElement(self, name) + +out = XMLGenerator() +importer = ProcessImports(make_parser()) +importer.setContentHandler(out) +out.startDocument() +if len(sys.argv) > 1: + importer.parse(sys.argv[1]) +else: + importer.parse(sys.stdin) +out.endDocument() diff --git a/libxcb/xcb-proto/src/size.py b/libxcb/xcb-proto/src/size.py new file mode 100644 index 000000000..5ead8b238 --- /dev/null +++ b/libxcb/xcb-proto/src/size.py @@ -0,0 +1,76 @@ +#!/usr/bin/python + +from xml.sax.saxutils import XMLFilterBase, XMLGenerator +from xml.sax.xmlreader import AttributesImpl +from xml.sax import make_parser +import sys + +def AttributesUnion(base, **values): + baseitems = dict(base) + baseitems.update(values) + return AttributesImpl(baseitems) + +class AnnotateSize(XMLFilterBase): + types = { + 'BYTE': 1, 'BOOL': 1, + 'CARD8': 1, 'CARD16': 2, 'CARD32': 4, + 'INT8': 1, 'INT16': 2, 'INT32': 4, + 'char': 1, 'void': 1, + 'float': 4, 'double': 8, + 'XID': 4, + } + header = [] + def setTypeSize(self, name, size): + assert not self.types.has_key(name), "size of " + name + " declared as both " + str(size) + " and " + str(self.types[name]) + self.types[name] = size + + struct = None + union = None + def startElement(self, name, attrs): + if name == 'xcb': + self.header.insert(0, attrs['header']) + elif name == 'field': + size = self.types.get(attrs['type'], 0) + if self.struct is not None: + self.totalsize += size + elif self.union is not None: + self.totalsize = max(self.totalsize, size) + attrs = AttributesUnion(attrs, bytes=str(size)) + elif name == 'pad': + assert self.union is None + if self.struct is not None: + self.totalsize += int(attrs['bytes']) + elif name == 'xidtype': + self.setTypeSize(attrs['name'], 4) + elif name == 'typedef': + self.setTypeSize(attrs['newname'], self.types[attrs['oldname']]) + elif name == 'struct' or name == 'union': + assert self.struct is None and self.union is None + setattr(self, name, attrs['name']) + self.totalsize = 0 + + if len(self.header) == 1 or name == 'xcb': + XMLFilterBase.startElement(self, name, attrs) + + def characters(self, content): + if len(self.header) == 1: + XMLFilterBase.characters(self, content) + + def endElement(self, name): + if len(self.header) == 1 or name == 'xcb': + XMLFilterBase.endElement(self, name) + + if name == 'xcb': + self.header.pop(0) + elif name == 'struct' or name == 'union': + assert getattr(self, name) is not None + self.setTypeSize(getattr(self, name), self.totalsize) + setattr(self, name, None) + del self.totalsize + +annotator = AnnotateSize(make_parser()) +annotator.setContentHandler(XMLGenerator()) +if len(sys.argv) > 1: + annotator.parse(sys.argv[1]) +else: + annotator.parse(sys.stdin) diff --git a/libxcb/xcb-proto/src/type.py b/libxcb/xcb-proto/src/type.py new file mode 100644 index 000000000..83382325d --- /dev/null +++ b/libxcb/xcb-proto/src/type.py @@ -0,0 +1,74 @@ +#!/usr/bin/python + +from xml.sax.saxutils import XMLFilterBase, XMLGenerator +from xml.sax.xmlreader import AttributesImpl +from xml.sax import make_parser +import sys + +def AttributesUnion(base, **values): + baseitems = dict(base) + baseitems.update(values) + return AttributesImpl(baseitems) + +class AnnotateType(XMLFilterBase): + scopes = [] + map = dict([(name, [name]) for name in [ + 'BOOL', 'BYTE', + 'CARD8', 'CARD16', 'CARD32', + 'INT8', 'INT16', 'INT32', + 'char', 'void', + 'float', 'double', + 'XID', + ]]) + def startScope(self, name): + self.scopes.insert(0, name) + def declareType(self, name): + assert ':' not in name + qname = self.scopes[0] + ':' + name + self.map.setdefault(name, []).insert(0, qname) + def getQualifiedType(self, name): + if ':' in name: + return name + names = self.map.get(name, []) + return names[0] + def endScope(self): + self.scopes.pop(0) + + def startElement(self, name, attrs): + attnames = [] + if name == 'xcb': + self.startScope(attrs['header']) + elif name in ['struct', 'union', 'xidtype', 'enum', 'event', 'eventcopy', 'error', 'errorcopy']: + self.declareType(attrs['name']) + attnames = ['name'] + if name.endswith('copy'): + attnames.append('ref') + elif name == 'typedef': + self.declareType(attrs['newname']) + attnames = ['oldname', 'newname'] + elif name == 'valueparam': + attnames = ['value-mask-type'] + elif attrs.has_key('type'): + attnames = ['type'] + newattrs = {} + for attname in attnames: + newattrs[attname] = self.getQualifiedType(attrs[attname]) + if newattrs: + attrs = AttributesUnion(attrs, **newattrs) + XMLFilterBase.startElement(self, name, attrs) + + def endElement(self, name): + XMLFilterBase.endElement(self, name) + if name == 'xcb': + self.endScope() + +annotator = AnnotateType(make_parser()) +annotator.setContentHandler(XMLGenerator()) +if len(sys.argv) > 1: + annotator.parse(sys.argv[1]) +else: + annotator.parse(sys.stdin) + +for name,names in annotator.map.iteritems(): + if len(names) != 1: + print "" diff --git a/libxcb/xcb-proto/src/xcb.xsd b/libxcb/xcb-proto/src/xcb.xsd index f3fcb6fe2..5169b4809 100644 --- a/libxcb/xcb-proto/src/xcb.xsd +++ b/libxcb/xcb-proto/src/xcb.xsd @@ -55,6 +55,36 @@ authorization from the authors. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -89,7 +119,40 @@ authorization from the authors. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -126,7 +189,12 @@ authorization from the authors. - + + + + + + @@ -166,12 +234,20 @@ authorization from the authors. + + + - - - - + + + + + + + + + diff --git a/libxcb/xcb-proto/src/xf86vidmode.xml b/libxcb/xcb-proto/src/xf86vidmode.xml new file mode 100644 index 000000000..718240cd5 --- /dev/null +++ b/libxcb/xcb-proto/src/xf86vidmode.xml @@ -0,0 +1,464 @@ + + + + + + + + + + + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + 0 + + + + 0 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + privsize + + + + + + + + + + + + + + + + + + + + + privsize + + + + + + + + + + + + + + + + + + + + num_hsync + + + num_vsync + + + vendor_length + + + + + + vendor_length + 3 + + 0xFFFFFFFC + + vendor_length + + + + model_length + + + + + + + + + + + + + + + + + + modecount + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + privsize + + + + + + + + + + + + + + + + + + + + + privsize + + + + + + + + + + + + + + + + + + + + + privsize + + + + + + + + + + + + + + + + + + + + + + + + + + privsize + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + flags + 1 + + + clocks + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + size + 1 + + 0xFFFFFFFE + + + + + + size + 1 + + 0xFFFFFFFE + + + + + + size + 1 + + 0xFFFFFFFE + + + + + + + + + + + + size + 1 + + 0xFFFFFFFE + + + + + + size + 1 + + 0xFFFFFFFE + + + + + + size + 1 + + 0xFFFFFFFE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libxcb/xcb-proto/src/xkb.xml b/libxcb/xcb-proto/src/xkb.xml new file mode 100644 index 000000000..fb97ba408 --- /dev/null +++ b/libxcb/xcb-proto/src/xkb.xml @@ -0,0 +1,2759 @@ + + + + + xproto + + + + 255 + + 32 + + + 4 + + + + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + + + + 0 + 1 + 2 + + + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + + + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + + + + 0 + 1 + + + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + + + + + 27 + 28 + 29 + 30 + 31 + + + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + + + + 6 + 7 + + + + + + + + + + + 0 + 4 + + + + 768 + 1280 + + + + + 0 + 5 + + + + 768 + + + + + 256 + 512 + 768 + 1024 + 1280 + 1536 + 65280 + + + + + 0 + 1 + 2 + 3 + + + + 254 + 255 + + + + 0 + 1 + 2 + 3 + + + + 7 + + + + 0 + 6 + 7 + + + + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 0 + + + + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 0 + + + + 15 + 14 + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 0 + + + + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 0 + + + + 0 + 1 + 2 + 3 + 4 + + + + 7 + 127 + + + + 7 + 6 + 5 + + + + 4 + 3 + 2 + 1 + 0 + + + + 4 + 3 + 2 + 1 + 0 + + + + + + + + + + + + + + + 0 + 1 + + + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + + + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + + + + 0 + 1 + 2 + 3 + 4 + + + + 0 + 1 + 2 + 3 + 4 + + + + + + + + + + + 4 + + + + + + 4 + + + 4 + + + + + + + length + + + + + + + length + + + + + + + + + + + + + + + + + + + + + + + nMapEntries + + + + hasPreserve + nMapEntries + + + + + + + 4 + + + + + + nSyms + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 1 + 2 + 3 + 4 + 129 + 130 + 131 + 132 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + nMapEntries + + + + preserve + nMapEntries + + + + + + + + + + nameLength + + + + valueLength + + + + + + + + + nPoints + + + + + + + + + + + nOutlines + + + + + + 4 + + + + + + + + + 4 + + + 4 + + + + + + + + + nKeys + + + + + + + + + nRows + + + + + + + + + + + nKeys + + + + + 1 + 2 + 3 + 4 + 5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + nRows + + + nDoodads + + + nOverlays + + + + + + + + length + + + + + + + + + + + + + namesPresent + + + + + mapsPresent + + + + + + + + 255 + 254 + 253 + + + + + + + + + + + + + 0 + 1 + 2 + 2 + + + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 20 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 1 + 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 0 + + + + + + + + + + + + 0 + 1 + 2 + 2 + 3 + + + + 3 + 4 + 5 + 6 + + + + + + + + + + + + + + + + + + + + 0 + 2 + + + + + + + + + + + 0 + 1 + 2 + 3 + 4 + + + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + + + + + + + + + + + + + + 0 + 1 + 2 + + + + + + + 6 + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 1 + + + + + + + + + + + + 0 + 1 + 2 + 3 + 4 + 5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + affectWhich + + clear + selectAll + + + + NewKeyboardNotify + + + + + StateNotify + + + + + ControlsNotify + + + + + IndicatorStateNotify + + + + + IndicatorMapNotify + + + + + NamesNotify + + + + + CompatMapNotify + + + + + BellNotify + + + + + ActionMessage + + + + + AccessXNotify + + + + + ExtensionDeviceNotify + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 32 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 32 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + present + + KeyTypes + + nTypes + + + + KeySyms + + nKeySyms + + + + KeyActions + + nKeyActions + + + totalActions + + + + KeyBehaviors + + totalKeyBehaviors + + + + VirtualMods + + nVModMapKeys + + + + ExplicitComponents + + totalKeyExplicit + + + + ModifierMap + + totalModMapKeys + + + + VirtualModMap + + totalVModMapKeys + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + present + + KeyTypes + + nTypes + + + + KeySyms + + nKeySyms + + + + KeyActions + + nKeyActions + + + totalActions + + + + KeyBehaviors + + totalKeyBehaviors + + + + VirtualMods + + nVModMapKeys + + + + ExplicitComponents + + totalKeyExplicit + + + + ModifierMap + + totalModMapKeys + + + + VirtualModMap + + totalVModMapKeys + + + + + + + + + + + + + + + + + + + + + + 16 + nSIRtrn + + + + + groupsRtrn + + + + + + + + + + + + + + + + + 16 + nSI + + + + + groups + + + + + + + + + + + + + + + + + + + + + + + + + + nIndicators + + + + + + + + + + + which + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + which + + Keycodes + + + + Geometry + + + + Symbols + + + + PhysSymbols + + + + Types + + + + Compat + + + + KeyTypeNames + + nTypes + + + + KTLevelNames + + nKTLevels + + + + + + + IndicatorNames + + + indicators + + + + + VirtualModNames + + + virtualMods + + + + + GroupNames + + + groupNames + + + + + KeyNames + + nKeys + + + + KeyAliases + + nKeyAliases + + + + RGNames + + nRadioGroups + + + + + + + + + + + + + + + + + + + + + + + + which + + Keycodes + + + + Geometry + + + + Symbols + + + + PhysSymbols + + + + Types + + + + Compat + + + + KeyTypeNames + + nTypes + + + + KTLevelNames + + nKTLevels + + + + + + + IndicatorNames + + + indicators + + + + + VirtualModNames + + + virtualMods + + + + + GroupNames + + + groupNames + + + + + KeyNames + + nKeys + + + + KeyAliases + + nKeyAliases + + + + RGNames + + nRadioGroups + + + + + + + + + + + + + + + + + + + + + + + + + + + nProperties + + + nColors + + + nShapes + + + nSections + + + nDoodads + + + nKeyAliases + + + + + + + + + + + + + + + + + + + + + nProperties + + + nColors + + + nShapes + + + nSections + + + nDoodads + + + nKeyAliases + + + + + + + + + + + + + + + + + + + + + + + + + + + keymapsSpecLen + + + + keycodesSpecLen + + + + typesSpecLen + + + + compatMapSpecLen + + + + symbolsSpecLen + + + + geometrySpecLen + + + + + + + + + + + + + nKeymaps + + + nKeycodes + + + nTypes + + + nCompatMaps + + + nSymbols + + + nGeometries + + + + + + + + + + + + + keymapsSpecLen + + + + keycodesSpecLen + + + + typesSpecLen + + + + compatMapSpecLen + + + + symbolsSpecLen + + + + geometrySpecLen + + + + + + + + + + + + reported + + Types + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + present + + KeyTypes + + nTypes + + + + KeySyms + + nKeySyms + + + + KeyActions + + nKeyActions + + + totalActions + + + + KeyBehaviors + + totalKeyBehaviors + + + + VirtualMods + + nVModMapKeys + + + + ExplicitComponents + + totalKeyExplicit + + + + ModifierMap + + totalModMapKeys + + + + VirtualModMap + + totalVModMapKeys + + + + + + CompatMap + + + + + + + + + + 16 + nSIRtrn + + + + + groupsRtrn + + + + + ClientSymbols + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + present + + KeyTypes + + nTypes + + + + KeySyms + + nKeySyms + + + + KeyActions + + nKeyActions + + + totalActions + + + + KeyBehaviors + + totalKeyBehaviors + + + + VirtualMods + + nVModMapKeys + + + + ExplicitComponents + + totalKeyExplicit + + + + ModifierMap + + totalModMapKeys + + + + VirtualModMap + + totalVModMapKeys + + + + + + ServerSymbols + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + present + + KeyTypes + + nTypes + + + + KeySyms + + nKeySyms + + + + KeyActions + + nKeyActions + + + totalActions + + + + KeyBehaviors + + totalKeyBehaviors + + + + VirtualMods + + nVModMapKeys + + + + ExplicitComponents + + totalKeyExplicit + + + + ModifierMap + + totalModMapKeys + + + + VirtualModMap + + totalVModMapKeys + + + + + + IndicatorMaps + + + + + + + nIndicators + + + + KeyNames + + + + + + + + + + + + + + + + which + + Keycodes + + + + Geometry + + + + Symbols + + + + PhysSymbols + + + + Types + + + + Compat + + + + KeyTypeNames + + nTypes + + + + KTLevelNames + + nKTLevels + + + + + + + IndicatorNames + + + indicators + + + + + VirtualModNames + + + virtualMods + + + + + GroupNames + + + groupNames + + + + + KeyNames + + nKeys + + + + KeyAliases + + nKeyAliases + + + + RGNames + + nRadioGroups + + + + + + OtherNames + + + + + + + + + + + + + + + + which + + Keycodes + + + + Geometry + + + + Symbols + + + + PhysSymbols + + + + Types + + + + Compat + + + + KeyTypeNames + + nTypes + + + + KTLevelNames + + nKTLevels + + + + + + + IndicatorNames + + + indicators + + + + + VirtualModNames + + + virtualMods + + + + + GroupNames + + + groupNames + + + + + KeyNames + + nKeys + + + + KeyAliases + + nKeyAliases + + + + RGNames + + nRadioGroups + + + + + + Geometry + + + + + + + + + + + + + + + + + nProperties + + + nColors + + + nShapes + + + nSections + + + nDoodads + + + nKeyAliases + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + nameLen + + + nBtnsRtrn + + + nDeviceLedFBs + + + + + + + + + + + + + nBtns + + + nDeviceLedFBs + + + + + + + + + + + + msgLength + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- cgit v1.2.3