gpt4 book ai didi

python - 禁用键盘但继续获取事件

转载 作者:太空宇宙 更新时间:2023-11-03 11:59:52 24 4
gpt4 key购买 nike

我有一台触摸屏笔记本电脑,它可以折叠起来变成平板电脑。如果我把它放在 table 上,我不想不小心敲到键,所以我正在编写一个脚本来在我按下 Ctrl-F10 时禁用键盘,然后在我再次按下时重新启用它。我正在使用 xlib来自 PyPI,到目前为止我已经得到了这个:

from Xlib.display import Display
from Xlib.ext import xinput

class Handler:
def __init__(self, display):
self.enabled = True
self.display = display

def handle(self, event):
if event.data['detail'] == 76 and event.data['mods']['base_mods'] == 4:
if self.enabled:
self.display.grab_server()
else:
self.display.ungrab_server()
self.enabled = not self.enabled

try:
display = Display()
handler = Handler(display)
screen = display.screen()
screen.root.xinput_select_events([
(xinput.AllDevices, xinput.KeyPressMask),
])
while True:
event = display.next_event()
handler.handle(event)
finally:
display.close()

它确实禁用了 Ctrl-F10 上的键盘,但是一旦我重新启用,禁用时我按下的所有键都会立即全部激活。有没有办法在重新启用之前清除队列,或者有更好的方法来禁用键盘?

最佳答案

试试 XGrabKeyboard:https://tronche.com/gui/x/xlib/input/XGrabKeyboard.html

(但这需要您创建自己的抓取窗口;例如,您可以在位置 -10x-10 处创建一个大小为 1x1 的窗口)

我认为像 owner_eventskeyboard_mode 这样的值并不重要。主要效果应该是输入焦点转到您自己的窗口。 time 应该是 CurrentTime(即 0)并且 pointer_mode 应该是 GrabModeAsync,这样你就不会干扰指针。

关于python - 禁用键盘但继续获取事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52340527/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com