local Input = { Name = "Input", Type = "System", Environment = "All", Functions = { { Name = "GetCursorDelta", Type = "Function", Returns = { { Name = "deltaX", Type = "number", Nilable = false }, { Name = "deltaY", Type = "number", Nilable = false }, }, }, { Name = "GetCursorPosition", Type = "Function", Returns = { { Name = "posX", Type = "number", Nilable = false }, { Name = "posY", Type = "number", Nilable = false }, }, }, { Name = "GetMouseButtonClicked", Type = "Function", Returns = { { Name = "buttonName", Type = "cstring", Nilable = false }, }, }, { Name = "GetMouseButtonName", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "button", Type = "mouseButton", Nilable = false }, }, Returns = { { Name = "buttonName", Type = "cstring", Nilable = false }, }, }, { Name = "GetMouseFoci", Type = "Function", Returns = { { Name = "region", Type = "table", InnerType = "ScriptRegion", Nilable = false }, }, }, { Name = "GetStringFromModifiers", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "modifiers", Type = "number", Nilable = false }, }, Returns = { { Name = "modifierString", Type = "string", Nilable = false }, }, }, { Name = "IsAltKeyDown", Type = "Function", Returns = { { Name = "down", Type = "bool", Nilable = false }, }, }, { Name = "IsControlKeyDown", Type = "Function", Returns = { { Name = "down", Type = "bool", Nilable = false }, }, }, { Name = "IsKeyDown", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "keyOrMouseName", Type = "cstring", Nilable = false }, { Name = "excludeBindingState", Type = "bool", Nilable = false, Default = false }, }, Returns = { { Name = "down", Type = "bool", Nilable = true }, }, }, { Name = "IsLeftAltKeyDown", Type = "Function", Returns = { { Name = "down", Type = "bool", Nilable = false }, }, }, { Name = "IsLeftControlKeyDown", Type = "Function", Returns = { { Name = "down", Type = "bool", Nilable = false }, }, }, { Name = "IsLeftMetaKeyDown", Type = "Function", Returns = { { Name = "down", Type = "bool", Nilable = false }, }, }, { Name = "IsLeftShiftKeyDown", Type = "Function", Returns = { { Name = "down", Type = "bool", Nilable = false }, }, }, { Name = "IsMetaKeyDown", Type = "Function", Returns = { { Name = "down", Type = "bool", Nilable = false }, }, }, { Name = "IsModifierKeyDown", Type = "Function", Returns = { { Name = "down", Type = "bool", Nilable = false }, }, }, { Name = "IsMouseButtonDown", Type = "Function", SecretArguments = "AllowedWhenUntainted", Arguments = { { Name = "button", Type = "mouseButton", Nilable = true }, }, Returns = { { Name = "down", Type = "bool", Nilable = false }, }, }, { Name = "IsRightAltKeyDown", Type = "Function", Returns = { { Name = "down", Type = "bool", Nilable = false }, }, }, { Name = "IsRightControlKeyDown", Type = "Function", Returns = { { Name = "down", Type = "bool", Nilable = false }, }, }, { Name = "IsRightMetaKeyDown", Type = "Function", Returns = { { Name = "down", Type = "bool", Nilable = false }, }, }, { Name = "IsRightShiftKeyDown", Type = "Function", Returns = { { Name = "down", Type = "bool", Nilable = false }, }, }, { Name = "IsShiftKeyDown", Type = "Function", Returns = { { Name = "down", Type = "bool", Nilable = false }, }, }, { Name = "IsUsingGamepad", Type = "Function", Returns = { { Name = "down", Type = "bool", Nilable = false }, }, }, { Name = "IsUsingMouse", Type = "Function", Returns = { { Name = "down", Type = "bool", Nilable = false }, }, }, { Name = "MakeModifiers", Type = "Function", Returns = { { Name = "modifiers", Type = "number", Nilable = false }, }, }, { Name = "SetCursorPosition", Type = "Function", RequiresLimitedInput = true, SecretArguments = "AllowedWhenUntainted", Documentation = { "Insecure code can only call this once in response to gamepad input hardware events." }, Arguments = { { Name = "xPosition", Type = "uiUnit", Nilable = false }, { Name = "yPosition", Type = "uiUnit", Nilable = false }, }, }, { Name = "SimulateMouseClick", Type = "Function", RequiresLimitedInput = true, MouseFocusValidForLimitedInput = true, SecretArguments = "AllowedWhenUntainted", Documentation = { "Effectively the same as SimulateMouseDown plus SimulateMouseUp and consumes limited input for both." }, Arguments = { { Name = "button", Type = "mouseButton", Nilable = false }, }, }, { Name = "SimulateMouseDown", Type = "Function", RequiresLimitedInput = true, MouseFocusValidForLimitedInput = true, SecretArguments = "AllowedWhenUntainted", Documentation = { "Insecure code can only call this once in response to gamepad input hardware events." }, Arguments = { { Name = "button", Type = "mouseButton", Nilable = false }, }, }, { Name = "SimulateMouseUp", Type = "Function", RequiresLimitedInput = true, MouseFocusValidForLimitedInput = true, SecretArguments = "AllowedWhenUntainted", Documentation = { "Insecure code can only call this once in response to gamepad input hardware events." }, Arguments = { { Name = "button", Type = "mouseButton", Nilable = false }, }, }, { Name = "SimulateMouseWheel", Type = "Function", RequiresLimitedInput = true, MouseFocusValidForLimitedInput = true, SecretArguments = "AllowedWhenUntainted", Documentation = { "Insecure code can only call this once in response to gamepad input hardware events." }, Arguments = { { Name = "delta", Type = "number", Nilable = false }, }, }, }, Events = { { Name = "InputDeviceInterfaceTransition", Type = "Event", LiteralName = "INPUT_DEVICE_INTERFACE_TRANSITION", SynchronousEvent = true, Payload = { { Name = "newMode", Type = "InputDeviceInterfaceType", Nilable = false }, { Name = "oldMode", Type = "InputDeviceInterfaceType", Nilable = false }, }, }, }, Tables = { }, Predicates = { { Name = "MouseFocusValidForLimitedInput", Type = "Precondition", FailureMode = "ReturnNothing", Documentation = { "Requires that all mouse foci are not forbidden, hidden from the global environment, fully locked down, script inaccessible, or protected frames (while in combat)" }, }, { Name = "RequiresLimitedInput", Type = "Precondition", FailureMode = "Error", }, }, }; APIDocumentation:AddDocumentationTable(Input);