devinput package

Submodules

devinput.bus module

class devinput.bus.BusType(*values)

Bases: IntEnum

Bus types (BUS)

BUS_ADB = 23
BUS_AMIGA = 22
BUS_ATARI = 27
BUS_BLUETOOTH = 5
BUS_GAMEPORT = 20
BUS_GSC = 26
BUS_HIL = 4
BUS_HOST = 25
BUS_I2C = 24
BUS_I8042 = 17
BUS_ISA = 16
BUS_ISAPNP = 2
BUS_PARPORT = 21
BUS_PCI = 1
BUS_RS232 = 19
BUS_SPI = 28
BUS_USB = 3
BUS_VIRTUAL = 6
BUS_XTKBD = 18

devinput.capabilities module

class devinput.capabilities.Capabilities(path: str, ioctl: IoctlInterface)

Bases: object

property abs_cap: set[AbsEvent]

All ABS capabilities

abs_cap_code: int
abs_path: str
ev_path: str
property event_types: set[EventType]

All supported event types

event_types_code: int
ff_path: str
has_cap(cap: EventType | SynEvent | KeyEvent | RelEvent | AbsEvent | MscEvent | SwEvent | LedEvent | SndEvent) bool

Checks for a capability

Parameters:

cap – the capability to check

ioctl: IoctlInterface
property key_cap: set[KeyEvent]

All KEY capabilities

key_cap_code: int
key_path: str
property led_cap: set[LedEvent]

All LED capabilities

led_cap_code: int
led_path: str
list(cap_type: EventType) set[SynEvent | KeyEvent | RelEvent | AbsEvent | MscEvent | SwEvent | LedEvent | SndEvent]
property msc_cap: set[MscEvent]

All MSC capabilities

msc_cap_code: int
msc_path: str
path: str
property rel_cap: set[RelEvent]

All REL capabilities

rel_cap_code: int
rel_path: str
property snd_cap: set[SndEvent]

All SND capabilities

snd_cap_code: int
snd_path: str
property sw_cap: set[SwEvent]

All SW capabilities

sw_cap_code: int
sw_path: str
property syn_cap: set[SynEvent]

All SYN capabilities

property syn_cap_code: int

The bitmask of all SYN capabilities. (the reason this is a property is that it requires an ioctl call)

devinput.capabilities.get_cap_set(cap_code: int, cap_enum: type[EventType | SynEvent | KeyEvent | RelEvent | AbsEvent | MscEvent | SwEvent | LedEvent | SndEvent]) set[EventType | SynEvent | KeyEvent | RelEvent | AbsEvent | MscEvent | SwEvent | LedEvent | SndEvent]
devinput.capabilities.parse_cap(content: str) int
devinput.capabilities.parse_cap_file(filename: str) int

devinput.const module

devinput.device module

class devinput.device.Device(event_path: str)

Bases: object

property capabilities: Capabilities

The device capabilities

close()

Closes the device

closed: bool
event_code: str
event_path: str
fd: int | None
flush() list[Event]

Returns a list of all the events since last read. Events are read immediately

flush_async() list[Event]

Returns a list of all the events since last read. Events are read immediately and asynchronously

classmethod from_event(event_code)

Creates a Device object from an event code (e.g. “event0” -> “/dev/input/event0”)

get_absolute(abs_type: AbsEvent) InputAbsInfo

Returns information on an absolute event type.

Parameters:

abs_type – the event type to check for. Must be in device capabilities

get_event() Event

Reads one event from the device

get_event_async(timeout: float | int | None = None) Event | None

Reads one event from the device asynchronously. If no event is available within the specified timeout, returns None.

Parameters:

timeout – if set to None, waits until an event is available

get_keycode(scancode_or_index: int | Iterable[int], by_index: bool = False) int

Gets the keycode from a scancode or index

Parameters:
  • scancode_or_index – the scancode or index

  • by_index – interpret scancode_or_index as an index

get_keys(interesting: Container[KeyEvent] | None = None) set[KeyEvent]

Returns the currently active keys on a device. EventType.EV_KEY must be in device capabilities.

Parameters:

interesting – Only check these keys. If set to None, all key events in device capababilities are checked.

get_leds(interesting: Container[LedEvent] | None = None) set[LedEvent]

Returns the currently active LEDs on a device. EventType.EV_LED must be in device capabilities.

Parameters:

interesting – Only check these LEDs. If set to None, all LEDs in device capababilities are checked.

get_multi_touch_state(num_slots: int = 8) dict[AbsEvent, list[int]]

Gets the multi-touch values for all MT events in device capabilities

Parameters:

num_slots – the number of MT slots to extract per event

get_multi_touch_values(mt_code: AbsEvent, num_slots: int = 8) list[int]

Gets the multi-touch values for a given MT event

Parameters:

num_slots – the number of MT slots to extract

get_properties() set[Props]

Gets device properties and quirks

get_repeat_settings() RepeatSettings

Gets repeat settings for the device. EventTypes.EV_REP must be in device capabilities

get_sounds(interesting: Container[SndEvent] | None = None) set[SndEvent]

Returns the currently active sounds on a device. EventType.EV_SND must be in device capabilities.

Parameters:

interesting – Only check these sounds. If set to None, all sound events in device capababilities are checked.

get_switches(interesting: Container[SwEvent] | None = None) set[SwEvent]

Returns the currently active switches on a device. EventType.EV_SW must be in device capabilities.

Parameters:

interesting – Only check these switches. If set to None, all switch events in device capababilities are checked.

grab()

Grabs device

grabbed() Iterator[None]

A context manager for device grabbing. On enter, grab() is called. On exit, ungrab() is called.

has_cap(cap: EventType | SynEvent | KeyEvent | RelEvent | AbsEvent | MscEvent | SwEvent | LedEvent | SndEvent) bool

Checks for a device capability

Parameters:

cap – the capability to check

info_path: str
input_id: InputId | None
ioctl: IoctlInterface | None
is_grabbed: False
iter_events() Generator[Event, None, None]

Returns an iterator over events. Stops when no events are available

iter_events_async() AsyncGenerator[Event, None, None]

Returns an asynchronous iterator over events. Stops when no events are available

modalias: str
modalias_path: str
name: str
name_path: str
open() None

Opens the device

poll(timeout: float | int | None = 0.0) bool

Returns True if an event is available within a timeout, False otherwise.

Parameters:

timeout – timeout for the poll. 0 by default. If set to None, waits until an event is available

poll_async(timeout: float | int | None = 0.0) bool

Asynchronous. Returns True if an event is available within a timeout, False otherwise.

Parameters:

timeout – timeout for the poll. 0 by default. If set to None, waits until an event is available

send_event(event: Event) int

Sends an event to the device. Returns the number of bytes written

Parameters:

event – the Event object to send

send_event_async(event: Event) int

Sends an event to the device asynchronously. Returns the number of bytes written

Parameters:

event – the Event object to send

set_repeat_settings(settings: RepeatSettings)

Sets repeat settings for the device. EventTypes.EV_REP must be in device capabilities

ungrab()

Releases grab on device

wait() None

Waits until an event is available. Equivalent to poll(None)

async wait_async() None

Waits asynchronously until an event is available. Equivalent to poll_async(None)

devinput.device.list_capable_devices(*caps: EventType | SynEvent | KeyEvent | RelEvent | AbsEvent | MscEvent | SwEvent | LedEvent | SndEvent) list[Device]

List all devices with all the given capabilities. Devices are returned closed.

devinput.device.list_devices() list[Device]

Lists all devices. Devices are returned closed.

devinput.event module

class devinput.event.Event(code: SynEvent | KeyEvent | RelEvent | AbsEvent | MscEvent | SwEvent | LedEvent | SndEvent, value: int, timestamp: float | None = None)

Bases: Structure

property code: SynEvent | KeyEvent | RelEvent | AbsEvent | MscEvent | SwEvent | LedEvent | SndEvent
property datetime: datetime
classmethod read(fd: int) Event
async classmethod read_async(fd: int, timeout: int | float | None = None) Event
property timestamp: float
property type: EventType
value: int

Structure/Union member

write(fd: int) int
async write_async(fd: int, timeout: int | float | None = None) int

devinput.event_types module

Some huge enums. Taken from https://elixir.bootlin.com/linux/v4.3/source/include/uapi/linux/input.h

class devinput.event_types.AbsEvent(*values)

Bases: IntEnum

Absolute axes (ABS)

ABS_BRAKE = 10
ABS_DISTANCE = 25
ABS_GAS = 9
ABS_HAT0X = 16
ABS_HAT0Y = 17
ABS_HAT1X = 18
ABS_HAT1Y = 19
ABS_HAT2X = 20
ABS_HAT2Y = 21
ABS_HAT3X = 22
ABS_HAT3Y = 23
ABS_MISC = 40
ABS_MT_BLOB_ID = 56
ABS_MT_DISTANCE = 59
ABS_MT_ORIENTATION = 52
ABS_MT_POSITION_X = 53
ABS_MT_POSITION_Y = 54
ABS_MT_PRESSURE = 58
ABS_MT_SLOT = 47
ABS_MT_TOOL_TYPE = 55
ABS_MT_TOOL_X = 60
ABS_MT_TOOL_Y = 61
ABS_MT_TOUCH_MAJOR = 48
ABS_MT_TOUCH_MINOR = 49
ABS_MT_TRACKING_ID = 57
ABS_MT_WIDTH_MAJOR = 50
ABS_MT_WIDTH_MINOR = 51
ABS_PRESSURE = 24
ABS_PROFILE = 33
ABS_RESERVED = 46
ABS_RUDDER = 7
ABS_RX = 3
ABS_RY = 4
ABS_RZ = 5
ABS_SND_PROFILE = 34
ABS_THROTTLE = 6
ABS_TILT_X = 26
ABS_TILT_Y = 27
ABS_TOOL_WIDTH = 28
ABS_VOLUME = 32
ABS_WHEEL = 8
ABS_X = 0
ABS_Y = 1
ABS_Z = 2
class devinput.event_types.EventType(*values)

Bases: IntEnum

Event types (EV)

EV_ABS = 3
EV_FF = 21
EV_FF_STATUS = 23
EV_KEY = 1
EV_LED = 17
EV_MSC = 4
EV_PWR = 22
EV_REL = 2
EV_REP = 20
EV_SND = 18
EV_SW = 5
EV_SYN = 0
class devinput.event_types.KeyEvent(*values)

Bases: IntEnum

Key and button events (KEY)

BTN_0 = 256
BTN_1 = 257
BTN_2 = 258
BTN_3 = 259
BTN_4 = 260
BTN_5 = 261
BTN_6 = 262
BTN_7 = 263
BTN_8 = 264
BTN_9 = 265
BTN_BACK = 278
BTN_BASE = 294
BTN_BASE2 = 295
BTN_BASE3 = 296
BTN_BASE4 = 297
BTN_BASE5 = 298
BTN_BASE6 = 299
BTN_C = 306
BTN_DEAD = 303
BTN_DIGI = 320
BTN_DPAD_DOWN = 545
BTN_DPAD_LEFT = 546
BTN_DPAD_RIGHT = 547
BTN_DPAD_UP = 544
BTN_EAST = 305
BTN_EXTRA = 276
BTN_FORWARD = 277
BTN_GAMEPAD = 304
BTN_GEAR_DOWN = 336
BTN_GEAR_UP = 337
BTN_GRIPL = 548
BTN_GRIPL2 = 550
BTN_GRIPR = 549
BTN_GRIPR2 = 551
BTN_JOYSTICK = 288
BTN_LEFT = 272
BTN_MIDDLE = 274
BTN_MISC = 256
BTN_MODE = 316
BTN_MOUSE = 272
BTN_NORTH = 307
BTN_PINKIE = 293
BTN_RIGHT = 273
BTN_SELECT = 314
BTN_SIDE = 275
BTN_SOUTH = 304
BTN_START = 315
BTN_STYLUS = 331
BTN_STYLUS2 = 332
BTN_STYLUS3 = 329
BTN_TASK = 279
BTN_THUMB = 289
BTN_THUMB2 = 290
BTN_THUMBL = 317
BTN_THUMBR = 318
BTN_TL = 310
BTN_TL2 = 312
BTN_TOOL_AIRBRUSH = 324
BTN_TOOL_BRUSH = 322
BTN_TOOL_DOUBLETAP = 333
BTN_TOOL_FINGER = 325
BTN_TOOL_LENS = 327
BTN_TOOL_MOUSE = 326
BTN_TOOL_PEN = 320
BTN_TOOL_PENCIL = 323
BTN_TOOL_QUADTAP = 335
BTN_TOOL_QUINTTAP = 328
BTN_TOOL_RUBBER = 321
BTN_TOOL_TRIPLETAP = 334
BTN_TOP = 291
BTN_TOP2 = 292
BTN_TOUCH = 330
BTN_TR = 311
BTN_TR2 = 313
BTN_TRIGGER = 288
BTN_TRIGGER_HAPPY = 704
BTN_TRIGGER_HAPPY1 = 704
BTN_TRIGGER_HAPPY10 = 713
BTN_TRIGGER_HAPPY11 = 714
BTN_TRIGGER_HAPPY12 = 715
BTN_TRIGGER_HAPPY13 = 716
BTN_TRIGGER_HAPPY14 = 717
BTN_TRIGGER_HAPPY15 = 718
BTN_TRIGGER_HAPPY16 = 719
BTN_TRIGGER_HAPPY17 = 720
BTN_TRIGGER_HAPPY18 = 721
BTN_TRIGGER_HAPPY19 = 722
BTN_TRIGGER_HAPPY2 = 705
BTN_TRIGGER_HAPPY20 = 723
BTN_TRIGGER_HAPPY21 = 724
BTN_TRIGGER_HAPPY22 = 725
BTN_TRIGGER_HAPPY23 = 726
BTN_TRIGGER_HAPPY24 = 727
BTN_TRIGGER_HAPPY25 = 728
BTN_TRIGGER_HAPPY26 = 729
BTN_TRIGGER_HAPPY27 = 730
BTN_TRIGGER_HAPPY28 = 731
BTN_TRIGGER_HAPPY29 = 732
BTN_TRIGGER_HAPPY3 = 706
BTN_TRIGGER_HAPPY30 = 733
BTN_TRIGGER_HAPPY31 = 734
BTN_TRIGGER_HAPPY32 = 735
BTN_TRIGGER_HAPPY33 = 736
BTN_TRIGGER_HAPPY34 = 737
BTN_TRIGGER_HAPPY35 = 738
BTN_TRIGGER_HAPPY36 = 739
BTN_TRIGGER_HAPPY37 = 740
BTN_TRIGGER_HAPPY38 = 741
BTN_TRIGGER_HAPPY39 = 742
BTN_TRIGGER_HAPPY4 = 707
BTN_TRIGGER_HAPPY40 = 743
BTN_TRIGGER_HAPPY5 = 708
BTN_TRIGGER_HAPPY6 = 709
BTN_TRIGGER_HAPPY7 = 710
BTN_TRIGGER_HAPPY8 = 711
BTN_TRIGGER_HAPPY9 = 712
BTN_WEST = 308
BTN_WHEEL = 336
BTN_Z = 309
KEY_0 = 11
KEY_1 = 2
KEY_102ND = 86
KEY_10CHANNELSDOWN = 441
KEY_10CHANNELSUP = 440
KEY_2 = 3
KEY_3 = 4
KEY_3D_MODE = 623
KEY_4 = 5
KEY_5 = 6
KEY_6 = 7
KEY_7 = 8
KEY_8 = 9
KEY_9 = 10
KEY_A = 30
KEY_AB = 406
KEY_ACCESSIBILITY = 590
KEY_ADDRESSBOOK = 429
KEY_AGAIN = 129
KEY_ALL_APPLICATIONS = 204
KEY_ALS_TOGGLE = 560
KEY_ALTERASE = 222
KEY_ANGLE = 371
KEY_APOSTROPHE = 40
KEY_APPSELECT = 580
KEY_ARCHIVE = 361
KEY_ASPECT_RATIO = 375
KEY_ASSISTANT = 583
KEY_ATTENDANT_OFF = 540
KEY_ATTENDANT_ON = 539
KEY_ATTENDANT_TOGGLE = 541
KEY_AUDIO = 392
KEY_AUDIO_DESC = 622
KEY_AUTOPILOT_ENGAGE_TOGGLE = 637
KEY_AUX = 390
KEY_B = 48
KEY_BACK = 158
KEY_BACKSLASH = 43
KEY_BACKSPACE = 14
KEY_BASSBOOST = 209
KEY_BATTERY = 236
KEY_BLUE = 401
KEY_BLUETOOTH = 237
KEY_BOOKMARKS = 156
KEY_BREAK = 411
KEY_BRIGHTNESSDOWN = 224
KEY_BRIGHTNESSUP = 225
KEY_BRIGHTNESS_AUTO = 244
KEY_BRIGHTNESS_CYCLE = 243
KEY_BRIGHTNESS_MAX = 593
KEY_BRIGHTNESS_MENU = 649
KEY_BRIGHTNESS_MIN = 592
KEY_BRL_DOT1 = 497
KEY_BRL_DOT10 = 506
KEY_BRL_DOT2 = 498
KEY_BRL_DOT3 = 499
KEY_BRL_DOT4 = 500
KEY_BRL_DOT5 = 501
KEY_BRL_DOT6 = 502
KEY_BRL_DOT7 = 503
KEY_BRL_DOT8 = 504
KEY_BRL_DOT9 = 505
KEY_BUTTONCONFIG = 576
KEY_C = 46
KEY_CALC = 140
KEY_CALENDAR = 397
KEY_CAMERA = 212
KEY_CAMERA_ACCESS_DISABLE = 588
KEY_CAMERA_ACCESS_ENABLE = 587
KEY_CAMERA_ACCESS_TOGGLE = 589
KEY_CAMERA_DOWN = 536
KEY_CAMERA_FOCUS = 528
KEY_CAMERA_LEFT = 537
KEY_CAMERA_RIGHT = 538
KEY_CAMERA_UP = 535
KEY_CAMERA_ZOOMIN = 533
KEY_CAMERA_ZOOMOUT = 534
KEY_CANCEL = 223
KEY_CAPSLOCK = 58
KEY_CD = 383
KEY_CHANNEL = 363
KEY_CHANNELDOWN = 403
KEY_CHANNELUP = 402
KEY_CHAT = 216
KEY_CLEAR = 355
KEY_CLEARVU_SONAR = 646
KEY_CLOSE = 206
KEY_CLOSECD = 160
KEY_COFFEE = 152
KEY_COMMA = 51
KEY_COMPOSE = 127
KEY_COMPUTER = 157
KEY_CONFIG = 171
KEY_CONNECT = 218
KEY_CONTEXT_MENU = 438
KEY_CONTROLPANEL = 579
KEY_COPY = 133
KEY_CUT = 137
KEY_CYCLEWINDOWS = 154
KEY_D = 32
KEY_DATA = 631
KEY_DATABASE = 426
KEY_DELETE = 111
KEY_DELETEFILE = 146
KEY_DEL_EOL = 448
KEY_DEL_EOS = 449
KEY_DEL_LINE = 451
KEY_DICTATE = 586
KEY_DIGITS = 413
KEY_DIRECTORY = 394
KEY_DISPLAYTOGGLE = 431
KEY_DISPLAY_OFF = 245
KEY_DOCUMENTS = 235
KEY_DOLLAR = 434
KEY_DOT = 52
KEY_DOWN = 108
KEY_DO_NOT_DISTURB = 591
KEY_DUAL_RANGE_RADAR = 643
KEY_DVD = 389
KEY_E = 18
KEY_EDIT = 176
KEY_EDITOR = 422
KEY_EJECTCD = 161
KEY_EJECTCLOSECD = 162
KEY_EMAIL = 215
KEY_EMOJI_PICKER = 585
KEY_END = 107
KEY_ENTER = 28
KEY_EPG = 365
KEY_EPRIVACY_SCREEN_OFF = 595
KEY_EPRIVACY_SCREEN_ON = 594
KEY_EQUAL = 13
KEY_ESC = 1
KEY_EURO = 435
KEY_EXIT = 174
KEY_F = 33
KEY_F1 = 59
KEY_F10 = 68
KEY_F11 = 87
KEY_F12 = 88
KEY_F13 = 183
KEY_F14 = 184
KEY_F15 = 185
KEY_F16 = 186
KEY_F17 = 187
KEY_F18 = 188
KEY_F19 = 189
KEY_F2 = 60
KEY_F20 = 190
KEY_F21 = 191
KEY_F22 = 192
KEY_F23 = 193
KEY_F24 = 194
KEY_F3 = 61
KEY_F4 = 62
KEY_F5 = 63
KEY_F6 = 64
KEY_F7 = 65
KEY_F8 = 66
KEY_F9 = 67
KEY_FASTFORWARD = 208
KEY_FASTREVERSE = 629
KEY_FAVORITES = 364
KEY_FILE = 144
KEY_FINANCE = 219
KEY_FIND = 136
KEY_FIRST = 404
KEY_FISHING_CHART = 641
KEY_FN = 464
KEY_FN_1 = 478
KEY_FN_2 = 479
KEY_FN_B = 484
KEY_FN_D = 480
KEY_FN_E = 481
KEY_FN_ESC = 465
KEY_FN_F = 482
KEY_FN_F1 = 466
KEY_FN_F10 = 475
KEY_FN_F11 = 476
KEY_FN_F12 = 477
KEY_FN_F2 = 467
KEY_FN_F3 = 468
KEY_FN_F4 = 469
KEY_FN_F5 = 470
KEY_FN_F6 = 471
KEY_FN_F7 = 472
KEY_FN_F8 = 473
KEY_FN_F9 = 474
KEY_FN_RIGHT_SHIFT = 485
KEY_FN_S = 483
KEY_FORWARD = 159
KEY_FORWARDMAIL = 233
KEY_FRAMEBACK = 436
KEY_FRAMEFORWARD = 437
KEY_FRONT = 132
KEY_FULL_SCREEN = 372
KEY_G = 34
KEY_GAMES = 417
KEY_GOTO = 354
KEY_GRAPHICSEDITOR = 424
KEY_GRAVE = 41
KEY_GREEN = 399
KEY_H = 35
KEY_HANGEUL = 122
KEY_HANGUP_PHONE = 446
KEY_HANJA = 123
KEY_HELP = 138
KEY_HENKAN = 92
KEY_HIRAGANA = 91
KEY_HOME = 102
KEY_HOMEPAGE = 172
KEY_HP = 211
KEY_I = 23
KEY_IMAGES = 442
KEY_INFO = 358
KEY_INSERT = 110
KEY_INS_LINE = 450
KEY_ISO = 170
KEY_J = 36
KEY_JOURNAL = 578
KEY_K = 37
KEY_KATAKANA = 90
KEY_KATAKANAHIRAGANA = 93
KEY_KBDILLUMDOWN = 229
KEY_KBDILLUMTOGGLE = 228
KEY_KBDILLUMUP = 230
KEY_KBDINPUTASSIST_ACCEPT = 612
KEY_KBDINPUTASSIST_CANCEL = 613
KEY_KBDINPUTASSIST_NEXT = 609
KEY_KBDINPUTASSIST_NEXTGROUP = 611
KEY_KBDINPUTASSIST_PREV = 608
KEY_KBDINPUTASSIST_PREVGROUP = 610
KEY_KBD_LAYOUT_NEXT = 584
KEY_KBD_LCD_MENU1 = 696
KEY_KBD_LCD_MENU2 = 697
KEY_KBD_LCD_MENU3 = 698
KEY_KBD_LCD_MENU4 = 699
KEY_KBD_LCD_MENU5 = 700
KEY_KEYBOARD = 374
KEY_KP0 = 82
KEY_KP1 = 79
KEY_KP2 = 80
KEY_KP3 = 81
KEY_KP4 = 75
KEY_KP5 = 76
KEY_KP6 = 77
KEY_KP7 = 71
KEY_KP8 = 72
KEY_KP9 = 73
KEY_KPASTERISK = 55
KEY_KPCOMMA = 121
KEY_KPDOT = 83
KEY_KPENTER = 96
KEY_KPEQUAL = 117
KEY_KPJPCOMMA = 95
KEY_KPLEFTPAREN = 179
KEY_KPMINUS = 74
KEY_KPPLUS = 78
KEY_KPPLUSMINUS = 118
KEY_KPRIGHTPAREN = 180
KEY_KPSLASH = 98
KEY_L = 38
KEY_LANGUAGE = 368
KEY_LAST = 405
KEY_LEFT = 105
KEY_LEFTALT = 56
KEY_LEFTBRACE = 26
KEY_LEFTCTRL = 29
KEY_LEFTMETA = 125
KEY_LEFTSHIFT = 42
KEY_LEFT_DOWN = 617
KEY_LEFT_UP = 616
KEY_LIGHTS_TOGGLE = 542
KEY_LINEFEED = 101
KEY_LIST = 395
KEY_LOGOFF = 433
KEY_M = 50
KEY_MACRO = 112
KEY_MACRO1 = 656
KEY_MACRO10 = 665
KEY_MACRO11 = 666
KEY_MACRO12 = 667
KEY_MACRO13 = 668
KEY_MACRO14 = 669
KEY_MACRO15 = 670
KEY_MACRO16 = 671
KEY_MACRO17 = 672
KEY_MACRO18 = 673
KEY_MACRO19 = 674
KEY_MACRO2 = 657
KEY_MACRO20 = 675
KEY_MACRO21 = 676
KEY_MACRO22 = 677
KEY_MACRO23 = 678
KEY_MACRO24 = 679
KEY_MACRO25 = 680
KEY_MACRO26 = 681
KEY_MACRO27 = 682
KEY_MACRO28 = 683
KEY_MACRO29 = 684
KEY_MACRO3 = 658
KEY_MACRO30 = 685
KEY_MACRO4 = 659
KEY_MACRO5 = 660
KEY_MACRO6 = 661
KEY_MACRO7 = 662
KEY_MACRO8 = 663
KEY_MACRO9 = 664
KEY_MACRO_PRESET1 = 691
KEY_MACRO_PRESET2 = 692
KEY_MACRO_PRESET3 = 693
KEY_MACRO_PRESET_CYCLE = 690
KEY_MACRO_RECORD_START = 688
KEY_MACRO_RECORD_STOP = 689
KEY_MAIL = 155
KEY_MARK_WAYPOINT = 638
KEY_MEDIA = 226
KEY_MEDIA_REPEAT = 439
KEY_MEDIA_TOP_MENU = 619
KEY_MEMO = 396
KEY_MENU = 139
KEY_MESSENGER = 430
KEY_MHP = 367
KEY_MICMUTE = 248
KEY_MINUS = 12
KEY_MODE = 373
KEY_MOVE = 175
KEY_MP3 = 391
KEY_MSDOS = 151
KEY_MUHENKAN = 94
KEY_MUTE = 113
KEY_N = 49
KEY_NAV_CHART = 640
KEY_NAV_INFO = 648
KEY_NEW = 181
KEY_NEWS = 427
KEY_NEXT = 407
KEY_NEXTSONG = 163
KEY_NEXT_ELEMENT = 635
KEY_NEXT_FAVORITE = 624
KEY_NOTIFICATION_CENTER = 444
KEY_NUMERIC_0 = 512
KEY_NUMERIC_1 = 513
KEY_NUMERIC_11 = 620
KEY_NUMERIC_12 = 621
KEY_NUMERIC_2 = 514
KEY_NUMERIC_3 = 515
KEY_NUMERIC_4 = 516
KEY_NUMERIC_5 = 517
KEY_NUMERIC_6 = 518
KEY_NUMERIC_7 = 519
KEY_NUMERIC_8 = 520
KEY_NUMERIC_9 = 521
KEY_NUMERIC_A = 524
KEY_NUMERIC_B = 525
KEY_NUMERIC_C = 526
KEY_NUMERIC_D = 527
KEY_NUMERIC_POUND = 523
KEY_NUMERIC_STAR = 522
KEY_NUMLOCK = 69
KEY_O = 24
KEY_OK = 352
KEY_ONSCREEN_KEYBOARD = 632
KEY_OPEN = 134
KEY_OPTION = 357
KEY_P = 25
KEY_PAGEDOWN = 109
KEY_PAGEUP = 104
KEY_PASTE = 135
KEY_PAUSE = 119
KEY_PAUSECD = 201
KEY_PAUSE_RECORD = 626
KEY_PC = 376
KEY_PERFORMANCE = 701
KEY_PHONE = 169
KEY_PICKUP_PHONE = 445
KEY_PLAY = 207
KEY_PLAYCD = 200
KEY_PLAYER = 387
KEY_PLAYPAUSE = 164
KEY_POWER = 116
KEY_POWER2 = 356
KEY_PRESENTATION = 425
KEY_PREVIOUS = 412
KEY_PREVIOUSSONG = 165
KEY_PREVIOUS_ELEMENT = 636
KEY_PRINT = 210
KEY_PRIVACY_SCREEN_TOGGLE = 633
KEY_PROG1 = 148
KEY_PROG2 = 149
KEY_PROG3 = 202
KEY_PROG4 = 203
KEY_PROGRAM = 362
KEY_PROPS = 130
KEY_PVR = 366
KEY_Q = 16
KEY_QUESTION = 214
KEY_R = 19
KEY_RADAR_OVERLAY = 644
KEY_RADIO = 385
KEY_RECORD = 167
KEY_RED = 398
KEY_REDO = 182
KEY_REFRESH = 173
KEY_REFRESH_RATE_TOGGLE = 562
KEY_REPLY = 232
KEY_RESERVED = 0
KEY_RESTART = 408
KEY_REWIND = 168
KEY_RFKILL = 247
KEY_RIGHT = 106
KEY_RIGHTALT = 100
KEY_RIGHTBRACE = 27
KEY_RIGHTCTRL = 97
KEY_RIGHTMETA = 126
KEY_RIGHTSHIFT = 54
KEY_RIGHT_DOWN = 615
KEY_RIGHT_UP = 614
KEY_RO = 89
KEY_ROOT_MENU = 618
KEY_ROTATE_DISPLAY = 153
KEY_ROTATE_LOCK_TOGGLE = 561
KEY_S = 31
KEY_SAT = 381
KEY_SAT2 = 382
KEY_SAVE = 234
KEY_SCALE = 120
KEY_SCREENSAVER = 581
KEY_SCROLLDOWN = 178
KEY_SCROLLLOCK = 70
KEY_SCROLLUP = 177
KEY_SELECT = 353
KEY_SELECTIVE_SCREENSHOT = 634
KEY_SEMICOLON = 39
KEY_SEND = 231
KEY_SENDFILE = 145
KEY_SETUP = 141
KEY_SHOP = 221
KEY_SHUFFLE = 410
KEY_SIDEVU_SONAR = 647
KEY_SINGLE_RANGE_RADAR = 642
KEY_SLASH = 53
KEY_SLEEP = 142
KEY_SLOW = 409
KEY_SLOWREVERSE = 630
KEY_SOS = 639
KEY_SOUND = 213
KEY_SPACE = 57
KEY_SPELLCHECK = 432
KEY_SPORT = 220
KEY_SPREADSHEET = 423
KEY_STOP = 128
KEY_STOPCD = 166
KEY_STOP_RECORD = 625
KEY_SUBTITLE = 370
KEY_SUSPEND = 205
KEY_SWITCHVIDEOMODE = 227
KEY_SYSRQ = 99
KEY_T = 20
KEY_TAB = 15
KEY_TAPE = 384
KEY_TASKMANAGER = 577
KEY_TEEN = 414
KEY_TEXT = 388
KEY_TIME = 359
KEY_TITLE = 369
KEY_TOUCHPAD_OFF = 532
KEY_TOUCHPAD_ON = 531
KEY_TOUCHPAD_TOGGLE = 530
KEY_TRADITIONAL_SONAR = 645
KEY_TUNER = 386
KEY_TV = 377
KEY_TV2 = 378
KEY_TWEN = 415
KEY_U = 22
KEY_UNDO = 131
KEY_UNKNOWN = 240
KEY_UNMUTE = 628
KEY_UP = 103
KEY_UWB = 239
KEY_V = 47
KEY_VCR = 379
KEY_VCR2 = 380
KEY_VENDOR = 360
KEY_VIDEO = 393
KEY_VIDEOPHONE = 416
KEY_VIDEO_NEXT = 241
KEY_VIDEO_PREV = 242
KEY_VOD = 627
KEY_VOICECOMMAND = 582
KEY_VOICEMAIL = 428
KEY_VOLUMEDOWN = 114
KEY_VOLUMEUP = 115
KEY_W = 17
KEY_WAKEUP = 143
KEY_WLAN = 238
KEY_WORDPROCESSOR = 421
KEY_WPS_BUTTON = 529
KEY_WWAN = 246
KEY_WWW = 150
KEY_X = 45
KEY_XFER = 147
KEY_Y = 21
KEY_YELLOW = 400
KEY_YEN = 124
KEY_Z = 44
KEY_ZENKAKUHANKAKU = 85
KEY_ZOOMIN = 418
KEY_ZOOMOUT = 419
KEY_ZOOMRESET = 420
class devinput.event_types.LedEvent(*values)

Bases: IntEnum

LEDs (LED)

LED_CAPSL = 1
LED_CHARGING = 10
LED_COMPOSE = 3
LED_KANA = 4
LED_MAIL = 9
LED_MISC = 8
LED_MUTE = 7
LED_NUML = 0
LED_SCROLLL = 2
LED_SLEEP = 5
LED_SUSPEND = 6
class devinput.event_types.MscEvent(*values)

Bases: IntEnum

Misc events (MSC)

MSC_GESTURE = 2
MSC_PULSELED = 1
MSC_RAW = 3
MSC_SCAN = 4
MSC_SERIAL = 0
MSC_TIMESTAMP = 5
class devinput.event_types.RelEvent(*values)

Bases: IntEnum

Relative axes (REL)

REL_DIAL = 7
REL_HWHEEL = 6
REL_HWHEEL_HI_RES = 12
REL_MISC = 9
REL_RESERVED = 10
REL_RX = 3
REL_RY = 4
REL_RZ = 5
REL_WHEEL = 8
REL_WHEEL_HI_RES = 11
REL_X = 0
REL_Y = 1
REL_Z = 2
class devinput.event_types.RepEvent(*values)

Bases: IntEnum

Repeat events (REP)

REP_DELAY = 0
REP_PERIOD = 1
class devinput.event_types.SndEvent(*values)

Bases: IntEnum

Sound events (SND)

SND_BELL = 1
SND_CLICK = 0
SND_TONE = 2
class devinput.event_types.SwEvent(*values)

Bases: IntEnum

Switch events (SW)

SW_CAMERA_LENS_COVER = 9
SW_DOCK = 5
SW_FRONT_PROXIMITY = 11
SW_HEADPHONE_INSERT = 2
SW_JACK_PHYSICAL_INSERT = 7
SW_KEYPAD_SLIDE = 10
SW_LID = 0
SW_LINEIN_INSERT = 13
SW_LINEOUT_INSERT = 6
SW_MACHINE_COVER = 16
SW_MICROPHONE_INSERT = 4
SW_MUTE_DEVICE = 14
SW_PEN_INSERTED = 15
SW_RFKILL_ALL = 3
SW_ROTATE_LOCK = 12
SW_TABLET_MODE = 1
SW_USB_INSERT = 17
SW_VIDEOOUT_INSERT = 8
class devinput.event_types.SynEvent(*values)

Bases: IntEnum

Synchronisation events (SYN)

SYN_CONFIG = 1
SYN_DROPPED = 3
SYN_MT_REPORT = 2
SYN_REPORT = 0
class devinput.event_types.UnknownEvent(*values)

Bases: IntEnum

devinput.ioctl module

class devinput.ioctl.FfConditionEffect

Bases: Structure

center

Structure/Union member

deadband

Structure/Union member

left_coeff

Structure/Union member

left_saturation

Structure/Union member

right_coeff

Structure/Union member

right_saturation

Structure/Union member

class devinput.ioctl.FfConstantEffect

Bases: Structure

envelope

Structure/Union member

level

Structure/Union member

class devinput.ioctl.FfEffect

Bases: Structure

direction

Structure/Union member

id

Structure/Union member

replay

Structure/Union member

trigger

Structure/Union member

type

Structure/Union member

u

Structure/Union member

class devinput.ioctl.FfEnvelope

Bases: Structure

attack_length

Structure/Union member

attack_level

Structure/Union member

fade_length

Structure/Union member

fade_level

Structure/Union member

class devinput.ioctl.FfPeriodicEffect

Bases: Structure

custom_data

Structure/Union member

custom_len

Structure/Union member

envelope

Structure/Union member

magnitude

Structure/Union member

offset

Structure/Union member

period

Structure/Union member

phase

Structure/Union member

waveform

Structure/Union member

class devinput.ioctl.FfRampEffect

Bases: Structure

end_level

Structure/Union member

envelope

Structure/Union member

start_level

Structure/Union member

class devinput.ioctl.FfReplay

Bases: Structure

delay

Structure/Union member

length

Structure/Union member

class devinput.ioctl.FfRumbleEffect

Bases: Structure

strong_magnitude

Structure/Union member

weak_magnitude

Structure/Union member

class devinput.ioctl.FfTrigger

Bases: Structure

button

Structure/Union member

interval

Structure/Union member

class devinput.ioctl.IOC_DIR(*values)

Bases: IntEnum

NONE = 0
READ = 2
WRITE = 1
class devinput.ioctl.InputAbsInfo

Bases: Structure

flat: c_int

Structure/Union member

fuzz: c_int

Structure/Union member

maximum: c_int

Structure/Union member

minimum: c_int

Structure/Union member

resolution: c_int

Structure/Union member

value: c_int

Structure/Union member

class devinput.ioctl.InputId

Bases: Structure

property bus_type: BusType
product: c_ushort

Structure/Union member

vendor: c_ushort

Structure/Union member

version: c_ushort

Structure/Union member

class devinput.ioctl.InputKeymapEntry

Bases: Structure

flags: c_ubyte

Structure/Union member

index: c_ubyte

Structure/Union member

keycode: c_uint

Structure/Union member

len: c_ubyte

Structure/Union member

scancode: c_ubyte_Array_32

Structure/Union member

class devinput.ioctl.IoctlInterface(fd)

Bases: object

GABS(abs_code)
GBIT(ev, length)
GEFFECTS()
GID()
GKEY(size)
GKEYCODE()
GKEYCODE_V2(buffer)
GLED(size)
GMTSLOTS(code, num_slots)
GNAME(size)
GPHYS(size)
GPROP(size)
GRAB(what)
GREP()
GSND(size)
GSW(size)
GUNIQ(size)
GVERSION()
REVOKE(what)
RMFF(what)
SABS(abs_code, absinfo)
SCLOCKID(what)
SFF(what)
SKEYCODE(what)
SKEYCODE_V2(what)
SREP(what)
fileno()
class devinput.ioctl.RepeatSettings

Bases: Structure

delay: c_uint

Structure/Union member

period: c_uint

Structure/Union member

devinput.ioctl.build_ev_read_request(nr, size)
devinput.ioctl.build_ev_write_request(nr, size)
devinput.ioctl.build_ioctl_request(dir, type, nr, size)

devinput.mt_tool module

class devinput.mt_tool.MtTool(*values)

Bases: IntEnum

Multi-touch tool types

MT_TOOL_FINGER = 0
MT_TOOL_PALM = 2
MT_TOOL_PEN = 1

devinput.props module

class devinput.props.Props(*values)

Bases: IntEnum

Device properties and quirks

INPUT_PROP_ACCELEROMETER = 6
INPUT_PROP_BUTTONPAD = 2
INPUT_PROP_DIRECT = 1
INPUT_PROP_POINTER = 0
INPUT_PROP_POINTING_STICK = 5
INPUT_PROP_SEMI_MT = 3
INPUT_PROP_TOPBUTTONPAD = 4

devinput.utils module

class devinput.utils.UnknownEnumMember(enum_cls, value)

Bases: object

class devinput.utils.UnknownEnumMeta(cls, bases, classdict, *, boundary=None, _simple=False, **kwds)

Bases: EnumType

devinput.utils.read_file_safe(filename, binary=False)

Module contents