Linux—无需xlib'即可获得全局按键的任何方法;什么记录?(DBus/HAL/etc?)
不管哪个窗口有焦点。人们建议看一些节目。但他们都使用XLib中的记录功能,而XLib。是否有其他方法可以捕获Ubuntu上的所有按键?用哈尔怎么样?DBus?您可以打开与键盘对应的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
/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;
};