summaryrefslogtreecommitdiff
path: root/libs/input/Input.cpp
diff options
context:
space:
mode:
author Arpit Singh <arpitks@google.com> 2025-02-12 15:09:08 +0000
committer Arpit Singh <arpitks@google.com> 2025-02-17 16:01:12 +0000
commit8b37b1b36a36bafabfb4dd9870db7d5b5f12c4cc (patch)
tree18c9575e8d9dde6d0ab27ccfdec54458f67f130c /libs/input/Input.cpp
parent93816371d747eac26def8b80c032e9313d367905 (diff)
Move utility functions related to isFromSource to Input.h
Moving following function to a common file to avoid duplication. 1. isStylusHoverEvent 2. isFromMouse 3. isFromTouchpad 4. isFromDrawingTablet 5. isHoverAction 6. isMouseOrTouchpad Test: atest inputflinger_tests Bug: 245989146 Flag: EXEMPT refactor Change-Id: I9538646f126e792897c525e7e698f6acde4aaa22
Diffstat (limited to 'libs/input/Input.cpp')
-rw-r--r--libs/input/Input.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/libs/input/Input.cpp b/libs/input/Input.cpp
index 65a088eb6d..155ea000e3 100644
--- a/libs/input/Input.cpp
+++ b/libs/input/Input.cpp
@@ -284,6 +284,36 @@ bool isStylusEvent(uint32_t source, const std::vector<PointerProperties>& proper
return false;
}
+bool isStylusHoverEvent(uint32_t source, const std::vector<PointerProperties>& properties,
+ int32_t action) {
+ return isStylusEvent(source, properties) && isHoverAction(action);
+}
+
+bool isFromMouse(uint32_t source, ToolType toolType) {
+ return isFromSource(source, AINPUT_SOURCE_MOUSE) && toolType == ToolType::MOUSE;
+}
+
+bool isFromTouchpad(uint32_t source, ToolType toolType) {
+ return isFromSource(source, AINPUT_SOURCE_MOUSE) && toolType == ToolType::FINGER;
+}
+
+bool isFromDrawingTablet(uint32_t source, ToolType toolType) {
+ return isFromSource(source, AINPUT_SOURCE_MOUSE | AINPUT_SOURCE_STYLUS) &&
+ isStylusToolType(toolType);
+}
+
+bool isHoverAction(int32_t action) {
+ return action == AMOTION_EVENT_ACTION_HOVER_ENTER ||
+ action == AMOTION_EVENT_ACTION_HOVER_MOVE || action == AMOTION_EVENT_ACTION_HOVER_EXIT;
+}
+
+bool isMouseOrTouchpad(uint32_t sources) {
+ // Check if this is a mouse or touchpad, but not a drawing tablet.
+ return isFromSource(sources, AINPUT_SOURCE_MOUSE_RELATIVE) ||
+ (isFromSource(sources, AINPUT_SOURCE_MOUSE) &&
+ !isFromSource(sources, AINPUT_SOURCE_STYLUS));
+}
+
VerifiedKeyEvent verifiedKeyEventFromKeyEvent(const KeyEvent& event) {
return {{VerifiedInputEvent::Type::KEY, event.getDeviceId(), event.getEventTime(),
event.getSource(), event.getDisplayId()},