3

我正在研究如何在 Ubuntu Linux 上捕获全局键,无论哪个窗口有焦点。人们建议看一些节目。但是他们都使用 XLib 中的 RECORD 东西,这在 Ubuntu 中被破坏了。还有其他方法可以捕获 Ubuntu 上的所有按键吗?使用 HAL 怎么样?总线?

4

1 回答 1

3

您可以打开与/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,又是一个完整列表 include/linux/input.h

value是事件携带的价值。要么是相对变化 ,要么是 (操纵杆...)的EV_REL绝对新值,要么是 0表示释放,1 表示按键,2 表示自动重复。EV_ABSEV_KEY

于 2009-12-15T10:59:00.757 回答