[风之空响]firefly解决部分游戏/APP只支持触摸操作,不支持鼠标点击的问题
本帖最后由 风之空响 于 2017-7-13 09:51 编辑***************************************
更新:在7.1上面有点问题,会导致kodi二级菜单不能用
***************************************
之前有群友问过这个问题,今天有空就贴一下解决办法吧。部分游戏/APP只支持触摸操作,不支持鼠标点击的问题,例如现在大热的王者荣耀就是这样,{:4_99:}不要问我是怎么知道的。
其实解决办法很简单,就是在InputReader.cpp中,当鼠标点击操作的时候,把它替换成触摸操作,是不是很简单{:4_124:}
下面贴一下代码:
--- 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());
}
}
很好啊
页:
[1]