mirror of
https://github.com/AuxXxilium/eudev.git
synced 2024-11-23 23:10:57 +07:00
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>
This commit is contained in:
parent
87b69cb045
commit
35876baf30
11
.gitignore
vendored
11
.gitignore
vendored
@ -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
|
||||
|
@ -8,12 +8,6 @@ SUBDIRS = \
|
||||
docs \
|
||||
test
|
||||
|
||||
if ENABLE_KEYMAP
|
||||
SUBDIRS += \
|
||||
keymaps \
|
||||
keymaps-force-release
|
||||
endif
|
||||
|
||||
if ENABLE_MANPAGES
|
||||
SUBDIRS += \
|
||||
man
|
||||
|
164
UPSTREAM-206-commit-todo
Normal file
164
UPSTREAM-206-commit-todo
Normal file
@ -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
|
@ -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
|
||||
|
@ -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
|
||||
|
189
hwdb/20-OUI.hwdb
189
hwdb/20-OUI.hwdb
@ -7295,7 +7295,7 @@ OUI:0050C298C*
|
||||
ID_OUI_FROM_DATABASE=MGM-Devices Oy
|
||||
|
||||
OUI:0050C298D*
|
||||
ID_OUI_FROM_DATABASE=Mecos Traxler AG
|
||||
ID_OUI_FROM_DATABASE=Mecos AG
|
||||
|
||||
OUI:0050C298E*
|
||||
ID_OUI_FROM_DATABASE=Link Technologies, Inc
|
||||
@ -13099,6 +13099,48 @@ OUI:40D85512D*
|
||||
OUI:40D85512E*
|
||||
ID_OUI_FROM_DATABASE=Canfield Scientific, Inc.
|
||||
|
||||
OUI:40D855130*
|
||||
ID_OUI_FROM_DATABASE=GSP Sprachtechnologie GmbH
|
||||
|
||||
OUI:40D855131*
|
||||
ID_OUI_FROM_DATABASE=EMAC, INC.
|
||||
|
||||
OUI:40D855132*
|
||||
ID_OUI_FROM_DATABASE=AeroVision Avionics, Inc
|
||||
|
||||
OUI:40D855133*
|
||||
ID_OUI_FROM_DATABASE=Tattile srl
|
||||
|
||||
OUI:40D855134*
|
||||
ID_OUI_FROM_DATABASE=digitech GmbH & Co. KG
|
||||
|
||||
OUI:40D855135*
|
||||
ID_OUI_FROM_DATABASE=GLOBALCOM ENGINEERING SRL
|
||||
|
||||
OUI:40D855136*
|
||||
ID_OUI_FROM_DATABASE=Devriecom B.V.
|
||||
|
||||
OUI:40D855137*
|
||||
ID_OUI_FROM_DATABASE=GDE Polska
|
||||
|
||||
OUI:40D855138*
|
||||
ID_OUI_FROM_DATABASE=Calon Associates Limited
|
||||
|
||||
OUI:40D855139*
|
||||
ID_OUI_FROM_DATABASE=WOW System
|
||||
|
||||
OUI:40D85513A*
|
||||
ID_OUI_FROM_DATABASE=Supplier Ind. e Com de Eletroeletrônicos
|
||||
|
||||
OUI:40D85513B*
|
||||
ID_OUI_FROM_DATABASE=Davin Technologies Co.,Ltd
|
||||
|
||||
OUI:40D85513C*
|
||||
ID_OUI_FROM_DATABASE=shanghai anjian Information technology co. , ltd.
|
||||
|
||||
OUI:40D85513D*
|
||||
ID_OUI_FROM_DATABASE=Perm Scientific-Industrial Instrument Making Company JSC
|
||||
|
||||
OUI:000000*
|
||||
ID_OUI_FROM_DATABASE=XEROX CORPORATION
|
||||
|
||||
@ -14675,7 +14717,7 @@ OUI:00020D*
|
||||
ID_OUI_FROM_DATABASE=Micronpc.com
|
||||
|
||||
OUI:00020E*
|
||||
ID_OUI_FROM_DATABASE=ECI Telecom, Ltd., NSD-US
|
||||
ID_OUI_FROM_DATABASE=ECI Telecom, Ltd
|
||||
|
||||
OUI:00020F*
|
||||
ID_OUI_FROM_DATABASE=AATR
|
||||
@ -46093,6 +46135,9 @@ OUI:0075E1*
|
||||
OUI:00789E*
|
||||
ID_OUI_FROM_DATABASE=SAGEMCOM
|
||||
|
||||
OUI:007DFA*
|
||||
ID_OUI_FROM_DATABASE=Volkswagen Group of America
|
||||
|
||||
OUI:007F28*
|
||||
ID_OUI_FROM_DATABASE=Actiontec Electronics, Inc
|
||||
|
||||
@ -51148,6 +51193,9 @@ OUI:044BFF*
|
||||
OUI:044CEF*
|
||||
ID_OUI_FROM_DATABASE=Fujian Sanao Technology Co.,Ltd
|
||||
|
||||
OUI:044F8B*
|
||||
ID_OUI_FROM_DATABASE=Adapteva, Inc.
|
||||
|
||||
OUI:044FAA*
|
||||
ID_OUI_FROM_DATABASE=Ruckus Wireless
|
||||
|
||||
@ -52102,6 +52150,9 @@ OUI:0C57EB*
|
||||
OUI:0C5A19*
|
||||
ID_OUI_FROM_DATABASE=Axtion Sdn Bhd
|
||||
|
||||
OUI:0C5CD8*
|
||||
ID_OUI_FROM_DATABASE=DOLI Elektronik GmbH
|
||||
|
||||
OUI:0C6076*
|
||||
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
|
||||
|
||||
@ -52171,6 +52222,9 @@ OUI:0C93FB*
|
||||
OUI:0C96BF*
|
||||
ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
|
||||
|
||||
OUI:0C9B13*
|
||||
ID_OUI_FROM_DATABASE=Shanghai Magic Mobile Telecommunication Co.Ltd.
|
||||
|
||||
OUI:0C9D56*
|
||||
ID_OUI_FROM_DATABASE=Consort Controls Ltd
|
||||
|
||||
@ -52618,6 +52672,9 @@ OUI:141BF0*
|
||||
OUI:1423D7*
|
||||
ID_OUI_FROM_DATABASE=EUTRONIX CO., LTD.
|
||||
|
||||
OUI:142BD2*
|
||||
ID_OUI_FROM_DATABASE=Armtel Ltd.
|
||||
|
||||
OUI:142D8B*
|
||||
ID_OUI_FROM_DATABASE=Incipio Technologies, Inc
|
||||
|
||||
@ -52924,6 +52981,9 @@ OUI:187A93*
|
||||
OUI:187C81*
|
||||
ID_OUI_FROM_DATABASE=Valeo Vision Systems
|
||||
|
||||
OUI:187ED5*
|
||||
ID_OUI_FROM_DATABASE=shenzhen kaism technology Co. Ltd
|
||||
|
||||
OUI:1880CE*
|
||||
ID_OUI_FROM_DATABASE=Barberry Solutions Ltd
|
||||
|
||||
@ -53122,6 +53182,9 @@ OUI:1C48F9*
|
||||
OUI:1C4AF7*
|
||||
ID_OUI_FROM_DATABASE=AMON INC
|
||||
|
||||
OUI:1C4BB9*
|
||||
ID_OUI_FROM_DATABASE=SMG ENTERPRISE, LLC
|
||||
|
||||
OUI:1C4BD6*
|
||||
ID_OUI_FROM_DATABASE=AzureWave
|
||||
|
||||
@ -53608,6 +53671,9 @@ OUI:245FDF*
|
||||
OUI:246278*
|
||||
ID_OUI_FROM_DATABASE=sysmocom - systems for mobile communications GmbH
|
||||
|
||||
OUI:2464EF*
|
||||
ID_OUI_FROM_DATABASE=CYG SUNRI CO.,LTD.
|
||||
|
||||
OUI:246511*
|
||||
ID_OUI_FROM_DATABASE=AVM GmbH
|
||||
|
||||
@ -53626,6 +53692,9 @@ OUI:24767D*
|
||||
OUI:247703*
|
||||
ID_OUI_FROM_DATABASE=Intel Corporate
|
||||
|
||||
OUI:248000*
|
||||
ID_OUI_FROM_DATABASE=Westcontrol AS
|
||||
|
||||
OUI:2481AA*
|
||||
ID_OUI_FROM_DATABASE=KSH International Co., Ltd.
|
||||
|
||||
@ -53833,6 +53902,9 @@ OUI:284846*
|
||||
OUI:284C53*
|
||||
ID_OUI_FROM_DATABASE=Intune Networks
|
||||
|
||||
OUI:284D92*
|
||||
ID_OUI_FROM_DATABASE=Luminator
|
||||
|
||||
OUI:284FCE*
|
||||
ID_OUI_FROM_DATABASE=Liaoning Wontel Science and Technology Development Co.,Ltd.
|
||||
|
||||
@ -54109,12 +54181,18 @@ OUI:2C44FD*
|
||||
OUI:2C542D*
|
||||
ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
|
||||
|
||||
OUI:2C553C*
|
||||
ID_OUI_FROM_DATABASE=Gainspeed, Inc.
|
||||
|
||||
OUI:2C59E5*
|
||||
ID_OUI_FROM_DATABASE=Hewlett Packard
|
||||
|
||||
OUI:2C5AA3*
|
||||
ID_OUI_FROM_DATABASE=PROMATE ELECTRONIC CO.LTD
|
||||
|
||||
OUI:2C5FF3*
|
||||
ID_OUI_FROM_DATABASE=Pertronic Industries
|
||||
|
||||
OUI:2C625A*
|
||||
ID_OUI_FROM_DATABASE=Finest Security Systems Co., Ltd
|
||||
|
||||
@ -54526,6 +54604,9 @@ OUI:3451C9*
|
||||
OUI:345B11*
|
||||
ID_OUI_FROM_DATABASE=EVI HEAT AB
|
||||
|
||||
OUI:346178*
|
||||
ID_OUI_FROM_DATABASE=The Boeing Company
|
||||
|
||||
OUI:34684A*
|
||||
ID_OUI_FROM_DATABASE=Teraworks Co., Ltd.
|
||||
|
||||
@ -54958,6 +55039,9 @@ OUI:3C0FC1*
|
||||
OUI:3C106F*
|
||||
ID_OUI_FROM_DATABASE=ALBAHITH TECHNOLOGIES
|
||||
|
||||
OUI:3C15EA*
|
||||
ID_OUI_FROM_DATABASE=TESCOM CO., LTD.
|
||||
|
||||
OUI:3C1915*
|
||||
ID_OUI_FROM_DATABASE=GFI Chrono Time
|
||||
|
||||
@ -56140,6 +56224,9 @@ OUI:50252B*
|
||||
OUI:502690*
|
||||
ID_OUI_FROM_DATABASE=Fujitsu Limited
|
||||
|
||||
OUI:5027C7*
|
||||
ID_OUI_FROM_DATABASE=TECHNART Co.,Ltd
|
||||
|
||||
OUI:502A7E*
|
||||
ID_OUI_FROM_DATABASE=Smart electronic GmbH
|
||||
|
||||
@ -56284,6 +56371,9 @@ OUI:50AF73*
|
||||
OUI:50B7C3*
|
||||
ID_OUI_FROM_DATABASE=Samsung Electronics CO., LTD
|
||||
|
||||
OUI:50B888*
|
||||
ID_OUI_FROM_DATABASE=wi2be Tecnologia S/A
|
||||
|
||||
OUI:50B8A2*
|
||||
ID_OUI_FROM_DATABASE=ImTech Technologies LLC,
|
||||
|
||||
@ -56480,7 +56570,7 @@ OUI:54A51B*
|
||||
ID_OUI_FROM_DATABASE=Shenzhen Huawei Communication Technologies Co., Ltd
|
||||
|
||||
OUI:54A54B*
|
||||
ID_OUI_FROM_DATABASE=NSC Communiaction Siberia Ltd
|
||||
ID_OUI_FROM_DATABASE=NSC Communications Siberia Ltd
|
||||
|
||||
OUI:54A619*
|
||||
ID_OUI_FROM_DATABASE=Alcatel-Lucent Shanghai Bell Co., Ltd
|
||||
@ -56614,6 +56704,9 @@ OUI:5856E8*
|
||||
OUI:58570D*
|
||||
ID_OUI_FROM_DATABASE=Danfoss Solar Inverters
|
||||
|
||||
OUI:58639A*
|
||||
ID_OUI_FROM_DATABASE=TPL SYSTEMES
|
||||
|
||||
OUI:5865E6*
|
||||
ID_OUI_FROM_DATABASE=INFOMARK CO., LTD.
|
||||
|
||||
@ -56686,6 +56779,9 @@ OUI:589835*
|
||||
OUI:58986F*
|
||||
ID_OUI_FROM_DATABASE=Revolution Display
|
||||
|
||||
OUI:58A2B5*
|
||||
ID_OUI_FROM_DATABASE=LG Electronics
|
||||
|
||||
OUI:58A76F*
|
||||
ID_OUI_FROM_DATABASE=iD corporation
|
||||
|
||||
@ -57037,6 +57133,9 @@ OUI:601E02*
|
||||
OUI:6021C0*
|
||||
ID_OUI_FROM_DATABASE=Murata Manufactuaring Co.,Ltd.
|
||||
|
||||
OUI:6024C1*
|
||||
ID_OUI_FROM_DATABASE=Jiangsu Zhongxun Electronic Technology Co., Ltd
|
||||
|
||||
OUI:602A54*
|
||||
ID_OUI_FROM_DATABASE=CardioTek B.V.
|
||||
|
||||
@ -57157,6 +57256,9 @@ OUI:60A10A*
|
||||
OUI:60A44C*
|
||||
ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
|
||||
|
||||
OUI:60A9B0*
|
||||
ID_OUI_FROM_DATABASE=Merchandising Technologies, Inc
|
||||
|
||||
OUI:60B185*
|
||||
ID_OUI_FROM_DATABASE=ATH system
|
||||
|
||||
@ -57895,6 +57997,9 @@ OUI:6C5779*
|
||||
OUI:6C5A34*
|
||||
ID_OUI_FROM_DATABASE=Shenzhen Haitianxiong Electronic Co., Ltd.
|
||||
|
||||
OUI:6C5AB5*
|
||||
ID_OUI_FROM_DATABASE=TCL Technoly Electronics (Huizhou) Co., Ltd.
|
||||
|
||||
OUI:6C5CDE*
|
||||
ID_OUI_FROM_DATABASE=SunReports, Inc.
|
||||
|
||||
@ -58687,6 +58792,9 @@ OUI:78593E*
|
||||
OUI:78595E*
|
||||
ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
|
||||
|
||||
OUI:785968*
|
||||
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind.Co.,Ltd.
|
||||
|
||||
OUI:785C72*
|
||||
ID_OUI_FROM_DATABASE=Hioso Technology Co., Ltd.
|
||||
|
||||
@ -58840,6 +58948,9 @@ OUI:78D5B5*
|
||||
OUI:78D6F0*
|
||||
ID_OUI_FROM_DATABASE=Samsung Electro Mechanics
|
||||
|
||||
OUI:78D99F*
|
||||
ID_OUI_FROM_DATABASE=NuCom HK Ltd.
|
||||
|
||||
OUI:78DAB3*
|
||||
ID_OUI_FROM_DATABASE=GBO Technology
|
||||
|
||||
@ -58909,6 +59020,9 @@ OUI:7C0507*
|
||||
OUI:7C051E*
|
||||
ID_OUI_FROM_DATABASE=RAFAEL LTD.
|
||||
|
||||
OUI:7C0623*
|
||||
ID_OUI_FROM_DATABASE=Ultra Electronics, CIS
|
||||
|
||||
OUI:7C08D9*
|
||||
ID_OUI_FROM_DATABASE=Shanghai Engineering Research Center for Broadband Technologies and Applications
|
||||
|
||||
@ -59416,12 +59530,18 @@ OUI:8400D2*
|
||||
OUI:840B2D*
|
||||
ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO-MECHANICS CO., LTD
|
||||
|
||||
OUI:840F45*
|
||||
ID_OUI_FROM_DATABASE=Shanghai GMT Digital Technologies Co., Ltd
|
||||
|
||||
OUI:841715*
|
||||
ID_OUI_FROM_DATABASE=GP Electronics (HK) Ltd.
|
||||
|
||||
OUI:841888*
|
||||
ID_OUI_FROM_DATABASE=Juniper Networks
|
||||
|
||||
OUI:841B38*
|
||||
ID_OUI_FROM_DATABASE=Shenzhen Excelsecu Data Technology Co.,Ltd
|
||||
|
||||
OUI:841B5E*
|
||||
ID_OUI_FROM_DATABASE=NETGEAR
|
||||
|
||||
@ -59689,6 +59809,9 @@ OUI:8841C1*
|
||||
OUI:8843E1*
|
||||
ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
|
||||
|
||||
OUI:8844F6*
|
||||
ID_OUI_FROM_DATABASE=Nokia Corporation
|
||||
|
||||
OUI:88462A*
|
||||
ID_OUI_FROM_DATABASE=Telechips Inc.
|
||||
|
||||
@ -59725,6 +59848,9 @@ OUI:887398*
|
||||
OUI:887556*
|
||||
ID_OUI_FROM_DATABASE=Cisco
|
||||
|
||||
OUI:88789C*
|
||||
ID_OUI_FROM_DATABASE=Game Technologies SA
|
||||
|
||||
OUI:8886A0*
|
||||
ID_OUI_FROM_DATABASE=Simton Technologies, Ltd.
|
||||
|
||||
@ -60562,6 +60688,9 @@ OUI:94DE0E*
|
||||
OUI:94DE80*
|
||||
ID_OUI_FROM_DATABASE=GIGA-BYTE TECHNOLOGY CO.,LTD.
|
||||
|
||||
OUI:94DF4E*
|
||||
ID_OUI_FROM_DATABASE=Wistron InfoComm(Kunshan)Co.,Ltd.
|
||||
|
||||
OUI:94DF58*
|
||||
ID_OUI_FROM_DATABASE=IJ Electron CO.,Ltd.
|
||||
|
||||
@ -60979,6 +61108,9 @@ OUI:9C9811*
|
||||
OUI:9C9C1D*
|
||||
ID_OUI_FROM_DATABASE=Starkey Labs Inc.
|
||||
|
||||
OUI:9CA10A*
|
||||
ID_OUI_FROM_DATABASE=SCLE SFE
|
||||
|
||||
OUI:9CA134*
|
||||
ID_OUI_FROM_DATABASE=Nike, Inc.
|
||||
|
||||
@ -62410,6 +62542,9 @@ OUI:B439D6*
|
||||
OUI:B43DB2*
|
||||
ID_OUI_FROM_DATABASE=Degreane Horizon
|
||||
|
||||
OUI:B43E3B*
|
||||
ID_OUI_FROM_DATABASE=Viableware, Inc
|
||||
|
||||
OUI:B4417A*
|
||||
ID_OUI_FROM_DATABASE=ShenZhen Gongjin Electronics Co.,Ltd
|
||||
|
||||
@ -62488,6 +62623,9 @@ OUI:B4A4E3*
|
||||
OUI:B4A5A9*
|
||||
ID_OUI_FROM_DATABASE=MODI GmbH
|
||||
|
||||
OUI:B4A82B*
|
||||
ID_OUI_FROM_DATABASE=Histar
|
||||
|
||||
OUI:B4A95A*
|
||||
ID_OUI_FROM_DATABASE=Avaya, Inc
|
||||
|
||||
@ -63037,6 +63175,9 @@ OUI:BC926B*
|
||||
OUI:BC9680*
|
||||
ID_OUI_FROM_DATABASE=Shenzhen Gongjin Electronics Co.,Ltd
|
||||
|
||||
OUI:BC9889*
|
||||
ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Tech.Co.,Ltd.
|
||||
|
||||
OUI:BC99BC*
|
||||
ID_OUI_FROM_DATABASE=FonSee Technology Inc.
|
||||
|
||||
@ -63307,6 +63448,9 @@ OUI:C0C3B6*
|
||||
OUI:C0C520*
|
||||
ID_OUI_FROM_DATABASE=Ruckus Wireless
|
||||
|
||||
OUI:C0C687*
|
||||
ID_OUI_FROM_DATABASE=Cisco SPVTG
|
||||
|
||||
OUI:C0C946*
|
||||
ID_OUI_FROM_DATABASE=MITSUYA LABORATORIES INC.
|
||||
|
||||
@ -63514,6 +63658,9 @@ OUI:C49300*
|
||||
OUI:C49313*
|
||||
ID_OUI_FROM_DATABASE=100fio networks technology llc
|
||||
|
||||
OUI:C49380*
|
||||
ID_OUI_FROM_DATABASE=Speedytel technology
|
||||
|
||||
OUI:C495A2*
|
||||
ID_OUI_FROM_DATABASE=SHENZHEN WEIJIU INDUSTRY AND TRADE DEVELOPMENT CO., LTD
|
||||
|
||||
@ -64177,6 +64324,9 @@ OUI:D023DB*
|
||||
OUI:D02788*
|
||||
ID_OUI_FROM_DATABASE=Hon Hai Precision Ind.Co.Ltd
|
||||
|
||||
OUI:D02C45*
|
||||
ID_OUI_FROM_DATABASE=littleBits Electronics, Inc.
|
||||
|
||||
OUI:D02DB3*
|
||||
ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
|
||||
|
||||
@ -64267,6 +64417,9 @@ OUI:D08CFF*
|
||||
OUI:D093F8*
|
||||
ID_OUI_FROM_DATABASE=Stonestreet One LLC
|
||||
|
||||
OUI:D095C7*
|
||||
ID_OUI_FROM_DATABASE=Pantech Co., Ltd.
|
||||
|
||||
OUI:D09B05*
|
||||
ID_OUI_FROM_DATABASE=Emtronix
|
||||
|
||||
@ -64588,6 +64741,9 @@ OUI:D4AAFF*
|
||||
OUI:D4AC4E*
|
||||
ID_OUI_FROM_DATABASE=BODi rS, LLC
|
||||
|
||||
OUI:D4AD2D*
|
||||
ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Tech.Co.,Ltd.
|
||||
|
||||
OUI:D4AE52*
|
||||
ID_OUI_FROM_DATABASE=Dell Inc
|
||||
|
||||
@ -64714,6 +64870,9 @@ OUI:D824BD*
|
||||
OUI:D826B9*
|
||||
ID_OUI_FROM_DATABASE=Guangdong Coagent Electronics S &T Co., Ltd.
|
||||
|
||||
OUI:D8270C*
|
||||
ID_OUI_FROM_DATABASE=MaxTronic International Co., Ltd.
|
||||
|
||||
OUI:D828C9*
|
||||
ID_OUI_FROM_DATABASE=General Electric Consumer and Industrial
|
||||
|
||||
@ -65134,6 +65293,9 @@ OUI:DCF858*
|
||||
OUI:DCFAD5*
|
||||
ID_OUI_FROM_DATABASE=STRONG Ges.m.b.H.
|
||||
|
||||
OUI:DCFB02*
|
||||
ID_OUI_FROM_DATABASE=Buffalo Inc.
|
||||
|
||||
OUI:E005C5*
|
||||
ID_OUI_FROM_DATABASE=TP-LINK Technologies Co.,Ltd.
|
||||
|
||||
@ -65302,6 +65464,9 @@ OUI:E0ABFE*
|
||||
OUI:E0AE5E*
|
||||
ID_OUI_FROM_DATABASE=ALPS Co,. Ltd.
|
||||
|
||||
OUI:E0AEB2*
|
||||
ID_OUI_FROM_DATABASE=Bender GmbH & Co.KG
|
||||
|
||||
OUI:E0AEED*
|
||||
ID_OUI_FROM_DATABASE=LOENK
|
||||
|
||||
@ -65920,6 +66085,9 @@ OUI:EC233D*
|
||||
OUI:EC2368*
|
||||
ID_OUI_FROM_DATABASE=IntelliVoice Co.,Ltd.
|
||||
|
||||
OUI:EC2AF0*
|
||||
ID_OUI_FROM_DATABASE=Ypsomed AG
|
||||
|
||||
OUI:EC2C49*
|
||||
ID_OUI_FROM_DATABASE=University of Tokyo
|
||||
|
||||
@ -66646,6 +66814,9 @@ OUI:F80F84*
|
||||
OUI:F81037*
|
||||
ID_OUI_FROM_DATABASE=Atopia Systems, LP
|
||||
|
||||
OUI:F81547*
|
||||
ID_OUI_FROM_DATABASE=Avaya, Inc
|
||||
|
||||
OUI:F81654*
|
||||
ID_OUI_FROM_DATABASE=Intel Corporate
|
||||
|
||||
@ -66694,6 +66865,9 @@ OUI:F83DFF*
|
||||
OUI:F842FB*
|
||||
ID_OUI_FROM_DATABASE=Yasuda Joho Co.,ltd.
|
||||
|
||||
OUI:F845AD*
|
||||
ID_OUI_FROM_DATABASE=Konka Group Co., Ltd.
|
||||
|
||||
OUI:F8462D*
|
||||
ID_OUI_FROM_DATABASE=SYNTEC Incorporation
|
||||
|
||||
@ -66703,6 +66877,9 @@ OUI:F8472D*
|
||||
OUI:F84897*
|
||||
ID_OUI_FROM_DATABASE=Hitachi, Ltd.
|
||||
|
||||
OUI:F84A7F*
|
||||
ID_OUI_FROM_DATABASE=Innometriks Inc
|
||||
|
||||
OUI:F84ABF*
|
||||
ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
|
||||
|
||||
@ -66718,6 +66895,9 @@ OUI:F8516D*
|
||||
OUI:F852DF*
|
||||
ID_OUI_FROM_DATABASE=VNL Europe AB
|
||||
|
||||
OUI:F854AF*
|
||||
ID_OUI_FROM_DATABASE=ECI Telecom Ltd.
|
||||
|
||||
OUI:F85BC9*
|
||||
ID_OUI_FROM_DATABASE=M-Cube Spa
|
||||
|
||||
@ -66787,6 +66967,9 @@ OUI:F89FB8*
|
||||
OUI:F8A03D*
|
||||
ID_OUI_FROM_DATABASE=Dinstar Technologies Co., Ltd.
|
||||
|
||||
OUI:F8A45F*
|
||||
ID_OUI_FROM_DATABASE=Beijing Xiaomi communications co.,ltd
|
||||
|
||||
OUI:F8A9DE*
|
||||
ID_OUI_FROM_DATABASE=PUISSANCE PLUS
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
1011
hwdb/60-keyboard.hwdb
Normal file
1011
hwdb/60-keyboard.hwdb
Normal file
File diff suppressed because it is too large
Load Diff
@ -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
|
||||
|
@ -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
|
@ -1,3 +0,0 @@
|
||||
0xa0 # mute
|
||||
0xae # volume down
|
||||
0xb0 # volume up
|
@ -1 +0,0 @@
|
||||
0x9E
|
@ -1 +0,0 @@
|
||||
0x8C
|
@ -1,3 +0,0 @@
|
||||
# list of scancodes (hex or decimal), optional comment
|
||||
0xd8 # Touchpad off
|
||||
0xd9 # Touchpad on
|
@ -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
|
@ -1,2 +0,0 @@
|
||||
0xCE # Fn+F1 launch control setting
|
||||
0xD5 # Fn+F12 Wi-Fi toggle
|
@ -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
|
@ -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.
|
@ -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)
|
22
keymaps/acer
22
keymaps/acer
@ -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
|
@ -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
|
@ -1,5 +0,0 @@
|
||||
0x8A media
|
||||
0x92 media
|
||||
0xA6 setup
|
||||
0xB2 www
|
||||
0xD9 bluetooth # (toggle) on-to-off
|
@ -1,5 +0,0 @@
|
||||
0xD9 bluetooth # (toggle) on-to-off
|
||||
0x92 media
|
||||
0x9E back
|
||||
0x83 rewind
|
||||
0x89 fastforward
|
@ -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
|
@ -1,5 +0,0 @@
|
||||
0x67 f24 # FIXME: rotate screen
|
||||
0x68 up
|
||||
0x69 down
|
||||
0x6B fn
|
||||
0x6C screenlock # FIXME: lock tablet device/buttons
|
@ -1,3 +0,0 @@
|
||||
0xED volumeup
|
||||
0xEE volumedown
|
||||
0xEF mute
|
@ -1,4 +0,0 @@
|
||||
0xA3 www # I key
|
||||
0x9A search
|
||||
0x9E email
|
||||
0x9F homepage
|
29
keymaps/dell
29
keymaps/dell
@ -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
|
@ -1,4 +0,0 @@
|
||||
0x9B up # tablet rocker up
|
||||
0x9E enter # tablet rocker press
|
||||
0x9F back # tablet back
|
||||
0xA3 down # tablet rocker down
|
@ -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
|
@ -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
|
@ -1,3 +0,0 @@
|
||||
0xE0 volumedown
|
||||
0xE1 volumeup
|
||||
0xE5 prog1
|
@ -1,4 +0,0 @@
|
||||
0xA5 help # Fn+F1
|
||||
0xA9 switchvideomode # Fn+F3
|
||||
0xD9 brightnessdown # Fn+F8
|
||||
0xE0 brightnessup # Fn+F9
|
@ -1,2 +0,0 @@
|
||||
0xF4 f21 # FIXME: silent-mode decrease CPU/GPU clock
|
||||
0xF7 switchvideomode # Fn+F3
|
@ -1,6 +0,0 @@
|
||||
0xE1 wlan
|
||||
0xF3 wlan
|
||||
0xEE brightnessdown
|
||||
0xE0 brightnessup
|
||||
0xE2 bluetooth
|
||||
0xF7 video
|
@ -1,4 +0,0 @@
|
||||
0xA9 switchvideomode
|
||||
0xD9 brightnessdown
|
||||
0xDF sleep
|
||||
0xEF brightnessup
|
@ -1,2 +0,0 @@
|
||||
0xCE brightnessup
|
||||
0xEF brightnessdown
|
@ -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
|
@ -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
|
@ -1,2 +0,0 @@
|
||||
0xD8 f23 # touchpad off
|
||||
0xD9 f22 # touchpad on
|
@ -1,2 +0,0 @@
|
||||
0x88 presentation
|
||||
0xD9 help # I key (high keycode: "info")
|
@ -1,3 +0,0 @@
|
||||
0xB2 www # Fn+F3
|
||||
0xD8 f23 # touchpad off
|
||||
0xD9 f22 # touchpad on
|
@ -1,3 +0,0 @@
|
||||
0x88 media # FIXME: quick play
|
||||
0xD8 f23 # touchpad off
|
||||
0xD9 f22 # touchpad on
|
@ -1,3 +0,0 @@
|
||||
0xF0 help
|
||||
0xF1 screenlock
|
||||
0xF3 search
|
@ -1,6 +0,0 @@
|
||||
0x82 prog2 # Funny Key
|
||||
0x83 prog1 # Q
|
||||
0x84 tab
|
||||
0x85 esc
|
||||
0x86 pageup
|
||||
0x87 pagedown
|
@ -1,3 +0,0 @@
|
||||
0xC2 media
|
||||
0xD8 f23 # Toggle touchpad button on tx2 (OFF)
|
||||
0xD9 f22 # Toggle touchpad button on tx2 (ON)
|
@ -1,5 +0,0 @@
|
||||
0x88 www
|
||||
0xA0 mute
|
||||
0xAE volumedown
|
||||
0xB0 volumeup
|
||||
0xEC mail
|
@ -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
|
@ -1,7 +0,0 @@
|
||||
0x900f0 screenlock
|
||||
0x900f1 wlan
|
||||
0x900f2 switchvideomode
|
||||
0x900f3 suspend
|
||||
0x900f4 brightnessup
|
||||
0x900f5 brightnessdown
|
||||
0x900f8 zoom
|
@ -1,2 +0,0 @@
|
||||
0xF3 prog2
|
||||
0xF4 prog1
|
@ -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
|
@ -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
|
@ -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
|
@ -1,6 +0,0 @@
|
||||
0x5D menu
|
||||
0x63 fn
|
||||
0x66 screenlock
|
||||
0x67 cyclewindows # bezel circular arrow
|
||||
0x68 setup # bezel setup / menu
|
||||
0x6c direction # rotate screen
|
@ -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
|
@ -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
|
@ -1,6 +0,0 @@
|
||||
0x90001 shop # Shopping
|
||||
0x90002 config # iTouch
|
||||
0x90003 finance # Finance
|
||||
0x90004 prog1 # My Sites
|
||||
0x90005 prog2 # Community
|
||||
0xC0183 media # Media
|
@ -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)
|
@ -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
|
@ -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
|
@ -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
|
@ -1,2 +0,0 @@
|
||||
0x6B channeldown # Thottle Down
|
||||
0x6D channelup # Thottle Up
|
@ -1,4 +0,0 @@
|
||||
0x63 www # N button
|
||||
0x66 prog1 # link 1 button
|
||||
0x67 email # envelope button
|
||||
0x69 prog2 # link 2 button
|
@ -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
|
@ -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"
|
@ -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")
|
@ -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
|
@ -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
|
@ -1,2 +0,0 @@
|
||||
0x06 battery
|
||||
0x07 mute
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -1,5 +0,0 @@
|
||||
0x8E wlan
|
||||
0xF0 switchvideomode
|
||||
0xF1 mute
|
||||
0xF2 volumedown
|
||||
0xF3 volumeup
|
@ -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
|
@ -1,3 +0,0 @@
|
||||
0xCE prog1 # Fn+F1 launch control setting
|
||||
0xB3 prog2 # Fn+F11 performance mode
|
||||
0xD5 wlan # Fn+F12 Wi-Fi toggle
|
@ -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
|
@ -1,7 +0,0 @@
|
||||
0xD4 menu
|
||||
0xD8 f1
|
||||
0xD9 f10
|
||||
0xD6 f3
|
||||
0xD7 f9
|
||||
0xE4 f5
|
||||
0xEE f11
|
@ -1,4 +0,0 @@
|
||||
0x74 mute
|
||||
0x75 mute
|
||||
0x77 f22 # Touchpad on
|
||||
0x79 f23 # Touchpad off
|
@ -1,2 +0,0 @@
|
||||
0xA4 stopcd
|
||||
0xB2 www
|
@ -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
|
@ -1,6 +0,0 @@
|
||||
0xef brightnessdown
|
||||
0xd9 brightnessup
|
||||
0xee screenlock
|
||||
0x93 media
|
||||
0x9e f22 # touchpad enable
|
||||
0x9f f23 # touchpad disable
|
@ -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
|
22
rules/60-keyboard.rules
Normal file
22
rules/60-keyboard.rules
Normal file
@ -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"
|
@ -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:
|
||||
|
@ -18,8 +18,3 @@ if ENABLE_GUDEV
|
||||
SUBDIRS += \
|
||||
gudev
|
||||
endif
|
||||
|
||||
if ENABLE_KEYMAP
|
||||
SUBDIRS += \
|
||||
keymap
|
||||
endif
|
||||
|
@ -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 "};"}' < $< > $@
|
@ -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>.
|
@ -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
|
@ -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
|
@ -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"
|
@ -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 */
|
||||
}
|
@ -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 \
|
||||
|
163
src/udev/udev-builtin-keyboard.c
Normal file
163
src/udev/udev-builtin-keyboard.c
Normal file
@ -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",
|
||||
};
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user