# 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 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 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_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        = 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 master 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_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'
    }
}
