# Supported Input

{% hint style="info" %}
For universal use, set Interaction → Manually Call and Step Start → Manually Call. Now you can bind a step to any type of input that you have implemented yourself, using a [manual call](https://octanta-studio.gitbook.io/automatic-tutorial-maker-for-unity-in-game-tips/usage-guide/advanced-manual-step-calls) from a script.
{% endhint %}

Input is provided for different types of targets: 3D/2D/UI or Any Target (anywhere). Currently, the following types of interactions and input are supported:

<table><thead><tr><th width="197">Input</th><th width="215">Description</th><th width="129">Platform Support</th><th>Generated default visual</th></tr></thead><tbody><tr><td>Manually Call</td><td>Called from a script or by a button (see <a href="../usage-guide/advanced-manual-step-calls">Manual Step Calls</a>)</td><td>Any platform</td><td>Set manually</td></tr><tr><td>Click</td><td>Left mouse click or touch</td><td>PC &#x26; Mobile</td><td>UI Pointer + UI Hover + UI Graphic Text</td></tr><tr><td>RightClick</td><td>Right mouse button click</td><td>PC Only</td><td>UI Pointer Mouse + UI Hover</td></tr><tr><td>DoubleClick</td><td>Double left mouse click or double tap</td><td>PC &#x26; Mobile</td><td>UI Pointer Mouse + UI Hover</td></tr><tr><td>DoubleRightClick</td><td>Double right mouse click</td><td>PC Only</td><td>UI Pointer Mouse + UI Hover</td></tr><tr><td>Hold</td><td>Long press of the left mouse button or hold</td><td>PC &#x26; Mobile</td><td>UI Pointer Mouse + UI Hover</td></tr><tr><td>RightHold</td><td>Long press of the right mouse button</td><td>PC Only</td><td>UI Pointer Mouse + UI Hover</td></tr><tr><td>Drag</td><td>Long press of the left mouse button or hold with object movement</td><td>PC &#x26; Mobile</td><td>UI Pointer Mouse + UI Hover</td></tr><tr><td>RightDrag</td><td>Long press of the right mouse button with object movement</td><td>PC Only</td><td>UI Pointer Mouse + UI Hover</td></tr><tr><td>DragAndDrop*</td><td>Drag and drop element</td><td>PC &#x26; Mobile</td><td>UI Pointer + UI Hover + UI Graphic Text</td></tr><tr><td>RightDragAndDrop</td><td>Drag and drop element via right mouse button</td><td>PC Only</td><td>UI Pointer + UI Hover + UI Graphic Text</td></tr><tr><td>ScrollUp</td><td>Scroll up using mouse wheel</td><td>PC Only</td><td>UI Graphic Text</td></tr><tr><td>ScrollDown</td><td>Scroll down using mouse wheel</td><td>PC Only</td><td>UI Graphic Text</td></tr><tr><td>MouseHover</td><td>Waits for the mouse to hover over the object</td><td>PC Only</td><td>Set manually</td></tr><tr><td>ScreenCenterHover</td><td>Waits for the object to be aimed at by the center of the screen</td><td>PC &#x26; Mobile</td><td>Set manually</td></tr><tr><td>KeyCode</td><td>Quick key press and release, shorter than minHoldDuration. If there is a list of keys, the step requires pressing all of them, in any order, to complete it.</td><td>PC Only</td><td>UI Graphic Text</td></tr><tr><td>KeyCodeHold</td><td>Holding a key longer than minHoldDuration, released or not</td><td>PC Only</td><td>UI Graphic Text</td></tr><tr><td>KeyCodePress</td><td>Instant reaction to key press, with or without holding or releasing</td><td>PC Only</td><td>Set manually</td></tr><tr><td>KeyCodeRelease</td><td>Key release</td><td>PC Only</td><td>Set manually</td></tr><tr><td>KeyCodeCombo</td><td>Presence of 2+ required keys held simultaneously</td><td>PC Only</td><td>UI Graphic Text</td></tr><tr><td>KeyCodeDoublePress</td><td>Double key press in a row</td><td>PC Only</td><td>UI Graphic Text</td></tr><tr><td>KeyCodePressAnyOfKey</td><td>Instant reaction to key press, with or without holding or releasing. If there is a list of keys, the step requires pressing at least one of them to complete it.</td><td>PC Only</td><td>UI Graphic Text</td></tr><tr><td>SwipeUp</td><td>Swipe up with a mouse or touch</td><td>PC &#x26; Mobile</td><td>UI Graphic Swipe Circle</td></tr><tr><td>SwipeDown</td><td>Swipe down with a mouse or touch</td><td>PC &#x26; Mobile</td><td>UI Graphic Swipe Circle</td></tr><tr><td>SwipeLeft</td><td>Swipe left with a mouse or touch</td><td>PC &#x26; Mobile</td><td>UI Graphic Swipe Circle</td></tr><tr><td>SwipeRight</td><td>Swipe right with a mouse or touch</td><td>PC &#x26; Mobile</td><td>UI Graphic Swipe Circle</td></tr><tr><td>Middle Click</td><td>Middle mouse button click</td><td>PC Only</td><td>UI Pointer Mouse + UI Hover</td></tr><tr><td>Middle Hold</td><td>Middle mouse button hold</td><td>PC Only</td><td>UI Pointer Mouse + UI Hover</td></tr><tr><td>Pinch In</td><td>Pinch in gesture for zooming out</td><td>Mobile Only</td><td>UI Graphic Text</td></tr><tr><td>Pinch Out</td><td>Pinch out gesture for zooming in</td><td>Mobile Only</td><td>UI Graphic Text</td></tr><tr><td>Pinch Rotate</td><td>Gesture for rotating</td><td>Mobile Only</td><td>UI Graphic Text</td></tr></tbody></table>

\* For the Drag and Drop interaction, two scenarios are possible:

| Project logic                                                                                                                  | In recording                                                                                                                                                  | In playback                                                                                                                                            |
| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| If, during the movement, the held object becomes non-blocking for raycasts, and the object behind it can be recognized.        | Both the initial and the final object are recognized. The interaction is considered a DragAndDrop.                                                            | The player will need to drag one object onto another.                                                                                                  |
| If, during the movement, the held object does not become transparent for raycasts, and objects behind it cannot be recognized. | Only the initial object is recognized - that it was moved and released. The interaction is considered a Drag; however, it can be set to Drag & Drop manually. | The player will need to drag one object anywhere and release it (while the drag is performed already during the movement phase, even without release). |

## Check Object

The Check Object validation can be performed as follows:

* **Check Object = By Tag.** Specify the Compare Tag as a string. Then the trigger selected above will only activate on objects with that tag.
* **Check Object = By Layer.** Specify the Compare Layer as int index. Then the trigger selected above will only activate on objects with that layer.
* **Check Object = By Type.** Specify the Compare Type: 3D/2D/UI. Then the trigger selected above will only activate on objects with that type.
* **Check Object = By Name.** Specify the Compare Name. Then the trigger selected above will only activate on objects with name containing that part.
* **Check Object = By Component.** Specify the Compare Component: from the list of custom components created in the project (not built-in, user-defined). Then the trigger selected above will only activate on objects with that component.

{% columns %}
{% column width="50%" %}

* **Check Object = By ComponentValue.** Specify the Compare Component & it\`s Value to compare with target value. So the trigger will only activate on objects with that component and required value. The selection can be made from scripts manually created in the project.\
  **Supported variable types:** Bool, Int, Float, String, Enum.\
  **Available comparison operators:** Equals (==), NotEquals (!=), GreaterThan (>), LessThan (<), GreaterOrEqual (>=), LessOrEqual (<=), Contains (string.Contains), StartsWith (string.StartsWith), EndsWith (string.EndsWith).
  {% endcolumn %}

{% column width="50%" %}

<figure><img src="https://2950676651-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXXV9mXl47pizEJp2sQyb%2Fuploads%2Ffrh29DxHdZk5qBwvAvF3%2Fimage_2026-02-10_00-52-30.png?alt=media&#x26;token=c0fea021-480a-478a-8697-78ef2022e7ab" alt=""><figcaption></figcaption></figure>

<sub>*Configuration that triggers the visual only when hovering over objects with IsHexAvailable = true in the ValueHandler component on the object.*</sub>
{% endcolumn %}
{% endcolumns %}

## Old and New Input System

Starting from version ATM 3.0.1, when the TutorialSystem prefab is added to the scene, the Input Controller automatically adjusts to match the Input System in the project, edits or removes the child backup EventSystem if it already exists in the scene. However, manual correction may still be required.

By default, the system is set up for the Old Input Manager. To fully switch to the New one, follow these steps:

* Open Edit → Project Settings → Player → Configuration, and set Active Input Handling to New if is not already selected.
* Install the Input System Unity package if it is not already installed.
* Set EventSystem to InputSystemUIInputModule if it is not already used.
* Set inputSystemType to New in the InputController component.

<figure><img src="https://2950676651-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FXXV9mXl47pizEJp2sQyb%2Fuploads%2FnjuN49IJD73wlmcE7Z65%2Fimage_2025-05-14_09-24-31.png?alt=media&#x26;token=a5e276b0-fa1f-441d-8e25-676c3849f8ec" alt=""><figcaption></figcaption></figure>
