# is not necessarily expected to be a stable ABI.
#
# Supported hardware matches are:
-# - USB keyboards identified by the usb kernel modalias:
-# keyboard:usb:vXXXXpYYYY*
-# XXXX is the 4-digit hex uppercase vendor, and YYYY
-# the 4-digit hex uppercase product.
+# - Generic input devices match:
+# keyboard:input:bZZZZvYYYYpXXXXeWWWW-VVVV
+# This matches on the kernel modalias of the input-device, mainly:
+# 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.
#
# - AT keyboard DMI data matches:
# keyboard:dmi:bvn*:bvr*:bd*:svn<vendor>:pn<product>:pvr*
# <vendor> and <product> are the firmware-provided strings
# exported by the kernel DMI modalias.
#
-# - Platform driver device name and DMI data match:
+# - Input driver device name and DMI data match:
# keyboard: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
# an input device use the commonly available tool: evtest(1).
#
# To update this file, create a new file
-# /etc/udev/hwdb.d/70-keyboad.hwdb
+# /etc/udev/hwdb.d/70-keyboard.hwdb
# and add your rules there. To load the new rules execute (as root):
# udevadm hwdb --update
# udevadm trigger /dev/input/eventXX
KEYBOARD_KEY_f8=fn
KEYBOARD_KEY_f9=prog1 # Launch NTI shadow
-# Acer platform kernel driver
+# Acer kernel driver
keyboard:name:Acer WMI hotkeys:dmi:bvn*:bvr*:bd*:svn*:pnAcer*:pvr*
KEYBOARD_KEY_82=f21 # Touchpad toggle
KEYBOARD_KEY_9e=email
KEYBOARD_KEY_9f=homepage
-keyboard:usb:v049Fp0051d*dc*dsc*dp*ic*isc*ip*in01*
+keyboard:input:b0003v049Fp0051*
KEYBOARD_KEY_0c0011=presentation
KEYBOARD_KEY_0c0012=addressbook
KEYBOARD_KEY_0c0013=info
# Dell XPS12 9Q33
keyboard:dmi:bvn*:bvr*:bd*:svnDell*:pnXPS12-9Q33*:pvr*
KEYBOARD_KEY_88=wlan
- KEYBOARD_KEY_65=switchvideomode # Screen Rotate
+ KEYBOARD_KEY_65=direction # Screen Rotate
# Dell Latitude microphone mute
keyboard:name:Dell WMI hotkeys:dmi:bvn*:bvr*:bd*:svnDell*:pnLatitude*
###########################################################
# Slimstar 320
-keyboard:usb:v0458p0708d*dc*dsc*dp*ic*isc*ip*in01*
+keyboard:input:b0003v0458p0708*
KEYBOARD_KEY_0900f0=scrollup
KEYBOARD_KEY_0900f1=scrolldown
KEYBOARD_KEY_0900f3=back
# KEYBOARD_KEY_3e=fullscreen, no defined key sym
+# HP EliteBook 725 G2
+keyboard:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnHPLicrice:pvr*
+# HP ProBook 440 G2
+keyboard:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnHP440G2:pvr*
+# HP ProBook 445 G1
+keyboard:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnHPProBook445G1NotebookPC:pvr*
+ KEYBOARD_KEY_81=f20 # Fn+F8; Microphone mute button, should be micmute
+
###########################################################
# IBM
###########################################################
KEYBOARD_KEY_17=prog1 # ThinkPad/ThinkVantage button (high keycode: "vendor")
# IBM Thinkpad USB Keyboard Trackpoint
-keyboard:usb:v04B3p301[89]*
+keyboard:input:b0003v04B3p301[89]*
KEYBOARD_KEY_900f0=screenlock
KEYBOARD_KEY_900f1=wlan
KEYBOARD_KEY_900f2=switchvideomode
KEYBOARD_KEY_1a=f20 # Microphone mute button; should be micmute
# ThinkPad Keyboard with TrackPoint
-keyboard:usb:v17EFp6009*
+keyboard:input:b0003v17EFp6009*
KEYBOARD_KEY_090012=screenlock # Fn+F2
KEYBOARD_KEY_090013=battery # Fn+F3
KEYBOARD_KEY_090014=wlan # Fn+F5
KEYBOARD_KEY_98=suspend # Fn+F12 hibernate
KEYBOARD_KEY_b4=prog1 # Lenovo Care
+# "Lenovo Care" Key of the 3000 N200
+keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO:pn0769AP2:pvr3000N200:*
+ KEYBOARD_KEY_b4=prog1
+
# lenovo-ideapad
keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*IdeaPad*:pvr*
keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pnS10-*:pvr*
KEYBOARD_KEY_f3=f21
# Thinkpad X200_Tablet
-keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pnThinkPad*X2*Tablet*:pvr*
keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*:pvrThinkPad*X2*Tablet*
KEYBOARD_KEY_5d=menu
KEYBOARD_KEY_63=fn
KEYBOARD_KEY_6c=direction # rotate screen
# ThinkPad X6 Tablet
-keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pnThinkPad*X6*:pvr*
+keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*:pvrThinkPad*X6*Tablet*
KEYBOARD_KEY_6c=direction # rotate
- KEYBOARD_KEY_68=f13 # toolbox
+ KEYBOARD_KEY_68=leftmeta # toolbox
KEYBOARD_KEY_6b=esc # escape
KEYBOARD_KEY_6d=right # right on d-pad
KEYBOARD_KEY_6e=left # left on d-pad
# ThinkPad X41 Tablet
keyboard:dmi:bvn*:bvr*:bd*:svnIBM*:pn18666TU:pvr*
KEYBOARD_KEY_6c=direction # rotate
- KEYBOARD_KEY_68=f13 # toolbox
+ KEYBOARD_KEY_68=leftmeta # toolbox
KEYBOARD_KEY_6b=esc # escape
KEYBOARD_KEY_69=enter # enter on d-pad
KEYBOARD_KEY_f1=f21
# enhanced USB keyboard
-keyboard:usb:v04B3p301B*
+keyboard:input:b0003v04B3p301B*
KEYBOARD_KEY_90001=prog1 # ThinkVantage
KEYBOARD_KEY_90002=screenlock
KEYBOARD_KEY_90003=file
###########################################################
# iTouch
-keyboard:usb:v046DpC308*
+keyboard:input:b0003v046DpC308*
KEYBOARD_KEY_90001=shop # Shopping
KEYBOARD_KEY_90002=config # iTouch
KEYBOARD_KEY_90003=finance # Finance
KEYBOARD_KEY_C0183=media # Media
# Cordless Desktop S510
-keyboard:usb:v046DpC50C*
+keyboard:input:b0003v046DpC50C*
KEYBOARD_KEY_d4=zoomin
KEYBOARD_KEY_cc=zoomout
# Wave cordless
-keyboard:usb:v046DpC317*
+keyboard:input:b0003v046DpC317*
KEYBOARD_KEY_9001c=scale # expo
KEYBOARD_KEY_9001f=zoomout
KEYBOARD_KEY_90020=zoomin
KEYBOARD_KEY_9004c=ejectclosecd
# Wave cordless
-keyboard:usb:v046DpC517*
+keyboard:input:b0003v046DpC517*
KEYBOARD_KEY_c101f=zoomout
KEYBOARD_KEY_c1020=zoomin
KEYBOARD_KEY_c1005=camera
KEYBOARD_KEY_c104c=ejectclosecd
# Cordless Wave Pro
-keyboard:usb:v046DpC52[9B]*
+keyboard:input:b0003v046DpC52[9B]*
KEYBOARD_KEY_0c01b6=camera
KEYBOARD_KEY_0c0183=media
KEYBOARD_KEY_0c0184=wordprocessor
KEYBOARD_KEY_0c022e=zoomout
# Logitech Presenter R400
-keyboard:usb:v046DpC52Dd*dc*dsc*dp*ic*isc*ip*in00*
+keyboard:input:b0003v046DpC52D*
KEYBOARD_KEY_070029=presentation
KEYBOARD_KEY_07003e=presentation
KEYBOARD_KEY_070037=displaytoggle
# Internet Navigator
-keyboard:usb:v046DpC309*
+keyboard:input:b0003v046DpC309*
KEYBOARD_KEY_90001=chat # Messenger/SMS
KEYBOARD_KEY_90002=camera # webcam
KEYBOARD_KEY_90003=prog1 # iTouch
###########################################################
# Microsoft Natural Ergonomic Keyboard 4000
-keyboard:usb:v045Ep00DB*
+keyboard:input:b0003v045Ep00DB*
KEYBOARD_KEY_c022d=zoomin
KEYBOARD_KEY_c022e=zoomout
keyboard:dmi:bvn*:bvr*:bd*:svnMicro-Star*:pn*:pvr*
KEYBOARD_KEY_c2=ejectcd
-#
+# some MSI models generate ACPI/input events on the LNXVIDEO input devices,
+# plus some extra synthesized ones on atkbd as an echo of actually changing the
+# brightness; so ignore those atkbd ones, to avoid loops
keyboard:dmi:bvn*:bvr*:bd*:svnMICRO-STAR*:pn*U-100*:pvr*
keyboard:dmi:bvn*:bvr*:bd*:svnMICRO-STAR*:pn*U100*:pvr*
keyboard:dmi:bvn*:bvr*:bd*:svnMICRO-STAR*:pn*N033:*
KEYBOARD_KEY_f7=reserved
KEYBOARD_KEY_f8=reserved
-#
+# MSI Wind U90/U100 generates separate touchpad on/off keycodes so ignore touchpad toggle keycode
keyboard:dmi:bvn*:bvr*:bd*:svnMICRO-STAR*:pnU90/U100:*
KEYBOARD_KEY_e4=reserved
###########################################################
# Plantronics .Audio 626 DSP
-keyboard:usb:v047FpC006*
+keyboard:input:b0003v047FpC006*
KEYBOARD_KEY_b002f=f20 # Microphone mute button; should be micmute
###########################################################