1a46c0ec8Sopenharmony_ci/* 2a46c0ec8Sopenharmony_ci * Copyright © 2014 Red Hat, Inc. 3a46c0ec8Sopenharmony_ci * 4a46c0ec8Sopenharmony_ci * Permission is hereby granted, free of charge, to any person obtaining a 5a46c0ec8Sopenharmony_ci * copy of this software and associated documentation files (the "Software"), 6a46c0ec8Sopenharmony_ci * to deal in the Software without restriction, including without limitation 7a46c0ec8Sopenharmony_ci * the rights to use, copy, modify, merge, publish, distribute, sublicense, 8a46c0ec8Sopenharmony_ci * and/or sell copies of the Software, and to permit persons to whom the 9a46c0ec8Sopenharmony_ci * Software is furnished to do so, subject to the following conditions: 10a46c0ec8Sopenharmony_ci * 11a46c0ec8Sopenharmony_ci * The above copyright notice and this permission notice (including the next 12a46c0ec8Sopenharmony_ci * paragraph) shall be included in all copies or substantial portions of the 13a46c0ec8Sopenharmony_ci * Software. 14a46c0ec8Sopenharmony_ci * 15a46c0ec8Sopenharmony_ci * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16a46c0ec8Sopenharmony_ci * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17a46c0ec8Sopenharmony_ci * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 18a46c0ec8Sopenharmony_ci * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19a46c0ec8Sopenharmony_ci * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 20a46c0ec8Sopenharmony_ci * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 21a46c0ec8Sopenharmony_ci * DEALINGS IN THE SOFTWARE. 22a46c0ec8Sopenharmony_ci */ 23a46c0ec8Sopenharmony_ci 24a46c0ec8Sopenharmony_ci#include "config.h" 25a46c0ec8Sopenharmony_ci 26a46c0ec8Sopenharmony_ci#include "litest.h" 27a46c0ec8Sopenharmony_ci#include "litest-int.h" 28a46c0ec8Sopenharmony_ci 29a46c0ec8Sopenharmony_cistatic struct input_event down[] = { 30a46c0ec8Sopenharmony_ci { .type = EV_ABS, .code = ABS_X, .value = LITEST_AUTO_ASSIGN }, 31a46c0ec8Sopenharmony_ci { .type = EV_ABS, .code = ABS_Y, .value = LITEST_AUTO_ASSIGN }, 32a46c0ec8Sopenharmony_ci { .type = EV_ABS, .code = ABS_MT_SLOT, .value = LITEST_AUTO_ASSIGN }, 33a46c0ec8Sopenharmony_ci { .type = EV_ABS, .code = ABS_MT_TRACKING_ID, .value = LITEST_AUTO_ASSIGN }, 34a46c0ec8Sopenharmony_ci { .type = EV_ABS, .code = ABS_MT_POSITION_X, .value = LITEST_AUTO_ASSIGN }, 35a46c0ec8Sopenharmony_ci { .type = EV_ABS, .code = ABS_MT_POSITION_Y, .value = LITEST_AUTO_ASSIGN }, 36a46c0ec8Sopenharmony_ci { .type = EV_SYN, .code = SYN_REPORT, .value = 0 }, 37a46c0ec8Sopenharmony_ci { .type = -1, .code = -1 }, 38a46c0ec8Sopenharmony_ci}; 39a46c0ec8Sopenharmony_ci 40a46c0ec8Sopenharmony_cistatic struct input_event move[] = { 41a46c0ec8Sopenharmony_ci { .type = EV_ABS, .code = ABS_MT_SLOT, .value = LITEST_AUTO_ASSIGN }, 42a46c0ec8Sopenharmony_ci { .type = EV_ABS, .code = ABS_MT_POSITION_X, .value = LITEST_AUTO_ASSIGN }, 43a46c0ec8Sopenharmony_ci { .type = EV_ABS, .code = ABS_MT_POSITION_Y, .value = LITEST_AUTO_ASSIGN }, 44a46c0ec8Sopenharmony_ci { .type = EV_SYN, .code = SYN_REPORT, .value = 0 }, 45a46c0ec8Sopenharmony_ci { .type = -1, .code = -1 }, 46a46c0ec8Sopenharmony_ci}; 47a46c0ec8Sopenharmony_ci 48a46c0ec8Sopenharmony_ci/* We define down/move so that we can emulate fake touches on this device, 49a46c0ec8Sopenharmony_ci to make sure nothing crashes. */ 50a46c0ec8Sopenharmony_cistatic struct litest_device_interface interface = { 51a46c0ec8Sopenharmony_ci .touch_down_events = down, 52a46c0ec8Sopenharmony_ci .touch_move_events = move, 53a46c0ec8Sopenharmony_ci}; 54a46c0ec8Sopenharmony_ci 55a46c0ec8Sopenharmony_cistatic struct input_absinfo absinfo[] = { 56a46c0ec8Sopenharmony_ci { ABS_X, 0, 1022, 0, 0, 12 }, 57a46c0ec8Sopenharmony_ci { ABS_Y, 0, 487, 0, 0, 12 }, 58a46c0ec8Sopenharmony_ci { ABS_VOLUME, 0, 1023, 0, 0, 0 }, 59a46c0ec8Sopenharmony_ci { ABS_MISC, 0, 255, 0, 0, 0 }, 60a46c0ec8Sopenharmony_ci { 41, 0, 255, 0, 0, 0 }, 61a46c0ec8Sopenharmony_ci { 42, -127, 127, 0, 0, 0 }, 62a46c0ec8Sopenharmony_ci { 43, -127, 127, 0, 0, 0 }, 63a46c0ec8Sopenharmony_ci { 44, -127, 127, 0, 0, 0 }, 64a46c0ec8Sopenharmony_ci { 45, -127, 127, 0, 0, 0 }, 65a46c0ec8Sopenharmony_ci { 46, -127, 127, 0, 0, 0 }, 66a46c0ec8Sopenharmony_ci { 47, -127, 127, 0, 0, 0 }, 67a46c0ec8Sopenharmony_ci /* ABS_MT range overlap starts here */ 68a46c0ec8Sopenharmony_ci { 48, -127, 127, 0, 0, 0 }, /* ABS_MT_SLOT */ 69a46c0ec8Sopenharmony_ci { 49, -127, 127, 0, 0, 0 }, 70a46c0ec8Sopenharmony_ci { 50, -127, 127, 0, 0, 0 }, 71a46c0ec8Sopenharmony_ci { 51, -127, 127, 0, 0, 0 }, 72a46c0ec8Sopenharmony_ci { 52, -127, 127, 0, 0, 0 }, 73a46c0ec8Sopenharmony_ci { 53, -127, 127, 0, 0, 0 }, 74a46c0ec8Sopenharmony_ci { 54, -127, 127, 0, 0, 0 }, 75a46c0ec8Sopenharmony_ci { 55, -127, 127, 0, 0, 0 }, 76a46c0ec8Sopenharmony_ci { 56, -127, 127, 0, 0, 0 }, 77a46c0ec8Sopenharmony_ci { 57, -127, 127, 0, 0, 0 }, 78a46c0ec8Sopenharmony_ci { 58, -127, 127, 0, 0, 0 }, 79a46c0ec8Sopenharmony_ci { 59, -127, 127, 0, 0, 0 }, 80a46c0ec8Sopenharmony_ci { 60, -127, 127, 0, 0, 0 }, 81a46c0ec8Sopenharmony_ci { 61, -127, 127, 0, 0, 0 }, /* ABS_MT_TOOL_Y */ 82a46c0ec8Sopenharmony_ci { 62, -127, 127, 0, 0, 0 }, 83a46c0ec8Sopenharmony_ci { .value = -1 }, 84a46c0ec8Sopenharmony_ci}; 85a46c0ec8Sopenharmony_ci 86a46c0ec8Sopenharmony_cistatic struct input_id input_id = { 87a46c0ec8Sopenharmony_ci .bustype = 0x3, 88a46c0ec8Sopenharmony_ci .vendor = 0x45e, 89a46c0ec8Sopenharmony_ci .product = 0x7dc, 90a46c0ec8Sopenharmony_ci}; 91a46c0ec8Sopenharmony_ci 92a46c0ec8Sopenharmony_cistatic int events[] = { 93a46c0ec8Sopenharmony_ci EV_REL, REL_X, 94a46c0ec8Sopenharmony_ci EV_REL, REL_Y, 95a46c0ec8Sopenharmony_ci EV_REL, REL_HWHEEL, 96a46c0ec8Sopenharmony_ci EV_REL, REL_DIAL, 97a46c0ec8Sopenharmony_ci EV_REL, REL_WHEEL, 98a46c0ec8Sopenharmony_ci EV_KEY, KEY_ESC, 99a46c0ec8Sopenharmony_ci EV_KEY, KEY_1, 100a46c0ec8Sopenharmony_ci EV_KEY, KEY_2, 101a46c0ec8Sopenharmony_ci EV_KEY, KEY_3, 102a46c0ec8Sopenharmony_ci EV_KEY, KEY_4, 103a46c0ec8Sopenharmony_ci EV_KEY, KEY_5, 104a46c0ec8Sopenharmony_ci EV_KEY, KEY_6, 105a46c0ec8Sopenharmony_ci EV_KEY, KEY_7, 106a46c0ec8Sopenharmony_ci EV_KEY, KEY_8, 107a46c0ec8Sopenharmony_ci EV_KEY, KEY_9, 108a46c0ec8Sopenharmony_ci EV_KEY, KEY_0, 109a46c0ec8Sopenharmony_ci EV_KEY, KEY_MINUS, 110a46c0ec8Sopenharmony_ci EV_KEY, KEY_EQUAL, 111a46c0ec8Sopenharmony_ci EV_KEY, KEY_BACKSPACE, 112a46c0ec8Sopenharmony_ci EV_KEY, KEY_TAB, 113a46c0ec8Sopenharmony_ci EV_KEY, KEY_Q, 114a46c0ec8Sopenharmony_ci EV_KEY, KEY_W, 115a46c0ec8Sopenharmony_ci EV_KEY, KEY_E, 116a46c0ec8Sopenharmony_ci EV_KEY, KEY_R, 117a46c0ec8Sopenharmony_ci EV_KEY, KEY_T, 118a46c0ec8Sopenharmony_ci EV_KEY, KEY_Y, 119a46c0ec8Sopenharmony_ci EV_KEY, KEY_U, 120a46c0ec8Sopenharmony_ci EV_KEY, KEY_I, 121a46c0ec8Sopenharmony_ci EV_KEY, KEY_O, 122a46c0ec8Sopenharmony_ci EV_KEY, KEY_P, 123a46c0ec8Sopenharmony_ci EV_KEY, KEY_LEFTBRACE, 124a46c0ec8Sopenharmony_ci EV_KEY, KEY_RIGHTBRACE, 125a46c0ec8Sopenharmony_ci EV_KEY, KEY_ENTER, 126a46c0ec8Sopenharmony_ci EV_KEY, KEY_LEFTCTRL, 127a46c0ec8Sopenharmony_ci EV_KEY, KEY_A, 128a46c0ec8Sopenharmony_ci EV_KEY, KEY_S, 129a46c0ec8Sopenharmony_ci EV_KEY, KEY_D, 130a46c0ec8Sopenharmony_ci EV_KEY, KEY_F, 131a46c0ec8Sopenharmony_ci EV_KEY, KEY_G, 132a46c0ec8Sopenharmony_ci EV_KEY, KEY_H, 133a46c0ec8Sopenharmony_ci EV_KEY, KEY_J, 134a46c0ec8Sopenharmony_ci EV_KEY, KEY_K, 135a46c0ec8Sopenharmony_ci EV_KEY, KEY_L, 136a46c0ec8Sopenharmony_ci EV_KEY, KEY_SEMICOLON, 137a46c0ec8Sopenharmony_ci EV_KEY, KEY_APOSTROPHE, 138a46c0ec8Sopenharmony_ci EV_KEY, KEY_GRAVE, 139a46c0ec8Sopenharmony_ci EV_KEY, KEY_LEFTSHIFT, 140a46c0ec8Sopenharmony_ci EV_KEY, KEY_BACKSLASH, 141a46c0ec8Sopenharmony_ci EV_KEY, KEY_Z, 142a46c0ec8Sopenharmony_ci EV_KEY, KEY_X, 143a46c0ec8Sopenharmony_ci EV_KEY, KEY_C, 144a46c0ec8Sopenharmony_ci EV_KEY, KEY_V, 145a46c0ec8Sopenharmony_ci EV_KEY, KEY_B, 146a46c0ec8Sopenharmony_ci EV_KEY, KEY_N, 147a46c0ec8Sopenharmony_ci EV_KEY, KEY_M, 148a46c0ec8Sopenharmony_ci EV_KEY, KEY_COMMA, 149a46c0ec8Sopenharmony_ci EV_KEY, KEY_DOT, 150a46c0ec8Sopenharmony_ci EV_KEY, KEY_SLASH, 151a46c0ec8Sopenharmony_ci EV_KEY, KEY_RIGHTSHIFT, 152a46c0ec8Sopenharmony_ci EV_KEY, KEY_KPASTERISK, 153a46c0ec8Sopenharmony_ci EV_KEY, KEY_LEFTALT, 154a46c0ec8Sopenharmony_ci EV_KEY, KEY_SPACE, 155a46c0ec8Sopenharmony_ci EV_KEY, KEY_CAPSLOCK, 156a46c0ec8Sopenharmony_ci EV_KEY, KEY_F1, 157a46c0ec8Sopenharmony_ci EV_KEY, KEY_F2, 158a46c0ec8Sopenharmony_ci EV_KEY, KEY_F3, 159a46c0ec8Sopenharmony_ci EV_KEY, KEY_F4, 160a46c0ec8Sopenharmony_ci EV_KEY, KEY_F5, 161a46c0ec8Sopenharmony_ci EV_KEY, KEY_F6, 162a46c0ec8Sopenharmony_ci EV_KEY, KEY_F7, 163a46c0ec8Sopenharmony_ci EV_KEY, KEY_F8, 164a46c0ec8Sopenharmony_ci EV_KEY, KEY_F9, 165a46c0ec8Sopenharmony_ci EV_KEY, KEY_F10, 166a46c0ec8Sopenharmony_ci EV_KEY, KEY_NUMLOCK, 167a46c0ec8Sopenharmony_ci EV_KEY, KEY_SCROLLLOCK, 168a46c0ec8Sopenharmony_ci EV_KEY, KEY_KP7, 169a46c0ec8Sopenharmony_ci EV_KEY, KEY_KP8, 170a46c0ec8Sopenharmony_ci EV_KEY, KEY_KP9, 171a46c0ec8Sopenharmony_ci EV_KEY, KEY_KPMINUS, 172a46c0ec8Sopenharmony_ci EV_KEY, KEY_KP4, 173a46c0ec8Sopenharmony_ci EV_KEY, KEY_KP5, 174a46c0ec8Sopenharmony_ci EV_KEY, KEY_KP6, 175a46c0ec8Sopenharmony_ci EV_KEY, KEY_KPPLUS, 176a46c0ec8Sopenharmony_ci EV_KEY, KEY_KP1, 177a46c0ec8Sopenharmony_ci EV_KEY, KEY_KP2, 178a46c0ec8Sopenharmony_ci EV_KEY, KEY_KP3, 179a46c0ec8Sopenharmony_ci EV_KEY, KEY_KP0, 180a46c0ec8Sopenharmony_ci EV_KEY, KEY_KPDOT, 181a46c0ec8Sopenharmony_ci EV_KEY, KEY_102ND, 182a46c0ec8Sopenharmony_ci EV_KEY, KEY_F11, 183a46c0ec8Sopenharmony_ci EV_KEY, KEY_F12, 184a46c0ec8Sopenharmony_ci EV_KEY, KEY_RO, 185a46c0ec8Sopenharmony_ci EV_KEY, KEY_HENKAN, 186a46c0ec8Sopenharmony_ci EV_KEY, KEY_KATAKANAHIRAGANA, 187a46c0ec8Sopenharmony_ci EV_KEY, KEY_MUHENKAN, 188a46c0ec8Sopenharmony_ci EV_KEY, KEY_KPJPCOMMA, 189a46c0ec8Sopenharmony_ci EV_KEY, KEY_KPENTER, 190a46c0ec8Sopenharmony_ci EV_KEY, KEY_RIGHTCTRL, 191a46c0ec8Sopenharmony_ci EV_KEY, KEY_KPSLASH, 192a46c0ec8Sopenharmony_ci EV_KEY, KEY_SYSRQ, 193a46c0ec8Sopenharmony_ci EV_KEY, KEY_RIGHTALT, 194a46c0ec8Sopenharmony_ci EV_KEY, KEY_HOME, 195a46c0ec8Sopenharmony_ci EV_KEY, KEY_UP, 196a46c0ec8Sopenharmony_ci EV_KEY, KEY_PAGEUP, 197a46c0ec8Sopenharmony_ci EV_KEY, KEY_LEFT, 198a46c0ec8Sopenharmony_ci EV_KEY, KEY_RIGHT, 199a46c0ec8Sopenharmony_ci EV_KEY, KEY_END, 200a46c0ec8Sopenharmony_ci EV_KEY, KEY_DOWN, 201a46c0ec8Sopenharmony_ci EV_KEY, KEY_PAGEDOWN, 202a46c0ec8Sopenharmony_ci EV_KEY, KEY_INSERT, 203a46c0ec8Sopenharmony_ci EV_KEY, KEY_DELETE, 204a46c0ec8Sopenharmony_ci EV_KEY, KEY_MUTE, 205a46c0ec8Sopenharmony_ci EV_KEY, KEY_VOLUMEDOWN, 206a46c0ec8Sopenharmony_ci EV_KEY, KEY_VOLUMEUP, 207a46c0ec8Sopenharmony_ci EV_KEY, KEY_POWER, 208a46c0ec8Sopenharmony_ci EV_KEY, KEY_KPEQUAL, 209a46c0ec8Sopenharmony_ci EV_KEY, KEY_PAUSE, 210a46c0ec8Sopenharmony_ci EV_KEY, KEY_KPCOMMA, 211a46c0ec8Sopenharmony_ci EV_KEY, KEY_HANGEUL, 212a46c0ec8Sopenharmony_ci EV_KEY, KEY_HANJA, 213a46c0ec8Sopenharmony_ci EV_KEY, KEY_YEN, 214a46c0ec8Sopenharmony_ci EV_KEY, KEY_LEFTMETA, 215a46c0ec8Sopenharmony_ci EV_KEY, KEY_RIGHTMETA, 216a46c0ec8Sopenharmony_ci EV_KEY, KEY_COMPOSE, 217a46c0ec8Sopenharmony_ci EV_KEY, KEY_STOP, 218a46c0ec8Sopenharmony_ci EV_KEY, KEY_AGAIN, 219a46c0ec8Sopenharmony_ci EV_KEY, KEY_PROPS, 220a46c0ec8Sopenharmony_ci EV_KEY, KEY_UNDO, 221a46c0ec8Sopenharmony_ci EV_KEY, KEY_FRONT, 222a46c0ec8Sopenharmony_ci EV_KEY, KEY_COPY, 223a46c0ec8Sopenharmony_ci EV_KEY, KEY_OPEN, 224a46c0ec8Sopenharmony_ci EV_KEY, KEY_PASTE, 225a46c0ec8Sopenharmony_ci EV_KEY, KEY_FIND, 226a46c0ec8Sopenharmony_ci EV_KEY, KEY_CUT, 227a46c0ec8Sopenharmony_ci EV_KEY, KEY_HELP, 228a46c0ec8Sopenharmony_ci EV_KEY, KEY_MENU, 229a46c0ec8Sopenharmony_ci EV_KEY, KEY_CALC, 230a46c0ec8Sopenharmony_ci EV_KEY, KEY_SLEEP, 231a46c0ec8Sopenharmony_ci EV_KEY, KEY_FILE, 232a46c0ec8Sopenharmony_ci EV_KEY, KEY_WWW, 233a46c0ec8Sopenharmony_ci EV_KEY, KEY_COFFEE, 234a46c0ec8Sopenharmony_ci EV_KEY, KEY_MAIL, 235a46c0ec8Sopenharmony_ci EV_KEY, KEY_BOOKMARKS, 236a46c0ec8Sopenharmony_ci EV_KEY, KEY_BACK, 237a46c0ec8Sopenharmony_ci EV_KEY, KEY_FORWARD, 238a46c0ec8Sopenharmony_ci EV_KEY, KEY_EJECTCD, 239a46c0ec8Sopenharmony_ci EV_KEY, KEY_NEXTSONG, 240a46c0ec8Sopenharmony_ci EV_KEY, KEY_PLAYPAUSE, 241a46c0ec8Sopenharmony_ci EV_KEY, KEY_PREVIOUSSONG, 242a46c0ec8Sopenharmony_ci EV_KEY, KEY_STOPCD, 243a46c0ec8Sopenharmony_ci EV_KEY, KEY_RECORD, 244a46c0ec8Sopenharmony_ci EV_KEY, KEY_REWIND, 245a46c0ec8Sopenharmony_ci EV_KEY, KEY_PHONE, 246a46c0ec8Sopenharmony_ci EV_KEY, KEY_CONFIG, 247a46c0ec8Sopenharmony_ci EV_KEY, KEY_HOMEPAGE, 248a46c0ec8Sopenharmony_ci EV_KEY, KEY_REFRESH, 249a46c0ec8Sopenharmony_ci EV_KEY, KEY_EXIT, 250a46c0ec8Sopenharmony_ci EV_KEY, KEY_EDIT, 251a46c0ec8Sopenharmony_ci EV_KEY, KEY_SCROLLUP, 252a46c0ec8Sopenharmony_ci EV_KEY, KEY_SCROLLDOWN, 253a46c0ec8Sopenharmony_ci EV_KEY, KEY_NEW, 254a46c0ec8Sopenharmony_ci EV_KEY, KEY_REDO, 255a46c0ec8Sopenharmony_ci EV_KEY, KEY_F13, 256a46c0ec8Sopenharmony_ci EV_KEY, KEY_F14, 257a46c0ec8Sopenharmony_ci EV_KEY, KEY_F15, 258a46c0ec8Sopenharmony_ci EV_KEY, KEY_F16, 259a46c0ec8Sopenharmony_ci EV_KEY, KEY_F17, 260a46c0ec8Sopenharmony_ci EV_KEY, KEY_F18, 261a46c0ec8Sopenharmony_ci EV_KEY, KEY_F19, 262a46c0ec8Sopenharmony_ci EV_KEY, KEY_F20, 263a46c0ec8Sopenharmony_ci EV_KEY, KEY_F21, 264a46c0ec8Sopenharmony_ci EV_KEY, KEY_F22, 265a46c0ec8Sopenharmony_ci EV_KEY, KEY_F23, 266a46c0ec8Sopenharmony_ci EV_KEY, KEY_F24, 267a46c0ec8Sopenharmony_ci EV_KEY, KEY_CLOSE, 268a46c0ec8Sopenharmony_ci EV_KEY, KEY_PLAY, 269a46c0ec8Sopenharmony_ci EV_KEY, KEY_FASTFORWARD, 270a46c0ec8Sopenharmony_ci EV_KEY, KEY_BASSBOOST, 271a46c0ec8Sopenharmony_ci EV_KEY, KEY_PRINT, 272a46c0ec8Sopenharmony_ci EV_KEY, KEY_CAMERA, 273a46c0ec8Sopenharmony_ci EV_KEY, KEY_CHAT, 274a46c0ec8Sopenharmony_ci EV_KEY, KEY_SEARCH, 275a46c0ec8Sopenharmony_ci EV_KEY, KEY_FINANCE, 276a46c0ec8Sopenharmony_ci EV_KEY, KEY_CANCEL, 277a46c0ec8Sopenharmony_ci EV_KEY, KEY_BRIGHTNESSDOWN, 278a46c0ec8Sopenharmony_ci EV_KEY, KEY_BRIGHTNESSUP, 279a46c0ec8Sopenharmony_ci EV_KEY, KEY_KBDILLUMTOGGLE, 280a46c0ec8Sopenharmony_ci EV_KEY, KEY_SEND, 281a46c0ec8Sopenharmony_ci EV_KEY, KEY_REPLY, 282a46c0ec8Sopenharmony_ci EV_KEY, KEY_FORWARDMAIL, 283a46c0ec8Sopenharmony_ci EV_KEY, KEY_SAVE, 284a46c0ec8Sopenharmony_ci EV_KEY, KEY_DOCUMENTS, 285a46c0ec8Sopenharmony_ci EV_KEY, KEY_UNKNOWN, 286a46c0ec8Sopenharmony_ci EV_KEY, KEY_VIDEO_NEXT, 287a46c0ec8Sopenharmony_ci EV_KEY, KEY_BRIGHTNESS_ZERO, 288a46c0ec8Sopenharmony_ci EV_KEY, BTN_0, 289a46c0ec8Sopenharmony_ci EV_KEY, BTN_LEFT, 290a46c0ec8Sopenharmony_ci EV_KEY, BTN_RIGHT, 291a46c0ec8Sopenharmony_ci EV_KEY, BTN_MIDDLE, 292a46c0ec8Sopenharmony_ci EV_KEY, BTN_SIDE, 293a46c0ec8Sopenharmony_ci EV_KEY, BTN_EXTRA, 294a46c0ec8Sopenharmony_ci EV_KEY, KEY_SELECT, 295a46c0ec8Sopenharmony_ci EV_KEY, KEY_GOTO, 296a46c0ec8Sopenharmony_ci EV_KEY, KEY_INFO, 297a46c0ec8Sopenharmony_ci EV_KEY, KEY_PROGRAM, 298a46c0ec8Sopenharmony_ci EV_KEY, KEY_PVR, 299a46c0ec8Sopenharmony_ci EV_KEY, KEY_SUBTITLE, 300a46c0ec8Sopenharmony_ci EV_KEY, KEY_ZOOM, 301a46c0ec8Sopenharmony_ci EV_KEY, KEY_KEYBOARD, 302a46c0ec8Sopenharmony_ci EV_KEY, KEY_PC, 303a46c0ec8Sopenharmony_ci EV_KEY, KEY_TV, 304a46c0ec8Sopenharmony_ci EV_KEY, KEY_TV2, 305a46c0ec8Sopenharmony_ci EV_KEY, KEY_VCR, 306a46c0ec8Sopenharmony_ci EV_KEY, KEY_VCR2, 307a46c0ec8Sopenharmony_ci EV_KEY, KEY_SAT, 308a46c0ec8Sopenharmony_ci EV_KEY, KEY_CD, 309a46c0ec8Sopenharmony_ci EV_KEY, KEY_TAPE, 310a46c0ec8Sopenharmony_ci EV_KEY, KEY_TUNER, 311a46c0ec8Sopenharmony_ci EV_KEY, KEY_PLAYER, 312a46c0ec8Sopenharmony_ci EV_KEY, KEY_DVD, 313a46c0ec8Sopenharmony_ci EV_KEY, KEY_AUDIO, 314a46c0ec8Sopenharmony_ci EV_KEY, KEY_VIDEO, 315a46c0ec8Sopenharmony_ci EV_KEY, KEY_MEMO, 316a46c0ec8Sopenharmony_ci EV_KEY, KEY_CALENDAR, 317a46c0ec8Sopenharmony_ci EV_KEY, KEY_RED, 318a46c0ec8Sopenharmony_ci EV_KEY, KEY_GREEN, 319a46c0ec8Sopenharmony_ci EV_KEY, KEY_YELLOW, 320a46c0ec8Sopenharmony_ci EV_KEY, KEY_BLUE, 321a46c0ec8Sopenharmony_ci EV_KEY, KEY_CHANNELUP, 322a46c0ec8Sopenharmony_ci EV_KEY, KEY_CHANNELDOWN, 323a46c0ec8Sopenharmony_ci EV_KEY, KEY_LAST, 324a46c0ec8Sopenharmony_ci EV_KEY, KEY_NEXT, 325a46c0ec8Sopenharmony_ci EV_KEY, KEY_RESTART, 326a46c0ec8Sopenharmony_ci EV_KEY, KEY_SLOW, 327a46c0ec8Sopenharmony_ci EV_KEY, KEY_SHUFFLE, 328a46c0ec8Sopenharmony_ci EV_KEY, KEY_PREVIOUS, 329a46c0ec8Sopenharmony_ci EV_KEY, KEY_VIDEOPHONE, 330a46c0ec8Sopenharmony_ci EV_KEY, KEY_GAMES, 331a46c0ec8Sopenharmony_ci EV_KEY, KEY_ZOOMIN, 332a46c0ec8Sopenharmony_ci EV_KEY, KEY_ZOOMOUT, 333a46c0ec8Sopenharmony_ci EV_KEY, KEY_ZOOMRESET, 334a46c0ec8Sopenharmony_ci EV_KEY, KEY_WORDPROCESSOR, 335a46c0ec8Sopenharmony_ci EV_KEY, KEY_EDITOR, 336a46c0ec8Sopenharmony_ci EV_KEY, KEY_SPREADSHEET, 337a46c0ec8Sopenharmony_ci EV_KEY, KEY_GRAPHICSEDITOR, 338a46c0ec8Sopenharmony_ci EV_KEY, KEY_PRESENTATION, 339a46c0ec8Sopenharmony_ci EV_KEY, KEY_DATABASE, 340a46c0ec8Sopenharmony_ci EV_KEY, KEY_NEWS, 341a46c0ec8Sopenharmony_ci EV_KEY, KEY_VOICEMAIL, 342a46c0ec8Sopenharmony_ci EV_KEY, KEY_ADDRESSBOOK, 343a46c0ec8Sopenharmony_ci EV_KEY, KEY_MESSENGER, 344a46c0ec8Sopenharmony_ci EV_KEY, KEY_DISPLAYTOGGLE, 345a46c0ec8Sopenharmony_ci EV_KEY, KEY_SPELLCHECK, 346a46c0ec8Sopenharmony_ci EV_KEY, KEY_LOGOFF, 347a46c0ec8Sopenharmony_ci EV_KEY, KEY_MEDIA_REPEAT, 348a46c0ec8Sopenharmony_ci EV_KEY, KEY_IMAGES, 349a46c0ec8Sopenharmony_ci EV_KEY, 576, 350a46c0ec8Sopenharmony_ci EV_KEY, 577, 351a46c0ec8Sopenharmony_ci EV_KEY, 578, 352a46c0ec8Sopenharmony_ci EV_KEY, 579, 353a46c0ec8Sopenharmony_ci EV_KEY, 580, 354a46c0ec8Sopenharmony_ci EV_KEY, 581, 355a46c0ec8Sopenharmony_ci EV_KEY, 582, 356a46c0ec8Sopenharmony_ci EV_KEY, 592, 357a46c0ec8Sopenharmony_ci EV_KEY, 593, 358a46c0ec8Sopenharmony_ci EV_KEY, 608, 359a46c0ec8Sopenharmony_ci EV_KEY, 609, 360a46c0ec8Sopenharmony_ci EV_KEY, 610, 361a46c0ec8Sopenharmony_ci EV_KEY, 611, 362a46c0ec8Sopenharmony_ci EV_KEY, 612, 363a46c0ec8Sopenharmony_ci EV_KEY, 613, 364a46c0ec8Sopenharmony_ci EV_LED, LED_NUML, 365a46c0ec8Sopenharmony_ci EV_LED, LED_CAPSL, 366a46c0ec8Sopenharmony_ci EV_LED, LED_SCROLLL, 367a46c0ec8Sopenharmony_ci -1, -1, 368a46c0ec8Sopenharmony_ci}; 369a46c0ec8Sopenharmony_ci 370a46c0ec8Sopenharmony_ciTEST_DEVICE("ms-surface-cover", 371a46c0ec8Sopenharmony_ci .type = LITEST_MS_SURFACE_COVER, 372a46c0ec8Sopenharmony_ci .features = LITEST_KEYS | LITEST_ABSOLUTE | LITEST_RELATIVE | LITEST_FAKE_MT | LITEST_BUTTON | LITEST_WHEEL, 373a46c0ec8Sopenharmony_ci .interface = &interface, 374a46c0ec8Sopenharmony_ci 375a46c0ec8Sopenharmony_ci .name = "Microsoft Surface Type Cover", 376a46c0ec8Sopenharmony_ci .id = &input_id, 377a46c0ec8Sopenharmony_ci .events = events, 378a46c0ec8Sopenharmony_ci .absinfo = absinfo, 379a46c0ec8Sopenharmony_ci) 380