From b6db00b430d7e7ce31de25f535616024efa55eb2 Mon Sep 17 00:00:00 2001 From: Tomas Dirvanauskas Date: Tue, 19 May 2026 12:12:43 +0300 Subject: [PATCH 01/10] https://jira.unity3d.com/browse/PLAT-19240 docs --- Packages/com.unity.inputsystem/CHANGELOG.md | 1 + .../com.unity.inputsystem/Documentation~/Gamepad.md | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/Packages/com.unity.inputsystem/CHANGELOG.md b/Packages/com.unity.inputsystem/CHANGELOG.md index 02a6867477..dc7054d5e5 100644 --- a/Packages/com.unity.inputsystem/CHANGELOG.md +++ b/Packages/com.unity.inputsystem/CHANGELOG.md @@ -34,6 +34,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Migrated sample scenes to use Universal Render Pipeline (URP) with Built-in Render Pipeline fallback shaders. The URP package is now required to run the samples. (ISX-2343) - Changed the UI for `Actions.inputactions` asset to use UI Toolkit framework. - Changed the UI for `InputSystem.inputsettings` asset to use UI Toolkit framework. +- Added docs for rumble support on Android and iOS. ### Added diff --git a/Packages/com.unity.inputsystem/Documentation~/Gamepad.md b/Packages/com.unity.inputsystem/Documentation~/Gamepad.md index 368b71cb25..ef4ca89ed2 100644 --- a/Packages/com.unity.inputsystem/Documentation~/Gamepad.md +++ b/Packages/com.unity.inputsystem/Documentation~/Gamepad.md @@ -121,6 +121,18 @@ Gamepad.current.SetMotorSpeeds(0.25f, 0.75f); >* PS4, Xbox, and Switch controllers, when connected to their respective consoles. Only supported if you install console-specific input packages in your Project. >* PS4 controllers, when connected to Mac or Windows/UWP computers. >* Xbox controllers on Windows. +>* Android: +> * Note: Rumble automatically stops about 10 seconds after the last SetMotorSpeeds call unless explicitly stopped. +> * Requires Unity 6000.6 or later +> * Android 12 or later +> * Most bluetooth-connected gamepads with rumble support are supported (PS4/PS5 controllers, Xbox controllers, etc.) +> * __Note:__ If the gamepad is connected via USB cable, rumble support may vary. +> * __Note:__ If the gamepad supports more than one motor, each motor's strength can be controlled individually. +> * Android 11 or earlier +> * Rumble support is limited. +> * __Note:__ Only one motor is supported. If the gamepad has more than one motor, the higher value of the left and right motor strengths is applied to both. +> * iOS: +> * TODO: Paulius [//]: # (TODO: are we missing any supported configs?) From f9518e533aa18c4c5811709f7a85436b5b4ba6af Mon Sep 17 00:00:00 2001 From: Tomas Dirvanauskas Date: Tue, 19 May 2026 12:26:38 +0300 Subject: [PATCH 02/10] extra --- Packages/com.unity.inputsystem/Documentation~/Gamepad.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Packages/com.unity.inputsystem/Documentation~/Gamepad.md b/Packages/com.unity.inputsystem/Documentation~/Gamepad.md index ef4ca89ed2..e3e22a6e58 100644 --- a/Packages/com.unity.inputsystem/Documentation~/Gamepad.md +++ b/Packages/com.unity.inputsystem/Documentation~/Gamepad.md @@ -131,6 +131,7 @@ Gamepad.current.SetMotorSpeeds(0.25f, 0.75f); > * Android 11 or earlier > * Rumble support is limited. > * __Note:__ Only one motor is supported. If the gamepad has more than one motor, the higher value of the left and right motor strengths is applied to both. +> * __Note:__ In some cases, frequency control is limited, meaning the rumble strength can only be either 1.0 or 0.0. > * iOS: > * TODO: Paulius From f91ebff041a97e190ca9205f7bd7435910c0041d Mon Sep 17 00:00:00 2001 From: Tomas Dirvanauskas Date: Wed, 20 May 2026 14:08:46 +0300 Subject: [PATCH 03/10] Update Packages/com.unity.inputsystem/Documentation~/Gamepad.md Co-authored-by: anjalin14 --- .../Documentation~/Gamepad.md | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/Packages/com.unity.inputsystem/Documentation~/Gamepad.md b/Packages/com.unity.inputsystem/Documentation~/Gamepad.md index e3e22a6e58..27554f0e9f 100644 --- a/Packages/com.unity.inputsystem/Documentation~/Gamepad.md +++ b/Packages/com.unity.inputsystem/Documentation~/Gamepad.md @@ -121,17 +121,16 @@ Gamepad.current.SetMotorSpeeds(0.25f, 0.75f); >* PS4, Xbox, and Switch controllers, when connected to their respective consoles. Only supported if you install console-specific input packages in your Project. >* PS4 controllers, when connected to Mac or Windows/UWP computers. >* Xbox controllers on Windows. ->* Android: -> * Note: Rumble automatically stops about 10 seconds after the last SetMotorSpeeds call unless explicitly stopped. -> * Requires Unity 6000.6 or later -> * Android 12 or later -> * Most bluetooth-connected gamepads with rumble support are supported (PS4/PS5 controllers, Xbox controllers, etc.) -> * __Note:__ If the gamepad is connected via USB cable, rumble support may vary. -> * __Note:__ If the gamepad supports more than one motor, each motor's strength can be controlled individually. -> * Android 11 or earlier +>* Gamepads on Android. Rumble support varies with Android OS version and requires Unity 6000.6 or later. +> * Rumble automatically stops about 10 seconds after the last [`SetMotorSpeeds`](xref:UnityEngine.InputSystem.Haptics.IDualMotorRumble) call unless you explicitly stop it. +> * Android 12 or later: +> * Supports most Bluetooth-connected gamepads with rumble support including PS4, PS5, and Xbox controllers. +> * If the gamepad is connected via USB cable, rumble support might vary. +> * If the gamepad supports more than one motor, you can control the speed of each motor individually. +> * Android 11 or earlier: > * Rumble support is limited. -> * __Note:__ Only one motor is supported. If the gamepad has more than one motor, the higher value of the left and right motor strengths is applied to both. -> * __Note:__ In some cases, frequency control is limited, meaning the rumble strength can only be either 1.0 or 0.0. +> * Only one motor is supported. If the gamepad has more than one motor, the higher value of the left and right motor speed applies to both. +> * On some devices, motor speed control is limited. You can only set the left and right motor speed to either `1.0`(maximum speed) or `0.0` (turned off). > * iOS: > * TODO: Paulius From 90d9a195e85af921b20cf52b6bcba0297c7732db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Paulius=20Bal=C4=8Di=C5=ABnas?= Date: Wed, 20 May 2026 15:29:41 +0300 Subject: [PATCH 04/10] Update Packages/com.unity.inputsystem/Documentation~/Gamepad.md for Apple platforms --- Packages/com.unity.inputsystem/Documentation~/Gamepad.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Packages/com.unity.inputsystem/Documentation~/Gamepad.md b/Packages/com.unity.inputsystem/Documentation~/Gamepad.md index 27554f0e9f..d27fb0c149 100644 --- a/Packages/com.unity.inputsystem/Documentation~/Gamepad.md +++ b/Packages/com.unity.inputsystem/Documentation~/Gamepad.md @@ -131,8 +131,11 @@ Gamepad.current.SetMotorSpeeds(0.25f, 0.75f); > * Rumble support is limited. > * Only one motor is supported. If the gamepad has more than one motor, the higher value of the left and right motor speed applies to both. > * On some devices, motor speed control is limited. You can only set the left and right motor speed to either `1.0`(maximum speed) or `0.0` (turned off). -> * iOS: -> * TODO: Paulius +> * Gamepads on iOS, tvOS, and visionOS. Requires Unity 6000.6 or later. +> * Rumble is supported on gamepads recognized by Apple's GameController framework, including PS4, PS5, Xbox, and Switch Pro controllers. +> * If the gamepad exposes both motors, you can control each speed individually. Otherwise, the higher value of the left and right motor speed applies to all motors. +> * The first [`SetMotorSpeeds`](xref:UnityEngine.InputSystem.Haptics.IDualMotorRumble) call allocates rumble resources, which adds latency. +> * When all motor speeds are set to `0.0`, an inactivity timer starts. After 2 minutes, rumble resources are released to preserve controller battery. The next [`SetMotorSpeeds`](xref:UnityEngine.InputSystem.Haptics.IDualMotorRumble) call reallocates them and again incurs allocation latency. [//]: # (TODO: are we missing any supported configs?) From cd84a6cfca25c1fa7e8d642a5aac575abaf8dbbc Mon Sep 17 00:00:00 2001 From: Tomas Dirvanauskas Date: Thu, 21 May 2026 16:17:05 +0300 Subject: [PATCH 05/10] Update Packages/com.unity.inputsystem/Documentation~/Gamepad.md Co-authored-by: Sue Arkin <85237015+suearkinunity@users.noreply.github.com> --- Packages/com.unity.inputsystem/Documentation~/Gamepad.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Packages/com.unity.inputsystem/Documentation~/Gamepad.md b/Packages/com.unity.inputsystem/Documentation~/Gamepad.md index d27fb0c149..1ce77fb133 100644 --- a/Packages/com.unity.inputsystem/Documentation~/Gamepad.md +++ b/Packages/com.unity.inputsystem/Documentation~/Gamepad.md @@ -125,7 +125,7 @@ Gamepad.current.SetMotorSpeeds(0.25f, 0.75f); > * Rumble automatically stops about 10 seconds after the last [`SetMotorSpeeds`](xref:UnityEngine.InputSystem.Haptics.IDualMotorRumble) call unless you explicitly stop it. > * Android 12 or later: > * Supports most Bluetooth-connected gamepads with rumble support including PS4, PS5, and Xbox controllers. -> * If the gamepad is connected via USB cable, rumble support might vary. +> * If the gamepad is connected with a USB cable, rumble support might vary. > * If the gamepad supports more than one motor, you can control the speed of each motor individually. > * Android 11 or earlier: > * Rumble support is limited. From 4f6fa38be588c2a377055c93da8648cb57e45ef5 Mon Sep 17 00:00:00 2001 From: Tomas Dirvanauskas Date: Thu, 21 May 2026 16:17:19 +0300 Subject: [PATCH 06/10] Update Packages/com.unity.inputsystem/Documentation~/Gamepad.md Co-authored-by: Sue Arkin <85237015+suearkinunity@users.noreply.github.com> --- Packages/com.unity.inputsystem/Documentation~/Gamepad.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Packages/com.unity.inputsystem/Documentation~/Gamepad.md b/Packages/com.unity.inputsystem/Documentation~/Gamepad.md index 1ce77fb133..bbd0f39794 100644 --- a/Packages/com.unity.inputsystem/Documentation~/Gamepad.md +++ b/Packages/com.unity.inputsystem/Documentation~/Gamepad.md @@ -130,7 +130,7 @@ Gamepad.current.SetMotorSpeeds(0.25f, 0.75f); > * Android 11 or earlier: > * Rumble support is limited. > * Only one motor is supported. If the gamepad has more than one motor, the higher value of the left and right motor speed applies to both. -> * On some devices, motor speed control is limited. You can only set the left and right motor speed to either `1.0`(maximum speed) or `0.0` (turned off). +> * On some devices, motor speed control is limited. You can only set the left and right motor speed to either `1.0` (maximum speed) or `0.0` (turned off). > * Gamepads on iOS, tvOS, and visionOS. Requires Unity 6000.6 or later. > * Rumble is supported on gamepads recognized by Apple's GameController framework, including PS4, PS5, Xbox, and Switch Pro controllers. > * If the gamepad exposes both motors, you can control each speed individually. Otherwise, the higher value of the left and right motor speed applies to all motors. From b6057d82546b8480cd7c2636819dc757700453d8 Mon Sep 17 00:00:00 2001 From: Tomas Dirvanauskas Date: Thu, 21 May 2026 16:17:29 +0300 Subject: [PATCH 07/10] Update Packages/com.unity.inputsystem/Documentation~/Gamepad.md Co-authored-by: Sue Arkin <85237015+suearkinunity@users.noreply.github.com> --- Packages/com.unity.inputsystem/Documentation~/Gamepad.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Packages/com.unity.inputsystem/Documentation~/Gamepad.md b/Packages/com.unity.inputsystem/Documentation~/Gamepad.md index bbd0f39794..84a364f3c5 100644 --- a/Packages/com.unity.inputsystem/Documentation~/Gamepad.md +++ b/Packages/com.unity.inputsystem/Documentation~/Gamepad.md @@ -135,7 +135,7 @@ Gamepad.current.SetMotorSpeeds(0.25f, 0.75f); > * Rumble is supported on gamepads recognized by Apple's GameController framework, including PS4, PS5, Xbox, and Switch Pro controllers. > * If the gamepad exposes both motors, you can control each speed individually. Otherwise, the higher value of the left and right motor speed applies to all motors. > * The first [`SetMotorSpeeds`](xref:UnityEngine.InputSystem.Haptics.IDualMotorRumble) call allocates rumble resources, which adds latency. -> * When all motor speeds are set to `0.0`, an inactivity timer starts. After 2 minutes, rumble resources are released to preserve controller battery. The next [`SetMotorSpeeds`](xref:UnityEngine.InputSystem.Haptics.IDualMotorRumble) call reallocates them and again incurs allocation latency. +> * When all motor speeds are set to `0.0`, an inactivity timer starts. After two minutes, rumble resources are released to preserve controller battery. The next [`SetMotorSpeeds`](xref:UnityEngine.InputSystem.Haptics.IDualMotorRumble) call reallocates them and again incurs allocation latency. [//]: # (TODO: are we missing any supported configs?) From ec80664ec0ef0041f092b0fb6341cccf44e19dfc Mon Sep 17 00:00:00 2001 From: Tomas Dirvanauskas Date: Thu, 21 May 2026 16:17:42 +0300 Subject: [PATCH 08/10] Update Packages/com.unity.inputsystem/CHANGELOG.md Co-authored-by: anjalin14 --- Packages/com.unity.inputsystem/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Packages/com.unity.inputsystem/CHANGELOG.md b/Packages/com.unity.inputsystem/CHANGELOG.md index dc7054d5e5..3348f46120 100644 --- a/Packages/com.unity.inputsystem/CHANGELOG.md +++ b/Packages/com.unity.inputsystem/CHANGELOG.md @@ -34,7 +34,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Migrated sample scenes to use Universal Render Pipeline (URP) with Built-in Render Pipeline fallback shaders. The URP package is now required to run the samples. (ISX-2343) - Changed the UI for `Actions.inputactions` asset to use UI Toolkit framework. - Changed the UI for `InputSystem.inputsettings` asset to use UI Toolkit framework. -- Added docs for rumble support on Android and iOS. +- Added documentation for rumble support on Android and iOS. ### Added From 89e40f9a36f48068cfd52d3e9ca5c73cccc5a301 Mon Sep 17 00:00:00 2001 From: Tomas Dirvanauskas Date: Thu, 21 May 2026 16:17:57 +0300 Subject: [PATCH 09/10] Update Packages/com.unity.inputsystem/Documentation~/Gamepad.md Co-authored-by: anjalin14 --- Packages/com.unity.inputsystem/Documentation~/Gamepad.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Packages/com.unity.inputsystem/Documentation~/Gamepad.md b/Packages/com.unity.inputsystem/Documentation~/Gamepad.md index 84a364f3c5..833fd7ae46 100644 --- a/Packages/com.unity.inputsystem/Documentation~/Gamepad.md +++ b/Packages/com.unity.inputsystem/Documentation~/Gamepad.md @@ -136,7 +136,11 @@ Gamepad.current.SetMotorSpeeds(0.25f, 0.75f); > * If the gamepad exposes both motors, you can control each speed individually. Otherwise, the higher value of the left and right motor speed applies to all motors. > * The first [`SetMotorSpeeds`](xref:UnityEngine.InputSystem.Haptics.IDualMotorRumble) call allocates rumble resources, which adds latency. > * When all motor speeds are set to `0.0`, an inactivity timer starts. After two minutes, rumble resources are released to preserve controller battery. The next [`SetMotorSpeeds`](xref:UnityEngine.InputSystem.Haptics.IDualMotorRumble) call reallocates them and again incurs allocation latency. - +> * Gamepads on iOS, tvOS, and visionOS. Requires Unity 6000.6 or later. +> * Supports rumble on gamepads that Apple's GameController framework recognizes, including PS4, PS5, Xbox, and Switch Pro controllers. +> * If the gamepad supports left and right motors, you can control the speed of each motor individually. Otherwise, the higher value of the left and right motor speed applies to all motors on the gamepad. +> * The first [`SetMotorSpeeds`](xref:UnityEngine.InputSystem.Haptics.IDualMotorRumble) call allocates rumble resources, which adds latency. +> * When you set all motor speeds to `0.0`, an inactivity timer starts. After two minutes, the system releases rumble resources to preserve the controller's battery. The next [`SetMotorSpeeds`](xref:UnityEngine.InputSystem.Haptics.IDualMotorRumble) call reallocates resources and again incurs allocation latency. [//]: # (TODO: are we missing any supported configs?) ### Pausing, resuming, and stopping haptics From 3b90cd59ad84218f5608ae67e4fbce395c495288 Mon Sep 17 00:00:00 2001 From: anjalin14 Date: Thu, 21 May 2026 14:58:18 +0100 Subject: [PATCH 10/10] Apply suggestion from @anjalin14 --- Packages/com.unity.inputsystem/Documentation~/Gamepad.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/Packages/com.unity.inputsystem/Documentation~/Gamepad.md b/Packages/com.unity.inputsystem/Documentation~/Gamepad.md index 833fd7ae46..3e037b2206 100644 --- a/Packages/com.unity.inputsystem/Documentation~/Gamepad.md +++ b/Packages/com.unity.inputsystem/Documentation~/Gamepad.md @@ -132,11 +132,6 @@ Gamepad.current.SetMotorSpeeds(0.25f, 0.75f); > * Only one motor is supported. If the gamepad has more than one motor, the higher value of the left and right motor speed applies to both. > * On some devices, motor speed control is limited. You can only set the left and right motor speed to either `1.0` (maximum speed) or `0.0` (turned off). > * Gamepads on iOS, tvOS, and visionOS. Requires Unity 6000.6 or later. -> * Rumble is supported on gamepads recognized by Apple's GameController framework, including PS4, PS5, Xbox, and Switch Pro controllers. -> * If the gamepad exposes both motors, you can control each speed individually. Otherwise, the higher value of the left and right motor speed applies to all motors. -> * The first [`SetMotorSpeeds`](xref:UnityEngine.InputSystem.Haptics.IDualMotorRumble) call allocates rumble resources, which adds latency. -> * When all motor speeds are set to `0.0`, an inactivity timer starts. After two minutes, rumble resources are released to preserve controller battery. The next [`SetMotorSpeeds`](xref:UnityEngine.InputSystem.Haptics.IDualMotorRumble) call reallocates them and again incurs allocation latency. -> * Gamepads on iOS, tvOS, and visionOS. Requires Unity 6000.6 or later. > * Supports rumble on gamepads that Apple's GameController framework recognizes, including PS4, PS5, Xbox, and Switch Pro controllers. > * If the gamepad supports left and right motors, you can control the speed of each motor individually. Otherwise, the higher value of the left and right motor speed applies to all motors on the gamepad. > * The first [`SetMotorSpeeds`](xref:UnityEngine.InputSystem.Haptics.IDualMotorRumble) call allocates rumble resources, which adds latency.