1
#include "mir_test/fake_event_hub.h"
3
using droidinput::AxisInfo;
4
using droidinput::InputDeviceIdentifier;
5
using droidinput::PropertyMap;
6
using droidinput::Vector;
7
using droidinput::String8;
8
using droidinput::RawAbsoluteAxisInfo;
9
using droidinput::RawEvent;
11
using droidinput::status_t;
12
using droidinput::KeyCharacterMap;
13
using droidinput::VirtualKeyDefinition;
15
namespace mi = mir::input;
16
namespace mia = mir::input::android;
18
mia::FakeEventHub::FakeEventHub()
22
mia::FakeEventHub::~FakeEventHub()
26
uint32_t mia::FakeEventHub::getDeviceClasses(int32_t deviceId) const
28
if (deviceId == droidinput::BUILT_IN_KEYBOARD_ID)
30
return droidinput::INPUT_DEVICE_CLASS_KEYBOARD;
32
auto fake_device_iterator = device_from_id.find(deviceId);
34
if (fake_device_iterator != device_from_id.end())
36
return fake_device_iterator->second.classes;
44
InputDeviceIdentifier mia::FakeEventHub::getDeviceIdentifier(int32_t deviceId) const
46
auto fake_device_iterator = device_from_id.find(deviceId);
48
if (fake_device_iterator != device_from_id.end())
50
return fake_device_iterator->second.identifier;
54
return InputDeviceIdentifier();
58
void mia::FakeEventHub::getConfiguration(int32_t deviceId, PropertyMap* outConfiguration) const
61
(void)outConfiguration;
64
status_t mia::FakeEventHub::getAbsoluteAxisInfo(int32_t deviceId, int axis,
65
RawAbsoluteAxisInfo* outAxisInfo) const
73
bool mia::FakeEventHub::hasRelativeAxis(int32_t deviceId, int axis) const
80
bool mia::FakeEventHub::hasInputProperty(int32_t deviceId, int property) const
82
auto fake_device_iterator = device_from_id.find(deviceId);
84
if (fake_device_iterator != device_from_id.end())
86
auto property_iterator =
87
fake_device_iterator->second.input_properties.find(property);
89
if (property_iterator != fake_device_iterator->second.input_properties.end())
91
return property_iterator->second;
104
status_t mia::FakeEventHub::mapKey(int32_t deviceId, int32_t scanCode, int32_t usageCode,
105
int32_t* outKeycode, uint32_t* outFlags) const
109
*outKeycode = scanCode;
111
return droidinput::OK;
114
status_t mia::FakeEventHub::mapAxis(int32_t deviceId, int32_t scanCode,
115
AxisInfo* outAxisInfo) const
123
void mia::FakeEventHub::setExcludedDevices(const Vector<String8>& devices)
128
size_t mia::FakeEventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSize)
130
std::lock_guard<std::mutex> lg(guard);
132
(void) timeoutMillis;
133
size_t num_events_obtained = 0;
135
for (size_t i = 0; i < bufferSize && events_available.size() > 0; ++i)
137
buffer[i] = events_available.front();
138
events_available.pop_front();
139
++num_events_obtained;
142
return num_events_obtained;
145
int32_t mia::FakeEventHub::getScanCodeState(int32_t deviceId, int32_t scanCode) const
149
return AKEY_STATE_UNKNOWN;
152
int32_t mia::FakeEventHub::getKeyCodeState(int32_t deviceId, int32_t keyCode) const
156
return AKEY_STATE_UNKNOWN;
159
int32_t mia::FakeEventHub::getSwitchState(int32_t deviceId, int32_t sw) const
163
return AKEY_STATE_UNKNOWN;
166
status_t mia::FakeEventHub::getAbsoluteAxisValue(int32_t deviceId, int32_t axis,
167
int32_t* outValue) const
175
bool mia::FakeEventHub::markSupportedKeyCodes(int32_t deviceId, size_t numCodes,
176
const int32_t* keyCodes,
177
uint8_t* outFlags) const
186
bool mia::FakeEventHub::hasScanCode(int32_t deviceId, int32_t scanCode) const
193
bool mia::FakeEventHub::hasLed(int32_t deviceId, int32_t led) const
200
void mia::FakeEventHub::setLedState(int32_t deviceId, int32_t led, bool on)
207
void mia::FakeEventHub::getVirtualKeyDefinitions(int32_t deviceId,
208
Vector<VirtualKeyDefinition>& outVirtualKeys) const
211
(void)outVirtualKeys;
214
sp<KeyCharacterMap> mia::FakeEventHub::getKeyCharacterMap(int32_t deviceId) const
217
return sp<KeyCharacterMap>();
220
bool mia::FakeEventHub::setKeyboardLayoutOverlay(int32_t deviceId,
221
const sp<KeyCharacterMap>& map)
228
void mia::FakeEventHub::vibrate(int32_t deviceId, nsecs_t duration)
234
void mia::FakeEventHub::cancelVibrate(int32_t deviceId)
239
void mia::FakeEventHub::requestReopenDevices()
243
void mia::FakeEventHub::wake()
247
void mia::FakeEventHub::dump(droidinput::String8& dump)
252
void mia::FakeEventHub::monitor()
256
void mia::FakeEventHub::synthesize_builtin_keyboard_added()
258
std::lock_guard<std::mutex> lg(guard);
262
event.deviceId = droidinput::BUILT_IN_KEYBOARD_ID;
263
event.type = EventHubInterface::DEVICE_ADDED;
264
events_available.push_back(event);
267
event.type = EventHubInterface::FINISHED_DEVICE_SCAN;
269
events_available.push_back(event);
272
void mia::FakeEventHub::synthesize_key_event(int keycode)
277
event.code = keycode;
279
event.deviceId = droidinput::BUILT_IN_KEYBOARD_ID;
281
std::lock_guard<std::mutex> lg(guard);
282
events_available.push_back(event);