正如synthesizerpatel所说,我需要进入一个较低的层次。在
使用pyusb:import usb.core, usb.util, usb.control
dev = usb.core.find(idVendor=0x045e, idProduct=0x0780)
try:
if dev is None:
raise ValueError('device not found')
cfg = dev.get_active_configuration()
interface_number = cfg[(0,0)].bInterfaceNumber
intf = usb.util.find_descriptor(
cfg, bInterfaceNumber=interface_number)
dev.is_kernel_driver_active(intf):
dev.detach_kernel_driver(intf)
ep = usb.util.find_descriptor(
intf,
custom_match=lambda e: usb.util.endpoint_direction(e.bEndpointAddress) == usb.util.ENDPOINT_IN)
while True:
try:
# lsusb -v : find wMaxPacketSize (8 in my case)
a = ep.read(8, timeout=2000)
except usb.core.USBError:
pass
print a
except:
raise
这将给您一个输出:array('B', [0, 0, 0, 0, 0, 0, 0, 0])
阵列位置:
0:和修改键(1-控制键,2-移位键,4-元键,8-超级键)
1: 不知道
2-7:按键的按键代码。在
所以:
^{pr2}$
是:ctrl+shift+numpad1+numpad2+numpad3+numpad4+numpad5+numpad6
如果有人知道第二个索引存储了什么,那就太棒了。在