1

当我在android框架中得到一个带有坐标的触摸事件时,我可以使用ioctl将用户事件发送到内核,然后让驱动程序将其转换为系统输入事件。(使用:input_sync、input_report_key、input_report_abs等)

问题是:

据我所知,android swipe 事件可能是这样的:(swipe down) { type, code, value }

    {3,48,5}, {3,50,1}, {3,53,240}, {3,54,400},
    {1,330,1},

    {3,58,255}, {3,57,0},
    {0,2,0},{0,0,0},

    {3,48,0},{3,50,1},{3,53,240},{3,54,450},{3,58,255},{3,57,0},
    {0,2,0},{0,0,0},

    {3,0,0},{3,1,450},{3,57,15},
    {0,0,0},{1,330,0},

    {3,48,0},{3,50,1},{3,53,240},{3,54,450},{3,58,0},
    {0,2,0},{0,0,0}

type=0,代表同步

type=1,代表key

type=3, code=53,54, value代表坐标

type=3,code=48,50,57,58,value代表触控工具属性。

所以只有type=3、code=53,54或type=1是输入参数,其他的需要在用户事件到系统事件的转换中插入。

我应该这样编码:

// in driver
if ( get an event )
{
    report touch tool event;    
    report the x,y/key event;   // from input params
    report the sync event;
}

还是有更好的方法?

谢谢你。

4

1 回答 1

0

找到了linux的uinput接口,可以更方便的在用户空间生成输入事件。

http://thiemonge.org/getting-started-with-uinput

于 2012-10-31T02:57:09.513 回答