linux的gt9xx驱动中的input_report_abs函数解析
时间: 2024-03-26 22:39:35 浏览: 288
在 Linux 的 gt9xx 驱动中,input_report_abs 函数用于向输入子系统报告绝对坐标值。该函数的具体实现如下:
```
static void gt9xx_report_abs(struct gt9xx_ts_data *ts, u16 x, u16 y)
{
struct input_dev *input_dev = ts->input_dev;
input_report_abs(input_dev, ABS_MT_POSITION_X, x);
input_report_abs(input_dev, ABS_MT_POSITION_Y, y);
input_mt_sync(input_dev);
input_sync(input_dev);
}
```
该函数接受三个参数:驱动数据结构体 `ts`,以及触摸屏的 x 和 y 坐标值。该函数的作用是向输入子系统报告触摸屏的绝对坐标值,通过调用 input_report_abs 函数,向输入子系统报告输入设备的绝对坐标位置。在报告绝对坐标值之后,通过调用 input_mt_sync 函数,通知输入子系统报告多点触控事件结束。最后,通过调用 input_sync 函数,将输入事件提交给输入子系统。
需要注意的是,该函数并不是在每个触摸事件中都会被调用,通常是在触摸事件结束时被调用,以报告触摸点的最终位置。
相关问题
linux中gt9xx驱动的input_set_abs_params函数作用
`input_set_abs_params()`函数是Linux内核中Input子系统提供的一个函数,用于设置输入设备的绝对坐标参数。
在gt9xx触摸屏驱动中,`input_set_abs_params()`函数被用于设置触摸屏的X、Y坐标轴的最小值、最大值、分辨率等参数。这些参数是用来将触摸坐标转换为屏幕坐标的重要参数。例如,屏幕的分辨率为1920×1080,而触摸屏的分辨率为4096×4096,那么需要通过设置`input_set_abs_params()`函数来将触摸坐标转换为屏幕坐标。
总之,`input_set_abs_params()`函数的作用是为输入设备设置绝对坐标参数,以便于将输入设备的坐标转换为屏幕坐标或其他需要的坐标。
input_report_abs 函数
`input_report_abs`是一个Linux内核中的函数,用于向输入子系统报告绝对坐标的输入事件。绝对坐标指的是与设备固定位置相关的坐标,例如触摸屏幕上的触点位置。该函数需要传入一个`struct input_dev`类型的输入设备结构体指针,以及一个输入事件类型和值。在调用该函数后,输入子系统会将该事件放入输入队列中等待被处理。
以下是`input_report_abs`函数的声明:
```c
void input_report_abs(struct input_dev *dev, unsigned int code, int value);
```
参数说明:
- `dev`:指向输入设备结构体的指针。
- `code`:输入事件的代码,指定输入事件的类型,例如X轴坐标、Y轴坐标等。
- `value`:输入事件的值,即输入事件的具体数值,例如坐标值。
需要注意的是,在使用`input_report_abs`函数之前,需要先调用`input_allocate_absinfo`函数为输入设备结构体中的绝对坐标信息分配内存空间,并将其填充完整。否则,在调用`input_report_abs`函数时可能会出现错误。
阅读全文