package config import ( "github.com/holoplot/go-evdev" ) const ( DeviceTypePhysical = "physical" DeviceTypeVirtual = "virtual" DevicePresetKeyboard = "keyboard" DevicePresetGamepad = "gamepad" DevicePresetJoystick = "joystick" DevicePresetMouse = "mouse" RuleTypeButton = "button" RuleTypeButtonCombo = "button-combo" RuleTypeButtonLatched = "button-latched" RuleTypeAxis = "axis" RuleTypeAxisCombined = "axis-combined" RuleTypeAxisToButton = "axis-to-button" RuleTypeAxisToRelaxis = "axis-to-relaxis" RuleTypeModeSelect = "mode-select" CodePrefixButton = "BTN" CodePrefixKey = "KEY" CodePrefixAxis = "ABS" CodePrefixRelaxis = "REL" VirtualDeviceMaxButtons = 74 ) var ( ButtonFromIndex = []evdev.EvCode{ evdev.BTN_TRIGGER, evdev.BTN_THUMB, evdev.BTN_THUMB2, evdev.BTN_TOP, evdev.BTN_TOP2, evdev.BTN_PINKIE, evdev.BTN_BASE, evdev.BTN_BASE2, evdev.BTN_BASE3, evdev.BTN_BASE4, evdev.BTN_BASE5, evdev.BTN_BASE6, evdev.EvCode(0x12c), // decimal 300 evdev.EvCode(0x12d), // decimal 301 evdev.EvCode(0x12e), // decimal 302 evdev.BTN_DEAD, evdev.BTN_TRIGGER_HAPPY1, evdev.BTN_TRIGGER_HAPPY2, evdev.BTN_TRIGGER_HAPPY3, evdev.BTN_TRIGGER_HAPPY4, evdev.BTN_TRIGGER_HAPPY5, evdev.BTN_TRIGGER_HAPPY6, evdev.BTN_TRIGGER_HAPPY7, evdev.BTN_TRIGGER_HAPPY8, evdev.BTN_TRIGGER_HAPPY9, evdev.BTN_TRIGGER_HAPPY10, evdev.BTN_TRIGGER_HAPPY11, evdev.BTN_TRIGGER_HAPPY12, evdev.BTN_TRIGGER_HAPPY13, evdev.BTN_TRIGGER_HAPPY14, evdev.BTN_TRIGGER_HAPPY15, evdev.BTN_TRIGGER_HAPPY16, evdev.BTN_TRIGGER_HAPPY17, evdev.BTN_TRIGGER_HAPPY18, evdev.BTN_TRIGGER_HAPPY19, evdev.BTN_TRIGGER_HAPPY20, evdev.BTN_TRIGGER_HAPPY21, evdev.BTN_TRIGGER_HAPPY22, evdev.BTN_TRIGGER_HAPPY23, evdev.BTN_TRIGGER_HAPPY24, evdev.BTN_TRIGGER_HAPPY25, evdev.BTN_TRIGGER_HAPPY26, evdev.BTN_TRIGGER_HAPPY27, evdev.BTN_TRIGGER_HAPPY28, evdev.BTN_TRIGGER_HAPPY29, evdev.BTN_TRIGGER_HAPPY30, evdev.BTN_TRIGGER_HAPPY31, evdev.BTN_TRIGGER_HAPPY32, evdev.BTN_TRIGGER_HAPPY33, evdev.BTN_TRIGGER_HAPPY34, evdev.BTN_TRIGGER_HAPPY35, evdev.BTN_TRIGGER_HAPPY36, evdev.BTN_TRIGGER_HAPPY37, evdev.BTN_TRIGGER_HAPPY38, evdev.BTN_TRIGGER_HAPPY39, evdev.BTN_TRIGGER_HAPPY40, evdev.EvCode(0x2e8), evdev.EvCode(0x2e9), evdev.EvCode(0x2f0), evdev.EvCode(0x2f1), evdev.EvCode(0x2f2), evdev.EvCode(0x2f3), evdev.EvCode(0x2f4), evdev.EvCode(0x2f5), evdev.EvCode(0x2f6), evdev.EvCode(0x2f7), evdev.EvCode(0x2f8), evdev.EvCode(0x2f9), evdev.EvCode(0x2fa), evdev.EvCode(0x2fb), evdev.EvCode(0x2fc), evdev.EvCode(0x2fd), evdev.EvCode(0x2fe), evdev.EvCode(0x2ff), } ) // Device Presets var ( CapabilitiesPresetGamepad = map[evdev.EvType][]evdev.EvCode{ evdev.EV_ABS: { evdev.ABS_X, evdev.ABS_Y, evdev.ABS_Z, evdev.ABS_RX, evdev.ABS_RY, evdev.ABS_RZ, evdev.ABS_HAT0X, evdev.ABS_HAT0Y, }, evdev.EV_KEY: { evdev.BTN_NORTH, // Xbox 'X', Playstation 'Square' evdev.BTN_SOUTH, // Xbox 'A', Plastation 'X' evdev.BTN_WEST, // Xbox 'Y', Playstation 'Triangle' evdev.BTN_EAST, // Xbox 'B', Playstation 'O' evdev.BTN_THUMBL, evdev.BTN_THUMBR, evdev.BTN_TL, evdev.BTN_TR, evdev.BTN_SELECT, evdev.BTN_START, evdev.BTN_MODE, }, } CapabilitiesPresetJoystick = map[evdev.EvType][]evdev.EvCode{ evdev.EV_ABS: { evdev.ABS_X, evdev.ABS_Y, evdev.ABS_Z, evdev.ABS_RX, evdev.ABS_RY, evdev.ABS_RZ, evdev.ABS_THROTTLE, // Also called "Slider" or "Slider1" evdev.ABS_RUDDER, // Also called "Dial", "Slider2", or "RSlider" }, evdev.EV_KEY: { evdev.BTN_TRIGGER, evdev.BTN_THUMB, evdev.BTN_THUMB2, evdev.BTN_TOP, evdev.BTN_TOP2, evdev.BTN_PINKIE, evdev.BTN_BASE, evdev.BTN_BASE2, evdev.BTN_BASE3, evdev.BTN_BASE4, evdev.BTN_BASE5, evdev.BTN_BASE6, evdev.EvCode(0x12c), // decimal 300 evdev.EvCode(0x12d), // decimal 301 evdev.EvCode(0x12e), // decimal 302 evdev.BTN_DEAD, evdev.BTN_TRIGGER_HAPPY1, evdev.BTN_TRIGGER_HAPPY2, evdev.BTN_TRIGGER_HAPPY3, evdev.BTN_TRIGGER_HAPPY4, evdev.BTN_TRIGGER_HAPPY5, evdev.BTN_TRIGGER_HAPPY6, evdev.BTN_TRIGGER_HAPPY7, evdev.BTN_TRIGGER_HAPPY8, evdev.BTN_TRIGGER_HAPPY9, evdev.BTN_TRIGGER_HAPPY10, evdev.BTN_TRIGGER_HAPPY11, evdev.BTN_TRIGGER_HAPPY12, evdev.BTN_TRIGGER_HAPPY13, evdev.BTN_TRIGGER_HAPPY14, evdev.BTN_TRIGGER_HAPPY15, evdev.BTN_TRIGGER_HAPPY16, evdev.BTN_TRIGGER_HAPPY17, evdev.BTN_TRIGGER_HAPPY18, evdev.BTN_TRIGGER_HAPPY19, evdev.BTN_TRIGGER_HAPPY20, evdev.BTN_TRIGGER_HAPPY21, evdev.BTN_TRIGGER_HAPPY22, evdev.BTN_TRIGGER_HAPPY23, evdev.BTN_TRIGGER_HAPPY24, evdev.BTN_TRIGGER_HAPPY25, evdev.BTN_TRIGGER_HAPPY26, evdev.BTN_TRIGGER_HAPPY27, evdev.BTN_TRIGGER_HAPPY28, evdev.BTN_TRIGGER_HAPPY29, evdev.BTN_TRIGGER_HAPPY30, evdev.BTN_TRIGGER_HAPPY31, evdev.BTN_TRIGGER_HAPPY32, evdev.BTN_TRIGGER_HAPPY33, evdev.BTN_TRIGGER_HAPPY34, evdev.BTN_TRIGGER_HAPPY35, evdev.BTN_TRIGGER_HAPPY36, evdev.BTN_TRIGGER_HAPPY37, evdev.BTN_TRIGGER_HAPPY38, evdev.BTN_TRIGGER_HAPPY39, evdev.BTN_TRIGGER_HAPPY40, evdev.EvCode(0x2e8), evdev.EvCode(0x2e9), evdev.EvCode(0x2f0), evdev.EvCode(0x2f1), evdev.EvCode(0x2f2), evdev.EvCode(0x2f3), evdev.EvCode(0x2f4), evdev.EvCode(0x2f5), evdev.EvCode(0x2f6), evdev.EvCode(0x2f7), evdev.EvCode(0x2f8), evdev.EvCode(0x2f9), evdev.EvCode(0x2fa), evdev.EvCode(0x2fb), evdev.EvCode(0x2fc), evdev.EvCode(0x2fd), evdev.EvCode(0x2fe), evdev.EvCode(0x2ff), }, } CapabilitiesPresetKeyboard = map[evdev.EvType][]evdev.EvCode{ evdev.EV_KEY: { evdev.KEY_ESC, evdev.KEY_1, evdev.KEY_2, evdev.KEY_3, evdev.KEY_4, evdev.KEY_5, evdev.KEY_6, evdev.KEY_7, evdev.KEY_8, evdev.KEY_9, evdev.KEY_0, evdev.KEY_MINUS, evdev.KEY_EQUAL, evdev.KEY_BACKSPACE, evdev.KEY_TAB, evdev.KEY_Q, evdev.KEY_W, evdev.KEY_E, evdev.KEY_R, evdev.KEY_T, evdev.KEY_Y, evdev.KEY_U, evdev.KEY_I, evdev.KEY_O, evdev.KEY_P, evdev.KEY_LEFTBRACE, evdev.KEY_RIGHTBRACE, evdev.KEY_ENTER, evdev.KEY_LEFTCTRL, evdev.KEY_A, evdev.KEY_S, evdev.KEY_D, evdev.KEY_F, evdev.KEY_G, evdev.KEY_H, evdev.KEY_J, evdev.KEY_K, evdev.KEY_L, evdev.KEY_SEMICOLON, evdev.KEY_APOSTROPHE, evdev.KEY_GRAVE, evdev.KEY_LEFTSHIFT, evdev.KEY_BACKSLASH, evdev.KEY_Z, evdev.KEY_X, evdev.KEY_C, evdev.KEY_V, evdev.KEY_B, evdev.KEY_N, evdev.KEY_M, evdev.KEY_COMMA, evdev.KEY_DOT, evdev.KEY_SLASH, evdev.KEY_RIGHTSHIFT, evdev.KEY_KPASTERISK, evdev.KEY_LEFTALT, evdev.KEY_SPACE, evdev.KEY_CAPSLOCK, evdev.KEY_F1, evdev.KEY_F2, evdev.KEY_F3, evdev.KEY_F4, evdev.KEY_F5, evdev.KEY_F6, evdev.KEY_F7, evdev.KEY_F8, evdev.KEY_F9, evdev.KEY_F10, evdev.KEY_NUMLOCK, evdev.KEY_SCROLLLOCK, evdev.KEY_KP7, evdev.KEY_KP8, evdev.KEY_KP9, evdev.KEY_KPMINUS, evdev.KEY_KP4, evdev.KEY_KP5, evdev.KEY_KP6, evdev.KEY_KPPLUS, evdev.KEY_KP1, evdev.KEY_KP2, evdev.KEY_KP3, evdev.KEY_KP0, evdev.KEY_KPDOT, evdev.KEY_ZENKAKUHANKAKU, evdev.KEY_102ND, evdev.KEY_F11, evdev.KEY_F12, evdev.KEY_RO, evdev.KEY_KATAKANA, evdev.KEY_HIRAGANA, evdev.KEY_HENKAN, evdev.KEY_KATAKANAHIRAGANA, evdev.KEY_MUHENKAN, evdev.KEY_KPJPCOMMA, evdev.KEY_KPENTER, evdev.KEY_RIGHTCTRL, evdev.KEY_KPSLASH, evdev.KEY_SYSRQ, evdev.KEY_RIGHTALT, evdev.KEY_LINEFEED, evdev.KEY_HOME, evdev.KEY_UP, evdev.KEY_PAGEUP, evdev.KEY_LEFT, evdev.KEY_RIGHT, evdev.KEY_END, evdev.KEY_DOWN, evdev.KEY_PAGEDOWN, evdev.KEY_INSERT, evdev.KEY_DELETE, evdev.KEY_MACRO, evdev.KEY_MUTE, evdev.KEY_VOLUMEDOWN, evdev.KEY_VOLUMEUP, evdev.KEY_KPEQUAL, evdev.KEY_KPPLUSMINUS, evdev.KEY_PAUSE, evdev.KEY_SCALE, evdev.KEY_KPCOMMA, evdev.KEY_HANGEUL, evdev.KEY_HANJA, evdev.KEY_YEN, evdev.KEY_LEFTMETA, evdev.KEY_RIGHTMETA, evdev.KEY_COMPOSE, evdev.KEY_F13, evdev.KEY_F14, evdev.KEY_F15, evdev.KEY_F16, evdev.KEY_F17, evdev.KEY_F18, evdev.KEY_F19, evdev.KEY_F20, evdev.KEY_F21, evdev.KEY_F22, evdev.KEY_F23, evdev.KEY_F24, }, } CapabilitiesPresetMouse = map[evdev.EvType][]evdev.EvCode{ evdev.EV_REL: { evdev.REL_X, evdev.REL_Y, evdev.REL_WHEEL, evdev.REL_HWHEEL, }, evdev.EV_KEY: { evdev.BTN_LEFT, evdev.BTN_MIDDLE, evdev.BTN_RIGHT, evdev.BTN_SIDE, evdev.BTN_EXTRA, evdev.BTN_FORWARD, evdev.BTN_BACK, }, } )