I was looking at how to capture global kepresses on Ubuntu Linux无论哪个窗口都有焦点。人们建议看一些程序。但他们都在XLib中使用RECORD,is broken in Ubuntu。有没有其他方法来捕获Ubuntu上的所有按键?如何使用HAL?的DBus?
答案 0 :(得分:2)
您可以打开与键盘对应的/dev/input/eventN
设备,并从那里读取键盘事件。您甚至可以从非X控制台获取键盘事件。这是“evdev”界面。
来自内核源代码中的Documentation/input/input.txt
:
您可以使用阻止和非阻止 读,也是
select()
/dev/input/eventX
设备,你会 总是得到一大堆输入 阅读中的事件。他们的布局是:
struct input_event {
struct timeval time;
unsigned short type;
unsigned short code;
unsigned int value;
};
例如,
time
是时间戳,它返回 事件发生的时间。 类型为例如EV_REL
相对时刻,REL_KEY
表示 按键或释放。更多类型 在include/linux/input.h
中定义。
code
是事件代码REL_X
或KEY_BACKSPACE
,再次a 完整列表在include/linux/input.h
。
value
是事件的值 携带。要么相对改变EV_REL
,EV_ABS
的绝对新值 (操纵杆......),或EV_KEY
为0 释放,1为按键,2为 自动重复。