1*9c5db199SXin Li# Lint as: python2, python3 2*9c5db199SXin Li# Copyright (c) 2011 The Chromium OS Authors. All rights reserved. 3*9c5db199SXin Li# Use of this source code is governed by a BSD-style license that can be 4*9c5db199SXin Li# found in the LICENSE file. 5*9c5db199SXin Li 6*9c5db199SXin Li# Description: 7*9c5db199SXin Li# 8*9c5db199SXin Li# Python version of include/linux/input.h 9*9c5db199SXin Li# as of kernel v2.6.39 10*9c5db199SXin Li 11*9c5db199SXin Lifrom __future__ import division 12*9c5db199SXin Lifrom __future__ import print_function 13*9c5db199SXin Lifrom six.moves import range 14*9c5db199SXin Li 15*9c5db199SXin Li# Try to import from the autotest_lib structure. If it fails try the default. 16*9c5db199SXin Li# If this script was run outside of autotest the "except" would be the flow. 17*9c5db199SXin Li# If run within, the "try" is the flow. 18*9c5db199SXin Litry: 19*9c5db199SXin Li from autotest_lib.client.bin.input.linux_ioctl import * 20*9c5db199SXin Liexcept ImportError: 21*9c5db199SXin Li from linux_ioctl import * 22*9c5db199SXin Li 23*9c5db199SXin Li# The event structure itself 24*9c5db199SXin Li# struct input_event { 25*9c5db199SXin Li# struct timeval time; 26*9c5db199SXin Li# __u16 type; 27*9c5db199SXin Li# __u16 code; 28*9c5db199SXin Li# __s32 value; 29*9c5db199SXin Li# }; 30*9c5db199SXin Li# 31*9c5db199SXin Li# struct timeval { 32*9c5db199SXin Li# __kernel_time_t tv_sec; /* seconds */ 33*9c5db199SXin Li# __kernel_suseconds_t tv_usec; /* microseconds */ 34*9c5db199SXin Li# }; 35*9c5db199SXin Liinput_event_t = 'LLHHi' 36*9c5db199SXin Li 37*9c5db199SXin Li 38*9c5db199SXin Li# Protocol version. 39*9c5db199SXin LiEV_VERSION = 0x010001 40*9c5db199SXin Li 41*9c5db199SXin Li# IOCTLs (0x00 - 0x7f) 42*9c5db199SXin Li 43*9c5db199SXin Li# struct input_id { 44*9c5db199SXin Li# __u16 bustype; 45*9c5db199SXin Li# __u16 vendor; 46*9c5db199SXin Li# __u16 product; 47*9c5db199SXin Li# __u16 version; 48*9c5db199SXin Li# }; 49*9c5db199SXin Liinput_id_t = 'HHHH' 50*9c5db199SXin Li 51*9c5db199SXin Li# struct input_absinfo - used by EVIOCGABS/EVIOCSABS ioctls 52*9c5db199SXin Li# @value: latest reported value for the axis. 53*9c5db199SXin Li# @minimum: specifies minimum value for the axis. 54*9c5db199SXin Li# @maximum: specifies maximum value for the axis. 55*9c5db199SXin Li# @fuzz: specifies fuzz value used to filter noise from the event stream. 56*9c5db199SXin Li# @flat: values within this value are reported as 0. 57*9c5db199SXin Li# @resolution: specifies resolution for the values reported for the axis. 58*9c5db199SXin Li# 59*9c5db199SXin Li# Note that input core does not clamp reported values to the 60*9c5db199SXin Li# [minimum, maximum] limits, such task is left to userspace. 61*9c5db199SXin Li# 62*9c5db199SXin Li# Resolution for main axes (ABS_X, ABS_Y, ABS_Z) is reported in 63*9c5db199SXin Li# units per millimeter (units/mm), resolution for rotational axes 64*9c5db199SXin Li# (ABS_RX, ABS_RY, ABS_RZ) is reported in units per radian. 65*9c5db199SXin Li# 66*9c5db199SXin Li# struct input_absinfo { 67*9c5db199SXin Li# __s32 value; 68*9c5db199SXin Li# __s32 minimum; 69*9c5db199SXin Li# __s32 maximum; 70*9c5db199SXin Li# __s32 fuzz; 71*9c5db199SXin Li# __s32 flat; 72*9c5db199SXin Li# __s32 resolution; 73*9c5db199SXin Li# }; 74*9c5db199SXin Liinput_absinfo_t = 'iiiiii' 75*9c5db199SXin Li 76*9c5db199SXin Li# struct input_keymap_entry - used by EVIOCGKEYCODE/EVIOCSKEYCODE ioctls 77*9c5db199SXin Li# @scancode: scancode represented in machine-endian form. 78*9c5db199SXin Li# @len: length of the scancode that resides in @scancode buffer. 79*9c5db199SXin Li# @index: index in the keymap, may be used instead of scancode 80*9c5db199SXin Li# @flags: allows to specify how kernel should handle the request. For 81*9c5db199SXin Li# example, setting INPUT_KEYMAP_BY_INDEX flag indicates that kernel 82*9c5db199SXin Li# should perform lookup in keymap by @index instead of @scancode 83*9c5db199SXin Li# @keycode: key code assigned to this scancode 84*9c5db199SXin Li# 85*9c5db199SXin Li# The structure is used to retrieve and modify keymap data. Users have 86*9c5db199SXin Li# option of performing lookup either by @scancode itself or by @index 87*9c5db199SXin Li# in keymap entry. EVIOCGKEYCODE will also return scancode or index 88*9c5db199SXin Li# (depending on which element was used to perform lookup). 89*9c5db199SXin Li# 90*9c5db199SXin Li# struct input_keymap_entry { 91*9c5db199SXin Li# __u8 flags; 92*9c5db199SXin Li# __u8 len; 93*9c5db199SXin Li# __u16 index; 94*9c5db199SXin Li# __u32 keycode; 95*9c5db199SXin Li# __u8 scancode[32]; 96*9c5db199SXin Li# }; 97*9c5db199SXin Liinput_keymap_entry_t = 'BBHI32B' 98*9c5db199SXin Li 99*9c5db199SXin LiEVIOCGVERSION = IOR('E', 0x01, 'i') # get driver version 100*9c5db199SXin LiEVIOCGID = IOR('E', 0x02, input_id_t) # get device ID 101*9c5db199SXin LiEVIOCGREP = IOR('E', 0x03, '2I') # get repeat settings 102*9c5db199SXin LiEVIOCSREP = IOW('E', 0x03, '2I') # set repeat settings 103*9c5db199SXin Li 104*9c5db199SXin LiEVIOCGKEYCODE = IOR('E', 0x04, '2I') # get keycode 105*9c5db199SXin LiEVIOCGKEYCODE_V2 = IOR('E', 0x04, input_keymap_entry_t) 106*9c5db199SXin LiEVIOCSKEYCODE = IOW('E', 0x04, '2I') # set keycode 107*9c5db199SXin LiEVIOCSKEYCODE_V2 = IOW('E', 0x04, input_keymap_entry_t) 108*9c5db199SXin Li 109*9c5db199SXin Lidef EVIOCGNAME(length): 110*9c5db199SXin Li return IOC(IOC_READ, 'E', 0x06, length) # get device name 111*9c5db199SXin Li 112*9c5db199SXin Lidef EVIOCGPHYS(length): 113*9c5db199SXin Li return IOC(IOC_READ, 'E', 0x07, length) # get physical location 114*9c5db199SXin Li 115*9c5db199SXin Lidef EVIOCGUNIQ(length): 116*9c5db199SXin Li return IOC(IOC_READ, 'E', 0x08, length) # get unique identifier 117*9c5db199SXin Li 118*9c5db199SXin Lidef EVIOCGPROP(length): 119*9c5db199SXin Li return IOC(IOC_READ, 'E', 0x09, length) # get device properties 120*9c5db199SXin Li 121*9c5db199SXin Lidef EVIOCGMTSLOTS(length): 122*9c5db199SXin Li return IOC(IOC_READ, 'E', 0x0a, length) # get mt slot values 123*9c5db199SXin Li 124*9c5db199SXin Lidef EVIOCGKEY(length): 125*9c5db199SXin Li return IOC(IOC_READ, 'E', 0x18, length) # get global key state 126*9c5db199SXin Li 127*9c5db199SXin Lidef EVIOCGLED(length): 128*9c5db199SXin Li return IOC(IOC_READ, 'E', 0x19, length) # get all LEDs 129*9c5db199SXin Li 130*9c5db199SXin Lidef EVIOCGSND(length): 131*9c5db199SXin Li return IOC(IOC_READ, 'E', 0x1a, length) # get all sounds status 132*9c5db199SXin Li 133*9c5db199SXin Lidef EVIOCGSW(length): 134*9c5db199SXin Li return IOC(IOC_READ, 'E', 0x1b, length) # get all switch states 135*9c5db199SXin Li 136*9c5db199SXin Lidef EVIOCGBIT(ev,length): 137*9c5db199SXin Li return IOC(IOC_READ, 'E', 0x20 + ev, length) # get event bits 138*9c5db199SXin Li 139*9c5db199SXin Lidef EVIOCGABS(axis): 140*9c5db199SXin Li return IOR('E', 0x40 + axis, input_absinfo_t) # get abs value/limits 141*9c5db199SXin Li 142*9c5db199SXin Lidef EVIOCSABS(axis): 143*9c5db199SXin Li return IOW('E', 0xc0 + axis, input_absinfo_t) # set abs value/limits 144*9c5db199SXin Li 145*9c5db199SXin Li# send a force effect to a force feedback device 146*9c5db199SXin Li""" TODO: Support force feedback. """ 147*9c5db199SXin Li 148*9c5db199SXin Li 149*9c5db199SXin Li#EVIOCSFF = IOW('E', 0x80, ff_effect_t) 150*9c5db199SXin Li# Erase a force effect 151*9c5db199SXin LiEVIOCRMFF = IOW('E', 0x81, 'i') 152*9c5db199SXin Li# Report number of effects playable at the same time 153*9c5db199SXin LiEVIOCGEFFECTS = IOR('E', 0x84, 'i') 154*9c5db199SXin Li# Grab/Release device 155*9c5db199SXin LiEVIOCGRAB = IOW('E', 0x90, 'i') 156*9c5db199SXin Li 157*9c5db199SXin Li# Device properties and quirks 158*9c5db199SXin LiINPUT_PROP_POINTER = 0x00 # needs a pointer 159*9c5db199SXin LiINPUT_PROP_DIRECT = 0x01 # direct input devices 160*9c5db199SXin LiINPUT_PROP_BUTTONPAD = 0x02 # has button(s) under pad 161*9c5db199SXin LiINPUT_PROP_SEMI_MT = 0x03 # touch rectangle only 162*9c5db199SXin Li 163*9c5db199SXin LiINPUT_PROP_MAX = 0x1f 164*9c5db199SXin LiINPUT_PROP_CNT = (INPUT_PROP_MAX + 1) 165*9c5db199SXin Li 166*9c5db199SXin Li# Event types 167*9c5db199SXin LiEV_SYN = 0x00 168*9c5db199SXin LiEV_KEY = 0x01 169*9c5db199SXin LiEV_REL = 0x02 170*9c5db199SXin LiEV_ABS = 0x03 171*9c5db199SXin LiEV_MSC = 0x04 172*9c5db199SXin LiEV_SW = 0x05 173*9c5db199SXin LiEV_LED = 0x11 174*9c5db199SXin LiEV_SND = 0x12 175*9c5db199SXin LiEV_REP = 0x14 176*9c5db199SXin LiEV_FF = 0x15 177*9c5db199SXin LiEV_PWR = 0x16 178*9c5db199SXin LiEV_FF_STATUS = 0x17 179*9c5db199SXin LiEV_MAX = 0x1f 180*9c5db199SXin LiEV_CNT = (EV_MAX + 1) 181*9c5db199SXin Li 182*9c5db199SXin Li# Synchronization events. 183*9c5db199SXin Li 184*9c5db199SXin LiSYN_REPORT = 0 185*9c5db199SXin LiSYN_CONFIG = 1 186*9c5db199SXin LiSYN_MT_REPORT = 2 187*9c5db199SXin LiSYN_DROPPED = 3 188*9c5db199SXin Li 189*9c5db199SXin Li""" 190*9c5db199SXin Li * Keys and buttons 191*9c5db199SXin Li * 192*9c5db199SXin Li * Most of the keys/buttons are modeled after USB HUT 1.12 193*9c5db199SXin Li * (see http://www.usb.org/developers/hidpage). 194*9c5db199SXin Li * Abbreviations in the comments: 195*9c5db199SXin Li * AC - Application Control 196*9c5db199SXin Li * AL - Application Launch Button 197*9c5db199SXin Li * SC - System Control 198*9c5db199SXin Li""" 199*9c5db199SXin Li 200*9c5db199SXin LiKEY_RESERVED = 0 201*9c5db199SXin LiKEY_ESC = 1 202*9c5db199SXin LiKEY_1 = 2 203*9c5db199SXin LiKEY_2 = 3 204*9c5db199SXin LiKEY_3 = 4 205*9c5db199SXin LiKEY_4 = 5 206*9c5db199SXin LiKEY_5 = 6 207*9c5db199SXin LiKEY_6 = 7 208*9c5db199SXin LiKEY_7 = 8 209*9c5db199SXin LiKEY_8 = 9 210*9c5db199SXin LiKEY_9 = 10 211*9c5db199SXin LiKEY_0 = 11 212*9c5db199SXin LiKEY_MINUS = 12 213*9c5db199SXin LiKEY_EQUAL = 13 214*9c5db199SXin LiKEY_BACKSPACE = 14 215*9c5db199SXin LiKEY_TAB = 15 216*9c5db199SXin LiKEY_Q = 16 217*9c5db199SXin LiKEY_W = 17 218*9c5db199SXin LiKEY_E = 18 219*9c5db199SXin LiKEY_R = 19 220*9c5db199SXin LiKEY_T = 20 221*9c5db199SXin LiKEY_Y = 21 222*9c5db199SXin LiKEY_U = 22 223*9c5db199SXin LiKEY_I = 23 224*9c5db199SXin LiKEY_O = 24 225*9c5db199SXin LiKEY_P = 25 226*9c5db199SXin LiKEY_LEFTBRACE = 26 227*9c5db199SXin LiKEY_RIGHTBRACE = 27 228*9c5db199SXin LiKEY_ENTER = 28 229*9c5db199SXin LiKEY_LEFTCTRL = 29 230*9c5db199SXin LiKEY_A = 30 231*9c5db199SXin LiKEY_S = 31 232*9c5db199SXin LiKEY_D = 32 233*9c5db199SXin LiKEY_F = 33 234*9c5db199SXin LiKEY_G = 34 235*9c5db199SXin LiKEY_H = 35 236*9c5db199SXin LiKEY_J = 36 237*9c5db199SXin LiKEY_K = 37 238*9c5db199SXin LiKEY_L = 38 239*9c5db199SXin LiKEY_SEMICOLON = 39 240*9c5db199SXin LiKEY_APOSTROPHE = 40 241*9c5db199SXin LiKEY_GRAVE = 41 242*9c5db199SXin LiKEY_LEFTSHIFT = 42 243*9c5db199SXin LiKEY_BACKSLASH = 43 244*9c5db199SXin LiKEY_Z = 44 245*9c5db199SXin LiKEY_X = 45 246*9c5db199SXin LiKEY_C = 46 247*9c5db199SXin LiKEY_V = 47 248*9c5db199SXin LiKEY_B = 48 249*9c5db199SXin LiKEY_N = 49 250*9c5db199SXin LiKEY_M = 50 251*9c5db199SXin LiKEY_COMMA = 51 252*9c5db199SXin LiKEY_DOT = 52 253*9c5db199SXin LiKEY_SLASH = 53 254*9c5db199SXin LiKEY_RIGHTSHIFT = 54 255*9c5db199SXin LiKEY_KPASTERISK = 55 256*9c5db199SXin LiKEY_LEFTALT = 56 257*9c5db199SXin LiKEY_SPACE = 57 258*9c5db199SXin LiKEY_CAPSLOCK = 58 259*9c5db199SXin LiKEY_F1 = 59 260*9c5db199SXin LiKEY_F2 = 60 261*9c5db199SXin LiKEY_F3 = 61 262*9c5db199SXin LiKEY_F4 = 62 263*9c5db199SXin LiKEY_F5 = 63 264*9c5db199SXin LiKEY_F6 = 64 265*9c5db199SXin LiKEY_F7 = 65 266*9c5db199SXin LiKEY_F8 = 66 267*9c5db199SXin LiKEY_F9 = 67 268*9c5db199SXin LiKEY_F10 = 68 269*9c5db199SXin LiKEY_NUMLOCK = 69 270*9c5db199SXin LiKEY_SCROLLLOCK = 70 271*9c5db199SXin LiKEY_KP7 = 71 272*9c5db199SXin LiKEY_KP8 = 72 273*9c5db199SXin LiKEY_KP9 = 73 274*9c5db199SXin LiKEY_KPMINUS = 74 275*9c5db199SXin LiKEY_KP4 = 75 276*9c5db199SXin LiKEY_KP5 = 76 277*9c5db199SXin LiKEY_KP6 = 77 278*9c5db199SXin LiKEY_KPPLUS = 78 279*9c5db199SXin LiKEY_KP1 = 79 280*9c5db199SXin LiKEY_KP2 = 80 281*9c5db199SXin LiKEY_KP3 = 81 282*9c5db199SXin LiKEY_KP0 = 82 283*9c5db199SXin LiKEY_KPDOT = 83 284*9c5db199SXin Li 285*9c5db199SXin LiKEY_ZENKAKUHANKAKU = 85 286*9c5db199SXin LiKEY_102ND = 86 287*9c5db199SXin LiKEY_F11 = 87 288*9c5db199SXin LiKEY_F12 = 88 289*9c5db199SXin LiKEY_RO = 89 290*9c5db199SXin LiKEY_KATAKANA = 90 291*9c5db199SXin LiKEY_HIRAGANA = 91 292*9c5db199SXin LiKEY_HENKAN = 92 293*9c5db199SXin LiKEY_KATAKANAHIRAGANA = 93 294*9c5db199SXin LiKEY_MUHENKAN = 94 295*9c5db199SXin LiKEY_KPJPCOMMA = 95 296*9c5db199SXin LiKEY_KPENTER = 96 297*9c5db199SXin LiKEY_RIGHTCTRL = 97 298*9c5db199SXin LiKEY_KPSLASH = 98 299*9c5db199SXin LiKEY_SYSRQ = 99 300*9c5db199SXin LiKEY_RIGHTALT = 100 301*9c5db199SXin LiKEY_LINEFEED = 101 302*9c5db199SXin LiKEY_HOME = 102 303*9c5db199SXin LiKEY_UP = 103 304*9c5db199SXin LiKEY_PAGEUP = 104 305*9c5db199SXin LiKEY_LEFT = 105 306*9c5db199SXin LiKEY_RIGHT = 106 307*9c5db199SXin LiKEY_END = 107 308*9c5db199SXin LiKEY_DOWN = 108 309*9c5db199SXin LiKEY_PAGEDOWN = 109 310*9c5db199SXin LiKEY_INSERT = 110 311*9c5db199SXin LiKEY_DELETE = 111 312*9c5db199SXin LiKEY_MACRO = 112 313*9c5db199SXin LiKEY_MUTE = 113 314*9c5db199SXin LiKEY_VOLUMEDOWN = 114 315*9c5db199SXin LiKEY_VOLUMEUP = 115 316*9c5db199SXin LiKEY_POWER = 116 # SC System Power Down 317*9c5db199SXin LiKEY_KPEQUAL = 117 318*9c5db199SXin LiKEY_KPPLUSMINUS = 118 319*9c5db199SXin LiKEY_PAUSE = 119 320*9c5db199SXin LiKEY_SCALE = 120 # AL Compiz Scale (Expose) 321*9c5db199SXin Li 322*9c5db199SXin LiKEY_KPCOMMA = 121 323*9c5db199SXin LiKEY_HANGEUL = 122 324*9c5db199SXin LiKEY_HANGUEL = KEY_HANGEUL 325*9c5db199SXin LiKEY_HANJA = 123 326*9c5db199SXin LiKEY_YEN = 124 327*9c5db199SXin LiKEY_LEFTMETA = 125 328*9c5db199SXin LiKEY_RIGHTMETA = 126 329*9c5db199SXin LiKEY_COMPOSE = 127 330*9c5db199SXin Li 331*9c5db199SXin LiKEY_STOP = 128 # AC Stop 332*9c5db199SXin LiKEY_AGAIN = 129 333*9c5db199SXin LiKEY_PROPS = 130 # AC Properties 334*9c5db199SXin LiKEY_UNDO = 131 # AC Undo 335*9c5db199SXin LiKEY_FRONT = 132 336*9c5db199SXin LiKEY_COPY = 133 # AC Copy 337*9c5db199SXin LiKEY_OPEN = 134 # AC Open 338*9c5db199SXin LiKEY_PASTE = 135 # AC Paste 339*9c5db199SXin LiKEY_FIND = 136 # AC Search 340*9c5db199SXin LiKEY_CUT = 137 # AC Cut 341*9c5db199SXin LiKEY_HELP = 138 # AL Integrated Help Center 342*9c5db199SXin LiKEY_MENU = 139 # Menu (show menu) 343*9c5db199SXin LiKEY_CALC = 140 # AL Calculator 344*9c5db199SXin LiKEY_SETUP = 141 345*9c5db199SXin LiKEY_SLEEP = 142 # SC System Sleep 346*9c5db199SXin LiKEY_WAKEUP = 143 # System Wake Up 347*9c5db199SXin LiKEY_FILE = 144 # AL Local Machine Browser 348*9c5db199SXin LiKEY_SENDFILE = 145 349*9c5db199SXin LiKEY_DELETEFILE = 146 350*9c5db199SXin LiKEY_XFER = 147 351*9c5db199SXin LiKEY_PROG1 = 148 352*9c5db199SXin LiKEY_PROG2 = 149 353*9c5db199SXin LiKEY_WWW = 150 # AL Internet Browser 354*9c5db199SXin LiKEY_MSDOS = 151 355*9c5db199SXin LiKEY_COFFEE = 152 # AL Terminal Lock/Screensaver 356*9c5db199SXin LiKEY_SCREENLOCK = KEY_COFFEE 357*9c5db199SXin LiKEY_DIRECTION = 153 358*9c5db199SXin LiKEY_CYCLEWINDOWS = 154 359*9c5db199SXin LiKEY_MAIL = 155 360*9c5db199SXin LiKEY_BOOKMARKS = 156 # AC Bookmarks 361*9c5db199SXin LiKEY_COMPUTER = 157 362*9c5db199SXin LiKEY_BACK = 158 # AC Back 363*9c5db199SXin LiKEY_FORWARD = 159 # AC Forward 364*9c5db199SXin LiKEY_CLOSECD = 160 365*9c5db199SXin LiKEY_EJECTCD = 161 366*9c5db199SXin LiKEY_EJECTCLOSECD = 162 367*9c5db199SXin LiKEY_NEXTSONG = 163 368*9c5db199SXin LiKEY_PLAYPAUSE = 164 369*9c5db199SXin LiKEY_PREVIOUSSONG = 165 370*9c5db199SXin LiKEY_STOPCD = 166 371*9c5db199SXin LiKEY_RECORD = 167 372*9c5db199SXin LiKEY_REWIND = 168 373*9c5db199SXin LiKEY_PHONE = 169 # Media Select Telephone 374*9c5db199SXin LiKEY_ISO = 170 375*9c5db199SXin LiKEY_CONFIG = 171 # AL Consumer Control Configuration 376*9c5db199SXin LiKEY_HOMEPAGE = 172 # AC Home 377*9c5db199SXin LiKEY_REFRESH = 173 # AC Refresh 378*9c5db199SXin LiKEY_EXIT = 174 # AC Exit 379*9c5db199SXin LiKEY_MOVE = 175 380*9c5db199SXin LiKEY_EDIT = 176 381*9c5db199SXin LiKEY_SCROLLUP = 177 382*9c5db199SXin LiKEY_SCROLLDOWN = 178 383*9c5db199SXin LiKEY_KPLEFTPAREN = 179 384*9c5db199SXin LiKEY_KPRIGHTPAREN = 180 385*9c5db199SXin LiKEY_NEW = 181 # AC New 386*9c5db199SXin LiKEY_REDO = 182 # AC Redo/Repeat 387*9c5db199SXin Li 388*9c5db199SXin LiKEY_F13 = 183 389*9c5db199SXin LiKEY_F14 = 184 390*9c5db199SXin LiKEY_F15 = 185 391*9c5db199SXin LiKEY_F16 = 186 392*9c5db199SXin LiKEY_F17 = 187 393*9c5db199SXin LiKEY_F18 = 188 394*9c5db199SXin LiKEY_F19 = 189 395*9c5db199SXin LiKEY_F20 = 190 396*9c5db199SXin LiKEY_F21 = 191 397*9c5db199SXin LiKEY_F22 = 192 398*9c5db199SXin LiKEY_F23 = 193 399*9c5db199SXin LiKEY_F24 = 194 400*9c5db199SXin Li 401*9c5db199SXin LiKEY_PLAYCD = 200 402*9c5db199SXin LiKEY_PAUSECD = 201 403*9c5db199SXin LiKEY_PROG3 = 202 404*9c5db199SXin LiKEY_PROG4 = 203 405*9c5db199SXin LiKEY_DASHBOARD = 204 # AL Dashboard 406*9c5db199SXin LiKEY_SUSPEND = 205 407*9c5db199SXin LiKEY_CLOSE = 206 # AC Close 408*9c5db199SXin LiKEY_PLAY = 207 409*9c5db199SXin LiKEY_FASTFORWARD = 208 410*9c5db199SXin LiKEY_BASSBOOST = 209 411*9c5db199SXin LiKEY_PRINT = 210 # AC Print 412*9c5db199SXin LiKEY_HP = 211 413*9c5db199SXin LiKEY_CAMERA = 212 414*9c5db199SXin LiKEY_SOUND = 213 415*9c5db199SXin LiKEY_QUESTION = 214 416*9c5db199SXin LiKEY_EMAIL = 215 417*9c5db199SXin LiKEY_CHAT = 216 418*9c5db199SXin LiKEY_SEARCH = 217 419*9c5db199SXin LiKEY_CONNECT = 218 420*9c5db199SXin LiKEY_FINANCE = 219 #AL Checkbook/Finance 421*9c5db199SXin LiKEY_SPORT = 220 422*9c5db199SXin LiKEY_SHOP = 221 423*9c5db199SXin LiKEY_ALTERASE = 222 424*9c5db199SXin LiKEY_CANCEL = 223 # AC Cancel 425*9c5db199SXin LiKEY_BRIGHTNESSDOWN = 224 426*9c5db199SXin LiKEY_BRIGHTNESSUP = 225 427*9c5db199SXin LiKEY_MEDIA = 226 428*9c5db199SXin Li 429*9c5db199SXin LiKEY_SWITCHVIDEOMODE = 227 # Cycle between available video 430*9c5db199SXin Li # outputs (Monitor/LCD/TV-out/etc) 431*9c5db199SXin LiKEY_KBDILLUMTOGGLE = 228 432*9c5db199SXin LiKEY_KBDILLUMDOWN = 229 433*9c5db199SXin LiKEY_KBDILLUMUP = 230 434*9c5db199SXin Li 435*9c5db199SXin LiKEY_SEND = 231 # AC Send 436*9c5db199SXin LiKEY_REPLY = 232 # AC Reply 437*9c5db199SXin LiKEY_FORWARDMAIL = 233 # AC Forward Msg 438*9c5db199SXin LiKEY_SAVE = 234 # AC Save 439*9c5db199SXin LiKEY_DOCUMENTS = 235 440*9c5db199SXin Li 441*9c5db199SXin LiKEY_BATTERY = 236 442*9c5db199SXin Li 443*9c5db199SXin LiKEY_BLUETOOTH = 237 444*9c5db199SXin LiKEY_WLAN = 238 445*9c5db199SXin LiKEY_UWB = 239 446*9c5db199SXin Li 447*9c5db199SXin LiKEY_UNKNOWN = 240 448*9c5db199SXin Li 449*9c5db199SXin LiKEY_VIDEO_NEXT = 241 # drive next video source 450*9c5db199SXin LiKEY_VIDEO_PREV = 242 # drive previous video source 451*9c5db199SXin LiKEY_BRIGHTNESS_CYCLE = 243 # brightness up, after max is min 452*9c5db199SXin LiKEY_BRIGHTNESS_ZERO = 244 # brightness off, use ambient 453*9c5db199SXin LiKEY_DISPLAY_OFF = 245 # display device to off state 454*9c5db199SXin Li 455*9c5db199SXin LiKEY_WIMAX = 246 456*9c5db199SXin LiKEY_RFKILL = 247 # Key that controls all radios 457*9c5db199SXin Li 458*9c5db199SXin Li# Code 255 is reserved for special needs of AT keyboard driver 459*9c5db199SXin Li 460*9c5db199SXin LiBTN_MISC = 0x100 461*9c5db199SXin LiBTN_0 = 0x100 462*9c5db199SXin LiBTN_1 = 0x101 463*9c5db199SXin LiBTN_2 = 0x102 464*9c5db199SXin LiBTN_3 = 0x103 465*9c5db199SXin LiBTN_4 = 0x104 466*9c5db199SXin LiBTN_5 = 0x105 467*9c5db199SXin LiBTN_6 = 0x106 468*9c5db199SXin LiBTN_7 = 0x107 469*9c5db199SXin LiBTN_8 = 0x108 470*9c5db199SXin LiBTN_9 = 0x109 471*9c5db199SXin Li 472*9c5db199SXin LiBTN_MOUSE = 0x110 473*9c5db199SXin LiBTN_LEFT = 0x110 474*9c5db199SXin LiBTN_RIGHT = 0x111 475*9c5db199SXin LiBTN_MIDDLE = 0x112 476*9c5db199SXin LiBTN_SIDE = 0x113 477*9c5db199SXin LiBTN_EXTRA = 0x114 478*9c5db199SXin LiBTN_FORWARD = 0x115 479*9c5db199SXin LiBTN_BACK = 0x116 480*9c5db199SXin LiBTN_TASK = 0x117 481*9c5db199SXin Li 482*9c5db199SXin LiBTN_JOYSTICK = 0x120 483*9c5db199SXin LiBTN_TRIGGER = 0x120 484*9c5db199SXin LiBTN_THUMB = 0x121 485*9c5db199SXin LiBTN_THUMB2 = 0x122 486*9c5db199SXin LiBTN_TOP = 0x123 487*9c5db199SXin LiBTN_TOP2 = 0x124 488*9c5db199SXin LiBTN_PINKIE = 0x125 489*9c5db199SXin LiBTN_BASE = 0x126 490*9c5db199SXin LiBTN_BASE2 = 0x127 491*9c5db199SXin LiBTN_BASE3 = 0x128 492*9c5db199SXin LiBTN_BASE4 = 0x129 493*9c5db199SXin LiBTN_BASE5 = 0x12a 494*9c5db199SXin LiBTN_BASE6 = 0x12b 495*9c5db199SXin LiBTN_DEAD = 0x12f 496*9c5db199SXin Li 497*9c5db199SXin LiBTN_GAMEPAD = 0x130 498*9c5db199SXin LiBTN_A = 0x130 499*9c5db199SXin LiBTN_B = 0x131 500*9c5db199SXin LiBTN_C = 0x132 501*9c5db199SXin LiBTN_X = 0x133 502*9c5db199SXin LiBTN_Y = 0x134 503*9c5db199SXin LiBTN_Z = 0x135 504*9c5db199SXin LiBTN_TL = 0x136 505*9c5db199SXin LiBTN_TR = 0x137 506*9c5db199SXin LiBTN_TL2 = 0x138 507*9c5db199SXin LiBTN_TR2 = 0x139 508*9c5db199SXin LiBTN_SELECT = 0x13a 509*9c5db199SXin LiBTN_START = 0x13b 510*9c5db199SXin LiBTN_MODE = 0x13c 511*9c5db199SXin LiBTN_THUMBL = 0x13d 512*9c5db199SXin LiBTN_THUMBR = 0x13e 513*9c5db199SXin Li 514*9c5db199SXin LiBTN_DIGI = 0x140 515*9c5db199SXin LiBTN_TOOL_PEN = 0x140 516*9c5db199SXin LiBTN_TOOL_RUBBER = 0x141 517*9c5db199SXin LiBTN_TOOL_BRUSH = 0x142 518*9c5db199SXin LiBTN_TOOL_PENCIL = 0x143 519*9c5db199SXin LiBTN_TOOL_AIRBRUSH = 0x144 520*9c5db199SXin LiBTN_TOOL_FINGER = 0x145 521*9c5db199SXin LiBTN_TOOL_MOUSE = 0x146 522*9c5db199SXin LiBTN_TOOL_LENS = 0x147 523*9c5db199SXin LiBTN_TOOL_QUINTTAP = 0x148 # Five fingers on trackpad 524*9c5db199SXin LiBTN_TOUCH = 0x14a 525*9c5db199SXin LiBTN_STYLUS = 0x14b 526*9c5db199SXin LiBTN_STYLUS2 = 0x14c 527*9c5db199SXin LiBTN_TOOL_DOUBLETAP = 0x14d 528*9c5db199SXin LiBTN_TOOL_TRIPLETAP = 0x14e 529*9c5db199SXin LiBTN_TOOL_QUADTAP = 0x14f # Four fingers on trackpad 530*9c5db199SXin Li 531*9c5db199SXin LiBTN_WHEEL = 0x150 532*9c5db199SXin LiBTN_GEAR_DOWN = 0x150 533*9c5db199SXin LiBTN_GEAR_UP = 0x151 534*9c5db199SXin Li 535*9c5db199SXin Li 536*9c5db199SXin LiKEY_OK = 0x160 537*9c5db199SXin LiKEY_SELECT = 0x161 538*9c5db199SXin LiKEY_GOTO = 0x162 539*9c5db199SXin LiKEY_CLEAR = 0x163 540*9c5db199SXin LiKEY_POWER2 = 0x164 541*9c5db199SXin LiKEY_OPTION = 0x165 542*9c5db199SXin LiKEY_INFO = 0x166 #AL OEM Features/Tips/Tutorial 543*9c5db199SXin LiKEY_TIME = 0x167 544*9c5db199SXin LiKEY_VENDOR = 0x168 545*9c5db199SXin LiKEY_ARCHIVE = 0x169 546*9c5db199SXin LiKEY_PROGRAM = 0x16a # Media Select Program Guide 547*9c5db199SXin LiKEY_CHANNEL = 0x16b 548*9c5db199SXin LiKEY_FAVORITES = 0x16c 549*9c5db199SXin LiKEY_EPG = 0x16d 550*9c5db199SXin LiKEY_PVR = 0x16e # Media Select Home 551*9c5db199SXin LiKEY_MHP = 0x16f 552*9c5db199SXin LiKEY_LANGUAGE = 0x170 553*9c5db199SXin LiKEY_TITLE = 0x171 554*9c5db199SXin LiKEY_SUBTITLE = 0x172 555*9c5db199SXin LiKEY_ANGLE = 0x173 556*9c5db199SXin LiKEY_ZOOM = 0x174 557*9c5db199SXin LiKEY_MODE = 0x175 558*9c5db199SXin LiKEY_KEYBOARD = 0x176 559*9c5db199SXin LiKEY_SCREEN = 0x177 560*9c5db199SXin LiKEY_PC = 0x178 # Media Select Computer 561*9c5db199SXin LiKEY_TV = 0x179 # Media Select TV 562*9c5db199SXin LiKEY_TV2 = 0x17a # Media Select Cable 563*9c5db199SXin LiKEY_VCR = 0x17b # Media Select VCR 564*9c5db199SXin LiKEY_VCR2 = 0x17c # VCR Plus 565*9c5db199SXin LiKEY_SAT = 0x17d # Media Select Satellite 566*9c5db199SXin LiKEY_SAT2 = 0x17e 567*9c5db199SXin LiKEY_CD = 0x17f # Media Select CD 568*9c5db199SXin LiKEY_TAPE = 0x180 # Select Tape 569*9c5db199SXin LiKEY_RADIO = 0x181 570*9c5db199SXin LiKEY_TUNER = 0x182 # Media Select Tuner 571*9c5db199SXin LiKEY_PLAYER = 0x183 572*9c5db199SXin LiKEY_TEXT = 0x184 573*9c5db199SXin LiKEY_DVD = 0x185 # Media Select DVD 574*9c5db199SXin LiKEY_AUX = 0x186 575*9c5db199SXin LiKEY_MP3 = 0x187 576*9c5db199SXin LiKEY_AUDIO = 0x188 # AL Audio Browser 577*9c5db199SXin LiKEY_VIDEO = 0x189 # AL Movie Browser 578*9c5db199SXin LiKEY_DIRECTORY = 0x18a 579*9c5db199SXin LiKEY_LIST = 0x18b 580*9c5db199SXin LiKEY_MEMO = 0x18 # Media Select Messages 581*9c5db199SXin LiKEY_CALENDAR = 0x18d 582*9c5db199SXin LiKEY_RED = 0x18e 583*9c5db199SXin LiKEY_GREEN = 0x18f 584*9c5db199SXin LiKEY_YELLOW = 0x190 585*9c5db199SXin LiKEY_BLUE = 0x191 586*9c5db199SXin LiKEY_CHANNELUP = 0x192 # Channel Increment 587*9c5db199SXin LiKEY_CHANNELDOWN = 0x193 # Channel Decrement 588*9c5db199SXin LiKEY_FIRST = 0x194 589*9c5db199SXin LiKEY_LAST = 0x195 # Recall Last 590*9c5db199SXin LiKEY_AB = 0x196 591*9c5db199SXin LiKEY_NEXT = 0x197 592*9c5db199SXin LiKEY_RESTART = 0x198 593*9c5db199SXin LiKEY_SLOW = 0x199 594*9c5db199SXin LiKEY_SHUFFLE = 0x19a 595*9c5db199SXin LiKEY_BREAK = 0x19b 596*9c5db199SXin LiKEY_PREVIOUS = 0x19c 597*9c5db199SXin LiKEY_DIGITS = 0x19d 598*9c5db199SXin LiKEY_TEEN = 0x19e 599*9c5db199SXin LiKEY_TWEN = 0x19f 600*9c5db199SXin LiKEY_VIDEOPHONE = 0x1a0 # Media Select Video Phone 601*9c5db199SXin LiKEY_GAMES = 0x1a1 # Media Select Games 602*9c5db199SXin LiKEY_ZOOMIN = 0x1a2 # AC Zoom In 603*9c5db199SXin LiKEY_ZOOMOUT = 0x1a3 # AC Zoom Out 604*9c5db199SXin LiKEY_ZOOMRESET = 0x1a4 # AC Zoom 605*9c5db199SXin LiKEY_WORDPROCESSOR = 0x1a5 # AL Word Processor 606*9c5db199SXin LiKEY_EDITOR = 0x1a6 # AL Text Editor 607*9c5db199SXin LiKEY_SPREADSHEET = 0x1a7 # AL Spreadsheet 608*9c5db199SXin LiKEY_GRAPHICSEDITOR = 0x1a8 # AL Graphics Editor 609*9c5db199SXin LiKEY_PRESENTATION = 0x1a9 # AL Presentation App 610*9c5db199SXin LiKEY_DATABASE = 0x1aa # AL Database App 611*9c5db199SXin LiKEY_NEWS = 0x1ab # AL Newsreader 612*9c5db199SXin LiKEY_VOICEMAIL = 0x1ac # AL Voicemail 613*9c5db199SXin LiKEY_ADDRESSBOOK = 0x1ad # AL Contacts/Address Book 614*9c5db199SXin LiKEY_MESSENGER = 0x1ae # AL Instant Messaging 615*9c5db199SXin LiKEY_DISPLAYTOGGLE = 0x1af # Turn display (LCD) on and off 616*9c5db199SXin LiKEY_SPELLCHECK = 0x1b0 # AL Spell Check 617*9c5db199SXin LiKEY_LOGOFF = 0x1b1 #* AL Logoff 618*9c5db199SXin Li 619*9c5db199SXin LiKEY_DOLLAR = 0x1b2 620*9c5db199SXin LiKEY_EURO = 0x1b3 621*9c5db199SXin Li 622*9c5db199SXin LiKEY_FRAMEBACK = 0x1b4 # Consumer - transport controls 623*9c5db199SXin LiKEY_FRAMEFORWARD = 0x1b5 624*9c5db199SXin LiKEY_CONTEXT_MENU = 0x1b6 # GenDesc - system context menu 625*9c5db199SXin LiKEY_MEDIA_REPEAT = 0x1b7 # Consumer - transport control 626*9c5db199SXin LiKEY_10CHANNELSUP = 0x1b8 # 10 channels up (10+) 627*9c5db199SXin LiKEY_10CHANNELSDOWN = 0x1b9 # 10 channels down (10-) 628*9c5db199SXin LiKEY_IMAGES = 0x1ba # AL Image Browser 629*9c5db199SXin Li 630*9c5db199SXin LiKEY_DEL_EOL = 0x1c0 631*9c5db199SXin LiKEY_DEL_EOS = 0x1c1 632*9c5db199SXin LiKEY_INS_LINE = 0x1c2 633*9c5db199SXin LiKEY_DEL_LINE = 0x1c3 634*9c5db199SXin Li 635*9c5db199SXin LiKEY_FN = 0x1d0 636*9c5db199SXin LiKEY_FN_ESC = 0x1d1 637*9c5db199SXin LiKEY_FN_F1 = 0x1d2 638*9c5db199SXin LiKEY_FN_F2 = 0x1d3 639*9c5db199SXin LiKEY_FN_F3 = 0x1d4 640*9c5db199SXin LiKEY_FN_F4 = 0x1d5 641*9c5db199SXin LiKEY_FN_F5 = 0x1d6 642*9c5db199SXin LiKEY_FN_F6 = 0x1d7 643*9c5db199SXin LiKEY_FN_F7 = 0x1d8 644*9c5db199SXin LiKEY_FN_F8 = 0x1d9 645*9c5db199SXin LiKEY_FN_F9 = 0x1da 646*9c5db199SXin LiKEY_FN_F10 = 0x1db 647*9c5db199SXin LiKEY_FN_F11 = 0x1dc 648*9c5db199SXin LiKEY_FN_F12 = 0x1dd 649*9c5db199SXin LiKEY_FN_1 = 0x1de 650*9c5db199SXin LiKEY_FN_2 = 0x1df 651*9c5db199SXin LiKEY_FN_D = 0x1e0 652*9c5db199SXin LiKEY_FN_E = 0x1e1 653*9c5db199SXin LiKEY_FN_F = 0x1e2 654*9c5db199SXin LiKEY_FN_S = 0x1e3 655*9c5db199SXin LiKEY_FN_B = 0x1e4 656*9c5db199SXin Li 657*9c5db199SXin LiKEY_BRL_DOT1 = 0x1f1 658*9c5db199SXin LiKEY_BRL_DOT2 = 0x1f2 659*9c5db199SXin LiKEY_BRL_DOT3 = 0x1f3 660*9c5db199SXin LiKEY_BRL_DOT4 = 0x1f4 661*9c5db199SXin LiKEY_BRL_DOT5 = 0x1f5 662*9c5db199SXin LiKEY_BRL_DOT6 = 0x1f6 663*9c5db199SXin LiKEY_BRL_DOT7 = 0x1f7 664*9c5db199SXin LiKEY_BRL_DOT8 = 0x1f8 665*9c5db199SXin LiKEY_BRL_DOT9 = 0x1f9 666*9c5db199SXin LiKEY_BRL_DOT10 = 0x1fa 667*9c5db199SXin Li 668*9c5db199SXin LiKEY_NUMERIC_0 = 0x200 # used by phones, remote controls, 669*9c5db199SXin LiKEY_NUMERIC_1 = 0x201 # and other keypads 670*9c5db199SXin LiKEY_NUMERIC_2 = 0x202 671*9c5db199SXin LiKEY_NUMERIC_3 = 0x203 672*9c5db199SXin LiKEY_NUMERIC_4 = 0x204 673*9c5db199SXin LiKEY_NUMERIC_5 = 0x205 674*9c5db199SXin LiKEY_NUMERIC_6 = 0x206 675*9c5db199SXin LiKEY_NUMERIC_7 = 0x207 676*9c5db199SXin LiKEY_NUMERIC_8 = 0x208 677*9c5db199SXin LiKEY_NUMERIC_9 = 0x209 678*9c5db199SXin LiKEY_NUMERIC_STAR = 0x20a 679*9c5db199SXin LiKEY_NUMERIC_POUND = 0x20b 680*9c5db199SXin Li 681*9c5db199SXin LiKEY_CAMERA_FOCUS = 0x210 682*9c5db199SXin LiKEY_WPS_BUTTON = 0x211 # WiFi Protected Setup key 683*9c5db199SXin Li 684*9c5db199SXin LiKEY_TOUCHPAD_TOGGLE = 0x212 # Request switch touchpad on or off 685*9c5db199SXin LiKEY_TOUCHPAD_ON = 0x213 686*9c5db199SXin LiKEY_TOUCHPAD_OFF = 0x214 687*9c5db199SXin Li 688*9c5db199SXin LiKEY_CAMERA_ZOOMIN = 0x215 689*9c5db199SXin LiKEY_CAMERA_ZOOMOUT = 0x216 690*9c5db199SXin LiKEY_CAMERA_UP = 0x217 691*9c5db199SXin LiKEY_CAMERA_DOWN = 0x218 692*9c5db199SXin LiKEY_CAMERA_LEFT = 0x219 693*9c5db199SXin LiKEY_CAMERA_RIGHT = 0x21a 694*9c5db199SXin Li 695*9c5db199SXin LiBTN_TRIGGER_HAPPY = 0x2c0 696*9c5db199SXin LiBTN_TRIGGER_HAPPY1 = 0x2c0 697*9c5db199SXin LiBTN_TRIGGER_HAPPY2 = 0x2c1 698*9c5db199SXin LiBTN_TRIGGER_HAPPY3 = 0x2c2 699*9c5db199SXin LiBTN_TRIGGER_HAPPY4 = 0x2c3 700*9c5db199SXin LiBTN_TRIGGER_HAPPY5 = 0x2c4 701*9c5db199SXin LiBTN_TRIGGER_HAPPY6 = 0x2c5 702*9c5db199SXin LiBTN_TRIGGER_HAPPY7 = 0x2c6 703*9c5db199SXin LiBTN_TRIGGER_HAPPY8 = 0x2c7 704*9c5db199SXin LiBTN_TRIGGER_HAPPY9 = 0x2c8 705*9c5db199SXin LiBTN_TRIGGER_HAPPY10 = 0x2c9 706*9c5db199SXin LiBTN_TRIGGER_HAPPY11 = 0x2ca 707*9c5db199SXin LiBTN_TRIGGER_HAPPY12 = 0x2cb 708*9c5db199SXin LiBTN_TRIGGER_HAPPY13 = 0x2cc 709*9c5db199SXin LiBTN_TRIGGER_HAPPY14 = 0x2cd 710*9c5db199SXin LiBTN_TRIGGER_HAPPY15 = 0x2ce 711*9c5db199SXin LiBTN_TRIGGER_HAPPY16 = 0x2cf 712*9c5db199SXin LiBTN_TRIGGER_HAPPY17 = 0x2d0 713*9c5db199SXin LiBTN_TRIGGER_HAPPY18 = 0x2d1 714*9c5db199SXin LiBTN_TRIGGER_HAPPY19 = 0x2d2 715*9c5db199SXin LiBTN_TRIGGER_HAPPY20 = 0x2d3 716*9c5db199SXin LiBTN_TRIGGER_HAPPY21 = 0x2d4 717*9c5db199SXin LiBTN_TRIGGER_HAPPY22 = 0x2d5 718*9c5db199SXin LiBTN_TRIGGER_HAPPY23 = 0x2d6 719*9c5db199SXin LiBTN_TRIGGER_HAPPY24 = 0x2d7 720*9c5db199SXin LiBTN_TRIGGER_HAPPY25 = 0x2d8 721*9c5db199SXin LiBTN_TRIGGER_HAPPY26 = 0x2d9 722*9c5db199SXin LiBTN_TRIGGER_HAPPY27 = 0x2da 723*9c5db199SXin LiBTN_TRIGGER_HAPPY28 = 0x2db 724*9c5db199SXin LiBTN_TRIGGER_HAPPY29 = 0x2dc 725*9c5db199SXin LiBTN_TRIGGER_HAPPY30 = 0x2dd 726*9c5db199SXin LiBTN_TRIGGER_HAPPY31 = 0x2de 727*9c5db199SXin LiBTN_TRIGGER_HAPPY32 = 0x2df 728*9c5db199SXin LiBTN_TRIGGER_HAPPY33 = 0x2e0 729*9c5db199SXin LiBTN_TRIGGER_HAPPY34 = 0x2e1 730*9c5db199SXin LiBTN_TRIGGER_HAPPY35 = 0x2e2 731*9c5db199SXin LiBTN_TRIGGER_HAPPY36 = 0x2e3 732*9c5db199SXin LiBTN_TRIGGER_HAPPY37 = 0x2e4 733*9c5db199SXin LiBTN_TRIGGER_HAPPY38 = 0x2e5 734*9c5db199SXin LiBTN_TRIGGER_HAPPY39 = 0x2e6 735*9c5db199SXin LiBTN_TRIGGER_HAPPY40 = 0x2e7 736*9c5db199SXin Li 737*9c5db199SXin Li 738*9c5db199SXin Li# We avoid low common keys in module aliases so they don't get huge 739*9c5db199SXin Li#KEY_MIN_INTERESTING = KEY_MUTE 740*9c5db199SXin LiKEY_MAX = 0x2ff 741*9c5db199SXin LiKEY_CNT = (KEY_MAX + 1) 742*9c5db199SXin Li 743*9c5db199SXin Li# Relative axes 744*9c5db199SXin LiREL_X = 0x00 745*9c5db199SXin LiREL_Y = 0x01 746*9c5db199SXin LiREL_Z = 0x02 747*9c5db199SXin LiREL_RX = 0x03 748*9c5db199SXin LiREL_RY = 0x04 749*9c5db199SXin LiREL_RZ = 0x05 750*9c5db199SXin LiREL_HWHEEL = 0x06 751*9c5db199SXin LiREL_DIAL = 0x07 752*9c5db199SXin LiREL_WHEEL = 0x08 753*9c5db199SXin LiREL_MISC = 0x09 754*9c5db199SXin LiREL_RESERVED = 0x0a 755*9c5db199SXin LiREL_WHEEL_HI_RES = 0x0b 756*9c5db199SXin LiREL_HWHEEL_HI_RES = 0x0c 757*9c5db199SXin LiREL_MAX = 0x0f 758*9c5db199SXin LiREL_CNT = (REL_MAX + 1) 759*9c5db199SXin Li 760*9c5db199SXin Li# Absolute axes 761*9c5db199SXin LiABS_X = 0x00 762*9c5db199SXin LiABS_Y = 0x01 763*9c5db199SXin LiABS_Z = 0x02 764*9c5db199SXin LiABS_RX = 0x03 765*9c5db199SXin LiABS_RY = 0x04 766*9c5db199SXin LiABS_RZ = 0x05 767*9c5db199SXin LiABS_THROTTLE = 0x06 768*9c5db199SXin LiABS_RUDDER = 0x07 769*9c5db199SXin LiABS_WHEEL = 0x08 770*9c5db199SXin LiABS_GAS = 0x09 771*9c5db199SXin LiABS_BRAKE = 0x0a 772*9c5db199SXin LiABS_HAT0X = 0x10 773*9c5db199SXin LiABS_HAT0Y = 0x11 774*9c5db199SXin LiABS_HAT1X = 0x12 775*9c5db199SXin LiABS_HAT1Y = 0x13 776*9c5db199SXin LiABS_HAT2X = 0x14 777*9c5db199SXin LiABS_HAT2Y = 0x15 778*9c5db199SXin LiABS_HAT3X = 0x16 779*9c5db199SXin LiABS_HAT3Y = 0x17 780*9c5db199SXin LiABS_PRESSURE = 0x18 781*9c5db199SXin LiABS_DISTANCE = 0x19 782*9c5db199SXin LiABS_TILT_X = 0x1a 783*9c5db199SXin LiABS_TILT_Y = 0x1b 784*9c5db199SXin LiABS_TOOL_WIDTH = 0x1c 785*9c5db199SXin Li 786*9c5db199SXin LiABS_VOLUME = 0x20 787*9c5db199SXin Li 788*9c5db199SXin LiABS_MISC = 0x28 789*9c5db199SXin Li 790*9c5db199SXin LiABS_MT_SLOT = 0x2f # MT slot being modified 791*9c5db199SXin LiABS_MT_TOUCH_MAJOR = 0x30 # Major axis of touching ellipse 792*9c5db199SXin LiABS_MT_TOUCH_MINOR = 0x31 # Minor axis (omit if circular) 793*9c5db199SXin LiABS_MT_WIDTH_MAJOR = 0x32 # Major axis of approaching ellipse 794*9c5db199SXin LiABS_MT_WIDTH_MINOR = 0x33 # Minor axis (omit if circular) 795*9c5db199SXin LiABS_MT_ORIENTATION = 0x34 # Ellipse orientation 796*9c5db199SXin LiABS_MT_POSITION_X = 0x35 # Center X ellipse position 797*9c5db199SXin LiABS_MT_POSITION_Y = 0x36 # Center Y ellipse position 798*9c5db199SXin LiABS_MT_TOOL_TYPE = 0x37 # Type of touching device 799*9c5db199SXin LiABS_MT_BLOB_ID = 0x38 # Group a set of packets as a blob 800*9c5db199SXin LiABS_MT_TRACKING_ID = 0x39 # Unique ID of initiated contact 801*9c5db199SXin LiABS_MT_PRESSURE = 0x3a # Pressure on contact area 802*9c5db199SXin LiABS_MT_DISTANCE = 0x3b # Contact hover distance 803*9c5db199SXin Li 804*9c5db199SXin LiABS_MT_FIRST = ABS_MT_TOUCH_MAJOR 805*9c5db199SXin LiABS_MT_LAST = ABS_MT_DISTANCE 806*9c5db199SXin LiABS_MT_RANGE = list(range(ABS_MT_FIRST, ABS_MT_LAST+1)) 807*9c5db199SXin Li 808*9c5db199SXin LiABS_MAX = 0x3f 809*9c5db199SXin LiABS_CNT = (ABS_MAX + 1) 810*9c5db199SXin Li 811*9c5db199SXin Li# Switch events 812*9c5db199SXin LiSW_LID = 0x00 # set = lid shut 813*9c5db199SXin LiSW_TABLET_MODE = 0x01 # set = tablet mode 814*9c5db199SXin LiSW_HEADPHONE_INSERT = 0x02 # set = inserted 815*9c5db199SXin LiSW_RFKILL_ALL = 0x03 # rfkill main switch, type "any" 816*9c5db199SXin Li # set = radio enabled 817*9c5db199SXin LiSW_RADIO = SW_RFKILL_ALL # deprecated 818*9c5db199SXin LiSW_MICROPHONE_INSERT = 0x04 # set = inserted 819*9c5db199SXin LiSW_DOCK = 0x05 # set = plugged into dock 820*9c5db199SXin LiSW_LINEOUT_INSERT = 0x06 # set = inserted 821*9c5db199SXin LiSW_JACK_PHYSICAL_INSERT = 0x07 # set = mechanical switch set 822*9c5db199SXin LiSW_VIDEOOUT_INSERT = 0x08 # set = inserted 823*9c5db199SXin LiSW_CAMERA_LENS_COVER = 0x09 # set = lens covered 824*9c5db199SXin LiSW_KEYPAD_SLIDE = 0x0a # set = keypad slide out 825*9c5db199SXin LiSW_FRONT_PROXIMITY = 0x0b # set = front proximity sensor active 826*9c5db199SXin LiSW_ROTATE_LOCK = 0x0c # set = rotate locked/disabled 827*9c5db199SXin LiSW_MAX = 0x0f 828*9c5db199SXin LiSW_CNT = (SW_MAX + 1) 829*9c5db199SXin Li 830*9c5db199SXin Li# Misc events 831*9c5db199SXin LiMSC_SERIAL = 0x00 832*9c5db199SXin LiMSC_PULSELED = 0x01 833*9c5db199SXin LiMSC_GESTURE = 0x02 834*9c5db199SXin LiMSC_RAW = 0x03 835*9c5db199SXin LiMSC_SCAN = 0x04 836*9c5db199SXin LiMSC_MAX = 0x07 837*9c5db199SXin LiMSC_CNT = (MSC_MAX + 1) 838*9c5db199SXin Li 839*9c5db199SXin Li# LEDs 840*9c5db199SXin LiLED_NUML = 0x00 841*9c5db199SXin LiLED_CAPSL = 0x01 842*9c5db199SXin LiLED_SCROLLL = 0x02 843*9c5db199SXin LiLED_COMPOSE = 0x03 844*9c5db199SXin LiLED_KANA = 0x04 845*9c5db199SXin LiLED_SLEEP = 0x05 846*9c5db199SXin LiLED_SUSPEND = 0x06 847*9c5db199SXin LiLED_MUTE = 0x07 848*9c5db199SXin LiLED_MISC = 0x08 849*9c5db199SXin LiLED_MAIL = 0x09 850*9c5db199SXin LiLED_CHARGING = 0x0a 851*9c5db199SXin LiLED_MAX = 0x0f 852*9c5db199SXin LiLED_CNT = (LED_MAX + 1) 853*9c5db199SXin Li 854*9c5db199SXin Li# Autorepeat values 855*9c5db199SXin LiREP_DELAY = 0x00 856*9c5db199SXin LiREP_PERIOD = 0x01 857*9c5db199SXin LiREP_MAX = 0x01 858*9c5db199SXin LiREP_CNT = (REP_MAX + 1) 859*9c5db199SXin Li 860*9c5db199SXin Li# Sounds 861*9c5db199SXin LiSND_CLICK = 0x00 862*9c5db199SXin LiSND_BELL = 0x01 863*9c5db199SXin LiSND_TONE = 0x02 864*9c5db199SXin LiSND_MAX = 0x07 865*9c5db199SXin LiSND_CNT = (SND_MAX + 1) 866*9c5db199SXin Li 867*9c5db199SXin Li# IDs. 868*9c5db199SXin LiID_BUS = 0 869*9c5db199SXin LiID_VENDOR = 1 870*9c5db199SXin LiID_PRODUCT = 2 871*9c5db199SXin LiID_VERSION = 3 872*9c5db199SXin Li 873*9c5db199SXin LiBUS_PCI = 0x01 874*9c5db199SXin LiBUS_ISAPNP = 0x02 875*9c5db199SXin LiBUS_USB = 0x03 876*9c5db199SXin LiBUS_HIL = 0x04 877*9c5db199SXin LiBUS_BLUETOOTH = 0x05 878*9c5db199SXin LiBUS_VIRTUAL = 0x06 879*9c5db199SXin Li 880*9c5db199SXin LiBUS_ISA = 0x10 881*9c5db199SXin LiBUS_I8042 = 0x11 882*9c5db199SXin LiBUS_XTKBD = 0x12 883*9c5db199SXin LiBUS_RS232 = 0x13 884*9c5db199SXin LiBUS_GAMEPORT = 0x14 885*9c5db199SXin LiBUS_PARPORT = 0x15 886*9c5db199SXin LiBUS_AMIGA = 0x16 887*9c5db199SXin LiBUS_ADB = 0x17 888*9c5db199SXin LiBUS_I2C = 0x18 889*9c5db199SXin LiBUS_HOST = 0x19 890*9c5db199SXin LiBUS_GSC = 0x1A 891*9c5db199SXin LiBUS_ATARI = 0x1B 892*9c5db199SXin LiBUS_SPI = 0x1C 893*9c5db199SXin Li 894*9c5db199SXin Li# MT_TOOL types 895*9c5db199SXin LiMT_TOOL_FINGER = 0 896*9c5db199SXin LiMT_TOOL_PEN = 1 897*9c5db199SXin LiMT_TOOL_MAX = 1 898*9c5db199SXin Li 899*9c5db199SXin Li# Values describing the status of a force-feedback effect 900*9c5db199SXin LiFF_STATUS_STOPPED = 0x00 901*9c5db199SXin LiFF_STATUS_PLAYING = 0x01 902*9c5db199SXin LiFF_STATUS_MAX = 0x01 903*9c5db199SXin LiFF_STATUS_CNT = (FF_STATUS_MAX + 1) 904*9c5db199SXin Li 905*9c5db199SXin Li# Structures used in ioctls to upload effects to a device 906*9c5db199SXin Li# They are pieces of a bigger structure (called ff_effect) 907*9c5db199SXin Li 908*9c5db199SXin Li# All duration values are expressed in ms. Values above 32767 ms (0x7fff) 909*9c5db199SXin Li# should not be used and have unspecified results. 910*9c5db199SXin Li 911*9c5db199SXin Li""" 912*9c5db199SXin Li * struct ff_replay - defines scheduling of the force-feedback effect 913*9c5db199SXin Li * @length: duration of the effect 914*9c5db199SXin Li * @delay: delay before effect should start playing 915*9c5db199SXin Listruct ff_replay { 916*9c5db199SXin Li __u16 length; 917*9c5db199SXin Li __u16 delay; 918*9c5db199SXin Li}; 919*9c5db199SXin Li""" 920*9c5db199SXin Li 921*9c5db199SXin Li""" 922*9c5db199SXin Li * struct ff_trigger - defines what triggers the force-feedback effect 923*9c5db199SXin Li * @button: number of the button triggering the effect 924*9c5db199SXin Li * @interval: controls how soon the effect can be re-triggered 925*9c5db199SXin Listruct ff_trigger { 926*9c5db199SXin Li __u16 button; 927*9c5db199SXin Li __u16 interval; 928*9c5db199SXin Li}; 929*9c5db199SXin Li""" 930*9c5db199SXin Li 931*9c5db199SXin Li""" 932*9c5db199SXin Li * struct ff_envelope - generic force-feedback effect envelope 933*9c5db199SXin Li * @attack_length: duration of the attack (ms) 934*9c5db199SXin Li * @attack_level: level at the beginning of the attack 935*9c5db199SXin Li * @fade_length: duration of fade (ms) 936*9c5db199SXin Li * @fade_level: level at the end of fade 937*9c5db199SXin Li * 938*9c5db199SXin Li * The @attack_level and @fade_level are absolute values; when applying 939*9c5db199SXin Li * envelope force-feedback core will convert to positive/negative 940*9c5db199SXin Li * value based on polarity of the default level of the effect. 941*9c5db199SXin Li * Valid range for the attack and fade levels is 0x0000 - 0x7fff 942*9c5db199SXin Listruct ff_envelope { 943*9c5db199SXin Li __u16 attack_length; 944*9c5db199SXin Li __u16 attack_level; 945*9c5db199SXin Li __u16 fade_length; 946*9c5db199SXin Li __u16 fade_level; 947*9c5db199SXin Li}; 948*9c5db199SXin Li""" 949*9c5db199SXin Li 950*9c5db199SXin Li""" 951*9c5db199SXin Li * struct ff_constant_effect - params of a constant force-feedback effect 952*9c5db199SXin Li * @level: strength of the effect; may be negative 953*9c5db199SXin Li * @envelope: envelope data 954*9c5db199SXin Listruct ff_constant_effect { 955*9c5db199SXin Li __s16 level; 956*9c5db199SXin Li struct ff_envelope envelope; 957*9c5db199SXin Li}; 958*9c5db199SXin Li""" 959*9c5db199SXin Li 960*9c5db199SXin Li""" 961*9c5db199SXin Li * struct ff_ramp_effect - params of a ramp force-feedback effect 962*9c5db199SXin Li * @start_level: beginning strength of the effect; may be negative 963*9c5db199SXin Li * @end_level: final strength of the effect; may be negative 964*9c5db199SXin Li * @envelope: envelope data 965*9c5db199SXin Listruct ff_ramp_effect { 966*9c5db199SXin Li __s16 start_level; 967*9c5db199SXin Li __s16 end_level; 968*9c5db199SXin Li struct ff_envelope envelope; 969*9c5db199SXin Li}; 970*9c5db199SXin Li""" 971*9c5db199SXin Li 972*9c5db199SXin Li""" 973*9c5db199SXin Li * struct ff_condition_effect - spring or friction force-feedback effect 974*9c5db199SXin Li * @right_saturation: maximum level when joystick moved all way to the right 975*9c5db199SXin Li * @left_saturation: same for the left side 976*9c5db199SXin Li * @right_coeff: controls how fast the force grows when the joystick moves 977*9c5db199SXin Li * to the right 978*9c5db199SXin Li * @left_coeff: same for the left side 979*9c5db199SXin Li * @deadband: size of the dead zone, where no force is produced 980*9c5db199SXin Li * @center: position of the dead zone 981*9c5db199SXin Listruct ff_condition_effect { 982*9c5db199SXin Li __u16 right_saturation; 983*9c5db199SXin Li __u16 left_saturation; 984*9c5db199SXin Li 985*9c5db199SXin Li __s16 right_coeff; 986*9c5db199SXin Li __s16 left_coeff; 987*9c5db199SXin Li 988*9c5db199SXin Li __u16 deadband; 989*9c5db199SXin Li __s16 center; 990*9c5db199SXin Li}; 991*9c5db199SXin Li""" 992*9c5db199SXin Li 993*9c5db199SXin Li 994*9c5db199SXin Li""" 995*9c5db199SXin Li * struct ff_periodic_effect - params of a periodic force-feedback effect 996*9c5db199SXin Li * @waveform: kind of the effect (wave) 997*9c5db199SXin Li * @period: period of the wave (ms) 998*9c5db199SXin Li * @magnitude: peak value 999*9c5db199SXin Li * @offset: mean value of the wave (roughly) 1000*9c5db199SXin Li * @phase: 'horizontal' shift 1001*9c5db199SXin Li * @envelope: envelope data 1002*9c5db199SXin Li * @custom_len: number of samples (FF_CUSTOM only) 1003*9c5db199SXin Li * @custom_data: buffer of samples (FF_CUSTOM only) 1004*9c5db199SXin Li * 1005*9c5db199SXin Li * Known waveforms - FF_SQUARE, FF_TRIANGLE, FF_SINE, FF_SAW_UP, 1006*9c5db199SXin Li * FF_SAW_DOWN, FF_CUSTOM. The exact syntax FF_CUSTOM is undefined 1007*9c5db199SXin Li * for the time being as no driver supports it yet. 1008*9c5db199SXin Li * 1009*9c5db199SXin Li * Note: the data pointed by custom_data is copied by the driver. 1010*9c5db199SXin Li * You can therefore dispose of the memory after the upload/update. 1011*9c5db199SXin Listruct ff_periodic_effect { 1012*9c5db199SXin Li __u16 waveform; 1013*9c5db199SXin Li __u16 period; 1014*9c5db199SXin Li __s16 magnitude; 1015*9c5db199SXin Li __s16 offset; 1016*9c5db199SXin Li __u16 phase; 1017*9c5db199SXin Li 1018*9c5db199SXin Li struct ff_envelope envelope; 1019*9c5db199SXin Li 1020*9c5db199SXin Li __u32 custom_len; 1021*9c5db199SXin Li __s16 __user *custom_data; 1022*9c5db199SXin Li}; 1023*9c5db199SXin Li""" 1024*9c5db199SXin Li 1025*9c5db199SXin Li""" 1026*9c5db199SXin Li * struct ff_rumble_effect - params of a periodic force-feedback effect 1027*9c5db199SXin Li * @strong_magnitude: magnitude of the heavy motor 1028*9c5db199SXin Li * @weak_magnitude: magnitude of the light one 1029*9c5db199SXin Li * 1030*9c5db199SXin Li * Some rumble pads have two motors of different weight. Strong_magnitude 1031*9c5db199SXin Li * represents the magnitude of the vibration generated by the heavy one. 1032*9c5db199SXin Listruct ff_rumble_effect { 1033*9c5db199SXin Li __u16 strong_magnitude; 1034*9c5db199SXin Li __u16 weak_magnitude; 1035*9c5db199SXin Li}; 1036*9c5db199SXin Li""" 1037*9c5db199SXin Li 1038*9c5db199SXin Li""" 1039*9c5db199SXin Li * struct ff_effect - defines force feedback effect 1040*9c5db199SXin Li * @type: type of the effect (FF_CONSTANT, FF_PERIODIC, FF_RAMP, FF_SPRING, 1041*9c5db199SXin Li * FF_FRICTION, FF_DAMPER, FF_RUMBLE, FF_INERTIA, or FF_CUSTOM) 1042*9c5db199SXin Li * @id: an unique id assigned to an effect 1043*9c5db199SXin Li * @direction: direction of the effect 1044*9c5db199SXin Li * @trigger: trigger conditions (struct ff_trigger) 1045*9c5db199SXin Li * @replay: scheduling of the effect (struct ff_replay) 1046*9c5db199SXin Li * @u: effect-specific structure (one of ff_constant_effect, ff_ramp_effect, 1047*9c5db199SXin Li * ff_periodic_effect, ff_condition_effect, ff_rumble_effect) further 1048*9c5db199SXin Li * defining effect parameters 1049*9c5db199SXin Li * 1050*9c5db199SXin Li * This structure is sent through ioctl from the application to the driver. 1051*9c5db199SXin Li * To create a new effect application should set its @id to -1; the kernel 1052*9c5db199SXin Li * will return assigned @id which can later be used to update or delete 1053*9c5db199SXin Li * this effect. 1054*9c5db199SXin Li * 1055*9c5db199SXin Li * Direction of the effect is encoded as follows: 1056*9c5db199SXin Li * 0 deg -> 0x0000 (down) 1057*9c5db199SXin Li * 90 deg -> 0x4000 (left) 1058*9c5db199SXin Li * 180 deg -> 0x8000 (up) 1059*9c5db199SXin Li * 270 deg -> 0xC000 (right) 1060*9c5db199SXin Listruct ff_effect { 1061*9c5db199SXin Li __u16 type; 1062*9c5db199SXin Li __s16 id; 1063*9c5db199SXin Li __u16 direction; 1064*9c5db199SXin Li struct ff_trigger trigger; 1065*9c5db199SXin Li struct ff_replay replay; 1066*9c5db199SXin Li 1067*9c5db199SXin Li union { 1068*9c5db199SXin Li struct ff_constant_effect constant; 1069*9c5db199SXin Li struct ff_ramp_effect ramp; 1070*9c5db199SXin Li struct ff_periodic_effect periodic; 1071*9c5db199SXin Li struct ff_condition_effect condition[2]; /* One for each axis */ 1072*9c5db199SXin Li struct ff_rumble_effect rumble; 1073*9c5db199SXin Li } u; 1074*9c5db199SXin Li}; 1075*9c5db199SXin Li""" 1076*9c5db199SXin Li 1077*9c5db199SXin Li# Force feedback effect types 1078*9c5db199SXin LiFF_RUMBLE = 0x50 1079*9c5db199SXin LiFF_PERIODIC = 0x51 1080*9c5db199SXin LiFF_CONSTANT = 0x52 1081*9c5db199SXin LiFF_SPRING = 0x53 1082*9c5db199SXin LiFF_FRICTION = 0x54 1083*9c5db199SXin LiFF_DAMPER = 0x55 1084*9c5db199SXin LiFF_INERTIA = 0x56 1085*9c5db199SXin LiFF_RAMP = 0x57 1086*9c5db199SXin Li 1087*9c5db199SXin LiFF_EFFECT_MIN = FF_RUMBLE 1088*9c5db199SXin LiFF_EFFECT_MAX = FF_RAMP 1089*9c5db199SXin Li 1090*9c5db199SXin Li# Force feedback periodic effect types 1091*9c5db199SXin LiFF_SQUARE = 0x58 1092*9c5db199SXin LiFF_TRIANGLE = 0x59 1093*9c5db199SXin LiFF_SINE = 0x5a 1094*9c5db199SXin LiFF_SAW_UP = 0x5b 1095*9c5db199SXin LiFF_SAW_DOWN = 0x5c 1096*9c5db199SXin LiFF_CUSTOM = 0x5d 1097*9c5db199SXin Li 1098*9c5db199SXin LiFF_WAVEFORM_MIN = FF_SQUARE 1099*9c5db199SXin LiFF_WAVEFORM_MAX = FF_CUSTOM 1100*9c5db199SXin Li 1101*9c5db199SXin Li# Set ff device properties 1102*9c5db199SXin LiFF_GAIN = 0x60 1103*9c5db199SXin LiFF_AUTOCENTER = 0x61 1104*9c5db199SXin Li 1105*9c5db199SXin LiFF_MAX = 0x7f 1106*9c5db199SXin LiFF_CNT = (FF_MAX + 1) 1107*9c5db199SXin Li 1108*9c5db199SXin Li 1109*9c5db199SXin Li""" 1110*9c5db199SXin LiThe following constants, functions and dicts are not part of the original linux 1111*9c5db199SXin Liinput header file. They are included here to make it easier to use the linux 1112*9c5db199SXin Liinput subsystem from python scripts. 1113*9c5db199SXin Li""" 1114*9c5db199SXin Li 1115*9c5db199SXin LiBITS_PER_WORD = 8 1116*9c5db199SXin Li 1117*9c5db199SXin Lidef NBITS(x): 1118*9c5db199SXin Li return ((x - 1) // BITS_PER_WORD) + 1 1119*9c5db199SXin Li 1120*9c5db199SXin Lidef OFFSET(x): 1121*9c5db199SXin Li return (x % BITS_PER_WORD) 1122*9c5db199SXin Li 1123*9c5db199SXin Lidef BIT(x): 1124*9c5db199SXin Li return (1 << OFFSET(x)) 1125*9c5db199SXin Li 1126*9c5db199SXin Lidef INDEX(x): 1127*9c5db199SXin Li return (x // BITS_PER_WORD) 1128*9c5db199SXin Li 1129*9c5db199SXin Lidef test_bit(b, a): 1130*9c5db199SXin Li return ((a[INDEX(b)] >> OFFSET(b)) & 1) 1131*9c5db199SXin Li 1132*9c5db199SXin LiEV_TYPES = { 1133*9c5db199SXin Li EV_SYN : 'EV_SYN', 1134*9c5db199SXin Li EV_KEY : 'EV_KEY', 1135*9c5db199SXin Li EV_REL : 'EV_REL', 1136*9c5db199SXin Li EV_ABS : 'EV_ABS', 1137*9c5db199SXin Li EV_MSC : 'EV_MSC', 1138*9c5db199SXin Li EV_SW : 'EV_SW', 1139*9c5db199SXin Li EV_LED : 'EV_LED', 1140*9c5db199SXin Li EV_SND : 'EV_SND', 1141*9c5db199SXin Li EV_REP : 'EV_REP', 1142*9c5db199SXin Li EV_FF : 'EV_FF', 1143*9c5db199SXin Li EV_PWR : 'EV_PWR', 1144*9c5db199SXin Li EV_FF_STATUS : 'EV_FF_STATUS' 1145*9c5db199SXin Li} 1146*9c5db199SXin Li 1147*9c5db199SXin LiEV_SIZES = { 1148*9c5db199SXin Li EV_KEY : KEY_CNT, 1149*9c5db199SXin Li EV_REL : REL_CNT, 1150*9c5db199SXin Li EV_ABS : ABS_CNT, 1151*9c5db199SXin Li EV_MSC : MSC_CNT, 1152*9c5db199SXin Li EV_SW : SW_CNT, 1153*9c5db199SXin Li EV_LED : LED_CNT, 1154*9c5db199SXin Li EV_SND : SND_CNT, 1155*9c5db199SXin Li EV_REP : REP_CNT, 1156*9c5db199SXin Li EV_FF : FF_CNT, 1157*9c5db199SXin Li EV_FF_STATUS : FF_STATUS_CNT 1158*9c5db199SXin Li} 1159*9c5db199SXin Li 1160*9c5db199SXin LiEV_STRINGS = { 1161*9c5db199SXin Li # Keys (only buttons, for now) 1162*9c5db199SXin Li EV_KEY: { 1163*9c5db199SXin Li BTN_0 : '0', 1164*9c5db199SXin Li BTN_1 : '1', 1165*9c5db199SXin Li BTN_2 : '0', 1166*9c5db199SXin Li BTN_3 : '3', 1167*9c5db199SXin Li BTN_4 : '4', 1168*9c5db199SXin Li BTN_5 : '5', 1169*9c5db199SXin Li BTN_6 : '6', 1170*9c5db199SXin Li BTN_7 : '7', 1171*9c5db199SXin Li BTN_8 : '8', 1172*9c5db199SXin Li BTN_9 : '9', 1173*9c5db199SXin Li BTN_LEFT : 'LEFT', 1174*9c5db199SXin Li BTN_RIGHT : 'RIGHT', 1175*9c5db199SXin Li BTN_MIDDLE : 'MIDDLE', 1176*9c5db199SXin Li BTN_SIDE : 'SIDE', 1177*9c5db199SXin Li BTN_EXTRA : 'EXTRA', 1178*9c5db199SXin Li BTN_FORWARD : 'FORWARD', 1179*9c5db199SXin Li BTN_BACK : 'BACK', 1180*9c5db199SXin Li BTN_TASK : 'TASK', 1181*9c5db199SXin Li BTN_TRIGGER : 'TRIGGER', 1182*9c5db199SXin Li BTN_THUMB : 'THUMB', 1183*9c5db199SXin Li BTN_THUMB2 : 'THUMB2', 1184*9c5db199SXin Li BTN_TOP : 'TOP', 1185*9c5db199SXin Li BTN_TOP2 : 'TOP2', 1186*9c5db199SXin Li BTN_PINKIE : 'PINKIE', 1187*9c5db199SXin Li BTN_BASE : 'BASE', 1188*9c5db199SXin Li BTN_BASE2 : 'BASE2', 1189*9c5db199SXin Li BTN_BASE3 : 'BASE3', 1190*9c5db199SXin Li BTN_BASE4 : 'BASE4', 1191*9c5db199SXin Li BTN_BASE5 : 'BASE5', 1192*9c5db199SXin Li BTN_BASE6 : 'BASE6', 1193*9c5db199SXin Li BTN_DEAD : 'DEAD', 1194*9c5db199SXin Li BTN_A : 'A', 1195*9c5db199SXin Li BTN_B : 'B', 1196*9c5db199SXin Li BTN_C : 'C', 1197*9c5db199SXin Li BTN_X : 'X', 1198*9c5db199SXin Li BTN_Y : 'Y', 1199*9c5db199SXin Li BTN_Z : 'Z', 1200*9c5db199SXin Li BTN_TL : 'TL', 1201*9c5db199SXin Li BTN_TR : 'TR', 1202*9c5db199SXin Li BTN_TL2 : 'TL2', 1203*9c5db199SXin Li BTN_TR2 : 'TR2', 1204*9c5db199SXin Li BTN_SELECT : 'SELECT', 1205*9c5db199SXin Li BTN_START : 'START', 1206*9c5db199SXin Li BTN_MODE : 'MODE', 1207*9c5db199SXin Li BTN_THUMBL : 'THUMBL', 1208*9c5db199SXin Li BTN_THUMBR : 'THUMBR', 1209*9c5db199SXin Li BTN_TOOL_PEN : 'TOOL_PEN', 1210*9c5db199SXin Li BTN_TOOL_RUBBER : 'TOOL_RUBBER', 1211*9c5db199SXin Li BTN_TOOL_BRUSH : 'TOOL_BRUSH', 1212*9c5db199SXin Li BTN_TOOL_PENCIL : 'TOOL_PENCIL', 1213*9c5db199SXin Li BTN_TOOL_AIRBRUSH : 'TOOL_AIRBRUSH', 1214*9c5db199SXin Li BTN_TOOL_FINGER : 'TOOL_FINGER', 1215*9c5db199SXin Li BTN_TOOL_MOUSE : 'TOOL_MOUSE', 1216*9c5db199SXin Li BTN_TOOL_LENS : 'TOOL_LENS', 1217*9c5db199SXin Li BTN_TOOL_QUINTTAP : 'TOOL_QUINTTAP', 1218*9c5db199SXin Li BTN_TOUCH : 'TOUCH', 1219*9c5db199SXin Li BTN_STYLUS : 'STYLUS', 1220*9c5db199SXin Li BTN_STYLUS2 : 'STYLUS2', 1221*9c5db199SXin Li BTN_TOOL_DOUBLETAP : 'TOOL_DOUBLETAP', 1222*9c5db199SXin Li BTN_TOOL_TRIPLETAP : 'TOOL_TRIPLETAP', 1223*9c5db199SXin Li BTN_TOOL_QUADTAP : 'TOOL_QUADTAP', 1224*9c5db199SXin Li BTN_GEAR_DOWN : 'TOOL_GEAR_DOWN', 1225*9c5db199SXin Li BTN_GEAR_UP : 'TOOL_GEAR_UP', 1226*9c5db199SXin Li }, 1227*9c5db199SXin Li 1228*9c5db199SXin Li # Relative axes 1229*9c5db199SXin Li EV_REL: { 1230*9c5db199SXin Li REL_X : 'X', 1231*9c5db199SXin Li REL_Y : 'Y', 1232*9c5db199SXin Li REL_Z : 'Z', 1233*9c5db199SXin Li REL_RX : 'RX', 1234*9c5db199SXin Li REL_RY : 'RY', 1235*9c5db199SXin Li REL_RZ : 'RZ', 1236*9c5db199SXin Li REL_HWHEEL : 'HWHEEL', 1237*9c5db199SXin Li REL_DIAL : 'DIAL', 1238*9c5db199SXin Li REL_WHEEL : 'WHEEL', 1239*9c5db199SXin Li REL_MISC : 'MISC', 1240*9c5db199SXin Li }, 1241*9c5db199SXin Li 1242*9c5db199SXin Li # Absolute axes 1243*9c5db199SXin Li EV_ABS: { 1244*9c5db199SXin Li ABS_X : 'X', 1245*9c5db199SXin Li ABS_Y : 'Y', 1246*9c5db199SXin Li ABS_Z : 'Z', 1247*9c5db199SXin Li ABS_RX : 'RX', 1248*9c5db199SXin Li ABS_RY : 'RY', 1249*9c5db199SXin Li ABS_RZ : 'RZ', 1250*9c5db199SXin Li ABS_THROTTLE : 'THROTTLE', 1251*9c5db199SXin Li ABS_RUDDER : 'RUDDER', 1252*9c5db199SXin Li ABS_WHEEL : 'WHEEL', 1253*9c5db199SXin Li ABS_GAS : 'GAS', 1254*9c5db199SXin Li ABS_BRAKE : 'BRAKE', 1255*9c5db199SXin Li ABS_HAT0X : 'HAT0X', 1256*9c5db199SXin Li ABS_HAT0Y : 'HAT0Y', 1257*9c5db199SXin Li ABS_HAT1X : 'HAT1X', 1258*9c5db199SXin Li ABS_HAT1Y : 'HAT1Y', 1259*9c5db199SXin Li ABS_HAT2X : 'HAT2X', 1260*9c5db199SXin Li ABS_HAT2Y : 'HAT2Y', 1261*9c5db199SXin Li ABS_HAT3X : 'HAT3X', 1262*9c5db199SXin Li ABS_HAT3Y : 'HAT3Y', 1263*9c5db199SXin Li ABS_PRESSURE : 'PRESSURE', 1264*9c5db199SXin Li ABS_DISTANCE : 'DISTANCE', 1265*9c5db199SXin Li ABS_TILT_X : 'TILT_X', 1266*9c5db199SXin Li ABS_TILT_Y : 'TILT_Y', 1267*9c5db199SXin Li ABS_TOOL_WIDTH : 'TOOL_WIDTH', 1268*9c5db199SXin Li ABS_VOLUME : 'VOLUME', 1269*9c5db199SXin Li ABS_MISC : 'MISC', 1270*9c5db199SXin Li ABS_MT_SLOT : 'MT_SLOT', 1271*9c5db199SXin Li ABS_MT_TOUCH_MAJOR : 'MT_TOUCH_MAJOR', 1272*9c5db199SXin Li ABS_MT_TOUCH_MINOR : 'MT_TOUCH_MINOR', 1273*9c5db199SXin Li ABS_MT_WIDTH_MAJOR : 'MT_WIDTH_MAJOR', 1274*9c5db199SXin Li ABS_MT_WIDTH_MINOR : 'MT_WIDTH_MINOR', 1275*9c5db199SXin Li ABS_MT_ORIENTATION : 'MT_ORIENTATION', 1276*9c5db199SXin Li ABS_MT_POSITION_X : 'MT_POSITION_X', 1277*9c5db199SXin Li ABS_MT_POSITION_Y : 'MT_POSITION_Y', 1278*9c5db199SXin Li ABS_MT_TOOL_TYPE : 'MT_TOOL_TYPE', 1279*9c5db199SXin Li ABS_MT_BLOB_ID : 'MT_BLOB_ID', 1280*9c5db199SXin Li ABS_MT_TRACKING_ID : 'MT_TRACKING_ID', 1281*9c5db199SXin Li ABS_MT_PRESSURE : 'MT_PRESSURE', 1282*9c5db199SXin Li ABS_MT_DISTANCE : 'MT_DISTANCE' 1283*9c5db199SXin Li }, 1284*9c5db199SXin Li 1285*9c5db199SXin Li # Switches 1286*9c5db199SXin Li EV_SW: { 1287*9c5db199SXin Li SW_LID : 'LID', 1288*9c5db199SXin Li SW_TABLET_MODE : 'TABLET_MODE', 1289*9c5db199SXin Li SW_HEADPHONE_INSERT : 'HEADPHONE_INSERT', 1290*9c5db199SXin Li SW_RFKILL_ALL : 'RFKILL_ALL', 1291*9c5db199SXin Li SW_MICROPHONE_INSERT : 'MICROPHONE_INSERT', 1292*9c5db199SXin Li SW_DOCK : 'DOCK', 1293*9c5db199SXin Li SW_LINEOUT_INSERT : 'LINEOUT_INSERT', 1294*9c5db199SXin Li SW_JACK_PHYSICAL_INSERT : 'JACK_PHYSICAL_INSERT', 1295*9c5db199SXin Li SW_VIDEOOUT_INSERT : 'VIDEOOUT_INSERT', 1296*9c5db199SXin Li SW_CAMERA_LENS_COVER : 'CAMERA_LENS_COVER', 1297*9c5db199SXin Li SW_KEYPAD_SLIDE : 'KEYPAD_SLIDE', 1298*9c5db199SXin Li SW_FRONT_PROXIMITY : 'FRONT_PROXIMITY', 1299*9c5db199SXin Li SW_ROTATE_LOCK : 'ROTATE_LOCK', 1300*9c5db199SXin Li }, 1301*9c5db199SXin Li 1302*9c5db199SXin Li # Misc events 1303*9c5db199SXin Li EV_MSC: { 1304*9c5db199SXin Li MSC_SERIAL : 'SERIAL', 1305*9c5db199SXin Li MSC_PULSELED : 'PULSELED', 1306*9c5db199SXin Li MSC_GESTURE : 'GESTURE', 1307*9c5db199SXin Li MSC_RAW : 'RAW', 1308*9c5db199SXin Li MSC_SCAN : 'SCAN', 1309*9c5db199SXin Li }, 1310*9c5db199SXin Li 1311*9c5db199SXin Li # LEDs 1312*9c5db199SXin Li EV_LED: { 1313*9c5db199SXin Li LED_NUML : 'NUML', 1314*9c5db199SXin Li LED_CAPSL : 'CAPSL', 1315*9c5db199SXin Li LED_SCROLLL : 'SCROLLL', 1316*9c5db199SXin Li LED_COMPOSE : 'COMPOSE', 1317*9c5db199SXin Li LED_KANA : 'KANA', 1318*9c5db199SXin Li LED_SLEEP : 'SLEEP', 1319*9c5db199SXin Li LED_SUSPEND : 'SLEEP', 1320*9c5db199SXin Li LED_MUTE : 'SLEEP', 1321*9c5db199SXin Li LED_MISC : 'SLEEP', 1322*9c5db199SXin Li LED_MAIL : 'SLEEP', 1323*9c5db199SXin Li LED_CHARGING : 'SLEEP', 1324*9c5db199SXin Li }, 1325*9c5db199SXin Li 1326*9c5db199SXin Li # Autorepeat values 1327*9c5db199SXin Li EV_REP: { 1328*9c5db199SXin Li REP_DELAY : 'DELAY', 1329*9c5db199SXin Li REP_PERIOD : 'PERIOD', 1330*9c5db199SXin Li }, 1331*9c5db199SXin Li 1332*9c5db199SXin Li # Sounds 1333*9c5db199SXin Li EV_SND: { 1334*9c5db199SXin Li SND_CLICK : 'CLICK', 1335*9c5db199SXin Li SND_BELL : 'BELL' 1336*9c5db199SXin Li } 1337*9c5db199SXin Li} 1338