我正在研究如何在 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_ABS
EV_KEY
于 2009-12-15T10:59:00.757 回答