У меня ноутбук с сенсорным экраном, который откидывается достаточно, чтобы стать как планшет. Если я положу его на стол, я не хочу случайно нажимать клавиши, поэтому я работаю над сценарием, который отключает клавиатуру, когда я нажимаю 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, но как только я снова включаю, все клавиши, которые я нажал, когда она была отключена, активируются одновременно. Есть ли способ очистить очередь перед повторным включением или лучший способ отключить клавиатуру?