diff --git a/man/hwdb.xml b/man/hwdb.xml
index 2b1e60fb22..ae5ddb1a4d 100644
--- a/man/hwdb.xml
+++ b/man/hwdb.xml
@@ -50,28 +50,88 @@
system-supplied hwdb file with a local file if needed;
a symlink in /etc with the same name as a hwdb file in
/usr/lib, pointing to /dev/null,
- disables the hwdb file entirely. hwdb files must have the extension
+ disables that hwdb file entirely. hwdb files must have the extension
.hwdb; other extensions are ignored.
- The hwdb file contains data records consisting of matches and
- associated key-value pairs. Every record in the hwdb starts with one or
- more match strings, specifying a shell glob to compare the database
- lookup string against. Multiple match lines are specified in additional
- consecutive lines. Every match line is compared individually, and they are
- combined by OR. Every match line must start at the first character of
- the line.
+ Each hwdb file contains data records consisting of matches and associated
+ key-value pairs. Every record in the hwdb starts with one or more match strings,
+ specifying a shell glob to compare the lookup string against. Multiple match lines
+ are specified in consecutive lines. Every match line is compared individually, and
+ they are combined by OR. Every match line must start at the first character of the
+ line.
- The match lines are followed by one or more key-value pair lines, which
- are recognized by a leading space character. The key name and value are separated
- by =. An empty line signifies the end
- of a record. Lines beginning with # are ignored.
+ The match lines are followed by one or more key-value pair lines, which are
+ recognized by a leading space character. The key name and value are separated by
+ =. An empty line signifies the end of a record. Lines beginning
+ with # are ignored.
+
+ In case multiple records match a given lookup string, the key-value pairs
+ from all records are combined. If a key is specified multiple times, the value
+ from the record with the highest priority is used (each key can have only a single
+ value). The priority is higher when the record is in a file that sorts later
+ lexicographically, and in case of records in the same file, later records have
+ higher priority.
The content of all hwdb files is read by
systemd-hwdb8
and compiled to a binary database located at /etc/udev/hwdb.bin,
- or alternatively /usr/lib/udev/hwdb.bin if you want ship the compiled
- database in an immutable image.
- During runtime, only the binary database is used.
+ or alternatively /usr/lib/udev/hwdb.bin if you want ship the
+ compiled database in an immutable image. During runtime, only the binary database
+ is used.
+
+
+
+ Examples
+
+
+ General syntax of hwdb files
+
+ # /usr/lib/udev/hwdb.d/example.hwdb
+# Comments can be placed before any records. This is a good spot
+# to describe what that file is used for, what kind of properties
+# it defines, and the ordering convention.
+
+# A record with three matches and one property
+mouse:*:name:*Trackball*:
+mouse:*:name:*trackball*:
+mouse:*:name:*TrackBall*:
+ ID_INPUT_TRACKBALL=1
+
+# A record with a single match and five properties
+mouse:usb:v046dp4041:name:Logitech MX Master:
+ MOUSE_DPI=1000@166
+ MOUSE_WHEEL_CLICK_ANGLE=15
+ MOUSE_WHEEL_CLICK_ANGLE_HORIZONTAL=26
+ MOUSE_WHEEL_CLICK_COUNT=24
+ MOUSE_WHEEL_CLICK_COUNT_HORIZONTAL=14
+
+
+
+
+ Overriding of properties
+
+ # /usr/lib/udev/hwdb.d/60-keyboard.hwdb
+evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer*:pn*
+ KEYBOARD_KEY_a1=help
+ KEYBOARD_KEY_a2=setup
+ KEYBOARD_KEY_a3=battery
+
+evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer*:pn123*
+ KEYBOARD_KEY_a2=wlan
+
+# /etc/udev/hwdb.d/70-keyboard.hwdb
+# disable wlan key on all at keyboards
+evdev:atkbd:*
+ KEYBOARD_KEY_a2=reserved
+
+ If the hwdb consists of those two files, a keyboard with the lookup string
+ evdev:atkbd:dmi:bvnAcer:bdXXXXX:bd08/05/2010:svnAcer:pn123
+ will match all three records, and end up with the following properties:
+
+ KEYBOARD_KEY_a1=help
+KEYBOARD_KEY_a2=reserved
+KEYBOARD_KEY_a3=battery
+