python - 如何使用pynput收听带有修饰键组合的字母键?
问题描述
我正在尝试使用 python 自动化一些东西。我使用 pynput 来监听组合键。我正在尝试听 ctrl+shift+alt 的组合。我对修饰键没有问题,但只有字母键。我查看了 python 文档页面并尝试了以下操作:
from pynput import keyboard
from subprocess import Popen, PIPE
from evdev import uinput, ecodes as e
import os
# The key combination to check
COMBINATION = {keyboard.Key.shift, keyboard.Key.ctrl, keyboard.Key.alt, keyboard.KeyCode.from_char('k')}
# The currently active modifiers
current = set()
def on_press(key):
if key in COMBINATION:
current.add(key)
if all(k in current for k in COMBINATION):
print("x")
if key == keyboard.Key.esc:
listener.stop()
def on_release(key):
try:
current.remove(key)
except KeyError:
pass
with keyboard.Listener(on_press=on_press, on_release=on_release) as listener:
listener.join()
从终端运行 python 文件后,脚本无法检测到我的组合键。
解决方案
从文档中,您可以使用此方法。https://pynput.readthedocs.io/en/latest/keyboard.html
from pynput import keyboard
def on_activate():
print('Global hotkey activated!')
def for_canonical(f):
return lambda k: f(l.canonical(k))
hotkey = keyboard.HotKey(
keyboard.HotKey.parse('<ctrl>+<alt>+h'),
on_activate)
with keyboard.Listener(
on_press=for_canonical(hotkey.press),
on_release=for_canonical(hotkey.release)) as l:
l.join()
推荐阅读
- python - 修改 Python 函数
- extjs - ExtJS 6/7 - 带有标签字段编辑器的单元格在编辑后被标记为脏,即使值不变
- python - 如果不满足条件,则删除组中的所有行
- excel - 如何将此 VBA 代码应用于两个指定的工作表?
- javascript - 如何在多个 HTML 页面之间共享 Javascript 类
- reactjs - 反应高阶功能以插入随机图像在重新渲染时不起作用
- sage - SAGE:寻找置换群的自同构群
- c++ - DirectX 9 中的数据流是什么?
- powershell - 启动 IIS 应用程序池的权限不足 - 即使用户是管理员组的一部分
- javascript - 当我尝试做 ParentNode.children 时,说无法读取未定义的属性“孩子”