summaryrefslogtreecommitdiff
path: root/libs/input/VirtualInputDevice.cpp
diff options
context:
space:
mode:
author Vladimir Komsiyski <vladokom@google.com> 2024-02-13 11:47:54 +0100
committer Vladimir Komsiyski <vladokom@google.com> 2024-06-25 15:45:56 +0000
commitdd438e2a4b541fbe88b85346b450a1106b799109 (patch)
tree04d120bd2374932baec1ea35d3f5613636796fbe /libs/input/VirtualInputDevice.cpp
parent8faf3d40232f7cef05bf588a2f5b175f687232c7 (diff)
Virtual rotary encoder native support
- detect rotary encoder input devices if they have a single scroll axis and nothing else - make the rotary mapper display-aware as the virtual rotary is constrained to a single virtual display, just like the other virtual input devices Fix: 320328752 Test: atest inputflinger_tests Test: see CTS in topic Flag: android.companion.virtualdevice.flags.virtual_rotary Change-Id: I5581013d06708cbcc2c3ac8a622cd259aea8a9b4
Diffstat (limited to 'libs/input/VirtualInputDevice.cpp')
-rw-r--r--libs/input/VirtualInputDevice.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/libs/input/VirtualInputDevice.cpp b/libs/input/VirtualInputDevice.cpp
index eea06f1720..b73ee65504 100644
--- a/libs/input/VirtualInputDevice.cpp
+++ b/libs/input/VirtualInputDevice.cpp
@@ -509,4 +509,15 @@ bool VirtualStylus::handleStylusUp(uint16_t tool, std::chrono::nanoseconds event
return true;
}
+// --- VirtualRotaryEncoder ---
+VirtualRotaryEncoder::VirtualRotaryEncoder(unique_fd fd) : VirtualInputDevice(std::move(fd)) {}
+
+VirtualRotaryEncoder::~VirtualRotaryEncoder() {}
+
+bool VirtualRotaryEncoder::writeScrollEvent(float scrollAmount,
+ std::chrono::nanoseconds eventTime) {
+ return writeInputEvent(EV_REL, REL_WHEEL, static_cast<int32_t>(scrollAmount), eventTime) &&
+ writeInputEvent(EV_SYN, SYN_REPORT, 0, eventTime);
+}
+
} // namespace android