当我用 pynput 按下 alt 键时,我试图按住它。我检查了文档,但找不到说明如何调用所有特定键或检测所有特定键的列表。所以这很糟糕。
我使用了他们千篇一律的代码来检测按键来尝试检测按键:
从 pynput.keyboard 导入按键、监听器
def on_press(key):
print('{0} pressed'.format(
key))
def on_release(key):
print('{0} release'.format(
key))
if key == Key.esc:
# Stop listener
return False
# Collect events until released
with Listener(
on_press=on_press,
on_release=on_release) as listener:
listener.join()
但是当我尝试像这样修改它时......
from pynput import keyboard
def on_press(key):
try:
print('Alphanumeric key pressed: {0} '.format(
key.char))
except AttributeError:
print('special key pressed: {0}'.format(
key))
def on_release(key):
print('Key released: {0}'.format(
key))
if key == keyboard.Key.alt_1: <------ this
print('test')
# Collect events until released
with keyboard.Listener(
on_press=on_press,
on_release=on_release) as listener:
listener.join()
当我尝试按
alt
或我为 if 语句选择的任何键时,它就会退出。
理想情况下,我想这样做:
from pynput import keyboard
def on_release(key):
if key == keyboard.Key.alt_1:
keyboard.press.alt_1
# Collect events until released
with keyboard.Listener(on_release=on_release) as listener:
listener.join()
但显然,我什至无法达到这一点。帮忙吗?
我不明白你为什么用
alt_1
而不是alt
。
如果你想发送一些密钥,那么你必须使用
Controller()
此代码对我有用
from pynput.keyboard import Key, Listener, Controller
def on_press(key):
print(f'{key} pressed')
def on_release(key):
print(f'{key} released')
if key == Key.alt:
print('>>> I press ALT <<<')
controller.press(Key.alt)
if key == Key.esc:
# Stop listener
return False
#--- main ---
controller = Controller()
# Collect events until released
with Listener(on_press=on_press,on_release=on_release) as listener:
# ... other code ...
listener.join()
我只是用下面的。
如果 key == key.alt :
为我工作。就我而言,我想使用 f7 键,所以它是 key.f7。