This repository was archived by the owner on Feb 1, 2026. It is now read-only.
6.0.4
New Features since v5
- Input no longer clogs up global namespace
- Hotswapping has been optimised to improve performance in the most common use case for Input
- Improved device filtering on Android
- Blacklisted gamepads will no longer report as connected
- The layout of folders in the asset browser has been reworked to make it easier to find functions
input_tick()is dead. Long liveinput_controller_object- Adds
input_verb_get_icon()as an easier alternative toinput_binding_get_icon() - Loading the SDL2 database is now a lot faster when using newer versions of GameMaker (LTS will use the slower legacy code)
- If we cannot find a gamepad in the SDL2 database then we now use the original description rather than
"Unknown" - Adds a suite of new config macros in
__input_config_general()to handle Input's behaviour with different sources across all target platforms - Adds
input_player_gamepad_type_override_set()(and getter) to force gamepad appearance input_ghost_set()now accepts the keywordallto set the state of all playersinput_player_connected()andinput_player_connected()now have an optionalincludeGhostargument- Input now ships with multiple gamepad type macros for easier referencing, such as
INPUT_GAMEPAD_TYPE_XBOX_ONEandINPUT_GAMEPAD_TYPE_JOYCON_LEFT input_source_add(),input_source_set(), andinput_source_share()now have an optionalexclusiveargument to control whether sources are unassigned when calling these functions (this defaults totrueto maintain legacy behaviour)- Adds
input_cursor_limit_boundary()and expandsinput_cursor_limit_get()to include data for this limit type - Adds
input_hotswap_params_set()(and getter) input_multiplayer_params_set()and getter have been expandedinput_binding_scan_params_set()and getter have been expandedINPUT_DEFAULT_2D_MOST_RECENTandINPUT_DEFAULT_OPPOSING_MOST_RECENThave been added to control the default behaviour of 2D checker and opposing checkers respectively- The binding scan error code
INPUT_BINDING_SCAN_EVENT.SOURCE_FILTER_EMPTYhas been added - When scanning for a binding with a source filter enabled, hotswapping is disabled
- Adds
input_binding_scan_time_remaining()to return the amount of time left when scanning for a new binding - Adds
input_verb_group_get_verbs()andinput_verbs_groups_get() - Adds an additional supported value for
INPUT_FALLBACK_PROFILE_BEHAVIORthat prioritises gamepad icons if a gamepad is connected (or required, in the case of consoles) - Adds
input_gamepad_map_contains() - Adds
input_gamepad_is_any_connected() - Adds
input_led_pattern_get() - Adds
input_keyboard_virtual_show()andinput_keyboard_virtual_hide()for use on platforms that support it - Adds
INPUT_POINTER_TYPEmacro that contains the type of pointer available on the current hardware - Adds
input_cursor_mouse_enabled_set()(and getter) to control whether the mouse moves the internal cursor - Adds
input_mouse_enabled_set()(and getter) to control whether the mouse moves the internal cursor - Adds
input_cursor_dx()andinput_cursor_dy() - Adds
input_cursor_inverted_set()(and getter) - Adds
INPUT_WINDOWS_TOUCH,INPUT_SWITCH_TOUCHconfig macros for finer control over touch behavior per platform - Adds
INPUT_ON_MOBILEINPUT_ON_PCINPUT_ON_STEAM_DECKINPUT_ON_CONSOLEINPUT_ON_WEBas read-only constants - Adds
input_player_active_get()andinput_player_active_set()to completely disable player input should you so wish (though you should continue to use "ghost mode" for networked players and AI) - Better support for use of
game_restart()(not that you should be using this highly cursed function) - Adds a secret macro to reduce debug spam from Input shhhh ask if you want to know where it is
Breaking Changes since v5
input_direction()now takes a default direction as the first argument, returned when a thumbstick is in a neutral positioninput_consume()has been renamed toinput_verb_consume()- Setting a binding now consumes every verb to fix edge cases
input_cursor_elastic_set()now defaults to moving the cursor at the same time as moving the elastic pointinput_xy_quick_pressed()has been renamed toinput_check_quick_pressed_2d()input_multiplayer_*()functions have been renamed toinput_join_*()to match the name of the source modeINPUT_DEFAULT_PROFILEShas been replaced by__input_config_verbs()INPUT_VERB_GROUPShas been replaced by__input_config_verb_groups()INPUT_HOTSWAP_CALLBACKhas been replaced byinput_hotswap_params_set()INPUT_MULTIPLAYER_LEAVE_VERBandINPUT_MULTIPLAYER_ABORT_CALLBACKhave been replaced by extra arguments ininput_join_params_set()input_icons()has been removed and replaced withinput_icon_empty()input_icon_not_a_binding()input_icons_gamepad()andinput_icons_keyboard_and_mouse()INPUT_VIBRATION_SWITCH_OS_STRENGTHhas been renamed toINPUT_VIBRATION_JOYCON_STRENGTHand will now only affect Joy-Cons (and will work cross-platform too)input_gyro_enabled_set(),input_gyro_enabled_get(), andinput_gyro_params_set()have been renamed toinput_cursor_gyro…to better indicate their usageINPUT_TOUCH_POINTER_ALLOWEDhas been removed, you may now use the macros in__input_config_general()to configure touch and mouse behavior per-platforminput_swap_gamepad_ab()has been removed and replaced withINPUT_SWITCH_SWAP_AB(for use cross-platform for Nintendo-style gamepads) andINPUT_PS_REGION_SWAP_CONFIRM(which only applies to the PS4 export target specifically)- Many macros from
__input_config_touch()and__input_config_vibration()have been moved to__input_config_general() input_gamepad_get_type()andinput_player_get_gamepad_type()can now returnINPUT_GAMEPAD_TYPE_UNKNOWN
Removed Features since v5
- The combo system has been removed
- The deprecated enum value
INPUT_COORD_SPACE.DISPLAYhas now been fully removed (useINPUT_COORD_SPACE.DEVICEinstead) input_cursor_previous_x()andinput_cursor_previous_y()have been removed (conceptually replaced byinput_cursor_dx()andinput_cursor_dy())