抓住键盘不允许改变焦点

时间:2013-08-10 10:27:19

标签: python keyboard keyboard-shortcuts xlib

一旦我使用display.grab_keyboard,似乎没有其他窗口知道它自己的焦点。

使用keyboardgrab运行我可以选择其他窗口,甚至可以向它们发送键盘事件,但如果这个窗口是文本输入,则没有闪烁的光标。

我读了一些关于生成focusevents的grab_keyboard,但这并不意味着它会阻止所有焦点事件,是吗?

我到底在哪里?

from Xlib import X,XK
from Xlib.display import Display
import signal,sys

root = None
display = None

def main():
    # current display
    global display,root
    display = Display()
    root = display.screen().root


    root.change_attributes(event_mask = X.KeyPressMask|X.KeyReleaseMask)

    root.grab_keyboard(True, X.GrabModeAsync, X.GrabModeAsync,X.CurrentTime)

    signal.signal(signal.SIGALRM, lambda a,b:sys.exit(1))
    signal.alarm(10)

    while True:
        event = display.next_event()
        print event.type

main()

1 个答案:

答案 0 :(得分:1)

您正在抓取键盘,这意味着所有键盘输入都将转到您的程序,没有其他窗口可以接收键盘输入。这就是抓住键盘的重点。