Linux - 没有xlib的RECORD获取全局KeyPresses的任何方法? (的DBus / HAL /等?)

时间:2009-12-15 10:26:41

标签: linux ubuntu keypress

I was looking at how to capture global kepresses on Ubuntu Linux无论哪个窗口都有焦点。人们建议看一些程序。但他们都在XLib中使用RECORD,is broken in Ubuntu。有没有其他方法来捕获Ubuntu上的所有按键?如何使用HAL?的DBus?

1 个答案:

答案 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_XKEY_BACKSPACE,再次a   完整列表在   include/linux/input.h

     

value是事件的值   携带。要么相对改变   EV_RELEV_ABS的绝对新值   (操纵杆......),或EV_KEY为0   释放,1为按键,2为   自动重复。