我知道其中有一些,但很多答案总是有很多但是,如果,你不应该那样做。
我想要做的是有一个后台程序,可以从X11. 这是在嵌入式设备上,它将有一个主要以自助服务终端模式运行的主应用程序。我们想要一个后台应用程序来管理一些事情,可能还有一个后门挂钩。但是这个应用程序一般不会有焦点。
我不能使用主应用程序,因为如果主应用程序发生故障,它部分存在故障安全,或者做一些开发类型的事情来绕过主应用程序。
我发现的最好的问题是几年前的,所以我不确定它是最新的。这对于 Windows 来说非常容易。
这样做的正确方法是使用Xlib。使用这个库,您可以编写如下代码:
while (1) {
XNextEvent(dis, &report);
switch (report.type) {
case KeyPress:
if (XLookupKeysym(&report.xkey, 0) == XK_space) {
fprintf (stdout, "The space bar was pressed.\n");
}
break;
}
}
/*This event loop is rather simple. It only checks for an expose event. XNextEvent waits for an event to occur. You can use other methods to get events, which are documented in the manual page for XNextEvent.*/
/*Now you will learn how to check if an event is a certain key being pressed. The first step is to put case KeyPress: in your switch for report.type. Place it in a similar manner as case Expose.*/
Run Code Online (Sandbox Code Playgroud)
您也可以在映射到键盘的特殊设备文件上使用轮询或选择。在我的情况下是/dev/input/event1.
如果您对映射到键盘的特殊文件有疑问,请阅读该文件/var/log/Xorg.0.log(搜索单词keyboard)。
这里还有一个你感兴趣的链接:Linux 键盘事件捕获 /dev/inputX
| 归档时间: |
|
| 查看次数: |
5680 次 |
| 最近记录: |