|
发表于 2022-11-1 17:18:39
只看该作者
地板
出现这样的问题是因为,显示方向改了,但触摸方向没改所造成的
1.添加以下修改(如果有了就不用改了)- diff --git a/frameworks/native/services/inputflinger/reader/mapper/TouchInputMapper.cpp b/frameworks/native/services/inputflinger/reader/mapper/TouchInputMapper.cpp
- index 29a0fc748ea..042358a5b51 100644
- --- a/frameworks/native/services/inputflinger/reader/mapper/TouchInputMapper.cpp
- +++ b/frameworks/native/services/inputflinger/reader/mapper/TouchInputMapper.cpp
- @@ -692,7 +692,7 @@ void TouchInputMapper::configureSurface(nsecs_t when, bool* outResetNeeded) {
- // in the same orientation as the device. The input device orientation will be
- // re-applied to mSurfaceOrientation.
- const int32_t naturalSurfaceOrientation =
- - (mViewport.orientation - static_cast<int32_t>(mParameters.orientation) + 4) % 4;
- + (mViewport.orientation + static_cast<int32_t>(mParameters.orientation)) % 4;
- switch (naturalSurfaceOrientation) {
- case DISPLAY_ORIENTATION_90:
- naturalLogicalWidth = mViewport.logicalBottom - mViewport.logicalTop;
- ~
- ~
- ~
复制代码 2.添加触摸屏的配置文件,文件中放置touch.orientation (默认触摸的方向)的参数
(1)如果是mipi屏可以在板子/system/usr/idc/添加名为himax-touchscreen.idc的文件
文件中添加touch.orientation = ORIENTATION_0(这里的触摸方向是0,如果你要改成90度,则改为ORIENTATION_90,180度改为ORIENTATION_180),方向与默认显示方向要一致。
也可以在sdk的frameworks/base/data/keyboards/下添加上述的配置文件,编译后烧写进板子。
(2)如果烧写的是hdmi的固件,用的是hdmi屏,在上述同样的路径添加名为ILITEK_ILITEK-TP.idc的文件,文件中属性要按上面的配置一样。
(3)如果烧写的是支持mipi的固件,插进的是hdmi屏,hdmi的触摸方向要设为0(不放置hdmi的配置文件或者配置文件里的默认触摸方向改为0)
3.补充
可以在板子终端输入dumpsys input来查看输入设备的设备名,我们的配置文件是根据屏幕设备名来命名的
如图所示当输入命令后,我们可以找到我插入mipi屏的一些设备信息(这个是我已经放置好配置文件了,所以ConfigurationFile那一项才有信息,如果没有放置配置文件的话,ConfigurationFile那一项是空的),我这里的mipi触摸的设备名为himax-touchscreen,所以对应的配置文件命名为himax-touchscreen.idc
如果放置了配置文件还出现问题要看一下配置文件名与设备名是否对应,注意如果设备名中有空格,配置文件名要将空格改为"_",如设备名为ILITEK ILITEK-TP,那么配置的文件名要命名为ILITEK_ILITEK-TP.idc。
|
|