【发布时间】:2018-09-15 00:10:56
【问题描述】:
我有一台触摸屏笔记本电脑,它可以折叠得足以像平板电脑一样。如果我把它放在桌子上,我不想意外地敲击键,所以我正在编写一个脚本,当我按下 Ctrl-F10 时禁用键盘,然后在我再次这样做时重新启用它。我正在使用来自 PyPI 的xlib,到目前为止我已经得到了这个:
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 上的键盘,但是一旦我重新启用,我在禁用它时按下的所有键都会立即全部激活。有没有办法在重新启用之前清除队列,或者有更好的方法来禁用键盘?
【问题讨论】: