X获取并发送击键C ++

时间:2012-05-29 01:02:39

标签: c++ linux keyboard xorg

我想为linux制作文本替换程序。即我键入类似.alog的东西,它被/ usr / local / apache / logs /替换。我知道我可以用alaises做到这一点,但是我经常远程登录没有这些问题的机器。

我也有兴趣为学习目的这样做。

我在网上看到一些关于抓取并在X中发送按键的信息,但我找不到工作区中所有窗口的信息。

非常感谢任何有关如何执行此操作的建议。

1 个答案:

答案 0 :(得分:1)

您可能希望以窗口管理器的代码作为起点;窗口管理器将键绑定到工作而不管窗口,这可能是一个好的开始。 dwm被广泛认为具有漂亮的代码。

setup()似乎直接将其事件掩码添加到根窗口:

    screen = DefaultScreen(dpy);
    root = RootWindow(dpy, screen);
    /* ... */
    /* select for events */
    wa.cursor = cursor[CurNormal];
    wa.event_mask = SubstructureRedirectMask|SubstructureNotifyMask|ButtonPressMask|PointerMotionMask
                    |EnterWindowMask|LeaveWindowMask|StructureNotifyMask|PropertyChangeMask;
    XChangeWindowAttributes(dpy, root, CWEventMask|CWCursor, &wa);
    XSelectInput(dpy, root, wa.event_mask);
    grabkeys();