```cpp
void EventNormalizeHandler::HandleEvent(libinput_event* event)
{
CALL_DEBUG_ENTER;
CHKPV(event);
DfxHisysevent::GetDispStartTime();
auto type = libinput_event_get_type(event);
// ......
switch (type) {
case LIBINPUT_EVENT_DEVICE_ADDED: {
OnEventDeviceAdded(event);
break;
}
case LIBINPUT_EVENT_DEVICE_REMOVED: {
OnEventDeviceRemoved(event);
break;
}
case LIBINPUT_EVENT_KEYBOARD_KEY: {
HandleKeyboardEvent(event);
DfxHisysevent::CalcKeyDispTimes();
break;
}
case LIBINPUT_EVENT_POINTER_MOTION:
case LIBINPUT_EVENT_POINTER_MOTION_ABSOLUTE:
case LIBINPUT_EVENT_POINTER_BUTTON:
case LIBINPUT_EVENT_POINTER_BUTTON_TOUCHPAD:
case LIBINPUT_EVENT_POINTER_AXIS:
case LIBINPUT_EVENT_POINTER_TAP:
case LIBINPUT_EVENT_POINTER_MOTION_TOUCHPAD: {
HandleMouseEvent(event);
DfxHisysevent::CalcPointerDispTimes();
break;
}
// ......
case LIBINPUT_EVENT_SWITCH_TOGGLE: {
HandleSwitchInputEvent(event);
break;
}
default: {
MMI_HILOGW("This device does not support :%d", type);
break;
}
}
DfxHisysevent::ReportDispTimes();
}
```
在另一个cmd窗口位置监听
D:>hdc shell
# vdevadm monitor -t M
Monitor for position of current pointer
current pointer position - x: 347 y: 640
```
### 2. 虚拟鼠标设备
```
vdevadm mount -t M 加载虚拟鼠标
vdevadm unmount -t M 卸载虚拟鼠标
vdevadm monitor -t M 实时获取当前鼠标光标位置
vdevadm act -t M -r <file> 从指定文件(原始事件的注入)中读取鼠标操作命令,并执行
vdevadm act -t M -f <file> 从指定文件(鼠标动作的注入)中读取鼠标操作命令,并执行
vdevadm act -t M -d L/M/R 按下鼠标左键/中键/右键
vdevadm act -t M -m dx dy 移动鼠标
vdevadm act -t M -u L/M/R 抬起鼠标左键/中键/右键
vdevadm act -t M -s dy 滚动鼠标滚轮
vdevadm act -t M -M x y 鼠标移动到<x,y>
vdevadm act -t M -w <ms> 等待<ms>毫秒
vdevadm act -t M -D x y 拖拽到
```
### 3. 虚拟触摸屏设备
```
vdevadm mount -t T 加载虚拟触摸屏
vdevadm unmount -t T 卸载虚拟触摸屏
vdevadm clone -t T 当前已存在的物理触屏设备,创建虚拟触屏设备
vdevadm act -t T -r <file> 从指定文件(原始事件的注入)中读取触摸屏操作命令,并执行
vdevadm act -t T -f <file> 从指定文件(触摸屏动作的注入)中读取触摸屏操作命令,并执行
vdevadm act -t T -d <0-9> x y 按下手指(slot,按下的位置)
vdevadm act -t T -m <0-9> dx dy 移动手指
vdevadm act -t T -D <0-9> sx sy tx ty 拖拽到tx ty
vdevadm act -t T -u <0-9> 抬起手指
vdevadm act -t T -M <0-9> x y 手指移动到(x,y)
vdevadm act -t T -w <ms> 等待<ms>毫秒
```
### 4. 虚拟键盘设备
```
vdevadm mount -t K 加载虚拟键盘
vdevadm unmount -t K 卸载虚拟键盘
vdevadm act -t K -d <key> 按下按键<key>
vdevadm act -t K -u <key> 抬起按键<key>
vdevadm act -t K -w <ms> 等待<ms>毫秒
vdevadm act -t K -r <file> 从指定文件(原始事件的注入)中读取键盘操作命令,并执行
vdevadm act -t K -f <file> 从指定文件(键盘动作的注入)中读取键盘操作命令,并执行
```