directfb不能正常使用手机触摸屏的分析

来源:互联网 发布:换屏上门服务软件 编辑:程序博客网 时间:2024/06/11 08:05

使用自己的directfb,总是认不到正确的touchscreen,虽然dfb已经认出来/dev/input/event0为按键设备,/dev/input/event1为touchscreen。但是这个/dev/input/event2是没有校准过的数据,df_window运行的时候总是不正确,因为其获取到的触摸坐标总是在屏幕的最右边。以x值为例,我的这个触摸屏最右边的值大概为180,越是往左,数据值越大。结果导致从最右边在向左移动触摸点的时候,df_widow会被向右拖动,在触摸点向左走到大概屏幕中间的时候,x的值已经超过了240,故,df_window就再也拖不动了。如果/dev/input/event1传出来的是校准过的值就好了。

在directfbrc中设置了h3600的设备也不行!可能是Directfb没有认这个设备。但是单独使用ts_lib读取/dev/input/ts0,运行ts_test是可以正常运行的。

没有办法,只能把Mizi启动起来后,使用lsof | grep event看了一下,原来Mizi在运行的时候只使用了以下3个设备: 1、/dev/input/event0 #keypad

2、/dev/input/ts0 # 校准过的ts

3、/dev/input/ts_raw0 看来Mizi并没有使用我们的/dev/input/event1啊。

如果将上报给/dev/input/event1的数据修改为校准过的数据,那么我自己编译的dfb也可以正常使用触摸屏了。而对这个的修改,也不会影响 Mizi的运行。

遗留问题:

1、dfb不能使用tslib出来的数据,其实我现在也并不知道tslib读取/dev/inut/ts_raw0数据后,校准过的数据是怎么传递给其他应用程序的。

2、dfb不能直接使用h3600设备,如果配置h3600=/dev/input/ts0能生效的话,dfb也能正常使用触摸了。

3、上报给event1的数据是ts_raw0中的数据,修改为ts0中的数据肯定就没有问题了。

原创粉丝点击