am 7c98c196: Merge "Mirror LTRIGGER / RTRIGGER as BRAKE / GAS for compatibility" into jb-mr2-dev
* commit '7c98c196282629fc7a842e67ceca3d9686f3f23a': Mirror LTRIGGER / RTRIGGER as BRAKE / GAS for compatibility
This commit is contained in:
@@ -6110,15 +6110,42 @@ void JoystickInputMapper::populateDeviceInfo(InputDeviceInfo* info) {
|
|||||||
|
|
||||||
for (size_t i = 0; i < mAxes.size(); i++) {
|
for (size_t i = 0; i < mAxes.size(); i++) {
|
||||||
const Axis& axis = mAxes.valueAt(i);
|
const Axis& axis = mAxes.valueAt(i);
|
||||||
info->addMotionRange(axis.axisInfo.axis, AINPUT_SOURCE_JOYSTICK,
|
addMotionRange(axis.axisInfo.axis, axis, info);
|
||||||
axis.min, axis.max, axis.flat, axis.fuzz, axis.resolution);
|
|
||||||
if (axis.axisInfo.mode == AxisInfo::MODE_SPLIT) {
|
if (axis.axisInfo.mode == AxisInfo::MODE_SPLIT) {
|
||||||
info->addMotionRange(axis.axisInfo.highAxis, AINPUT_SOURCE_JOYSTICK,
|
addMotionRange(axis.axisInfo.highAxis, axis, info);
|
||||||
axis.min, axis.max, axis.flat, axis.fuzz, axis.resolution);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void JoystickInputMapper::addMotionRange(int32_t axisId, const Axis& axis,
|
||||||
|
InputDeviceInfo* info) {
|
||||||
|
info->addMotionRange(axisId, AINPUT_SOURCE_JOYSTICK,
|
||||||
|
axis.min, axis.max, axis.flat, axis.fuzz, axis.resolution);
|
||||||
|
/* In order to ease the transition for developers from using the old axes
|
||||||
|
* to the newer, more semantically correct axes, we'll continue to register
|
||||||
|
* the old axes as duplicates of their corresponding new ones. */
|
||||||
|
int32_t compatAxis = getCompatAxis(axisId);
|
||||||
|
if (compatAxis >= 0) {
|
||||||
|
info->addMotionRange(compatAxis, AINPUT_SOURCE_JOYSTICK,
|
||||||
|
axis.min, axis.max, axis.flat, axis.fuzz, axis.resolution);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* A mapping from axes the joystick actually has to the axes that should be
|
||||||
|
* artificially created for compatibility purposes.
|
||||||
|
* Returns -1 if no compatibility axis is needed. */
|
||||||
|
int32_t JoystickInputMapper::getCompatAxis(int32_t axis) {
|
||||||
|
switch(axis) {
|
||||||
|
case AMOTION_EVENT_AXIS_LTRIGGER:
|
||||||
|
return AMOTION_EVENT_AXIS_BRAKE;
|
||||||
|
case AMOTION_EVENT_AXIS_RTRIGGER:
|
||||||
|
return AMOTION_EVENT_AXIS_GAS;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
void JoystickInputMapper::dump(String8& dump) {
|
void JoystickInputMapper::dump(String8& dump) {
|
||||||
dump.append(INDENT2 "Joystick Input Mapper:\n");
|
dump.append(INDENT2 "Joystick Input Mapper:\n");
|
||||||
|
|
||||||
@@ -6373,9 +6400,10 @@ void JoystickInputMapper::sync(nsecs_t when, bool force) {
|
|||||||
size_t numAxes = mAxes.size();
|
size_t numAxes = mAxes.size();
|
||||||
for (size_t i = 0; i < numAxes; i++) {
|
for (size_t i = 0; i < numAxes; i++) {
|
||||||
const Axis& axis = mAxes.valueAt(i);
|
const Axis& axis = mAxes.valueAt(i);
|
||||||
pointerCoords.setAxisValue(axis.axisInfo.axis, axis.currentValue);
|
setPointerCoordsAxisValue(&pointerCoords, axis.axisInfo.axis, axis.currentValue);
|
||||||
if (axis.axisInfo.mode == AxisInfo::MODE_SPLIT) {
|
if (axis.axisInfo.mode == AxisInfo::MODE_SPLIT) {
|
||||||
pointerCoords.setAxisValue(axis.axisInfo.highAxis, axis.highCurrentValue);
|
setPointerCoordsAxisValue(&pointerCoords, axis.axisInfo.highAxis,
|
||||||
|
axis.highCurrentValue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -6391,6 +6419,19 @@ void JoystickInputMapper::sync(nsecs_t when, bool force) {
|
|||||||
getListener()->notifyMotion(&args);
|
getListener()->notifyMotion(&args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void JoystickInputMapper::setPointerCoordsAxisValue(PointerCoords* pointerCoords,
|
||||||
|
int32_t axis, float value) {
|
||||||
|
pointerCoords->setAxisValue(axis, value);
|
||||||
|
/* In order to ease the transition for developers from using the old axes
|
||||||
|
* to the newer, more semantically correct axes, we'll continue to produce
|
||||||
|
* values for the old axes as mirrors of the value of their corresponding
|
||||||
|
* new axes. */
|
||||||
|
int32_t compatAxis = getCompatAxis(axis);
|
||||||
|
if (compatAxis >= 0) {
|
||||||
|
pointerCoords->setAxisValue(compatAxis, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool JoystickInputMapper::filterAxes(bool force) {
|
bool JoystickInputMapper::filterAxes(bool force) {
|
||||||
bool atLeastOneSignificantChange = force;
|
bool atLeastOneSignificantChange = force;
|
||||||
size_t numAxes = mAxes.size();
|
size_t numAxes = mAxes.size();
|
||||||
|
|||||||
@@ -1805,6 +1805,11 @@ private:
|
|||||||
float newValue, float currentValue, float thresholdValue);
|
float newValue, float currentValue, float thresholdValue);
|
||||||
|
|
||||||
static bool isCenteredAxis(int32_t axis);
|
static bool isCenteredAxis(int32_t axis);
|
||||||
|
static int32_t getCompatAxis(int32_t axis);
|
||||||
|
|
||||||
|
static void addMotionRange(int32_t axisId, const Axis& axis, InputDeviceInfo* info);
|
||||||
|
static void setPointerCoordsAxisValue(PointerCoords* pointerCoords, int32_t axis,
|
||||||
|
float value);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace android
|
} // namespace android
|
||||||
|
|||||||
Reference in New Issue
Block a user