summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore11
-rw-r--r--Makefile.am6
-rw-r--r--UPSTREAM-206-commit-todo164
-rw-r--r--UPSTREAM.notes8
-rw-r--r--configure.ac8
-rw-r--r--hwdb/20-OUI.hwdb189
-rw-r--r--hwdb/20-pci-vendor-model.hwdb76
-rw-r--r--hwdb/60-keyboard.hwdb1011
-rw-r--r--hwdb/Makefile.am5
-rw-r--r--keymaps-force-release/Makefile.am10
-rw-r--r--keymaps-force-release/common-volume-keys3
-rw-r--r--keymaps-force-release/dell-touchpad1
-rw-r--r--keymaps-force-release/dell-xps1
-rw-r--r--keymaps-force-release/hp-other3
-rw-r--r--keymaps-force-release/samsung-other10
-rw-r--r--keymaps-force-release/samsung-series-32
-rw-r--r--keymaps-force-release/samsung-series-96
-rw-r--r--keymaps/Makefile.README3
-rw-r--r--keymaps/Makefile.am73
-rw-r--r--keymaps/acer22
-rw-r--r--keymaps/acer-aspire_57205
-rw-r--r--keymaps/acer-aspire_5920g5
-rw-r--r--keymaps/acer-aspire_69205
-rw-r--r--keymaps/acer-aspire_89305
-rw-r--r--keymaps/acer-travelmate_c3005
-rw-r--r--keymaps/asus3
-rw-r--r--keymaps/compaq-e_evo4
-rw-r--r--keymaps/dell29
-rw-r--r--keymaps/dell-latitude-xt24
-rw-r--r--keymaps/everex-xt50007
-rw-r--r--keymaps/fujitsu-amilo_li_27323
-rw-r--r--keymaps/fujitsu-amilo_pa_25483
-rw-r--r--keymaps/fujitsu-amilo_pro_edition_v35054
-rw-r--r--keymaps/fujitsu-amilo_pro_v32052
-rw-r--r--keymaps/fujitsu-amilo_si_15206
-rw-r--r--keymaps/fujitsu-esprimo_mobile_v54
-rw-r--r--keymaps/fujitsu-esprimo_mobile_v62
-rw-r--r--keymaps/genius-slimstar-32035
-rw-r--r--keymaps/hewlett-packard12
-rw-r--r--keymaps/hewlett-packard-2510p_2530p2
-rw-r--r--keymaps/hewlett-packard-compaq_elitebook2
-rw-r--r--keymaps/hewlett-packard-hdx9494nr3
-rw-r--r--keymaps/hewlett-packard-pavilion3
-rw-r--r--keymaps/hewlett-packard-presario-21003
-rw-r--r--keymaps/hewlett-packard-tablet6
-rw-r--r--keymaps/hewlett-packard-tx23
-rw-r--r--keymaps/hewlett-packard_elitebook-8440p5
-rw-r--r--keymaps/hewlett-packard_elitebook-8460p3
-rw-r--r--keymaps/ibm-thinkpad-usb-keyboard-trackpoint7
-rw-r--r--keymaps/inventec-symphony_6.0_7.02
-rw-r--r--keymaps/lenovo-30005
-rw-r--r--keymaps/lenovo-ideapad8
-rw-r--r--keymaps/lenovo-thinkpad-usb-keyboard-trackpoint13
-rw-r--r--keymaps/lenovo-thinkpad_x200_tablet6
-rw-r--r--keymaps/lenovo-thinkpad_x6_tablet8
-rw-r--r--keymaps/lg-x11012
-rw-r--r--keymaps/logitech-usb6
-rw-r--r--keymaps/logitech-wave16
-rw-r--r--keymaps/logitech-wave-cordless15
-rw-r--r--keymaps/logitech-wave-pro-cordless12
-rw-r--r--keymaps/maxdata-pro_70009
-rw-r--r--keymaps/medion-fid20602
-rw-r--r--keymaps/medionnb-a5554
-rw-r--r--keymaps/micro-star13
-rw-r--r--keymaps/module-asus-w3j11
-rw-r--r--keymaps/module-ibm16
-rw-r--r--keymaps/module-lenovo17
-rw-r--r--keymaps/module-sony8
-rw-r--r--keymaps/module-sony-old2
-rw-r--r--keymaps/module-sony-vgn8
-rw-r--r--keymaps/module-sony-vpc4
-rw-r--r--keymaps/olpc-xo74
-rw-r--r--keymaps/onkyo14
-rw-r--r--keymaps/oqo-model25
-rw-r--r--keymaps/samsung-other14
-rw-r--r--keymaps/samsung-series-33
-rw-r--r--keymaps/samsung-series-95
-rw-r--r--keymaps/samsung-sq1us7
-rw-r--r--keymaps/samsung-sx20s4
-rw-r--r--keymaps/toshiba-satellite_a1002
-rw-r--r--keymaps/toshiba-satellite_a11010
-rw-r--r--keymaps/toshiba-satellite_m30x6
-rw-r--r--keymaps/zepto-znote11
-rw-r--r--rules/60-keyboard.rules22
-rw-r--r--rules/Makefile.am3
-rw-r--r--src/Makefile.am5
-rw-r--r--src/keymap/Makefile.am58
-rw-r--r--src/keymap/README.keymap.txt97
-rw-r--r--src/keymap/check-keymaps.sh.in45
-rwxr-xr-xsrc/keymap/findkeyboards68
-rw-r--r--src/keymap/keyboard-force-release.sh.in22
-rw-r--r--src/keymap/keymap.c453
-rw-r--r--src/udev/Makefile.am35
-rw-r--r--src/udev/udev-builtin-keyboard.c163
-rw-r--r--src/udev/udev-builtin.c3
-rw-r--r--src/udev/udev.h6
96 files changed, 1684 insertions, 1440 deletions
diff --git a/.gitignore b/.gitignore
index f523ba12d7..3f8ef48036 100644
--- a/.gitignore
+++ b/.gitignore
@@ -53,13 +53,10 @@ src/gudev/gudevmarshal.h
src/gudev/GUdev-1.0.gir
src/gudev/GUdev-1.0.typelib
-src/keymap/check-keymaps.sh
-src/keymap/keyboard-force-release.sh
-src/keymap/keymap
-src/keymap/keys-from-name.gperf
-src/keymap/keys-from-name.h
-src/keymap/keys-to-name.h
-src/keymap/keys.txt
+src/udev/keyboard-keys-from-name.gperf
+src/udev/keyboard-keys-from-name.h
+src/udev/keyboard-keys-to-name.h
+src/udev/keyboard-keys.txt
test/test-libudev
test/test-udev
diff --git a/Makefile.am b/Makefile.am
index 4b07a365d5..509447ac0c 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -8,12 +8,6 @@ SUBDIRS = \
docs \
test
-if ENABLE_KEYMAP
-SUBDIRS += \
- keymaps \
- keymaps-force-release
-endif
-
if ENABLE_MANPAGES
SUBDIRS += \
man
diff --git a/UPSTREAM-206-commit-todo b/UPSTREAM-206-commit-todo
new file mode 100644
index 0000000000..64a62978c6
--- /dev/null
+++ b/UPSTREAM-206-commit-todo
@@ -0,0 +1,164 @@
+21bf2ab082b42f03df5b4685df2fddc4d6e0d572
+0778c3db87383ffcbe0fd303019c8b7e96b75394
+f4f8f7b546508e1e7c94b072df685ac1342e8d7e
+251cc8194228ac86c9a7a4c75a54a94cea2095c7
+33b521be152f67cd722695ba9a2966eda5ee6765
+efa3c0af8e0c8a9c7e3059bde65081b0020dfa6c
+28f5c779e5513ab1301ac103471009711b0961e0
+7e380bba1cd517570655c0e653e2239e33988cd1
+ef7e6e0598b1711d7ccf741bb8e4e07a02ef33a7
+408f281bc7d65c86563f46e99e07efd1a1d9e03a
+fbce11397f4d19821a9dfe66ee3ebe11cad90057
+ orthographical mishaps that appeared in man/ in recent commits.
+44affdc5fd20f812c25bc9d2b1a9fc04215274a1
+3c475ce44e6b3b5bd6b22cff11a1322dabd95ba0
+eb75d0ed059f56f0b5a8dcb8d490fae7063c76ca
+459da00fe6496a77dcc31df964b59a17e9746c94
+bf7f800f2b3e93ccd1229d4717166f3a4d3af72f
+e7c431d3bcfdeeec5dcae0707145edb9a3f749aa
+d4d60b316914770e9e671122394f96521841eac7
+19cace379f3f680d3201cd257ab3ca6708b2d45d
+83787333bd75f3fb5d2d844a5d5dbf68d93f7f3f
+847ae0ae7f29e7bfb245d692409fc2948eab7d1d
+9365b048c0c9f62ef7f696216ba049e6b4c2f2e5
+3e2f69b779aa0f3466ebb45837e8507baa0832f7
+7f0386f62c128896519aafa203caa1b3aafd4393
+1ec96668dd0dcb19cc2f7b99cbf73df0d769c97d
+60211b35070a20ed0e78a83f39619139d56f7745
+f7f74d8ec46532f13a1dc418d550eaf76b339fa3
+431c72dc3d482732a01d3ab929aa9b2c36422d46
+3803cde44c3d949765bdf0e8bce06886224d40b4
+dc7adf202b82fc0054c457ce6ca3bcedb88dde57
+e2f2fb786059fbed410938f16e5cc8b851366b14
+ef89eef77ee098a6828169a6d0d74128e236bcbd
+86d7de36869429f20d75e34bb3ddb2cfd2470e75
+aea38d8047a7a9370f8545007d242ede4a5cede1
+6aaa8c2f783cd1b3ac27c5ce40625d032e7e3d71
+61ad59b1314060958c6e1b1b480074e230b6ed3e
+bc5cb1d525461c75e69ce1f82a52e223309cca7c
+085b90af43fefd9ed195902c4b55f1da3c568554
+e1b7e7ec9b34ae6ae54a4c8084395cbf2bfe9960
+5d48cd27270e74f878f6ed3fe119e4cf3ef7f84e
+98653cfb5005d0f505c48287d233d270ae6e75d6
+466784c8710e5cb0e0b86a16506d992d7ec5b619
+f04ca8c214e02e58877e994e5d1fa29a6abe5157
+d4ac85c6f6d8547f8b835009ae431438de72df28
+2f5df74a5ec135ab2baebf26af6f088e5b4b8205
+9b9b3d36b8ffe5b41c1455bffd44a9d11efc8aee
+44bc6e1fe0171af19451b5586f7fdd08853ccf5b
+a54e3b3d6a4fe28a39729f4c5ad11cd26706110c
+c2654883624885696edccd2a202873998ec208f1
+059b7a9aad6c2e60957761b8f63267861c859be8
+52990c2e0eabd1c11280f553f858062d4165b92f
+4b744dfabebd10bf0f13b64060f44b1bd6c82704
+d121b396ccb19dc33aacfc75a7f7a719914267c8
+affba8e90243526be673ad9f9b306a740b8824a6
+1070f974f7a1b6ba012e352b9d635d3902eca244
+2ce982f9b1a9f409b10fc4c0f3faa6b594b58df9
+20422497109aaba1d214f1597530de8b8788a526
+c3bb87dbab8b79bb9253407cb5b7f3e6fe8db395
+c961869ac580f5a3aea3737f9e45af71b0983662
+c72aadd1851096ea979f68b4e32cca71746ccdc4
+956eaf2b8d6c9999024705ddadc7393bc707de02
+69af45035913e7119cffd94c542bd3039600e45d
+4ad16808c02e3eb6c1ec8500b3d086cc28e9b75a
+248fc619b5e3e24d78f171f95b85916eee7987bd
+dd94c17e7da89fa612952119ac825116dc5a8deb
+32b2634edf218e250b84615bbf106b2baf42d69b
+c5757cc8dbcddb3e8b13ebba4ea4b36589bfd3db
+83a05f2c89d228a9a92b998b1cbd4a51f3693711
+db0c1e3bd39c9151ba4ac8e029ec77a4ec923bd1
+6b78df0a6ec75f25705a0f78ef895b95ab75a7ea
+84b6ad702e64db534f67ce32d4dd2fec00a16784
+6cf2f1d94dc7749bcdff5385838bdc8eba9c3001
+e7256c5c137e58fb3dc1ebca8e5845733a5f733c
+042e33ae3a7feb08c8105f1345fd244315109405
+a65f06bb27688a6738f2f94b7f055f4c66768d63
+daabe5491ee0c78b735336c9e69b7f6ea57464e0
+21c72713ae89cfc2c4096c383af9bb482665e0a6
+9c33d34fe4cd0bc58ea12e5258e595647c9e0b29
+6ed80a4e346883b99263a1a13505ef6afcbc09c3
+a331b5e6d4724365bad9edeb9420c7e26e7f50da
+18d4e7c26e7806ac363d19989df7144d5058ce41
+7080ea16b5a0bfd71bfcdffc998e91f5273d47f9
+36c0868b67a9387d39c97983d3d22cfce0fedc62
+f3c19b70fa970321ec06d3bd2497f5abd525efc9
+ Revert 90fc91d0065 again. There is no 900XC3 model, that's 900X3C and
+b31c6d8d4f33502d6060e708f5252ee2ea8648ad
+7801356442578ff6e1c65844eb9e65c819af4660
+3a83211689bdf4ab617a4fb79e11980c50918123
+fa7deadb074dfbe473cf3bd942768dbd94cbf7c3
+65cd79f7f574532e5f91d581aaff923c29655bbd
+31a7eb86f18b0466681d6fbe80c148f96c551c80
+77a9e8de6572db6ba5ca49023937b67fc835f356
+8cf3ca80680b43015971cbbf4625517ae859d50c
+10fb4e35fd8a44340f695e49230dc61b5766d47a
+e7d90b71272f921b2d5a8f73a26fdd19f546ad07
+dac70dc77769f32b202ab07984687593de22f6b3
+d907c2086716681936755f28ac80b3445c6d0196
+248aa28ff27418ad074439014d476ed8cd2e01db
+36398225b44367c89f11f42810e4f79652b09a09
+ travis: Add a travis.yml for doing CI after commits
+b4ecc959733d9d258d8ed0e8179368ee844a5578
+b8547c10c82994f2b8eab4510629139439b49371
+6c5a28255bea4385289149b4617c86a24eec519f
+3eb1395706ca0a00ac15d59098a0250b0377e6b5
+bf502e636be8f76e05b0334b4e78ea7a398ba241
+6aea6d10f460853111ca8744201ec8dade97de3c
+7aa4fa34f76b0d9b031f0a5ea941c7fa10cebbee
+92d430a9e03056c0f62ed49149d59aed0046d0dd
+6a75304e41e4487d840057a0e5f9972e141e4540
+b98e3866fddf2edfa13fc1b4323aa84f89336ff2
+3d56f7df4411684404470d36ddec0d90649a13a3
+9f64229f9ca69f5652b238a67531432e56108bd6
+ This reverts cd3069559a09b4e4f85a6f02aa8f0521f48359ca.
+d7b478b448d16b0f755e7e1c2eb4df83859034b2
+b463b81399f0bc0d54107ef819cc0f843473c7d7
+d868475ad62547f0a034dfaf038aff31b3d05372
+479fe882ae92e4c2eac3c995cd0d23d4c604889f
+b54022fb92580022c5e830fbe4280992f5b3a770
+433dd100442e8197868def975c6fd38b48dc6439
+47a1454f707dff2e5d1db2f8bfcc406805d4d450
+cd3069559a09b4e4f85a6f02aa8f0521f48359ca
+66a69314941b5020f57cda943095413c40d677d8
+f440e1bb8a0b1262c7649da502d0e9358019b968
+1e1ddecf405fdeb5a073c0696fafb50946af60d2
+b9ec9359369f224bfb13db616f97401a6a177bd8
+665f8316f435772ed539be5e164a85cd188f84b4
+8e7076caae32a560a11c1643b53fc4f12db4a6b1
+554604b3073467af75dc94fac9e2343148603289
+c14901bdebb311531fb85b02c7c6eebf6e8e4388
+042f9f5e5e76cf0e3cbfd009abd2add0366cdeca
+9d12709626bccc0cae677a7035f62efe6aabb4ab
+05b23cae8ebf6fbafd23ab8a0b0cfed747745d15
+d7bd3de0654669e65b9642c248c5fa6d1d9a9f61
+8a84192905a9845fda31b65cc433127f9c2f95ae
+be2c1bd2a843aa61901086fccbae15b3aa085fb1
+a8833944647bfd10e43569646be954db5cbac54e
+e2ca86cf78f911a8be51f0224796e24883019139
+852752fca2f73323e3c25b33348b3c92458665ae
+f7db7a691c3f532cf60886312459f2baea755283
+4c5420a0c1429de866c4dfbe2f973cfa241bdbe4
+049b4474b35d0b854f87b0795a5113665413f6a4
+8aa75193662d0e18d7c21ee9d546b7f3c8b8bc14
+befb5b6a71c175d523644edbddd01b4b722fe956
+f6940be7825755d77ade4cd42231aab9e3580623
+bafb15bab99887d1b6b8a35136531bac6c3876a6
+aa1936ea1a89c2bb968ba33e3274898a4eeae771
+8577e67245fc5d38bfdc32349388769895202bc4
+66713f77e851c12452729d37e22ef66673852b8f
+ac9ef33358b6e6277cfca86a85a49a022824549e
+49998ede042907b0ba7f5e85e02fa569da26bc04
+7fb3ee51c1b37738fd0ea2c81dfd6c336144698a
+f2d4f98d5873e0649b79b04b967fc9625ab3a350
+6797c324a653f119a3d7133122648aaa4878ddd6
+72673e866a83e6aafdbb599eb3eff2617b7dc79d
+b9316fb0f39fff3df792e4e72eb491ec4265b91f
+71445ae75b0e9954d141e5f0ee97803b406ea332
+d0ede8f1c555500dceebd3cc8a8e877ed1d89de6
+94c01aeb1049a87435e046245b8e5d975b778c60
+0c5778a26b14093c79bfc9e8b34e2aeeb1d79b87
+b170dd803d334234ad7edd0dc7bb34860832bc07
+6fa4853328e3d78d092172fa54effb7e785d0a85
+376dd21dc0757e8a6d3f60d6d21bb802a90f1983
+bdeeb6b543a2a2d0a494f17b85f1498859cdfc2f
diff --git a/UPSTREAM.notes b/UPSTREAM.notes
index 7cb12e32ff..e2e1cadd98 100644
--- a/UPSTREAM.notes
+++ b/UPSTREAM.notes
@@ -1,3 +1,11 @@
+2013-07-24
+
+ * Incorporate migration from external to internal keymaps. About 13 commits were cherry-picked
+ out of upstream, after and including 9d7d42bc406a2ac04639674281ce3ff6beeda790, to assemble
+ this commit in eudev. Note that between this commit and upstream release 206 there are still
+ many commits that need to be evaluated -- the commits are temporarily stored in the file
+ 'UPSTREAM-206-commit-todo'.
+
2013-07-11
* Prepare 1.1 release. Uptream imports are up to date as of 2013-07-10. All commits
diff --git a/configure.ac b/configure.ac
index 3e5c53f9c4..52e241fa70 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,6 +1,6 @@
AC_PREREQ([2.68])
-AC_INIT([eudev],[1.1],[https://github.com/gentoo/eudev/issues])
+AC_INIT([eudev],[1.2],[https://github.com/gentoo/eudev/issues])
AC_SUBST(UDEV_VERSION, 205)
AC_CONFIG_SRCDIR([src/udev/udevd.c])
@@ -231,6 +231,7 @@ if test "x$enable_keymap" = "xyes"; then
if test -z "$GPERF" ; then
AC_MSG_ERROR([*** gperf not found])
fi
+ AC_DEFINE([ENABLE_KEYMAP], [1], [Define if we are enabling rule generator])
fi
AM_CONDITIONAL([ENABLE_KEYMAP], [test "x$enable_keymap" = "xyes"])
@@ -313,8 +314,6 @@ AC_CONFIG_FILES([Makefile
docs/libudev/Makefile
docs/libudev/version.xml
hwdb/Makefile
- keymaps-force-release/Makefile
- keymaps/Makefile
man/Makefile
rules/Makefile
rule_generator/Makefile
@@ -330,9 +329,6 @@ AC_CONFIG_FILES([Makefile
src/v4l_id/Makefile
src/gudev/Makefile
src/gudev/gudev-1.0.pc
- src/keymap/Makefile
- src/keymap/check-keymaps.sh
- src/keymap/keyboard-force-release.sh
src/libudev/Makefile
src/libudev/libudev.pc
src/udev/Makefile
diff --git a/hwdb/20-OUI.hwdb b/hwdb/20-OUI.hwdb
index 8b402f9b4a..5ebd6413b9 100644
--- a/hwdb/20-OUI.hwdb
+++ b/hwdb/20-OUI.hwdb
@@ -7295,7 +7295,7 @@ OUI:0050C298C*
ID_OUI_FROM_DATABASE=MGM-Devices Oy
OUI:0050C298D*
- ID_OUI_FROM_DATABASE=Mecos Traxler AG
+ ID_OUI_FROM_DATABASE=Mecos AG
OUI:0050C298E*
ID_OUI_FROM_DATABASE=Link Technologies, Inc
@@ -13099,6 +13099,48 @@ OUI:40D85512D*
OUI:40D85512E*
ID_OUI_FROM_DATABASE=Canfield Scientific, Inc.
+OUI:40D855130*
+ ID_OUI_FROM_DATABASE=GSP Sprachtechnologie GmbH
+
+OUI:40D855131*
+ ID_OUI_FROM_DATABASE=EMAC, INC.
+
+OUI:40D855132*
+ ID_OUI_FROM_DATABASE=AeroVision Avionics, Inc
+
+OUI:40D855133*
+ ID_OUI_FROM_DATABASE=Tattile srl
+
+OUI:40D855134*
+ ID_OUI_FROM_DATABASE=digitech GmbH & Co. KG
+
+OUI:40D855135*
+ ID_OUI_FROM_DATABASE=GLOBALCOM ENGINEERING SRL
+
+OUI:40D855136*
+ ID_OUI_FROM_DATABASE=Devriecom B.V.
+
+OUI:40D855137*
+ ID_OUI_FROM_DATABASE=GDE Polska
+
+OUI:40D855138*
+ ID_OUI_FROM_DATABASE=Calon Associates Limited
+
+OUI:40D855139*
+ ID_OUI_FROM_DATABASE=WOW System
+
+OUI:40D85513A*
+ ID_OUI_FROM_DATABASE=Supplier Ind. e Com de Eletroeletrônicos
+
+OUI:40D85513B*
+ ID_OUI_FROM_DATABASE=Davin Technologies Co.,Ltd
+
+OUI:40D85513C*
+ ID_OUI_FROM_DATABASE=shanghai anjian Information technology co. , ltd.
+
+OUI:40D85513D*
+ ID_OUI_FROM_DATABASE=Perm Scientific-Industrial Instrument Making Company JSC
+
OUI:000000*
ID_OUI_FROM_DATABASE=XEROX CORPORATION
@@ -14675,7 +14717,7 @@ OUI:00020D*
ID_OUI_FROM_DATABASE=Micronpc.com
OUI:00020E*
- ID_OUI_FROM_DATABASE=ECI Telecom, Ltd., NSD-US
+ ID_OUI_FROM_DATABASE=ECI Telecom, Ltd
OUI:00020F*
ID_OUI_FROM_DATABASE=AATR
@@ -46093,6 +46135,9 @@ OUI:0075E1*
OUI:00789E*
ID_OUI_FROM_DATABASE=SAGEMCOM
+OUI:007DFA*
+ ID_OUI_FROM_DATABASE=Volkswagen Group of America
+
OUI:007F28*
ID_OUI_FROM_DATABASE=Actiontec Electronics, Inc
@@ -51148,6 +51193,9 @@ OUI:044BFF*
OUI:044CEF*
ID_OUI_FROM_DATABASE=Fujian Sanao Technology Co.,Ltd
+OUI:044F8B*
+ ID_OUI_FROM_DATABASE=Adapteva, Inc.
+
OUI:044FAA*
ID_OUI_FROM_DATABASE=Ruckus Wireless
@@ -52102,6 +52150,9 @@ OUI:0C57EB*
OUI:0C5A19*
ID_OUI_FROM_DATABASE=Axtion Sdn Bhd
+OUI:0C5CD8*
+ ID_OUI_FROM_DATABASE=DOLI Elektronik GmbH
+
OUI:0C6076*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
@@ -52171,6 +52222,9 @@ OUI:0C93FB*
OUI:0C96BF*
ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
+OUI:0C9B13*
+ ID_OUI_FROM_DATABASE=Shanghai Magic Mobile Telecommunication Co.Ltd.
+
OUI:0C9D56*
ID_OUI_FROM_DATABASE=Consort Controls Ltd
@@ -52618,6 +52672,9 @@ OUI:141BF0*
OUI:1423D7*
ID_OUI_FROM_DATABASE=EUTRONIX CO., LTD.
+OUI:142BD2*
+ ID_OUI_FROM_DATABASE=Armtel Ltd.
+
OUI:142D8B*
ID_OUI_FROM_DATABASE=Incipio Technologies, Inc
@@ -52924,6 +52981,9 @@ OUI:187A93*
OUI:187C81*
ID_OUI_FROM_DATABASE=Valeo Vision Systems
+OUI:187ED5*
+ ID_OUI_FROM_DATABASE=shenzhen kaism technology Co. Ltd
+
OUI:1880CE*
ID_OUI_FROM_DATABASE=Barberry Solutions Ltd
@@ -53122,6 +53182,9 @@ OUI:1C48F9*
OUI:1C4AF7*
ID_OUI_FROM_DATABASE=AMON INC
+OUI:1C4BB9*
+ ID_OUI_FROM_DATABASE=SMG ENTERPRISE, LLC
+
OUI:1C4BD6*
ID_OUI_FROM_DATABASE=AzureWave
@@ -53608,6 +53671,9 @@ OUI:245FDF*
OUI:246278*
ID_OUI_FROM_DATABASE=sysmocom - systems for mobile communications GmbH
+OUI:2464EF*
+ ID_OUI_FROM_DATABASE=CYG SUNRI CO.,LTD.
+
OUI:246511*
ID_OUI_FROM_DATABASE=AVM GmbH
@@ -53626,6 +53692,9 @@ OUI:24767D*
OUI:247703*
ID_OUI_FROM_DATABASE=Intel Corporate
+OUI:248000*
+ ID_OUI_FROM_DATABASE=Westcontrol AS
+
OUI:2481AA*
ID_OUI_FROM_DATABASE=KSH International Co., Ltd.
@@ -53833,6 +53902,9 @@ OUI:284846*
OUI:284C53*
ID_OUI_FROM_DATABASE=Intune Networks
+OUI:284D92*
+ ID_OUI_FROM_DATABASE=Luminator
+
OUI:284FCE*
ID_OUI_FROM_DATABASE=Liaoning Wontel Science and Technology Development Co.,Ltd.
@@ -54109,12 +54181,18 @@ OUI:2C44FD*
OUI:2C542D*
ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
+OUI:2C553C*
+ ID_OUI_FROM_DATABASE=Gainspeed, Inc.
+
OUI:2C59E5*
ID_OUI_FROM_DATABASE=Hewlett Packard
OUI:2C5AA3*
ID_OUI_FROM_DATABASE=PROMATE ELECTRONIC CO.LTD
+OUI:2C5FF3*
+ ID_OUI_FROM_DATABASE=Pertronic Industries
+
OUI:2C625A*
ID_OUI_FROM_DATABASE=Finest Security Systems Co., Ltd
@@ -54526,6 +54604,9 @@ OUI:3451C9*
OUI:345B11*
ID_OUI_FROM_DATABASE=EVI HEAT AB
+OUI:346178*
+ ID_OUI_FROM_DATABASE=The Boeing Company
+
OUI:34684A*
ID_OUI_FROM_DATABASE=Teraworks Co., Ltd.
@@ -54958,6 +55039,9 @@ OUI:3C0FC1*
OUI:3C106F*
ID_OUI_FROM_DATABASE=ALBAHITH TECHNOLOGIES
+OUI:3C15EA*
+ ID_OUI_FROM_DATABASE=TESCOM CO., LTD.
+
OUI:3C1915*
ID_OUI_FROM_DATABASE=GFI Chrono Time
@@ -56140,6 +56224,9 @@ OUI:50252B*
OUI:502690*
ID_OUI_FROM_DATABASE=Fujitsu Limited
+OUI:5027C7*
+ ID_OUI_FROM_DATABASE=TECHNART Co.,Ltd
+
OUI:502A7E*
ID_OUI_FROM_DATABASE=Smart electronic GmbH
@@ -56284,6 +56371,9 @@ OUI:50AF73*
OUI:50B7C3*
ID_OUI_FROM_DATABASE=Samsung Electronics CO., LTD
+OUI:50B888*
+ ID_OUI_FROM_DATABASE=wi2be Tecnologia S/A
+
OUI:50B8A2*
ID_OUI_FROM_DATABASE=ImTech Technologies LLC,
@@ -56480,7 +56570,7 @@ OUI:54A51B*
ID_OUI_FROM_DATABASE=Shenzhen Huawei Communication Technologies Co., Ltd
OUI:54A54B*
- ID_OUI_FROM_DATABASE=NSC Communiaction Siberia Ltd
+ ID_OUI_FROM_DATABASE=NSC Communications Siberia Ltd
OUI:54A619*
ID_OUI_FROM_DATABASE=Alcatel-Lucent Shanghai Bell Co., Ltd
@@ -56614,6 +56704,9 @@ OUI:5856E8*
OUI:58570D*
ID_OUI_FROM_DATABASE=Danfoss Solar Inverters
+OUI:58639A*
+ ID_OUI_FROM_DATABASE=TPL SYSTEMES
+
OUI:5865E6*
ID_OUI_FROM_DATABASE=INFOMARK CO., LTD.
@@ -56686,6 +56779,9 @@ OUI:589835*
OUI:58986F*
ID_OUI_FROM_DATABASE=Revolution Display
+OUI:58A2B5*
+ ID_OUI_FROM_DATABASE=LG Electronics
+
OUI:58A76F*
ID_OUI_FROM_DATABASE=iD corporation
@@ -57037,6 +57133,9 @@ OUI:601E02*
OUI:6021C0*
ID_OUI_FROM_DATABASE=Murata Manufactuaring Co.,Ltd.
+OUI:6024C1*
+ ID_OUI_FROM_DATABASE=Jiangsu Zhongxun Electronic Technology Co., Ltd
+
OUI:602A54*
ID_OUI_FROM_DATABASE=CardioTek B.V.
@@ -57157,6 +57256,9 @@ OUI:60A10A*
OUI:60A44C*
ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
+OUI:60A9B0*
+ ID_OUI_FROM_DATABASE=Merchandising Technologies, Inc
+
OUI:60B185*
ID_OUI_FROM_DATABASE=ATH system
@@ -57895,6 +57997,9 @@ OUI:6C5779*
OUI:6C5A34*
ID_OUI_FROM_DATABASE=Shenzhen Haitianxiong Electronic Co., Ltd.
+OUI:6C5AB5*
+ ID_OUI_FROM_DATABASE=TCL Technoly Electronics (Huizhou) Co., Ltd.
+
OUI:6C5CDE*
ID_OUI_FROM_DATABASE=SunReports, Inc.
@@ -58687,6 +58792,9 @@ OUI:78593E*
OUI:78595E*
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+OUI:785968*
+ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind.Co.,Ltd.
+
OUI:785C72*
ID_OUI_FROM_DATABASE=Hioso Technology Co., Ltd.
@@ -58840,6 +58948,9 @@ OUI:78D5B5*
OUI:78D6F0*
ID_OUI_FROM_DATABASE=Samsung Electro Mechanics
+OUI:78D99F*
+ ID_OUI_FROM_DATABASE=NuCom HK Ltd.
+
OUI:78DAB3*
ID_OUI_FROM_DATABASE=GBO Technology
@@ -58909,6 +59020,9 @@ OUI:7C0507*
OUI:7C051E*
ID_OUI_FROM_DATABASE=RAFAEL LTD.
+OUI:7C0623*
+ ID_OUI_FROM_DATABASE=Ultra Electronics, CIS
+
OUI:7C08D9*
ID_OUI_FROM_DATABASE=Shanghai Engineering Research Center for Broadband Technologies and Applications
@@ -59416,12 +59530,18 @@ OUI:8400D2*
OUI:840B2D*
ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO-MECHANICS CO., LTD
+OUI:840F45*
+ ID_OUI_FROM_DATABASE=Shanghai GMT Digital Technologies Co., Ltd
+
OUI:841715*
ID_OUI_FROM_DATABASE=GP Electronics (HK) Ltd.
OUI:841888*
ID_OUI_FROM_DATABASE=Juniper Networks
+OUI:841B38*
+ ID_OUI_FROM_DATABASE=Shenzhen Excelsecu Data Technology Co.,Ltd
+
OUI:841B5E*
ID_OUI_FROM_DATABASE=NETGEAR
@@ -59689,6 +59809,9 @@ OUI:8841C1*
OUI:8843E1*
ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
+OUI:8844F6*
+ ID_OUI_FROM_DATABASE=Nokia Corporation
+
OUI:88462A*
ID_OUI_FROM_DATABASE=Telechips Inc.
@@ -59725,6 +59848,9 @@ OUI:887398*
OUI:887556*
ID_OUI_FROM_DATABASE=Cisco
+OUI:88789C*
+ ID_OUI_FROM_DATABASE=Game Technologies SA
+
OUI:8886A0*
ID_OUI_FROM_DATABASE=Simton Technologies, Ltd.
@@ -60562,6 +60688,9 @@ OUI:94DE0E*
OUI:94DE80*
ID_OUI_FROM_DATABASE=GIGA-BYTE TECHNOLOGY CO.,LTD.
+OUI:94DF4E*
+ ID_OUI_FROM_DATABASE=Wistron InfoComm(Kunshan)Co.,Ltd.
+
OUI:94DF58*
ID_OUI_FROM_DATABASE=IJ Electron CO.,Ltd.
@@ -60979,6 +61108,9 @@ OUI:9C9811*
OUI:9C9C1D*
ID_OUI_FROM_DATABASE=Starkey Labs Inc.
+OUI:9CA10A*
+ ID_OUI_FROM_DATABASE=SCLE SFE
+
OUI:9CA134*
ID_OUI_FROM_DATABASE=Nike, Inc.
@@ -62410,6 +62542,9 @@ OUI:B439D6*
OUI:B43DB2*
ID_OUI_FROM_DATABASE=Degreane Horizon
+OUI:B43E3B*
+ ID_OUI_FROM_DATABASE=Viableware, Inc
+
OUI:B4417A*
ID_OUI_FROM_DATABASE=ShenZhen Gongjin Electronics Co.,Ltd
@@ -62488,6 +62623,9 @@ OUI:B4A4E3*
OUI:B4A5A9*
ID_OUI_FROM_DATABASE=MODI GmbH
+OUI:B4A82B*
+ ID_OUI_FROM_DATABASE=Histar
+
OUI:B4A95A*
ID_OUI_FROM_DATABASE=Avaya, Inc
@@ -63037,6 +63175,9 @@ OUI:BC926B*
OUI:BC9680*
ID_OUI_FROM_DATABASE=Shenzhen Gongjin Electronics Co.,Ltd
+OUI:BC9889*
+ ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Tech.Co.,Ltd.
+
OUI:BC99BC*
ID_OUI_FROM_DATABASE=FonSee Technology Inc.
@@ -63307,6 +63448,9 @@ OUI:C0C3B6*
OUI:C0C520*
ID_OUI_FROM_DATABASE=Ruckus Wireless
+OUI:C0C687*
+ ID_OUI_FROM_DATABASE=Cisco SPVTG
+
OUI:C0C946*
ID_OUI_FROM_DATABASE=MITSUYA LABORATORIES INC.
@@ -63514,6 +63658,9 @@ OUI:C49300*
OUI:C49313*
ID_OUI_FROM_DATABASE=100fio networks technology llc
+OUI:C49380*
+ ID_OUI_FROM_DATABASE=Speedytel technology
+
OUI:C495A2*
ID_OUI_FROM_DATABASE=SHENZHEN WEIJIU INDUSTRY AND TRADE DEVELOPMENT CO., LTD
@@ -64177,6 +64324,9 @@ OUI:D023DB*
OUI:D02788*
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind.Co.Ltd
+OUI:D02C45*
+ ID_OUI_FROM_DATABASE=littleBits Electronics, Inc.
+
OUI:D02DB3*
ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
@@ -64267,6 +64417,9 @@ OUI:D08CFF*
OUI:D093F8*
ID_OUI_FROM_DATABASE=Stonestreet One LLC
+OUI:D095C7*
+ ID_OUI_FROM_DATABASE=Pantech Co., Ltd.
+
OUI:D09B05*
ID_OUI_FROM_DATABASE=Emtronix
@@ -64588,6 +64741,9 @@ OUI:D4AAFF*
OUI:D4AC4E*
ID_OUI_FROM_DATABASE=BODi rS, LLC
+OUI:D4AD2D*
+ ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Tech.Co.,Ltd.
+
OUI:D4AE52*
ID_OUI_FROM_DATABASE=Dell Inc
@@ -64714,6 +64870,9 @@ OUI:D824BD*
OUI:D826B9*
ID_OUI_FROM_DATABASE=Guangdong Coagent Electronics S &T Co., Ltd.
+OUI:D8270C*
+ ID_OUI_FROM_DATABASE=MaxTronic International Co., Ltd.
+
OUI:D828C9*
ID_OUI_FROM_DATABASE=General Electric Consumer and Industrial
@@ -65134,6 +65293,9 @@ OUI:DCF858*
OUI:DCFAD5*
ID_OUI_FROM_DATABASE=STRONG Ges.m.b.H.
+OUI:DCFB02*
+ ID_OUI_FROM_DATABASE=Buffalo Inc.
+
OUI:E005C5*
ID_OUI_FROM_DATABASE=TP-LINK Technologies Co.,Ltd.
@@ -65302,6 +65464,9 @@ OUI:E0ABFE*
OUI:E0AE5E*
ID_OUI_FROM_DATABASE=ALPS Co,. Ltd.
+OUI:E0AEB2*
+ ID_OUI_FROM_DATABASE=Bender GmbH & Co.KG
+
OUI:E0AEED*
ID_OUI_FROM_DATABASE=LOENK
@@ -65920,6 +66085,9 @@ OUI:EC233D*
OUI:EC2368*
ID_OUI_FROM_DATABASE=IntelliVoice Co.,Ltd.
+OUI:EC2AF0*
+ ID_OUI_FROM_DATABASE=Ypsomed AG
+
OUI:EC2C49*
ID_OUI_FROM_DATABASE=University of Tokyo
@@ -66646,6 +66814,9 @@ OUI:F80F84*
OUI:F81037*
ID_OUI_FROM_DATABASE=Atopia Systems, LP
+OUI:F81547*
+ ID_OUI_FROM_DATABASE=Avaya, Inc
+
OUI:F81654*
ID_OUI_FROM_DATABASE=Intel Corporate
@@ -66694,6 +66865,9 @@ OUI:F83DFF*
OUI:F842FB*
ID_OUI_FROM_DATABASE=Yasuda Joho Co.,ltd.
+OUI:F845AD*
+ ID_OUI_FROM_DATABASE=Konka Group Co., Ltd.
+
OUI:F8462D*
ID_OUI_FROM_DATABASE=SYNTEC Incorporation
@@ -66703,6 +66877,9 @@ OUI:F8472D*
OUI:F84897*
ID_OUI_FROM_DATABASE=Hitachi, Ltd.
+OUI:F84A7F*
+ ID_OUI_FROM_DATABASE=Innometriks Inc
+
OUI:F84ABF*
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
@@ -66718,6 +66895,9 @@ OUI:F8516D*
OUI:F852DF*
ID_OUI_FROM_DATABASE=VNL Europe AB
+OUI:F854AF*
+ ID_OUI_FROM_DATABASE=ECI Telecom Ltd.
+
OUI:F85BC9*
ID_OUI_FROM_DATABASE=M-Cube Spa
@@ -66787,6 +66967,9 @@ OUI:F89FB8*
OUI:F8A03D*
ID_OUI_FROM_DATABASE=Dinstar Technologies Co., Ltd.
+OUI:F8A45F*
+ ID_OUI_FROM_DATABASE=Beijing Xiaomi communications co.,ltd
+
OUI:F8A9DE*
ID_OUI_FROM_DATABASE=PUISSANCE PLUS
diff --git a/hwdb/20-pci-vendor-model.hwdb b/hwdb/20-pci-vendor-model.hwdb
index de0b27cb37..2436a29e9a 100644
--- a/hwdb/20-pci-vendor-model.hwdb
+++ b/hwdb/20-pci-vendor-model.hwdb
@@ -1898,6 +1898,9 @@ pci:v00001002d00004242*
pci:v00001002d00004242sv00001002sd000002AA*
ID_MODEL_FROM_DATABASE=Radeon 8500 AIW DV Edition
+pci:v00001002d00004243*
+ ID_MODEL_FROM_DATABASE=R200 PCI Bridge [All-in-Wonder Radeon 8500DV]
+
pci:v00001002d00004336*
ID_MODEL_FROM_DATABASE=RS100 [Radeon IGP 320M]
@@ -3920,6 +3923,9 @@ pci:v00001002d00005A20*
pci:v00001002d00005A23*
ID_MODEL_FROM_DATABASE=RD990 I/O Memory Management Unit (IOMMU)
+pci:v00001002d00005A31*
+ ID_MODEL_FROM_DATABASE=RC410 Host Bridge
+
pci:v00001002d00005A33*
ID_MODEL_FROM_DATABASE=Radeon Xpress 200 Host Bridge
@@ -6183,7 +6189,7 @@ pci:v00001002d00006840sv000017AAsd00005103*
ID_MODEL_FROM_DATABASE=Radeon HD 7670M
pci:v00001002d00006841*
- ID_MODEL_FROM_DATABASE=Thames [Radeon 7550M/7570M/7650M]
+ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7550M/7570M/7650M]
pci:v00001002d00006841sv00001028sd00000561*
ID_MODEL_FROM_DATABASE=Radeon HD 7650M
@@ -8372,6 +8378,45 @@ pci:v00001002d00009552sv0000174Bsd00003000*
pci:v00001002d00009553*
ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v]
+pci:v00001002d00009553sv00001025sd0000015E*
+ ID_MODEL_FROM_DATABASE=Mobility Radeon HD 4570
+
+pci:v00001002d00009553sv00001025sd0000017D*
+ ID_MODEL_FROM_DATABASE=Mobility Radeon HD 4570
+
+pci:v00001002d00009553sv00001025sd00000205*
+ ID_MODEL_FROM_DATABASE=Mobility Radeon HD 4570
+
+pci:v00001002d00009553sv00001025sd00000206*
+ ID_MODEL_FROM_DATABASE=Mobility Radeon HD 4570
+
+pci:v00001002d00009553sv00001025sd00000237*
+ ID_MODEL_FROM_DATABASE=Mobility Radeon HD 4570
+
+pci:v00001002d00009553sv00001028sd000002BE*
+ ID_MODEL_FROM_DATABASE=Mobility Radeon HD 4570
+
+pci:v00001002d00009553sv00001028sd000002E8*
+ ID_MODEL_FROM_DATABASE=Mobility Radeon HD 4530
+
+pci:v00001002d00009553sv0000103Csd00003624*
+ ID_MODEL_FROM_DATABASE=Mobility Radeon HD 4530
+
+pci:v00001002d00009553sv0000103Csd00003628*
+ ID_MODEL_FROM_DATABASE=Mobility Radeon HD 4530
+
+pci:v00001002d00009553sv0000103Csd00003636*
+ ID_MODEL_FROM_DATABASE=Mobility Radeon HD 4530
+
+pci:v00001002d00009553sv00001043sd00001B32*
+ ID_MODEL_FROM_DATABASE=Mobility Radeon HD 4570
+
+pci:v00001002d00009553sv00001043sd00001B42*
+ ID_MODEL_FROM_DATABASE=Mobility Radeon HD 4570
+
+pci:v00001002d00009553sv0000104Dsd00009056*
+ ID_MODEL_FROM_DATABASE=Mobility Radeon HD 4570
+
pci:v00001002d00009553sv00001179sd0000FF82*
ID_MODEL_FROM_DATABASE=Satellite L505-13T GPU (Mobility Radeon HD 5145)
@@ -10904,6 +10949,12 @@ pci:v00001022d00007813*
pci:v00001022d00007814*
ID_MODEL_FROM_DATABASE=FCH USB XHCI Controller
+pci:v00001022d00007900*
+ ID_MODEL_FROM_DATABASE=CZ SATA Controller [IDE mode]
+
+pci:v00001022d0000790B*
+ ID_MODEL_FROM_DATABASE=CZ SMBus Controller
+
pci:v00001022d00009600*
ID_MODEL_FROM_DATABASE=RS780 Host Bridge
@@ -43791,7 +43842,7 @@ pci:v000014E4d00004720*
ID_MODEL_FROM_DATABASE=BCM4712 MIPS CPU
pci:v000014E4d00004727*
- ID_MODEL_FROM_DATABASE=BCM4313 802.11b/g/n Wireless LAN Controller
+ ID_MODEL_FROM_DATABASE=BCM4313 802.11bgn Wireless Network Adapter
pci:v000014E4d00004727sv00001028sd00000010*
ID_MODEL_FROM_DATABASE=Inspiron M5010 / XPS 8300
@@ -49016,6 +49067,9 @@ pci:v000018F7d00000025*
pci:v000018F7d00000026*
ID_MODEL_FROM_DATABASE=SuperFSCC-LVDS Serial PCI Adapter [Fastcom]
+pci:v000018F7d00000027*
+ ID_MODEL_FROM_DATABASE=FSCC/4 Serial PCIe Adapter [Fastcom]
+
pci:v000018FB*
ID_VENDOR_FROM_DATABASE=Resilience Corporation
@@ -50384,6 +50438,21 @@ pci:v00001AE8d00000A44*
pci:v00001AE8d00000E44*
ID_MODEL_FROM_DATABASE=microEnable IV-GigE x4
+pci:v00001AE9*
+ ID_VENDOR_FROM_DATABASE=Wilocity Ltd.
+
+pci:v00001AE9d00000101*
+ ID_MODEL_FROM_DATABASE=Wil6200 PCI Express Root Port
+
+pci:v00001AE9d00000200*
+ ID_MODEL_FROM_DATABASE=Wil6200 PCI Express Port
+
+pci:v00001AE9d00000201*
+ ID_MODEL_FROM_DATABASE=Wil6200 Wireless PCI Express Port
+
+pci:v00001AE9d00000301*
+ ID_MODEL_FROM_DATABASE=Wil6200 802.11ad Wireless Network Adapter
+
pci:v00001AEC*
ID_VENDOR_FROM_DATABASE=Wolfson Microelectronics
@@ -50663,6 +50732,9 @@ pci:v00001BB0*
pci:v00001BB0d00000002*
ID_MODEL_FROM_DATABASE=OmniCube Accelerator OA-3000
+pci:v00001BB0d00000010*
+ ID_MODEL_FROM_DATABASE=OmniCube Accelerator OA-3000-2
+
pci:v00001BB3*
ID_VENDOR_FROM_DATABASE=Bluecherry
diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb
new file mode 100644
index 0000000000..0ee65d792a
--- /dev/null
+++ b/hwdb/60-keyboard.hwdb
@@ -0,0 +1,1011 @@
+# 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.
+#
+# The lookup keys are composed in:
+# 60-keyboard.rules
+#
+# Note: The format of the "keyboard:" prefix match key is a
+# contract between the rules file and the hardware data, it might
+# change in later revisions to support more or better matches, it
+# 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.
+#
+# - 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:
+# 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
+# by the kernel DMI modalias.
+#
+# Scan codes are specified as:
+# KEYBOARD_KEY_<hex scan code>=<key code identifier>
+# The scan code should be expressed in hex lowercase and in
+# full bytes, a multiple of 2 digits. The key codes are retrieved
+# and normalized from the kernel input API header.
+#
+# A '!' as the first charcter of the key identifier string
+# will add the scan code to the AT keyboard's list of scan codes
+# where the driver will synthesize a release event and not expect
+# it to be generated by the hardware.
+#
+# To debug key presses and access scan code mapping data of
+# an input device use the commonly available tool: evtest(1).
+
+##########################################
+# Acer
+##########################################
+
+# Acer platform kernel driver
+keyboard:name:Acer WMI hotkeys:dmi:bvn*:bvr*:bd*:svn*:pnAcer*:pvr*
+ KEYBOARD_KEY_82=f21
+
+# Aspire 5720
+keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire 5720*:pvr*
+keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnZG8*:pvr*
+ KEYBOARD_KEY_84=bluetooth # sent when bluetooth module missing, and key pressed
+ KEYBOARD_KEY_92=media # Acer arcade
+ KEYBOARD_KEY_d4=bluetooth # Bluetooth on
+ KEYBOARD_KEY_d9=bluetooth # Bluetooth off
+ KEYBOARD_KEY_f4=prog3 # e-key
+
+# Aspire 5920g
+keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire 5920G:*
+ KEYBOARD_KEY_8a=media
+ KEYBOARD_KEY_92=media
+ KEYBOARD_KEY_a6=setup
+ KEYBOARD_KEY_b2=www
+ KEYBOARD_KEY_d9=bluetooth # (toggle) on-to-off
+
+# Aspire 6920
+keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire 6920:*
+ KEYBOARD_KEY_d9=bluetooth # (toggle) on-to-off
+ KEYBOARD_KEY_92=media
+ KEYBOARD_KEY_9e=back
+ KEYBOARD_KEY_83=rewind
+ KEYBOARD_KEY_89=fastforward
+
+# Aspire 8930
+keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire 8930:*
+ KEYBOARD_KEY_ca=prog3 # key 'HOLD' on CineDash Media Console
+ KEYBOARD_KEY_83=rewind
+ KEYBOARD_KEY_89=fastforward
+ KEYBOARD_KEY_92=media # key 'ARCADE' on CineDash Media Console
+ KEYBOARD_KEY_9e=back
+
+# Travelmate C300
+keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnTravelMate*C3[01]0*:pvr*
+ KEYBOARD_KEY_67=f24 # FIXME: rotate screen
+ KEYBOARD_KEY_68=up
+ KEYBOARD_KEY_69=down
+ KEYBOARD_KEY_6b=fn
+ KEYBOARD_KEY_6c=screenlock # FIXME: lock tablet device/buttons
+
+#
+keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pn*
+keyboard:dmi:bvn*:bvr*:bd*:svnGateway*:pnA0A1*:pvr*
+ KEYBOARD_KEY_a5=help # Fn+F1
+ KEYBOARD_KEY_a6=setup # Fn+F2 Acer eSettings
+ KEYBOARD_KEY_a7=battery # Fn+F3 Power Management
+ KEYBOARD_KEY_a9=switchvideomode # Fn+F5
+ KEYBOARD_KEY_b3=euro
+ KEYBOARD_KEY_b4=dollar
+ KEYBOARD_KEY_ce=brightnessup # Fn+Right
+ KEYBOARD_KEY_d4=bluetooth # (toggle) off-to-on
+ KEYBOARD_KEY_d5=wlan # (toggle) on-to-off
+ KEYBOARD_KEY_d6=wlan # (toggle) off-to-on
+ KEYBOARD_KEY_d7=bluetooth # (toggle) on-to-off
+ KEYBOARD_KEY_d8=bluetooth # (toggle) off-to-on
+ KEYBOARD_KEY_d9=brightnessup # Fn+Right
+ KEYBOARD_KEY_ee=brightnessup # Fn+Right
+ KEYBOARD_KEY_ef=brightnessdown # Fn+Left
+ KEYBOARD_KEY_f1=f22 # Fn+F7 Touchpad toggle (off-to-on)
+ KEYBOARD_KEY_f2=f23 # Fn+F7 Touchpad toggle (on-to-off)
+ KEYBOARD_KEY_f3=prog2 # "P2" programmable button
+ KEYBOARD_KEY_f4=prog1 # "P1" programmable button
+ KEYBOARD_KEY_f5=presentation
+ KEYBOARD_KEY_f8=fn
+ KEYBOARD_KEY_f9=f23 # Launch NTI shadow
+
+#
+keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pn*5210*:pvr*
+keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pn*5220*:pvr*
+keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pn*5610*:pvr*
+keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pn*5620*:pvr*
+keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pn*5720*:pvr*
+ KEYBOARD_KEY_ee=screenlock
+
+#
+keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnTravelMate*6292*:pvr*
+keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnTravelMate*8471*:pvr*
+keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnTravelMate*4720*:pvr*
+keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnTravelMate*7720*:pvr*
+keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire 1810T*:pvr*
+keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAO751h:*
+keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAO531h:*
+ KEYBOARD_KEY_d9=bluetooth
+
+#
+keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnTravelMate*4720*:pvr*
+ KEYBOARD_KEY_b2=www
+ KEYBOARD_KEY_ee=screenlock
+
+#
+keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnTravelMate 6593:*
+keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire 1640:*
+ KEYBOARD_KEY_b2=www
+ KEYBOARD_KEY_ee=screenlock"
+
+###########################################################
+# Alienware
+###########################################################
+
+keyboard:dmi:bvn*:bvr*:bd*:svnAlienware*:pn*
+ KEYBOARD_KEY_8a=ejectcd
+
+###########################################################
+# Asus
+###########################################################
+
+keyboard:dmi:bvn*:bvr*:bd*:svnASUS:*
+ KEYBOARD_KEY_ed=volumeup
+ KEYBOARD_KEY_ee=volumedown
+ KEYBOARD_KEY_ef=mute
+
+###########################################################
+# BenQ
+###########################################################
+
+keyboard:dmi:bvn*:bvr*:bd*:svn*BenQ*:pn*Joybook R22*:pvr*
+ KEYBOARD_KEY_6e=wlan
+
+###########################################################
+# Compal
+###########################################################
+
+keyboard:dmi:bvn*:bvr*:bd*:svnCOMPAL:pnHEL80I:*
+ KEYBOARD_KEY_84=wlan
+
+###########################################################
+# COMPAQ
+###########################################################
+
+keyboard:dmi:bvn*:bvr*:bd*:svnCompaq*:pn*E500*:pvr*
+keyboard:dmi:bvn*:bvr*:bd*:svnCompaq*:pn*Evo N*:pvr*
+ KEYBOARD_KEY_a3=www # I key
+ KEYBOARD_KEY_9a=search
+ KEYBOARD_KEY_9e=email
+ KEYBOARD_KEY_9f=homepage
+
+###########################################################
+# Dell
+###########################################################
+
+keyboard:dmi:bvn*:bvr*:bd*:svnDell:pvr*
+ KEYBOARD_KEY_81=playpause # Play/Pause
+ KEYBOARD_KEY_82=stopcd # Stop
+ KEYBOARD_KEY_83=previoussong # Previous song
+ KEYBOARD_KEY_84=nextsong # Next song
+ KEYBOARD_KEY_85=brightnessdown # Fn+Down Brightness Down
+ KEYBOARD_KEY_86=brightnessup # Fn+Up Brightness Up
+ KEYBOARD_KEY_87=battery # Fn+F3 battery icon
+ KEYBOARD_KEY_88=unknown # Fn+F2 Turn On/Off Wireless - handled in hardware
+ KEYBOARD_KEY_89=ejectclosecd # Fn+F10 Eject CD
+ KEYBOARD_KEY_8a=suspend # Fn+F1 hibernate
+ KEYBOARD_KEY_8b=switchvideomode # Fn+F8 CRT/LCD (high keycode: "displaytoggle")
+ KEYBOARD_KEY_8c=f23 # Fn+Right Auto Brightness
+ KEYBOARD_KEY_8F=switchvideomode # Fn+F7 aspect ratio
+ KEYBOARD_KEY_90=previoussong # Front panel previous song
+ KEYBOARD_KEY_91=prog1 # Wi-Fi Catcher (Dell-specific)
+ KEYBOARD_KEY_92=media # MediaDirect button (house icon)
+ KEYBOARD_KEY_93=f23 # FIXME Fn+Left Auto Brightness
+ KEYBOARD_KEY_95=camera # Shutter button - Takes a picture if optional camera available
+ KEYBOARD_KEY_97=email # Tablet email button
+ KEYBOARD_KEY_98=f21 # FIXME: Tablet screen rotation
+ KEYBOARD_KEY_99=nextsong # Front panel next song
+ KEYBOARD_KEY_9a=setup # Tablet tools button
+ KEYBOARD_KEY_9b=switchvideomode # Display toggle button
+ KEYBOARD_KEY_9e=f21 # Touchpad toggle
+ KEYBOARD_KEY_a2=playpause # Front panel play/pause
+ KEYBOARD_KEY_a4=stopcd # Front panel stop
+ KEYBOARD_KEY_ed=media # MediaDirect button
+ KEYBOARD_KEY_d8=screenlock # FIXME: Tablet lock button
+ KEYBOARD_KEY_d9=f21 # Touchpad toggle
+
+#
+keyboard:dmi:bvn*:bvr*:bd*:svnDell:pnInspiron 910:pvr*
+keyboard:dmi:bvn*:bvr*:bd*:svnDell:pnInspiron 101[012]:pvr*
+keyboard:dmi:bvn*:bvr*:bd*:svnDell:pnInspiron 1110:pvr*
+keyboard:dmi:bvn*:bvr*:bd*:svnDell:pnInspiron 1210:pvr*
+ KEYBOARD_KEY_84=wlan
+
+# Latitude XT2
+keyboard:dmi:bvn*:bvr*:bd*:svnDell:pnLatitude XT2:pvr*
+ KEYBOARD_KEY_9b=up # tablet rocker up
+ KEYBOARD_KEY_9e=enter # tablet rocker press
+ KEYBOARD_KEY_9f=back # tablet back
+ KEYBOARD_KEY_a3=down # tablet rocker down
+
+keyboard:dmi:bvn*:bvr*:bd*:svnDell Inc.:pnStudio 155[78]:pvr*
+ KEYBOARD_KEY_a0=! # mute
+ KEYBOARD_KEY_ae=! # volume down
+ KEYBOARD_KEY_b0=! # volume up
+
+# Dell Touchpad
+keyboard:dmi:bvn*:bvr*:bd*:svnDell Inc.:pn:*Latitude*:pvr*
+keyboard:dmi:bvn*:bvr*:bd*:svnDell Inc.:pn:*Precision*:pvr*
+ KEYBOARD_KEY_9e=!
+
+# Dell XPS
+keyboard:dmi:bvn*:bvr*:bd*:svnDell Inc.:pnXPS*:pvr*
+ KEYBOARD_KEY_8c=!
+
+###########################################################
+# Everex
+###########################################################
+
+keyboard:dmi:bvn*:bvr*:bd*:svnEverex:pnXT5000*:pvr*
+ KEYBOARD_KEY_5c=media
+ KEYBOARD_KEY_65=f21 # Fn+F5 Touchpad toggle
+ KEYBOARD_KEY_67=prog3 # Fan speed control button
+ KEYBOARD_KEY_6f=brightnessup
+ KEYBOARD_KEY_7f=brightnessdown
+ KEYBOARD_KEY_b2=www
+ KEYBOARD_KEY_ec=mail
+
+##########################################
+# Fujitsu
+##########################################
+
+keyboard:dmi:bvn*:bvr*:bd*:svnFUJITSU*:pnAMILO*M*:pvr*
+ KEYBOARD_KEY_97=prog2
+ KEYBOARD_KEY_9f=prog1
+
+keyboard:dmi:bvn*:bvr*:bd*:svnFUJITSU*:pnAmilo Li 1718:*
+ KEYBOARD_KEY_d6=wlan
+
+# Amilo Li 2732
+keyboard:dmi:bvn*:bvr*:bd*:svnFUJITSU*:pnAMILO Li 2732:*
+ KEYBOARD_KEY_d9=brightnessdown # Fn+F8 brightness down
+ KEYBOARD_KEY_ef=brightnessup # Fn+F9 brightness up
+ KEYBOARD_KEY_a9=switchvideomode # Fn+F10 Cycle between available video outputs
+
+# Amilo Pa 2548
+keyboard:dmi:bvn*:bvr*:bd*:svnFUJITSU*:pn*AMILO Pa 2548*:pvr*
+ KEYBOARD_KEY_e0=volumedown
+ KEYBOARD_KEY_e1=volumeup
+ KEYBOARD_KEY_e5=prog1
+
+# Amilo Pro Edition V3505
+keyboard:dmi:bvn*:bvr*:bd*:svnFUJITSU*:pn*AMILO Pro Edition V3505*:pvr*
+ KEYBOARD_KEY_a5=help # Fn+F1
+ KEYBOARD_KEY_a9=switchvideomode # Fn+F3
+ KEYBOARD_KEY_d9=brightnessdown # Fn+F8
+ KEYBOARD_KEY_e0=brightnessup # Fn+F9
+
+# Amilo Pro v3205
+keyboard:dmi:bvn*:bvr*:bd*:svnFUJITSU*:pn*AMILO Pro V3205*:pvr*
+ KEYBOARD_KEY_f4=f21 # FIXME: silent-mode decrease CPU/GPU clock
+ KEYBOARD_KEY_f7=switchvideomode # Fn+F3
+
+# Amilo Si 1520
+keyboard:dmi:bvn*:bvr*:bd*:svnFUJITSU*:pn*Amilo Si 1520*:pvr*
+ KEYBOARD_KEY_e1=wlan
+ KEYBOARD_KEY_f3=wlan
+ KEYBOARD_KEY_ee=brightnessdown
+ KEYBOARD_KEY_e0=brightnessup
+ KEYBOARD_KEY_e2=bluetooth
+ KEYBOARD_KEY_f7=video
+
+# Esprimo Mobile V5
+keyboard:dmi:bvn*:bvr*:bd*:svnFUJITSU*:pn*ESPRIMO Mobile V5*:pvr*
+ KEYBOARD_KEY_a9=switchvideomode
+ KEYBOARD_KEY_d9=brightnessdown
+ KEYBOARD_KEY_df=sleep
+ KEYBOARD_KEY_ef=brightnessup
+
+# Esprimo Mobile V6
+keyboard:dmi:bvn*:bvr*:bd*:svnFUJITSU*:pn*ESPRIMO Mobile V6*:pvr*
+ KEYBOARD_KEY_ce=brightnessup
+ KEYBOARD_KEY_ef=brightnessdown
+
+###########################################################
+# Genius
+###########################################################
+
+# Slimstar 320
+keyboard:usb:v0458p0708d*dc*dsc*dp*ic*isc*ip*in01*
+ KEYBOARD_KEY_0900f0=scrollup
+ KEYBOARD_KEY_0900f1=scrolldown
+ KEYBOARD_KEY_0900f3=back
+ KEYBOARD_KEY_0900f2=forward
+ KEYBOARD_KEY_0900f5=wordprocessor
+ KEYBOARD_KEY_0900f6=spreadsheet
+ KEYBOARD_KEY_0900f4=presentation
+ KEYBOARD_KEY_0c0223=www
+ KEYBOARD_KEY_0900f7=chat
+ KEYBOARD_KEY_0900fb=prog1
+ KEYBOARD_KEY_0900f8=close
+ KEYBOARD_KEY_0900f9=graphicseditor
+ KEYBOARD_KEY_0900fd=scale
+ KEYBOARD_KEY_0900fc=screenlock
+
+###########################################################
+# Hewlett Packard
+###########################################################
+
+keyboard:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pn*:pvr*
+ KEYBOARD_KEY_81=fn_esc
+ KEYBOARD_KEY_89=battery # Fn+F8
+ KEYBOARD_KEY_8a=screenlock # Fn+F6
+ KEYBOARD_KEY_8b=camera
+ KEYBOARD_KEY_8c=media # music
+ KEYBOARD_KEY_8e=dvd
+ KEYBOARD_KEY_b1=help
+ KEYBOARD_KEY_b3=f23 # FIXME: Auto brightness
+ KEYBOARD_KEY_d7=wlan
+ KEYBOARD_KEY_92=brightnessdown # Fn+F7 (Fn+F9 on 6730b)
+ KEYBOARD_KEY_97=brightnessup # Fn+F8 (Fn+F10 on 6730b)
+ KEYBOARD_KEY_ee=switchvideomode # Fn+F4
+
+# Tablet
+keyboard:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pn*[tT][aA][bB][lL][eE][tT]*:pvr*
+ KEYBOARD_KEY_82=prog2 # Funny Key
+ KEYBOARD_KEY_83=prog1 # Q
+ KEYBOARD_KEY_84=tab
+ KEYBOARD_KEY_85=esc
+ KEYBOARD_KEY_86=pageup
+ KEYBOARD_KEY_87=pagedown
+
+# Pavillion
+keyboard:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pn*[pP][aA][vV][iI][lL][iI][oO][nN]*:pvr*
+ KEYBOARD_KEY_88=media # FIXME: quick play
+ KEYBOARD_KEY_d8=!f23 # touchpad off
+ KEYBOARD_KEY_d9=!f22 # touchpad on
+
+# Elitebook
+keyboard:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pn*Compaq*:pvr*
+keyboard:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pn*EliteBook*:pvr*
+keyboard:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pn*2230s*:pvr*
+ KEYBOARD_KEY_88=presentation
+ KEYBOARD_KEY_d9=help # I key (high keycode: "info")
+
+# Presario
+keyboard:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pn*Presario*CQ*:pvr*
+ KEYBOARD_KEY_d8=f21
+ KEYBOARD_KEY_d9=f21
+
+# 2510p 2530p
+keyboard:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pn*2510p*:pvr*
+keyboard:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pn*2530p*:pvr*
+keyboard:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnHP G60 Notebook PC:pvr*
+ KEYBOARD_KEY_d8=!f23 # touchpad off
+ KEYBOARD_KEY_d9=!f22 # touchpad on
+
+# TX2
+keyboard:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pn*[tT][xX]2*:pvr*
+ KEYBOARD_KEY_c2=media
+ KEYBOARD_KEY_d8=!f23 # Toggle touchpad button on tx2 (OFF)
+ KEYBOARD_KEY_d9=!f22 # Toggle touchpad button on tx2 (ON)
+
+# Presario 2100
+keyboard:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnPresario 2100*:pvr*
+ KEYBOARD_KEY_f0=help
+ KEYBOARD_KEY_f1=screenlock
+ KEYBOARD_KEY_f3=search
+
+# Elitebook 8440p
+keyboard:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnHP EliteBook 8440p:pvr*
+ KEYBOARD_KEY_88=www
+ KEYBOARD_KEY_a0=mute
+ KEYBOARD_KEY_ae=volumedown
+ KEYBOARD_KEY_b0=volumeup
+ KEYBOARD_KEY_ec=mail
+
+# Elitebook 8460p
+keyboard:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnHP EliteBook 8460p:pvr*
+ KEYBOARD_KEY_f8=wlan # Wireless HW switch button
+ KEYBOARD_KEY_b3=prog1 # Fn+F11 - Ambient Light Sensor button
+ KEYBOARD_KEY_b1=prog2 # Fn+ESC - System information button
+
+# HDX9494nr
+keyboard:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnHDX9494NR:pvr*
+ KEYBOARD_KEY_b2=www # Fn+F3
+ KEYBOARD_KEY_d8=!f23 # touchpad off
+ KEYBOARD_KEY_d9=!f22 # touchpad on
+
+###########################################################
+# IBM
+###########################################################
+
+# thinkpad_acpi driver
+keyboard:name:ThinkPad Extra Buttons:dmi:bvn*:bvr*:bd*:svnIBM*:pn*:pvr*
+ KEYBOARD_KEY_01=battery # Fn+F2
+ KEYBOARD_KEY_02=screenlock # Fn+F3
+ KEYBOARD_KEY_03=sleep # Fn+F4
+ KEYBOARD_KEY_04=wlan # Fn+F5
+ KEYBOARD_KEY_06=switchvideomode # Fn+F7
+ KEYBOARD_KEY_07=zoom # Fn+F8 screen expand
+ KEYBOARD_KEY_08=f24 # Fn+F9 undock
+ KEYBOARD_KEY_0b=suspend # Fn+F12
+ KEYBOARD_KEY_0f=brightnessup # Fn+Home
+ KEYBOARD_KEY_10=brightnessdown # Fn+End
+ KEYBOARD_KEY_11=kbdillumtoggle # Fn+PgUp - ThinkLight
+ KEYBOARD_KEY_13=zoom # Fn+Space
+ KEYBOARD_KEY_14=volumeup
+ KEYBOARD_KEY_15=volumedown
+ KEYBOARD_KEY_16=mute
+ KEYBOARD_KEY_17=prog1 # ThinkPad/ThinkVantage button (high keycode: "vendor")
+
+# IBM Thinkpad USB Keyboard Trackpoint
+keyboard:usb:v04B3p301[89]*
+ KEYBOARD_KEY_900f0=screenlock
+ KEYBOARD_KEY_900f1=wlan
+ KEYBOARD_KEY_900f2=switchvideomode
+ KEYBOARD_KEY_900f3=suspend
+ KEYBOARD_KEY_900f4=brightnessup
+ KEYBOARD_KEY_900f5=brightnessdown
+ KEYBOARD_KEY_900f8=zoom
+
+###########################################################
+# Inventec
+###########################################################
+
+# Symphony
+keyboard:dmi:bvn*:bvr*:bd*:svnINVENTEC:pnSYMPHONY 6.0/7.0:pvr*
+ KEYBOARD_KEY_f3=prog2
+ KEYBOARD_KEY_f4=prog1
+
+###########################################################
+# Lenovo
+###########################################################
+
+# thinkpad_acpi driver
+keyboard:name:ThinkPad Extra Buttons:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*
+ KEYBOARD_KEY_01=screenlock
+ KEYBOARD_KEY_02=battery
+ KEYBOARD_KEY_03=sleep
+ KEYBOARD_KEY_04=wlan
+ KEYBOARD_KEY_06=switchvideomode
+ KEYBOARD_KEY_07=f21
+ KEYBOARD_KEY_08=f24
+ KEYBOARD_KEY_0b=suspend
+ KEYBOARD_KEY_0f=brightnessup
+ KEYBOARD_KEY_10=brightnessdown
+ KEYBOARD_KEY_11=kbdillumtoggle
+ KEYBOARD_KEY_13=zoom
+ KEYBOARD_KEY_14=volumeup
+ KEYBOARD_KEY_15=volumedown
+ KEYBOARD_KEY_16=mute
+ KEYBOARD_KEY_17=prog1
+ KEYBOARD_KEY_1a=f20
+
+#
+keyboard:name:Ideapad extra buttons:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*
+ KEYBOARD_KEY_42=f23
+ KEYBOARD_KEY_43=f22
+
+# ThinkPad Keyboard with TrackPoint
+keyboard:usb:v17EFp6009*
+ KEYBOARD_KEY_090012=screenlock # Fn+F2
+ KEYBOARD_KEY_090013=battery # Fn+F3
+ KEYBOARD_KEY_090014=wlan # Fn+F5
+ KEYBOARD_KEY_090016=switchvideomode # Fn+F7
+ KEYBOARD_KEY_090017=f21 # Fn+F8 touchpad toggle
+ KEYBOARD_KEY_090019=suspend # Fn+F12
+ KEYBOARD_KEY_09001a=brightnessup # Fn+Home
+ KEYBOARD_KEY_09001b=brightnessdown # Fn+End
+ KEYBOARD_KEY_09001d=zoom # Fn+Space
+ KEYBOARD_KEY_090011=prog1 # ThinkVantage button
+ KEYBOARD_KEY_090015=camera # Fn+F6 headset/camera VoIP key ??
+ KEYBOARD_KEY_090010=f20 # Microphone mute button; should be micmute
+
+# Lenovo 3000
+keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*3000*:pvr*
+ KEYBOARD_KEY_8b=switchvideomode # Fn+F7 video
+ KEYBOARD_KEY_96=wlan # Fn+F5 wireless
+ KEYBOARD_KEY_97=sleep # Fn+F4 suspend
+ KEYBOARD_KEY_98=suspend # Fn+F12 hibernate
+ KEYBOARD_KEY_b4=prog1 # Lenovo Care
+
+# lenovo-ideapad
+keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*IdeaPad*:pvr*
+keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pnS10-*:pvr*
+ KEYBOARD_KEY_81=rfkill # does nothing in BIOS
+ KEYBOARD_KEY_83=display_off # BIOS toggles screen state
+ KEYBOARD_KEY_b9=brightnessup # does nothing in BIOS
+ KEYBOARD_KEY_ba=brightnessdown # does nothing in BIOS
+ KEYBOARD_KEY_f1=camera # BIOS toggles camera power
+ KEYBOARD_KEY_f2=f21 # touchpad toggle (key alternately emits F2 and F3)
+ KEYBOARD_KEY_f3=f21
+
+# Thinkpad X200_Tablet
+keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pnThinkPad X2* Tablet*:pvr*
+ KEYBOARD_KEY_5d=menu
+ KEYBOARD_KEY_63=fn
+ KEYBOARD_KEY_66=screenlock
+ KEYBOARD_KEY_67=cyclewindows # bezel circular arrow
+ KEYBOARD_KEY_68=setup # bezel setup / menu
+ KEYBOARD_KEY_6c=direction # rotate screen
+
+# ThinkPad X6 Tablet
+keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pnThinkPad X6*:pvr*
+ KEYBOARD_KEY_6c=f21 # rotate
+ KEYBOARD_KEY_68=screenlock # screenlock
+ KEYBOARD_KEY_6b=esc # escape
+ KEYBOARD_KEY_6d=right # right on d-pad
+ KEYBOARD_KEY_6e=left # left on d-pad
+ KEYBOARD_KEY_71=up # up on d-pad
+ KEYBOARD_KEY_6f=down # down on d-pad
+ KEYBOARD_KEY_69=enter # enter on d-pad
+
+# IdeaPad
+keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*IdeaPad Y550*:pvr*
+ KEYBOARD_KEY_95=media
+ KEYBOARD_KEY_a3=play
+
+# V480
+keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*Lenovo V480*:pvr*
+ KEYBOARD_KEY_f1=f21
+
+# IdeaPad
+keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*IdeaPad U300s*:pvr*
+ KEYBOARD_KEY_f1=f21
+ KEYBOARD_KEY_ce=f20
+
+###########################################################
+# Logitech
+###########################################################
+
+# iTouch
+keyboard:usb:v046DpC308*
+ KEYBOARD_KEY_90001=shop # Shopping
+ KEYBOARD_KEY_90002=config # iTouch
+ KEYBOARD_KEY_90003=finance # Finance
+ KEYBOARD_KEY_90004=prog1 # My Sites
+ KEYBOARD_KEY_90005=prog2 # Community
+ KEYBOARD_KEY_C0183=media # Media
+
+# Cordless Desktop S510
+keyboard:usb:v046DpC50C*
+ KEYBOARD_KEY_d4=zoomin
+ KEYBOARD_KEY_cc=zoomout
+
+# Wave cordless
+keyboard:usb:v046DpC317*
+ KEYBOARD_KEY_9001c=scale # expo
+ KEYBOARD_KEY_9001f=zoomout
+ KEYBOARD_KEY_90020=zoomin
+ KEYBOARD_KEY_9003d=prog1 # gadget
+ KEYBOARD_KEY_90005=camera
+ KEYBOARD_KEY_90018=media
+ KEYBOARD_KEY_90041=wordprocessor
+ KEYBOARD_KEY_90042=spreadsheet
+ KEYBOARD_KEY_90043=calendar
+ KEYBOARD_KEY_90044=prog2 # fn+f4 (program a)
+ KEYBOARD_KEY_90045=prog3 # fn+f5 (program b)
+ KEYBOARD_KEY_90046=prog4 # fn+f6 (program c)
+ KEYBOARD_KEY_90048=messenger # fn+f8 (msn messenger)
+ KEYBOARD_KEY_9002d=search # fn+f10 (search www)
+ KEYBOARD_KEY_9004b=find # fn+f11 (search pc)
+ KEYBOARD_KEY_9004c=ejectclosecd
+
+# Wave cordless
+keyboard:usb:v046DpC517*
+ KEYBOARD_KEY_c101f=zoomout
+ KEYBOARD_KEY_c1020=zoomin
+ KEYBOARD_KEY_c1005=camera
+ KEYBOARD_KEY_c0183=media
+ KEYBOARD_KEY_c1041=wordprocessor
+ KEYBOARD_KEY_c1042=spreadsheet
+ KEYBOARD_KEY_c1043=calendar
+ KEYBOARD_KEY_c1044=prog2 # fn+f4 (program a)
+ KEYBOARD_KEY_c1045=prog3 # fn+f5 (program b)
+ KEYBOARD_KEY_c1046=prog4 # fn+f6 (program c)
+ KEYBOARD_KEY_c1048=messenger # fn+f8 (msn messenger)
+ KEYBOARD_KEY_c104a=find # fn+f10 (search www)
+ KEYBOARD_KEY_c104c=ejectclosecd
+
+# Cordless Wave Pro
+keyboard:usb:v046DpC52[9B]*
+ KEYBOARD_KEY_0c01b6=camera
+ KEYBOARD_KEY_0c0183=media
+ KEYBOARD_KEY_0c0184=wordprocessor
+ KEYBOARD_KEY_0c0186=spreadsheet
+ KEYBOARD_KEY_0c018e=calendar
+ KEYBOARD_KEY_0c0223=homepage
+ KEYBOARD_KEY_0c01bc=messenger
+ KEYBOARD_KEY_0c018a=mail
+ KEYBOARD_KEY_0c0221=search
+ KEYBOARD_KEY_0c00b8=ejectcd
+ KEYBOARD_KEY_0c022d=zoomin
+ KEYBOARD_KEY_0c022e=zoomout
+
+###########################################################
+# Maxdata
+###########################################################
+
+# Pro 7000
+keyboard:dmi:bvn*:bvr*:bd*:svnMAXDATA:pnPro 7000*:pvr*
+ KEYBOARD_KEY_97=prog2
+ KEYBOARD_KEY_9f=prog1
+ KEYBOARD_KEY_a0=mute # Fn+F5
+ KEYBOARD_KEY_82=www
+ KEYBOARD_KEY_ec=email
+ KEYBOARD_KEY_ae=volumedown # Fn+Down
+ KEYBOARD_KEY_b0=volumeup # Fn+Up
+ KEYBOARD_KEY_df=suspend # Fn+F2
+ KEYBOARD_KEY_f5=help
+
+###########################################################
+# Medion
+###########################################################
+
+# FID2060
+keyboard:dmi:bvn*:bvr*:bd*:svnMEDION*:pn*FID2060*:pvr*
+ KEYBOARD_KEY_6b=channeldown # Thottle Down
+ KEYBOARD_KEY_6d=channelup # Thottle Up
+
+# NB-A555
+keyboard:dmi:bvn*:bvr*:bd*:svnMEDIONNB:pnA555*:pvr*
+ KEYBOARD_KEY_63=www # N button
+ KEYBOARD_KEY_66=prog1 # link 1 button
+ KEYBOARD_KEY_67=email # envelope button
+ KEYBOARD_KEY_69=prog2 # link 2 button
+
+###########################################################
+# Microsoft
+###########################################################
+
+# Microsoft Natural Ergonomic Keyboard 4000
+keyboard:usb:v045Ep00DB*
+ KEYBOARD_KEY_c022d=zoomin
+ KEYBOARD_KEY_c022e=zoomout
+
+###########################################################
+# Micro Star
+###########################################################
+
+keyboard:dmi:bvn*:bvr*:bd*:svnMICRO-STAR*:pn*
+keyboard:dmi:bvn*:bvr*:bd*:svnMicro-Star*:pn*
+ KEYBOARD_KEY_a0=mute # Fn+F9
+ KEYBOARD_KEY_ae=volumedown # Fn+F7
+ KEYBOARD_KEY_b0=volumeup # Fn+F8
+ KEYBOARD_KEY_b2=www # e button
+ KEYBOARD_KEY_df=sleep # Fn+F12
+ KEYBOARD_KEY_e2=bluetooth # satellite dish2
+ KEYBOARD_KEY_e4=f21 # Fn+F3 Touchpad disable
+ KEYBOARD_KEY_ec=email # envelope button
+ KEYBOARD_KEY_ee=camera # Fn+F6 camera disable
+ KEYBOARD_KEY_f6=wlan # satellite dish1
+ KEYBOARD_KEY_f7=brightnessdown # Fn+F4
+ KEYBOARD_KEY_f8=brightnessup # Fn+F5
+ KEYBOARD_KEY_f9=search
+
+#
+keyboard:dmi:bvn*:bvr*:bd*:svnMICRO-STAR*:pnGE60*:pvr*
+keyboard:dmi:bvn*:bvr*:bd*:svnMICRO-STAR*:pnGE70*:pvr*
+keyboard:dmi:bvn*:bvr*:bd*:svnMicro-Star*:pn*:pvr*
+ KEYBOARD_KEY_c2=ejectcd
+
+#
+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
+
+#
+keyboard:dmi:bvn*:bvr*:bd*:svnMICRO-STAR*:pnU90/U100:*
+ KEYBOARD_KEY_e4=reserved
+
+###########################################################
+# MSI
+###########################################################
+
+keyboard:name:MSI Laptop hotkeys:dmi:bvn*:bvr*:bd*:svn*:pnM[iI][cC][rR][oO]-S[tT][aA][rR]*:pvr*
+ KEYBOARD_KEY_0213=f22
+ KEYBOARD_KEY_0214=f23
+
+###########################################################
+# OLPC
+###########################################################
+
+# XO
+keyboard:dmi:bvn*:bvr*:bd*:svnOLPC:pnXO:*
+ KEYBOARD_KEY_59=fn
+ KEYBOARD_KEY_81=fn_esc
+ KEYBOARD_KEY_f9=camera
+ KEYBOARD_KEY_f8=sound # Fn+CAMERA = Mic
+ KEYBOARD_KEY_43=brightnessdown
+ KEYBOARD_KEY_44=brightnessup
+ KEYBOARD_KEY_57=volumedown
+ KEYBOARD_KEY_58=volumeup
+ KEYBOARD_KEY_bb=f1
+ KEYBOARD_KEY_bc=f2
+ KEYBOARD_KEY_bd=f3
+ KEYBOARD_KEY_be=f4
+ KEYBOARD_KEY_bf=f5
+ KEYBOARD_KEY_c0=f6
+ KEYBOARD_KEY_c1=f7
+ KEYBOARD_KEY_c2=f8
+ KEYBOARD_KEY_c3=f9
+ KEYBOARD_KEY_c4=f10
+ KEYBOARD_KEY_c7=f11
+ KEYBOARD_KEY_d8=f12
+ KEYBOARD_KEY_f7=f13
+ KEYBOARD_KEY_f6=f14
+ KEYBOARD_KEY_f5=f15
+ KEYBOARD_KEY_f4=f16
+ KEYBOARD_KEY_f3=f17
+ KEYBOARD_KEY_f2=f18
+ KEYBOARD_KEY_f1=f19
+ KEYBOARD_KEY_f0=f20
+ KEYBOARD_KEY_ef=f21
+ KEYBOARD_KEY_ee=chat
+ KEYBOARD_KEY_e4=chat
+ KEYBOARD_KEY_dd=menu # Frame
+ KEYBOARD_KEY_da=prog1 # Fn+Frame
+ KEYBOARD_KEY_d3=delete
+ KEYBOARD_KEY_d2=insert
+ KEYBOARD_KEY_c9=pageup
+ KEYBOARD_KEY_d1=pagedown
+ KEYBOARD_KEY_c7=home
+ KEYBOARD_KEY_cF=end
+ KEYBOARD_KEY_73=hp
+ KEYBOARD_KEY_7e=hp
+ KEYBOARD_KEY_db=leftmeta # left grab
+ KEYBOARD_KEY_dc=rightmeta # right grab
+ KEYBOARD_KEY_85=rightmeta # Right grab releases on a different scancode
+ KEYBOARD_KEY_d6=kbdillumtoggle # Fn+Space
+ KEYBOARD_KEY_69=switchvideomode # Brightness key
+ KEYBOARD_KEY_65=kp8 # up
+ KEYBOARD_KEY_66=kp2 # down
+ KEYBOARD_KEY_67=kp4 # left
+ KEYBOARD_KEY_68=kp6 # right
+ KEYBOARD_KEY_e5=kp9 # pgup
+ KEYBOARD_KEY_e6=kp3 # pgdn
+ KEYBOARD_KEY_e7=kp7 # home
+ KEYBOARD_KEY_e8=kp1 # end
+
+###########################################################
+# Onkyo
+###########################################################
+
+keyboard:dmi:bvn*:bvr*:bd*:svnONKYO CORPORATION:pnONKYOPC:*
+ KEYBOARD_KEY_a0=mute # Fn+D
+ KEYBOARD_KEY_ae=volumedown # Fn+F
+ KEYBOARD_KEY_b0=volumeup # Fn+G
+ KEYBOARD_KEY_df=sleep # Fn+W
+ KEYBOARD_KEY_e0=bluetooth # Fn+H
+ KEYBOARD_KEY_e2=cyclewindows # Fn+Esc
+ KEYBOARD_KEY_ee=battery # Fn+Q
+ KEYBOARD_KEY_f0=media # Fn+R
+ KEYBOARD_KEY_f5=switchvideomode # Fn+E
+ KEYBOARD_KEY_f6=camera # Fn+T
+ KEYBOARD_KEY_f7=f21 # Fn+Y (touchpad toggle)
+ KEYBOARD_KEY_f8=brightnessup # Fn+S
+ KEYBOARD_KEY_f9=brightnessdown # Fn+A
+ KEYBOARD_KEY_fb=wlan # Fn+J
+
+###########################################################
+# OQO
+###########################################################
+
+# Model 2
+keyboard:dmi:bvn*:bvr*:bd*:svnOQO Inc.*:pnOQO Model 2*:pvr*
+ KEYBOARD_KEY_8e=wlan
+ KEYBOARD_KEY_f0=switchvideomode
+ KEYBOARD_KEY_f1=mute
+ KEYBOARD_KEY_f2=volumedown
+ KEYBOARD_KEY_f3=volumeup
+
+###########################################################
+# Quanta
+###########################################################
+
+keyboard:dmi:bvn*:bvr*:bd*:svn*:pn*:pvr*:rvnQuanta:rn30B7:rvr65.2B:*
+ KEYBOARD_KEY_88=media # "quick play
+
+###########################################################
+# Samsung
+###########################################################
+
+keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pvr*
+ KEYBOARD_KEY_74=prog1 # User key
+ KEYBOARD_KEY_75=www
+ KEYBOARD_KEY_78=mail
+ KEYBOARD_KEY_82=!switchvideomode # Fn+F4 CRT/LCD (high keycode: "displaytoggle")
+ KEYBOARD_KEY_83=!battery # Fn+F2
+ KEYBOARD_KEY_84=!prog1 # Fn+F5 backlight on/off
+ KEYBOARD_KEY_86=!wlan # Fn+F9
+ KEYBOARD_KEY_88=!brightnessup # Fn+Up
+ KEYBOARD_KEY_89=!brightnessdown # Fn+Down
+ KEYBOARD_KEY_b1=!prog2 # Fn+F7 run Samsung Magic Doctor (keypressed event is generated twice)
+ KEYBOARD_KEY_b3=!prog3 # Fn+F8 switch power mode (battery/dynamic/performance)
+ KEYBOARD_KEY_b4=!wlan # Fn+F9 (X60P)
+ KEYBOARD_KEY_f7=!f22 # Fn+F10 Touchpad on
+ KEYBOARD_KEY_f9=!f23 # Fn+F10 Touchpad off
+
+# Series 3
+keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*300E[457]*:pvr*
+keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*200E[45]*:pvr*
+ KEYBOARD_KEY_ce=! # Fn+F1 launch control setting
+ KEYBOARD_KEY_d5=! # Fn+F12 Wi-Fi toggle
+
+# Series 9
+keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*90X3A*:pvr*
+keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*900X[34]*:pvr*
+ KEYBOARD_KEY_ce=! # Fn+F8 keyboard backlight up
+ KEYBOARD_KEY_8d=! # Fn+F7 keyboard backlight down
+ KEYBOARD_KEY_96=! # Fn+F1 performance mode (?)
+ KEYBOARD_KEY_97=! # Fn+F12 Wi-Fi toggle
+ KEYBOARD_KEY_d5=! # Fn+F6 battery life extender
+
+# SQ1US
+keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pnSQ1US:pvr*
+ KEYBOARD_KEY_d4=menu
+ KEYBOARD_KEY_d8=f1
+ KEYBOARD_KEY_d9=f10
+ KEYBOARD_KEY_d6=f3
+ KEYBOARD_KEY_d7=f9
+ KEYBOARD_KEY_e4=f5
+ KEYBOARD_KEY_ee=f11
+
+# SX20S
+keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*SX20S*:pvr*
+ KEYBOARD_KEY_74=mute
+ KEYBOARD_KEY_75=mute
+ KEYBOARD_KEY_77=f22 # Touchpad on
+ KEYBOARD_KEY_79=f23 # Touchpad off
+
+keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*700Z*:pvr*
+ KEYBOARD_KEY_ba=ejectcd
+ KEYBOARD_KEY_96=keyboardbrightnessup
+ KEYBOARD_KEY_97=keyboardbrightnessdown
+
+keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*700T*:pvr*
+ KEYBOARD_KEY_ad=leftmeta
+
+###########################################################
+# SONY
+###########################################################
+
+# sony-laptop driver
+keyboard:name:Sony Vaio Keys:dmi:bvn*:bvr*:bd*:svnSony*:pn*
+ KEYBOARD_KEY_06=mute # Fn+F2
+ KEYBOARD_KEY_07=volumedown # Fn+F3
+ KEYBOARD_KEY_08=volumeup # Fn+F4
+ KEYBOARD_KEY_09=brightnessdown # Fn+F5
+ KEYBOARD_KEY_0a=brightnessup # Fn+F6
+ KEYBOARD_KEY_0b=switchvideomode # Fn+F7
+ KEYBOARD_KEY_0e=zoom # Fn+F10
+ KEYBOARD_KEY_10=suspend # Fn+F12
+
+keyboard:name:Sony Vaio Keys:dmi:bvn*:bvr*:bd*:svnSony*:pn*PCG-C1*:pvr*
+keyboard:name:Sony Vaio Keys:dmi:bvn*:bvr*:bd*:svnSony*:pn*PCG-K25*:pvr*
+keyboard:name:Sony Vaio Keys:dmi:bvn*:bvr*:bd*:svnSony*:pn*PCG-F[1-6]*:pvr*
+keyboard:name:Sony Vaio Keys:dmi:bvn*:bvr*:bd*:svnSony*:pn*PCG-FX*:pvr*
+keyboard:name:Sony Vaio Keys:dmi:bvn*:bvr*:bd*:svnSony*:pn*PCG-FRV*:pvr*
+keyboard:name:Sony Vaio Keys:dmi:bvn*:bvr*:bd*:svnSony*:pn*PCG-GR*:pvr*
+keyboard:name:Sony Vaio Keys:dmi:bvn*:bvr*:bd*:svnSony*:pn*PCG-TR*:pvr*
+keyboard:name:Sony Vaio Keys:dmi:bvn*:bvr*:bd*:svnSony*:pn*PCG-NV*:pvr*
+keyboard:name:Sony Vaio Keys:dmi:bvn*:bvr*:bd*:svnSony*:pn*PCG-Z*:pvr*
+keyboard:name:Sony Vaio Keys:dmi:bvn*:bvr*:bd*:svnSony*:pn*VGN-S360*:pvr*
+ KEYBOARD_KEY_06=battery
+ KEYBOARD_KEY_07=mute
+
+keyboard:name:Sony Vaio Keys:dmi:bvn*:bvr*:bd*:svnSony*:pnVGN-AR71*:pvr*
+keyboard:name:Sony Vaio Keys:dmi:bvn*:bvr*:bd*:svnSony*:pnVGN-FW*:pvr*
+keyboard: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_15=suspend # Fn+F12
+ KEYBOARD_KEY_17=prog1
+ KEYBOARD_KEY_20=media
+
+keyboard: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
+
+###########################################################
+# Toshiba
+###########################################################
+
+# Satellite A100
+keyboard:dmi:bvn*:bvr*:bd*:svnTOSHIBA*:pnSATELLITE A100:pvr*
+ KEYBOARD_KEY_a4=stopcd
+ KEYBOARD_KEY_b2=www
+
+# Satellite A110
+keyboard:dmi:bvn*:bvr*:bd*:svnTOSHIBA*:pnSatellite A110:pvr*
+ KEYBOARD_KEY_92=stop
+ KEYBOARD_KEY_93=www
+ KEYBOARD_KEY_94=media
+ KEYBOARD_KEY_9e=f22 # Touchpad on
+ KEYBOARD_KEY_9f=f23 # Touchpad off
+ KEYBOARD_KEY_b9=nextsong
+ KEYBOARD_KEY_d9=brightnessup
+ KEYBOARD_KEY_ee=screenlock
+ KEYBOARD_KEY_f4=previoussong
+ KEYBOARD_KEY_f7=playpause
+
+# Satellite M30X
+keyboard:dmi:bvn*:bvr*:bd*:svnTOSHIBA*:pnSatellite M30X:pvr*
+ KEYBOARD_KEY_ef=brightnessdown
+ KEYBOARD_KEY_d9=brightnessup
+ KEYBOARD_KEY_ee=screenlock
+ KEYBOARD_KEY_93=media
+ KEYBOARD_KEY_9e=f22 # touchpad enable
+ KEYBOARD_KEY_9f=f23 # touchpad disable
+
+###########################################################
+# VIA
+###########################################################
+
+keyboard:dmi:bvn*:bvr*:bd*:svnVIA:pnK8N800:pvr*
+ KEYBOARD_KEY_81=prog1
+
+###########################################################
+# Zepto
+###########################################################
+
+# Znote
+keyboard:dmi:bvn*:bvr*:bd*:svnZepto:pnZnote:*
+ KEYBOARD_KEY_93=switchvideomode # Fn+F3 Toggle Video Output
+ KEYBOARD_KEY_95=brightnessdown # Fn+F4 Brightness Down
+ KEYBOARD_KEY_91=brightnessup # Fn+F5 Brightness Up
+ KEYBOARD_KEY_a5=f23 # Fn+F6 Disable Touchpad
+ KEYBOARD_KEY_a6=f22 # Fn+F6 Enable Touchpad
+ KEYBOARD_KEY_a7=bluetooth # Fn+F10 Enable Bluetooth
+ KEYBOARD_KEY_a9=bluetooth # Fn+F10 Disable Bluetooth
+ KEYBOARD_KEY_f1=wlan # RF Switch Off
+ KEYBOARD_KEY_f2=wlan # RF Switch On
+ KEYBOARD_KEY_f4=prog1 # P1 Button
+ KEYBOARD_KEY_f3=prog2 # P2 Button
+ KEYBOARD_KEY_a0=! # mute
+ KEYBOARD_KEY_ae=! # volume down
+ KEYBOARD_KEY_b0=! # volume up
+
+# Znote 6615WD
+keyboard:dmi:bvn*:bvr*:bd*:svnZepto:pnZnote 6615WD:*
+ KEYBOARD_KEY_a0=! # mute
+ KEYBOARD_KEY_ae=! # volume down
+ KEYBOARD_KEY_b0=! # volume up
+
+###########################################################
+# Other
+###########################################################
+
+# Common Volume Keys
+keyboard:dmi:bvn*:bvr*:bd*:svnFUJITSU SIEMENS:pnAMILO*:pvr*
+keyboard:dmi:bvn*:bvr*:bd*:svnFOXCONN:pnQBOOK:*
+keyboard:dmi:bvn*:bvr*:bd*:svnMTC:pn*:pvrA0:*
+keyboard:dmi:bvn*:bvr*:bd*:svnMio Technology:pnN890:*
+keyboard:dmi:bvn*:bvr*:bd*:svnPEGATRON CORP.:pnSpring Peak:*
+keyboard:dmi:bvn*:bvr*:bd*:svnTOSHIBA:pnSatellite [uU]30[05]*:pvr*
+keyboard:dmi:bvn*:bvr*:bd*:svnTOSHIBA:pnSatellite Pro [uU]300*:pvr*
+keyboard:dmi:bvn*:bvr*:bd*:svnTOSHIBA:pnSATELLITE [uU]500*:pvr*
+keyboard:dmi:bvn*:bvr*:bd*:svnViooo Corporation:pnPT17:*
+keyboard:dmi:bvn*:bvr*:bd*:svnHANNspree:pnSN10E100:*
+keyboard:dmi:bvn*:bvr*:bd*:svnGIGABYTE:pni1520M:*
+keyboard:dmi:bvn*:bvr*:bd*:svnBenQ:pn*nScreen*:pvr*
+keyboard:dmi:bvn*:bvr*:bd*:svnBenQ:pnJoybook Lite*:pvr*
+keyboard:dmi:bvn*:bvr*:bd*:svnDIXONSP:pnDIXON*:pvr*
+ KEYBOARD_KEY_a0=! # mute
+ KEYBOARD_KEY_ae=! # volume down
+ KEYBOARD_KEY_b0=! # volume up
diff --git a/hwdb/Makefile.am b/hwdb/Makefile.am
index 097936f7cc..5ced1cb636 100644
--- a/hwdb/Makefile.am
+++ b/hwdb/Makefile.am
@@ -8,3 +8,8 @@ dist_udevhwdb_DATA = \
20-pci-vendor-model.hwdb \
20-usb-classes.hwdb \
20-usb-vendor-model.hwdb
+
+if ENABLE_KEYMAP
+dist_udevhwdb_DATA += \
+ 60-keyboard.hwdb
+endif
diff --git a/keymaps-force-release/Makefile.am b/keymaps-force-release/Makefile.am
deleted file mode 100644
index 9153d095af..0000000000
--- a/keymaps-force-release/Makefile.am
+++ /dev/null
@@ -1,10 +0,0 @@
-ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
-
-dist_udevkeymapforcere_DATA = \
- dell-touchpad \
- dell-xps \
- hp-other \
- samsung-other \
- samsung-series-3 \
- samsung-series-9 \
- common-volume-keys
diff --git a/keymaps-force-release/common-volume-keys b/keymaps-force-release/common-volume-keys
deleted file mode 100644
index e384a3b8f2..0000000000
--- a/keymaps-force-release/common-volume-keys
+++ /dev/null
@@ -1,3 +0,0 @@
-0xa0 # mute
-0xae # volume down
-0xb0 # volume up
diff --git a/keymaps-force-release/dell-touchpad b/keymaps-force-release/dell-touchpad
deleted file mode 100644
index 18e9bdee66..0000000000
--- a/keymaps-force-release/dell-touchpad
+++ /dev/null
@@ -1 +0,0 @@
-0x9E
diff --git a/keymaps-force-release/dell-xps b/keymaps-force-release/dell-xps
deleted file mode 100644
index 69f7899ad7..0000000000
--- a/keymaps-force-release/dell-xps
+++ /dev/null
@@ -1 +0,0 @@
-0x8C
diff --git a/keymaps-force-release/hp-other b/keymaps-force-release/hp-other
deleted file mode 100644
index 6621370095..0000000000
--- a/keymaps-force-release/hp-other
+++ /dev/null
@@ -1,3 +0,0 @@
-# list of scancodes (hex or decimal), optional comment
-0xd8 # Touchpad off
-0xd9 # Touchpad on
diff --git a/keymaps-force-release/samsung-other b/keymaps-force-release/samsung-other
deleted file mode 100644
index e9627af882..0000000000
--- a/keymaps-force-release/samsung-other
+++ /dev/null
@@ -1,10 +0,0 @@
-# list of scancodes (hex or decimal), optional comment
-0x82 # Fn+F4 CRT/LCD
-0x83 # Fn+F2 battery
-0x84 # Fn+F5 backlight on/off
-0x86 # Fn+F9 WLAN
-0x88 # Fn+Up brightness up
-0x89 # Fn+Down brightness down
-0xB3 # Fn+F8 switch power mode (battery/dynamic/performance)
-0xF7 # Fn+F10 Touchpad on
-0xF9 # Fn+F10 Touchpad off
diff --git a/keymaps-force-release/samsung-series-3 b/keymaps-force-release/samsung-series-3
deleted file mode 100644
index 63707508aa..0000000000
--- a/keymaps-force-release/samsung-series-3
+++ /dev/null
@@ -1,2 +0,0 @@
-0xCE # Fn+F1 launch control setting
-0xD5 # Fn+F12 Wi-Fi toggle
diff --git a/keymaps-force-release/samsung-series-9 b/keymaps-force-release/samsung-series-9
deleted file mode 100644
index fa6a0b1d18..0000000000
--- a/keymaps-force-release/samsung-series-9
+++ /dev/null
@@ -1,6 +0,0 @@
-# list of scancodes (hex or decimal), optional comment
-0xCE # Fn+F8 keyboard backlight up
-0x8D # Fn+F7 keyboard backlight down
-0x97 # Fn+F12 Wi-Fi toggle
-0x96 # Fn+F1 performance mode (?)
-0xD5 # Fn+F6 battery life extender
diff --git a/keymaps/Makefile.README b/keymaps/Makefile.README
deleted file mode 100644
index 18bd334695..0000000000
--- a/keymaps/Makefile.README
+++ /dev/null
@@ -1,3 +0,0 @@
-Because of the parsing done by src/keymap/check-keymaps.sh,
-you should not put anything in this directory except for
-keymap files and files begining with Makefile.
diff --git a/keymaps/Makefile.am b/keymaps/Makefile.am
deleted file mode 100644
index 10fcd72741..0000000000
--- a/keymaps/Makefile.am
+++ /dev/null
@@ -1,73 +0,0 @@
-ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
-
-KEYMAPS = \
- acer \
- acer-aspire_5720 \
- acer-aspire_8930 \
- acer-aspire_5920g \
- acer-aspire_6920 \
- acer-travelmate_c300 \
- asus \
- compaq-e_evo \
- dell \
- dell-latitude-xt2 \
- everex-xt5000 \
- fujitsu-amilo_li_2732 \
- fujitsu-amilo_pa_2548 \
- fujitsu-amilo_pro_edition_v3505 \
- fujitsu-amilo_pro_v3205 \
- fujitsu-amilo_si_1520 \
- fujitsu-esprimo_mobile_v5 \
- fujitsu-esprimo_mobile_v6 \
- genius-slimstar-320 \
- hewlett-packard \
- hewlett-packard-2510p_2530p \
- hewlett-packard-compaq_elitebook \
- hewlett-packard-pavilion \
- hewlett-packard-presario-2100 \
- hewlett-packard-tablet \
- hewlett-packard-tx2 \
- hewlett-packard_elitebook-8440p \
- hewlett-packard_elitebook-8460p \
- hewlett-packard-hdx9494nr \
- ibm-thinkpad-usb-keyboard-trackpoint \
- inventec-symphony_6.0_7.0 \
- lenovo-3000 \
- lenovo-ideapad \
- lenovo-thinkpad-usb-keyboard-trackpoint \
- lenovo-thinkpad_x6_tablet \
- lenovo-thinkpad_x200_tablet \
- lg-x110 \
- logitech-usb \
- logitech-wave \
- logitech-wave-cordless \
- logitech-wave-pro-cordless \
- maxdata-pro_7000 \
- medion-fid2060 \
- medionnb-a555 \
- micro-star \
- module-asus-w3j \
- module-ibm \
- module-lenovo \
- module-sony \
- module-sony-old \
- module-sony-vgn \
- module-sony-vpc \
- olpc-xo \
- onkyo \
- oqo-model2 \
- samsung-other \
- samsung-series-3 \
- samsung-series-9 \
- samsung-sq1us \
- samsung-sx20s \
- toshiba-satellite_a100 \
- toshiba-satellite_a110 \
- toshiba-satellite_m30x \
- zepto-znote
-
-dist_udevkeymap_DATA = \
- $(KEYMAPS)
-
-EXTRA_DIST = \
- $(KEYMAPS)
diff --git a/keymaps/acer b/keymaps/acer
deleted file mode 100644
index a0c6fd278a..0000000000
--- a/keymaps/acer
+++ /dev/null
@@ -1,22 +0,0 @@
-0xA5 help # Fn+F1
-0xA6 setup # Fn+F2 Acer eSettings
-0xA7 battery # Fn+F3 Power Management
-0xA9 switchvideomode # Fn+F5
-0xB3 euro
-0xB4 dollar
-0xCE brightnessup # Fn+Right
-0xD4 bluetooth # (toggle) off-to-on
-0xD5 wlan # (toggle) on-to-off
-0xD6 wlan # (toggle) off-to-on
-0xD7 bluetooth # (toggle) on-to-off
-0xD8 bluetooth # (toggle) off-to-on
-0xD9 brightnessup # Fn+Right
-0xEE brightnessup # Fn+Right
-0xEF brightnessdown # Fn+Left
-0xF1 f22 # Fn+F7 Touchpad toggle (off-to-on)
-0xF2 f23 # Fn+F7 Touchpad toggle (on-to-off)
-0xF3 prog2 # "P2" programmable button
-0xF4 prog1 # "P1" programmable button
-0xF5 presentation
-0xF8 fn
-0xF9 f23 # Launch NTI shadow
diff --git a/keymaps/acer-aspire_5720 b/keymaps/acer-aspire_5720
deleted file mode 100644
index b9381f86c6..0000000000
--- a/keymaps/acer-aspire_5720
+++ /dev/null
@@ -1,5 +0,0 @@
-0x84 bluetooth # sent when bluetooth module missing, and key pressed
-0x92 media # Acer arcade
-0xD4 bluetooth # Bluetooth on
-0xD9 bluetooth # Bluetooth off
-0xF4 prog3 # e-key
diff --git a/keymaps/acer-aspire_5920g b/keymaps/acer-aspire_5920g
deleted file mode 100644
index 633c4e854c..0000000000
--- a/keymaps/acer-aspire_5920g
+++ /dev/null
@@ -1,5 +0,0 @@
-0x8A media
-0x92 media
-0xA6 setup
-0xB2 www
-0xD9 bluetooth # (toggle) on-to-off
diff --git a/keymaps/acer-aspire_6920 b/keymaps/acer-aspire_6920
deleted file mode 100644
index 699c954b4e..0000000000
--- a/keymaps/acer-aspire_6920
+++ /dev/null
@@ -1,5 +0,0 @@
-0xD9 bluetooth # (toggle) on-to-off
-0x92 media
-0x9E back
-0x83 rewind
-0x89 fastforward
diff --git a/keymaps/acer-aspire_8930 b/keymaps/acer-aspire_8930
deleted file mode 100644
index 8e36cd947c..0000000000
--- a/keymaps/acer-aspire_8930
+++ /dev/null
@@ -1,5 +0,0 @@
-0xCA prog3 # key 'HOLD' on CineDash Media Console
-0x83 rewind
-0x89 fastforward
-0x92 media # key 'ARCADE' on CineDash Media Console
-0x9E back
diff --git a/keymaps/acer-travelmate_c300 b/keymaps/acer-travelmate_c300
deleted file mode 100644
index bfef4cf868..0000000000
--- a/keymaps/acer-travelmate_c300
+++ /dev/null
@@ -1,5 +0,0 @@
-0x67 f24 # FIXME: rotate screen
-0x68 up
-0x69 down
-0x6B fn
-0x6C screenlock # FIXME: lock tablet device/buttons
diff --git a/keymaps/asus b/keymaps/asus
deleted file mode 100644
index 2a5995f982..0000000000
--- a/keymaps/asus
+++ /dev/null
@@ -1,3 +0,0 @@
-0xED volumeup
-0xEE volumedown
-0xEF mute
diff --git a/keymaps/compaq-e_evo b/keymaps/compaq-e_evo
deleted file mode 100644
index 5fbc573aa4..0000000000
--- a/keymaps/compaq-e_evo
+++ /dev/null
@@ -1,4 +0,0 @@
-0xA3 www # I key
-0x9A search
-0x9E email
-0x9F homepage
diff --git a/keymaps/dell b/keymaps/dell
deleted file mode 100644
index cef41d3e7b..0000000000
--- a/keymaps/dell
+++ /dev/null
@@ -1,29 +0,0 @@
-0x81 playpause # Play/Pause
-0x82 stopcd # Stop
-0x83 previoussong # Previous song
-0x84 nextsong # Next song
-0x85 brightnessdown # Fn+Down Brightness Down
-0x86 brightnessup # Fn+Up Brightness Up
-0x87 battery # Fn+F3 battery icon
-0x88 unknown # Fn+F2 Turn On/Off Wireless - handled in hardware
-0x89 ejectclosecd # Fn+F10 Eject CD
-0x8A suspend # Fn+F1 hibernate
-0x8B switchvideomode # Fn+F8 CRT/LCD (high keycode: "displaytoggle")
-0x8C f23 # Fn+Right Auto Brightness
-0x8F switchvideomode # Fn+F7 aspect ratio
-0x90 previoussong # Front panel previous song
-0x91 prog1 # Wi-Fi Catcher (Dell-specific)
-0x92 media # MediaDirect button (house icon)
-0x93 f23 # FIXME Fn+Left Auto Brightness
-0x95 camera # Shutter button - Takes a picture if optional camera available
-0x97 email # Tablet email button
-0x98 f21 # FIXME: Tablet screen rotation
-0x99 nextsong # Front panel next song
-0x9A setup # Tablet tools button
-0x9B switchvideomode # Display toggle button
-0x9E f21 # Touchpad toggle
-0xA2 playpause # Front panel play/pause
-0xA4 stopcd # Front panel stop
-0xED media # MediaDirect button
-0xD8 screenlock # FIXME: Tablet lock button
-0xD9 f21 # Touchpad toggle
diff --git a/keymaps/dell-latitude-xt2 b/keymaps/dell-latitude-xt2
deleted file mode 100644
index 59ff6ff264..0000000000
--- a/keymaps/dell-latitude-xt2
+++ /dev/null
@@ -1,4 +0,0 @@
-0x9B up # tablet rocker up
-0x9E enter # tablet rocker press
-0x9F back # tablet back
-0xA3 down # tablet rocker down
diff --git a/keymaps/everex-xt5000 b/keymaps/everex-xt5000
deleted file mode 100644
index bd89a23d3e..0000000000
--- a/keymaps/everex-xt5000
+++ /dev/null
@@ -1,7 +0,0 @@
-0x5C media
-0x65 f21 # Fn+F5 Touchpad toggle
-0x67 prog3 # Fan speed control button
-0x6F brightnessup
-0x7F brightnessdown
-0xB2 www
-0xEC mail
diff --git a/keymaps/fujitsu-amilo_li_2732 b/keymaps/fujitsu-amilo_li_2732
deleted file mode 100644
index c9b3198d1b..0000000000
--- a/keymaps/fujitsu-amilo_li_2732
+++ /dev/null
@@ -1,3 +0,0 @@
-0xD9 brightnessdown # Fn+F8 brightness down
-0xEF brightnessup # Fn+F9 brightness up
-0xA9 switchvideomode # Fn+F10 Cycle between available video outputs
diff --git a/keymaps/fujitsu-amilo_pa_2548 b/keymaps/fujitsu-amilo_pa_2548
deleted file mode 100644
index f7b0c52444..0000000000
--- a/keymaps/fujitsu-amilo_pa_2548
+++ /dev/null
@@ -1,3 +0,0 @@
-0xE0 volumedown
-0xE1 volumeup
-0xE5 prog1
diff --git a/keymaps/fujitsu-amilo_pro_edition_v3505 b/keymaps/fujitsu-amilo_pro_edition_v3505
deleted file mode 100644
index fd95b000c6..0000000000
--- a/keymaps/fujitsu-amilo_pro_edition_v3505
+++ /dev/null
@@ -1,4 +0,0 @@
-0xA5 help # Fn+F1
-0xA9 switchvideomode # Fn+F3
-0xD9 brightnessdown # Fn+F8
-0xE0 brightnessup # Fn+F9
diff --git a/keymaps/fujitsu-amilo_pro_v3205 b/keymaps/fujitsu-amilo_pro_v3205
deleted file mode 100644
index 8cbf239464..0000000000
--- a/keymaps/fujitsu-amilo_pro_v3205
+++ /dev/null
@@ -1,2 +0,0 @@
-0xF4 f21 # FIXME: silent-mode decrease CPU/GPU clock
-0xF7 switchvideomode # Fn+F3
diff --git a/keymaps/fujitsu-amilo_si_1520 b/keymaps/fujitsu-amilo_si_1520
deleted file mode 100644
index 1419bd9b5e..0000000000
--- a/keymaps/fujitsu-amilo_si_1520
+++ /dev/null
@@ -1,6 +0,0 @@
-0xE1 wlan
-0xF3 wlan
-0xEE brightnessdown
-0xE0 brightnessup
-0xE2 bluetooth
-0xF7 video
diff --git a/keymaps/fujitsu-esprimo_mobile_v5 b/keymaps/fujitsu-esprimo_mobile_v5
deleted file mode 100644
index d3d056b366..0000000000
--- a/keymaps/fujitsu-esprimo_mobile_v5
+++ /dev/null
@@ -1,4 +0,0 @@
-0xA9 switchvideomode
-0xD9 brightnessdown
-0xDF sleep
-0xEF brightnessup
diff --git a/keymaps/fujitsu-esprimo_mobile_v6 b/keymaps/fujitsu-esprimo_mobile_v6
deleted file mode 100644
index 52c70c50cb..0000000000
--- a/keymaps/fujitsu-esprimo_mobile_v6
+++ /dev/null
@@ -1,2 +0,0 @@
-0xCE brightnessup
-0xEF brightnessdown
diff --git a/keymaps/genius-slimstar-320 b/keymaps/genius-slimstar-320
deleted file mode 100644
index d0a3656dd8..0000000000
--- a/keymaps/genius-slimstar-320
+++ /dev/null
@@ -1,35 +0,0 @@
-# Genius SlimStar 320
-#
-# Only buttons which are not properly mapped yet are configured below
-
-# "Scroll wheel", a circular up/down/left/right button. Aimed for scolling,
-# but since there are no scrollleft/scrollright, let's map to back/forward.
-0x900f0 scrollup
-0x900f1 scrolldown
-0x900f3 back
-0x900f2 forward
-
-# Multimedia buttons, left side (from left to right)
-# [W]
-0x900f5 wordprocessor
-# [Ex]
-0x900f6 spreadsheet
-# [P]
-0x900f4 presentation
-# Other five (calculator, playpause, stop, mute and eject) are OK
-
-# Right side, from left to right
-# [e]
-0xc0223 www
-# "man"
-0x900f7 chat
-# "Y"
-0x900fb prog1
-# [X]
-0x900f8 close
-# "picture"
-0x900f9 graphicseditor
-# "two windows"
-0x900fd scale
-# "lock"
-0x900fc screenlock
diff --git a/keymaps/hewlett-packard b/keymaps/hewlett-packard
deleted file mode 100644
index 3f5f5ace6f..0000000000
--- a/keymaps/hewlett-packard
+++ /dev/null
@@ -1,12 +0,0 @@
-0x81 fn_esc
-0x89 battery # Fn+F8
-0x8A screenlock # Fn+F6
-0x8B camera
-0x8C media # music
-0x8E dvd
-0xB1 help
-0xB3 f23 # FIXME: Auto brightness
-0xD7 wlan
-0x92 brightnessdown # Fn+F7 (Fn+F9 on 6730b)
-0x97 brightnessup # Fn+F8 (Fn+F10 on 6730b)
-0xEE switchvideomode # Fn+F4
diff --git a/keymaps/hewlett-packard-2510p_2530p b/keymaps/hewlett-packard-2510p_2530p
deleted file mode 100644
index 41ad2e9b5a..0000000000
--- a/keymaps/hewlett-packard-2510p_2530p
+++ /dev/null
@@ -1,2 +0,0 @@
-0xD8 f23 # touchpad off
-0xD9 f22 # touchpad on
diff --git a/keymaps/hewlett-packard-compaq_elitebook b/keymaps/hewlett-packard-compaq_elitebook
deleted file mode 100644
index 42007c5483..0000000000
--- a/keymaps/hewlett-packard-compaq_elitebook
+++ /dev/null
@@ -1,2 +0,0 @@
-0x88 presentation
-0xD9 help # I key (high keycode: "info")
diff --git a/keymaps/hewlett-packard-hdx9494nr b/keymaps/hewlett-packard-hdx9494nr
deleted file mode 100644
index 39e8b4c9f7..0000000000
--- a/keymaps/hewlett-packard-hdx9494nr
+++ /dev/null
@@ -1,3 +0,0 @@
-0xB2 www # Fn+F3
-0xD8 f23 # touchpad off
-0xD9 f22 # touchpad on
diff --git a/keymaps/hewlett-packard-pavilion b/keymaps/hewlett-packard-pavilion
deleted file mode 100644
index 60d1191106..0000000000
--- a/keymaps/hewlett-packard-pavilion
+++ /dev/null
@@ -1,3 +0,0 @@
-0x88 media # FIXME: quick play
-0xD8 f23 # touchpad off
-0xD9 f22 # touchpad on
diff --git a/keymaps/hewlett-packard-presario-2100 b/keymaps/hewlett-packard-presario-2100
deleted file mode 100644
index 1df39dcbd2..0000000000
--- a/keymaps/hewlett-packard-presario-2100
+++ /dev/null
@@ -1,3 +0,0 @@
-0xF0 help
-0xF1 screenlock
-0xF3 search
diff --git a/keymaps/hewlett-packard-tablet b/keymaps/hewlett-packard-tablet
deleted file mode 100644
index d19005ab90..0000000000
--- a/keymaps/hewlett-packard-tablet
+++ /dev/null
@@ -1,6 +0,0 @@
-0x82 prog2 # Funny Key
-0x83 prog1 # Q
-0x84 tab
-0x85 esc
-0x86 pageup
-0x87 pagedown
diff --git a/keymaps/hewlett-packard-tx2 b/keymaps/hewlett-packard-tx2
deleted file mode 100644
index 36a690fcf6..0000000000
--- a/keymaps/hewlett-packard-tx2
+++ /dev/null
@@ -1,3 +0,0 @@
-0xC2 media
-0xD8 f23 # Toggle touchpad button on tx2 (OFF)
-0xD9 f22 # Toggle touchpad button on tx2 (ON)
diff --git a/keymaps/hewlett-packard_elitebook-8440p b/keymaps/hewlett-packard_elitebook-8440p
deleted file mode 100644
index e0c2a1a859..0000000000
--- a/keymaps/hewlett-packard_elitebook-8440p
+++ /dev/null
@@ -1,5 +0,0 @@
-0x88 www
-0xA0 mute
-0xAE volumedown
-0xB0 volumeup
-0xEC mail
diff --git a/keymaps/hewlett-packard_elitebook-8460p b/keymaps/hewlett-packard_elitebook-8460p
deleted file mode 100644
index 59035f4005..0000000000
--- a/keymaps/hewlett-packard_elitebook-8460p
+++ /dev/null
@@ -1,3 +0,0 @@
-0xF8 wlan # Wireless HW switch button
-0xB3 prog1 # Fn+F11 - Ambient Light Sensor button
-0xB1 prog2 # Fn+ESC - System information button
diff --git a/keymaps/ibm-thinkpad-usb-keyboard-trackpoint b/keymaps/ibm-thinkpad-usb-keyboard-trackpoint
deleted file mode 100644
index 027e50bf88..0000000000
--- a/keymaps/ibm-thinkpad-usb-keyboard-trackpoint
+++ /dev/null
@@ -1,7 +0,0 @@
-0x900f0 screenlock
-0x900f1 wlan
-0x900f2 switchvideomode
-0x900f3 suspend
-0x900f4 brightnessup
-0x900f5 brightnessdown
-0x900f8 zoom
diff --git a/keymaps/inventec-symphony_6.0_7.0 b/keymaps/inventec-symphony_6.0_7.0
deleted file mode 100644
index 4a8b4ba5a7..0000000000
--- a/keymaps/inventec-symphony_6.0_7.0
+++ /dev/null
@@ -1,2 +0,0 @@
-0xF3 prog2
-0xF4 prog1
diff --git a/keymaps/lenovo-3000 b/keymaps/lenovo-3000
deleted file mode 100644
index 7973369a9d..0000000000
--- a/keymaps/lenovo-3000
+++ /dev/null
@@ -1,5 +0,0 @@
-0x8B switchvideomode # Fn+F7 video
-0x96 wlan # Fn+F5 wireless
-0x97 sleep # Fn+F4 suspend
-0x98 suspend # Fn+F12 hibernate
-0xB4 prog1 # Lenovo Care
diff --git a/keymaps/lenovo-ideapad b/keymaps/lenovo-ideapad
deleted file mode 100644
index 0de16466b4..0000000000
--- a/keymaps/lenovo-ideapad
+++ /dev/null
@@ -1,8 +0,0 @@
-# Key codes observed on S10-3, assumed valid on other IdeaPad models
-0x81 rfkill # does nothing in BIOS
-0x83 display_off # BIOS toggles screen state
-0xB9 brightnessup # does nothing in BIOS
-0xBA brightnessdown # does nothing in BIOS
-0xF1 camera # BIOS toggles camera power
-0xf2 f21 # touchpad toggle (key alternately emits F2 and F3)
-0xf3 f21
diff --git a/keymaps/lenovo-thinkpad-usb-keyboard-trackpoint b/keymaps/lenovo-thinkpad-usb-keyboard-trackpoint
deleted file mode 100644
index 78701acbc7..0000000000
--- a/keymaps/lenovo-thinkpad-usb-keyboard-trackpoint
+++ /dev/null
@@ -1,13 +0,0 @@
-0x90012 screenlock # Fn+F2
-0x90013 battery # Fn+F3
-0x90014 wlan # Fn+F5
-0x90016 switchvideomode # Fn+F7
-0x90017 f21 # Fn+F8 touchpad toggle
-0x90019 suspend # Fn+F12
-0x9001A brightnessup # Fn+Home
-0x9001B brightnessdown # Fn+End
-0x9001D zoom # Fn+Space
-0x90011 prog1 # ThinkVantage button
-
-0x90015 camera # Fn+F6 headset/camera VoIP key ??
-0x90010 f20 # Microphone mute button; should be micmute, but see https://mail.gnome.org/archives/commits-list/2013-January/msg05822.html
diff --git a/keymaps/lenovo-thinkpad_x200_tablet b/keymaps/lenovo-thinkpad_x200_tablet
deleted file mode 100644
index f22ec65a5b..0000000000
--- a/keymaps/lenovo-thinkpad_x200_tablet
+++ /dev/null
@@ -1,6 +0,0 @@
-0x5D menu
-0x63 fn
-0x66 screenlock
-0x67 cyclewindows # bezel circular arrow
-0x68 setup # bezel setup / menu
-0x6c direction # rotate screen
diff --git a/keymaps/lenovo-thinkpad_x6_tablet b/keymaps/lenovo-thinkpad_x6_tablet
deleted file mode 100644
index 49c5f64f4c..0000000000
--- a/keymaps/lenovo-thinkpad_x6_tablet
+++ /dev/null
@@ -1,8 +0,0 @@
-0x6C f21 # rotate
-0x68 screenlock # screenlock
-0x6B esc # escape
-0x6D right # right on d-pad
-0x6E left # left on d-pad
-0x71 up # up on d-pad
-0x6F down # down on d-pad
-0x69 enter # enter on d-pad
diff --git a/keymaps/lg-x110 b/keymaps/lg-x110
deleted file mode 100644
index bbc29a13e9..0000000000
--- a/keymaps/lg-x110
+++ /dev/null
@@ -1,12 +0,0 @@
-0xA0 mute # Fn+F9
-0xAE volumedown # Fn+Left
-0xAF search # Fn+F3
-0xB0 volumeup # Fn+Right
-0xB1 battery # Fn+F10 Info
-0xB3 suspend # Fn+F12
-0xDF sleep # Fn+F4
-# 0xE2 bluetooth # satellite dish2
-0xE4 f21 # Fn+F5 Touchpad toggle
-0xF6 wlan # Fn+F6
-0xF7 reserved # Fn+Down brightness down
-0xF8 reserved # Fn+Up brightness up
diff --git a/keymaps/logitech-usb b/keymaps/logitech-usb
deleted file mode 100644
index b575aa7c47..0000000000
--- a/keymaps/logitech-usb
+++ /dev/null
@@ -1,6 +0,0 @@
-0x90001 shop # Shopping
-0x90002 config # iTouch
-0x90003 finance # Finance
-0x90004 prog1 # My Sites
-0x90005 prog2 # Community
-0xC0183 media # Media
diff --git a/keymaps/logitech-wave b/keymaps/logitech-wave
deleted file mode 100644
index 781dbe26f7..0000000000
--- a/keymaps/logitech-wave
+++ /dev/null
@@ -1,16 +0,0 @@
-0x9001C scale # expo
-0x9001F zoomout # zoom out
-0x90020 zoomin # zoom in
-0x9003D prog1 # gadget
-0x90005 camera # camera
-0x90018 media # media center
-0x90041 wordprocessor # Fn+F1 (Word)
-0x90042 spreadsheet # Fn+F2 (Excel)
-0x90043 calendar # Fn+F3 (calendar)
-0x90044 prog2 # Fn+F4 (program a)
-0x90045 prog3 # Fn+F5 (program b)
-0x90046 prog4 # Fn+F6 (program c)
-0x90048 messenger # Fn+F8 (MSN messenger)
-0x9002D find # Fn+F10 (search www)
-0x9004B search # Fn+F11 (search PC)
-0x9004C ejectclosecd # Fn+F12 (eject)
diff --git a/keymaps/logitech-wave-cordless b/keymaps/logitech-wave-cordless
deleted file mode 100644
index b40c4dbff7..0000000000
--- a/keymaps/logitech-wave-cordless
+++ /dev/null
@@ -1,15 +0,0 @@
-0xD4 zoomin
-0xCC zoomout
-0xC0183 media
-0xC1005 camera
-0xC101F zoomout
-0xC1020 zoomin
-0xC1041 wordprocessor
-0xC1042 spreadsheet
-0xC1043 calendar
-0xC1044 prog2 # Fn+F4 (program a)
-0xC1045 prog3 # Fn+F5 (program b)
-0xC1046 prog4 # Fn+F6 (program c)
-0xC1048 messenger
-0xC104A find # Fn+F10 (search www)
-0xC104C ejectclosecd
diff --git a/keymaps/logitech-wave-pro-cordless b/keymaps/logitech-wave-pro-cordless
deleted file mode 100644
index e7aa02206c..0000000000
--- a/keymaps/logitech-wave-pro-cordless
+++ /dev/null
@@ -1,12 +0,0 @@
-0xC01B6 camera
-0xC0183 media
-0xC0184 wordprocessor
-0xC0186 spreadsheet
-0xC018E calendar
-0xC0223 homepage
-0xC01BC messenger
-0xC018A mail
-0xC0221 search
-0xC00B8 ejectcd
-0xC022D zoomin
-0xC022E zoomout
diff --git a/keymaps/maxdata-pro_7000 b/keymaps/maxdata-pro_7000
deleted file mode 100644
index 0d5bbf3ce5..0000000000
--- a/keymaps/maxdata-pro_7000
+++ /dev/null
@@ -1,9 +0,0 @@
-0x97 prog2
-0x9F prog1
-0xA0 mute # Fn+F5
-0x82 www
-0xEC email
-0xAE volumedown # Fn+Down
-0xB0 volumeup # Fn+Up
-0xDF suspend # Fn+F2
-0xF5 help
diff --git a/keymaps/medion-fid2060 b/keymaps/medion-fid2060
deleted file mode 100644
index 75b1647e43..0000000000
--- a/keymaps/medion-fid2060
+++ /dev/null
@@ -1,2 +0,0 @@
-0x6B channeldown # Thottle Down
-0x6D channelup # Thottle Up
diff --git a/keymaps/medionnb-a555 b/keymaps/medionnb-a555
deleted file mode 100644
index b69618308b..0000000000
--- a/keymaps/medionnb-a555
+++ /dev/null
@@ -1,4 +0,0 @@
-0x63 www # N button
-0x66 prog1 # link 1 button
-0x67 email # envelope button
-0x69 prog2 # link 2 button
diff --git a/keymaps/micro-star b/keymaps/micro-star
deleted file mode 100644
index c283cde8bb..0000000000
--- a/keymaps/micro-star
+++ /dev/null
@@ -1,13 +0,0 @@
-0xA0 mute # Fn+F9
-0xAE volumedown # Fn+F7
-0xB0 volumeup # Fn+F8
-0xB2 www # e button
-0xDF sleep # Fn+F12
-0xE2 bluetooth # satellite dish2
-0xE4 f21 # Fn+F3 Touchpad disable
-0xEC email # envelope button
-0xEE camera # Fn+F6 camera disable
-0xF6 wlan # satellite dish1
-0xF7 brightnessdown # Fn+F4
-0xF8 brightnessup # Fn+F5
-0xF9 search
diff --git a/keymaps/module-asus-w3j b/keymaps/module-asus-w3j
deleted file mode 100644
index 773e0b3e82..0000000000
--- a/keymaps/module-asus-w3j
+++ /dev/null
@@ -1,11 +0,0 @@
-0x41 nextsong
-0x45 playpause
-0x43 stopcd
-0x40 previoussong
-0x4C ejectclosecd
-0x32 mute
-0x31 volumedown
-0x30 volumeup
-0x5D wlan
-0x7E bluetooth
-0x8A media # high keycode: "tv"
diff --git a/keymaps/module-ibm b/keymaps/module-ibm
deleted file mode 100644
index ee61b6cf3b..0000000000
--- a/keymaps/module-ibm
+++ /dev/null
@@ -1,16 +0,0 @@
-0x01 battery # Fn+F2
-0x02 screenlock # Fn+F3
-0x03 sleep # Fn+F4
-0x04 wlan # Fn+F5
-0x06 switchvideomode # Fn+F7
-0x07 zoom # Fn+F8 screen expand
-0x08 f24 # Fn+F9 undock
-0x0B suspend # Fn+F12
-0x0F brightnessup # Fn+Home
-0x10 brightnessdown # Fn+End
-0x11 kbdillumtoggle # Fn+PgUp - ThinkLight
-0x13 zoom # Fn+Space
-0x14 volumeup
-0x15 volumedown
-0x16 mute
-0x17 prog1 # ThinkPad/ThinkVantage button (high keycode: "vendor")
diff --git a/keymaps/module-lenovo b/keymaps/module-lenovo
deleted file mode 100644
index ed31899d0f..0000000000
--- a/keymaps/module-lenovo
+++ /dev/null
@@ -1,17 +0,0 @@
-0x1 screenlock # Fn+F2
-0x2 battery # Fn+F3
-0x3 sleep # Fn+F4
-0x4 wlan # Fn+F5
-0x6 switchvideomode # Fn+F7
-0x7 f21 # Fn+F8 touchpadtoggle
-0x8 f24 # Fn+F9 undock
-0xB suspend # Fn+F12
-0xF brightnessup # Fn+Home
-0x10 brightnessdown # Fn+End
-0x11 kbdillumtoggle # Fn+PgUp - ThinkLight
-0x13 zoom # Fn+Space
-0x14 volumeup
-0x15 volumedown
-0x16 mute
-0x17 prog1 # ThinkPad/ThinkVantage button (high keycode: "vendor")
-0x1A f20 # Microphone mute button; should be micmute, but see https://mail.gnome.org/archives/commits-list/2013-January/msg05822.html
diff --git a/keymaps/module-sony b/keymaps/module-sony
deleted file mode 100644
index 5d3742b463..0000000000
--- a/keymaps/module-sony
+++ /dev/null
@@ -1,8 +0,0 @@
-0x06 mute # Fn+F2
-0x07 volumedown # Fn+F3
-0x08 volumeup # Fn+F4
-0x09 brightnessdown # Fn+F5
-0x0A brightnessup # Fn+F6
-0x0B switchvideomode # Fn+F7
-0x0E zoom # Fn+F10
-0x10 suspend # Fn+F12
diff --git a/keymaps/module-sony-old b/keymaps/module-sony-old
deleted file mode 100644
index 596a34258a..0000000000
--- a/keymaps/module-sony-old
+++ /dev/null
@@ -1,2 +0,0 @@
-0x06 battery
-0x07 mute
diff --git a/keymaps/module-sony-vgn b/keymaps/module-sony-vgn
deleted file mode 100644
index cb4ce33717..0000000000
--- a/keymaps/module-sony-vgn
+++ /dev/null
@@ -1,8 +0,0 @@
-0x00 brightnessdown # Fn+F5
-0x10 brightnessup # Fn+F6
-0x11 switchvideomode # Fn+F7
-0x12 zoomout
-0x14 zoomin
-0x15 suspend # Fn+F12
-0x17 prog1
-0x20 media
diff --git a/keymaps/module-sony-vpc b/keymaps/module-sony-vpc
deleted file mode 100644
index 1b52779535..0000000000
--- a/keymaps/module-sony-vpc
+++ /dev/null
@@ -1,4 +0,0 @@
-# 0x05 touchpad_toggle # fn_f1 -> KEY_TOUCHPAD_TOGGLE
-0x05 f21 # fn_f1 -> KEY_F21 (The actual touchpad toggle)
-0x0d zoomout # fn_f9
-0x0e zoomin # fn_f10
diff --git a/keymaps/olpc-xo b/keymaps/olpc-xo
deleted file mode 100644
index 0fa497211a..0000000000
--- a/keymaps/olpc-xo
+++ /dev/null
@@ -1,74 +0,0 @@
-0x59 fn
-0x81 fn_esc
-0xF9 camera
-0xF8 sound # Fn+CAMERA = Mic
-
-
-# Function key mappings, as per
-# http://dev.laptop.org/ticket/10213#comment:20
-#
-# Unmodified F1-F8 produce F1-F8, so no remap necessary.
-# Unmodified F9-F12 control brightness and volume.
-0x43 brightnessdown
-0x44 brightnessup
-0x57 volumedown
-0x58 volumeup
-
-# Fn-modified fkeys all produce the unmodified version of the key.
-0xBB f1
-0xBC f2
-0xBD f3
-0xBE f4
-0xBF f5
-0xC0 f6
-0xC1 f7
-0xC2 f8
-0xC3 f9
-0xC4 f10
-0xD7 f11
-0xD8 f12
-
-
-# Using F13-F21 for the .5 F keys right now.
-0xF7 f13
-0xF6 f14
-0xF5 f15
-0xF4 f16
-0xF3 f17
-0xF2 f18
-0xF1 f19
-0xF0 f20
-0xEF f21
-
-0xEE chat
-0xE4 chat # Just mapping Fn+Chat to Chat for now
-0xDD menu # Frame
-0xDA prog1 # Fn+Frame
-
-# The Fn of some keys is other keys
-0xD3 delete
-0xD2 insert
-0xC9 pageup
-0xD1 pagedown
-0xC7 home
-0xCF end
-
-# Language key - don't ask what they are doing as KEY_HP
-0x73 hp
-0x7E hp
-
-0xDB leftmeta # left grab
-0xDC rightmeta # right grab
-0x85 rightmeta # Right grab releases on a different scancode
-0xD6 kbdillumtoggle # Fn+Space
-0x69 switchvideomode # Brightness key
-
-# Game keys
-0x65 kp8 # up
-0x66 kp2 # down
-0x67 kp4 # left
-0x68 kp6 # right
-0xE5 kp9 # pgup
-0xE6 kp3 # pgdn
-0xE7 kp7 # home
-0xE8 kp1 # end
diff --git a/keymaps/onkyo b/keymaps/onkyo
deleted file mode 100644
index 8fc4cffa92..0000000000
--- a/keymaps/onkyo
+++ /dev/null
@@ -1,14 +0,0 @@
-0xA0 mute # Fn+D
-0xAE volumedown # Fn+F
-0xB0 volumeup # Fn+G
-0xDF sleep # Fn+W
-0xE0 bluetooth # Fn+H
-0xE2 cyclewindows # Fn+Esc
-0xEE battery # Fn+Q
-0xF0 media # Fn+R
-0xF5 switchvideomode # Fn+E
-0xF6 camera # Fn+T
-0xF7 f21 # Fn+Y (touchpad toggle)
-0xF8 brightnessup # Fn+S
-0xF9 brightnessdown # Fn+A
-0xFB wlan # Fn+J
diff --git a/keymaps/oqo-model2 b/keymaps/oqo-model2
deleted file mode 100644
index b7f4851abe..0000000000
--- a/keymaps/oqo-model2
+++ /dev/null
@@ -1,5 +0,0 @@
-0x8E wlan
-0xF0 switchvideomode
-0xF1 mute
-0xF2 volumedown
-0xF3 volumeup
diff --git a/keymaps/samsung-other b/keymaps/samsung-other
deleted file mode 100644
index d950c2cbd9..0000000000
--- a/keymaps/samsung-other
+++ /dev/null
@@ -1,14 +0,0 @@
-0x74 prog1 # User key
-0x75 www
-0x78 mail
-0x82 switchvideomode # Fn+F4 CRT/LCD (high keycode: "displaytoggle")
-0x83 battery # Fn+F2
-0x84 prog1 # Fn+F5 backlight on/off
-0x86 wlan # Fn+F9
-0x88 brightnessup # Fn+Up
-0x89 brightnessdown # Fn+Down
-0xB1 prog2 # Fn+F7 run Samsung Magic Doctor (keypressed event is generated twice)
-0xB3 prog3 # Fn+F8 switch power mode (battery/dynamic/performance)
-0xB4 wlan # Fn+F9 (X60P)
-0xF7 f22 # Fn+F10 Touchpad on
-0xF9 f23 # Fn+F10 Touchpad off
diff --git a/keymaps/samsung-series-3 b/keymaps/samsung-series-3
deleted file mode 100644
index 303a428b47..0000000000
--- a/keymaps/samsung-series-3
+++ /dev/null
@@ -1,3 +0,0 @@
-0xCE prog1 # Fn+F1 launch control setting
-0xB3 prog2 # Fn+F11 performance mode
-0xD5 wlan # Fn+F12 Wi-Fi toggle
diff --git a/keymaps/samsung-series-9 b/keymaps/samsung-series-9
deleted file mode 100644
index c0712f02a0..0000000000
--- a/keymaps/samsung-series-9
+++ /dev/null
@@ -1,5 +0,0 @@
-0x96 kbdillumup # Fn+F8 keyboard backlight up
-0x97 kbdillumdown # Fn+F7 keyboard backlight down
-0xD5 wlan # Fn+F12 Wi-Fi toggle
-0xCE prog1 # Fn+F1 performance mode
-0x8D prog2 # Fn+F6 battery life extender
diff --git a/keymaps/samsung-sq1us b/keymaps/samsung-sq1us
deleted file mode 100644
index ea2141ef84..0000000000
--- a/keymaps/samsung-sq1us
+++ /dev/null
@@ -1,7 +0,0 @@
-0xD4 menu
-0xD8 f1
-0xD9 f10
-0xD6 f3
-0xD7 f9
-0xE4 f5
-0xEE f11
diff --git a/keymaps/samsung-sx20s b/keymaps/samsung-sx20s
deleted file mode 100644
index 9d954ee415..0000000000
--- a/keymaps/samsung-sx20s
+++ /dev/null
@@ -1,4 +0,0 @@
-0x74 mute
-0x75 mute
-0x77 f22 # Touchpad on
-0x79 f23 # Touchpad off
diff --git a/keymaps/toshiba-satellite_a100 b/keymaps/toshiba-satellite_a100
deleted file mode 100644
index 22007be71b..0000000000
--- a/keymaps/toshiba-satellite_a100
+++ /dev/null
@@ -1,2 +0,0 @@
-0xA4 stopcd
-0xB2 www
diff --git a/keymaps/toshiba-satellite_a110 b/keymaps/toshiba-satellite_a110
deleted file mode 100644
index 1429409351..0000000000
--- a/keymaps/toshiba-satellite_a110
+++ /dev/null
@@ -1,10 +0,0 @@
-0x92 stop
-0x93 www
-0x94 media
-0x9E f22 # Touchpad on
-0x9F f23 # Touchpad off
-0xB9 nextsong
-0xD9 brightnessup
-0xEE screenlock
-0xF4 previoussong
-0xF7 playpause
diff --git a/keymaps/toshiba-satellite_m30x b/keymaps/toshiba-satellite_m30x
deleted file mode 100644
index 26e0bbd939..0000000000
--- a/keymaps/toshiba-satellite_m30x
+++ /dev/null
@@ -1,6 +0,0 @@
-0xef brightnessdown
-0xd9 brightnessup
-0xee screenlock
-0x93 media
-0x9e f22 # touchpad enable
-0x9f f23 # touchpad disable
diff --git a/keymaps/zepto-znote b/keymaps/zepto-znote
deleted file mode 100644
index cf72fda47b..0000000000
--- a/keymaps/zepto-znote
+++ /dev/null
@@ -1,11 +0,0 @@
-0x93 switchvideomode # Fn+F3 Toggle Video Output
-0x95 brightnessdown # Fn+F4 Brightness Down
-0x91 brightnessup # Fn+F5 Brightness Up
-0xA5 f23 # Fn+F6 Disable Touchpad
-0xA6 f22 # Fn+F6 Enable Touchpad
-0xA7 bluetooth # Fn+F10 Enable Bluetooth
-0XA9 bluetooth # Fn+F10 Disable Bluetooth
-0xF1 wlan # RF Switch Off
-0xF2 wlan # RF Switch On
-0xF4 prog1 # P1 Button
-0xF3 prog2 # P2 Button
diff --git a/rules/60-keyboard.rules b/rules/60-keyboard.rules
new file mode 100644
index 0000000000..4e0f3663f6
--- /dev/null
+++ b/rules/60-keyboard.rules
@@ -0,0 +1,22 @@
+# do not edit this file, it will be overwritten on update
+
+ACTION!="add", GOTO="keyboard_end"
+KERNEL!="event*", GOTO="keyboard_end"
+ENV{ID_INPUT_KEY}=="", GOTO="keyboard_end"
+
+# ignore all bluetooth devices
+SUBSYSTEMS=="bluetooth", GOTO="keyboard_end"
+
+# import key mapping for USB device
+SUBSYSTEMS=="usb", IMPORT{builtin}="hwdb --subsystem=usb --lookup-prefix=keyboard:", \
+ RUN{builtin}+="keyboard", GOTO="keyboard_end"
+
+# import key mapping for AT keyboard from DMI data
+DRIVERS=="atkbd", IMPORT{builtin}="hwdb 'keyboard:$attr{[dmi/id]modalias}'", \
+ RUN{builtin}+="keyboard", GOTO="keyboard_end"
+
+# import key mapping for platform input device
+KERNELS=="input*", IMPORT{builtin}="hwdb 'keyboard:name:$attr{name}:$attr{[dmi/id]modalias}'", \
+ RUN{builtin}+="keyboard", GOTO="keyboard_end"
+
+LABEL="keyboard_end"
diff --git a/rules/Makefile.am b/rules/Makefile.am
index c3f2aa8287..abc290111e 100644
--- a/rules/Makefile.am
+++ b/rules/Makefile.am
@@ -39,8 +39,7 @@ endif
if ENABLE_KEYMAP
dist_udevrules_DATA += \
- 95-keymap.rules \
- 95-keyboard-force-release.rules
+ 60-keyboard.rules
endif
install-data-local:
diff --git a/src/Makefile.am b/src/Makefile.am
index dcf5b54336..d6079f051b 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -18,8 +18,3 @@ if ENABLE_GUDEV
SUBDIRS += \
gudev
endif
-
-if ENABLE_KEYMAP
-SUBDIRS += \
- keymap
-endif
diff --git a/src/keymap/Makefile.am b/src/keymap/Makefile.am
deleted file mode 100644
index dcc29e9b65..0000000000
--- a/src/keymap/Makefile.am
+++ /dev/null
@@ -1,58 +0,0 @@
-ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
-
-AM_CPPFLAGS = \
- -I $(top_srcdir)/src/libudev \
- -I $(top_srcdir)/src/udev \
- -DUDEV_LIBEXEC_DIR=\"$(udevlibexecdir)\"
-
-udevlibexec_PROGRAMS = \
- keymap
-
-keymap_SOURCES = \
- keymap.c
-
-keymap_CPPFLAGS = \
- $(AM_CPPFLAGS)
-
-keymap_LDADD = \
- $(top_builddir)/src/udev/libudev-core.la
-
-nodist_keymap_SOURCES = \
- keys-from-name.h \
- keys-to-name.h
-
-BUILT_SOURCES = \
- $(nodist_keymap_SOURCES)
-
-dist_doc_DATA = \
- README.keymap.txt
-
-dist_udevlibexec_SCRIPTS = \
- findkeyboards \
- keyboard-force-release.sh
-
-TESTS = \
- check-keymaps.sh
-
-CLEANFILES = \
- keys.txt \
- keys-from-name.gperf \
- keyboard-force-release.sh \
- $(BUILT_SOURCES)
-
-EXTRA_DIST = \
- check-keymaps.sh \
- keyboard-force-release.sh.in
-
-keys.txt: Makefile
- $(AM_V_at)$(MKDIR_P) $(dir $@)
- $(AM_V_GEN)$(CPP) $(CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) -dM -include linux/input.h - < /dev/null | $(AWK) '/^#define[ \t]+KEY_[^ ]+[ \t]+[0-9]/ { if ($$2 != "KEY_MAX") { print $$2 } }' | sed 's/^KEY_COFFEE$$/KEY_SCREENLOCK/' > $@
-
-keys-from-name.gperf: keys.txt Makefile
- $(AM_V_GEN)$(AWK) 'BEGIN{ print "struct key { const char* name; unsigned short id; };"; print "%null-strings"; print "%%";} { print $$1 ", " $$1 }' < $< > $@
-
-keys-from-name.h: keys-from-name.gperf Makefile
- $(AM_V_GEN)$(GPERF) -L ANSI-C -t --ignore-case -N lookup_key -H hash_key_name -p -C < $< > $@
-
-keys-to-name.h: keys.txt Makefile
- $(AM_V_GEN)$(AWK) 'BEGIN{ print "const char* const key_names[KEY_CNT] = { "} { print "[" $$1 "] = \"" $$1 "\"," } END{print "};"}' < $< > $@
diff --git a/src/keymap/README.keymap.txt b/src/keymap/README.keymap.txt
deleted file mode 100644
index 2cf2a4e88c..0000000000
--- a/src/keymap/README.keymap.txt
+++ /dev/null
@@ -1,97 +0,0 @@
-= The udev keymap tool =
-
-== Introduction ==
-
-This udev extension configures computer model specific key mappings. This is
-particularly necessary for the non-standard extra keys found on many laptops,
-such as "brightness up", "next song", "www browser", or "suspend". Often these
-are accessed with the Fn key.
-
-Every key produces a "scan code", which is highly vendor/model specific for the
-nonstandard keys. This tool maintains mappings for these scan codes to standard
-"key codes", which denote the "meaning" of the key. The key codes are defined
-in /usr/include/linux/input.h.
-
-If some of your keys on your keyboard are not working at all, or produce the
-wrong effect, then a very likely cause of this is that the scan code -> key
-code mapping is incorrect on your computer.
-
-== Structure ==
-
-udev-keymap consists of the following parts:
-
- keymaps/*:: mappings of scan codes to key code names
-
- 95-keymap.rules:: udev rules for mapping system vendor/product names and
- input module names to one of the keymaps above
-
- keymap:: manipulate an evdev input device:
- * write a key map file into a device (used by udev rules)
- * dump current scan → key code mapping
- * interactively display scan and key codes of pressed keys
-
- findkeyboards:: display evdev input devices which belong to actual keyboards,
- i. e. those suitable for the keymap program
-
-== Fixing broken keys ==
-
-In order to make a broken key work on your system and send it back to upstream
-for inclusion you need to do the following steps:
-
- 1. Find the keyboard device.
-
- Run /usr/lib/udev/findkeyboards. This should always give you an "AT
- keyboard" and possibly a "module". Some laptops (notably Thinkpads, Sonys, and
- Acers) have multimedia/function keys on a separate input device instead of the
- primary keyboard. The keyboard device should have a name like "input/event3".
- In the following commands, the name will be written as "input/eventX" (replace
- X with the appropriate number).
-
- 2. Find broken scan codes:
-
- sudo /usr/lib/udev/keymap -i input/eventX
-
- Press all multimedia/function keys and check if the key name that gets printed
- out is plausible. If it is unknown or wrong, write down the scan code (looks
- like "0x1E") and the intended functionality of this key. Look in
- /usr/include/linux/input.h for an available KEY_XXXXX constant which most
- closely approximates this functionality and write it down as the new key code.
-
- For example, you might press a key labeled "web browser" which currently
- produces "unknown". Note down this:
-
- 0x1E www # Fn+F2 web browser
-
- Repeat that for all other keys. Write the resulting list into a file. Look at
- /usr/lib/udev/keymaps/ for existing key map files and make sure that you use the
- same structure.
-
- If the key only ever works once and then your keyboard (or the entire desktop)
- gets stuck for a long time, then it is likely that the BIOS fails to send a
- corresponding "key release" event after the key press event. Please note down
- this case as well, as it can be worked around in
- /usr/lib/udev/keymaps/95-keyboard-force-release.rules .
-
- 3. Find out your system vendor and product:
-
- cat /sys/class/dmi/id/sys_vendor
- cat /sys/class/dmi/id/product_name
-
- 4. Generate a device dump with "udevadm info --export-db > /tmp/udev-db.txt".
-
- 6. Send the system vendor/product names, the key mapping from step 2,
- and /tmp/udev-db.txt from step 4 to the linux-hotplug@vger.kernel.org mailing
- list, so that they can be included in the next release.
-
-For local testing, copy your map file to /usr/lib/udev/keymaps/ with an appropriate
-name, and add an appropriate udev rule to /usr/lib/udev/rules.d/95-keymap.rules:
-
- * If you selected an "AT keyboard", add the rule to the section after
- 'LABEL="keyboard_vendorcheck"'.
-
- * If you selected a "module", add the rule to the top section where the
- "ThinkPad Extra Buttons" are.
-
-== Author ==
-
-keymap is written and maintained by Martin Pitt <martin.pitt@ubuntu.com>.
diff --git a/src/keymap/check-keymaps.sh.in b/src/keymap/check-keymaps.sh.in
deleted file mode 100644
index a62b48d4d5..0000000000
--- a/src/keymap/check-keymaps.sh.in
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/bin/bash
-
-# check that all key names in keymaps/* are known in <linux/input.h>
-# and that all key maps listed in the rules are valid and present in
-# Makefile.am
-
-top_srcdir=@top_srcdir@
-top_builddir=@top_builddir@
-
-SRCDIR=${1:-${top_srcdir}}
-BUILDDIR=${1:-${top_builddir}}
-KEYLIST=${2:-${BUILDDIR}/src/keymap/keys.txt}
-
-KEYMAPS_DIR=${SRCDIR}/keymaps
-KEYMAPS_LIST=$(ls ${KEYMAPS_DIR}/* | grep -v Makefile)
-RULES=${SRCDIR}/rules/95-keymap.rules
-
-[ -e "$KEYLIST" ] || {
- echo "need $KEYLIST please build first" >&2
- exit 1
-}
-
-missing=$(join -v 2 <(awk '{print tolower(substr($1,5))}' $KEYLIST | sort -u) \
- <(grep -hv '^#' ${KEYMAPS_LIST}| awk '{print $2}' | sort -u))
-[ -z "$missing" ] || {
- echo "ERROR: unknown key names in keymaps/*:" >&2
- echo "$missing" >&2
- exit 1
-}
-
-# check that all maps referred to in $RULES exist
-maps=$(sed -rn '/keymap \$name/ { s/^.*\$name ([^"[:space:]]+).*$/\1/; p }' $RULES)
-for m in $maps; do
- # ignore inline mappings
- [ "$m" = "${m#0x}" ] || continue
-
- [ -e ${KEYMAPS_DIR}/$m ] || {
- echo "ERROR: unknown map name in $RULES: $m" >&2
- exit 1
- }
- grep -q "$m\>" ${SRCDIR}/keymaps/Makefile.am || {
- echo "ERROR: map file $m is not added to Makefile.am" >&2
- exit 1
- }
-done
diff --git a/src/keymap/findkeyboards b/src/keymap/findkeyboards
deleted file mode 100755
index c6b50d12d0..0000000000
--- a/src/keymap/findkeyboards
+++ /dev/null
@@ -1,68 +0,0 @@
-#!/bin/sh -e
-# Find "real" keyboard devices and print their device path.
-# Author: Martin Pitt <martin.pitt@ubuntu.com>
-#
-# Copyright (C) 2009, Canonical Ltd.
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-
-# returns OK if $1 contains $2
-strstr() {
- [ "${1#*$2*}" != "$1" ]
-}
-
-# returns OK if $1 contains $2 at the beginning
-str_starts() {
- [ "${1#$2*}" != "$1" ]
-}
-
-str_line_starts() {
- while read a; do str_starts "$a" "$1" && return 0;done
- return 1;
-}
-
-# print a list of input devices which are keyboard-like
-keyboard_devices() {
- # standard AT keyboard
- for dev in `udevadm trigger --dry-run --verbose --property-match=ID_INPUT_KEYBOARD=1`; do
- env=`udevadm info --query=env --path=$dev`
- # filter out non-event devices, such as the parent input devices which have no devnode
- if ! echo "$env" | str_line_starts 'DEVNAME='; then
- continue
- fi
- walk=`udevadm info --attribute-walk --path=$dev`
- if strstr "$walk" 'DRIVERS=="atkbd"'; then
- echo -n 'AT keyboard: '
- elif echo "$env" | str_line_starts 'ID_USB_DRIVER=usbhid'; then
- echo -n 'USB keyboard: '
- else
- echo -n 'Unknown type: '
- fi
- udevadm info --query=name --path=$dev
- done
-
- # modules
- module=$(udevadm trigger --verbose --dry-run --subsystem-match=input --attr-match=name='*Extra Buttons')
- module="$module
- $(udevadm trigger --verbose --dry-run --subsystem-match=input --attr-match=name='*extra buttons')"
- module="$module
- $(udevadm trigger --verbose --dry-run --subsystem-match=input --attr-match=name='Sony Vaio Keys')"
- for m in $module; do
- for evdev in $m/event*/dev; do
- if [ -e "$evdev" ]; then
- echo -n 'module: '
- udevadm info --query=name --path=${evdev%%/dev}
- fi
- done
- done
-}
-
-keyboard_devices
diff --git a/src/keymap/keyboard-force-release.sh.in b/src/keymap/keyboard-force-release.sh.in
deleted file mode 100644
index b82674840f..0000000000
--- a/src/keymap/keyboard-force-release.sh.in
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/sh -e
-# read list of scancodes, convert hex to decimal and
-# append to the atkbd force_release sysfs attribute
-# $1 sysfs devpath for serioX
-# $2 file with scancode list (hex or dec)
-
-case "$2" in
- /*) scf="$2" ;;
- *) scf="@udevlibexecdir@/keymaps/force-release/$2" ;;
-esac
-
-read attr <"/sys/$1/force_release"
-while read scancode dummy; do
- case "$scancode" in
- \#*) ;;
- *)
- scancode=$(($scancode))
- attr="$attr${attr:+,}$scancode"
- ;;
- esac
-done <"$scf"
-echo "$attr" >"/sys/$1/force_release"
diff --git a/src/keymap/keymap.c b/src/keymap/keymap.c
deleted file mode 100644
index 793c53429f..0000000000
--- a/src/keymap/keymap.c
+++ /dev/null
@@ -1,453 +0,0 @@
-/*
- * keymap - dump keymap of an evdev device or set a new keymap from a file
- *
- * Based on keyfuzz by Lennart Poettering <mzqrovna@0pointer.net>
- * Adapted for udev-extras by Martin Pitt <martin.pitt@ubuntu.com>
- *
- * Copyright (C) 2006, Lennart Poettering
- * Copyright (C) 2009, Canonical Ltd.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdint.h>
-#include <ctype.h>
-#include <unistd.h>
-#include <errno.h>
-#include <limits.h>
-#include <fcntl.h>
-#include <getopt.h>
-#include <sys/ioctl.h>
-#include <linux/limits.h>
-#include <linux/input.h>
-
-static const struct key* lookup_key (const char *str, unsigned int len);
-
-#include "keys-from-name.h"
-#include "keys-to-name.h"
-#include "macro.h"
-#include "util.h"
-
-#define MAX_SCANCODES 1024
-
-static int evdev_open(const char *dev)
-{
- int fd;
- char fn[PATH_MAX];
-
- if (!startswith(dev, "/dev")) {
- snprintf(fn, sizeof(fn), "/dev/%s", dev);
- dev = fn;
- }
-
- if ((fd = open(dev, O_RDWR)) < 0) {
- fprintf(stderr, "error open('%s'): %m\n", dev);
- return -1;
- }
- return fd;
-}
-
-static int evdev_get_keycode(int fd, unsigned scancode, int e)
-{
- unsigned codes[2];
-
- codes[0] = scancode;
- if (ioctl(fd, EVIOCGKEYCODE, codes) < 0) {
- if (e && errno == EINVAL) {
- return -2;
- } else {
- fprintf(stderr, "EVIOCGKEYCODE for scan code 0x%x: %m\n", scancode);
- return -1;
- }
- }
- return codes[1];
-}
-
-static int evdev_set_keycode(int fd, unsigned scancode, int keycode)
-{
- unsigned codes[2];
-
- codes[0] = scancode;
- codes[1] = (unsigned) keycode;
-
- if (ioctl(fd, EVIOCSKEYCODE, codes) < 0) {
- fprintf(stderr, "EVIOCSKEYCODE: %m\n");
- return -1;
- }
- return 0;
-}
-
-static int evdev_driver_version(int fd, char *v, size_t l)
-{
- int version;
-
- if (ioctl(fd, EVIOCGVERSION, &version)) {
- fprintf(stderr, "EVIOCGVERSION: %m\n");
- return -1;
- }
-
- snprintf(v, l, "%i.%i.%i.", version >> 16, (version >> 8) & 0xff, version & 0xff);
- return 0;
-}
-
-static int evdev_device_name(int fd, char *n, size_t l)
-{
- if (ioctl(fd, EVIOCGNAME(l), n) < 0) {
- fprintf(stderr, "EVIOCGNAME: %m\n");
- return -1;
- }
- return 0;
-}
-
-/* Return a lower-case string with KEY_ prefix removed */
-static const char* format_keyname(const char* key) {
- static char result[101];
- const char* s;
- int len;
-
- for (s = key+4, len = 0; *s && len < 100; ++len, ++s)
- result[len] = tolower(*s);
- result[len] = '\0';
- return result;
-}
-
-static int dump_table(int fd) {
- char version[256], name[256];
- unsigned scancode;
- int r = -1;
-
- if (evdev_driver_version(fd, version, sizeof(version)) < 0)
- goto fail;
-
- if (evdev_device_name(fd, name, sizeof(name)) < 0)
- goto fail;
-
- printf("### evdev %s, driver '%s'\n", version, name);
-
- r = 0;
- for (scancode = 0; scancode < MAX_SCANCODES; scancode++) {
- int keycode;
-
- if ((keycode = evdev_get_keycode(fd, scancode, 1)) < 0) {
- if (keycode == -2)
- continue;
- r = -1;
- break;
- }
-
- if (keycode < KEY_MAX && key_names[keycode])
- printf("0x%03x %s\n", scancode, format_keyname(key_names[keycode]));
- else
- printf("0x%03x 0x%03x\n", scancode, keycode);
- }
-fail:
- return r;
-}
-
-static void set_key(int fd, const char* scancode_str, const char* keyname)
-{
- unsigned scancode;
- char *endptr;
- char t[105] = "KEY_UNKNOWN";
- const struct key *k;
-
- scancode = (unsigned) strtol(scancode_str, &endptr, 0);
- if (*endptr != '\0') {
- fprintf(stderr, "ERROR: Invalid scancode\n");
- exit(1);
- }
-
- snprintf(t, sizeof(t), "KEY_%s", keyname);
-
- if (!(k = lookup_key(t, strlen(t)))) {
- fprintf(stderr, "ERROR: Unknown key name '%s'\n", keyname);
- exit(1);
- }
-
- if (evdev_set_keycode(fd, scancode, k->id) < 0)
- fprintf(stderr, "setting scancode 0x%2X to key code %i failed\n",
- scancode, k->id);
- else
- printf("setting scancode 0x%2X to key code %i\n",
- scancode, k->id);
-}
-
-static int merge_table(int fd, FILE *f) {
- int r = 0;
- int line = 0;
-
- while (!feof(f)) {
- char s[256], *p;
- unsigned scancode;
- int new_keycode, old_keycode;
-
- if (!fgets(s, sizeof(s), f))
- break;
-
- line++;
- p = s+strspn(s, "\t ");
- if (*p == '#' || *p == '\n')
- continue;
-
- if (sscanf(p, "%i %i", &scancode, &new_keycode) != 2) {
- char t[105] = "KEY_UNKNOWN";
- const struct key *k;
-
- if (sscanf(p, "%i %100s", &scancode, t+4) != 2) {
- fprintf(stderr, "WARNING: Parse failure at line %i, ignoring.\n", line);
- r = -1;
- continue;
- }
-
- if (!(k = lookup_key(t, strlen(t)))) {
- fprintf(stderr, "WARNING: Unknown key '%s' at line %i, ignoring.\n", t, line);
- r = -1;
- continue;
- }
-
- new_keycode = k->id;
- }
-
-
- if ((old_keycode = evdev_get_keycode(fd, scancode, 0)) < 0) {
- r = -1;
- continue;
- }
-
- if (evdev_set_keycode(fd, scancode, new_keycode) < 0) {
- r = -1;
- continue;
- }
-
- if (new_keycode != old_keycode)
- fprintf(stderr, "Remapped scancode 0x%02x to 0x%02x (prior: 0x%02x)\n",
- scancode, new_keycode, old_keycode);
- }
-
- fclose(f);
- return r;
-}
-
-
-/* read one event; return 1 if valid */
-static int read_event(int fd, struct input_event* ev)
-{
- int ret;
- ret = read(fd, ev, sizeof(struct input_event));
-
- if (ret < 0) {
- perror("read");
- return 0;
- }
- if (ret != sizeof(struct input_event)) {
- fprintf(stderr, "did not get enough data for event struct, aborting\n");
- return 0;
- }
-
- return 1;
-}
-
-static void print_key(unsigned scancode, uint16_t keycode, int has_scan, int has_key)
-{
- const char *keyname;
-
- /* ignore key release events */
- if (has_key == 1)
- return;
-
- if (has_key == 0 && has_scan != 0) {
- fprintf(stderr, "got scan code event 0x%02X without a key code event\n",
- scancode);
- return;
- }
-
- if (has_scan != 0)
- printf("scan code: 0x%02X ", scancode);
- else
- printf("(no scan code received) ");
-
- keyname = key_names[keycode];
- if (keyname != NULL)
- printf("key code: %s\n", format_keyname(keyname));
- else
- printf("key code: %03X\n", keycode);
-}
-
-static void interactive(int fd)
-{
- struct input_event ev;
- unsigned last_scan = 0;
- uint16_t last_key = 0;
- int has_scan; /* boolean */
- int has_key; /* 0: none, 1: release, 2: press */
-
- /* grab input device */
- ioctl(fd, EVIOCGRAB, 1);
- puts("Press ESC to finish, or Control-C if this device is not your primary keyboard");
-
- has_scan = has_key = 0;
- while (read_event(fd, &ev)) {
- /* Drivers usually send the scan code first, then the key code,
- * then a SYN. Some drivers (like thinkpad_acpi) send the key
- * code first, and some drivers might not send SYN events, so
- * keep a robust state machine which can deal with any of those
- */
-
- if (ev.type == EV_MSC && ev.code == MSC_SCAN) {
- if (has_scan) {
- fputs("driver did not send SYN event in between key events; previous event:\n",
- stderr);
- print_key(last_scan, last_key, has_scan, has_key);
- has_key = 0;
- }
-
- last_scan = ev.value;
- has_scan = 1;
- /*printf("--- got scan %u; has scan %i key %i\n", last_scan, has_scan, has_key); */
- }
- else if (ev.type == EV_KEY) {
- if (has_key) {
- fputs("driver did not send SYN event in between key events; previous event:\n",
- stderr);
- print_key(last_scan, last_key, has_scan, has_key);
- has_scan = 0;
- }
-
- last_key = ev.code;
- has_key = 1 + ev.value;
- /*printf("--- got key %hu; has scan %i key %i\n", last_key, has_scan, has_key);*/
-
- /* Stop on ESC */
- if (ev.code == KEY_ESC && ev.value == 0)
- break;
- }
- else if (ev.type == EV_SYN) {
- /*printf("--- got SYN; has scan %i key %i\n", has_scan, has_key);*/
- print_key(last_scan, last_key, has_scan, has_key);
-
- has_scan = has_key = 0;
- }
-
- }
-
- /* release input device */
- ioctl(fd, EVIOCGRAB, 0);
-}
-
-_noreturn_ static void help(int error)
-{
- const char* h = "Usage: keymap <event device> [<map file>]\n"
- " keymap <event device> scancode keyname [...]\n"
- " keymap -i <event device>\n";
- if (error) {
- fputs(h, stderr);
- exit(2);
- } else {
- fputs(h, stdout);
- exit(0);
- }
-}
-
-int main(int argc, char **argv)
-{
- static const struct option options[] = {
- { "help", no_argument, NULL, 'h' },
- { "interactive", no_argument, NULL, 'i' },
- {}
- };
- int fd = -1;
- int opt_interactive = 0;
- int i;
-
- while (1) {
- int option;
-
- option = getopt_long(argc, argv, "hi", options, NULL);
- if (option == -1)
- break;
-
- switch (option) {
- case 'h':
- help(0);
-
- case 'i':
- opt_interactive = 1;
- break;
- default:
- return 1;
- }
- }
-
- if (argc < optind+1)
- help (1);
-
- if ((fd = evdev_open(argv[optind])) < 0)
- return 3;
-
- /* one argument (device): dump or interactive */
- if (argc == optind+1) {
- if (opt_interactive)
- interactive(fd);
- else
- dump_table(fd);
- return 0;
- }
-
- /* two arguments (device, mapfile): set map file */
- if (argc == optind+2) {
- const char *filearg = argv[optind+1];
- if (strchr(filearg, '/')) {
- /* Keymap file argument is a path */
- FILE *f = fopen(filearg, "re");
- if (f)
- merge_table(fd, f);
- else
- perror(filearg);
- } else {
- /* Keymap file argument is a filename */
- /* Open override file if present, otherwise default file */
- char keymap_path[PATH_MAX];
- FILE *f;
-
- snprintf(keymap_path, sizeof(keymap_path), "/etc/udev/keymaps/%s", filearg);
- f = fopen(keymap_path, "re");
- if (f) {
- merge_table(fd, f);
- } else {
- snprintf(keymap_path, sizeof(keymap_path), UDEV_LIBEXEC_DIR "/keymaps/%s", filearg);
- f = fopen(keymap_path, "re");
- if (f)
- merge_table(fd, f);
- else
- perror(keymap_path);
- }
- }
- return 0;
- }
-
- /* more arguments (device, scancode/keyname pairs): set keys directly */
- if ((argc - optind - 1) % 2 == 0) {
- for (i = optind+1; i < argc; i += 2)
- set_key(fd, argv[i], argv[i+1]);
- return 0;
- }
-
- /* invalid number of arguments */
- help(1);
- return 1; /* not reached */
-}
diff --git a/src/udev/Makefile.am b/src/udev/Makefile.am
index 2bceb0c698..4a5f5fefa5 100644
--- a/src/udev/Makefile.am
+++ b/src/udev/Makefile.am
@@ -117,6 +117,41 @@ EXTRA_DIST = \
CLEANFILES = \
udev.pc
+if ENABLE_KEYMAP
+AM_CPPFLAGS += \
+ -I $(top_builddir)/src/udev
+
+libudev_core_la_SOURCES += \
+ udev-builtin-keyboard.c
+
+nodist_libudev_core_la_SOURCES = \
+ keyboard-keys-from-name.h \
+ keyboard-keys-to-name.h
+
+keyboard-keys.txt: Makefile
+ $(AM_V_at)$(MKDIR_P) $(dir $@)
+ $(AM_V_GEN)$(CPP) $(CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) -dM -include linux/input.h - < /dev/null | $(AWK) '/^#define[ \t]+KEY_[^ ]+[ \t]+[0-9]/ { if ($$2 != "KEY_MAX") { print $$2 } }' | sed 's/^KEY_COFFEE$$/KEY_SCREENLOCK/' > $@
+
+keyboard-keys-from-name.gperf: keyboard-keys.txt Makefile
+ $(AM_V_GEN)$(AWK) 'BEGIN{ print "struct key { const char* name; unsigned short id; };"; print "%null-strings"; print "%%";} { print tolower(substr($$1 ,5)) ", " $$1 }' < $< > $@
+
+keyboard-keys-from-name.h: keyboard-keys-from-name.gperf Makefile
+ $(AM_V_GPERF)$(GPERF) -L ANSI-C -t -N keyboard_lookup_key -H hash_key_name -p -C < $< > $@
+
+keyboard-keys-to-name.h: keyboard-keys.txt Makefile
+ $(AM_V_GEN)$(AWK) 'BEGIN{ print "const char* const key_names[KEY_CNT] = { "} { print "[" $$1 "] = \"" $$1 "\"," } END{print "};"}' < $< > $@
+
+
+BUILT_SOURCES = \
+ $(nodist_libudev_core_la_SOURCES)
+
+CLEANFILES += \
+ keyboard-keys-from-name.gperf \
+ keyboard-keys.txt \
+ $(BUILT_SOURCES)
+
+endif
+
# install udevadm symlink in sbindir
install-exec-hook:
if test "$(bindir)" != "$(sbindir)"; then \
diff --git a/src/udev/udev-builtin-keyboard.c b/src/udev/udev-builtin-keyboard.c
new file mode 100644
index 0000000000..ddd853594e
--- /dev/null
+++ b/src/udev/udev-builtin-keyboard.c
@@ -0,0 +1,163 @@
+/***
+ This file is part of systemd.
+
+ Copyright 2013 Kay Sievers <kay@vrfy.org>
+
+ systemd is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 2.1 of the License, or
+ (at your option) any later version.
+
+ systemd is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with systemd; If not, see <http://www.gnu.org/licenses/>.
+***/
+
+#include <stdio.h>
+#include <errno.h>
+#include <string.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <sys/ioctl.h>
+#include <linux/limits.h>
+#include <linux/input.h>
+
+#include "udev.h"
+
+static const struct key *keyboard_lookup_key(const char *str, unsigned int len);
+#include "keyboard-keys-from-name.h"
+#include "keyboard-keys-to-name.h"
+
+static int install_force_release(struct udev_device *dev, const unsigned int *release, unsigned int release_count) {
+ struct udev_device *atkbd;
+ const char *cur;
+ char codes[4096];
+ char *s;
+ size_t l;
+ unsigned int i;
+ int ret;
+
+ atkbd = udev_device_get_parent_with_subsystem_devtype(dev, "serio", NULL);
+ if (!atkbd)
+ return -ENODEV;
+
+ cur = udev_device_get_sysattr_value(atkbd, "force_release");
+ if (!cur)
+ return -ENODEV;
+
+ s = codes;
+ l = sizeof(codes);
+
+ /* copy current content */
+ l = strpcpy(&s, l, cur);
+
+ /* append new codes */
+ for (i = 0; i < release_count; i++)
+ l = strpcpyf(&s, l, ",%d", release[i]);
+
+ log_debug("keyboard: updating force-release list with '%s'\n", codes);
+ ret = udev_device_set_sysattr_value(atkbd, "force_release", codes);
+ if (ret < 0)
+ log_error("Error writing force-release attribute: %s", strerror(-ret));
+ return ret;
+}
+
+static int builtin_keyboard(struct udev_device *dev, int argc, char *argv[], bool test) {
+ struct udev_list_entry *entry;
+ struct {
+ unsigned int scan;
+ unsigned int key;
+ } map[1024];
+ unsigned int map_count = 0;
+ unsigned int release[1024];
+ unsigned int release_count = 0;
+
+ udev_list_entry_foreach(entry, udev_device_get_properties_list_entry(dev)) {
+ const char *key;
+ unsigned int scancode;
+ char *endptr;
+ const char *keycode;
+ const struct key *k;
+
+ key = udev_list_entry_get_name(entry);
+ if (!startswith(key, "KEYBOARD_KEY_"))
+ continue;
+
+ /* KEYBOARD_KEY_<hex scan code>=<key identifier string> */
+ scancode = strtol(key + 13, &endptr, 16);
+ if (endptr[0] != '\0') {
+ log_error("Error, unable to parse scan code from '%s'\n", key);
+ continue;
+ }
+
+ keycode = udev_list_entry_get_value(entry);
+
+ /* a leading '!' needs a force-release entry */
+ if (keycode[0] == '!') {
+ keycode++;
+
+ release[release_count] = scancode;
+ if (release_count < ELEMENTSOF(release)-1)
+ release_count++;
+
+ if (keycode[0] == '\0')
+ continue;
+ }
+
+ /* translate identifier to key code */
+ k = keyboard_lookup_key(keycode, strlen(keycode));
+ if (!k) {
+ log_error("Error, unknown key identifier '%s'\n", keycode);
+ continue;
+ }
+
+ map[map_count].scan = scancode;
+ map[map_count].key = k->id;
+ if (map_count < ELEMENTSOF(map)-1)
+ map_count++;
+ }
+
+ if (map_count > 0 || release_count > 0) {
+ const char *node;
+ int fd;
+ unsigned int i;
+
+ node = udev_device_get_devnode(dev);
+ if (!node) {
+ log_error("Error, no device node for '%s'\n", udev_device_get_syspath(dev));
+ return EXIT_FAILURE;
+ }
+
+ fd = open(udev_device_get_devnode(dev), O_RDWR|O_CLOEXEC|O_NONBLOCK|O_NOCTTY);
+ if (fd < 0) {
+ log_error("Error, opening device '%s': %m\n", node);
+ return EXIT_FAILURE;
+ }
+
+ /* install list of map codes */
+ for (i = 0; i < map_count; i++) {
+ log_debug("keyboard: mapping scan code %d (0x%x) to key code %d (0x%x)\n",
+ map[i].scan, map[i].scan, map[i].key, map[i].key);
+ if (ioctl(fd, EVIOCSKEYCODE, &map[i]) < 0)
+ log_error("Error calling EVIOCSKEYCODE: %m\n");
+ }
+
+ /* install list of force-release codes */
+ if (release_count > 0)
+ install_force_release(dev, release, release_count);
+
+ close(fd);
+ }
+
+ return EXIT_SUCCESS;
+}
+
+const struct udev_builtin udev_builtin_keyboard = {
+ .name = "keyboard",
+ .cmd = builtin_keyboard,
+ .help = "keyboard scan code to key mapping",
+};
diff --git a/src/udev/udev-builtin.c b/src/udev/udev-builtin.c
index 22deaac1a8..d9cca9dde8 100644
--- a/src/udev/udev-builtin.c
+++ b/src/udev/udev-builtin.c
@@ -39,6 +39,9 @@ static const struct udev_builtin *builtins[] = {
#endif
[UDEV_BUILTIN_HWDB] = &udev_builtin_hwdb,
[UDEV_BUILTIN_INPUT_ID] = &udev_builtin_input_id,
+#ifdef ENABLE_KEYMAP
+ [UDEV_BUILTIN_KEYBOARD] = &udev_builtin_keyboard,
+#endif
#ifdef HAVE_MODULES
[UDEV_BUILTIN_KMOD] = &udev_builtin_kmod,
#endif
diff --git a/src/udev/udev.h b/src/udev/udev.h
index f0256a4d09..80fdd4c0ec 100644
--- a/src/udev/udev.h
+++ b/src/udev/udev.h
@@ -145,6 +145,9 @@ enum udev_builtin_cmd {
#endif
UDEV_BUILTIN_HWDB,
UDEV_BUILTIN_INPUT_ID,
+#ifdef ENABLE_KEYMAP
+ UDEV_BUILTIN_KEYBOARD,
+#endif
#ifdef HAVE_MODULES
UDEV_BUILTIN_KMOD,
#endif
@@ -171,6 +174,9 @@ extern const struct udev_builtin udev_builtin_firmware;
#endif
extern const struct udev_builtin udev_builtin_hwdb;
extern const struct udev_builtin udev_builtin_input_id;
+#ifdef ENABLE_KEYMAP
+extern const struct udev_builtin udev_builtin_keyboard;
+#endif
#ifdef HAVE_MODULES
extern const struct udev_builtin udev_builtin_kmod;
#endif