c++ - X 获取和发送击键 C++

标签 c++ linux keyboard xorg

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

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

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

如有任何建议,我们将不胜感激。

最佳答案

您可能希望从窗口管理器的代码开始;无论窗口如何,窗口管理器都绑定(bind)键来工作,这可能是一个好的开始。 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();

关于c++ - X 获取和发送击键 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10791962/

相关文章:

c++ - 想要创建一个在内存中存储数据的应用程序。但即使我的应用程序崩溃,我也不希望数据丢失

JPanel 中的 java swing 快捷键/键绑定(bind)

c++ - 如何在 C++ 中定义 vector <boost::mutex>?

c++ - C 是否有任何 setfill() 替代方案?

linux - 下载文件夹中的所有图像

java - hbase 连接被拒绝

python - 如何检测python中的当前键盘语言

命令行 C 和键盘快捷键(在 Mac OS 中)

c++ - 如何同步访问 NAS 上文件的两个进程?

c++ - Char * w/内存泄漏