# Setup

## Prerequisites

Before you begin, ensure you have the following:

* Unity 6 LTS or higher.
* Input System 1.11.2 or higher.

{% hint style="warning" %}
Before installing the package, verify that the **Active Input Handling** is set Input `System Package (New)` or `Both` in `Project Settings → Player`.
{% endhint %}

## Installation

To install the Input Mapper package, follow the instructions below.

{% stepper %}
{% step %}

### <i class="fa-book-open">:book-open:</i> Open Unity Package Manager

Navigate to **Window** **→** **Package Manager** in the top menu.
{% endstep %}

{% step %}

### <i class="fa-searchengin">:searchengin:</i> Search for the Package

In the **My Assets** tab, use search bar and find **Input Mapper for Unity**.
{% endstep %}

{% step %}

### <i class="fa-download">:download:</i> Download and Import the Package

Once found, Select the package and click **Download** then **Import.**
{% endstep %}

{% step %}

### <i class="fa-check">:check:</i> Verify Installation

After importing, the `InputMapper` folder should appear in `Assets/Plugins`.
{% endstep %}
{% endstepper %}

{% hint style="success" %}
After Installation, We recommend checking out the [example scenes](https://niam.gitbook.io/input-mapper-for-unity/getting-started/examples) to learn about most features and see how things set up.
{% endhint %}

## Create Your First Prompt

In the Hierarchy window, right-click and navigate to **UI → Input Mapper**, then select the appropriate boilerplate template for your use case.

* [**Input Prompt – Text**](https://niam.gitbook.io/input-mapper-for-unity/components/input-prompt-text)\
  Display bindings as readable text, such as "Press E to Interact".
* [**Input Prompt – Sprite**](https://niam.gitbook.io/input-mapper-for-unity/components/input-prompt-sprite)\
  Display bindings as icons/sprites (great for controller-heavy UI).
* [**Input Prompt – Binding**](https://niam.gitbook.io/input-mapper-for-unity/components/input-rebind-binding)\
  Updates the binding path of a specific input binding of action at runtime.
* [**Input Prompt – Processor**](https://niam.gitbook.io/input-mapper-for-unity/components/input-rebind-processor)\
  Expose sensitivity/invert/deadzone style processor tuning.

<div align="left"><figure><img src="https://772198664-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZKiWXgJ9UhGsBWWXhjMU%2Fuploads%2FTeW288naTFygaQatDpbK%2Fezgif-5834d7fb6186d6ca.gif?alt=media&#x26;token=6cd4a4ca-2219-46cf-a106-d07016393989" alt="" width="563"><figcaption></figcaption></figure></div>

{% hint style="success" %}
Navigate to **3D Object → Input Mapper** for non-canvas input prompt templates.
{% endhint %}

## Best Practices

### Setting up Binding Order

Each binding is displayed in the same order defined in the Input Action Asset.

<div align="left"><figure><img src="https://772198664-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZKiWXgJ9UhGsBWWXhjMU%2Fuploads%2F7EdUzT7UCLSJ8NIujKLh%2Fimage.png?alt=media&#x26;token=78b4693d-8ed3-48ea-b759-b49113df7a03" alt="" width="563"><figcaption></figcaption></figure></div>

<div align="left"><figure><img src="https://772198664-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZKiWXgJ9UhGsBWWXhjMU%2Fuploads%2FNU8k9GUGWc1YjFwqCtwd%2Fimage.png?alt=media&#x26;token=e5f15354-7d33-4724-bc5e-d19b63bee62d" alt="" width="563"><figcaption></figcaption></figure></div>

### Working with Composites

The Input Prompts ignore subsequent parts of a composite binding when they share the same name.

<div align="left"><figure><img src="https://772198664-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZKiWXgJ9UhGsBWWXhjMU%2Fuploads%2FTJINkbezrkrYLhrCfT0s%2Fimage.png?alt=media&#x26;token=16b463da-5b5d-4b6e-86f5-8d2482034255" alt="" width="563"><figcaption><p><i class="fa-xmark">:xmark:</i> Arrow Keys is omitted.</p></figcaption></figure></div>

While moving the duplicate-name binding to the end works as a workaround, they are still treated as a single control, so the control separator is not applied.

<div align="left"><figure><img src="https://772198664-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZKiWXgJ9UhGsBWWXhjMU%2Fuploads%2FX3CjkmhaB7FCL3UhZ4iO%2Fimage.png?alt=media&#x26;token=8e635dd4-aa1a-46dc-bb82-197ad5644dbe" alt="" width="563"><figcaption><p><i class="fa-xmark">:xmark:</i> Shows both WASD and Arrow Keys, but no delimiter.</p></figcaption></figure></div>

Instead, create a new composite binding and move the components with duplicated names into that composite.

<div align="left"><figure><img src="https://772198664-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FZKiWXgJ9UhGsBWWXhjMU%2Fuploads%2FsLLAb7O9Itt8zvQ8Mpv4%2Fimage.png?alt=media&#x26;token=d0327b60-0f6e-4fda-bb32-43b6daebb16c" alt="" width="563"><figcaption><p><i class="fa-check">:check:</i>  Shows both WASD and Arrow Keys with delimiter.</p></figcaption></figure></div>
