decls.lua (34931B)
1 -- Auto generated file by gen_events.rb, do not edit! 2 3 local base = string.match(..., "(.-)[^%.]+%.[^%.]+$") 4 local bit = require("bit") 5 local eh = require(base.."helper.enum") 6 local ffi = require("ffi") 7 local ioctl_mod = require(base.."helper.ioctl") 8 9 local ioctl, nrshift, sizeshift = ioctl_mod.ioctl, ioctl_mod.nrshift, ioctl_mod.sizeshift 10 local lshift = bit.lshift 11 local ffi_cast, ffi_sizeof = ffi.cast, ffi.sizeof 12 local tostring = tostring 13 14 ffi.cdef[[ 15 typedef unsigned long __kernel_ulong_t; 16 typedef int8_t __s8; typedef uint8_t __u8; 17 typedef int16_t __s16; typedef uint16_t __u16; 18 typedef int32_t __s32; typedef uint32_t __u32; 19 typedef int64_t __s64; typedef uint64_t __u64; 20 struct input_event { 21 __kernel_ulong_t __sec; 22 __kernel_ulong_t __usec; 23 __u16 type; 24 __u16 code; 25 __s32 value; 26 }; 27 struct input_id { 28 __u16 bustype; 29 __u16 vendor; 30 __u16 product; 31 __u16 version; 32 }; 33 struct input_absinfo { 34 __s32 value; 35 __s32 minimum; 36 __s32 maximum; 37 __s32 fuzz; 38 __s32 flat; 39 __s32 resolution; 40 }; 41 struct input_keymap_entry { 42 __u8 flags; 43 __u8 len; 44 __u16 index; 45 __u32 keycode; 46 __u8 scancode[32]; 47 }; 48 struct input_mask { 49 __u32 type; 50 __u32 codes_size; 51 __u64 codes_ptr; 52 }; 53 struct ff_replay { 54 __u16 length; 55 __u16 delay; 56 }; 57 struct ff_trigger { 58 __u16 button; 59 __u16 interval; 60 }; 61 struct ff_envelope { 62 __u16 attack_length; 63 __u16 attack_level; 64 __u16 fade_length; 65 __u16 fade_level; 66 }; 67 struct ff_constant_effect { 68 __s16 level; 69 struct ff_envelope envelope; 70 }; 71 struct ff_ramp_effect { 72 __s16 start_level; 73 __s16 end_level; 74 struct ff_envelope envelope; 75 }; 76 struct ff_condition_effect { 77 __u16 right_saturation; 78 __u16 left_saturation; 79 __s16 right_coeff; 80 __s16 left_coeff; 81 __u16 deadband; 82 __s16 center; 83 }; 84 struct ff_periodic_effect { 85 __u16 waveform; 86 __u16 period; 87 __s16 magnitude; 88 __s16 offset; 89 __u16 phase; 90 struct ff_envelope envelope; 91 __u32 custom_len; 92 __s16 *custom_data; 93 }; 94 struct ff_rumble_effect { 95 __u16 strong_magnitude; 96 __u16 weak_magnitude; 97 }; 98 struct ff_effect { 99 __u16 type; 100 __s16 id; 101 __u16 direction; 102 struct ff_trigger trigger; 103 struct ff_replay replay; 104 union { 105 struct ff_constant_effect constant; 106 struct ff_ramp_effect ramp; 107 struct ff_periodic_effect periodic; 108 struct ff_condition_effect condition[2]; 109 struct ff_rumble_effect rumble; 110 } u; 111 }; 112 struct uinput_ff_upload { 113 __u32 request_id; 114 __s32 retval; 115 struct ff_effect effect; 116 struct ff_effect old; 117 }; 118 struct uinput_ff_erase { 119 __u32 request_id; 120 __s32 retval; 121 __u32 effect_id; 122 }; 123 struct uinput_setup { 124 struct input_id id; 125 char name[80]; 126 __u32 ff_effects_max; 127 }; 128 struct uinput_abs_setup { 129 __u16 code; 130 struct input_absinfo absinfo; 131 }; 132 struct uinput_user_dev { 133 char name[80]; 134 struct input_id id; 135 __u32 ff_effects_max; 136 __s32 absmax[(0x3f+1)]; 137 __s32 absmin[(0x3f+1)]; 138 __s32 absfuzz[(0x3f+1)]; 139 __s32 absflat[(0x3f+1)]; 140 }; 141 ]] 142 local enums = {} 143 enums.KEY = eh.make_enum{ 144 {"KEY_RESERVED", 0}, 145 {"KEY_ESC", 1}, 146 {"KEY_1", 2}, 147 {"KEY_2", 3}, 148 {"KEY_3", 4}, 149 {"KEY_4", 5}, 150 {"KEY_5", 6}, 151 {"KEY_6", 7}, 152 {"KEY_7", 8}, 153 {"KEY_8", 9}, 154 {"KEY_9", 10}, 155 {"KEY_0", 11}, 156 {"KEY_MINUS", 12}, 157 {"KEY_EQUAL", 13}, 158 {"KEY_BACKSPACE", 14}, 159 {"KEY_TAB", 15}, 160 {"KEY_Q", 16}, 161 {"KEY_W", 17}, 162 {"KEY_E", 18}, 163 {"KEY_R", 19}, 164 {"KEY_T", 20}, 165 {"KEY_Y", 21}, 166 {"KEY_U", 22}, 167 {"KEY_I", 23}, 168 {"KEY_O", 24}, 169 {"KEY_P", 25}, 170 {"KEY_LEFTBRACE", 26}, 171 {"KEY_RIGHTBRACE", 27}, 172 {"KEY_ENTER", 28}, 173 {"KEY_LEFTCTRL", 29}, 174 {"KEY_A", 30}, 175 {"KEY_S", 31}, 176 {"KEY_D", 32}, 177 {"KEY_F", 33}, 178 {"KEY_G", 34}, 179 {"KEY_H", 35}, 180 {"KEY_J", 36}, 181 {"KEY_K", 37}, 182 {"KEY_L", 38}, 183 {"KEY_SEMICOLON", 39}, 184 {"KEY_APOSTROPHE", 40}, 185 {"KEY_GRAVE", 41}, 186 {"KEY_LEFTSHIFT", 42}, 187 {"KEY_BACKSLASH", 43}, 188 {"KEY_Z", 44}, 189 {"KEY_X", 45}, 190 {"KEY_C", 46}, 191 {"KEY_V", 47}, 192 {"KEY_B", 48}, 193 {"KEY_N", 49}, 194 {"KEY_M", 50}, 195 {"KEY_COMMA", 51}, 196 {"KEY_DOT", 52}, 197 {"KEY_SLASH", 53}, 198 {"KEY_RIGHTSHIFT", 54}, 199 {"KEY_KPASTERISK", 55}, 200 {"KEY_LEFTALT", 56}, 201 {"KEY_SPACE", 57}, 202 {"KEY_CAPSLOCK", 58}, 203 {"KEY_F1", 59}, 204 {"KEY_F2", 60}, 205 {"KEY_F3", 61}, 206 {"KEY_F4", 62}, 207 {"KEY_F5", 63}, 208 {"KEY_F6", 64}, 209 {"KEY_F7", 65}, 210 {"KEY_F8", 66}, 211 {"KEY_F9", 67}, 212 {"KEY_F10", 68}, 213 {"KEY_NUMLOCK", 69}, 214 {"KEY_SCROLLLOCK", 70}, 215 {"KEY_KP7", 71}, 216 {"KEY_KP8", 72}, 217 {"KEY_KP9", 73}, 218 {"KEY_KPMINUS", 74}, 219 {"KEY_KP4", 75}, 220 {"KEY_KP5", 76}, 221 {"KEY_KP6", 77}, 222 {"KEY_KPPLUS", 78}, 223 {"KEY_KP1", 79}, 224 {"KEY_KP2", 80}, 225 {"KEY_KP3", 81}, 226 {"KEY_KP0", 82}, 227 {"KEY_KPDOT", 83}, 228 {"KEY_ZENKAKUHANKAKU", 85}, 229 {"KEY_102ND", 86}, 230 {"KEY_F11", 87}, 231 {"KEY_F12", 88}, 232 {"KEY_RO", 89}, 233 {"KEY_KATAKANA", 90}, 234 {"KEY_HIRAGANA", 91}, 235 {"KEY_HENKAN", 92}, 236 {"KEY_KATAKANAHIRAGANA", 93}, 237 {"KEY_MUHENKAN", 94}, 238 {"KEY_KPJPCOMMA", 95}, 239 {"KEY_KPENTER", 96}, 240 {"KEY_RIGHTCTRL", 97}, 241 {"KEY_KPSLASH", 98}, 242 {"KEY_SYSRQ", 99}, 243 {"KEY_RIGHTALT", 100}, 244 {"KEY_LINEFEED", 101}, 245 {"KEY_HOME", 102}, 246 {"KEY_UP", 103}, 247 {"KEY_PAGEUP", 104}, 248 {"KEY_LEFT", 105}, 249 {"KEY_RIGHT", 106}, 250 {"KEY_END", 107}, 251 {"KEY_DOWN", 108}, 252 {"KEY_PAGEDOWN", 109}, 253 {"KEY_INSERT", 110}, 254 {"KEY_DELETE", 111}, 255 {"KEY_MACRO", 112}, 256 {"KEY_MUTE", 113}, 257 {"KEY_VOLUMEDOWN", 114}, 258 {"KEY_VOLUMEUP", 115}, 259 {"KEY_POWER", 116}, 260 {"KEY_KPEQUAL", 117}, 261 {"KEY_KPPLUSMINUS", 118}, 262 {"KEY_PAUSE", 119}, 263 {"KEY_SCALE", 120}, 264 {"KEY_KPCOMMA", 121}, 265 {"KEY_HANGEUL", 122}, 266 {"KEY_HANGUEL", 122}, 267 {"KEY_HANJA", 123}, 268 {"KEY_YEN", 124}, 269 {"KEY_LEFTMETA", 125}, 270 {"KEY_RIGHTMETA", 126}, 271 {"KEY_COMPOSE", 127}, 272 {"KEY_STOP", 128}, 273 {"KEY_AGAIN", 129}, 274 {"KEY_PROPS", 130}, 275 {"KEY_UNDO", 131}, 276 {"KEY_FRONT", 132}, 277 {"KEY_COPY", 133}, 278 {"KEY_OPEN", 134}, 279 {"KEY_PASTE", 135}, 280 {"KEY_FIND", 136}, 281 {"KEY_CUT", 137}, 282 {"KEY_HELP", 138}, 283 {"KEY_MENU", 139}, 284 {"KEY_CALC", 140}, 285 {"KEY_SETUP", 141}, 286 {"KEY_SLEEP", 142}, 287 {"KEY_WAKEUP", 143}, 288 {"KEY_FILE", 144}, 289 {"KEY_SENDFILE", 145}, 290 {"KEY_DELETEFILE", 146}, 291 {"KEY_XFER", 147}, 292 {"KEY_PROG1", 148}, 293 {"KEY_PROG2", 149}, 294 {"KEY_WWW", 150}, 295 {"KEY_MSDOS", 151}, 296 {"KEY_COFFEE", 152}, 297 {"KEY_SCREENLOCK", 152}, 298 {"KEY_ROTATE_DISPLAY", 153}, 299 {"KEY_DIRECTION", 153}, 300 {"KEY_CYCLEWINDOWS", 154}, 301 {"KEY_MAIL", 155}, 302 {"KEY_BOOKMARKS", 156}, 303 {"KEY_COMPUTER", 157}, 304 {"KEY_BACK", 158}, 305 {"KEY_FORWARD", 159}, 306 {"KEY_CLOSECD", 160}, 307 {"KEY_EJECTCD", 161}, 308 {"KEY_EJECTCLOSECD", 162}, 309 {"KEY_NEXTSONG", 163}, 310 {"KEY_PLAYPAUSE", 164}, 311 {"KEY_PREVIOUSSONG", 165}, 312 {"KEY_STOPCD", 166}, 313 {"KEY_RECORD", 167}, 314 {"KEY_REWIND", 168}, 315 {"KEY_PHONE", 169}, 316 {"KEY_ISO", 170}, 317 {"KEY_CONFIG", 171}, 318 {"KEY_HOMEPAGE", 172}, 319 {"KEY_REFRESH", 173}, 320 {"KEY_EXIT", 174}, 321 {"KEY_MOVE", 175}, 322 {"KEY_EDIT", 176}, 323 {"KEY_SCROLLUP", 177}, 324 {"KEY_SCROLLDOWN", 178}, 325 {"KEY_KPLEFTPAREN", 179}, 326 {"KEY_KPRIGHTPAREN", 180}, 327 {"KEY_NEW", 181}, 328 {"KEY_REDO", 182}, 329 {"KEY_F13", 183}, 330 {"KEY_F14", 184}, 331 {"KEY_F15", 185}, 332 {"KEY_F16", 186}, 333 {"KEY_F17", 187}, 334 {"KEY_F18", 188}, 335 {"KEY_F19", 189}, 336 {"KEY_F20", 190}, 337 {"KEY_F21", 191}, 338 {"KEY_F22", 192}, 339 {"KEY_F23", 193}, 340 {"KEY_F24", 194}, 341 {"KEY_PLAYCD", 200}, 342 {"KEY_PAUSECD", 201}, 343 {"KEY_PROG3", 202}, 344 {"KEY_PROG4", 203}, 345 {"KEY_ALL_APPLICATIONS", 204}, 346 {"KEY_DASHBOARD", 204}, 347 {"KEY_SUSPEND", 205}, 348 {"KEY_CLOSE", 206}, 349 {"KEY_PLAY", 207}, 350 {"KEY_FASTFORWARD", 208}, 351 {"KEY_BASSBOOST", 209}, 352 {"KEY_PRINT", 210}, 353 {"KEY_HP", 211}, 354 {"KEY_CAMERA", 212}, 355 {"KEY_SOUND", 213}, 356 {"KEY_QUESTION", 214}, 357 {"KEY_EMAIL", 215}, 358 {"KEY_CHAT", 216}, 359 {"KEY_SEARCH", 217}, 360 {"KEY_CONNECT", 218}, 361 {"KEY_FINANCE", 219}, 362 {"KEY_SPORT", 220}, 363 {"KEY_SHOP", 221}, 364 {"KEY_ALTERASE", 222}, 365 {"KEY_CANCEL", 223}, 366 {"KEY_BRIGHTNESSDOWN", 224}, 367 {"KEY_BRIGHTNESSUP", 225}, 368 {"KEY_MEDIA", 226}, 369 {"KEY_SWITCHVIDEOMODE", 227}, 370 {"KEY_KBDILLUMTOGGLE", 228}, 371 {"KEY_KBDILLUMDOWN", 229}, 372 {"KEY_KBDILLUMUP", 230}, 373 {"KEY_SEND", 231}, 374 {"KEY_REPLY", 232}, 375 {"KEY_FORWARDMAIL", 233}, 376 {"KEY_SAVE", 234}, 377 {"KEY_DOCUMENTS", 235}, 378 {"KEY_BATTERY", 236}, 379 {"KEY_BLUETOOTH", 237}, 380 {"KEY_WLAN", 238}, 381 {"KEY_UWB", 239}, 382 {"KEY_UNKNOWN", 240}, 383 {"KEY_VIDEO_NEXT", 241}, 384 {"KEY_VIDEO_PREV", 242}, 385 {"KEY_BRIGHTNESS_CYCLE", 243}, 386 {"KEY_BRIGHTNESS_AUTO", 244}, 387 {"KEY_BRIGHTNESS_ZERO", 244}, 388 {"KEY_DISPLAY_OFF", 245}, 389 {"KEY_WWAN", 246}, 390 {"KEY_WIMAX", 246}, 391 {"KEY_RFKILL", 247}, 392 {"KEY_MICMUTE", 248}, 393 {"BTN_MISC", 256}, 394 {"BTN_0", 256}, 395 {"BTN_1", 257}, 396 {"BTN_2", 258}, 397 {"BTN_3", 259}, 398 {"BTN_4", 260}, 399 {"BTN_5", 261}, 400 {"BTN_6", 262}, 401 {"BTN_7", 263}, 402 {"BTN_8", 264}, 403 {"BTN_9", 265}, 404 {"BTN_MOUSE", 272}, 405 {"BTN_LEFT", 272}, 406 {"BTN_RIGHT", 273}, 407 {"BTN_MIDDLE", 274}, 408 {"BTN_SIDE", 275}, 409 {"BTN_EXTRA", 276}, 410 {"BTN_FORWARD", 277}, 411 {"BTN_BACK", 278}, 412 {"BTN_TASK", 279}, 413 {"BTN_JOYSTICK", 288}, 414 {"BTN_TRIGGER", 288}, 415 {"BTN_THUMB", 289}, 416 {"BTN_THUMB2", 290}, 417 {"BTN_TOP", 291}, 418 {"BTN_TOP2", 292}, 419 {"BTN_PINKIE", 293}, 420 {"BTN_BASE", 294}, 421 {"BTN_BASE2", 295}, 422 {"BTN_BASE3", 296}, 423 {"BTN_BASE4", 297}, 424 {"BTN_BASE5", 298}, 425 {"BTN_BASE6", 299}, 426 {"BTN_DEAD", 303}, 427 {"BTN_GAMEPAD", 304}, 428 {"BTN_SOUTH", 304}, 429 {"BTN_A", 304}, 430 {"BTN_EAST", 305}, 431 {"BTN_B", 305}, 432 {"BTN_C", 306}, 433 {"BTN_NORTH", 307}, 434 {"BTN_X", 307}, 435 {"BTN_WEST", 308}, 436 {"BTN_Y", 308}, 437 {"BTN_Z", 309}, 438 {"BTN_TL", 310}, 439 {"BTN_TR", 311}, 440 {"BTN_TL2", 312}, 441 {"BTN_TR2", 313}, 442 {"BTN_SELECT", 314}, 443 {"BTN_START", 315}, 444 {"BTN_MODE", 316}, 445 {"BTN_THUMBL", 317}, 446 {"BTN_THUMBR", 318}, 447 {"BTN_DIGI", 320}, 448 {"BTN_TOOL_PEN", 320}, 449 {"BTN_TOOL_RUBBER", 321}, 450 {"BTN_TOOL_BRUSH", 322}, 451 {"BTN_TOOL_PENCIL", 323}, 452 {"BTN_TOOL_AIRBRUSH", 324}, 453 {"BTN_TOOL_FINGER", 325}, 454 {"BTN_TOOL_MOUSE", 326}, 455 {"BTN_TOOL_LENS", 327}, 456 {"BTN_TOOL_QUINTTAP", 328}, 457 {"BTN_STYLUS3", 329}, 458 {"BTN_TOUCH", 330}, 459 {"BTN_STYLUS", 331}, 460 {"BTN_STYLUS2", 332}, 461 {"BTN_TOOL_DOUBLETAP", 333}, 462 {"BTN_TOOL_TRIPLETAP", 334}, 463 {"BTN_TOOL_QUADTAP", 335}, 464 {"BTN_WHEEL", 336}, 465 {"BTN_GEAR_DOWN", 336}, 466 {"BTN_GEAR_UP", 337}, 467 {"KEY_OK", 352}, 468 {"KEY_SELECT", 353}, 469 {"KEY_GOTO", 354}, 470 {"KEY_CLEAR", 355}, 471 {"KEY_POWER2", 356}, 472 {"KEY_OPTION", 357}, 473 {"KEY_INFO", 358}, 474 {"KEY_TIME", 359}, 475 {"KEY_VENDOR", 360}, 476 {"KEY_ARCHIVE", 361}, 477 {"KEY_PROGRAM", 362}, 478 {"KEY_CHANNEL", 363}, 479 {"KEY_FAVORITES", 364}, 480 {"KEY_EPG", 365}, 481 {"KEY_PVR", 366}, 482 {"KEY_MHP", 367}, 483 {"KEY_LANGUAGE", 368}, 484 {"KEY_TITLE", 369}, 485 {"KEY_SUBTITLE", 370}, 486 {"KEY_ANGLE", 371}, 487 {"KEY_FULL_SCREEN", 372}, 488 {"KEY_ZOOM", 372}, 489 {"KEY_MODE", 373}, 490 {"KEY_KEYBOARD", 374}, 491 {"KEY_ASPECT_RATIO", 375}, 492 {"KEY_SCREEN", 375}, 493 {"KEY_PC", 376}, 494 {"KEY_TV", 377}, 495 {"KEY_TV2", 378}, 496 {"KEY_VCR", 379}, 497 {"KEY_VCR2", 380}, 498 {"KEY_SAT", 381}, 499 {"KEY_SAT2", 382}, 500 {"KEY_CD", 383}, 501 {"KEY_TAPE", 384}, 502 {"KEY_RADIO", 385}, 503 {"KEY_TUNER", 386}, 504 {"KEY_PLAYER", 387}, 505 {"KEY_TEXT", 388}, 506 {"KEY_DVD", 389}, 507 {"KEY_AUX", 390}, 508 {"KEY_MP3", 391}, 509 {"KEY_AUDIO", 392}, 510 {"KEY_VIDEO", 393}, 511 {"KEY_DIRECTORY", 394}, 512 {"KEY_LIST", 395}, 513 {"KEY_MEMO", 396}, 514 {"KEY_CALENDAR", 397}, 515 {"KEY_RED", 398}, 516 {"KEY_GREEN", 399}, 517 {"KEY_YELLOW", 400}, 518 {"KEY_BLUE", 401}, 519 {"KEY_CHANNELUP", 402}, 520 {"KEY_CHANNELDOWN", 403}, 521 {"KEY_FIRST", 404}, 522 {"KEY_LAST", 405}, 523 {"KEY_AB", 406}, 524 {"KEY_NEXT", 407}, 525 {"KEY_RESTART", 408}, 526 {"KEY_SLOW", 409}, 527 {"KEY_SHUFFLE", 410}, 528 {"KEY_BREAK", 411}, 529 {"KEY_PREVIOUS", 412}, 530 {"KEY_DIGITS", 413}, 531 {"KEY_TEEN", 414}, 532 {"KEY_TWEN", 415}, 533 {"KEY_VIDEOPHONE", 416}, 534 {"KEY_GAMES", 417}, 535 {"KEY_ZOOMIN", 418}, 536 {"KEY_ZOOMOUT", 419}, 537 {"KEY_ZOOMRESET", 420}, 538 {"KEY_WORDPROCESSOR", 421}, 539 {"KEY_EDITOR", 422}, 540 {"KEY_SPREADSHEET", 423}, 541 {"KEY_GRAPHICSEDITOR", 424}, 542 {"KEY_PRESENTATION", 425}, 543 {"KEY_DATABASE", 426}, 544 {"KEY_NEWS", 427}, 545 {"KEY_VOICEMAIL", 428}, 546 {"KEY_ADDRESSBOOK", 429}, 547 {"KEY_MESSENGER", 430}, 548 {"KEY_DISPLAYTOGGLE", 431}, 549 {"KEY_BRIGHTNESS_TOGGLE", 431}, 550 {"KEY_SPELLCHECK", 432}, 551 {"KEY_LOGOFF", 433}, 552 {"KEY_DOLLAR", 434}, 553 {"KEY_EURO", 435}, 554 {"KEY_FRAMEBACK", 436}, 555 {"KEY_FRAMEFORWARD", 437}, 556 {"KEY_CONTEXT_MENU", 438}, 557 {"KEY_MEDIA_REPEAT", 439}, 558 {"KEY_10CHANNELSUP", 440}, 559 {"KEY_10CHANNELSDOWN", 441}, 560 {"KEY_IMAGES", 442}, 561 {"KEY_NOTIFICATION_CENTER", 444}, 562 {"KEY_PICKUP_PHONE", 445}, 563 {"KEY_HANGUP_PHONE", 446}, 564 {"KEY_DEL_EOL", 448}, 565 {"KEY_DEL_EOS", 449}, 566 {"KEY_INS_LINE", 450}, 567 {"KEY_DEL_LINE", 451}, 568 {"KEY_FN", 464}, 569 {"KEY_FN_ESC", 465}, 570 {"KEY_FN_F1", 466}, 571 {"KEY_FN_F2", 467}, 572 {"KEY_FN_F3", 468}, 573 {"KEY_FN_F4", 469}, 574 {"KEY_FN_F5", 470}, 575 {"KEY_FN_F6", 471}, 576 {"KEY_FN_F7", 472}, 577 {"KEY_FN_F8", 473}, 578 {"KEY_FN_F9", 474}, 579 {"KEY_FN_F10", 475}, 580 {"KEY_FN_F11", 476}, 581 {"KEY_FN_F12", 477}, 582 {"KEY_FN_1", 478}, 583 {"KEY_FN_2", 479}, 584 {"KEY_FN_D", 480}, 585 {"KEY_FN_E", 481}, 586 {"KEY_FN_F", 482}, 587 {"KEY_FN_S", 483}, 588 {"KEY_FN_B", 484}, 589 {"KEY_FN_RIGHT_SHIFT", 485}, 590 {"KEY_BRL_DOT1", 497}, 591 {"KEY_BRL_DOT2", 498}, 592 {"KEY_BRL_DOT3", 499}, 593 {"KEY_BRL_DOT4", 500}, 594 {"KEY_BRL_DOT5", 501}, 595 {"KEY_BRL_DOT6", 502}, 596 {"KEY_BRL_DOT7", 503}, 597 {"KEY_BRL_DOT8", 504}, 598 {"KEY_BRL_DOT9", 505}, 599 {"KEY_BRL_DOT10", 506}, 600 {"KEY_NUMERIC_0", 512}, 601 {"KEY_NUMERIC_1", 513}, 602 {"KEY_NUMERIC_2", 514}, 603 {"KEY_NUMERIC_3", 515}, 604 {"KEY_NUMERIC_4", 516}, 605 {"KEY_NUMERIC_5", 517}, 606 {"KEY_NUMERIC_6", 518}, 607 {"KEY_NUMERIC_7", 519}, 608 {"KEY_NUMERIC_8", 520}, 609 {"KEY_NUMERIC_9", 521}, 610 {"KEY_NUMERIC_STAR", 522}, 611 {"KEY_NUMERIC_POUND", 523}, 612 {"KEY_NUMERIC_A", 524}, 613 {"KEY_NUMERIC_B", 525}, 614 {"KEY_NUMERIC_C", 526}, 615 {"KEY_NUMERIC_D", 527}, 616 {"KEY_CAMERA_FOCUS", 528}, 617 {"KEY_WPS_BUTTON", 529}, 618 {"KEY_TOUCHPAD_TOGGLE", 530}, 619 {"KEY_TOUCHPAD_ON", 531}, 620 {"KEY_TOUCHPAD_OFF", 532}, 621 {"KEY_CAMERA_ZOOMIN", 533}, 622 {"KEY_CAMERA_ZOOMOUT", 534}, 623 {"KEY_CAMERA_UP", 535}, 624 {"KEY_CAMERA_DOWN", 536}, 625 {"KEY_CAMERA_LEFT", 537}, 626 {"KEY_CAMERA_RIGHT", 538}, 627 {"KEY_ATTENDANT_ON", 539}, 628 {"KEY_ATTENDANT_OFF", 540}, 629 {"KEY_ATTENDANT_TOGGLE", 541}, 630 {"KEY_LIGHTS_TOGGLE", 542}, 631 {"BTN_DPAD_UP", 544}, 632 {"BTN_DPAD_DOWN", 545}, 633 {"BTN_DPAD_LEFT", 546}, 634 {"BTN_DPAD_RIGHT", 547}, 635 {"KEY_ALS_TOGGLE", 560}, 636 {"KEY_ROTATE_LOCK_TOGGLE", 561}, 637 {"KEY_BUTTONCONFIG", 576}, 638 {"KEY_TASKMANAGER", 577}, 639 {"KEY_JOURNAL", 578}, 640 {"KEY_CONTROLPANEL", 579}, 641 {"KEY_APPSELECT", 580}, 642 {"KEY_SCREENSAVER", 581}, 643 {"KEY_VOICECOMMAND", 582}, 644 {"KEY_ASSISTANT", 583}, 645 {"KEY_KBD_LAYOUT_NEXT", 584}, 646 {"KEY_EMOJI_PICKER", 585}, 647 {"KEY_DICTATE", 586}, 648 {"KEY_CAMERA_ACCESS_ENABLE", 587}, 649 {"KEY_CAMERA_ACCESS_DISABLE", 588}, 650 {"KEY_CAMERA_ACCESS_TOGGLE", 589}, 651 {"KEY_BRIGHTNESS_MIN", 592}, 652 {"KEY_BRIGHTNESS_MAX", 593}, 653 {"KEY_KBDINPUTASSIST_PREV", 608}, 654 {"KEY_KBDINPUTASSIST_NEXT", 609}, 655 {"KEY_KBDINPUTASSIST_PREVGROUP", 610}, 656 {"KEY_KBDINPUTASSIST_NEXTGROUP", 611}, 657 {"KEY_KBDINPUTASSIST_ACCEPT", 612}, 658 {"KEY_KBDINPUTASSIST_CANCEL", 613}, 659 {"KEY_RIGHT_UP", 614}, 660 {"KEY_RIGHT_DOWN", 615}, 661 {"KEY_LEFT_UP", 616}, 662 {"KEY_LEFT_DOWN", 617}, 663 {"KEY_ROOT_MENU", 618}, 664 {"KEY_MEDIA_TOP_MENU", 619}, 665 {"KEY_NUMERIC_11", 620}, 666 {"KEY_NUMERIC_12", 621}, 667 {"KEY_AUDIO_DESC", 622}, 668 {"KEY_3D_MODE", 623}, 669 {"KEY_NEXT_FAVORITE", 624}, 670 {"KEY_STOP_RECORD", 625}, 671 {"KEY_PAUSE_RECORD", 626}, 672 {"KEY_VOD", 627}, 673 {"KEY_UNMUTE", 628}, 674 {"KEY_FASTREVERSE", 629}, 675 {"KEY_SLOWREVERSE", 630}, 676 {"KEY_DATA", 631}, 677 {"KEY_ONSCREEN_KEYBOARD", 632}, 678 {"KEY_PRIVACY_SCREEN_TOGGLE", 633}, 679 {"KEY_SELECTIVE_SCREENSHOT", 634}, 680 {"KEY_NEXT_ELEMENT", 635}, 681 {"KEY_PREVIOUS_ELEMENT", 636}, 682 {"KEY_AUTOPILOT_ENGAGE_TOGGLE", 637}, 683 {"KEY_MARK_WAYPOINT", 638}, 684 {"KEY_SOS", 639}, 685 {"KEY_NAV_CHART", 640}, 686 {"KEY_FISHING_CHART", 641}, 687 {"KEY_SINGLE_RANGE_RADAR", 642}, 688 {"KEY_DUAL_RANGE_RADAR", 643}, 689 {"KEY_RADAR_OVERLAY", 644}, 690 {"KEY_TRADITIONAL_SONAR", 645}, 691 {"KEY_CLEARVU_SONAR", 646}, 692 {"KEY_SIDEVU_SONAR", 647}, 693 {"KEY_NAV_INFO", 648}, 694 {"KEY_BRIGHTNESS_MENU", 649}, 695 {"KEY_MACRO1", 656}, 696 {"KEY_MACRO2", 657}, 697 {"KEY_MACRO3", 658}, 698 {"KEY_MACRO4", 659}, 699 {"KEY_MACRO5", 660}, 700 {"KEY_MACRO6", 661}, 701 {"KEY_MACRO7", 662}, 702 {"KEY_MACRO8", 663}, 703 {"KEY_MACRO9", 664}, 704 {"KEY_MACRO10", 665}, 705 {"KEY_MACRO11", 666}, 706 {"KEY_MACRO12", 667}, 707 {"KEY_MACRO13", 668}, 708 {"KEY_MACRO14", 669}, 709 {"KEY_MACRO15", 670}, 710 {"KEY_MACRO16", 671}, 711 {"KEY_MACRO17", 672}, 712 {"KEY_MACRO18", 673}, 713 {"KEY_MACRO19", 674}, 714 {"KEY_MACRO20", 675}, 715 {"KEY_MACRO21", 676}, 716 {"KEY_MACRO22", 677}, 717 {"KEY_MACRO23", 678}, 718 {"KEY_MACRO24", 679}, 719 {"KEY_MACRO25", 680}, 720 {"KEY_MACRO26", 681}, 721 {"KEY_MACRO27", 682}, 722 {"KEY_MACRO28", 683}, 723 {"KEY_MACRO29", 684}, 724 {"KEY_MACRO30", 685}, 725 {"KEY_MACRO_RECORD_START", 688}, 726 {"KEY_MACRO_RECORD_STOP", 689}, 727 {"KEY_MACRO_PRESET_CYCLE", 690}, 728 {"KEY_MACRO_PRESET1", 691}, 729 {"KEY_MACRO_PRESET2", 692}, 730 {"KEY_MACRO_PRESET3", 693}, 731 {"KEY_KBD_LCD_MENU1", 696}, 732 {"KEY_KBD_LCD_MENU2", 697}, 733 {"KEY_KBD_LCD_MENU3", 698}, 734 {"KEY_KBD_LCD_MENU4", 699}, 735 {"KEY_KBD_LCD_MENU5", 700}, 736 {"BTN_TRIGGER_HAPPY", 704}, 737 {"BTN_TRIGGER_HAPPY1", 704}, 738 {"BTN_TRIGGER_HAPPY2", 705}, 739 {"BTN_TRIGGER_HAPPY3", 706}, 740 {"BTN_TRIGGER_HAPPY4", 707}, 741 {"BTN_TRIGGER_HAPPY5", 708}, 742 {"BTN_TRIGGER_HAPPY6", 709}, 743 {"BTN_TRIGGER_HAPPY7", 710}, 744 {"BTN_TRIGGER_HAPPY8", 711}, 745 {"BTN_TRIGGER_HAPPY9", 712}, 746 {"BTN_TRIGGER_HAPPY10", 713}, 747 {"BTN_TRIGGER_HAPPY11", 714}, 748 {"BTN_TRIGGER_HAPPY12", 715}, 749 {"BTN_TRIGGER_HAPPY13", 716}, 750 {"BTN_TRIGGER_HAPPY14", 717}, 751 {"BTN_TRIGGER_HAPPY15", 718}, 752 {"BTN_TRIGGER_HAPPY16", 719}, 753 {"BTN_TRIGGER_HAPPY17", 720}, 754 {"BTN_TRIGGER_HAPPY18", 721}, 755 {"BTN_TRIGGER_HAPPY19", 722}, 756 {"BTN_TRIGGER_HAPPY20", 723}, 757 {"BTN_TRIGGER_HAPPY21", 724}, 758 {"BTN_TRIGGER_HAPPY22", 725}, 759 {"BTN_TRIGGER_HAPPY23", 726}, 760 {"BTN_TRIGGER_HAPPY24", 727}, 761 {"BTN_TRIGGER_HAPPY25", 728}, 762 {"BTN_TRIGGER_HAPPY26", 729}, 763 {"BTN_TRIGGER_HAPPY27", 730}, 764 {"BTN_TRIGGER_HAPPY28", 731}, 765 {"BTN_TRIGGER_HAPPY29", 732}, 766 {"BTN_TRIGGER_HAPPY30", 733}, 767 {"BTN_TRIGGER_HAPPY31", 734}, 768 {"BTN_TRIGGER_HAPPY32", 735}, 769 {"BTN_TRIGGER_HAPPY33", 736}, 770 {"BTN_TRIGGER_HAPPY34", 737}, 771 {"BTN_TRIGGER_HAPPY35", 738}, 772 {"BTN_TRIGGER_HAPPY36", 739}, 773 {"BTN_TRIGGER_HAPPY37", 740}, 774 {"BTN_TRIGGER_HAPPY38", 741}, 775 {"BTN_TRIGGER_HAPPY39", 742}, 776 {"BTN_TRIGGER_HAPPY40", 743}, 777 {"KEY_MIN_INTERESTING", 113}, 778 {"KEY_MAX", 767}, 779 } 780 enums.UINPUT = eh.make_enum{ 781 {"FF_UPLOAD", 1}, 782 {"FF_ERASE", 2}, 783 } 784 enums.INPUT_PROP = eh.make_enum{ 785 {"POINTER", 0}, 786 {"DIRECT", 1}, 787 {"BUTTONPAD", 2}, 788 {"SEMI_MT", 3}, 789 {"TOPBUTTONPAD", 4}, 790 {"POINTING_STICK", 5}, 791 {"ACCELEROMETER", 6}, 792 {"MAX", 31}, 793 } 794 enums.EV = eh.make_enum{ 795 {"SYN", 0}, 796 {"KEY", 1}, 797 {"REL", 2}, 798 {"ABS", 3}, 799 {"MSC", 4}, 800 {"SW", 5}, 801 {"LED", 17}, 802 {"SND", 18}, 803 {"REP", 20}, 804 {"FF", 21}, 805 {"PWR", 22}, 806 {"FF_STATUS", 23}, 807 {"MAX", 31}, 808 {"UINPUT", 257}, 809 } 810 enums.SYN = eh.make_enum{ 811 {"REPORT", 0}, 812 {"CONFIG", 1}, 813 {"MT_REPORT", 2}, 814 {"DROPPED", 3}, 815 {"MAX", 15}, 816 } 817 enums.REL = eh.make_enum{ 818 {"X", 0}, 819 {"Y", 1}, 820 {"Z", 2}, 821 {"RX", 3}, 822 {"RY", 4}, 823 {"RZ", 5}, 824 {"HWHEEL", 6}, 825 {"DIAL", 7}, 826 {"WHEEL", 8}, 827 {"MISC", 9}, 828 {"RESERVED", 10}, 829 {"WHEEL_HI_RES", 11}, 830 {"HWHEEL_HI_RES", 12}, 831 {"MAX", 15}, 832 } 833 enums.ABS = eh.make_enum{ 834 {"X", 0}, 835 {"Y", 1}, 836 {"Z", 2}, 837 {"RX", 3}, 838 {"RY", 4}, 839 {"RZ", 5}, 840 {"THROTTLE", 6}, 841 {"RUDDER", 7}, 842 {"WHEEL", 8}, 843 {"GAS", 9}, 844 {"BRAKE", 10}, 845 {"HAT0X", 16}, 846 {"HAT0Y", 17}, 847 {"HAT1X", 18}, 848 {"HAT1Y", 19}, 849 {"HAT2X", 20}, 850 {"HAT2Y", 21}, 851 {"HAT3X", 22}, 852 {"HAT3Y", 23}, 853 {"PRESSURE", 24}, 854 {"DISTANCE", 25}, 855 {"TILT_X", 26}, 856 {"TILT_Y", 27}, 857 {"TOOL_WIDTH", 28}, 858 {"VOLUME", 32}, 859 {"PROFILE", 33}, 860 {"MISC", 40}, 861 {"RESERVED", 46}, 862 {"MT_SLOT", 47}, 863 {"MT_TOUCH_MAJOR", 48}, 864 {"MT_TOUCH_MINOR", 49}, 865 {"MT_WIDTH_MAJOR", 50}, 866 {"MT_WIDTH_MINOR", 51}, 867 {"MT_ORIENTATION", 52}, 868 {"MT_POSITION_X", 53}, 869 {"MT_POSITION_Y", 54}, 870 {"MT_TOOL_TYPE", 55}, 871 {"MT_BLOB_ID", 56}, 872 {"MT_TRACKING_ID", 57}, 873 {"MT_PRESSURE", 58}, 874 {"MT_DISTANCE", 59}, 875 {"MT_TOOL_X", 60}, 876 {"MT_TOOL_Y", 61}, 877 {"MAX", 63}, 878 } 879 enums.SW = eh.make_enum{ 880 {"LID", 0}, 881 {"TABLET_MODE", 1}, 882 {"HEADPHONE_INSERT", 2}, 883 {"RFKILL_ALL", 3}, 884 {"RADIO", 3}, 885 {"MICROPHONE_INSERT", 4}, 886 {"DOCK", 5}, 887 {"LINEOUT_INSERT", 6}, 888 {"JACK_PHYSICAL_INSERT", 7}, 889 {"VIDEOOUT_INSERT", 8}, 890 {"CAMERA_LENS_COVER", 9}, 891 {"KEYPAD_SLIDE", 10}, 892 {"FRONT_PROXIMITY", 11}, 893 {"ROTATE_LOCK", 12}, 894 {"LINEIN_INSERT", 13}, 895 {"MUTE_DEVICE", 14}, 896 {"PEN_INSERTED", 15}, 897 {"MACHINE_COVER", 16}, 898 {"MAX", 16}, 899 } 900 enums.MSC = eh.make_enum{ 901 {"SERIAL", 0}, 902 {"PULSELED", 1}, 903 {"GESTURE", 2}, 904 {"RAW", 3}, 905 {"SCAN", 4}, 906 {"TIMESTAMP", 5}, 907 {"MAX", 7}, 908 } 909 enums.LED = eh.make_enum{ 910 {"NUML", 0}, 911 {"CAPSL", 1}, 912 {"SCROLLL", 2}, 913 {"COMPOSE", 3}, 914 {"KANA", 4}, 915 {"SLEEP", 5}, 916 {"SUSPEND", 6}, 917 {"MUTE", 7}, 918 {"MISC", 8}, 919 {"MAIL", 9}, 920 {"CHARGING", 10}, 921 {"MAX", 15}, 922 } 923 enums.REP = eh.make_enum{ 924 {"DELAY", 0}, 925 {"PERIOD", 1}, 926 {"MAX", 1}, 927 } 928 enums.SND = eh.make_enum{ 929 {"CLICK", 0}, 930 {"BELL", 1}, 931 {"TONE", 2}, 932 {"MAX", 7}, 933 } 934 enums.ID = eh.make_enum{ 935 {"BUS", 0}, 936 {"VENDOR", 1}, 937 {"PRODUCT", 2}, 938 {"VERSION", 3}, 939 } 940 enums.BUS = eh.make_enum{ 941 {"PCI", 1}, 942 {"ISAPNP", 2}, 943 {"USB", 3}, 944 {"HIL", 4}, 945 {"BLUETOOTH", 5}, 946 {"VIRTUAL", 6}, 947 {"ISA", 16}, 948 {"I8042", 17}, 949 {"XTKBD", 18}, 950 {"RS232", 19}, 951 {"GAMEPORT", 20}, 952 {"PARPORT", 21}, 953 {"AMIGA", 22}, 954 {"ADB", 23}, 955 {"I2C", 24}, 956 {"HOST", 25}, 957 {"GSC", 26}, 958 {"ATARI", 27}, 959 {"SPI", 28}, 960 {"RMI", 29}, 961 {"CEC", 30}, 962 {"INTEL_ISHTP", 31}, 963 {"AMD_SFH", 32}, 964 } 965 enums.MT_TOOL = eh.make_enum{ 966 {"FINGER", 0}, 967 {"PEN", 1}, 968 {"PALM", 2}, 969 {"DIAL", 10}, 970 {"MAX", 15}, 971 } 972 enums.FF_STATUS = eh.make_enum{ 973 {"STOPPED", 0}, 974 {"PLAYING", 1}, 975 {"MAX", 1}, 976 } 977 enums.FF = eh.make_enum{ 978 {"RUMBLE", 80}, 979 {"PERIODIC", 81}, 980 {"CONSTANT", 82}, 981 {"SPRING", 83}, 982 {"FRICTION", 84}, 983 {"DAMPER", 85}, 984 {"INERTIA", 86}, 985 {"RAMP", 87}, 986 {"EFFECT_MIN", 80}, 987 {"EFFECT_MAX", 87}, 988 {"SQUARE", 88}, 989 {"TRIANGLE", 89}, 990 {"SINE", 90}, 991 {"SAW_UP", 91}, 992 {"SAW_DOWN", 92}, 993 {"CUSTOM", 93}, 994 {"WAVEFORM_MIN", 88}, 995 {"WAVEFORM_MAX", 93}, 996 {"GAIN", 96}, 997 {"AUTOCENTER", 97}, 998 {"MAX", 127}, 999 } 1000 enums.EV_VERSION = 0x010001 1001 1002 local ctype_int_5b1_5d = ffi.typeof("int[1]") 1003 local ctype_struct_20input_5fid_5b1_5d = ffi.typeof("struct input_id[1]") 1004 local ctype_unsigned_20int_5b2_5d = ffi.typeof("unsigned int[2]") 1005 local ctype_struct_20input_5fkeymap_5fentry_2a = ffi.typeof("struct input_keymap_entry*") 1006 local ctype_void_2a = ffi.typeof("void*") 1007 local ctype_struct_20input_5fabsinfo_5b1_5d = ffi.typeof("struct input_absinfo[1]") 1008 local ctype_struct_20input_5fabsinfo_2a = ffi.typeof("struct input_absinfo*") 1009 local ctype_struct_20ff_5feffect_2a = ffi.typeof("struct ff_effect*") 1010 local ctype_int = ffi.typeof("int") 1011 local ctype_struct_20input_5fmask_2a = ffi.typeof("struct input_mask*") 1012 local ctype_unsigned_20int_5b1_5d = ffi.typeof("unsigned int[1]") 1013 local ctype_struct_20uinput_5fsetup_2a = ffi.typeof("struct uinput_setup*") 1014 local ctype_struct_20uinput_5fabs_5fsetup_2a = ffi.typeof("struct uinput_abs_setup*") 1015 local ctype_struct_20uinput_5fff_5fupload_2a = ffi.typeof("struct uinput_ff_upload*") 1016 local ctype_struct_20uinput_5fff_5ferase_2a = ffi.typeof("struct uinput_ff_erase*") 1017 local ioctls = {} 1018 local get_version_req = ioctl_mod.ioctl_req(true, false, 69, 1, ffi.sizeof("int")) 1019 function ioctls.get_version(fd) 1020 local arg = ctype_int_5b1_5d() 1021 local res = ioctl(fd, get_version_req, arg) 1022 return res, arg[0] 1023 end 1024 local get_id_req = ioctl_mod.ioctl_req(true, false, 69, 2, ffi.sizeof("struct input_id")) 1025 function ioctls.get_id(fd) 1026 local arg = ctype_struct_20input_5fid_5b1_5d() 1027 local res = ioctl(fd, get_id_req, arg) 1028 return res, arg[0] 1029 end 1030 local get_rep_req = ioctl_mod.ioctl_req(true, false, 69, 3, ffi.sizeof("unsigned int[2]")) 1031 function ioctls.get_rep(fd) 1032 local arg = ctype_unsigned_20int_5b2_5d() 1033 local res = ioctl(fd, get_rep_req, arg) 1034 return res, arg[0], arg[1] 1035 end 1036 local set_rep_req = ioctl_mod.ioctl_req(false, true, 69, 3, ffi.sizeof("unsigned int[2]")) 1037 function ioctls.set_rep(fd, x0, x1) 1038 local arg = ctype_unsigned_20int_5b2_5d(x0, x1) 1039 local res = ioctl(fd, set_rep_req, arg) 1040 return res 1041 end 1042 local get_keycode_req = ioctl_mod.ioctl_req(true, false, 69, 4, ffi.sizeof("unsigned int[2]")) 1043 function ioctls.get_keycode(fd, x0, x1) 1044 local arg = ctype_unsigned_20int_5b2_5d(x0, x1) 1045 local res = ioctl(fd, get_keycode_req, arg) 1046 return res, arg[0], arg[1] 1047 end 1048 local get_keycode_v2_req = ioctl_mod.ioctl_req(true, false, 69, 4, ffi.sizeof("struct input_keymap_entry")) 1049 function ioctls.get_keycode_v2(fd, x0) 1050 local arg = ctype_struct_20input_5fkeymap_5fentry_2a(x0) 1051 local res = ioctl(fd, get_keycode_v2_req, arg) 1052 return res, arg[0] 1053 end 1054 local set_keycode_req = ioctl_mod.ioctl_req(false, true, 69, 4, ffi.sizeof("unsigned int[2]")) 1055 function ioctls.set_keycode(fd, x0, x1) 1056 local arg = ctype_unsigned_20int_5b2_5d(x0, x1) 1057 local res = ioctl(fd, set_keycode_req, arg) 1058 return res 1059 end 1060 local set_keycode_v2_req = ioctl_mod.ioctl_req(false, true, 69, 4, ffi.sizeof("struct input_keymap_entry")) 1061 function ioctls.set_keycode_v2(fd, x0) 1062 local arg = ctype_struct_20input_5fkeymap_5fentry_2a(x0) 1063 local res = ioctl(fd, set_keycode_v2_req, arg) 1064 return res 1065 end 1066 local get_name_req = ioctl_mod.ioctl_req(true, false, 69, 6, 0) 1067 function ioctls.get_name(fd, arg, len) 1068 len = len or ffi_sizeof(arg) 1069 local res = ioctl(fd, get_name_req + lshift(len, sizeshift), ffi_cast(ctype_void_2a, arg)) 1070 return res 1071 end 1072 local get_phys_req = ioctl_mod.ioctl_req(true, false, 69, 7, 0) 1073 function ioctls.get_phys(fd, arg, len) 1074 len = len or ffi_sizeof(arg) 1075 local res = ioctl(fd, get_phys_req + lshift(len, sizeshift), ffi_cast(ctype_void_2a, arg)) 1076 return res 1077 end 1078 local get_uniq_req = ioctl_mod.ioctl_req(true, false, 69, 8, 0) 1079 function ioctls.get_uniq(fd, arg, len) 1080 len = len or ffi_sizeof(arg) 1081 local res = ioctl(fd, get_uniq_req + lshift(len, sizeshift), ffi_cast(ctype_void_2a, arg)) 1082 return res 1083 end 1084 local get_prop_req = ioctl_mod.ioctl_req(true, false, 69, 9, 0) 1085 function ioctls.get_prop(fd, arg, len) 1086 len = len or ffi_sizeof(arg) 1087 local res = ioctl(fd, get_prop_req + lshift(len, sizeshift), ffi_cast(ctype_void_2a, arg)) 1088 return res 1089 end 1090 local get_mtslots_req = ioctl_mod.ioctl_req(true, false, 69, 10, 0) 1091 function ioctls.get_mtslots(fd, arg, len) 1092 len = len or ffi_sizeof(arg) 1093 local res = ioctl(fd, get_mtslots_req + lshift(len, sizeshift), ffi_cast(ctype_void_2a, arg)) 1094 return res 1095 end 1096 local get_key_req = ioctl_mod.ioctl_req(true, false, 69, 24, 0) 1097 function ioctls.get_key(fd, arg, len) 1098 len = len or ffi_sizeof(arg) 1099 local res = ioctl(fd, get_key_req + lshift(len, sizeshift), ffi_cast(ctype_void_2a, arg)) 1100 return res 1101 end 1102 local get_led_req = ioctl_mod.ioctl_req(true, false, 69, 25, 0) 1103 function ioctls.get_led(fd, arg, len) 1104 len = len or ffi_sizeof(arg) 1105 local res = ioctl(fd, get_led_req + lshift(len, sizeshift), ffi_cast(ctype_void_2a, arg)) 1106 return res 1107 end 1108 local get_snd_req = ioctl_mod.ioctl_req(true, false, 69, 26, 0) 1109 function ioctls.get_snd(fd, arg, len) 1110 len = len or ffi_sizeof(arg) 1111 local res = ioctl(fd, get_snd_req + lshift(len, sizeshift), ffi_cast(ctype_void_2a, arg)) 1112 return res 1113 end 1114 local get_sw_req = ioctl_mod.ioctl_req(true, false, 69, 27, 0) 1115 function ioctls.get_sw(fd, arg, len) 1116 len = len or ffi_sizeof(arg) 1117 local res = ioctl(fd, get_sw_req + lshift(len, sizeshift), ffi_cast(ctype_void_2a, arg)) 1118 return res 1119 end 1120 local get_bit_req = ioctl_mod.ioctl_req(true, false, 69, 32, 0) 1121 function ioctls.get_bit(fd, ev, arg, len) 1122 len = len or ffi_sizeof(arg) 1123 local res = ioctl(fd, get_bit_req + lshift(ev, nrshift) + lshift(len, sizeshift), ffi_cast(ctype_void_2a, arg)) 1124 return res 1125 end 1126 local get_abs_req = ioctl_mod.ioctl_req(true, false, 69, 64, ffi.sizeof("struct input_absinfo")) 1127 function ioctls.get_abs(fd, abs) 1128 local arg = ctype_struct_20input_5fabsinfo_5b1_5d() 1129 local res = ioctl(fd, get_abs_req + lshift(abs, nrshift), arg) 1130 return res, arg[0] 1131 end 1132 local set_abs_req = ioctl_mod.ioctl_req(false, true, 69, 192, ffi.sizeof("struct input_absinfo")) 1133 function ioctls.set_abs(fd, abs, x0) 1134 local arg = ctype_struct_20input_5fabsinfo_2a(x0) 1135 local res = ioctl(fd, set_abs_req + lshift(abs, nrshift), arg) 1136 return res 1137 end 1138 local set_ff_req = ioctl_mod.ioctl_req(false, true, 69, 128, ffi.sizeof("struct ff_effect")) 1139 function ioctls.set_ff(fd, x0) 1140 local arg = ctype_struct_20ff_5feffect_2a(x0) 1141 local res = ioctl(fd, set_ff_req, arg) 1142 return res 1143 end 1144 local rm_ff_req = ioctl_mod.ioctl_req(false, true, 69, 129, ffi.sizeof("int")) 1145 function ioctls.rm_ff(fd, x0) 1146 local arg = ctype_int(x0) 1147 local res = ioctl(fd, rm_ff_req, arg) 1148 return res 1149 end 1150 local get_effects_req = ioctl_mod.ioctl_req(true, false, 69, 132, ffi.sizeof("int")) 1151 function ioctls.get_effects(fd) 1152 local arg = ctype_int_5b1_5d() 1153 local res = ioctl(fd, get_effects_req, arg) 1154 return res, arg[0] 1155 end 1156 local grab_req = ioctl_mod.ioctl_req(false, true, 69, 144, ffi.sizeof("int")) 1157 function ioctls.grab(fd, x0) 1158 local arg = ctype_int(x0) 1159 local res = ioctl(fd, grab_req, arg) 1160 return res 1161 end 1162 local revoke_req = ioctl_mod.ioctl_req(false, true, 69, 145, ffi.sizeof("int")) 1163 function ioctls.revoke(fd, x0) 1164 local arg = ctype_int(x0) 1165 local res = ioctl(fd, revoke_req, arg) 1166 return res 1167 end 1168 local get_mask_req = ioctl_mod.ioctl_req(true, false, 69, 146, ffi.sizeof("struct input_mask")) 1169 function ioctls.get_mask(fd, x0) 1170 local arg = ctype_struct_20input_5fmask_2a(x0) 1171 local res = ioctl(fd, get_mask_req, arg) 1172 return res, arg[0] 1173 end 1174 local set_mask_req = ioctl_mod.ioctl_req(false, true, 69, 147, ffi.sizeof("struct input_mask")) 1175 function ioctls.set_mask(fd, x0) 1176 local arg = ctype_struct_20input_5fmask_2a(x0) 1177 local res = ioctl(fd, set_mask_req, arg) 1178 return res 1179 end 1180 local set_clockid_req = ioctl_mod.ioctl_req(false, true, 69, 160, ffi.sizeof("int")) 1181 function ioctls.set_clockid(fd, x0) 1182 local arg = ctype_unsigned_20int_5b1_5d(x0) 1183 local res = ioctl(fd, set_clockid_req, arg) 1184 return res 1185 end 1186 local ui_dev_create_req = ioctl_mod.ioctl_req(false, false, 85, 1, 0) 1187 function ioctls.ui_dev_create(fd) 1188 local res = ioctl(fd, ui_dev_create_req) 1189 return res 1190 end 1191 local ui_dev_destroy_req = ioctl_mod.ioctl_req(false, false, 85, 2, 0) 1192 function ioctls.ui_dev_destroy(fd) 1193 local res = ioctl(fd, ui_dev_destroy_req) 1194 return res 1195 end 1196 local ui_dev_setup_req = ioctl_mod.ioctl_req(false, true, 85, 3, ffi.sizeof("struct uinput_setup")) 1197 function ioctls.ui_dev_setup(fd, x0) 1198 local arg = ctype_struct_20uinput_5fsetup_2a(x0) 1199 local res = ioctl(fd, ui_dev_setup_req, arg) 1200 return res 1201 end 1202 local ui_abs_setup_req = ioctl_mod.ioctl_req(false, true, 85, 4, ffi.sizeof("struct uinput_abs_setup")) 1203 function ioctls.ui_abs_setup(fd, x0) 1204 local arg = ctype_struct_20uinput_5fabs_5fsetup_2a(x0) 1205 local res = ioctl(fd, ui_abs_setup_req, arg) 1206 return res 1207 end 1208 local ui_set_evbit_req = ioctl_mod.ioctl_req(false, true, 85, 100, ffi.sizeof("int")) 1209 function ioctls.ui_set_evbit(fd, x0) 1210 local arg = ctype_int(x0) 1211 local res = ioctl(fd, ui_set_evbit_req, arg) 1212 return res 1213 end 1214 local ui_set_keybit_req = ioctl_mod.ioctl_req(false, true, 85, 101, ffi.sizeof("int")) 1215 function ioctls.ui_set_keybit(fd, x0) 1216 local arg = ctype_int(x0) 1217 local res = ioctl(fd, ui_set_keybit_req, arg) 1218 return res 1219 end 1220 local ui_set_relbit_req = ioctl_mod.ioctl_req(false, true, 85, 102, ffi.sizeof("int")) 1221 function ioctls.ui_set_relbit(fd, x0) 1222 local arg = ctype_int(x0) 1223 local res = ioctl(fd, ui_set_relbit_req, arg) 1224 return res 1225 end 1226 local ui_set_absbit_req = ioctl_mod.ioctl_req(false, true, 85, 103, ffi.sizeof("int")) 1227 function ioctls.ui_set_absbit(fd, x0) 1228 local arg = ctype_int(x0) 1229 local res = ioctl(fd, ui_set_absbit_req, arg) 1230 return res 1231 end 1232 local ui_set_mscbit_req = ioctl_mod.ioctl_req(false, true, 85, 104, ffi.sizeof("int")) 1233 function ioctls.ui_set_mscbit(fd, x0) 1234 local arg = ctype_int(x0) 1235 local res = ioctl(fd, ui_set_mscbit_req, arg) 1236 return res 1237 end 1238 local ui_set_ledbit_req = ioctl_mod.ioctl_req(false, true, 85, 105, ffi.sizeof("int")) 1239 function ioctls.ui_set_ledbit(fd, x0) 1240 local arg = ctype_int(x0) 1241 local res = ioctl(fd, ui_set_ledbit_req, arg) 1242 return res 1243 end 1244 local ui_set_sndbit_req = ioctl_mod.ioctl_req(false, true, 85, 106, ffi.sizeof("int")) 1245 function ioctls.ui_set_sndbit(fd, x0) 1246 local arg = ctype_int(x0) 1247 local res = ioctl(fd, ui_set_sndbit_req, arg) 1248 return res 1249 end 1250 local ui_set_ffbit_req = ioctl_mod.ioctl_req(false, true, 85, 107, ffi.sizeof("int")) 1251 function ioctls.ui_set_ffbit(fd, x0) 1252 local arg = ctype_int(x0) 1253 local res = ioctl(fd, ui_set_ffbit_req, arg) 1254 return res 1255 end 1256 local ui_set_phys_req = ioctl_mod.ioctl_req(false, true, 85, 108, ffi.sizeof("char*")) 1257 function ioctls.ui_set_phys(fd, str) 1258 local res = ioctl(fd, ui_set_phys_req, tostring(str)) 1259 return res 1260 end 1261 local ui_set_swbit_req = ioctl_mod.ioctl_req(false, true, 85, 109, ffi.sizeof("int")) 1262 function ioctls.ui_set_swbit(fd, x0) 1263 local arg = ctype_int(x0) 1264 local res = ioctl(fd, ui_set_swbit_req, arg) 1265 return res 1266 end 1267 local ui_set_propbit_req = ioctl_mod.ioctl_req(false, true, 85, 110, ffi.sizeof("int")) 1268 function ioctls.ui_set_propbit(fd, x0) 1269 local arg = ctype_int(x0) 1270 local res = ioctl(fd, ui_set_propbit_req, arg) 1271 return res 1272 end 1273 local ui_begin_ff_upload_req = ioctl_mod.ioctl_req(true, true, 85, 200, ffi.sizeof("struct uinput_ff_upload")) 1274 function ioctls.ui_begin_ff_upload(fd, x0) 1275 local arg = ctype_struct_20uinput_5fff_5fupload_2a(x0) 1276 local res = ioctl(fd, ui_begin_ff_upload_req, arg) 1277 return res, arg[0] 1278 end 1279 local ui_end_ff_upload_req = ioctl_mod.ioctl_req(false, true, 85, 201, ffi.sizeof("struct uinput_ff_upload")) 1280 function ioctls.ui_end_ff_upload(fd, x0) 1281 local arg = ctype_struct_20uinput_5fff_5fupload_2a(x0) 1282 local res = ioctl(fd, ui_end_ff_upload_req, arg) 1283 return res 1284 end 1285 local ui_begin_ff_erase_req = ioctl_mod.ioctl_req(true, true, 85, 202, ffi.sizeof("struct uinput_ff_erase")) 1286 function ioctls.ui_begin_ff_erase(fd, x0) 1287 local arg = ctype_struct_20uinput_5fff_5ferase_2a(x0) 1288 local res = ioctl(fd, ui_begin_ff_erase_req, arg) 1289 return res, arg[0] 1290 end 1291 local ui_end_ff_erase_req = ioctl_mod.ioctl_req(false, true, 85, 203, ffi.sizeof("struct uinput_ff_erase")) 1292 function ioctls.ui_end_ff_erase(fd, x0) 1293 local arg = ctype_struct_20uinput_5fff_5ferase_2a(x0) 1294 local res = ioctl(fd, ui_end_ff_erase_req, arg) 1295 return res 1296 end 1297 local ui_get_sysname_req = ioctl_mod.ioctl_req(true, false, 85, 44, 0) 1298 function ioctls.ui_get_sysname(fd, arg, len) 1299 len = len or ffi_sizeof(arg) 1300 local res = ioctl(fd, ui_get_sysname_req + lshift(len, sizeshift), ffi_cast(ctype_void_2a, arg)) 1301 return res 1302 end 1303 local ui_get_version_req = ioctl_mod.ioctl_req(true, false, 85, 45, ffi.sizeof("unsigned int")) 1304 function ioctls.ui_get_version(fd) 1305 local arg = ctype_unsigned_20int_5b1_5d() 1306 local res = ioctl(fd, ui_get_version_req, arg) 1307 return res, arg[0] 1308 end 1309 1310 return {enums=enums, ioctls=ioctls}