【问题标题】:X get and send keystrokes C++X 获取和发送击键 C++
【发布时间】:2012-06-03 06:03:34
【问题描述】:

我想为 linux 制作一个文本替换程序。即,我键入类似 .alog 的内容,然后将其替换为 /usr/local/apache/logs/。我知道我可以用 alaises 做到这一点,但我经常远程登录没有这种 alaises 的机器。

出于学习目的,我也有兴趣这样做。

我在网上看到一些关于在 X 中为我创建的窗口抓取和发送击键的信息,但找不到有关为工作区中的所有窗口执行此操作的信息。

任何有关如何执行此操作的建议将不胜感激。

【问题讨论】:

    标签: c++ linux keyboard xorg


    【解决方案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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-25
      • 1970-01-01
      • 2017-06-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多