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 keywordall
to set the state of all playersinput_player_connected()
andinput_player_connected()
now have an optionalincludeGhost
argument- Input now ships with multiple gamepad type macros for easier referencing, such as
INPUT_GAMEPAD_TYPE_XBOX_ONE
andINPUT_GAMEPAD_TYPE_JOYCON_LEFT
input_source_add()
,input_source_set()
, andinput_source_share()
now have an optionalexclusive
argument to control whether sources are unassigned when calling these functions (this defaults totrue
to 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_RECENT
andINPUT_DEFAULT_OPPOSING_MOST_RECENT
have 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_EMPTY
has 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_BEHAVIOR
that 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_TYPE
macro 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_TOUCH
config macros for finer control over touch behavior per platform - Adds
INPUT_ON_MOBILE
INPUT_ON_PC
INPUT_ON_STEAM_DECK
INPUT_ON_CONSOLE
INPUT_ON_WEB
as 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_PROFILES
has been replaced by__input_config_verbs()
INPUT_VERB_GROUPS
has been replaced by__input_config_verb_groups()
INPUT_HOTSWAP_CALLBACK
has been replaced byinput_hotswap_params_set()
INPUT_MULTIPLAYER_LEAVE_VERB
andINPUT_MULTIPLAYER_ABORT_CALLBACK
have 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_STRENGTH
has been renamed toINPUT_VIBRATION_JOYCON_STRENGTH
and 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_ALLOWED
has 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.DISPLAY
has now been fully removed (useINPUT_COORD_SPACE.DEVICE
instead) input_cursor_previous_x()
andinput_cursor_previous_y()
have been removed (conceptually replaced byinput_cursor_dx()
andinput_cursor_dy()
)