当我在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;
}
还是有更好的方法?
谢谢你。