我正在研究如何在 Ubuntu Linux 上捕获全局键,无论哪个窗口有焦点。人们建议看一些节目。但是他们都使用 XLib 中的 RECORD 东西,这在 Ubuntu 中被破坏了。还有其他方法可以捕获 Ubuntu 上的所有按键吗?使用 HAL 怎么样?总线?
1916 次
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_X或KEY_BACKSPACE,又是一个完整列表include/linux/input.h。
value是事件携带的价值。要么是相对变化 ,要么是 (操纵杆...)的EV_REL绝对新值,要么是 0表示释放,1 表示按键,2 表示自动重复。EV_ABSEV_KEY
于 2009-12-15T10:59:00.757 回答