# Copyright 2006, Michael Hewner # # This is a part of ruby evdev # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, version 2 of the License, # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA module Evdev # Just a place to dump the mappings of the various evdev codes. This file was # generated by manually munging /usr/include/linux/input.h for its #defines so # it's not necessarily up to date or complete. # # [device_type] mapping device type codes to names. Use feature_type_name for # simple remap rather than accessing the variable directly # [bus] mapping bus type codes to names. You should just use the # EventDevice#bus_type_name # [sync, keycode, button, etc..] All the rest are name mappings for the various # features of a specific type class CodeMappings attr_accessor :sync, :keycode, :button, :relative_axis, :absolute_axis attr_accessor :misc, :led, :repeat, :sound, :force_feedback, :bus, :device_type def CodeMappings.feature_type_name(feature_type_code) return @device_type[feature_type_code] end def CodeMappings.feature_name(feature_type_code, feature_code) return @type_to_feature_names[feature_type_code].fetch(feature_code, "unknown") end def CodeMappings.bus_type(bus_type_code) return @bus[bus_type_code] end @sync = Hash.new @sync[0] = 'REPORT' @sync[1] = 'CONFIG' @keycode = Hash.new @keycode[0] = 'RESERVED' @keycode[1] = 'ESC' @keycode[2] = '1' @keycode[3] = '2' @keycode[4] = '3' @keycode[5] = '4' @keycode[6] = '5' @keycode[7] = '6' @keycode[8] = '7' @keycode[9] = '8' @keycode[10] = '9' @keycode[11] = '0' @keycode[12] = 'MINUS' @keycode[13] = 'EQUAL' @keycode[14] = 'BACKSPACE' @keycode[15] = 'TAB' @keycode[16] = 'Q' @keycode[17] = 'W' @keycode[18] = 'E' @keycode[19] = 'R' @keycode[20] = 'T' @keycode[21] = 'Y' @keycode[22] = 'U' @keycode[23] = 'I' @keycode[24] = 'O' @keycode[25] = 'P' @keycode[26] = 'LEFTBRACE' @keycode[27] = 'RIGHTBRACE' @keycode[28] = 'ENTER' @keycode[29] = 'LEFTCTRL' @keycode[30] = 'A' @keycode[31] = 'S' @keycode[32] = 'D' @keycode[33] = 'F' @keycode[34] = 'G' @keycode[35] = 'H' @keycode[36] = 'J' @keycode[37] = 'K' @keycode[38] = 'L' @keycode[39] = 'SEMICOLON' @keycode[40] = 'APOSTROPHE' @keycode[41] = 'GRAVE' @keycode[42] = 'LEFTSHIFT' @keycode[43] = 'BACKSLASH' @keycode[44] = 'Z' @keycode[45] = 'X' @keycode[46] = 'C' @keycode[47] = 'V' @keycode[48] = 'B' @keycode[49] = 'N' @keycode[50] = 'M' @keycode[51] = 'COMMA' @keycode[52] = 'DOT' @keycode[53] = 'SLASH' @keycode[54] = 'RIGHTSHIFT' @keycode[55] = 'KPASTERISK' @keycode[56] = 'LEFTALT' @keycode[57] = 'SPACE' @keycode[58] = 'CAPSLOCK' @keycode[59] = 'F1' @keycode[60] = 'F2' @keycode[61] = 'F3' @keycode[62] = 'F4' @keycode[63] = 'F5' @keycode[64] = 'F6' @keycode[65] = 'F7' @keycode[66] = 'F8' @keycode[67] = 'F9' @keycode[68] = 'F10' @keycode[69] = 'NUMLOCK' @keycode[70] = 'SCROLLLOCK' @keycode[71] = 'KP7' @keycode[72] = 'KP8' @keycode[73] = 'KP9' @keycode[74] = 'KPMINUS' @keycode[75] = 'KP4' @keycode[76] = 'KP5' @keycode[77] = 'KP6' @keycode[78] = 'KPPLUS' @keycode[79] = 'KP1' @keycode[80] = 'KP2' @keycode[81] = 'KP3' @keycode[82] = 'KP0' @keycode[83] = 'KPDOT' @keycode[84] = '103RD' @keycode[85] = 'ZENKAKUHANKAKU' @keycode[86] = '102ND' @keycode[87] = 'F11' @keycode[88] = 'F12' @keycode[89] = 'RO' @keycode[90] = 'KATAKANA' @keycode[91] = 'HIRAGANA' @keycode[92] = 'HENKAN' @keycode[93] = 'KATAKANAHIRAGANA' @keycode[94] = 'MUHENKAN' @keycode[95] = 'KPJPCOMMA' @keycode[96] = 'KPENTER' @keycode[97] = 'RIGHTCTRL' @keycode[98] = 'KPSLASH' @keycode[99] = 'SYSRQ' @keycode[100] = 'RIGHTALT' @keycode[101] = 'LINEFEED' @keycode[102] = 'HOME' @keycode[103] = 'UP' @keycode[104] = 'PAGEUP' @keycode[105] = 'LEFT' @keycode[106] = 'RIGHT' @keycode[107] = 'END' @keycode[108] = 'DOWN' @keycode[109] = 'PAGEDOWN' @keycode[110] = 'INSERT' @keycode[111] = 'DELETE' @keycode[112] = 'MACRO' @keycode[113] = 'MUTE' @keycode[114] = 'VOLUMEDOWN' @keycode[115] = 'VOLUMEUP' @keycode[116] = 'POWER' @keycode[117] = 'KPEQUAL' @keycode[118] = 'KPPLUSMINUS' @keycode[119] = 'PAUSE' @keycode[121] = 'KPCOMMA' @keycode[122] = 'HANGUEL' @keycode[123] = 'HANJA' @keycode[124] = 'YEN' @keycode[125] = 'LEFTMETA' @keycode[126] = 'RIGHTMETA' @keycode[127] = 'COMPOSE' @keycode[128] = 'STOP' @keycode[129] = 'AGAIN' @keycode[130] = 'PROPS' @keycode[131] = 'UNDO' @keycode[132] = 'FRONT' @keycode[133] = 'COPY' @keycode[134] = 'OPEN' @keycode[135] = 'PASTE' @keycode[136] = 'FIND' @keycode[137] = 'CUT' @keycode[138] = 'HELP' @keycode[139] = 'MENU' @keycode[140] = 'CALC' @keycode[141] = 'SETUP' @keycode[142] = 'SLEEP' @keycode[143] = 'WAKEUP' @keycode[144] = 'FILE' @keycode[145] = 'SENDFILE' @keycode[146] = 'DELETEFILE' @keycode[147] = 'XFER' @keycode[148] = 'PROG1' @keycode[149] = 'PROG2' @keycode[150] = 'WWW' @keycode[151] = 'MSDOS' @keycode[152] = 'COFFEE' @keycode[153] = 'DIRECTION' @keycode[154] = 'CYCLEWINDOWS' @keycode[155] = 'MAIL' @keycode[156] = 'BOOKMARKS' @keycode[157] = 'COMPUTER' @keycode[158] = 'BACK' @keycode[159] = 'FORWARD' @keycode[160] = 'CLOSECD' @keycode[161] = 'EJECTCD' @keycode[162] = 'EJECTCLOSECD' @keycode[163] = 'NEXTSONG' @keycode[164] = 'PLAYPAUSE' @keycode[165] = 'PREVIOUSSONG' @keycode[166] = 'STOPCD' @keycode[167] = 'RECORD' @keycode[168] = 'REWIND' @keycode[169] = 'PHONE' @keycode[170] = 'ISO' @keycode[171] = 'CONFIG' @keycode[172] = 'HOMEPAGE' @keycode[173] = 'REFRESH' @keycode[174] = 'EXIT' @keycode[175] = 'MOVE' @keycode[176] = 'EDIT' @keycode[177] = 'SCROLLUP' @keycode[178] = 'SCROLLDOWN' @keycode[179] = 'KPLEFTPAREN' @keycode[180] = 'KPRIGHTPAREN' @keycode[183] = 'F13' @keycode[184] = 'F14' @keycode[185] = 'F15' @keycode[186] = 'F16' @keycode[187] = 'F17' @keycode[188] = 'F18' @keycode[189] = 'F19' @keycode[190] = 'F20' @keycode[191] = 'F21' @keycode[192] = 'F22' @keycode[193] = 'F23' @keycode[194] = 'F24' @keycode[200] = 'PLAYCD' @keycode[201] = 'PAUSECD' @keycode[202] = 'PROG3' @keycode[203] = 'PROG4' @keycode[205] = 'SUSPEND' @keycode[206] = 'CLOSE' @keycode[207] = 'PLAY' @keycode[208] = 'FASTFORWARD' @keycode[209] = 'BASSBOOST' @keycode[210] = 'PRINT' @keycode[211] = 'HP' @keycode[212] = 'CAMERA' @keycode[213] = 'SOUND' @keycode[214] = 'QUESTION' @keycode[215] = 'EMAIL' @keycode[216] = 'CHAT' @keycode[217] = 'SEARCH' @keycode[218] = 'CONNECT' @keycode[219] = 'FINANCE' @keycode[220] = 'SPORT' @keycode[221] = 'SHOP' @keycode[222] = 'ALTERASE' @keycode[223] = 'CANCEL' @keycode[224] = 'BRIGHTNESSDOWN' @keycode[225] = 'BRIGHTNESSUP' @keycode[226] = 'MEDIA' @keycode[240] = 'UNKNOWN' @keycode[0x160] = 'OK' @keycode[0x161] = 'SELECT' @keycode[0x162] = 'GOTO' @keycode[0x163] = 'CLEAR' @keycode[0x164] = 'POWER2' @keycode[0x165] = 'OPTION' @keycode[0x166] = 'INFO' @keycode[0x167] = 'TIME' @keycode[0x168] = 'VENDOR' @keycode[0x169] = 'ARCHIVE' @keycode[0x16a] = 'PROGRAM' @keycode[0x16b] = 'CHANNEL' @keycode[0x16c] = 'FAVORITES' @keycode[0x16d] = 'EPG' @keycode[0x16e] = 'PVR' @keycode[0x16f] = 'MHP' @keycode[0x170] = 'LANGUAGE' @keycode[0x171] = 'TITLE' @keycode[0x172] = 'SUBTITLE' @keycode[0x173] = 'ANGLE' @keycode[0x174] = 'ZOOM' @keycode[0x175] = 'MODE' @keycode[0x176] = 'KEYBOARD' @keycode[0x177] = 'SCREEN' @keycode[0x178] = 'PC' @keycode[0x179] = 'TV' @keycode[0x17a] = 'TV2' @keycode[0x17b] = 'VCR' @keycode[0x17c] = 'VCR2' @keycode[0x17d] = 'SAT' @keycode[0x17e] = 'SAT2' @keycode[0x17f] = 'CD' @keycode[0x180] = 'TAPE' @keycode[0x181] = 'RADIO' @keycode[0x182] = 'TUNER' @keycode[0x183] = 'PLAYER' @keycode[0x184] = 'TEXT' @keycode[0x185] = 'DVD' @keycode[0x186] = 'AUX' @keycode[0x187] = 'MP3' @keycode[0x188] = 'AUDIO' @keycode[0x189] = 'VIDEO' @keycode[0x18a] = 'DIRECTORY' @keycode[0x18b] = 'LIST' @keycode[0x18c] = 'MEMO' @keycode[0x18d] = 'CALENDAR' @keycode[0x18e] = 'RED' @keycode[0x18f] = 'GREEN' @keycode[0x190] = 'YELLOW' @keycode[0x191] = 'BLUE' @keycode[0x192] = 'CHANNELUP' @keycode[0x193] = 'CHANNELDOWN' @keycode[0x194] = 'FIRST' @keycode[0x195] = 'LAST' @keycode[0x196] = 'AB' @keycode[0x197] = 'NEXT' @keycode[0x198] = 'RESTART' @keycode[0x199] = 'SLOW' @keycode[0x19a] = 'SHUFFLE' @keycode[0x19b] = 'BREAK' @keycode[0x19c] = 'PREVIOUS' @keycode[0x19d] = 'DIGITS' @keycode[0x19e] = 'TEEN' @keycode[0x19f] = 'TWEN' @keycode[0x1c0] = 'DEL_EOL' @keycode[0x1c1] = 'DEL_EOS' @keycode[0x1c2] = 'INS_LINE' @keycode[0x1c3] = 'DEL_LINE' @keycode[0x1d0] = 'FN' @keycode[0x1d1] = 'FN_ESC' @keycode[0x1d2] = 'FN_F1' @keycode[0x1d3] = 'FN_F2' @keycode[0x1d4] = 'FN_F3' @keycode[0x1d5] = 'FN_F4' @keycode[0x1d6] = 'FN_F5' @keycode[0x1d7] = 'FN_F6' @keycode[0x1d8] = 'FN_F7' @keycode[0x1d9] = 'FN_F8' @keycode[0x1da] = 'FN_F9' @keycode[0x1db] = 'FN_F10' @keycode[0x1dc] = 'FN_F11' @keycode[0x1dd] = 'FN_F12' @keycode[0x1de] = 'FN_1' @keycode[0x1df] = 'FN_2' @keycode[0x1e0] = 'FN_D' @keycode[0x1e1] = 'FN_E' @keycode[0x1e2] = 'FN_F' @keycode[0x1e3] = 'FN_S' @keycode[0x1e4] = 'FN_B' @keycode[0x1ff] = 'MAX' @button = Hash.new @button[0x100] = 'MISC' @button[0x100] = '0' @button[0x101] = '1' @button[0x102] = '2' @button[0x103] = '3' @button[0x104] = '4' @button[0x105] = '5' @button[0x106] = '6' @button[0x107] = '7' @button[0x108] = '8' @button[0x109] = '9' @button[0x110] = 'MOUSE' @button[0x110] = 'LEFT' @button[0x111] = 'RIGHT' @button[0x112] = 'MIDDLE' @button[0x113] = 'SIDE' @button[0x114] = 'EXTRA' @button[0x115] = 'FORWARD' @button[0x116] = 'BACK' @button[0x117] = 'TASK' @button[0x120] = 'JOYSTICK' @button[0x120] = 'TRIGGER' @button[0x121] = 'THUMB' @button[0x122] = 'THUMB2' @button[0x123] = 'TOP' @button[0x124] = 'TOP2' @button[0x125] = 'PINKIE' @button[0x126] = 'BASE' @button[0x127] = 'BASE2' @button[0x128] = 'BASE3' @button[0x129] = 'BASE4' @button[0x12a] = 'BASE5' @button[0x12b] = 'BASE6' @button[0x12f] = 'DEAD' @button[0x130] = 'GAMEPAD' @button[0x130] = 'A' @button[0x131] = 'B' @button[0x132] = 'C' @button[0x133] = 'X' @button[0x134] = 'Y' @button[0x135] = 'Z' @button[0x136] = 'TL' @button[0x137] = 'TR' @button[0x138] = 'TL2' @button[0x139] = 'TR2' @button[0x13a] = 'SELECT' @button[0x13b] = 'START' @button[0x13c] = 'MODE' @button[0x13d] = 'THUMBL' @button[0x13e] = 'THUMBR' @button[0x140] = 'DIGI' @button[0x140] = 'TOOL_PEN' @button[0x141] = 'TOOL_RUBBER' @button[0x142] = 'TOOL_BRUSH' @button[0x143] = 'TOOL_PENCIL' @button[0x144] = 'TOOL_AIRBRUSH' @button[0x145] = 'TOOL_FINGER' @button[0x146] = 'TOOL_MOUSE' @button[0x147] = 'TOOL_LENS' @button[0x14a] = 'TOUCH' @button[0x14b] = 'STYLUS' @button[0x14c] = 'STYLUS2' @button[0x14d] = 'TOOL_DOUBLETAP' @button[0x14e] = 'TOOL_TRIPLETAP' @button[0x150] = 'WHEEL' @button[0x150] = 'GEAR_DOWN' @button[0x151] = 'GEAR_UP' @relative_axis = Hash.new @relative_axis[0x00] = 'X' @relative_axis[0x01] = 'Y' @relative_axis[0x02] = 'Z' @relative_axis[0x03] = 'RX' @relative_axis[0x04] = 'RY' @relative_axis[0x05] = 'RZ' @relative_axis[0x06] = 'HWHEEL' @relative_axis[0x07] = 'DIAL' @relative_axis[0x08] = 'WHEEL' @relative_axis[0x09] = 'MISC' @relative_axis[0x0f] = 'MAX' @absolute_axis = Hash.new @absolute_axis[0x00] = 'X' @absolute_axis[0x01] = 'Y' @absolute_axis[0x02] = 'Z' @absolute_axis[0x03] = 'RX' @absolute_axis[0x04] = 'RY' @absolute_axis[0x05] = 'RZ' @absolute_axis[0x06] = 'THROTTLE' @absolute_axis[0x07] = 'RUDDER' @absolute_axis[0x08] = 'WHEEL' @absolute_axis[0x09] = 'GAS' @absolute_axis[0x0a] = 'BRAKE' @absolute_axis[0x10] = 'HAT0X' @absolute_axis[0x11] = 'HAT0Y' @absolute_axis[0x12] = 'HAT1X' @absolute_axis[0x13] = 'HAT1Y' @absolute_axis[0x14] = 'HAT2X' @absolute_axis[0x15] = 'HAT2Y' @absolute_axis[0x16] = 'HAT3X' @absolute_axis[0x17] = 'HAT3Y' @absolute_axis[0x18] = 'PRESSURE' @absolute_axis[0x19] = 'DISTANCE' @absolute_axis[0x1a] = 'TILT_X' @absolute_axis[0x1b] = 'TILT_Y' @absolute_axis[0x1c] = 'TOOL_WIDTH' @absolute_axis[0x20] = 'VOLUME' @absolute_axis[0x28] = 'MISC' @absolute_axis[0x3f] = 'MAX' @misc = Hash.new @misc[0x00] = 'SERIAL' @misc[0x01] = 'PULSELED' @misc[0x02] = 'GESTURE' @misc[0x03] = 'RAW' @misc[0x04] = 'SCAN' @misc[0x07] = 'MAX' @led = Hash.new @led[0x00] = 'NUML' @led[0x01] = 'CAPSL' @led[0x02] = 'SCROLLL' @led[0x03] = 'COMPOSE' @led[0x04] = 'KANA' @led[0x05] = 'SLEEP' @led[0x06] = 'SUSPEND' @led[0x07] = 'MUTE' @led[0x08] = 'MISC' @led[0x09] = 'MAIL' @led[0x0a] = 'CHARGING' @led[0x0f] = 'MAX' @repeat = Hash.new @repeat[0x00] = 'DELAY' @repeat[0x01] = 'PERIOD' @repeat[0x01] = 'MAX' @sound = Hash.new @sound[0x00] = 'CLICK' @sound[0x01] = 'BELL' @sound[0x02] = 'TONE' @sound[0x07] = 'MAX' @force_feedback = Hash.new @force_feedback[0x00] = 'STATUS_STOPPED' @force_feedback[0x01] = 'STATUS_PLAYING' @force_feedback[0x01] = 'STATUS_MAX' @force_feedback[0x00] = 'BTN_OFFSET' @force_feedback[0x40] = 'ABS_OFFSET' @force_feedback[0x50] = 'RUMBLE' @force_feedback[0x51] = 'PERIODIC' @force_feedback[0x52] = 'CONSTANT' @force_feedback[0x53] = 'SPRING' @force_feedback[0x54] = 'FRICTION' @force_feedback[0x55] = 'DAMPER' @force_feedback[0x56] = 'INERTIA' @force_feedback[0x57] = 'RAMP' @force_feedback[0x58] = 'SQUARE' @force_feedback[0x59] = 'TRIANGLE' @force_feedback[0x5a] = 'SINE' @force_feedback[0x5b] = 'SAW_UP' @force_feedback[0x5c] = 'SAW_DOWN' @force_feedback[0x5d] = 'CUSTOM' @force_feedback[0x60] = 'GAIN' @force_feedback[0x61] = 'AUTOCENTER' @force_feedback[0x7f] = 'MAX' @bus = Hash.new @bus[0x01] = 'PCI' @bus[0x02] = 'ISAPNP' @bus[0x03] = 'USB' @bus[0x04] = 'HIL' @bus[0x05] = 'BLUETOOTH' @bus[0x10] = 'ISA' @bus[0x11] = 'I8042' @bus[0x12] = 'XTKBD' @bus[0x13] = 'RS232' @bus[0x14] = 'GAMEPORT' @bus[0x15] = 'PARPORT' @bus[0x16] = 'AMIGA' @bus[0x17] = 'ADB' @bus[0x18] = 'I2C' @bus[0x19] = 'HOST' @device_type = Hash.new @device_type[0x00] = 'SYN' @device_type[0x01] = 'KEY' @device_type[0x02] = 'REL' @device_type[0x03] = 'ABS' @device_type[0x04] = 'MSC' @device_type[0x11] = 'LED' @device_type[0x12] = 'SND' @device_type[0x14] = 'REP' @device_type[0x15] = 'FF' @device_type[0x16] = 'PWR' @device_type[0x17] = 'FF_STATUS' @device_type[0x1f] = 'MAX' @type_to_feature_names = Hash.new @type_to_feature_names.default = Hash.new @type_to_feature_names[0x00] = @sync @type_to_feature_names[0x01] = @keycode @type_to_feature_names[0x02] = @relative_axis @type_to_feature_names[0x03] = @absolute_axis @type_to_feature_names[0x04] = @misc @type_to_feature_names[0x11] = @led @type_to_feature_names[0x12] = @sound @type_to_feature_names[0x14] = @repeat @type_to_feature_names[0x15] = @force_feedback end end # module Evdev