最近在些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"
P: Phys=usb-0000:00:1d.0-1.4/input0
S: Sysfs=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4:1.0/input/input3
U: Uniq=
H: Handlers=mouse0 event3
B: PROP=0
B: EV