summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Stakenvicius <axs@gentoo.org>2013-07-24 14:00:06 -0400
committerIan Stakenvicius <axs@gentoo.org>2013-07-24 16:27:01 -0400
commit35876baf30ceab34fc16e3fb52763fc0be08f683 (patch)
treeacc96c905d60da830cd4b08b499f50ca4eb901a7
parent87b69cb04556d5dacae2eb1a9f2122ce5f6a4620 (diff)
Switch from external keymaps to internal (hwdb) keymaps
This commit imports the new internal keyboard handling from upstream. This is a combination of many upstream commits, including those that added code, removed old code, and updated the hwdb. Some commits (hwdb ones specifically) were unrelated but brought in anyways to keep the whole hwdb consistent. Each upstream commit included is as follows: 9d7d42bc406a2ac04639674281ce3ff6beeda790 - internal keymap support 0c959b39175b126fdb70ae00de37ca6d9c8ca3a1 - hwdb: keyboard -- add file e8193554925a22b63bef0e77b8397b56d63a91ff - hwdb: keyboard -- update comments c79d894d590fc9df4861738555cc43c477e33376 - hwdb: import data aedc2eddd16e48d468e6ad0aea2caf00c7d37365 - hwdb: keyboard update 97a9313cafccf772ce03f5ebd36fe4d9d8412583 - hwdb: drop non-existant Samsung 900XC3 from keymap ddc77f62244bb41d5c8261517e2e1ff1b763fc94 - switch from udev keymaps to hwdb 0c3815773331b263713f4f7b9d80bc1ca159338e - also remove keymaps-force-release directory 1b6bce89b3383904d0dab619dd38bff673f7286e - keymap: re-add Logitech USB corded/cordless models bf89b99c5a39115112c2eda4c2103e2db54988d2 - 60-keyboard.hwdb: Fix syntax error ce39bb6909578017aa10031638e724e038f0b859 - hwdb: data update, upstream 884c86812c51479496edd50b278383d7bb67baf0 - rules: keyboard - use builtin command All code from each of the above commits is attributed to the original authors. There were some adjustments made in order to support the code differences between upstream and eudev, which was done by myself. Also of note is that the code can still be disabled via the --disable-keymaps configure option, which was removed from upstream. Signed-off-by: Ian Stakenvicius <axs@gentoo.org>
-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 &amp; 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 &amp; 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