summaryrefslogtreecommitdiff
path: root/man
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2011-06-13 23:39:30 +0100
committerSergey V. Udaltsov <svu@gnome.org>2011-06-13 23:47:25 +0100
commitc17f8b08740aed26687fd65c84e654a6cdc163a2 (patch)
treedfcab88491a11f464636df023ba29b668fd83cc5 /man
parentb213892256576e43c569a965add7eae93f5be690 (diff)
Use XSL to generate man page from the rules XML
Generate a man-page from the evdev.xml through the xslt/man.xsl stylesheet. Adds a requirement on the xorg util-macros and xsltproc. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Dan Nicholson <dbn.lists@gmail.com> Reviewed-by: Gaetan Nadon <memsize@videotron.ca>
Diffstat (limited to 'man')
-rw-r--r--man/Makefile.am17
-rw-r--r--man/man.xsl137
2 files changed, 154 insertions, 0 deletions
diff --git a/man/Makefile.am b/man/Makefile.am
new file mode 100644
index 00000000..2e9deaa4
--- /dev/null
+++ b/man/Makefile.am
@@ -0,0 +1,17 @@
+EXTRA_DIST = man.xsl
+
+if HAVE_XSLTPROC
+miscmandir = $(MISC_MAN_DIR)
+miscman_PRE = xkeyboard-config.man
+miscman_DATA = $(miscman_PRE:man=@MISC_MAN_SUFFIX@)
+CLEANFILES = $(miscman_DATA) $(miscman_PRE)
+SUFFIXES = .$(MISC_MAN_SUFFIX) .man
+MAN_SUBSTS += -e 's|__xkb_base__|$(xkb_base)|g'
+
+xkeyboard-config.man: $(top_builddir)/rules/evdev.xml $(srcdir)/man.xsl
+ $(XSLTPROC) -nonet $(srcdir)/man.xsl $(top_builddir)/rules/evdev.xml > $@
+
+.man.$(MISC_MAN_SUFFIX):
+ $(SED) $(MAN_SUBSTS) < $< > $@
+
+endif
diff --git a/man/man.xsl b/man/man.xsl
new file mode 100644
index 00000000..a5bd14d0
--- /dev/null
+++ b/man/man.xsl
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
+ <xsl:output method="text" encoding="UTF-8" doctype-system="xkb.dtd"/>
+ <xsl:template match="/xkbConfigRegistry">
+ <xsl:text><![CDATA[.\" WARNING: this man page is autogenerated. Do not edit or you will lose all your changes.
+.TH XKEYBOARD-CONFIG __miscmansuffix__ __vendorversion__
+.SH NAME
+xkeyboard-config \- XKB data description files
+.SH DESCRIPTION
+xkeyboard-config provides the description files for the X Keyboard
+Extension (XKB). The configuration options below are usually applied with
+setxkbmap(__appmansuffix__).
+.SH MODELS
+.TS
+left,box;
+lB lB
+___
+lB l.
+Model Description
+]]></xsl:text>
+ <xsl:apply-templates select="modelList"/>
+ <xsl:text><![CDATA[
+.TE
+.SH LAYOUTS
+.TS
+left,box;
+lB lB
+____
+lB l.
+Layout(Variant) Description
+]]></xsl:text>
+ <xsl:apply-templates select="layoutList"/>
+ <xsl:text><![CDATA[
+.TE
+.SH OPTIONS
+]]></xsl:text>
+ <xsl:apply-templates select="optionList"/>
+ <xsl:text><![CDATA[
+.SH FILES
+__xkb_base__/compat
+
+__xkb_base__/compiled
+
+__xkb_base__/geometry
+
+__xkb_base__/keycodes
+
+__xkb_base__/keymap
+
+__xkb_base__/rules
+
+__xkb_base__/semantics
+
+__xkb_base__/symbols
+
+__xkb_base__/types
+
+.SH SEE ALSO
+setxkbmap(__appmansuffix__)
+]]></xsl:text>
+ </xsl:template>
+
+<!-- split model/description into a normal table -->
+ <xsl:template match="modelList">
+ <xsl:for-each select="model">
+ <xsl:value-of select="configItem/name"/><xsl:text>&#9;</xsl:text><xsl:value-of select="configItem/description"/>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:for-each>
+ </xsl:template>
+
+<!-- split layout/variant/description into a table like this
+
+ layout1 description
+ layout1(variant1) description
+ layout1(variant2) description
+ layout2 description
+ layout2(variant1) description
+-->
+ <xsl:template match="layoutList">
+ <xsl:for-each select="layout">
+ <xsl:value-of select="configItem/name"/>
+ <xsl:text>&#9;</xsl:text>
+ <xsl:value-of select="configItem/description"/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:for-each select="variantList/variant">
+ <xsl:value-of select="../../configItem/name"/>
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="configItem/name"/>
+ <xsl:text>)</xsl:text>
+ <xsl:text>&#9;</xsl:text>
+ <xsl:value-of select="configItem/description"/>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:for-each>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>_&#10;</xsl:text>
+ </xsl:for-each>
+ </xsl:template>
+
+<!-- split option into a table like this
+
+option description:
+ optarg description
+ optarg description
+ optarg description
+
+option2 description:
+ optarg description
+ optarg description
+-->
+ <xsl:template match="optionList">
+ <xsl:for-each select="group">
+ <xsl:text><![CDATA[
+.SS]]></xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:value-of select="configItem/description"/>
+ <xsl:text><![CDATA[
+.BR
+.TS
+left,box;
+lB lB
+___
+lB l.
+Option Description
+]]></xsl:text>
+ <xsl:for-each select="option">
+ <xsl:value-of select="configItem/name"/>
+ <xsl:text>&#9;</xsl:text>
+ <xsl:value-of select="configItem/description"/>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:for-each>
+ <xsl:text><![CDATA[
+.TE
+
+]]></xsl:text>
+ </xsl:for-each>
+ </xsl:template>
+</xsl:stylesheet>