]> git.ipfire.org Git - thirdparty/systemd.git/blobdiff - hwdb/60-keyboard.hwdb
sysuser: use OrderedHashmap
[thirdparty/systemd.git] / hwdb / 60-keyboard.hwdb
index c4031ab58768d4052ad5b4a40047693007776aa5..617938663688e671814748a236d8af22e8761ab6 100644 (file)
@@ -1,10 +1,17 @@
 # This file is part of systemd.
 #
-# Keyboard mapping of scan codes to key codes, and
-# scan codes to add to the AT keyboard's 'force-release' list.
+# This file contains 3 types of metadata to apply to keyboards and
+# keyboard-like input devices:
+# - Key mapping
+# - Hard-coded layouts
+# - Absence of modifier LEDs
+#
+# The matching process is the same for the different types of metadata.
+#
+# ########################### MATCHING #######################################
 #
 # The lookup keys are composed in:
-#   60-keyboard.rules
+#   60-evdev.rules
 #
 # Note: The format of the "evdev:" prefix match key is a
 # contract between the rules file and the hardware data, it might
 #    ZZZZ is the bus-id (see /usr/include/linux/input.h BUS_*), YYYY, XXXX and
 #    WWW are the 4-digit hex uppercase vendor, product and version ID and VVVV
 #    is an arbitrary length input-modalias describing the device capabilities.
+#    The vendor, product and version ID for a device node "eventX" is listed
+#    in /sys/class/input/eventX/device/id.
 #
 #  - AT keyboard DMI data matches:
 #      evdev:atkbd:dmi:bvn*:bvr*:bd*:svn<vendor>:pn<product>:pvr*
 #    <vendor> and <product> are the firmware-provided strings
-#    exported by the kernel DMI modalias.
+#    exported by the kernel DMI modalias, see /sys/class/dmi/id/modalias
 #
 #  - Input driver device name and DMI data match:
 #      evdev:name:<input device name>:dmi:bvn*:bvr*:bd*:svn<vendor>:pn*
 #    <input device name> is the name device specified by the
 #    driver, <vendor> is the firmware-provided string exported
-#    by the kernel DMI modalias.
+#    by the kernel DMI modalias, see /sys/class/dmi/id/modalias
+#
+#  - Extended input driver device name, properties and DMI data match:
+#      evdev:name:<input device name>:phys:<phys>:ev:<ev>:dmi:bvn*:bvr*:bd*:svn<vendor>:pn*
+#    <input device name> is the name device specified by the
+#    driver, <phys> is the physical-device-path, "cat
+#    /sys/class/input/input?/phys", <ev> is the event bitmask, "cat
+#    /sys/class/input/input?/capabilities/ev" and <vendor> is the
+#    firmware-provided string exported by the kernel DMI modalias,
+#    see /sys/class/dmi/id/modalias
+
+
+# ######################### KEY MAPPING ######################################
+#
+# Keyboard mapping of scan codes to key codes, and
+# scan codes to add to the AT keyboard's 'force-release' list.
 #
 # Scan codes are specified as:
 #   KEYBOARD_KEY_<hex scan code>=<key code identifier>
 # The scan code should be expressed in hex lowercase. The key codes
 # are retrieved and normalized from the kernel input API header.
+# Keycodes are either KEY_* defines in lowercase with the key_ prefix
+# optionally removed or BTN_ defines in lowercase with btn_ preserved.
 #
 # An '!' as the first character of the key identifier string
 # will add the scan code to the AT keyboard's list of scan codes
 #
 # To debug key presses and access scan code mapping data of
 # an input device use the commonly available tool: evtest(1).
+
+# A device with a fixed keyboard layout that must not be changed by
+# the desktop environment may specify that layout as:
+#   XKB_FIXED_LAYOUT="us"
+#   XKB_FIXED_VARIANT=""
+# Examples of such devices: the Yubikey or other key-code generating
+# devices.
 #
 # To update this file, create a new file
 #   /etc/udev/hwdb.d/70-keyboard.hwdb
@@ -49,7 +82,8 @@
 #   systemd-hwdb update
 #   udevadm trigger /dev/input/eventXX
 # where /dev/input/eventXX is the keyboard in question. If in
-# doubt, simply use /dev/input/event* to reload all input rules.
+# doubt, simply reload all input rules
+#   udevadm trigger --verbose --sysname-match="event*"
 #
 # If your changes are generally applicable, preferably send them as a pull
 # request to
 evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer*:pn*
 evdev:atkbd:dmi:bvn*:bvr*:bd*:svnGateway*:pnA0A1*:pvr*
 evdev:atkbd:dmi:bvn*:bvr*:bd*:svneMachines:pneMachines*E725:pvr*
+ KEYBOARD_KEY_86=wlan                                   # Fn+F3 or Fn+Q for comunication key
  KEYBOARD_KEY_a5=help                                   # Fn+F1
  KEYBOARD_KEY_a6=setup                                  # Fn+F2 Acer eSettings
  KEYBOARD_KEY_a7=battery                                # Fn+F3 Power Management
@@ -87,6 +122,7 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svneMachines:pneMachines*E725:pvr*
  KEYBOARD_KEY_f3=prog2                                  # "P2" programmable button
  KEYBOARD_KEY_f4=prog1                                  # "P1" programmable button
  KEYBOARD_KEY_f5=presentation
+ KEYBOARD_KEY_f6=power                                  # Power button
  KEYBOARD_KEY_f8=fn
  KEYBOARD_KEY_f9=prog1                                  # Launch NTI shadow
 
@@ -115,6 +151,9 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*8930:*
  KEYBOARD_KEY_89=fastforward
  KEYBOARD_KEY_9e=back
 
+evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*7750G:pvr*
+ KEYBOARD_KEY_e0=!pageup
+
 # Travelmate C300
 evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer*:pnTravelMate*C3[01]0*:pvr*
  KEYBOARD_KEY_67=f24                                    # FIXME: rotate screen
@@ -123,6 +162,10 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer*:pnTravelMate*C3[01]0*:pvr*
  KEYBOARD_KEY_6b=fn
  KEYBOARD_KEY_6c=screenlock                             # FIXME: lock tablet device/buttons
 
+# Travelmate P648-G2-MG
+evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer*:pnTravelMate*P648-G2-MG*:pvr*
+ KEYBOARD_KEY_8a=f20                                    # Microphone mute button; should be micmute
+
 # on some models this isn't brightnessup
 evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer*:pn*5210*:pvr*
 evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer*:pn*5220*:pvr*
@@ -137,6 +180,10 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*1640:*
 evdev:atkbd:dmi:bvn*:bvr*:bd*:svnAcer*:pnAOA*:pvr*
  KEYBOARD_KEY_a9=!switchvideomode                       # Fn+F5
 
+# Easynote models
+evdev:atkbd:dmi:bvn*:bvr*:bd*:svnPackard*Bell*:pnEasynote*:pvr*
+ KEYBOARD_KEY_86=wlan                                   # Fn+F3 or Fn+Q for comunication key
+
 ###########################################################
 # Alienware
 ###########################################################
@@ -196,6 +243,14 @@ evdev:input:b0003v049Fp0051*
  KEYBOARD_KEY_0c0014=prog1
  KEYBOARD_KEY_0c0015=messenger
 
+###########################################################
+# Cube
+###########################################################
+
+evdev:name:gpio-keys:phys:gpio-keys/input0:ev:3:dmi:bvn*:bvr*:bd*:svncube:pni1-TF:*
+ KEYBOARD_KEY_0=leftmeta
+ KEYBOARD_KEY_1=power
+
 ###########################################################
 # Dell
 ###########################################################
@@ -262,6 +317,10 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnDell*:pnPrecision*:pvr*
  KEYBOARD_KEY_88=!                                      # wireless switch
  KEYBOARD_KEY_9e=!f21
 
+# Dell Latitude E7*
+evdev:atkbd:dmi:bvn*:bvr*:bd*:svnDell*:pnLatitude*E7*:pvr*
+ KEYBOARD_KEY_88=unknown                                # Fn-PrtScr rfkill - handled in HW
+
 # Dell XPS
 evdev:atkbd:dmi:bvn*:bvr*:bd*:svnDell*:pnXPS*:pvr*
  KEYBOARD_KEY_8c=!unknown
@@ -275,7 +334,7 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnDell*:pnXPS12-9Q33*:pvr*
 evdev:name:Dell WMI hotkeys:dmi:bvn*:bvr*:bd*:svnDell*:pnLatitude*
 # Dell Precision microphone mute
 evdev:name:Dell WMI hotkeys:dmi:bvn*:bvr*:bd*:svnDell*:pnPrecision*
- KEYBOARD_KEY_150=f20                                   # Mic mute toggle, should be micmute
+ KEYBOARD_KEY_100150=f20                                   # Mic mute toggle, should be micmute
 
 ###########################################################
 # Everex
@@ -419,6 +478,10 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnHP*Pavilion*dv7*Notebook*PC:
 evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pn*[pP][aA][vV][iI][lL][iI][oO][nN]*13*x360*:pvr*
  KEYBOARD_KEY_d7=unknown
 
+# Purism Librem 13 V2
+evdev:atkbd:dmi:bvn*:bvr*:bd*:svnPurism*:pn*Librem13v2*:pvr*
+ KEYBOARD_KEY_56=backslash
+
 # Elitebook
 evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pn*Compaq*:pvr*
 evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pn*EliteBook*:pvr*
@@ -498,6 +561,7 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnHP*ProBook4*:pvr*
 evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP*:pnHP*ProBook*4*:pvr*
 # HP ZBook
 evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnHPZBook*:pvr*
+evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP*:pnHPZBook*:pvr*
  KEYBOARD_KEY_81=f20                                    # Fn+F8; Microphone mute button, should be micmute
 
 # HP Folio 1040g2
@@ -650,6 +714,8 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnIBM*:pn18666TU:pvr*
 
 # IdeaPad
 evdev:name:Ideapad extra buttons:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*
+ KEYBOARD_KEY_0d=rfkill                                 # airplane mode switch (toggle all wireless devices)
+ KEYBOARD_KEY_08=f20                                    # micmute
  KEYBOARD_KEY_42=f23
  KEYBOARD_KEY_43=f22
 
@@ -702,14 +768,14 @@ evdev:input:b0003v046DpC308*
 
 # Cordless Desktop S510
 evdev:input:b0003v046DpC50C*
- KEYBOARD_KEY_d4=zoomin
- KEYBOARD_KEY_cc=zoomout
+ KEYBOARD_KEY_d4=up                                     # zoomin
+ KEYBOARD_KEY_cc=down                                   # zoomout
 
 # Wave cordless
 evdev:input:b0003v046DpC317*
  KEYBOARD_KEY_9001c=scale                               # expo
- KEYBOARD_KEY_9001f=zoomout
- KEYBOARD_KEY_90020=zoomin
+ KEYBOARD_KEY_9001f=down                                # zoomout
+ KEYBOARD_KEY_90020=up                                  # zoomin
  KEYBOARD_KEY_9003d=prog1                               # gadget
  KEYBOARD_KEY_90005=camera
  KEYBOARD_KEY_90018=media
@@ -726,8 +792,8 @@ evdev:input:b0003v046DpC317*
 
 # Wave cordless
 evdev:input:b0003v046DpC517*
- KEYBOARD_KEY_c101f=zoomout
- KEYBOARD_KEY_c1020=zoomin
+ KEYBOARD_KEY_c101f=down                                # zoomout
+ KEYBOARD_KEY_c1020=up                                  # zoomin
  KEYBOARD_KEY_c1005=camera
  KEYBOARD_KEY_c0183=media
  KEYBOARD_KEY_c1041=wordprocessor
@@ -752,8 +818,8 @@ evdev:input:b0003v046DpC52[9B]*
  KEYBOARD_KEY_0c018a=mail
  KEYBOARD_KEY_0c0221=search
  KEYBOARD_KEY_0c00b8=ejectcd
- KEYBOARD_KEY_0c022d=zoomin
- KEYBOARD_KEY_0c022e=zoomout
+ KEYBOARD_KEY_0c022d=up                                 # zoomin
+ KEYBOARD_KEY_0c022e=down                               # zoomout
 
 # Logitech Presenter R400
 evdev:input:b0003v046DpC52D*
@@ -802,6 +868,7 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnMAXDATA:pnPro*7000*:pvr*
 ###########################################################
 
 # Akoya
+evdev:atkbd:dmi:bvn*:bvr*:svnMEDION*:pnS3409*:pvr*
 evdev:atkbd:dmi:bvn*:bvr*:svnMedion*:pnAkoya*:pvr*
  KEYBOARD_KEY_a0=!mute
  KEYBOARD_KEY_ae=!volumedown
@@ -827,8 +894,8 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnMEDIONNB:pnA555*:pvr*
 
 # Microsoft Natural Ergonomic Keyboard 4000
 evdev:input:b0003v045Ep00DB*
- KEYBOARD_KEY_c022d=zoomin
- KEYBOARD_KEY_c022e=zoomout
+ KEYBOARD_KEY_c022d=up                                  # zoomin
+ KEYBOARD_KEY_c022e=down                                # zoomout
 
 ###########################################################
 # Micro Star
@@ -1120,8 +1187,8 @@ evdev:name:Sony Vaio Keys:dmi:bvn*:bvr*:bd*:svnSony*:pnVGN-Z21*:pvr*
  KEYBOARD_KEY_00=brightnessdown                         # Fn+F5
  KEYBOARD_KEY_10=brightnessup                           # Fn+F6
  KEYBOARD_KEY_11=switchvideomode                        # Fn+F7
- KEYBOARD_KEY_12=zoomout
- KEYBOARD_KEY_14=zoomin
+ KEYBOARD_KEY_12=down                                   # zoomout
+ KEYBOARD_KEY_14=up                                     # zoomin
  KEYBOARD_KEY_15=suspend                                # Fn+F12
  KEYBOARD_KEY_17=prog1
  KEYBOARD_KEY_20=media
@@ -1131,8 +1198,8 @@ evdev:name:Sony Vaio Keys:dmi:bvn*:bvr*:bd*:svnSony*:pnVGN-FW250*:pvr*
 
 evdev:name:Sony Vaio Keys:dmi:bvn*:bvr*:bd*:svnSony*:pnVPC*:pvr*
  KEYBOARD_KEY_05=f21                                    # Fn+F1 -> KEY_F21 (The actual touchpad toggle)
- KEYBOARD_KEY_0d=zoomout                                # Fn+F9
- KEYBOARD_KEY_0e=zoomin                                 # Fn+F10
+ KEYBOARD_KEY_0d=down                                   # Fn+F9 zoomout
+ KEYBOARD_KEY_0e=up                                     # Fn+F10 zoomin
 
 ###########################################################
 # Toshiba
@@ -1221,6 +1288,68 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnZepto:pnZnote*6615WD:*
  KEYBOARD_KEY_ae=!                                      # volume down
  KEYBOARD_KEY_b0=!                                      # volume up
 
+##########################################
+# Ideazon
+##########################################
+
+# Ideazon Zboard Merc
+evdev:input:b0003v1038p0210*
+ KEYBOARD_KEY_c0227=q
+ KEYBOARD_KEY_c0223=w
+ KEYBOARD_KEY_c0221=e
+ KEYBOARD_KEY_c0224=a
+ KEYBOARD_KEY_c0226=s
+ KEYBOARD_KEY_c0225=d
+ KEYBOARD_KEY_c0192=tab
+ KEYBOARD_KEY_c018a=leftalt
+ KEYBOARD_KEY_c022a=r
+ KEYBOARD_KEY_c0183=f10
+ KEYBOARD_KEY_70059=1
+ KEYBOARD_KEY_7005a=2
+ KEYBOARD_KEY_7005b=3
+ KEYBOARD_KEY_7005c=4
+ KEYBOARD_KEY_7005d=5
+ KEYBOARD_KEY_7005e=6
+ KEYBOARD_KEY_7005f=7
+ KEYBOARD_KEY_70060=8
+ KEYBOARD_KEY_70061=9
+ KEYBOARD_KEY_70062=0
+ KEYBOARD_KEY_70057=equal
+ KEYBOARD_KEY_70077=capslock
+ KEYBOARD_KEY_70054=leftshift
+ KEYBOARD_KEY_70063=leftctrl
+ KEYBOARD_KEY_7006b=t
+ KEYBOARD_KEY_70067=f
+ KEYBOARD_KEY_7006c=g
+ KEYBOARD_KEY_7006d=v
+ KEYBOARD_KEY_7006e=b
+ KEYBOARD_KEY_70074=p
+ KEYBOARD_KEY_7006f=c
+ KEYBOARD_KEY_70055=space
+ KEYBOARD_KEY_70076=f9
+ KEYBOARD_KEY_70046=f11
+ KEYBOARD_KEY_70079=f6
+
+# Ideazon Zboard Fang
+evdev:input:b0003v1038p0310*
+ KEYBOARD_KEY_70059=1
+ KEYBOARD_KEY_7005b=3
+ KEYBOARD_KEY_70040=equal
+ KEYBOARD_KEY_70042=l
+ KEYBOARD_KEY_7002b=tab
+ KEYBOARD_KEY_7005e=capslock
+ KEYBOARD_KEY_700e2=leftalt
+ KEYBOARD_KEY_700e1=leftshift
+ KEYBOARD_KEY_700e0=leftctrl
+ KEYBOARD_KEY_70038=z
+ KEYBOARD_KEY_7003e=t
+ KEYBOARD_KEY_70015=r
+ KEYBOARD_KEY_70010=g
+ KEYBOARD_KEY_70050=n
+ KEYBOARD_KEY_70030=f9
+ KEYBOARD_KEY_7002f=f11
+ KEYBOARD_KEY_70046=f6
+
 ###########################################################
 # Other
 ###########################################################
@@ -1244,3 +1373,35 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnDIXONSP:pnDIXON*:pvr*
  KEYBOARD_KEY_a0=!                                      # mute
  KEYBOARD_KEY_ae=!                                      # volume down
  KEYBOARD_KEY_b0=!                                      # volume up
+
+######################### FIXED LAYOUT DEVICES #############################
+# This section lists devices for which only one keyboard layout is possible
+# or useful such as devices which "type" expecting the user's keymap to match
+# a particular one. For example, barcode readers and OTP keys.
+#
+# The layout must be an xkb compatible layout (defined with XKB_FIXED_LAYOUT),
+# with an accompanying variant (defined with XKB_FIXED_VARIANT) if necessary.
+
+# Yubico Yubico Yubikey II"
+evdev:input:b0003v1050p0010*
+# Yubico Yubikey NEO OTP+CCID
+evdev:input:b0003v1050p0111*
+# Yubico Yubikey NEO OTP+U2F+CCID
+evdev:input:b0003v1050p0116*
+# OKE Electron Company USB barcode reader
+evdev:input:b0003v05FEp1010*
+ XKB_FIXED_LAYOUT="us"
+ XKB_FIXED_VARIANT=""
+
+######################### LACK OF MODIFIER LEDS ############################
+# This section lists keyboard which do not have their own LEDs for some
+# modifiers. Only Caps-Lock (KEYBOARD_LED_CAPSLOCK) and Num-Lock
+# (KEYBOARD_LED_CAPSLOCK) are currently handled and need their values set
+# to "0" to indicate the absence of LED.
+#
+# Presence of a LED is implicit when the property is absent.
+
+# Logitech K750
+evdev:input:b0003v046Dp4002*
+ KEYBOARD_LED_NUMLOCK=0
+ KEYBOARD_LED_CAPSLOCK=0