Python键盘库不抑制Linux上的击键
Posted
技术标签:
【中文标题】Python键盘库不抑制Linux上的击键【英文标题】:Python Keyboard library not suppressing keystrokes on Linux 【发布时间】:2019-11-12 13:55:21 【问题描述】:我正在制作一个脚本,使用称为keyboard
的Python
库将单个键(右-ctrl)重新映射到alt+tab
。在windows
上使用Autohotkey
很容易做到这一点,但是,这在Linux
上似乎是不可能的。毕竟在keyboard
文档中他们有funcion(param, param,
Suppress=False)
,所以它应该可以正常工作吗?
import keyboard
def altTab:
keyboard.release(97)
keyboard.send("alt+tab")
# 97 is the key_code for [right ctrl] on my system
keyboard.on_press_key(97, altTab, suppress=True)
我尝试从代码的角度释放密钥,但它似乎不起作用,因为ctrl+alt+tab
与alt+tab
不同。我还尝试使用keyboard.remap_key
函数将right ctrl
更改为right alt
,并将right alt
更改为left alt
,以便right alt
可以工作,然后只发送tab
而不是alt+tab
,但它仍然不起作用。我正在使用Ubuntu Linux
。
请帮忙,我被难住了
【问题讨论】:
【参考方案1】:你需要hook_key
,即每次按下提供的键时调用提供的回调的方法:
import keyboard
def altTab(e):
if e.event_type == "down":
keyboard.release(97)
keyboard.send("alt+tab")
# 97 is the key_code for [right ctrl] on my system
keyboard.hook_key(97, altTab, suppress=True)
编辑:添加了仅处理按键的代码。
【讨论】:
虽然这确实有效,但它与keyboard.on_release_key
基本上是一样的,这不是我想要的,我需要 keyboard.on_press_key
,所以谢谢,但这不是我想要的对于
这个答案对我也不起作用,因为它在按下(但显然不起作用)和发布时(这不是我想要的)都会触发
Docs 说它可以同时处理这两个问题。根据您的需要测试和更改 altTab 方法。
还是不行,兄弟,这是keyboard.on_press_key
的草率(不是粗鲁或任何东西)版本(这不是你说的一次)
我已经查看了pynput
,但是,它需要一个活动的X server
...我正在尝试使用x server
来实现此不跨度>
以上是关于Python键盘库不抑制Linux上的击键的主要内容,如果未能解决你的问题,请参考以下文章
如何对 NSUndoManager+UITextInput 的击键进行分组