InputSystem Changelog

This changelog showcases the ability to render changelogs in the "keep a changelog" format

1.3.0 #

10 Dec 2021

Changed
Fixed

Changed

  • The artificial ctrl, shift, and alt controls (which combine the left and right controls into one) on the keyboard can now be written to and no longer throw NotSupportedException when trying to do so (case 1340793).
  • All devices are now re-synced/reset in next update after entering play mode, this is needed to read current state of devices before any intentional input is provided (case 1231907).
  • Replaced UnityLinkerBuildPipelineData.inputDirectory with hardcoded Temp folder because inputDirectory is deprecated.
  • Deprecated InputSettings.filterNoiseOnCurrent. Now noise filtering is always enabled. Device only will become .current if any non-noise control have changed state.
  • A device reset (such as when focus is lost) on Touchscreen will now result in all ongoing touches getting cancelled instead of all touches being simply reset to default state.
  • Calling InputTestFixture.Press, InputTestFixture.Set, etc. from within a [UnityTest] will no longer immediately process input. Instead, input will be processed like it normally would as part of the Unity player loop.

Fixed

  • Fixed writing values into the half-axis controls of sticks (such as Gamepad.leftStick.left) producing incorrect values on the stick (case 1336240).
  • Fixed setting size of event trace in input debugger always growing back to largest size set before.
  • Fixed successive clicks not getting triggered with TouchSimulation on when not moving the mouse in-between clicks (case 1330014).
  • Fixed InputSystemUIInputModule stopping to listen for input when swapping InputActionAsset instances while input was disabled (case 1371332).
  • Fixed InputSystemUIInputModule showing incorrect bindings after pressing the 'Fix UI Input Module' button in PlayerInput component(case 1319968).
  • Fixed an issue where UI button clicks could be ignored by InputSystemUIInputModule if modifying on-screen devices from Update() callbacks (case 1365070).
  • Fixed an issue with InputSystemUIInputModule that would cause UI to stop responding during play mode after changing a script file while Recompile and Continue mode is active, or by forcing a script recompile using RequestScriptCompilation(case 1324215).
  • Fixed InputSystemUIInputModule inspector showing all action bindings as "None" when assigned a runtime created actions asset (case 1304943).
  • Fixed a problem with UI Toolkit buttons remaining active when multiple fingers are used on a touchscreen, using InputSystemUIInputModule with pointerBehavior set to UIPointerBehavior.SingleUnifiedPointer. UI Toolkit will now always receive the same pointerId when that option is in use, regardless of the hardware component that produced the pointer event. (case 1369081).
  • Fixed a problem with InputUser where devices would be removed and not added again after layout overrides preventing certain devices, e.g. gamepads to not work correctly when associated with action map bindings tied to PlayerInput (case 1347320).
  • Fixed DualSense on iOS not inheriting from DualShockGamepad (case 1378308).
  • Fixed a device becoming .current (e.g. Gamepad.current, etc) when sending a new state event that contains no control changes (case 1377952).
  • Fixed calling IsPressed on an entire device returning true (case 1374024).
  • Fixed HIDs having blackslashes in their vendor or product names leading to binding paths generated by interactive rebinding that failed to resolve to controls and thus lead to no input being received (case 1335465).
  • Fixed InputSystem.RegisterLayoutOverride resulting in the layout that overrides are being applied to losing the connection to its base layout (case 1377719).
  • Fixed Touch.activeTouches still registering touches after the app loses focus (case 1364017).
  • Fixed MultiplayerEventSystem not preventing keyboard and gamepad/joystick navigation from one player's UI moving to another player's UI (case 1306361).
    • This fix relies on a CanvasGroup being injected into each playerRoot and the interactable property of the group being toggled back and forth depending on which part of the UI is being updated.
  • Fixed InputTestFixture incorrectly running input updates out of sync with the player loop (case 1341740).
    • This had effects such as InputAction.WasPressedThisFrame() returning false expectedly.
  • Fixed broken code example for state structs in Devices.md documentation (fix contributed by jeffreylanters).
  • Fixed TrackedDeviceRaycaster not picking closest hit in scene (fix originally contributed by alexboost222).

Actions

  • Fixed opening a new project (or one that needs a full reimport) leading to several exceptions in the console if the most recently opened project was closed with a .inputactions editor open (case 1313185).
  • Fixed incorrect indentation of input actions in the inspector (case 1285546).
  • Fixed an issue where serialized InputAction properties would have display name "Input Action" in the Inspector window instead of their given name. (case 1367240).
  • Fixed an issue where InputAction.Enable would not reuse memory allocated prior and thus lead to memory leaks (case 1367442).
  • Fixed interactions such as Press not getting processed correctly when having multiple of them on different bindings of the same action and receiving simultaneous input on all of them (case 1364667).
    • If, for example, you bind the A and S key on the same action, put a Press interaction on both, and then press both keys, interactions would get missed or got stuck.
  • Fixed InputAction.IsPressed/WasPressed/WasReleased returning incorrect results when binding multiple buttons on the same action and pressing/releasing them simultaneously.
  • Improved performance of looking up actions by name.
  • Fixed InputAction.controls exhibiting bad performance when there were no controls bound to an action (case 1347829).
  • Fixed interactions involving timeouts (such as HoldInteraction) performing erroneous delayed triggers on actions when input is composed of multiple controls (1251231).
    • For example, if you bind Shift+B using a OneModifierComposite and put a HoldInteraction on the binding, then depending on the order in which the keys are pressed, you would sometimes see the action spuriously getting triggered when in fact no input was received.
  • Fixed control schemes of bindings not getting updates when being pasted from one .inputactions asset into another (case 1276106).
    • For example, if you copied a binding from an asset that had a "Gamepad" control scheme into an asset that had none, the resulting binding would be unusable.
    • All associations with control schemes that do not exist in the target asset are now removed from bindings upon pasting.
  • Fixed InputActionSetupExtensions.AddCompositeBinding not setting name of composite.