我将Android姜饼移植到我的自定义板(使用三星S5PV210处理器)。我有一个ESC7000芯片的触摸屏。我在/kernel/drivers/input/touchscreen/usbtouchscreen.c中找到了一个驱动程序。它几乎可以工作,但是USB数据包的位范围,顺序和字节顺序都不好。我修改了代码以获得正确的RAW位置(在控制台上使用printk来查看它),现在它几乎可以工作。我的数据范围从xmin,ymin到xmax,ymax是420,430到3650,3650,而理论上应该是0,0到4095,4095。这并不奇怪,因为电容式触摸需要校准。这是一个简单的校准,如每个轴的y = mx + b(简单线性校准)。我环视四周的司机,我无法弄清楚校准处理的地方。它必须是可编程的,因为它依赖于单元,并且要在系统生产中对每个单元进行一次校准。我想像其他Android设备那样干净。任何人都知道校准信息存储在Android系统中的位置?代码在做补偿计算。任何网络搜索都会提供有关要重新校准手机的人的信息。所以对我来说没用。触摸屏校准值,它是如何在Android/Kernel中完成的?
4
A
回答
3
看一看以下螺纹:https://groups.google.com/forum/#!msg/rowboat/jlbwnmCIDg0/makHFil31pQJ
在挣值管理系统,我们通过校准值(或让我们说硬编码值 为Xmin时/最大值,YMIN/max和XY分辨率)从司机用户 空间。
...原始事件都在这里
frameworks/base/libs/ui/InputReader.cpp
SingleTouchInputMapper::process(const RawEvent* rawEvent)
处理,将处理单个触摸设备 原始事件。 ABS_X和ABS_Y是从驱动程序传递的值 ,这些是我在前一封邮件中告诉过您的情况下的绝对坐标我们的 。纠正我,如果我错了,afaik Android手机没有机制做 校准从用户空间。这是Android 手机中的一种标准,用于从驱动程序本身发送校准值。
我的建议是,使用tslib来校准并让它存储在/ etc/pointercal中的值。在
SingleTouchInputMapper::sync(nsecs_t when)
中,通过解析/ etc/pointercal文件中的值来计算绝对坐标。
相关问题
- 1. 触摸屏校准
- 2. 旋转的debian触摸屏上的触摸屏校准错误
- 3. 重新加载tslib触摸屏校准
- 4. XINPUT触摸屏校准不一致
- 5. 通过xfce4校准触摸屏
- 6. 校准转速带触摸
- 7. Android如何以编程方式校准触摸屏
- 8. 触摸校准不可能韦兰
- 9. 上完成触摸
- 10. WinCE中的屏幕校准
- 11. 如何测试触摸屏(而不是“触摸功能”)?
- 12. 如何在android中禁用触摸屏?
- 13. 如何在触摸屏中滚动ListView
- 14. 如何在Unity3D中使用触摸屏?
- 15. 完成触摸后ImageView
- 16. UIView完成触摸编程
- 17. iPhone SDK - 我在哪里完成了触摸屏幕?
- 18. 已安装触摸屏和驱动程序,但tslib无法校准
- 19. 使用GetSystemMetrics如何确定屏幕是否是触摸屏
- 20. 如何在触摸屏时保留onTouchEvent?
- 21. 您如何重新校准Qt应用程序的触摸事件?
- 22. JsPlumb触摸屏
- 23. 如何检测设备是否在Titanium中有触摸屏?
- 24. Android的 - 触摸屏
- 25. 使用触摸屏键盘自动完成工作
- 26. Fitts Law,将它应用于触摸屏
- 27. 完成(关闭)触摸的Android活动
- 28. 在iPhone中触发完成按钮触摸
- 29. 在非触摸屏安卓设备上模拟触摸屏
- 30. 如何找出触摸屏的位置