commit 9c894d182aa84a133c4dec2fafe156bdf32ddee3
parent 6610d424fe6a3aeb15c4cd47eafffbc9982e6f70
Author: Bastien Dejean <nihilhill@gmail.com>
Date: Thu, 27 Jun 2013 12:04:18 +0200
Generate documentation via `asciidoc`
Diffstat:
10 files changed, 269 insertions(+), 358 deletions(-)
diff --git a/Makefile b/Makefile
@@ -1,5 +1,5 @@
+NAME = sxhkd
VERSION = 0.3
-NAME = sxhkd
CC = gcc
LIBS = -lm -lxcb -lxcb-keysyms
@@ -8,13 +8,13 @@ CFLAGS += -D_POSIX_C_SOURCE=200112L -DVERSION=\"$(VERSION)\"
LDFLAGS += -L$(PREFIX)/lib
PREFIX ?= /usr/local
-BINPREFIX = $(PREFIX)/bin
-MANPREFIX = $(PREFIX)/share/man
+BINPREFIX = $(PREFIX)/bin
+MANPREFIX = $(PREFIX)/share/man
SRC = $(wildcard *.c)
OBJ = $(SRC:.c=.o)
-all: CFLAGS += -Os
+all: CFLAGS += -Os
all: LDFLAGS += -s
all: $(NAME)
@@ -34,19 +34,17 @@ $(NAME): $(OBJ)
install:
mkdir -p "$(DESTDIR)$(BINPREFIX)"
cp -p $(NAME) "$(DESTDIR)$(BINPREFIX)"
- mkdir -p "$(DESTDIR)$(MANPREFIX)/man1"
- cp -p $(NAME).1 "$(DESTDIR)$(MANPREFIX)/man1"
+ mkdir -p "$(DESTDIR)$(MANPREFIX)"/man1
+ cp -p doc/$(NAME).1 "$(DESTDIR)$(MANPREFIX)"/man1
uninstall:
- rm -f $(DESTDIR)$(BINPREFIX)/$(NAME)
- rm -f $(DESTDIR)$(MANPREFIX)/man1/$(NAME).1
+ rm -f "$(DESTDIR)$(BINPREFIX)"/$(NAME)
+ rm -f "$(DESTDIR)$(MANPREFIX)"/man1/$(NAME).1
doc:
- pandoc -t json doc/README.md | runhaskell doc/capitalize_headers.hs | pandoc -f json -t man --template doc/man.template -V name=$(NAME) -o $(NAME).1
- pandoc -f markdown -t rst doc/README.md -o README.rst
- patch -p 1 -i doc/missed_emph.patch
+ a2x -v -d manpage -f manpage -a revnumber=$(VERSION) doc/$(NAME).1.txt
clean:
- rm -f $(OBJ) sxhkd
+ rm -f $(OBJ) $(NAME)
.PHONY: all debug install uninstall doc clean
diff --git a/README.asciidoc b/README.asciidoc
@@ -0,0 +1 @@
+doc/sxhkd.1.txt
+\ No newline at end of file
diff --git a/README.rst b/README.rst
@@ -1,98 +0,0 @@
-Synopsis
-========
-
-**sxhkd** [*OPTIONS*] [*EXTRA\_CONFIG* …]
-
-Description
-===========
-
-sxhkd is a simple X hotkey daemon with a powerful and compact
-configuration syntax.
-
-Options
-=======
-
-``-h``
- Print the synopsis to standard output and exit.
-
-``-v``
- Print the version information to standard output and exit.
-
-``-t`` *TIMEOUT*
- Timeout in seconds for the recording of chord chains.
-
-``-c`` *CONFIG\_FILE*
- Read the main configuration from the given file.
-
-``-r`` *REDIR\_FILE*
- Redirect the commands output to the given file.
-
-Configuration
-=============
-
-Each line of the configuration file is interpreted as so:
-
-- If it is empty or starts with ``#``, it is ignored.
-
-- If it starts with a space, it is read as a command.
-
-- Otherwise, it is read as a hotkey.
-
-General syntax:
-
-::
-
- HOTKEY
- COMMAND
-
- HOTKEY := CHORD_1 ; CHORD_2 ; … ; CHORD_n
- CHORD_i := [MODIFIER_i][@|!|:]KEYSYM_i
- MODIFIER_i := MODIFIER_i1 + MODIFIER_i2 + … + MODIFIER_ik
-
-The valid modifier names are: *super*, *hyper*, *meta*, *alt*,
-*control*, *ctrl*, *shift*, *mode\_switch*, *lock*, *mod1*, *mod2*,
-*mod3*, *mod4* and *mod5*.
-
-The keysym names are given by the output of **xev**.
-
-Hotkeys and commands can be spread across multiple lines by ending each
-partial line with a backslash character.
-
-When multiple chords are separated by semicolons, the hotkey is a chord
-chain: the command will only be executed after receiving each chord of
-the chain in consecutive order.
-
-If **@** is added at the beginning of the keysym, the command will be
-run on key release events, otherwise on key press events.
-
-If **!** is added at the beginning of the keysym, the command will be
-run on motion notify events and must contain two integer conversion
-specifications which will be replaced by the *x* and *y* coordinates of
-the pointer relative to the root window referential (the only valid
-button keysyms for this type of hotkeys are: *button1*, …, *button5*).
-
-If **:** is added at the beginning of the keysym, the captured event
-will be replayed for the other clients.
-
-Mouse hotkeys can be defined by using one of the following special
-keysym names: *button1*, *button2*, *button3*, …, *button24*.
-
-The hotkey and the command may contain sequences of the form
-{*STRING\_1*,\ *…*,\ *STRING\_N*}.
-
-In addition, the sequences can contain ranges of the form *A*-*Z* where
-*A* and *Z* are alphanumeric characters.
-
-The underscore character represents an empty sequence element.
-
-What is actually executed is **SHELL** *-c* **COMMAND**, which means you
-can use environment variables in **COMMAND**.
-
-**SHELL** will be the content of the first defined environment variable
-in the following list: **SXHKD\_SHELL**, **SHELL**.
-
-If **sxhkd** receives a *SIGUSR1* signal, it will reload its
-configuration file.
-
-If no configuration file is specified via the *-c* option, the following
-is used: **$XDG\_CONFIG\_HOME/sxhkd/sxhkdrc**.
diff --git a/doc/README.md b/doc/README.md
@@ -1,77 +0,0 @@
-% Sxhkd User's Guide
-% Bastien Dejean
-% June 23, 2013
-
-# Synopsis
-
-**sxhkd** [*OPTIONS*] [*EXTRA_CONFIG* …]
-
-# Description
-
-sxhkd is a simple X hotkey daemon with a powerful and compact configuration syntax.
-
-# Options
-
-`-h`
-: Print the synopsis to standard output and exit.
-
-`-v`
-: Print the version information to standard output and exit.
-
-`-t` *TIMEOUT*
-: Timeout in seconds for the recording of chord chains.
-
-`-c` *CONFIG_FILE*
-: Read the main configuration from the given file.
-
-`-r` *REDIR_FILE*
-: Redirect the commands output to the given file.
-
-# Configuration
-
-Each line of the configuration file is interpreted as so:
-
-- If it is empty or starts with `#`, it is ignored.
-
-- If it starts with a space, it is read as a command.
-
-- Otherwise, it is read as a hotkey.
-
-General syntax:
-
- HOTKEY
- COMMAND
-
- HOTKEY := CHORD_1 ; CHORD_2 ; … ; CHORD_n
- CHORD_i := [MODIFIER_i][@|!|:]KEYSYM_i
- MODIFIER_i := MODIFIER_i1 + MODIFIER_i2 + … + MODIFIER_ik
-
-The valid modifier names are: *super*, *hyper*, *meta*, *alt*, *control*, *ctrl*, *shift*, *mode_switch*, *lock*, *mod1*, *mod2*, *mod3*, *mod4* and *mod5*.
-
-The keysym names are given by the output of **xev**.
-
-Hotkeys and commands can be spread across multiple lines by ending each partial line with a backslash character.
-
-When multiple chords are separated by semicolons, the hotkey is a chord chain: the command will only be executed after receiving each chord of the chain in consecutive order.
-
-If **@** is added at the beginning of the keysym, the command will be run on key release events, otherwise on key press events.
-
-If **!** is added at the beginning of the keysym, the command will be run on motion notify events and must contain two integer conversion specifications which will be replaced by the *x* and *y* coordinates of the pointer relative to the root window referential (the only valid button keysyms for this type of hotkeys are: *button1*, …, *button5*).
-
-If **:** is added at the beginning of the keysym, the captured event will be replayed for the other clients.
-
-Mouse hotkeys can be defined by using one of the following special keysym names: *button1*, *button2*, *button3*, …, *button24*.
-
-The hotkey and the command may contain sequences of the form {*STRING_1*,*…*,*STRING_N*}.
-
-In addition, the sequences can contain ranges of the form *A*-*Z* where *A* and *Z* are alphanumeric characters.
-
-The underscore character represents an empty sequence element.
-
-What is actually executed is **SHELL** *-c* **COMMAND**, which means you can use environment variables in **COMMAND**.
-
-**SHELL** will be the content of the first defined environment variable in the following list: **SXHKD_SHELL**, **SHELL**.
-
-If **sxhkd** receives a *SIGUSR1* signal, it will reload its configuration file.
-
-If no configuration file is specified via the *-c* option, the following is used: **$XDG_CONFIG_HOME/sxhkd/sxhkdrc**.
diff --git a/doc/capitalize_headers.hs b/doc/capitalize_headers.hs
@@ -1,13 +0,0 @@
-import Text.Pandoc
-import Data.Char (toUpper)
-
-main :: IO ()
-main = toJsonFilter capitalizeHeaders
-
-capitalizeHeaders :: Block -> Block
-capitalizeHeaders (Header 1 attr xs) = Header 1 attr $ bottomUp capitalize xs
-capitalizeHeaders x = x
-
-capitalize :: Inline -> Inline
-capitalize (Str xs) = Str $ map toUpper xs
-capitalize x = x
diff --git a/doc/man.template b/doc/man.template
@@ -1,15 +0,0 @@
-$if(has-tables)$
-.\"t
-$endif$
-.TH "$name$" 1 "$date$" "$title$"
-.SH NAME
-$name$ - Simple X HotKey Daemon
-$body$
-.SH AUTHOR
-.MT baskerville@lavabit.com
-$author$
-.ME
-.SH LINKS
-.UR https://github.com/baskerville/$name$
-Homepage
-.UE
diff --git a/doc/missed_emph.patch b/doc/missed_emph.patch
@@ -1,24 +0,0 @@
-diff -ru a/README.rst b/README.rst
---- a/README.rst 2013-06-23 21:43:16.071832185 +0200
-+++ b/README.rst 2013-06-23 21:42:35.011992319 +0200
-@@ -1,7 +1,7 @@
- Synopsis
- ========
-
--**sxhkd** [*OPTIONS*\ ][\*EXTRA\_CONFIG\* …]
-+**sxhkd** [*OPTIONS*] [*EXTRA\_CONFIG* …]
-
- Description
- ===========
-diff -ru a/sxhkd.1 b/sxhkd.1
---- a/sxhkd.1 2013-06-23 21:43:16.051832263 +0200
-+++ b/sxhkd.1 2013-06-23 21:42:35.011992319 +0200
-@@ -3,7 +3,7 @@
- sxhkd - Simple X HotKey Daemon
- .SH SYNOPSIS
- .PP
--\f[B]sxhkd\f[] [\f[I]OPTIONS\f[]][*EXTRA_CONFIG* \&...]
-+\f[B]sxhkd\f[] [\f[I]OPTIONS\f[]] [\f[I]EXTRA_CONFIG\f[] ...]
- .SH DESCRIPTION
- .PP
- sxhkd is a simple X hotkey daemon with a powerful and compact
diff --git a/doc/sxhkd.1 b/doc/sxhkd.1
@@ -0,0 +1,153 @@
+'\" t
+.\" Title: sxhkd
+.\" Author: [see the "Author" section]
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\" Date: 06/27/2013
+.\" Manual: Sxhkd Manual
+.\" Source: Sxhkd 0.3
+.\" Language: English
+.\"
+.TH "SXHKD" "1" "06/27/2013" "Sxhkd 0\&.3" "Sxhkd Manual"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+sxhkd \- Simple X HotKey Daemon
+.SH "SYNOPSIS"
+.sp
+\fBsxhkd\fR [\fIOPTIONS\fR][\fIEXTRA_CONFIG\fR \&...]
+.SH "DESCRIPTION"
+.sp
+sxhkd is a simple X hotkey daemon with a powerful and compact configuration syntax\&.
+.SH "OPTIONS"
+.PP
+\fB\-h\fR
+.RS 4
+Print the synopsis to standard output and exit\&.
+.RE
+.PP
+\fB\-v\fR
+.RS 4
+Print the version information to standard output and exit\&.
+.RE
+.PP
+\fB\-t\fR \fITIMEOUT\fR
+.RS 4
+Timeout in seconds for the recording of chord chains\&.
+.RE
+.PP
+\fB\-c\fR \fICONFIG_FILE\fR
+.RS 4
+Read the main configuration from the given file\&.
+.RE
+.PP
+\fB\-r\fR \fIREDIR_FILE\fR
+.RS 4
+Redirect the commands output to the given file\&.
+.RE
+.SH "CONFIGURATION"
+.sp
+Each line of the configuration file is interpreted as so:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+If it is empty or starts with
+#, it is ignored\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+If it starts with a space, it is read as a command\&.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+Otherwise, it is read as a hotkey\&.
+.RE
+.sp
+General syntax:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+HOTKEY
+ COMMAND
+
+HOTKEY := CHORD_1 ; CHORD_2 ; \&... ; CHORD_n
+CHORD_i := [MODIFIER_i][@|!|:]KEYSYM_i
+MODIFIER_i := MODIFIER_i1 + MODIFIER_i2 + \&... + MODIFIER_ik
+.fi
+.if n \{\
+.RE
+.\}
+.sp
+The valid modifier names are: \fIsuper\fR, \fIhyper\fR, \fImeta\fR, \fIalt\fR, \fIcontrol\fR, \fIctrl\fR, \fIshift\fR, \fImode_switch\fR, \fIlock\fR, \fImod1\fR, \fImod2\fR, \fImod3\fR, \fImod4\fR and \fImod5\fR\&.
+.sp
+The keysym names are given by the output of \fBxev\fR\&.
+.sp
+Hotkeys and commands can be spread across multiple lines by ending each partial line with a backslash character\&.
+.sp
+When multiple chords are separated by semicolons, the hotkey is a chord chain: the command will only be executed after receiving each chord of the chain in consecutive order\&.
+.sp
+If \fB@\fR is added at the beginning of the keysym, the command will be run on key release events, otherwise on key press events\&.
+.sp
+If \fB!\fR is added at the beginning of the keysym, the command will be run on motion notify events and must contain two integer conversion specifications which will be replaced by the \fIx\fR and \fIy\fR coordinates of the pointer relative to the root window referential (the only valid button keysyms for this type of hotkeys are: \fIbutton1\fR, \&..., \fIbutton5\fR)\&.
+.sp
+If \fB:\fR is added at the beginning of the keysym, the captured event will be replayed for the other clients\&.
+.sp
+Mouse hotkeys can be defined by using one of the following special keysym names: \fIbutton1\fR, \fIbutton2\fR, \fIbutton3\fR, \&..., \fIbutton24\fR\&.
+.sp
+The hotkey and the command may contain sequences of the form {\fISTRING_1\fR,\fI\&...\fR,\fISTRING_N\fR}\&.
+.sp
+In addition, the sequences can contain ranges of the form \fIA\fR\-\fIZ\fR where \fIA\fR and \fIZ\fR are alphanumeric characters\&.
+.sp
+The underscore character represents an empty sequence element\&.
+.sp
+What is actually executed is \fBSHELL\fR \fI\-c\fR \fBCOMMAND\fR, which means you can use environment variables in \fBCOMMAND\fR\&.
+.sp
+\fBSHELL\fR will be the content of the first defined environment variable in the following list: \fBSXHKD_SHELL\fR, \fBSHELL\fR\&.
+.sp
+If \fBsxhkd\fR receives a \fISIGUSR1\fR signal, it will reload its configuration file\&.
+.sp
+If no configuration file is specified via the \fI\-c\fR option, the following is used: \fB$XDG_CONFIG_HOME/sxhkd/sxhkdrc\fR\&.
+.SH "AUTHOR"
+.sp
+Bastien Dejean <baskerville at lavabit\&.com>
+.SH "MAILING LIST"
+.sp
+sxhkd at librelist\&.com
diff --git a/doc/sxhkd.1.txt b/doc/sxhkd.1.txt
@@ -0,0 +1,104 @@
+:man source: Sxhkd
+:man version: {revnumber}
+:man manual: Sxhkd Manual
+
+sxhkd(1)
+========
+
+Name
+----
+
+sxhkd - Simple X HotKey Daemon
+
+Synopsis
+--------
+
+*sxhkd* [_OPTIONS_][_EXTRA_CONFIG_ …]
+
+Description
+-----------
+
+sxhkd is a simple X hotkey daemon with a powerful and compact configuration syntax.
+
+Options
+-------
+
+
+*-h*::
+ Print the synopsis to standard output and exit.
+
+*-v*::
+ Print the version information to standard output and exit.
+
+*-t* _TIMEOUT_::
+ Timeout in seconds for the recording of chord chains.
+
+*-c* _CONFIG_FILE_::
+ Read the main configuration from the given file.
+
+*-r* _REDIR_FILE_::
+ Redirect the commands output to the given file.
+
+Configuration
+-------------
+
+Each line of the configuration file is interpreted as so:
+
+* If it is empty or starts with `#`, it is ignored.
+* If it starts with a space, it is read as a command.
+* Otherwise, it is read as a hotkey.
+
+General syntax:
+
+---------------------------------------------------------
+HOTKEY
+ COMMAND
+
+HOTKEY := CHORD_1 ; CHORD_2 ; … ; CHORD_n
+CHORD_i := [MODIFIER_i][@|!|:]KEYSYM_i
+MODIFIER_i := MODIFIER_i1 + MODIFIER_i2 + … + MODIFIER_ik
+---------------------------------------------------------
+
+The valid modifier names are: _super_, _hyper_, _meta_, _alt_, _control_, _ctrl_, _shift_, _mode_switch_, _lock_, _mod1_, _mod2_, _mod3_, _mod4_ and _mod5_.
+
+The keysym names are given by the output of *xev*.
+
+Hotkeys and commands can be spread across multiple lines by ending each partial line with a backslash character.
+
+When multiple chords are separated by semicolons, the hotkey is a chord chain: the command will only be executed after receiving each chord of the chain in consecutive order.
+
+If *@* is added at the beginning of the keysym, the command will be run on key release events, otherwise on key press events.
+
+If *!* is added at the beginning of the keysym, the command will be run on motion notify events and must contain two integer conversion specifications which will be replaced by the _x_ and _y_ coordinates of the pointer relative to the root window referential (the only valid button keysyms for this type of hotkeys are: _button1_, …, _button5_).
+
+If *:* is added at the beginning of the keysym, the captured event will be replayed for the other clients.
+
+Mouse hotkeys can be defined by using one of the following special keysym names: _button1_, _button2_, _button3_, …, _button24_.
+
+The hotkey and the command may contain sequences of the form \{'STRING_1','…','STRING_N'}.
+
+In addition, the sequences can contain ranges of the form _A_-_Z_ where _A_ and _Z_ are alphanumeric characters.
+
+The underscore character represents an empty sequence element.
+
+What is actually executed is *SHELL* _-c_ *COMMAND*, which means you can use environment variables in *COMMAND*.
+
+*SHELL* will be the content of the first defined environment variable in the following list: *SXHKD_SHELL*, *SHELL*.
+
+If *sxhkd* receives a _SIGUSR1_ signal, it will reload its configuration file.
+
+If no configuration file is specified via the _-c_ option, the following is used: *$XDG_CONFIG_HOME/sxhkd/sxhkdrc*.
+
+Author
+------
+
+Bastien Dejean <baskerville at lavabit.com>
+
+Mailing List
+------------
+
+sxhkd at librelist.com
+
+////
+vim: set ft=asciidoc:
+////
diff --git a/sxhkd.1 b/sxhkd.1
@@ -1,119 +0,0 @@
-.TH "sxhkd" 1 "June 23, 2013" "Sxhkd"
-.SH NAME
-sxhkd - Simple X HotKey Daemon
-.SH SYNOPSIS
-.PP
-\f[B]sxhkd\f[] [\f[I]OPTIONS\f[]] [\f[I]EXTRA_CONFIG\f[] ...]
-.SH DESCRIPTION
-.PP
-sxhkd is a simple X hotkey daemon with a powerful and compact
-configuration syntax.
-.SH OPTIONS
-.TP
-.B \f[C]\-h\f[]
-Print the synopsis to standard output and exit.
-.RS
-.RE
-.TP
-.B \f[C]\-v\f[]
-Print the version information to standard output and exit.
-.RS
-.RE
-.TP
-.B \f[C]\-t\f[] \f[I]TIMEOUT\f[]
-Timeout in seconds for the recording of chord chains.
-.RS
-.RE
-.TP
-.B \f[C]\-c\f[] \f[I]CONFIG_FILE\f[]
-Read the main configuration from the given file.
-.RS
-.RE
-.TP
-.B \f[C]\-r\f[] \f[I]REDIR_FILE\f[]
-Redirect the commands output to the given file.
-.RS
-.RE
-.SH CONFIGURATION
-.PP
-Each line of the configuration file is interpreted as so:
-.IP \[bu] 2
-If it is empty or starts with \f[C]#\f[], it is ignored.
-.IP \[bu] 2
-If it starts with a space, it is read as a command.
-.IP \[bu] 2
-Otherwise, it is read as a hotkey.
-.PP
-General syntax:
-.IP
-.nf
-\f[C]
-HOTKEY
-\ \ \ \ COMMAND
-
-HOTKEY\ :=\ CHORD_1\ ;\ CHORD_2\ ;\ \&...\ ;\ CHORD_n
-CHORD_i\ :=\ [MODIFIER_i][\@|!|:]KEYSYM_i
-MODIFIER_i\ :=\ MODIFIER_i1\ +\ MODIFIER_i2\ +\ \&...\ +\ MODIFIER_ik
-\f[]
-.fi
-.PP
-The valid modifier names are: \f[I]super\f[], \f[I]hyper\f[],
-\f[I]meta\f[], \f[I]alt\f[], \f[I]control\f[], \f[I]ctrl\f[],
-\f[I]shift\f[], \f[I]mode_switch\f[], \f[I]lock\f[], \f[I]mod1\f[],
-\f[I]mod2\f[], \f[I]mod3\f[], \f[I]mod4\f[] and \f[I]mod5\f[].
-.PP
-The keysym names are given by the output of \f[B]xev\f[].
-.PP
-Hotkeys and commands can be spread across multiple lines by ending each
-partial line with a backslash character.
-.PP
-When multiple chords are separated by semicolons, the hotkey is a chord
-chain: the command will only be executed after receiving each chord of
-the chain in consecutive order.
-.PP
-If \f[B]\@\f[] is added at the beginning of the keysym, the command will
-be run on key release events, otherwise on key press events.
-.PP
-If \f[B]!\f[] is added at the beginning of the keysym, the command will
-be run on motion notify events and must contain two integer conversion
-specifications which will be replaced by the \f[I]x\f[] and \f[I]y\f[]
-coordinates of the pointer relative to the root window referential (the
-only valid button keysyms for this type of hotkeys are:
-\f[I]button1\f[], \&..., \f[I]button5\f[]).
-.PP
-If \f[B]:\f[] is added at the beginning of the keysym, the captured
-event will be replayed for the other clients.
-.PP
-Mouse hotkeys can be defined by using one of the following special
-keysym names: \f[I]button1\f[], \f[I]button2\f[], \f[I]button3\f[],
-\&..., \f[I]button24\f[].
-.PP
-The hotkey and the command may contain sequences of the form
-{\f[I]STRING_1\f[],\f[I]\&...\f[],\f[I]STRING_N\f[]}.
-.PP
-In addition, the sequences can contain ranges of the form
-\f[I]A\f[]\-\f[I]Z\f[] where \f[I]A\f[] and \f[I]Z\f[] are alphanumeric
-characters.
-.PP
-The underscore character represents an empty sequence element.
-.PP
-What is actually executed is \f[B]SHELL\f[] \f[I]\-c\f[]
-\f[B]COMMAND\f[], which means you can use environment variables in
-\f[B]COMMAND\f[].
-.PP
-\f[B]SHELL\f[] will be the content of the first defined environment
-variable in the following list: \f[B]SXHKD_SHELL\f[], \f[B]SHELL\f[].
-.PP
-If \f[B]sxhkd\f[] receives a \f[I]SIGUSR1\f[] signal, it will reload its
-configuration file.
-.PP
-If no configuration file is specified via the \f[I]\-c\f[] option, the
-following is used: \f[B]$XDG_CONFIG_HOME/sxhkd/sxhkdrc\f[].
-.SH AUTHOR
-.MT baskerville@lavabit.com
-Bastien Dejean
-.ME
-.SH LINKS
-.UR https://github.com/baskerville/sxhkd
-Homepage
-.UE