来自android内核的Simulte触摸事件

时间:2017-05-04 13:02:35

标签: android c linux-kernel android-kernel

我在android内核中开发了一个新的触摸屏驱动程序。 我的目标是模拟触摸屏事件。 因此,在我的新驱动程序的探测中,我分配了所需的键:

input_set_abs_params(in_dev, ABS_MT_TRACKING_ID, 10000, 0, 0);
input_set_abs_params(in_dev, ABS_MT_POSITION_Y, 0, 1000, 0, 0);
input_set_abs_params(in_dev, ABS_MT_POSITION_X, 0,1000, 0, 0);
input_set_abs_params(in_dev, ABS_MT_TOUCH_MAJOR,0,1000,0, 0);
input_set_abs_params(in_dev, ABS_MT_TOUCH_MINOR,0,1000,0, 0);

在代码中我尝试模拟触摸屏事件:

input_event(in_dev, EV_ABS, ABS_MT_TRACKING_ID, ++counter);
input_event(in_dev, EV_KEY, BTN_TOUCH, 1);
input_event(in_dev, EV_KEY, BTN_TOOL_FINGER, 1);

input_event(in_dev, EV_ABS, ABS_MT_POSITION_X, 0x00000336);
input_event(in_dev, EV_ABS, ABS_MT_POSITION_Y, 0x0000059a);
input_event(in_dev, EV_ABS, ABS_MT_TOUCH_MAJOR, 7);
input_event(in_dev, EV_ABS, ABS_MT_TOUCH_MINOR, 6);

input_event(in_dev, EV_ABS, ABS_MT_TRACKING_ID, 0xffffffff); 
input_event(in_dev, EV_KEY, BTN_TOUCH, 0);
input_event(in_dev, EV_KEY, BTN_TOOL_FINGER, 0);

知道我可以使用正确的值看到我shell中的几乎所有事件(只有我无法在shell中看到的BTN_TOUCH事件)。 此外,我在手机屏幕的一角看到一个圆圈。但是这个圈子什么也做不了。几秒后它就消失了。

我会批评你的帮助。我觉得我在这里错过了一些东西......

1 个答案:

答案 0 :(得分:0)

您需要在&#34; / system / usr / idc&#34;中包含相应的布局文件。和&#34; / system / usr / keylayout&#34;它匹配您的输入设备名称(/ sys / class / inputX / name&#34;中的那个)。您可以从那里获取现有的一个作为示例,只需复制或查看Google Pixel树https://android.googlesource.com/device/google/marlin/+/o-preview < / p>