最近在些GUI程序,之前也写过一些。长久以来一直对其中一些问题有些好奇,如:鼠标事件和键盘事件是如何获取如何引入程序的,GUI底层绘制操作又是怎么实现的。最近花了点事件学习了下其底层的实现,在这里做个笔记。
LINUX下输入设备放在/dev/input/下,我的电脑该目录内容为:
lc@lc-Lenovo:~/work/sources$ cd /dev/input/
lc@lc-Lenovo:/dev/input$ ls
by-id event0 event10 event3 event5 event7 event9 mouse0
by-path event1 event2 event4 event6 event8 mice
这么多设备我们需要知道哪个设备对应鼠标哪个对应键盘,可以查看文件/proc/bus/input/devices,我的电脑下该文件鼠标和键盘相关信息为:
I: Bus=0011 Vendor=0001 Product=0001 Version=ab41
N: Name="AT Translated Set 2 keyboard"
P: Phys=isa0060/serio0/input0
S: Sysfs=/devices/platform/i8042/serio0/input/input2
U: Uniq=
H: Handlers=sysrq kbd event2
B: PROP=0
B: EV=120013
B: KEY=4 2000000 3803078 f800d001 feffffdf ffefffff ffffffff fffffffe
B: MSC=10
B: LED=7
I: Bus=0003 Vendor=17ef Product=6019 Version=0111
N: Name="Logitech Lenovo USB Optical Mouse"

这篇博客探讨了LINUX系统中输入设备,如鼠标和键盘的驱动机制。作者指出,这些设备在/dev/input/目录下,并拥有唯一ID。通过获取设备句柄并使用SELECT或epoll监听,可以在设备有事件时读取并处理输入信息。文章以输入事件的分发和鼠标右键操作为例,展示了事件处理的过程。
最低0.47元/天 解锁文章
2071

被折叠的 条评论
为什么被折叠?



