input: Add option to toggle pointer icon when using stylus(3/3)

* The visible pointer icon when hovering or drawing with the stylus is
  quite annoying when trying to actually draw with it. Turn it off by
  default and add an option to turn it on.

Forward Port from CM-11.0

Change-Id: Ie4e9e6bcc48803b195d1615d83d6e36d663cc33a
This commit is contained in:
Steve Kondik 2015-02-01 23:40:19 -05:00 committed by Steve Kondik
parent ac086d353e
commit 6b6c0cde5b
2 changed files with 28 additions and 10 deletions

View File

@ -16,7 +16,7 @@
#define LOG_TAG "InputReader" #define LOG_TAG "InputReader"
//#define LOG_NDEBUG 0 #define LOG_NDEBUG 0
// Log debug messages for each raw event received from the EventHub. // Log debug messages for each raw event received from the EventHub.
#define DEBUG_RAW_EVENTS 0 #define DEBUG_RAW_EVENTS 0
@ -2940,7 +2940,8 @@ void TouchInputMapper::configure(nsecs_t when,
if (!changes || (changes & (InputReaderConfiguration::CHANGE_DISPLAY_INFO if (!changes || (changes & (InputReaderConfiguration::CHANGE_DISPLAY_INFO
| InputReaderConfiguration::CHANGE_POINTER_GESTURE_ENABLEMENT | InputReaderConfiguration::CHANGE_POINTER_GESTURE_ENABLEMENT
| InputReaderConfiguration::CHANGE_SHOW_TOUCHES | InputReaderConfiguration::CHANGE_SHOW_TOUCHES
| InputReaderConfiguration::CHANGE_EXTERNAL_STYLUS_PRESENCE))) { | InputReaderConfiguration::CHANGE_EXTERNAL_STYLUS_PRESENCE
| InputReaderConfiguration::CHANGE_STYLUS_ICON_ENABLED))) {
// Configure device sources, surface dimensions, orientation and // Configure device sources, surface dimensions, orientation and
// scaling factors. // scaling factors.
configureSurface(when, &resetNeeded); configureSurface(when, &resetNeeded);
@ -4870,7 +4871,7 @@ void TouchInputMapper::dispatchPointerGestures(nsecs_t when, uint32_t policyFlag
&& (mPointerGesture.lastGestureMode == PointerGesture::SWIPE && (mPointerGesture.lastGestureMode == PointerGesture::SWIPE
|| mPointerGesture.lastGestureMode == PointerGesture::FREEFORM)) { || mPointerGesture.lastGestureMode == PointerGesture::FREEFORM)) {
// Remind the user of where the pointer is after finishing a gesture with spots. // Remind the user of where the pointer is after finishing a gesture with spots.
mPointerController->unfade(PointerControllerInterface::TRANSITION_GRADUAL); unfadePointer(PointerControllerInterface::TRANSITION_GRADUAL);
} }
break; break;
case PointerGesture::TAP: case PointerGesture::TAP:
@ -5936,7 +5937,7 @@ void TouchInputMapper::dispatchPointerSimple(nsecs_t when, uint32_t policyFlags,
mPointerController->setPresentation(PointerControllerInterface::PRESENTATION_POINTER); mPointerController->setPresentation(PointerControllerInterface::PRESENTATION_POINTER);
mPointerController->clearSpots(); mPointerController->clearSpots();
mPointerController->setButtonState(mCurrentRawState.buttonState); mPointerController->setButtonState(mCurrentRawState.buttonState);
mPointerController->unfade(PointerControllerInterface::TRANSITION_IMMEDIATE); unfadePointer(PointerControllerInterface::TRANSITION_IMMEDIATE);
} else if (!down && !hovering && (mPointerSimple.down || mPointerSimple.hovering)) { } else if (!down && !hovering && (mPointerSimple.down || mPointerSimple.hovering)) {
mPointerController->fade(PointerControllerInterface::TRANSITION_GRADUAL); mPointerController->fade(PointerControllerInterface::TRANSITION_GRADUAL);
} }
@ -6143,6 +6144,13 @@ void TouchInputMapper::fadePointer() {
} }
} }
void TouchInputMapper::unfadePointer(PointerControllerInterface::Transition transition) {
if (mPointerController != NULL &&
!(mPointerUsage == POINTER_USAGE_STYLUS && !mConfig.stylusIconEnabled)) {
mPointerController->unfade(transition);
}
}
nsecs_t TouchInputMapper::mLastStylusTime = 0; nsecs_t TouchInputMapper::mLastStylusTime = 0;
bool TouchInputMapper::rejectPalm(nsecs_t when) { bool TouchInputMapper::rejectPalm(nsecs_t when) {

View File

@ -145,7 +145,10 @@ struct InputReaderConfiguration {
CHANGE_EXTERNAL_STYLUS_PRESENCE = 1 << 7, CHANGE_EXTERNAL_STYLUS_PRESENCE = 1 << 7,
// Volume keys rotation option changed. // Volume keys rotation option changed.
CHANGE_VOLUME_KEYS_ROTATION = 1 << 7, CHANGE_VOLUME_KEYS_ROTATION = 1 << 8,
// Stylus icon option changed.
CHANGE_STYLUS_ICON_ENABLED = 1 << 9,
// All devices must be reopened. // All devices must be reopened.
CHANGE_MUST_REOPEN = 1 << 31, CHANGE_MUST_REOPEN = 1 << 31,
@ -234,13 +237,16 @@ struct InputReaderConfiguration {
// True to show the location of touches on the touch screen as spots. // True to show the location of touches on the touch screen as spots.
bool showTouches; bool showTouches;
// Remap volume keys according to display rotation // True to show the pointer icon when a stylus is used.
// 0 - disabled, 1 - phone or hybrid rotation mode, 2 - tablet rotation mode bool stylusIconEnabled;
int volumeKeysRotationMode;
// Ignore finger touches this long after the stylus has been used (including hover) // Ignore finger touches this long after the stylus has been used (including hover)
nsecs_t stylusPalmRejectionTime; nsecs_t stylusPalmRejectionTime;
// Remap volume keys according to display rotation
// 0 - disabled, 1 - phone or hybrid rotation mode, 2 - tablet rotation mode
int volumeKeysRotationMode;
InputReaderConfiguration() : InputReaderConfiguration() :
virtualKeyQuietTime(0), virtualKeyQuietTime(0),
pointerVelocityControlParameters(1.0f, 500.0f, 3000.0f, 3.0f), pointerVelocityControlParameters(1.0f, 500.0f, 3000.0f, 3.0f),
@ -257,9 +263,11 @@ struct InputReaderConfiguration {
pointerGestureSwipeMaxWidthRatio(0.25f), pointerGestureSwipeMaxWidthRatio(0.25f),
pointerGestureMovementSpeedRatio(0.8f), pointerGestureMovementSpeedRatio(0.8f),
pointerGestureZoomSpeedRatio(0.3f), pointerGestureZoomSpeedRatio(0.3f),
stylusPalmRejectionTime(50 * 10000000LL), // 50 ms
showTouches(false), showTouches(false),
volumeKeysRotationMode(0) { } stylusIconEnabled(false),
stylusPalmRejectionTime(50 * 10000000LL), // 50 ms
volumeKeysRotationMode(0)
{ }
bool getDisplayInfo(bool external, DisplayViewport* outViewport) const; bool getDisplayInfo(bool external, DisplayViewport* outViewport) const;
void setDisplayInfo(bool external, const DisplayViewport& viewport); void setDisplayInfo(bool external, const DisplayViewport& viewport);
@ -1870,6 +1878,8 @@ private:
static void assignPointerIds(const RawState* last, RawState* current); static void assignPointerIds(const RawState* last, RawState* current);
void unfadePointer(PointerControllerInterface::Transition transition);
bool rejectPalm(nsecs_t when); bool rejectPalm(nsecs_t when);
}; };