使用python xlib全局捕获,忽略和发送关键事件,识别假输入

使用python xlib全局捕获,忽略和发送关键事件,识别假输入,第1张

使用python xlib全局捕获,忽略和发送关键事件,识别假输入

我发现了问题。我几乎可以肯定xtest.fake_input会做一些奇怪的事情,因为当我手动发送按键和-
releases时(发现了一些代码),它可以工作

这是一个示例,该示例仅吞下按键时的“ 1”键并将按键释放时的“ x”发送到焦点窗口:

from Xlib.display import Displayimport Xlibfrom Xlib import Ximport Xlib.XKimport sysimport signal import timedisplay = Noneroot = Nonedef handle_event(event):    print "handle!"    if (event.type == X.KeyRelease):        send_key("x")# from http://shallowsky.com/software/crikey/pykey-0.1 def send_key(emulated_key):    shift_mask = 0 # or Xlib.X.ShiftMask    window = display.get_input_focus()._data["focus"]    keysym = Xlib.XK.string_to_keysym(emulated_key)    keypre = display.keysym_to_keypre(keysym)    event = Xlib.protocol.event.KeyPress(        time = int(time.time()),        root = root,        window = window,        same_screen = 0, child = Xlib.X.NONE,        root_x = 0, root_y = 0, event_x = 0, event_y = 0,        state = shift_mask,        detail = keypre        )    window.send_event(event, propagate = True)    event = Xlib.protocol.event.KeyRelease(        time = int(time.time()),        root = display.screen().root,        window = window,        same_screen = 0, child = Xlib.X.NONE,        root_x = 0, root_y = 0, event_x = 0, event_y = 0,        state = shift_mask,        detail = keypre        )    window.send_event(event, propagate = True)def main():    # current display    global display,root    display = Display()    root = display.screen().root    # we tell the X server we want to catch keyPress event    root.change_attributes(event_mask = X.KeyPressMask|X.KeyReleaseMask)    # just grab the "1"-key for now    root.grab_key(10, 0, True,X.GrabModeSync, X.GrabModeSync)    signal.signal(signal.SIGALRM, lambda a,b:sys.exit(1))    signal.alarm(10)    while 1:        event = display.next_event()        print "event"        handle_event(event)        display.allow_events(X.AsyncKeyboard, X.CurrentTime)if __name__ == '__main__':    main()


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5013963.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-14
下一篇2022-11-14

发表评论

登录后才能评论

评论列表(0条)

    保存