这段时间写了一个windows下远程监控linux的软件,其中一个最核心的问题就是按键的模拟
windows下发送按键信号,linux下接收后然后模拟标准键盘输入
linux下有一个文件夹 /dev/input ,包含了Linux下所有的输入设备
我们用ls /dev/input 可以查看Linux下所有输入设备,比如说 event1 event2 mice 等等..
如果我们使用cat命令 cat /dev/input/mice 会发现这是个空文件,如果我们移动鼠标,然后终端下会显示写乱码,让我们停止鼠标输出就会结束
同学们可以把input文件夹下的所有文件一个一个的用cat命令打开,点击鼠标或者键盘 如果发现有乱码在终端上输出,很有可能你就找到了对应此文件的设备。
其实查找这些设备是可以通过另外一种方式 : cat /proc/bus/input/devices
其结果详细介绍了哪个event设备文件对应着哪个实际的设备 具体结果就不显示了,希望大家自己动手操作
其Linux下的鼠标键盘输入就是通过向这些设备文件写入具有特定格式的数据来实现鼠标键盘输入的效果的、
于是,我们便可以模拟这些数据格式来模拟输入
输入设备有几种文件 event、 mouse 、 mice 等
这些设备没见没有固定的数量,如果你装一个手写板,这里会有会出现一个手写板的设备文件,驱动就是通过增加这些设备文件来空着设备的,不过驱动级的Linux没哟研究过,没法给读者提供更多的知识
event 是键盘鼠标发生的事件,其数据格式linux下 linux/input.h有着详细的定义,我们可以通过event这个来模拟鼠标键盘输入,具体方法往下看
event的结构体定义如下
struct input_event {
struct timeval time;//事件发生时间
__u16 type; //事件类型
__u16 code; //事件码
__s32 value; //事件值
};
mouse 是鼠标 (没搞明白,反正是鼠标)
mice 是鼠标的集合,所有鼠标事件都会发送到这个文件里面的 并且他的存储的数据格式和event的不一样 所以我们不能通过mice来实现我们的目的
比如