> For the complete documentation index, see [llms.txt](https://niam.gitbook.io/input-mapper-for-unity/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://niam.gitbook.io/input-mapper-for-unity/getting-started/setup.md).

# Setup

## Prerequisites

Before you begin, ensure you have the following:

* Unity 6 LTS or higher.
* Input System 1.16 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, a popup window will appear prompting you to import the TextMeshPro Essential Resources.
{% 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**](/input-mapper-for-unity/components/input-prompt-text.md)\
  Display bindings as readable text, such as "Press E to Interact".
* [**Input Prompt – Sprite**](/input-mapper-for-unity/components/input-prompt-sprite.md)\
  Display bindings as icons/sprites (great for controller-heavy UI).
* [**Input Prompt – Binding**](/input-mapper-for-unity/components/input-rebind-binding.md)\
  Updates the binding path of a specific input binding of action at runtime.
* [**Input Prompt – Processor**](/input-mapper-for-unity/components/input-rebind-processor.md)\
  Expose sensitivity/invert/deadzone style processor tuning.

<div align="left"><figure><img src="/files/4Cz0G00C71HRlLL9gg4k" alt="" width="563"><figcaption></figcaption></figure></div>

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

## Pro Tips & Best Practices

### Setting up Binding Order

Keep in mind that Input Mapper displays bindings in the exact order they are arranged in your `Input Action Asset`. If you want a primary key to show up first, make sure it's at the top of the list!

<div align="left"><figure><img src="/files/SkK14QNzNe6z98uhIM04" alt="" width="563"><figcaption></figcaption></figure></div>

<div align="left"><figure><img src="/files/ffK5fEJDznZbqNx7Lw9U" alt="" width="563"><figcaption></figcaption></figure></div>

### Working with Composites

When dealing with composites (like 2D Vector with WASD and Arrow Keys), Input Prompts will ignore subsequent parts of a composite binding if they share the exact same name (e.g. Up, ~~Up~~, Down, ~~Down~~, Left, ~~Left~~, Right, ~~Right~~).

<div align="left"><figure><img src="/files/bTseVx53MX6r7nLaVY1J" alt="" width="563"><figcaption><p><i class="fa-xmark" style="color:$danger;">:xmark:</i> Arrow Keys is omitted.</p></figcaption></figure></div>

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

<div align="left"><figure><img src="/files/y6SnSThg8fUADE9Gi17J" alt="" width="563"><figcaption><p><i class="fa-xmark" style="color:$danger;">:xmark:</i> Shows both WASD and Arrow Keys, but no delimiter.</p></figcaption></figure></div>

Instead, create a brand new composite binding and move the alternative controls (like the Arrow Keys) into that separate composite. This keeps things organized and lets Input Mapper format them beautifully!

<div align="left"><figure><img src="/files/ww3uAkgYfY4mK7oHBCFh" alt="" width="563"><figcaption><p><i class="fa-check" style="color:$success;">:check:</i>  Shows both WASD and Arrow Keys with delimiter.</p></figcaption></figure></div>
