使用 pynput 键盘检测 alt 键的按下情况

问题描述 投票:0回答:2

当我用 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()

但显然,我什至无法达到这一点。帮忙吗?

python keyboard pynput
2个回答
0
投票

我不明白你为什么用

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()

0
投票

我只是用下面的。

如果 key == key.alt :

为我工作。就我而言,我想使用 f7 键,所以它是 key.f7。

© www.soinside.com 2019 - 2024. All rights reserved.