import evdev.ecodes as code
from enum import IntEnum

class Button(IntEnum):
    """
    An alias for all the mouse buttons on a mouse in evdev.ecodes. Can be interchanged
    with the evdev.ecodes keys.
    """
    LeftButton = code.BTN_MOUSE
    RightButton = code.BTN_RIGHT
    MiddleButton = code.BTN_MIDDLE
    SideButton = code.BTN_SIDE
    XButton = code.BTN_EXTRA


class Key(IntEnum):
    """
    A simple alias for some of the most used keys in evdev.ecodes.
    These aliases are only here for convenience, as such for lesser used keys you
    can directly use evdev.ecodes.
    """
    Reserved = code.KEY_RESERVED
    Esc = code.KEY_ESC
    F1 = code.KEY_F1
    F2 = code.KEY_F2
    F3 = code.KEY_F3
    F4 = code.KEY_F4
    F5 = code.KEY_F5
    F6 = code.KEY_F6
    F7 = code.KEY_F7
    F8 = code.KEY_F8
    F9 = code.KEY_F9
    F10 = code.KEY_F10
    F11 = code.KEY_F11
    F12 = code.KEY_F12
    F13 = code.KEY_F13
    F14 = code.KEY_F14
    F15 = code.KEY_F15
    F16 = code.KEY_F16
    F17 = code.KEY_F17
    F18 = code.KEY_F18
    F19 = code.KEY_F19
    F20 = code.KEY_F20
    F21 = code.KEY_F21
    F22 = code.KEY_F22
    F23 = code.KEY_F23
    F24 = code.KEY_F24
    Tilde = code.KEY_GRAVE
    Num1 = code.KEY_1
    Num2 = code.KEY_2
    Num3 = code.KEY_3
    Num4 = code.KEY_4
    Num5 = code.KEY_5
    Num6 = code.KEY_6
    Num7 = code.KEY_7
    Num8 = code.KEY_8
    Num9 = code.KEY_9
    Num0 = code.KEY_0
    Minus = code.KEY_MINUS
    Equal = code.KEY_EQUAL
    Backspace = code.KEY_BACKSPACE
    Tab = code.KEY_TAB
    Q = code.KEY_Q
    W = code.KEY_W
    E = code.KEY_E
    R = code.KEY_R
    T = code.KEY_T
    Y = code.KEY_Y
    U = code.KEY_U
    I = code.KEY_I
    O = code.KEY_O
    P = code.KEY_P
    LBracket = code.KEY_LEFTBRACE
    RBracket = code.KEY_RIGHTBRACE
    BackSlash = code.KEY_BACKSLASH
    CapsLock = code.KEY_CAPSLOCK
    A = code.KEY_A
    S = code.KEY_S
    D = code.KEY_D
    F = code.KEY_F
    G = code.KEY_G
    H = code.KEY_H
    J = code.KEY_J
    K = code.KEY_K
    L = code.KEY_L
    SemiColon = code.KEY_SEMICOLON
    Apostrophe = code.KEY_APOSTROPHE
    Enter = code.KEY_ENTER
    LShift = code.KEY_LEFTSHIFT
    Z = code.KEY_Z
    X = code.KEY_X
    C = code.KEY_C
    V = code.KEY_V
    B = code.KEY_B
    N = code.KEY_N
    M = code.KEY_M
    Comma = code.KEY_COMMA
    Period = code.KEY_DOT
    ForwardSlash = code.KEY_SLASH
    RShift = code.KEY_RIGHTSHIFT
    LCtrl = code.KEY_LEFTCTRL
    LMeta = code.KEY_LEFTMETA
    LAlt = code.KEY_LEFTALT
    Space = code.KEY_SPACE
    RMeta = code.KEY_RIGHTMETA
    RAlt = code.KEY_RIGHTALT
    NumpadMult = code.KEY_KPASTERISK
    NumLock = code.KEY_NUMLOCK
    ScrollLock = code.KEY_SCROLLLOCK
    Numpad7 = code.KEY_KP7
    Numpad8 = code.KEY_KP8
    Numpad9 = code.KEY_KP9
    NumpadMinus = code.KEY_KPMINUS
    Numpad4 = code.KEY_KP4
    Numpad5 = code.KEY_KP5
    Numpad6 = code.KEY_KP6
    NumpadPlus = code.KEY_KPPLUS
    Numpad1 = code.KEY_KP1
    Numpad2 = code.KEY_KP2
    Numpad3 = code.KEY_KP3
    Numpad0 = code.KEY_KP0
    NumpadPeriod = code.KEY_KPDOT
    NumpadEnter = code.KEY_KPENTER
    RCtrl = code.KEY_RIGHTCTRL
    NumpadDivide = code.KEY_KPSLASH
    PrintScreen = code.KEY_SYSRQ
    LineFeed = code.KEY_LINEFEED
    Home = code.KEY_HOME
    Up = code.KEY_UP
    PageUp = code.KEY_PAGEUP
    Left = code.KEY_LEFT
    Right = code.KEY_RIGHT
    End = code.KEY_END
    Down = code.KEY_DOWN
    PageDown = code.KEY_PAGEDOWN
    Insert = code.KEY_INSERT
    Delete = code.KEY_DELETE
    Macro = code.KEY_MACRO
    Mute = code.KEY_MUTE
    VolumeDown = code.KEY_VOLUMEDOWN
    VolumeUp = code.KEY_VOLUMEUP
    Power = code.KEY_POWER
    NumpadEqual = code.KEY_KPEQUAL
    NumpadPlusMinus = code.KEY_KPPLUSMINUS
    Pause = code.KEY_PAUSE
    Scale = code.KEY_SCALE
    NumpadComma = code.KEY_KPCOMMA
    Stop = code.KEY_STOP
    Again = code.KEY_AGAIN
    Front = code.KEY_FRONT
    Open = code.KEY_OPEN
    Menu = code.KEY_MENU
    Calc = code.KEY_CALC
    Setup = code.KEY_SETUP
    Sleep = code.KEY_SLEEP
    WakeUp = code.KEY_WAKEUP
    App1 = code.KEY_PROG1
    App2 = code.KEY_PROG2
    Internet = code.KEY_WWW
    Mail = code.KEY_MAIL
    Computer = code.KEY_COMPUTER
    Back = code.KEY_BACK
    Forward = code.KEY_FORWARD
    NextSong = code.KEY_NEXTSONG
    PlayPause = code.KEY_PLAYPAUSE
    PrevSong = code.KEY_PREVIOUSSONG
    Record = code.KEY_RECORD
    Rewind = code.KEY_REWIND
    HomePage = code.KEY_HOMEPAGE
    ScrollUp = code.KEY_SCROLLUP
    ScrollDown = code.KEY_SCROLLDOWN
    NumpadLParen = code.KEY_KPLEFTPAREN
    NumpadRParen = code.KEY_KPRIGHTPAREN
    App3 = code.KEY_PROG3
    App4 = code.KEY_PROG4
    BrightnessDown = code.KEY_BRIGHTNESSDOWN
    BrightnessUp = code.KEY_BRIGHTNESSUP
    Media = code.KEY_MEDIA
    Unknown = code.KEY_UNKNOWN
    Zoom = code.KEY_ZOOM
    Paste = code.KEY_PASTE
    Copy = code.KEY_COPY
    AppsKey = code.KEY_CONTEXT_MENU
    ScrollWheel = code.REL_WHEEL
