gpt4 book ai didi

python - 在 Python 中获取按键的键盘代码

转载 作者:太空狗 更新时间:2023-10-30 01:22:39 24 4
gpt4 key购买 nike

我正在尝试获取在 python 中按下的字符的键盘代码。为此,我需要查看是否按下了键盘数字。

这不是我要找的:

import tty, sys

tty.setcbreak(sys.stdin)

def main():
tty.setcbreak(sys.stdin)
while True:
c = ord(sys.stdin.read(1))
if c == ord('q'):
break
if c:
print c

输出字符的ascii码。这意味着,我得到的键盘 1 与普通键盘 1 的顺序相同。我还使用 curses 库和 raw 尝试了类似的设置,结果相同。

我正在尝试获取原始键盘代码。如何做到这一点?

最佳答案

正如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:修改键的 AND(1 - control,2 - shift,4 - meta,8 - super) 1:不知道 2 -7:按下的键码。

所以:

[3, 0 , 89, 90, 91, 92, 93, 94]

是:

ctrl+shift+numpad1+numpad2+numpad3+numpad4+numpad5+numpad6

如果有人知道第二个索引存储什么,那就太棒了。

关于python - 在 Python 中获取按键的键盘代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20369642/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com