查看文章 |
linux 下如何通过软件模拟按键[转-修改]
2009-10-29 11:10
转自:
http://zhgw01.blog.163.com/blog/static/10414812200992854628702/ 参考http://www.linuxdiyf.com/viewarticle.php?id=104221 名词解释: scancode: 驱动对硬件的标记 keycode: 上层应用程序所见的标记,跟硬件的标记不同, 一般为KEY_F1之类的宏 一般驱动将scancode绑定到keycode 对未绑定的scancode, 可以通过setkeycodes将将其绑定到未使用的keycode 注: 有些按键会被解释成acpi event, 可以通过acpi_listen来监听,但不一定成功,目前还没具体了解 模 拟按键是上层应用程序的行为, 所以不需要编译成模块,只需要想平常的应用程序那样编译就可以了, 不过它要包含<linux/input.h>这个文件, 同时要明确键盘对应的/dev/input/event[0-4]到底是哪个文件, 此外还需要以root权限来运行 赖半仙注解: 运行命令 cat /proc/bus/input/devices 在输出里面查找 xxx keyboard 对应的文件是/dev/input/event几。我开始想当然的以为键盘文件是event1,结果死人都调不出来,弄了很久最后从event0开始一个一个试,才发现我的手提电脑键盘文件对应的是event4。 在我的电脑上运行命令 ls /dev/input/event* 发现有好多输入设备………… /dev/input/event0 /dev/input/event10 /dev/input/event2 /dev/input/event4 /dev/input/event6 /dev/input/event8 /dev/input/event1 /dev/input/event11 /dev/input/event3 /dev/input/event5 /dev/input/event7 /dev/input/event9 下面是 cat /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/input4 U: Uniq= H: Handlers=kbd event4 B: EV=120013 B: KEY=8000 0 0 0 0 0 5007 2002000 380307c f800d001 feffffdf ffefffff ffffffff ffffffff B: MSC=10 B: LED=7 下面的程序是模拟按键NumLock,就是控制小键盘灯的那个按键,按下去(运行程序没有问题)后小键盘灯就会点亮或者熄灭。
|
最近读者: