local Control = require('Legacy.Systems.Controls.Control')

local self = {
    Escape            = Button.KeyboardEscape,
    SystemMap         = Button.KeyboardTab,
    Reload            = Button.KeyboardF7,
    ToggleSound       = Button.KeyboardF8,
    ToggleProfiler    = Button.KeyboardF10,
    ToggleFullscreen  = Button.KeyboardF11,
    Screenshot        = Button.KeyboardF12,
    NewBackground     = Button.KeyboardB,
    TimeAccel         = Button.KeyboardH,
    ToggleMetrics     = Button.KeyboardK,
    ToggleLights      = Button.KeyboardL,
    AutoNav           = Button.KeyboardM,      -- TODO: move to ShipBindings.lua
    Pause             = Button.KeyboardP,
    ToggleHUD         = Button.KeyboardV,      -- TODO: move to ShipBindings.lua
    ToggleSensors     = Button.KeyboardZ,      -- TODO: move to ShipBindings.lua
    ToggleWireframe   = Button.KeyboardU,
    ScoreNebulaBad    = Button.KeyboardMinus,  -- does nothing
    ScoreNebulaGood   = Button.KeyboardEqual,  -- does nothing
    CameraFirstPerson = Button.KeyboardF1,
    CameraChase       = Button.KeyboardF2,
    CameraOrbit       = Button.KeyboardF3,
    Exit              = Button.SystemExit, -- Modifier.Ctrl + Button.W or Modifier.Alt + Button.Q

    All = Control.Or(
            Control.Key(Button.KeyboardA),
            Control.Key(Button.KeyboardB),
            Control.Key(Button.KeyboardC),
            Control.Key(Button.KeyboardD),
            Control.Key(Button.KeyboardE),
            Control.Key(Button.KeyboardF),
            Control.Key(Button.KeyboardG),
            Control.Key(Button.KeyboardI),
            Control.Key(Button.KeyboardJ),
            Control.Key(Button.KeyboardK),
            Control.Key(Button.KeyboardL),
            Control.Key(Button.KeyboardM),
            Control.Key(Button.KeyboardN),
            Control.Key(Button.KeyboardO),
            Control.Key(Button.KeyboardP),
            Control.Key(Button.KeyboardQ),
            Control.Key(Button.KeyboardR),
            Control.Key(Button.KeyboardS),
            Control.Key(Button.KeyboardT),
            Control.Key(Button.KeyboardU),
            Control.Key(Button.KeyboardV),
            Control.Key(Button.KeyboardW),
            Control.Key(Button.KeyboardX),
            Control.Key(Button.KeyboardY),
            Control.Key(Button.KeyboardZ),
            Control.Key(Button.KeyboardKey0),
            Control.Key(Button.KeyboardKey1),
            Control.Key(Button.KeyboardKey2),
            Control.Key(Button.KeyboardKey3),
            Control.Key(Button.KeyboardKey4),
            Control.Key(Button.KeyboardKey5),
            Control.Key(Button.KeyboardKey6),
            Control.Key(Button.KeyboardKey7),
            Control.Key(Button.KeyboardKey8),
            Control.Key(Button.KeyboardKey9),
            Control.Key(Button.KeyboardNumpad0),
            Control.Key(Button.KeyboardNumpad1),
            Control.Key(Button.KeyboardNumpad2),
            Control.Key(Button.KeyboardNumpad3),
            Control.Key(Button.KeyboardNumpad4),
            Control.Key(Button.KeyboardNumpad5),
            Control.Key(Button.KeyboardNumpad6),
            Control.Key(Button.KeyboardNumpad7),
            Control.Key(Button.KeyboardNumpad8),
            Control.Key(Button.KeyboardNumpad9),
            Control.Key(Button.KeyboardNumLock),
            Control.Key(Button.KeyboardNumpadDivide),
            Control.Key(Button.KeyboardNumpadMultiply),
            Control.Key(Button.KeyboardNumpadSubtract),
            Control.Key(Button.KeyboardNumpadAdd),
            Control.Key(Button.KeyboardNumpadEnter),
            Control.Key(Button.KeyboardNumpadDecimal),
            Control.Key(Button.KeyboardBackspace),
            Control.Key(Button.KeyboardEscape),
            Control.Key(Button.KeyboardEnter),
            Control.Key(Button.KeyboardSpace),
            Control.Key(Button.KeyboardTab),
            Control.Key(Button.KeyboardBackslash),
            -- Control.Key(Button.KeyboardCapsLock),
            Control.Key(Button.KeyboardMinus),
            Control.Key(Button.KeyboardEqual),
            Control.Key(Button.KeyboardBracketLeft),
            Control.Key(Button.KeyboardBracketRight),
            Control.Key(Button.KeyboardBackslash),
            Control.Key(Button.KeyboardSemicolon),
            Control.Key(Button.KeyboardQuote),
            Control.Key(Button.KeyboardComma),
            Control.Key(Button.KeyboardPeriod),
            Control.Key(Button.KeyboardSlash),
            Control.Key(Button.KeyboardScrollLock),
            Control.Key(Button.KeyboardPause),
            Control.Key(Button.KeyboardInsert),
            Control.Key(Button.KeyboardDelete),
            Control.Key(Button.KeyboardHome),
            Control.Key(Button.KeyboardEnd),
            Control.Key(Button.KeyboardPageUp),
            Control.Key(Button.KeyboardPageDown),
            Control.Key(Button.KeyboardRight),
            Control.Key(Button.KeyboardLeft),
            Control.Key(Button.KeyboardDown),
            Control.Key(Button.KeyboardUp),
            Control.Key(Button.MouseLeft),
            Control.Key(Button.MouseMiddle),
            Control.Key(Button.MouseRight),
            Control.Key(Button.MouseX1),
            Control.Key(Button.MouseX2),
            Control.Key(Button.GamepadSouth),
            Control.Key(Button.GamepadEast),
            Control.Key(Button.GamepadWest),
            Control.Key(Button.GamepadNorth),
            Control.Key(Button.GamepadSelect),
            Control.Key(Button.GamepadMode),
            Control.Key(Button.GamepadStart),
            Control.Key(Button.GamepadLeftStickX),
            Control.Key(Button.GamepadLeftStickY),
            Control.Key(Button.GamepadRightStickX),
            Control.Key(Button.GamepadRightStickY),
            Control.Key(Button.GamepadLeftTrigger),
            Control.Key(Button.GamepadRightTrigger),
            Control.Key(Button.GamepadLeftTrigger2),
            Control.Key(Button.GamepadRightTrigger2),
            Control.Key(Button.GamepadDPadUp),
            Control.Key(Button.GamepadDPadDown),
            Control.Key(Button.GamepadDPadLeft),
            Control.Key(Button.GamepadDPadRight),
            Control.Key(Button.GamepadLeftTrigger),
            Control.Key(Button.GamepadRightTrigger))
        :delta(),

}

return self
