blob: f4a341aee7118452d9eae5930152552be9ad0475 [file] [log] [blame]
Tim Kilbourn3186e7b2015-04-16 15:32:08 -07001#include "InputMocks.h"
2
Tim Kilbourn3186e7b2015-04-16 15:32:08 -07003namespace android {
4
Tim Kilbourn3186e7b2015-04-16 15:32:08 -07005bool MockInputDeviceNode::hasKeyInRange(int32_t startKey, int32_t endKey) const {
6 auto iter = mKeys.lower_bound(startKey);
7 if (iter == mKeys.end()) return false;
8 return *iter < endKey;
9}
10
11namespace MockNexus7v2 {
12
13MockInputDeviceNode* getElanTouchscreen() {
14 auto node = new MockInputDeviceNode();
15 node->setPath("/dev/input/event0");
16 node->setName("elan-touchscreen");
17 // Location not set
18 // UniqueId not set
19 node->setBusType(0);
20 node->setVendorId(0);
21 node->setProductId(0);
22 node->setVersion(0);
23 // No keys
24 // No relative axes
25 // TODO: set the AbsoluteAxisInfo pointers
26 node->addAbsAxis(ABS_MT_SLOT, nullptr);
27 node->addAbsAxis(ABS_MT_TOUCH_MAJOR, nullptr);
28 node->addAbsAxis(ABS_MT_POSITION_X, nullptr);
29 node->addAbsAxis(ABS_MT_POSITION_Y, nullptr);
30 node->addAbsAxis(ABS_MT_TRACKING_ID, nullptr);
31 node->addAbsAxis(ABS_MT_PRESSURE, nullptr);
32 // No switches
33 // No forcefeedback
34 node->addInputProperty(INPUT_PROP_DIRECT);
35 return node;
36}
37
38MockInputDeviceNode* getLidInput() {
39 auto node = new MockInputDeviceNode();
40 node->setPath("/dev/input/event1");
41 node->setName("lid_input");
42 node->setLocation("/dev/input/lid_indev");
43 // UniqueId not set
44 node->setBusType(0);
45 node->setVendorId(0);
46 node->setProductId(0);
47 node->setVersion(0);
48 // No keys
49 // No relative axes
50 // No absolute axes
51 node->addSwitch(SW_LID);
52 // No forcefeedback
53 node->addInputProperty(INPUT_PROP_DIRECT);
54 return node;
55}
56
57MockInputDeviceNode* getButtonJack() {
58 auto node = new MockInputDeviceNode();
59 node->setPath("/dev/input/event2");
60 node->setName("apq8064-tabla-snd-card Button Jack");
61 node->setLocation("ALSA");
62 // UniqueId not set
63 node->setBusType(0);
64 node->setVendorId(0);
65 node->setProductId(0);
66 node->setVersion(0);
67 node->addKeys(BTN_0, BTN_1, BTN_2, BTN_3, BTN_4, BTN_5, BTN_6, BTN_7);
68 // No relative axes
69 // No absolute axes
70 // No switches
71 // No forcefeedback
72 node->addInputProperty(INPUT_PROP_DIRECT);
73 return node;
74}
75
76MockInputDeviceNode* getHeadsetJack() {
77 auto node = new MockInputDeviceNode();
78 node->setPath("/dev/input/event3");
79 node->setName("apq8064-tabla-snd-card Headset Jack");
80 node->setLocation("ALSA");
81 // UniqueId not set
82 node->setBusType(0);
83 node->setVendorId(0);
84 node->setProductId(0);
85 node->setVersion(0);
86 // No keys
87 // No relative axes
88 // No absolute axes
89 node->addSwitch(SW_HEADPHONE_INSERT);
90 node->addSwitch(SW_MICROPHONE_INSERT);
91 node->addSwitch(SW_LINEOUT_INSERT);
92 // ASUS adds some proprietary switches, but we'll only see two of them.
93 node->addSwitch(0x0e); // SW_HPHL_OVERCURRENT
94 node->addSwitch(0x0f); // SW_HPHR_OVERCURRENT
95 // No forcefeedback
96 node->addInputProperty(INPUT_PROP_DIRECT);
97 return node;
98}
99
100MockInputDeviceNode* getH2wButton() {
101 auto node = new MockInputDeviceNode();
102 node->setPath("/dev/input/event4");
103 node->setName("h2w button");
104 // Location not set
105 // UniqueId not set
106 node->setBusType(0);
107 node->setVendorId(0);
108 node->setProductId(0);
109 node->setVersion(0);
110 node->addKeys(KEY_MEDIA);
111 // No relative axes
112 // No absolute axes
113 // No switches
114 node->addInputProperty(INPUT_PROP_DIRECT);
115 return node;
116}
117
118MockInputDeviceNode* getGpioKeys() {
119 auto node = new MockInputDeviceNode();
120 node->setPath("/dev/input/event5");
121 node->setName("gpio-keys");
122 node->setLocation("gpio-keys/input0");
123 // UniqueId not set
124 node->setBusType(0x0019);
125 node->setVendorId(0x0001);
126 node->setProductId(0x0001);
127 node->setVersion(0x0100);
128 node->addKeys(KEY_VOLUMEDOWN, KEY_VOLUMEUP, KEY_POWER);
129 // No relative axes
130 // No absolute axes
131 // No switches
132 node->addInputProperty(INPUT_PROP_DIRECT);
133 return node;
134}
135
136} // namespace MockNexus7v2
137
138namespace MockNexusPlayer {
139
140MockInputDeviceNode* getGpioKeys() {
141 auto node = new MockInputDeviceNode();
142 node->setPath("/dev/input/event0");
143 node->setName("gpio-keys");
144 node->setLocation("gpio-keys/input0");
145 // UniqueId not set
146 node->setBusType(0x0019);
147 node->setVendorId(0x0001);
148 node->setProductId(0x0001);
149 node->setVersion(0x0100);
150 node->addKeys(KEY_CONNECT);
151 // No relative axes
152 // No absolute axes
153 // No switches
154 node->addInputProperty(INPUT_PROP_DIRECT);
155 return node;
156}
157
158MockInputDeviceNode* getMidPowerBtn() {
159 auto node = new MockInputDeviceNode();
160 node->setPath("/dev/input/event1");
161 node->setName("mid_powerbtn");
162 node->setLocation("power-button/input0");
163 // UniqueId not set
164 node->setBusType(0x0019);
165 node->setVendorId(0);
166 node->setProductId(0);
167 node->setVersion(0);
168 node->addKeys(KEY_POWER);
169 // No relative axes
170 // No absolute axes
171 // No switches
172 node->addInputProperty(INPUT_PROP_DIRECT);
173 return node;
174}
175
176MockInputDeviceNode* getNexusRemote() {
177 auto node = new MockInputDeviceNode();
178 node->setPath("/dev/input/event2");
179 node->setName("Nexus Remote");
180 // Location not set
181 node->setUniqueId("78:86:D9:50:A0:54");
182 node->setBusType(0x0005);
183 node->setVendorId(0x18d1);
184 node->setProductId(0x2c42);
185 node->setVersion(0);
186 node->addKeys(KEY_UP, KEY_LEFT, KEY_RIGHT, KEY_DOWN, KEY_BACK, KEY_PLAYPAUSE,
187 KEY_HOMEPAGE, KEY_SEARCH, KEY_SELECT);
188 // No relative axes
189 node->addAbsAxis(ABS_MISC, nullptr);
190 // No switches
191 node->addInputProperty(INPUT_PROP_DIRECT);
192 return node;
193}
194
195MockInputDeviceNode* getAsusGamepad() {
196 auto node = new MockInputDeviceNode();
197 node->setPath("/dev/input/event3");
198 node->setName("ASUS Gamepad");
199 // Location not set
200 node->setUniqueId("C5:30:CD:50:A0:54");
201 node->setBusType(0x0005);
202 node->setVendorId(0x0b05);
203 node->setProductId(0x4500);
204 node->setVersion(0x0040);
205 node->addKeys(KEY_BACK, KEY_HOMEPAGE, BTN_A, BTN_B, BTN_X, BTN_Y, BTN_TL, BTN_TR,
206 BTN_MODE, BTN_THUMBL, BTN_THUMBR);
207 // No relative axes
208 node->addAbsAxis(ABS_X, nullptr);
209 node->addAbsAxis(ABS_Y, nullptr);
210 node->addAbsAxis(ABS_Z, nullptr);
211 node->addAbsAxis(ABS_RZ, nullptr);
212 node->addAbsAxis(ABS_GAS, nullptr);
213 node->addAbsAxis(ABS_BRAKE, nullptr);
214 node->addAbsAxis(ABS_HAT0X, nullptr);
215 node->addAbsAxis(ABS_HAT0Y, nullptr);
216 node->addAbsAxis(ABS_MISC, nullptr);
217 node->addAbsAxis(0x29, nullptr);
218 node->addAbsAxis(0x2a, nullptr);
219 // No switches
220 node->addInputProperty(INPUT_PROP_DIRECT);
221 // Note: this device has MSC and LED bitmaps as well.
222 return node;
223}
224
225} // namespace MockNexusPlayer
226
Tim Kilbourn3186e7b2015-04-16 15:32:08 -0700227} // namespace android