Releases: offalynne/Input
5.0.1 beta 3
Change log against v4.2 here.
Documentation here.
Changes from Beta 2:
- Fixes some typos in documentation
input_binding_get()
can now check the default player (use"default"
as the player index)- Fixes mouse wheel down bindings (oops!)
- Adds
input_player_swap()
- Fixes
input_binding_is_valid()
input_player_get_gamepad()
andinput_player_get_gamepad_type()
can now take a specific binding in multidevice mode- Fixes a crash in the binding scanner for gamepads
- Fixes mouse buttons not being detected by the binding scanner in keyboard+mouse pairing mode
input_source_using()
can now be givenINPUT_GAMEPAD
directly (as an array) to check against the assignment of any gamepad
5.0.1 Beta 2
Change log against v4.2 here.
Documentation here.
Changes from Beta 1:
- Adds
mostRecent
optional argument to 2D checkers - Adds
input_check_repeat_opposing()
andinput_check_opposing()
- 2D check functions can now have a bias set so that the output gently locks to 4-dir or 8-dir output (via
INPUT_2D_XY_AXIS_BIAS
andINPUT_2D_XY_AXIS_BIAS_DIAGONALS
) - Updated SDL2 database
- Mouse capture and sensitivity and now exported/imported by
input_system_export()
andinput_system_import()
- All export/import functions now perform greater error checking to detect corrupted or incompatible data
- Reduced exported data size on Android
- Fixes old function name being used in some deprecation error messages
- Input's realtime millisecond clock now uses per-frame cached values to remove the possibility of inconsistent timing behaviours
- All config macros are now validated on boot
4.2.0.2 LTS
Version 4.2 of Input is now in "Long Term Support" mode
We're proud that so many of you have put Input at the very heart of your games. To ensure that you can build your games with confidence, we are promising support for version 4.2 in the long term. We'll be releasing critical updates and patches to repair functionality in Input 4 until April 2023 to make sure that your games release with the most stable, most accessible, most powerful input library available for GameMaker.
You can find documentation for this version here.
As we gain more experience smoothing out the sharp corners of input handling, Alynne and I have been spotting multiple places that we can expand and improve the support that Input offers to GameMaker developers. Input's underlying systems have been slowly evolving since version 3.4 (August 2021), but most of the basic structure goes back to August of 2020. Our ambitions are now outstripping what Input's current architecture can support. To realise our goal of making a better tool for you we're going to be making breaking changes to Input for our next major version, version 5.
Once again, thank you to @offalynne, @nkrapivin, and @tabularelf for putting in so much time to improve this library.
- Fixes Steam Input spontaneously breaking on MacOS and Linux due to an iffy update from Valve
- Prevents gamepads from thrashing when hotswapping when the current gamepad is already in use
- Fixes compatibility with Opera GX
input_verb_set()
is now functioning correctly, and has been given an optionalanalogue
argument- Updates SDL2 database
- Verbs can no longer be named as an empty string (which was causing crashes)
- The set of ignored IME keys have been expanded to include such hits as "Launch Mail" and "Zoom", amongst others
- Added
input_players_get_status()
to help detect changes in player connectivity.input_gamepads_get_status()
has also been added for those who need gamepad-specific information
5.0.1 Beta 1
Change log against v4.2 here.
Documentation here.
Changes from alpha 5:
- Fixes up HTML5 real nice
- Export/import/reset/copy functions have been rebuilt and renamed. Please read the documentation for more info
- Disconnected players no longer update, leading to a nice performance boost in single player modes
- Previously hidden binding properties (gamepad and thresholds) can now be adjusted per binding
- Combo timeouts can now be adjusted per phase
5.0.0 Alpha 5
Change log against v4.2 here.
Documentation here.
Changes from alpha 3:
- Individual bindings can now have their own axis thresholds by using the
.threshold_set()
method on bindings - Adds accessibility toggle behaviour
- Binding scanner is now state-based with
input_binding_scan_start()
- Adds cursor functions
- Adds mouse capture behaviour
- Adds mouse dx/dy functions
- Adds mouse coordinate space switching functions
input_binding_system_write()
can now return prettified JSON
5.0.0 Alpha 3
5.0.0 Alpha 2
5.0.0 Alpha 1
4.1.0
A big thank you to @offalynne who continues to push this library forwards!
- Updates SDL2 binding database, including improved support for many gamepads on ChromeOS
- Adds
input_clear_momentary()
to clear all of Input's pressed/released input checkers. This covers verbs as well as keyboard/mouse/gamepad direct checkers. We're finding this useful for integrating with fixed timestep libraries (such as iota) - Adds
input_binding_is_valid()
to validate bindings for the given player on the current platform - Adds
input_held_time()
to return how long a verb has been active. The units that this function returns is given byINPUT_TIMER_MILLISECONDS
- Adds
input_gamepad_get_button_color()
andinput_gamepad_get_button_label()
functions to help give you execute an extra level of detail and polish for your gamepad controls - Prevents Steam Input from aliasing PlayStation and Switch controllers as Xbox type when able
- Fixes Xbox One Wireless Controller mapping for new firmware over Bluetooth on Windows
- Removes platform-agnostic gamepad blocklist
- Adds type identification for generic multi-gamepad adapters
- Fixes trigger axis checks for hotswapping
- Fixes dpad mappings for keymapped gamepads on Android
- Allows binding of additional gamepad inputs that are becoming increasingly popular on new consoles:
gp_touchpad
,gp_paddle1
-gp_paddle4
- Adds extended keycodes:
vk_scrollock
,vk_numlock
,vk_semicolon
,vk_comma
,vk_fslash
,vk_bslash
,vk_lbracket
,vk_rbracket
,vk_apostrophe
,vk_equals
,vk_hyphen
,vk_backtick
- Fixes UTF-8 keycode handling on platforms with nonnormative keycode values
- Adds Ouya gamepad support for MacOS
- Adds MFi gamepad support
- Adds PC Engine Mini, Astro City Mini, NEOGEO Mini, and NEOGEO X gamepad type detection
- Changes default XInput controller type to
"xbox one"
on Windows. Welcome to The Future - Fixes a bug in
input_source_assignment_tick()
where the maximum player count was being handled incorrectly - Adds optional argument to
input_source_assignment_tick()
to set whether gamepads should drop to lower player slots if they have no input source (defaults totrue
) - Adds type identification for Switch Online Gensis/Mega Drive 3b and 6b gamepads on Linux
- Removes
input_player_gamepad_get_description()
andinput_player_gamepad_get_dpad_style()
. Please use Input's direct gamepad functions instead
4.0.0
- Removes
input_history_*()
andinput_string_*()
functions. @offalynne moved theinput_string_*()
functions to her own library which can be found here: https://github.com/offalynne/input-string - Renames
input_assignment_tick()
toinput_source_assignment_tick()
, and renamesinput_hotswap_tick()
toinput_source_hotswap_tick()
. Please adjust your function names accordingly when updating to v4.0.0 from prior versions - Updates SDL2 gamepad binding database, including new entries to the blacklist
- Adds support for hat-to-axis SDL mappings. This is most commonly encountered on Switch joycons connected to a desktop OS
- Adds support for button-to-axis SDL mappings. This is encountered on N64 controllers, where C Buttons map to right thumbstick.
- Adds N64 gamepad type detection, as returned by
input_gamepad_get_type()
- Improves UWP keyboard handling by filtering out keyboard events that are generated by XInput gamepads for this platform
- Adds
INPUT_GAMEPADS_TICK_PREDELAY
to help filter out wonky Steam Input behaviour causing lots of connections/disconnections when the game boots input_binding_get()
can now return the default binding for a given verb (for a given source/alternate index) if"default"
is used as the player indexinput_platform_text_source()
will now return"keyboard"
if GameMaker reports the Android device as having a physical keyboard (e.g. Chromebooks)- Renames
INPUT_BINDING_SCAN_EVENT.TIMEOUT
toINPUT_BINDING_SCAN_EVENT.SCAN_TIMEOUT
to - hopefully - avoid enum/macro collisions when importing Input into a larger project