也许这可以为这个问题提供一些启示(来自showkey手册页):
在2.6内核中,原始模式或scancode模式根本不是很原始。首先将扫描码转换为键码,然后在需要扫描码时,将键码转换回去。涉及各种转换,并且完全不能保证最终结果与键盘硬件发送的内容相对应。因此,如果您想知道各种键发送的扫描代码,最好引导2.4内核。从2.6.9开始,还有一个引导选项atkbd.softraw = 0,它告诉2.6内核返回实际的扫描代码。
原始扫描代码仅在AT和PS / 2键盘上可用,并且即使使用了atkbd.softraw = 0内核参数,它们也将被禁用。当原始扫描代码不可用时,内核使用固定的内置表从键码中生成扫描代码。因此,setkeycodes(8)会影响扫描代码转储模式下showkey的输出。
我将要查看在设置了此启动选项之后,showkey是否将使用宏键转储任何内容。
编辑:重新启动后,没有成功,但是我正在考虑从USB设备本身捕获原始输入。有趣的是,我注意到以下内容(我有Razer Diamondback和BlackWidow):
[root@kestrel by-id]# pwd
/dev/input/by-id
[root@kestrel by-id]# ls
usb-Razer_Razer_BlackWidow_Ultimate-event-kbd usb-Razer_Razer_Diamondback_Optical_Mouse-event-mouse
usb-Razer_Razer_BlackWidow_Ultimate-event-mouse usb-Razer_Razer_Diamondback_Optical_Mouse-mouse
usb-Razer_Razer_BlackWidow_Ultimate-mouse
[root@kestrel by-id]#
但是,使用dd捕获原始输入在event-kbd设备上的两个响尾蛇鼠标上都有效,而在BlackWidow鼠标设备上则不行。
我猜想它们可能不会生成任何输出,直到被安装的驱动程序以某种方式激活为止。我对Linux USB并不了解,所以我什至不知道这是否有意义。也许他们需要先被束缚?
好吧,所有三个黑寡妇装置都在上注明/proc/bus/input/devices
,但似乎没有在lsusb
或中列举/proc/bus/usb/devices
。我不确定如何访问这些设备以尝试以任何方式绑定它们或与它们接口。
event4
似乎与实际的键盘event6具有宏键相对应,但是我仍然无法捕获它们的任何输入。希望所有的帮助。
[root@kestrel input]# ls
devices handlers
[root@kestrel input]# cat handlers
N: Number=0 Name=kbd
N: Number=1 Name=mousedev Minor=32
N: Number=2 Name=evdev Minor=64
N: Number=3 Name=rfkill
[root@kestrel input]# pwd
/proc/bus/input
[root@kestrel input]# cat devices
I: Bus=0019 Vendor=0000 Product=0001 Version=0000
N: Name="Power Button"
P: Phys=PNP0C0C/button/input0
S: Sysfs=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0
U: Uniq=
H: Handlers=kbd event0
B: EV=3
B: KEY=10000000000000 0
I: Bus=0019 Vendor=0000 Product=0001 Version=0000
N: Name="Power Button"
P: Phys=LNXPWRBN/button/input0
S: Sysfs=/devices/LNXSYSTM:00/LNXPWRBN:00/input/input1
U: Uniq=
H: Handlers=kbd event1
B: EV=3
B: KEY=10000000000000 0
I: Bus=0017 Vendor=0001 Product=0001 Version=0100
N: Name="Macintosh mouse button emulation"
P: Phys=
S: Sysfs=/devices/virtual/input/input2
U: Uniq=
H: Handlers=mouse0 event2
B: EV=7
B: KEY=70000 0 0 0 0
B: REL=3
I: Bus=0003 Vendor=1532 Product=010d Version=0111
N: Name="Razer Razer BlackWidow Ultimate"
P: Phys=usb-0000:00:12.1-3/input0
S: Sysfs=/devices/pci0000:00/0000:00:12.1/usb4/4-3/4-3:1.0/input/input4
U: Uniq=
H: Handlers=kbd event4
B: EV=120013
B: KEY=1000000000007 ff9f207ac14057ff febeffdfffefffff fffffffffffffffe
B: MSC=10
B: LED=7
I: Bus=0003 Vendor=1532 Product=010d Version=0111
N: Name="Razer Razer BlackWidow Ultimate"
P: Phys=usb-0000:00:12.1-3/input1
S: Sysfs=/devices/pci0000:00/0000:00:12.1/usb4/4-3/4-3:1.1/input/input5
U: Uniq=
H: Handlers=kbd event5
B: EV=1f
B: KEY=837fff002c3027 bf00444400000000 1 c040a27c000 267bfad941dfed 9e000000000000 0
B: REL=40
B: ABS=100000000
B: MSC=10
I: Bus=0003 Vendor=1532 Product=010d Version=0111
N: Name="Razer Razer BlackWidow Ultimate"
P: Phys=usb-0000:00:12.1-3/input2
S: Sysfs=/devices/pci0000:00/0000:00:12.1/usb4/4-3/4-3:1.2/input/input6
U: Uniq=
H: Handlers=mouse2 event6
B: EV=17
B: KEY=70000 0 0 0 0
B: REL=103
B: MSC=10
I: Bus=0003 Vendor=1532 Product=0002 Version=0110
N: Name="Razer Razer Diamondback Optical Mouse"
P: Phys=usb-0000:00:12.1-2/input0
S: Sysfs=/devices/pci0000:00/0000:00:12.1/usb4/4-2/4-2:1.0/input/input9
U: Uniq=
H: Handlers=mouse1 event3
B: EV=17
B: KEY=7f0000 0 0 0 0
B: REL=103
B: MSC=10
[root@kestrel input]#