【问题标题】:Check key pressed before begin script在开始脚本之前检查按下的键
【发布时间】:2021-12-20 18:45:18
【问题描述】:

如果按下 Ctrl 键,我希望我的配置菜单在脚本开始时打开。也就是说,用户将在脚本开始运行之前开始按键。 拦截我试过keyboard.is_pressed('ctrl'),但总是返回false。

我也尝试过keyboard.read_key,但这种方法给我带来了两个问题: 如果未按下,则程序不会继续运行。 如果按下它,只有当我松开控制键时它才会继续运行。

也许我只需要考虑另一种打开此菜单的方法。

【问题讨论】:

    标签: python keyboard


    【解决方案1】:

    我假设您为此使用 keyboard 模块。查看代码,该库似乎是基于事件的,因此如果在程序启动之前按下 CTRL 键,则程序无法识别它。

    我的建议是使用 sys 库直接从标准输入读取。但是,查看How to get Ctrl, Shift or Alt with getch() ncurses?,似乎 CTRL、ALT 和 SHIFT 不会生成自己的标准输入输入,而是修改现有输入,因此您可能应该考虑使用另一个键作为修饰符。您还需要一个超时,Read file with timeout in Python 建议选择模块提供。如果您还不知道,sys.stdin 是您的标准输入,您可以像对待任何其他文件一样对待它。

    【讨论】:

    • 目前它是一个我可以假设它将在 Windows 中执行的代码。 win32api 库可用于此。它似乎没有问题。
    【解决方案2】:

    假设我的代码将在 Windows 上运行,并且由于我在 C++ 方面的经验,我想出了win32api 模块。

    # Windows module to controll the keyboard
    import win32api
    # Windows module with every key code
    import win32con
    
    # Check whether the control key is pressed
    if win32api.GetAsyncKeyState(win32con.VK_CONTROL) & 0x8000 > 0:
        # Do stuff
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-25
      • 1970-01-01
      • 1970-01-01
      • 2021-08-23
      相关资源
      最近更新 更多