【问题标题】:How to listen for regular keys and key combinations in Python如何在 Python 中监听常规键和组合键
【发布时间】:2021-05-30 03:03:15
【问题描述】:

我想制作一个可以打印出组合键和常规键的程序。例如,如果用户输入a,我希望控制台打印'a',如果用户点击shift + a,控制台将打印'shift + a'

我应该使用什么库/代码?任何帮助表示赞赏。

【问题讨论】:

  • 也许可以试试pynput
  • 我究竟要做什么来捕获诸如“shift + a”之类的击键?每当按下不规则键和字母时,就会打印一个代码。

标签: python input keyboard


【解决方案1】:

重写pynput 示例代码,以便程序可以监视shift 键的组合。

我做了一个全局变量SHIFT_STATE来记录是否按下了shift键,我相信你可以扩展它来监控ctrlaltcmd键并使代码看起来更漂亮。

顺便说一下,图书馆有能力监控全局热键 但是我并没有过多地研究它。你可以在这里查看:https://pynput.readthedocs.io/en/latest/keyboard.html#global-hotkeys

from pynput import keyboard

SHIFT_STATE = False
def on_press(key):
    global SHIFT_STATE
    if key == keyboard.Key.shift:
        SHIFT_STATE = True
    else:
        try:
            if SHIFT_STATE:
                print(f'shift + {key}')
            else:
                print(key)
        except Exception as e:
            print(e)

def on_release(key):
    global SHIFT_STATE
    if key == keyboard.Key.esc:
        # Stop listener
        return False
    elif key == keyboard.Key.shift:
        SHIFT_STATE = False

# Collect events until released
with keyboard.Listener(
        on_press=on_press,
        on_release=on_release) as listener:
    listener.join()

这是我运行代码的屏幕截图,仅供参考

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-30
    • 1970-01-01
    • 1970-01-01
    • 2012-08-08
    • 1970-01-01
    相关资源
    最近更新 更多