# Lint as: python2, python3
# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Description:
#
# Python version of include/linux/input.h
#  as of kernel v2.6.39

from __future__ import division
from __future__ import print_function
from six.moves import range

from linux_ioctl import *
# The event structure itself
#   struct input_event {
#       struct timeval time;
#       __u16 type;
#       __u16 code;
#       __s32 value;
#   };
#
#   struct timeval {
#       __kernel_time_t         tv_sec;         /* seconds */
#       __kernel_suseconds_t    tv_usec;        /* microseconds */
#   };
input_event_t = 'LLHHi'


# Protocol version.
EV_VERSION = 0x010001

# IOCTLs (0x00 - 0x7f)

#   struct input_id {
#       __u16 bustype;
#       __u16 vendor;
#       __u16 product;
#       __u16 version;
#   };
input_id_t = 'HHHH'

# struct input_absinfo - used by EVIOCGABS/EVIOCSABS ioctls
# @value: latest reported value for the axis.
# @minimum: specifies minimum value for the axis.
# @maximum: specifies maximum value for the axis.
# @fuzz: specifies fuzz value used to filter noise from the event stream.
# @flat: values within this value are reported as 0.
# @resolution: specifies resolution for the values reported for the axis.
#
# Note that input core does not clamp reported values to the
# [minimum, maximum] limits, such task is left to userspace.
#
# Resolution for main axes (ABS_X, ABS_Y, ABS_Z) is reported in
# units per millimeter (units/mm), resolution for rotational axes
# (ABS_RX, ABS_RY, ABS_RZ) is reported in units per radian.
#
#   struct input_absinfo {
#       __s32 value;
#       __s32 minimum;
#       __s32 maximum;
#       __s32 fuzz;
#       __s32 flat;
#       __s32 resolution;
#   };
input_absinfo_t = 'iiiiii'

# struct input_keymap_entry - used by EVIOCGKEYCODE/EVIOCSKEYCODE ioctls
# @scancode: scancode represented in machine-endian form.
# @len: length of the scancode that resides in @scancode buffer.
# @index: index in the keymap, may be used instead of scancode
# @flags: allows to specify how kernel should handle the request. For
# example, setting INPUT_KEYMAP_BY_INDEX flag indicates that kernel
# should perform lookup in keymap by @index instead of @scancode
# @keycode: key code assigned to this scancode
#
# The structure is used to retrieve and modify keymap data. Users have
# option of performing lookup either by @scancode itself or by @index
# in keymap entry. EVIOCGKEYCODE will also return scancode or index
# (depending on which element was used to perform lookup).
#
#   struct input_keymap_entry {
#       __u8  flags;
#       __u8  len;
#       __u16 index;
#       __u32 keycode;
#       __u8  scancode[32];
#   };
input_keymap_entry_t = 'BBHI32B'

EVIOCGVERSION           = IOR('E', 0x01, 'i')           # get driver version
EVIOCGID                = IOR('E', 0x02, input_id_t)    # get device ID
EVIOCGREP               = IOR('E', 0x03, '2I')          # get repeat settings
EVIOCSREP               = IOW('E', 0x03, '2I')          # set repeat settings

EVIOCGKEYCODE           = IOR('E', 0x04, '2I')          # get keycode
EVIOCGKEYCODE_V2        = IOR('E', 0x04, input_keymap_entry_t)
EVIOCSKEYCODE           = IOW('E', 0x04, '2I')          # set keycode
EVIOCSKEYCODE_V2        = IOW('E', 0x04, input_keymap_entry_t)

def EVIOCGNAME(length):
    return IOC(IOC_READ, 'E', 0x06, length)  # get device name

def EVIOCGPHYS(length):
    return IOC(IOC_READ, 'E', 0x07, length)  # get physical location

def EVIOCGUNIQ(length):
    return IOC(IOC_READ, 'E', 0x08, length)  # get unique identifier

def EVIOCGPROP(length):
    return IOC(IOC_READ, 'E', 0x09, length)  # get device properties

def EVIOCGMTSLOTS(length):
    return IOC(IOC_READ, 'E', 0x0a, length)  # get mt slot values

def EVIOCGKEY(length):
    return IOC(IOC_READ, 'E', 0x18, length)  # get global key state

def EVIOCGLED(length):
    return IOC(IOC_READ, 'E', 0x19, length)  # get all LEDs

def EVIOCGSND(length):
    return IOC(IOC_READ, 'E', 0x1a, length)  # get all sounds status

def EVIOCGSW(length):
    return IOC(IOC_READ, 'E', 0x1b, length)  # get all switch states

def EVIOCGBIT(ev,length):
    return IOC(IOC_READ, 'E', 0x20 + ev, length)  # get event bits

def EVIOCGABS(axis):
    return IOR('E', 0x40 + axis, input_absinfo_t)  # get abs value/limits

def EVIOCSABS(axis):
    return IOW('E', 0xc0 + axis, input_absinfo_t)  # set abs value/limits

# send a force effect to a force feedback device
"""  TODO: Support force feedback. """


#EVIOCSFF                = IOW('E', 0x80, ff_effect_t)
# Erase a force effect
EVIOCRMFF               = IOW('E', 0x81, 'i')
# Report number of effects playable at the same time
EVIOCGEFFECTS           = IOR('E', 0x84, 'i')
# Grab/Release device
EVIOCGRAB               = IOW('E', 0x90, 'i')

# Device properties and quirks
INPUT_PROP_POINTER   = 0x00 # needs a pointer
INPUT_PROP_DIRECT    = 0x01 # direct input devices
INPUT_PROP_BUTTONPAD = 0x02 # has button(s) under pad
INPUT_PROP_SEMI_MT   = 0x03 # touch rectangle only

INPUT_PROP_MAX       = 0x1f
INPUT_PROP_CNT       = (INPUT_PROP_MAX + 1)

# Event types
EV_SYN          = 0x00
EV_KEY          = 0x01
EV_REL          = 0x02
EV_ABS          = 0x03
EV_MSC          = 0x04
EV_SW           = 0x05
EV_LED          = 0x11
EV_SND          = 0x12
EV_REP          = 0x14
EV_FF           = 0x15
EV_PWR          = 0x16
EV_FF_STATUS    = 0x17
EV_MAX          = 0x1f
EV_CNT          = (EV_MAX + 1)

# Synchronization events.

SYN_REPORT      = 0
SYN_CONFIG      = 1
SYN_MT_REPORT   = 2
SYN_DROPPED     = 3

"""
 * Keys and buttons
 *
 * Most of the keys/buttons are modeled after USB HUT 1.12
 * (see http://www.usb.org/developers/hidpage).
 * Abbreviations in the comments:
 * AC - Application Control
 * AL - Application Launch Button
 * SC - System Control
"""

KEY_RESERVED    =  0
KEY_ESC         =  1
KEY_1           =  2
KEY_2           =  3
KEY_3           =  4
KEY_4           =  5
KEY_5           =  6
KEY_6           =  7
KEY_7           =  8
KEY_8           =  9
KEY_9           = 10
KEY_0           = 11
KEY_MINUS       = 12
KEY_EQUAL       = 13
KEY_BACKSPACE   = 14
KEY_TAB         = 15
KEY_Q           = 16
KEY_W           = 17
KEY_E           = 18
KEY_R           = 19
KEY_T           = 20
KEY_Y           = 21
KEY_U           = 22
KEY_I           = 23
KEY_O           = 24
KEY_P           = 25
KEY_LEFTBRACE   = 26
KEY_RIGHTBRACE  = 27
KEY_ENTER       = 28
KEY_LEFTCTRL    = 29
KEY_A           = 30
KEY_S           = 31
KEY_D           = 32
KEY_F           = 33
KEY_G           = 34
KEY_H           = 35
KEY_J           = 36
KEY_K           = 37
KEY_L           = 38
KEY_SEMICOLON   = 39
KEY_APOSTROPHE  = 40
KEY_GRAVE       = 41
KEY_LEFTSHIFT   = 42
KEY_BACKSLASH   = 43
KEY_Z           = 44
KEY_X           = 45
KEY_C           = 46
KEY_V           = 47
KEY_B           = 48
KEY_N           = 49
KEY_M           = 50
KEY_COMMA       = 51
KEY_DOT         = 52
KEY_SLASH       = 53
KEY_RIGHTSHIFT  = 54
KEY_KPASTERISK  = 55
KEY_LEFTALT     = 56
KEY_SPACE       = 57
KEY_CAPSLOCK    = 58
KEY_F1          = 59
KEY_F2          = 60
KEY_F3          = 61
KEY_F4          = 62
KEY_F5          = 63
KEY_F6          = 64
KEY_F7          = 65
KEY_F8          = 66
KEY_F9          = 67
KEY_F10         = 68
KEY_NUMLOCK     = 69
KEY_SCROLLLOCK  = 70
KEY_KP7         = 71
KEY_KP8         = 72
KEY_KP9         = 73
KEY_KPMINUS     = 74
KEY_KP4         = 75
KEY_KP5         = 76
KEY_KP6         = 77
KEY_KPPLUS      = 78
KEY_KP1         = 79
KEY_KP2         = 80
KEY_KP3         = 81
KEY_KP0         = 82
KEY_KPDOT       = 83

KEY_ZENKAKUHANKAKU = 85
KEY_102ND       = 86
KEY_F11         = 87
KEY_F12         = 88
KEY_RO          = 89
KEY_KATAKANA    = 90
KEY_HIRAGANA    = 91
KEY_HENKAN      = 92
KEY_KATAKANAHIRAGANA = 93
KEY_MUHENKAN    = 94
KEY_KPJPCOMMA   = 95
KEY_KPENTER     = 96
KEY_RIGHTCTRL   = 97
KEY_KPSLASH     = 98
KEY_SYSRQ       = 99
KEY_RIGHTALT    = 100
KEY_LINEFEED    = 101
KEY_HOME        = 102
KEY_UP          = 103
KEY_PAGEUP      = 104
KEY_LEFT        = 105
KEY_RIGHT       = 106
KEY_END         = 107
KEY_DOWN        = 108
KEY_PAGEDOWN    = 109
KEY_INSERT      = 110
KEY_DELETE      = 111
KEY_MACRO       = 112
KEY_MUTE        = 113
KEY_VOLUMEDOWN  = 114
KEY_VOLUMEUP    = 115
KEY_POWER       = 116     # SC System Power Down
KEY_KPEQUAL     = 117
KEY_KPPLUSMINUS = 118
KEY_PAUSE       = 119
KEY_SCALE       = 120     # AL Compiz Scale (Expose)

KEY_KPCOMMA     = 121
KEY_HANGEUL     = 122
KEY_HANGUEL     = KEY_HANGEUL
KEY_HANJA       = 123
KEY_YEN         = 124
KEY_LEFTMETA    = 125
KEY_RIGHTMETA   = 126
KEY_COMPOSE     = 127

KEY_STOP        = 128   # AC Stop
KEY_AGAIN       = 129
KEY_PROPS       = 130   # AC Properties
KEY_UNDO        = 131   # AC Undo
KEY_FRONT       = 132
KEY_COPY        = 133   # AC Copy
KEY_OPEN        = 134   # AC Open
KEY_PASTE       = 135   # AC Paste
KEY_FIND        = 136   # AC Search
KEY_CUT         = 137   # AC Cut
KEY_HELP        = 138   # AL Integrated Help Center
KEY_MENU        = 139   # Menu (show menu)
KEY_CALC        = 140   # AL Calculator
KEY_SETUP       = 141
KEY_SLEEP       = 142   # SC System Sleep
KEY_WAKEUP      = 143   # System Wake Up
KEY_FILE        = 144   # AL Local Machine Browser
KEY_SENDFILE    = 145
KEY_DELETEFILE  = 146
KEY_XFER        = 147
KEY_PROG1       = 148
KEY_PROG2       = 149
KEY_WWW         = 150   # AL Internet Browser
KEY_MSDOS       = 151
KEY_COFFEE      = 152   # AL Terminal Lock/Screensaver
KEY_SCREENLOCK  = KEY_COFFEE
KEY_DIRECTION   = 153
KEY_CYCLEWINDOWS = 154
KEY_MAIL        = 155
KEY_BOOKMARKS   = 156   # AC Bookmarks
KEY_COMPUTER    = 157
KEY_BACK        = 158   # AC Back
KEY_FORWARD     = 159   # AC Forward
KEY_CLOSECD     = 160
KEY_EJECTCD     = 161
KEY_EJECTCLOSECD = 162
KEY_NEXTSONG    = 163
KEY_PLAYPAUSE   = 164
KEY_PREVIOUSSONG = 165
KEY_STOPCD      = 166
KEY_RECORD      = 167
KEY_REWIND      = 168
KEY_PHONE       = 169   # Media Select Telephone
KEY_ISO         = 170
KEY_CONFIG      = 171   # AL Consumer Control Configuration
KEY_HOMEPAGE    = 172   # AC Home
KEY_REFRESH     = 173   # AC Refresh
KEY_EXIT        = 174   # AC Exit
KEY_MOVE        = 175
KEY_EDIT        = 176
KEY_SCROLLUP    = 177
KEY_SCROLLDOWN  = 178
KEY_KPLEFTPAREN = 179
KEY_KPRIGHTPAREN = 180
KEY_NEW         = 181   # AC New
KEY_REDO        = 182   # AC Redo/Repeat

KEY_F13         = 183
KEY_F14         = 184
KEY_F15         = 185
KEY_F16         = 186
KEY_F17         = 187
KEY_F18         = 188
KEY_F19         = 189
KEY_F20         = 190
KEY_F21         = 191
KEY_F22         = 192
KEY_F23         = 193
KEY_F24         = 194

KEY_PLAYCD      = 200
KEY_PAUSECD     = 201
KEY_PROG3       = 202
KEY_PROG4       = 203
KEY_DASHBOARD   = 204   # AL Dashboard
KEY_SUSPEND     = 205
KEY_CLOSE       = 206   # AC Close
KEY_PLAY        = 207
KEY_FASTFORWARD = 208
KEY_BASSBOOST   = 209
KEY_PRINT       = 210   # AC Print
KEY_HP          = 211
KEY_CAMERA      = 212
KEY_SOUND       = 213
KEY_QUESTION    = 214
KEY_EMAIL       = 215
KEY_CHAT        = 216
KEY_SEARCH      = 217
KEY_CONNECT     = 218
KEY_FINANCE     = 219   #AL Checkbook/Finance
KEY_SPORT       = 220
KEY_SHOP        = 221
KEY_ALTERASE    = 222
KEY_CANCEL      = 223   # AC Cancel
KEY_BRIGHTNESSDOWN = 224
KEY_BRIGHTNESSUP = 225
KEY_MEDIA       = 226

KEY_SWITCHVIDEOMODE = 227   # Cycle between available video
                            # outputs (Monitor/LCD/TV-out/etc)
KEY_KBDILLUMTOGGLE  = 228
KEY_KBDILLUMDOWN    = 229
KEY_KBDILLUMUP      = 230

KEY_SEND            = 231   # AC Send
KEY_REPLY           = 232   # AC Reply
KEY_FORWARDMAIL     = 233   # AC Forward Msg
KEY_SAVE            = 234   # AC Save
KEY_DOCUMENTS       = 235

KEY_BATTERY         = 236

KEY_BLUETOOTH       = 237
KEY_WLAN            = 238
KEY_UWB             = 239

KEY_UNKNOWN         = 240

KEY_VIDEO_NEXT      = 241   # drive next video source
KEY_VIDEO_PREV      = 242   # drive previous video source
KEY_BRIGHTNESS_CYCLE = 243  # brightness up, after max is min
KEY_BRIGHTNESS_ZERO = 244   # brightness off, use ambient
KEY_DISPLAY_OFF     = 245   # display device to off state

KEY_WIMAX           = 246
KEY_RFKILL          = 247   # Key that controls all radios

# Code 255 is reserved for special needs of AT keyboard driver

BTN_MISC        = 0x100
BTN_0           = 0x100
BTN_1           = 0x101
BTN_2           = 0x102
BTN_3           = 0x103
BTN_4           = 0x104
BTN_5           = 0x105
BTN_6           = 0x106
BTN_7           = 0x107
BTN_8           = 0x108
BTN_9           = 0x109

BTN_MOUSE       = 0x110
BTN_LEFT        = 0x110
BTN_RIGHT       = 0x111
BTN_MIDDLE      = 0x112
BTN_SIDE        = 0x113
BTN_EXTRA       = 0x114
BTN_FORWARD     = 0x115
BTN_BACK        = 0x116
BTN_TASK        = 0x117

BTN_JOYSTICK    = 0x120
BTN_TRIGGER     = 0x120
BTN_THUMB       = 0x121
BTN_THUMB2      = 0x122
BTN_TOP         = 0x123
BTN_TOP2        = 0x124
BTN_PINKIE      = 0x125
BTN_BASE        = 0x126
BTN_BASE2       = 0x127
BTN_BASE3       = 0x128
BTN_BASE4       = 0x129
BTN_BASE5       = 0x12a
BTN_BASE6       = 0x12b
BTN_DEAD        = 0x12f

BTN_GAMEPAD     = 0x130
BTN_A           = 0x130
BTN_B           = 0x131
BTN_C           = 0x132
BTN_X           = 0x133
BTN_Y           = 0x134
BTN_Z           = 0x135
BTN_TL          = 0x136
BTN_TR          = 0x137
BTN_TL2         = 0x138
BTN_TR2         = 0x139
BTN_SELECT      = 0x13a
BTN_START       = 0x13b
BTN_MODE        = 0x13c
BTN_THUMBL      = 0x13d
BTN_THUMBR      = 0x13e

BTN_DIGI        = 0x140
BTN_TOOL_PEN    = 0x140
BTN_TOOL_RUBBER = 0x141
BTN_TOOL_BRUSH  = 0x142
BTN_TOOL_PENCIL = 0x143
BTN_TOOL_AIRBRUSH = 0x144
BTN_TOOL_FINGER = 0x145
BTN_TOOL_MOUSE  = 0x146
BTN_TOOL_LENS   = 0x147
BTN_TOOL_QUINTTAP = 0x148  # Five fingers on trackpad
BTN_TOUCH       = 0x14a
BTN_STYLUS      = 0x14b
BTN_STYLUS2     = 0x14c
BTN_TOOL_DOUBLETAP = 0x14d
BTN_TOOL_TRIPLETAP = 0x14e
BTN_TOOL_QUADTAP = 0x14f   # Four fingers on trackpad

BTN_WHEEL       = 0x150
BTN_GEAR_DOWN   = 0x150
BTN_GEAR_UP     = 0x151


KEY_OK          = 0x160
KEY_SELECT      = 0x161
KEY_GOTO        = 0x162
KEY_CLEAR       = 0x163
KEY_POWER2      = 0x164
KEY_OPTION      = 0x165
KEY_INFO        = 0x166   #AL OEM Features/Tips/Tutorial
KEY_TIME        = 0x167
KEY_VENDOR      = 0x168
KEY_ARCHIVE     = 0x169
KEY_PROGRAM     = 0x16a   # Media Select Program Guide
KEY_CHANNEL     = 0x16b
KEY_FAVORITES   = 0x16c
KEY_EPG         = 0x16d
KEY_PVR         = 0x16e   # Media Select Home
KEY_MHP         = 0x16f
KEY_LANGUAGE    = 0x170
KEY_TITLE       = 0x171
KEY_SUBTITLE    = 0x172
KEY_ANGLE       = 0x173
KEY_ZOOM        = 0x174
KEY_MODE        = 0x175
KEY_KEYBOARD    = 0x176
KEY_SCREEN      = 0x177
KEY_PC          = 0x178   # Media Select Computer
KEY_TV          = 0x179   # Media Select TV
KEY_TV2         = 0x17a   # Media Select Cable
KEY_VCR         = 0x17b   # Media Select VCR
KEY_VCR2        = 0x17c   # VCR Plus
KEY_SAT         = 0x17d   # Media Select Satellite
KEY_SAT2        = 0x17e
KEY_CD          = 0x17f   # Media Select CD
KEY_TAPE        = 0x180   # Select Tape
KEY_RADIO       = 0x181
KEY_TUNER       = 0x182   # Media Select Tuner
KEY_PLAYER      = 0x183
KEY_TEXT        = 0x184
KEY_DVD         = 0x185   # Media Select DVD
KEY_AUX         = 0x186
KEY_MP3         = 0x187
KEY_AUDIO       = 0x188   # AL Audio Browser
KEY_VIDEO       = 0x189   # AL Movie Browser
KEY_DIRECTORY   = 0x18a
KEY_LIST        = 0x18b
KEY_MEMO        = 0x18   # Media Select Messages
KEY_CALENDAR    = 0x18d
KEY_RED         = 0x18e
KEY_GREEN       = 0x18f
KEY_YELLOW      = 0x190
KEY_BLUE        = 0x191
KEY_CHANNELUP   = 0x192   # Channel Increment
KEY_CHANNELDOWN = 0x193   # Channel Decrement
KEY_FIRST       = 0x194
KEY_LAST        = 0x195   # Recall Last
KEY_AB          = 0x196
KEY_NEXT        = 0x197
KEY_RESTART     = 0x198
KEY_SLOW        = 0x199
KEY_SHUFFLE     = 0x19a
KEY_BREAK       = 0x19b
KEY_PREVIOUS    = 0x19c
KEY_DIGITS      = 0x19d
KEY_TEEN        = 0x19e
KEY_TWEN        = 0x19f
KEY_VIDEOPHONE  = 0x1a0   # Media Select Video Phone
KEY_GAMES       = 0x1a1   # Media Select Games
KEY_ZOOMIN      = 0x1a2   # AC Zoom In
KEY_ZOOMOUT     = 0x1a3   # AC Zoom Out
KEY_ZOOMRESET   = 0x1a4   # AC Zoom
KEY_WORDPROCESSOR = 0x1a5   # AL Word Processor
KEY_EDITOR      = 0x1a6   # AL Text Editor
KEY_SPREADSHEET = 0x1a7   # AL Spreadsheet
KEY_GRAPHICSEDITOR = 0x1a8   # AL Graphics Editor
KEY_PRESENTATION = 0x1a9   # AL Presentation App
KEY_DATABASE    = 0x1aa   # AL Database App
KEY_NEWS        = 0x1ab   # AL Newsreader
KEY_VOICEMAIL   = 0x1ac   # AL Voicemail
KEY_ADDRESSBOOK = 0x1ad   # AL Contacts/Address Book
KEY_MESSENGER   = 0x1ae   # AL Instant Messaging
KEY_DISPLAYTOGGLE = 0x1af   # Turn display (LCD) on and off
KEY_SPELLCHECK  = 0x1b0   # AL Spell Check
KEY_LOGOFF      = 0x1b1   #* AL Logoff

KEY_DOLLAR      = 0x1b2
KEY_EURO        = 0x1b3

KEY_FRAMEBACK   = 0x1b4   # Consumer - transport controls
KEY_FRAMEFORWARD = 0x1b5
KEY_CONTEXT_MENU = 0x1b6   # GenDesc - system context menu
KEY_MEDIA_REPEAT = 0x1b7   # Consumer - transport control
KEY_10CHANNELSUP = 0x1b8   # 10 channels up (10+)
KEY_10CHANNELSDOWN = 0x1b9   # 10 channels down (10-)
KEY_IMAGES       = 0x1ba   # AL Image Browser

KEY_DEL_EOL      = 0x1c0
KEY_DEL_EOS      = 0x1c1
KEY_INS_LINE     = 0x1c2
KEY_DEL_LINE     = 0x1c3

KEY_FN           = 0x1d0
KEY_FN_ESC       = 0x1d1
KEY_FN_F1        = 0x1d2
KEY_FN_F2        = 0x1d3
KEY_FN_F3        = 0x1d4
KEY_FN_F4        = 0x1d5
KEY_FN_F5        = 0x1d6
KEY_FN_F6        = 0x1d7
KEY_FN_F7        = 0x1d8
KEY_FN_F8        = 0x1d9
KEY_FN_F9        = 0x1da
KEY_FN_F10       = 0x1db
KEY_FN_F11       = 0x1dc
KEY_FN_F12       = 0x1dd
KEY_FN_1         = 0x1de
KEY_FN_2         = 0x1df
KEY_FN_D         = 0x1e0
KEY_FN_E         = 0x1e1
KEY_FN_F         = 0x1e2
KEY_FN_S         = 0x1e3
KEY_FN_B         = 0x1e4

KEY_BRL_DOT1     = 0x1f1
KEY_BRL_DOT2     = 0x1f2
KEY_BRL_DOT3     = 0x1f3
KEY_BRL_DOT4     = 0x1f4
KEY_BRL_DOT5     = 0x1f5
KEY_BRL_DOT6     = 0x1f6
KEY_BRL_DOT7     = 0x1f7
KEY_BRL_DOT8     = 0x1f8
KEY_BRL_DOT9     = 0x1f9
KEY_BRL_DOT10    = 0x1fa

KEY_NUMERIC_0    = 0x200   # used by phones, remote controls,
KEY_NUMERIC_1    = 0x201   # and other keypads
KEY_NUMERIC_2    = 0x202
KEY_NUMERIC_3    = 0x203
KEY_NUMERIC_4    = 0x204
KEY_NUMERIC_5    = 0x205
KEY_NUMERIC_6    = 0x206
KEY_NUMERIC_7    = 0x207
KEY_NUMERIC_8    = 0x208
KEY_NUMERIC_9    = 0x209
KEY_NUMERIC_STAR = 0x20a
KEY_NUMERIC_POUND = 0x20b

KEY_CAMERA_FOCUS = 0x210
KEY_WPS_BUTTON   = 0x211   # WiFi Protected Setup key

KEY_TOUCHPAD_TOGGLE = 0x212   # Request switch touchpad on or off
KEY_TOUCHPAD_ON  = 0x213
KEY_TOUCHPAD_OFF = 0x214

KEY_CAMERA_ZOOMIN = 0x215
KEY_CAMERA_ZOOMOUT = 0x216
KEY_CAMERA_UP    = 0x217
KEY_CAMERA_DOWN  = 0x218
KEY_CAMERA_LEFT  = 0x219
KEY_CAMERA_RIGHT = 0x21a

BTN_TRIGGER_HAPPY  = 0x2c0
BTN_TRIGGER_HAPPY1 = 0x2c0
BTN_TRIGGER_HAPPY2 = 0x2c1
BTN_TRIGGER_HAPPY3 = 0x2c2
BTN_TRIGGER_HAPPY4 = 0x2c3
BTN_TRIGGER_HAPPY5 = 0x2c4
BTN_TRIGGER_HAPPY6 = 0x2c5
BTN_TRIGGER_HAPPY7 = 0x2c6
BTN_TRIGGER_HAPPY8 = 0x2c7
BTN_TRIGGER_HAPPY9 = 0x2c8
BTN_TRIGGER_HAPPY10 = 0x2c9
BTN_TRIGGER_HAPPY11 = 0x2ca
BTN_TRIGGER_HAPPY12 = 0x2cb
BTN_TRIGGER_HAPPY13 = 0x2cc
BTN_TRIGGER_HAPPY14 = 0x2cd
BTN_TRIGGER_HAPPY15 = 0x2ce
BTN_TRIGGER_HAPPY16 = 0x2cf
BTN_TRIGGER_HAPPY17 = 0x2d0
BTN_TRIGGER_HAPPY18 = 0x2d1
BTN_TRIGGER_HAPPY19 = 0x2d2
BTN_TRIGGER_HAPPY20 = 0x2d3
BTN_TRIGGER_HAPPY21 = 0x2d4
BTN_TRIGGER_HAPPY22 = 0x2d5
BTN_TRIGGER_HAPPY23 = 0x2d6
BTN_TRIGGER_HAPPY24 = 0x2d7
BTN_TRIGGER_HAPPY25 = 0x2d8
BTN_TRIGGER_HAPPY26 = 0x2d9
BTN_TRIGGER_HAPPY27 = 0x2da
BTN_TRIGGER_HAPPY28 = 0x2db
BTN_TRIGGER_HAPPY29 = 0x2dc
BTN_TRIGGER_HAPPY30 = 0x2dd
BTN_TRIGGER_HAPPY31 = 0x2de
BTN_TRIGGER_HAPPY32 = 0x2df
BTN_TRIGGER_HAPPY33 = 0x2e0
BTN_TRIGGER_HAPPY34 = 0x2e1
BTN_TRIGGER_HAPPY35 = 0x2e2
BTN_TRIGGER_HAPPY36 = 0x2e3
BTN_TRIGGER_HAPPY37 = 0x2e4
BTN_TRIGGER_HAPPY38 = 0x2e5
BTN_TRIGGER_HAPPY39 = 0x2e6
BTN_TRIGGER_HAPPY40 = 0x2e7


# We avoid low common keys in module aliases so they don't get huge
#KEY_MIN_INTERESTING = KEY_MUTE
KEY_MAX             = 0x2ff
KEY_CNT             = (KEY_MAX + 1)

# Relative axes
REL_X               = 0x00
REL_Y               = 0x01
REL_Z               = 0x02
REL_RX              = 0x03
REL_RY              = 0x04
REL_RZ              = 0x05
REL_HWHEEL          = 0x06
REL_DIAL            = 0x07
REL_WHEEL           = 0x08
REL_MISC            = 0x09
REL_RESERVED        = 0x0a
REL_WHEEL_HI_RES    = 0x0b
REL_HWHEEL_HI_RES   = 0x0c
REL_MAX             = 0x0f
REL_CNT             = (REL_MAX + 1)

# Absolute axes
ABS_X               = 0x00
ABS_Y               = 0x01
ABS_Z               = 0x02
ABS_RX              = 0x03
ABS_RY              = 0x04
ABS_RZ              = 0x05
ABS_THROTTLE        = 0x06
ABS_RUDDER          = 0x07
ABS_WHEEL           = 0x08
ABS_GAS             = 0x09
ABS_BRAKE           = 0x0a
ABS_HAT0X           = 0x10
ABS_HAT0Y           = 0x11
ABS_HAT1X           = 0x12
ABS_HAT1Y           = 0x13
ABS_HAT2X           = 0x14
ABS_HAT2Y           = 0x15
ABS_HAT3X           = 0x16
ABS_HAT3Y           = 0x17
ABS_PRESSURE        = 0x18
ABS_DISTANCE        = 0x19
ABS_TILT_X          = 0x1a
ABS_TILT_Y          = 0x1b
ABS_TOOL_WIDTH      = 0x1c

ABS_VOLUME          = 0x20

ABS_MISC            = 0x28

ABS_MT_SLOT         = 0x2f  # MT slot being modified
ABS_MT_TOUCH_MAJOR  = 0x30  # Major axis of touching ellipse
ABS_MT_TOUCH_MINOR  = 0x31  # Minor axis (omit if circular)
ABS_MT_WIDTH_MAJOR  = 0x32  # Major axis of approaching ellipse
ABS_MT_WIDTH_MINOR  = 0x33  # Minor axis (omit if circular)
ABS_MT_ORIENTATION  = 0x34  # Ellipse orientation
ABS_MT_POSITION_X   = 0x35  # Center X ellipse position
ABS_MT_POSITION_Y   = 0x36  # Center Y ellipse position
ABS_MT_TOOL_TYPE    = 0x37  # Type of touching device
ABS_MT_BLOB_ID      = 0x38  # Group a set of packets as a blob
ABS_MT_TRACKING_ID  = 0x39  # Unique ID of initiated contact
ABS_MT_PRESSURE     = 0x3a  # Pressure on contact area
ABS_MT_DISTANCE     = 0x3b  # Contact hover distance

ABS_MT_FIRST        = ABS_MT_TOUCH_MAJOR
ABS_MT_LAST         = ABS_MT_DISTANCE
ABS_MT_RANGE        = list(range(ABS_MT_FIRST, ABS_MT_LAST+1))

ABS_MAX             = 0x3f
ABS_CNT             = (ABS_MAX + 1)

# Switch events
SW_LID                  = 0x00  # set = lid shut
SW_TABLET_MODE          = 0x01  # set = tablet mode
SW_HEADPHONE_INSERT     = 0x02  # set = inserted
SW_RFKILL_ALL           = 0x03  # rfkill main switch, type "any"
                                # set = radio enabled
SW_RADIO = SW_RFKILL_ALL        # deprecated
SW_MICROPHONE_INSERT    = 0x04  # set = inserted
SW_DOCK                 = 0x05  # set = plugged into dock
SW_LINEOUT_INSERT       = 0x06  # set = inserted
SW_JACK_PHYSICAL_INSERT = 0x07  # set = mechanical switch set
SW_VIDEOOUT_INSERT      = 0x08  # set = inserted
SW_CAMERA_LENS_COVER    = 0x09  # set = lens covered
SW_KEYPAD_SLIDE         = 0x0a  # set = keypad slide out
SW_FRONT_PROXIMITY      = 0x0b  # set = front proximity sensor active
SW_ROTATE_LOCK          = 0x0c  # set = rotate locked/disabled
SW_MAX                  = 0x0f
SW_CNT                  = (SW_MAX + 1)

# Misc events
MSC_SERIAL      = 0x00
MSC_PULSELED    = 0x01
MSC_GESTURE     = 0x02
MSC_RAW         = 0x03
MSC_SCAN        = 0x04
MSC_MAX         = 0x07
MSC_CNT         = (MSC_MAX + 1)

# LEDs
LED_NUML        = 0x00
LED_CAPSL       = 0x01
LED_SCROLLL     = 0x02
LED_COMPOSE     = 0x03
LED_KANA        = 0x04
LED_SLEEP       = 0x05
LED_SUSPEND     = 0x06
LED_MUTE        = 0x07
LED_MISC        = 0x08
LED_MAIL        = 0x09
LED_CHARGING    = 0x0a
LED_MAX         = 0x0f
LED_CNT         = (LED_MAX + 1)

# Autorepeat values
REP_DELAY       = 0x00
REP_PERIOD      = 0x01
REP_MAX         = 0x01
REP_CNT         = (REP_MAX + 1)

# Sounds
SND_CLICK       = 0x00
SND_BELL        = 0x01
SND_TONE        = 0x02
SND_MAX         = 0x07
SND_CNT         = (SND_MAX + 1)

# IDs.
ID_BUS          = 0
ID_VENDOR       = 1
ID_PRODUCT      = 2
ID_VERSION      = 3

BUS_PCI         = 0x01
BUS_ISAPNP      = 0x02
BUS_USB         = 0x03
BUS_HIL         = 0x04
BUS_BLUETOOTH   = 0x05
BUS_VIRTUAL     = 0x06

BUS_ISA         = 0x10
BUS_I8042       = 0x11
BUS_XTKBD       = 0x12
BUS_RS232       = 0x13
BUS_GAMEPORT    = 0x14
BUS_PARPORT     = 0x15
BUS_AMIGA       = 0x16
BUS_ADB         = 0x17
BUS_I2C         = 0x18
BUS_HOST        = 0x19
BUS_GSC         = 0x1A
BUS_ATARI       = 0x1B
BUS_SPI         = 0x1C

# MT_TOOL types
MT_TOOL_FINGER  = 0
MT_TOOL_PEN     = 1
MT_TOOL_MAX     = 1

# Values describing the status of a force-feedback effect
FF_STATUS_STOPPED   = 0x00
FF_STATUS_PLAYING   = 0x01
FF_STATUS_MAX       = 0x01
FF_STATUS_CNT       = (FF_STATUS_MAX + 1)

# Structures used in ioctls to upload effects to a device
# They are pieces of a bigger structure (called ff_effect)

# All duration values are expressed in ms. Values above 32767 ms (0x7fff)
# should not be used and have unspecified results.

"""
 * struct ff_replay - defines scheduling of the force-feedback effect
 * @length: duration of the effect
 * @delay: delay before effect should start playing
struct ff_replay {
  __u16 length;
  __u16 delay;
};
"""

"""
 * struct ff_trigger - defines what triggers the force-feedback effect
 * @button: number of the button triggering the effect
 * @interval: controls how soon the effect can be re-triggered
struct ff_trigger {
  __u16 button;
  __u16 interval;
};
"""

"""
 * struct ff_envelope - generic force-feedback effect envelope
 * @attack_length: duration of the attack (ms)
 * @attack_level: level at the beginning of the attack
 * @fade_length: duration of fade (ms)
 * @fade_level: level at the end of fade
 *
 * The @attack_level and @fade_level are absolute values; when applying
 * envelope force-feedback core will convert to positive/negative
 * value based on polarity of the default level of the effect.
 * Valid range for the attack and fade levels is 0x0000 - 0x7fff
struct ff_envelope {
  __u16 attack_length;
  __u16 attack_level;
  __u16 fade_length;
  __u16 fade_level;
};
"""

"""
 * struct ff_constant_effect - params of a constant force-feedback effect
 * @level: strength of the effect; may be negative
 * @envelope: envelope data
struct ff_constant_effect {
  __s16 level;
  struct ff_envelope envelope;
};
"""

"""
 * struct ff_ramp_effect - params of a ramp force-feedback effect
 * @start_level: beginning strength of the effect; may be negative
 * @end_level: final strength of the effect; may be negative
 * @envelope: envelope data
struct ff_ramp_effect {
  __s16 start_level;
  __s16 end_level;
  struct ff_envelope envelope;
};
"""

"""
 * struct ff_condition_effect - spring or friction force-feedback effect
 * @right_saturation: maximum level when joystick moved all way to the right
 * @left_saturation: same for the left side
 * @right_coeff: controls how fast the force grows when the joystick moves
 *  to the right
 * @left_coeff: same for the left side
 * @deadband: size of the dead zone, where no force is produced
 * @center: position of the dead zone
struct ff_condition_effect {
  __u16 right_saturation;
  __u16 left_saturation;

  __s16 right_coeff;
  __s16 left_coeff;

  __u16 deadband;
  __s16 center;
};
"""


"""
 * struct ff_periodic_effect - params of a periodic force-feedback effect
 * @waveform: kind of the effect (wave)
 * @period: period of the wave (ms)
 * @magnitude: peak value
 * @offset: mean value of the wave (roughly)
 * @phase: 'horizontal' shift
 * @envelope: envelope data
 * @custom_len: number of samples (FF_CUSTOM only)
 * @custom_data: buffer of samples (FF_CUSTOM only)
 *
 * Known waveforms - FF_SQUARE, FF_TRIANGLE, FF_SINE, FF_SAW_UP,
 * FF_SAW_DOWN, FF_CUSTOM. The exact syntax FF_CUSTOM is undefined
 * for the time being as no driver supports it yet.
 *
 * Note: the data pointed by custom_data is copied by the driver.
 * You can therefore dispose of the memory after the upload/update.
struct ff_periodic_effect {
  __u16 waveform;
  __u16 period;
  __s16 magnitude;
  __s16 offset;
  __u16 phase;

  struct ff_envelope envelope;

  __u32 custom_len;
  __s16 __user *custom_data;
};
"""

"""
 * struct ff_rumble_effect - params of a periodic force-feedback effect
 * @strong_magnitude: magnitude of the heavy motor
 * @weak_magnitude: magnitude of the light one
 *
 * Some rumble pads have two motors of different weight. Strong_magnitude
 * represents the magnitude of the vibration generated by the heavy one.
struct ff_rumble_effect {
  __u16 strong_magnitude;
  __u16 weak_magnitude;
};
"""

"""
 * struct ff_effect - defines force feedback effect
 * @type: type of the effect (FF_CONSTANT, FF_PERIODIC, FF_RAMP, FF_SPRING,
 *  FF_FRICTION, FF_DAMPER, FF_RUMBLE, FF_INERTIA, or FF_CUSTOM)
 * @id: an unique id assigned to an effect
 * @direction: direction of the effect
 * @trigger: trigger conditions (struct ff_trigger)
 * @replay: scheduling of the effect (struct ff_replay)
 * @u: effect-specific structure (one of ff_constant_effect, ff_ramp_effect,
 *  ff_periodic_effect, ff_condition_effect, ff_rumble_effect) further
 *  defining effect parameters
 *
 * This structure is sent through ioctl from the application to the driver.
 * To create a new effect application should set its @id to -1; the kernel
 * will return assigned @id which can later be used to update or delete
 * this effect.
 *
 * Direction of the effect is encoded as follows:
 *  0 deg -> 0x0000 (down)
 *  90 deg -> 0x4000 (left)
 *  180 deg -> 0x8000 (up)
 *  270 deg -> 0xC000 (right)
struct ff_effect {
  __u16 type;
  __s16 id;
  __u16 direction;
  struct ff_trigger trigger;
  struct ff_replay replay;

  union {
    struct ff_constant_effect constant;
    struct ff_ramp_effect ramp;
    struct ff_periodic_effect periodic;
    struct ff_condition_effect condition[2]; /* One for each axis */
    struct ff_rumble_effect rumble;
  } u;
};
"""

# Force feedback effect types
FF_RUMBLE       = 0x50
FF_PERIODIC     = 0x51
FF_CONSTANT     = 0x52
FF_SPRING       = 0x53
FF_FRICTION     = 0x54
FF_DAMPER       = 0x55
FF_INERTIA      = 0x56
FF_RAMP         = 0x57

FF_EFFECT_MIN   = FF_RUMBLE
FF_EFFECT_MAX   = FF_RAMP

# Force feedback periodic effect types
FF_SQUARE       = 0x58
FF_TRIANGLE     = 0x59
FF_SINE         = 0x5a
FF_SAW_UP       = 0x5b
FF_SAW_DOWN     = 0x5c
FF_CUSTOM       = 0x5d

FF_WAVEFORM_MIN = FF_SQUARE
FF_WAVEFORM_MAX = FF_CUSTOM

# Set ff device properties
FF_GAIN         = 0x60
FF_AUTOCENTER   = 0x61

FF_MAX          = 0x7f
FF_CNT          = (FF_MAX + 1)


"""
The following constants, functions and dicts are not part of the original linux
input header file.  They are included here to make it easier to use the linux
input subsystem from python scripts.
"""

BITS_PER_WORD = 8

def NBITS(x):
    return ((x - 1) // BITS_PER_WORD) + 1

def OFFSET(x):
    return (x % BITS_PER_WORD)

def BIT(x):
    return (1 << OFFSET(x))

def INDEX(x):
    return (x // BITS_PER_WORD)

def test_bit(b, a):
    return ((a[INDEX(b)] >> OFFSET(b)) & 1)

EV_TYPES = {
    EV_SYN : 'EV_SYN',
    EV_KEY : 'EV_KEY',
    EV_REL : 'EV_REL',
    EV_ABS : 'EV_ABS',
    EV_MSC : 'EV_MSC',
    EV_SW  : 'EV_SW',
    EV_LED : 'EV_LED',
    EV_SND : 'EV_SND',
    EV_REP : 'EV_REP',
    EV_FF  : 'EV_FF',
    EV_PWR : 'EV_PWR',
    EV_FF_STATUS : 'EV_FF_STATUS'
}

EV_SIZES = {
    EV_KEY : KEY_CNT,
    EV_REL : REL_CNT,
    EV_ABS : ABS_CNT,
    EV_MSC : MSC_CNT,
    EV_SW  : SW_CNT,
    EV_LED : LED_CNT,
    EV_SND : SND_CNT,
    EV_REP : REP_CNT,
    EV_FF  : FF_CNT,
    EV_FF_STATUS : FF_STATUS_CNT
}

EV_STRINGS = {
    # Keys (only buttons, for now)
    EV_KEY: {
        BTN_0           : '0',
        BTN_1           : '1',
        BTN_2           : '0',
        BTN_3           : '3',
        BTN_4           : '4',
        BTN_5           : '5',
        BTN_6           : '6',
        BTN_7           : '7',
        BTN_8           : '8',
        BTN_9           : '9',
        BTN_LEFT        : 'LEFT',
        BTN_RIGHT       : 'RIGHT',
        BTN_MIDDLE      : 'MIDDLE',
        BTN_SIDE        : 'SIDE',
        BTN_EXTRA       : 'EXTRA',
        BTN_FORWARD     : 'FORWARD',
        BTN_BACK        : 'BACK',
        BTN_TASK        : 'TASK',
        BTN_TRIGGER     : 'TRIGGER',
        BTN_THUMB       : 'THUMB',
        BTN_THUMB2      : 'THUMB2',
        BTN_TOP         : 'TOP',
        BTN_TOP2        : 'TOP2',
        BTN_PINKIE      : 'PINKIE',
        BTN_BASE        : 'BASE',
        BTN_BASE2       : 'BASE2',
        BTN_BASE3       : 'BASE3',
        BTN_BASE4       : 'BASE4',
        BTN_BASE5       : 'BASE5',
        BTN_BASE6       : 'BASE6',
        BTN_DEAD        : 'DEAD',
        BTN_A           : 'A',
        BTN_B           : 'B',
        BTN_C           : 'C',
        BTN_X           : 'X',
        BTN_Y           : 'Y',
        BTN_Z           : 'Z',
        BTN_TL          : 'TL',
        BTN_TR          : 'TR',
        BTN_TL2         : 'TL2',
        BTN_TR2         : 'TR2',
        BTN_SELECT      : 'SELECT',
        BTN_START       : 'START',
        BTN_MODE        : 'MODE',
        BTN_THUMBL      : 'THUMBL',
        BTN_THUMBR      : 'THUMBR',
        BTN_TOOL_PEN    : 'TOOL_PEN',
        BTN_TOOL_RUBBER : 'TOOL_RUBBER',
        BTN_TOOL_BRUSH  : 'TOOL_BRUSH',
        BTN_TOOL_PENCIL : 'TOOL_PENCIL',
        BTN_TOOL_AIRBRUSH : 'TOOL_AIRBRUSH',
        BTN_TOOL_FINGER : 'TOOL_FINGER',
        BTN_TOOL_MOUSE  : 'TOOL_MOUSE',
        BTN_TOOL_LENS   : 'TOOL_LENS',
        BTN_TOOL_QUINTTAP : 'TOOL_QUINTTAP',
        BTN_TOUCH       : 'TOUCH',
        BTN_STYLUS      : 'STYLUS',
        BTN_STYLUS2     : 'STYLUS2',
        BTN_TOOL_DOUBLETAP : 'TOOL_DOUBLETAP',
        BTN_TOOL_TRIPLETAP : 'TOOL_TRIPLETAP',
        BTN_TOOL_QUADTAP : 'TOOL_QUADTAP',
        BTN_GEAR_DOWN   : 'TOOL_GEAR_DOWN',
        BTN_GEAR_UP     : 'TOOL_GEAR_UP',
    },

    # Relative axes
    EV_REL: {
        REL_X           : 'X',
        REL_Y           : 'Y',
        REL_Z           : 'Z',
        REL_RX          : 'RX',
        REL_RY          : 'RY',
        REL_RZ          : 'RZ',
        REL_HWHEEL      : 'HWHEEL',
        REL_DIAL        : 'DIAL',
        REL_WHEEL       : 'WHEEL',
        REL_MISC        : 'MISC',
    },

    # Absolute axes
    EV_ABS: {
        ABS_X               : 'X',
        ABS_Y               : 'Y',
        ABS_Z               : 'Z',
        ABS_RX              : 'RX',
        ABS_RY              : 'RY',
        ABS_RZ              : 'RZ',
        ABS_THROTTLE        : 'THROTTLE',
        ABS_RUDDER          : 'RUDDER',
        ABS_WHEEL           : 'WHEEL',
        ABS_GAS             : 'GAS',
        ABS_BRAKE           : 'BRAKE',
        ABS_HAT0X           : 'HAT0X',
        ABS_HAT0Y           : 'HAT0Y',
        ABS_HAT1X           : 'HAT1X',
        ABS_HAT1Y           : 'HAT1Y',
        ABS_HAT2X           : 'HAT2X',
        ABS_HAT2Y           : 'HAT2Y',
        ABS_HAT3X           : 'HAT3X',
        ABS_HAT3Y           : 'HAT3Y',
        ABS_PRESSURE        : 'PRESSURE',
        ABS_DISTANCE        : 'DISTANCE',
        ABS_TILT_X          : 'TILT_X',
        ABS_TILT_Y          : 'TILT_Y',
        ABS_TOOL_WIDTH      : 'TOOL_WIDTH',
        ABS_VOLUME          : 'VOLUME',
        ABS_MISC            : 'MISC',
        ABS_MT_SLOT         : 'MT_SLOT',
        ABS_MT_TOUCH_MAJOR  : 'MT_TOUCH_MAJOR',
        ABS_MT_TOUCH_MINOR  : 'MT_TOUCH_MINOR',
        ABS_MT_WIDTH_MAJOR  : 'MT_WIDTH_MAJOR',
        ABS_MT_WIDTH_MINOR  : 'MT_WIDTH_MINOR',
        ABS_MT_ORIENTATION  : 'MT_ORIENTATION',
        ABS_MT_POSITION_X   : 'MT_POSITION_X',
        ABS_MT_POSITION_Y   : 'MT_POSITION_Y',
        ABS_MT_TOOL_TYPE    : 'MT_TOOL_TYPE',
        ABS_MT_BLOB_ID      : 'MT_BLOB_ID',
        ABS_MT_TRACKING_ID  : 'MT_TRACKING_ID',
        ABS_MT_PRESSURE     : 'MT_PRESSURE',
        ABS_MT_DISTANCE     : 'MT_DISTANCE'
    },

    # Switches
    EV_SW: {
        SW_LID                  : 'LID',
        SW_TABLET_MODE          : 'TABLET_MODE',
        SW_HEADPHONE_INSERT     : 'HEADPHONE_INSERT',
        SW_RFKILL_ALL           : 'RFKILL_ALL',
        SW_MICROPHONE_INSERT    : 'MICROPHONE_INSERT',
        SW_DOCK                 : 'DOCK',
        SW_LINEOUT_INSERT       : 'LINEOUT_INSERT',
        SW_JACK_PHYSICAL_INSERT : 'JACK_PHYSICAL_INSERT',
        SW_VIDEOOUT_INSERT      : 'VIDEOOUT_INSERT',
        SW_CAMERA_LENS_COVER    : 'CAMERA_LENS_COVER',
        SW_KEYPAD_SLIDE         : 'KEYPAD_SLIDE',
        SW_FRONT_PROXIMITY      : 'FRONT_PROXIMITY',
        SW_ROTATE_LOCK          : 'ROTATE_LOCK',
    },

    # Misc events
    EV_MSC: {
        MSC_SERIAL      : 'SERIAL',
        MSC_PULSELED    : 'PULSELED',
        MSC_GESTURE     : 'GESTURE',
        MSC_RAW         : 'RAW',
        MSC_SCAN        : 'SCAN',
    },

    # LEDs
    EV_LED: {
        LED_NUML        : 'NUML',
        LED_CAPSL       : 'CAPSL',
        LED_SCROLLL     : 'SCROLLL',
        LED_COMPOSE     : 'COMPOSE',
        LED_KANA        : 'KANA',
        LED_SLEEP       : 'SLEEP',
        LED_SUSPEND     : 'SLEEP',
        LED_MUTE        : 'SLEEP',
        LED_MISC        : 'SLEEP',
        LED_MAIL        : 'SLEEP',
        LED_CHARGING    : 'SLEEP',
    },

    # Autorepeat values
    EV_REP: {
        REP_DELAY       : 'DELAY',
        REP_PERIOD      : 'PERIOD',
    },

    # Sounds
    EV_SND: {
        SND_CLICK       : 'CLICK',
        SND_BELL        : 'BELL'
    }
}
