Ubuntu下的一次捕捉键盘输入的实验

您所在的位置:网站首页 linux模拟键盘输入命令 Ubuntu下的一次捕捉键盘输入的实验

Ubuntu下的一次捕捉键盘输入的实验

2024-07-13 16:11| 来源: 网络整理| 查看: 265

之前一直奇怪应用程序是如何得到键盘输入的,首先这肯定与键盘的驱动程序有关,但驱动程序是如何把键盘输入传递给用户进程的?这个问题在用了windows下一个按键精灵后达到了顶峰,该案件精灵使用一个脚本表达模拟发送的键盘按键和鼠标移动,之后可以自动进行操作,这说明上层应用有操作鼠标键盘的能力.查找资料后,发现原来对于linux,鼠标和键盘驱动是这样写的: 鼠标\键盘的输入会转为/dev/input下的io事件event*,设备对应的event号可通过cat /proc/bus/input/devices查看.比如我查看该文件的内容:

I: Bus=0019 Vendor=0000 Product=0003 Version=0000 N: Name="Sleep Button" P: Phys=PNP0C0E/button/input0 S: Sysfs=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0E:00/input/input0 U: Uniq= H: Handlers=kbd event0 B: PROP=0 B: EV=3 B: KEY=4000 0 0 I: Bus=0019 Vendor=0000 Product=0001 Version=0000 N: Name="Power Button" P: Phys=PNP0C0C/button/input0 S: Sysfs=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input1 U: Uniq= H: Handlers=kbd event1 B: PROP=0 B: EV=3 B: KEY=10000000000000 0 I: Bus=0019 Vendor=0000 Product=0001 Version=0000 N: Name="Power Button" P: Phys=LNXPWRBN/button/input0 S: Sysfs=/devices/LNXSYSTM:00/LNXPWRBN:00/input/input2 U: Uniq= H: Handlers=kbd event2 B: PROP=0 B: EV=3 B: KEY=10000000000000 0 I: Bus=0019 Vendor=0000 Product=0006 Version=0000 N: Name="Video Bus" P: Phys=LNXVIDEO/video/input0 S: Sysfs=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input3 U: Uniq= H: Handlers=kbd event3 B: PROP=0 B: EV=3 B: KEY=3e000b00000000 0 0 0 I: Bus=0003 Vendor=413c Product=2113 Version=0111 N: Name="Dell KB216 Wired Keyboard" P: Phys=usb-0000:00:14.0-1/input0 S: Sysfs=/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/0003:413C:2113.0001/input/input4 U: Uniq= H: Handlers=sysrq kbd event4 leds B: PROP=0 B: EV=120013 B: KEY=1000000000007 ff9f207ac14057ff febeffdfffefffff fffffffffffffffe B: MSC=10 B: LED=1f I: Bus=0003 Vendor=413c Product=2113 Version=0111 N: Name="Dell KB216 Wired Keyboard" P: Phys=usb-0000:00:14.0-1/input1 S: Sysfs=/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.1/0003:413C:2113.0002/input/input5 U: Uniq= H: Handlers=kbd event5 B: PROP=0 B: EV=1f B: KEY=300ff 0 0 483ffff17aff32d bf54444600000000 1 130c730b17c000 267bfad941dfed 9e168000004400 10000002 B: REL=40 B: ABS=100000000 B: MSC=10 I: Bus=0003 Vendor=03f0 Product=134a Version=0111 N: Name="PixArt HP USB Optical Mouse" P: Phys=usb-0000:00:14.0-2/input0 S: Sysfs=/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/0003:03F0:134A.0003/input/input6 U: Uniq= H: Handlers=mouse0 event6 B: PROP=0 B: EV=17 B: KEY=ff0000 0 0 0 0 B: REL=103 B: MSC=10 I: Bus=0000 Vendor=0000 Product=0000 Version=0000 N: Name="HDA Intel PCH Front Mic" P: Phys=ALSA S: Sysfs=/devices/pci0000:00/0000:00:1f.3/sound/card0/input7 U: Uniq= H: Handlers=event7 B: PROP=0 B: EV=21 B: SW=10 I: Bus=0000 Vendor=0000 Product=0000 Version=0000 N: Name="HDA Intel PCH Rear Mic" P: Phys=ALSA S: Sysfs=/devices/pci0000:00/0000:00:1f.3/sound/card0/input8 U: Uniq= H: Handlers=event8 B: PROP=0 B: EV=21 B: SW=10 I: Bus=0000 Vendor=0000 Product=0000 Version=0000 N: Name="HDA Intel PCH Line" P: Phys=ALSA S: Sysfs=/devices/pci0000:00/0000:00:1f.3/sound/card0/input9 U: Uniq= H: Handlers=event9 B: PROP=0 B: EV=21 B: SW=2000 I: Bus=0000 Vendor=0000 Product=0000 Version=0000 N: Name="HDA Intel PCH Line Out Front" P: Phys=ALSA S: Sysfs=/devices/pci0000:00/0000:00:1f.3/sound/card0/input10 U: Uniq= H: Handlers=event10 B: PROP=0 B: EV=21 B: SW=40 I: Bus=0000 Vendor=0000 Product=0000 Version=0000 N: Name="HDA Intel PCH Line Out Surround" P: Phys=ALSA S: Sysfs=/devices/pci0000:00/0000:00:1f.3/sound/card0/input11 U: Uniq= H: Handlers=event11 B: PROP=0 B: EV=21 B: SW=40 I: Bus=0000 Vendor=0000 Product=0000 Version=0000 N: Name="HDA Intel PCH Line Out CLFE" P: Phys=ALSA S: Sysfs=/devices/pci0000:00/0000:00:1f.3/sound/card0/input12 U: Uniq= H: Handlers=event12 B: PROP=0 B: EV=21 B: SW=40 I: Bus=0000 Vendor=0000 Product=0000 Version=0000 N: Name="HDA Intel PCH Front Headphone" P: Phys=ALSA S: Sysfs=/devices/pci0000:00/0000:00:1f.3/sound/card0/input13 U: Uniq= H: Handlers=event13 B: PROP=0 B: EV=21 B: SW=4 I: Bus=0000 Vendor=0000 Product=0000 Version=0000 N: Name="HDA Intel PCH HDMI/DP,pcm=3" P: Phys=ALSA S: Sysfs=/devices/pci0000:00/0000:00:1f.3/sound/card0/input14 U: Uniq= H: Handlers=event14 B: PROP=0 B: EV=21 B: SW=140 I: Bus=0000 Vendor=0000 Product=0000 Version=0000 N: Name="HDA Intel PCH HDMI/DP,pcm=7" P: Phys=ALSA S: Sysfs=/devices/pci0000:00/0000:00:1f.3/sound/card0/input15 U: Uniq= H: Handlers=event15 B: PROP=0 B: EV=21 B: SW=140 I: Bus=0000 Vendor=0000 Product=0000 Version=0000 N: Name="HDA Intel PCH HDMI/DP,pcm=8" P: Phys=ALSA S: Sysfs=/devices/pci0000:00/0000:00:1f.3/sound/card0/input16 U: Uniq= H: Handlers=event16 B: PROP=0 B: EV=21 B: SW=140 I: Bus=0000 Vendor=0000 Product=0000 Version=0000 N: Name="HDA Intel PCH HDMI/DP,pcm=9" P: Phys=ALSA S: Sysfs=/devices/pci0000:00/0000:00:1f.3/sound/card0/input17 U: Uniq= H: Handlers=event17 B: PROP=0 B: EV=21 B: SW=140 I: Bus=0000 Vendor=0000 Product=0000 Version=0000 N: Name="HDA Intel PCH HDMI/DP,pcm=10" P: Phys=ALSA S: Sysfs=/devices/pci0000:00/0000:00:1f.3/sound/card0/input18 U: Uniq= H: Handlers=event18 B: PROP=0 B: EV=21 B: SW=140 I: Bus=0019 Vendor=0000 Product=0000 Version=0000 N: Name="Eee PC WMI hotkeys" P: Phys=eeepc-wmi/input0 S: Sysfs=/devices/platform/eeepc-wmi/input/input19 U: Uniq= H: Handlers=rfkill kbd event19 B: PROP=0 B: EV=100013 B: KEY=7e40000 0 800000000000 0 0 1400b00100000 300180001100800 e000000000000 2 B: MSC=10 I: Bus=0000 Vendor=0000 Product=0000 Version=0000 N: Name="HDA NVidia HDMI/DP,pcm=3" P: Phys=ALSA S: Sysfs=/devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1/input20 U: Uniq= H: Handlers=event20 B: PROP=0 B: EV=21 B: SW=140 I: Bus=0000 Vendor=0000 Product=0000 Version=0000 N: Name="HDA NVidia HDMI/DP,pcm=7" P: Phys=ALSA S: Sysfs=/devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1/input21 U: Uniq= H: Handlers=event21 B: PROP=0 B: EV=21 B: SW=140 I: Bus=0000 Vendor=0000 Product=0000 Version=0000 N: Name="HDA NVidia HDMI/DP,pcm=8" P: Phys=ALSA S: Sysfs=/devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1/input22 U: Uniq= H: Handlers=event22 B: PROP=0 B: EV=21 B: SW=140 I: Bus=0000 Vendor=0000 Product=0000 Version=0000 N: Name="HDA NVidia HDMI/DP,pcm=9" P: Phys=ALSA S: Sysfs=/devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1/input23 U: Uniq= H: Handlers=event23 B: PROP=0 B: EV=21 B: SW=140

鼠标对应event6比较明显,键盘可能是event4或event5,应用程序试了两次发现event5无效,event4有效,至于为什么有2个event对应键盘就不知道了. 应用程序如下:

//读取键盘输入 #include #include #include #include #include int main() { int fd_kb; struct input_event event_kb; fd_kb = open("/dev/input/event4", O_RDONLY); //键盘输入 if (fd_kb


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3