|
[风之空响]firefly解决部分游戏/APP只支持触摸操作,不支持鼠标点击的问题
发表于 2017-6-20 11:59:00
浏览:9105
|
回复:1
打印
只看该作者
[复制链接]
楼主
本帖最后由 风之空响 于 2017-7-13 09:51 编辑
***************************************
更新:在7.1上面有点问题,会导致kodi二级菜单不能用
***************************************
之前有群友问过这个问题,今天有空就贴一下解决办法吧。部分游戏/APP只支持触摸操作,不支持鼠标点击的问题,例如现在大热的王者荣耀就是这样,不要问我是怎么知道的。
其实解决办法很简单,就是在InputReader.cpp中,当鼠标点击操作的时候,把它替换成触摸操作,是不是很简单
下面贴一下代码:
- --- a/frameworks/native/services/inputflinger/InputReader.cpp
- +++ b/frameworks/native/services/inputflinger/InputReader.cpp
- @@ -2738,6 +2738,14 @@ void CursorInputMapper::sync(nsecs_t when) {
- motionEventAction = AMOTION_EVENT_ACTION_HOVER_MOVE;
- }
-
- + if(motionEventAction == AMOTION_EVENT_ACTION_DOWN
- + || motionEventAction == AMOTION_EVENT_ACTION_UP)
- + {
- + ALOGD("CursorInputMapper::sync motionEventAction==DOWN or UP");
- + pointerProperties.toolType = AMOTION_EVENT_TOOL_TYPE_FINGER;
- + mSource = AINPUT_SOURCE_TOUCHSCREEN;
- + }
- +
- if (buttonsReleased) {
- BitSet32 released(buttonsReleased);
- while (!released.isEmpty()) {
复制代码
这个修改方式适用于 android4.4.2-android7.0
下面贴一下群友的解决方式- frameworks/native/services/inputflinger/InputReader.cpp
- String8 deviceTypeString;
- if (getDevice()->getConfiguration().tryGetProperty(String8("touch.deviceType"),
- deviceTypeString)) {
- if (deviceTypeString == "touchScreen") {
- mParameters.deviceType = Parameters::DEVICE_TYPE_TOUCH_SCREEN;
- } else if (deviceTypeString == "touchPad") {
- mParameters.deviceType = Parameters::DEVICE_TYPE_TOUCH_PAD;
- } else if (deviceTypeString == "touchNavigation") {
- mParameters.deviceType = Parameters::DEVICE_TYPE_TOUCH_NAVIGATION;
- } else if (deviceTypeString == "pointer") {
- mParameters.deviceType = Parameters::DEVICE_TYPE_POINTER;//<font color="#ff0000">此处改为Parameters::DEVICE_TYPE_TOUCH_SCREEN</font>
- } else if (deviceTypeString != "default") {
- ALOGW("Invalid value for touch.deviceType: '%s'", deviceTypeString.string());
- }
- }
复制代码
|
|