Hide pointer while typing on a physical keyboard
In this change we will hide the mouse pointer while user is typing on a
physical keyboard for a better typing experiance.
Test: Manual test and atest inputflinger_tests
Bug: 275616121
Change-Id: I68192af2769ff0795664ecd2c8d737d69e97e73b
diff --git a/services/inputflinger/reader/mapper/KeyboardInputMapper.cpp b/services/inputflinger/reader/mapper/KeyboardInputMapper.cpp
index 7388752..d51ec45 100644
--- a/services/inputflinger/reader/mapper/KeyboardInputMapper.cpp
+++ b/services/inputflinger/reader/mapper/KeyboardInputMapper.cpp
@@ -242,6 +242,7 @@
keyDown.downTime = when;
mKeyDowns.push_back(keyDown);
}
+ tryHideCursorOnKeyDown();
} else {
// Remove key down.
if (keyDownIndex) {
@@ -419,4 +420,13 @@
return out;
}
+void KeyboardInputMapper::tryHideCursorOnKeyDown() {
+ // Hide the cursor while user is inputting text, ignoring meta keys or multiple simultaneous
+ // down keys as they are likely to be shortcuts
+ const bool shouldHideCursor = mKeyDowns.size() == 1 && !isMetaKey(mKeyDowns[0].keyCode);
+ if (shouldHideCursor && getContext()->getPolicy()->isInputMethodConnectionActive()) {
+ getContext()->fadePointer();
+ }
+}
+
} // namespace android