Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux—无需xlib'即可获得全局按键的任何方法;什么记录?(DBus/HAL/etc?)_Linux_Ubuntu_Keypress - Fatal编程技术网

Linux—无需xlib'即可获得全局按键的任何方法;什么记录?(DBus/HAL/etc?)

Linux—无需xlib'即可获得全局按键的任何方法;什么记录?(DBus/HAL/etc?),linux,ubuntu,keypress,Linux,Ubuntu,Keypress,不管哪个窗口有焦点。人们建议看一些节目。但他们都使用XLib中的记录功能,而XLib。是否有其他方法可以捕获Ubuntu上的所有按键?用哈尔怎么样?DBus?您可以打开与键盘对应的/dev/input/eventN设备,并从中读取键盘事件。您甚至可以从非X控制台获得键盘事件。这是“evdev”接口 从内核源代码中的文档/input/input.txt: 您可以使用阻塞和非阻塞 读取,也可在 /dev/input/eventX设备,您将 始终获取完整数量的输入 读取上的事件。它们的布局是: tim

不管哪个窗口有焦点。人们建议看一些节目。但他们都使用XLib中的记录功能,而XLib。是否有其他方法可以捕获Ubuntu上的所有按键?用哈尔怎么样?DBus?

您可以打开与键盘对应的
/dev/input/eventN
设备,并从中读取键盘事件。您甚至可以从非X控制台获得键盘事件。这是“evdev”接口

从内核源代码中的
文档/input/input.txt

您可以使用阻塞和非阻塞 读取,也可在
/dev/input/eventX
设备,您将 始终获取完整数量的输入 读取上的事件。它们的布局是:

time
是时间戳,它返回 事件发生的时间。 例如,类型为 相对力矩,
REL_键
按键或释放。更多的类型是
在
include/linux/input.h
中定义

例如,
code
是事件代码
REL_X
KEY_BACKSPACE
,还是一个 完整的列表在
include/linux/input.h

value
是事件的值 携带。或者是一个相对的变化
EV\u REL
,车辆ABS的绝对新值 (操纵手柄…),或0表示<代码>电动钥匙 释放,1个用于按键,2个用于 自动回复


嗯,这不是个安全的主意。如果您的应用程序是在远程显示器上启动的,这样您将监视错误机器的键盘。你不应该以这种方式绕过Xlib。目前,我不关心远程显示或任何值得指出的花哨的东西,但OP明确要求绕过Xlib(并给出了“DBus”和“HAL”的示例,虽然它们实际上不适用于该问题,但与Xlib无关).等待或帮助上游修复--然后您将再次获得工作记录。
struct input_event {
    struct timeval time;
    unsigned short type;
    unsigned short code;
    unsigned int value;
};