> For the complete documentation index, see [llms.txt](https://dante-3.gitbook.io/dante-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dante-3.gitbook.io/dante-docs/modular-input-system/installation.md).

# Installation

## Requirements

| Requirement        | Details                                                                                                                                             |
| ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Enhanced Input** | Enabled automatically as a plugin dependency. The project's **Default Player Input Class** must be `EnhancedPlayerInput`, which is the UE5 default. |
| **Other plugins**  | Data Validation, Common UI and Model View View Model are enabled automatically with the plugin.                                                     |
| **Platforms**      | The runtime modules have no platform restrictions. The editor module only loads in the editor.                                                      |

## Installing the Plugin

{% tabs %}
{% tab title="From Fab" %}
{% stepper %}
{% step %}
Open the **Epic Games Launcher** and go to **Unreal Engine > Library > Fab Library**.
{% endstep %}

{% step %}
Find **Modular Input System** and click **Install to Engine**.
{% endstep %}

{% step %}
Open your project and go to **Edit > Plugins**.
{% endstep %}

{% step %}
Search for **Modular Input System**, tick **Enabled** and restart the editor.
{% endstep %}
{% endstepper %}
{% endtab %}

{% tab title="As a project plugin" %}
{% stepper %}
{% step %}
Close the editor.
{% endstep %}

{% step %}
Copy the `ModularInputSystem` folder into `<YourProject>/Plugins/`.
{% endstep %}

{% step %}
For a C++ project, right-click the `.uproject` and choose **Generate Visual Studio project files**, then build.
{% endstep %}

{% step %}
Open the project. The plugin is enabled by default; check **Edit > Plugins** if it is not.
{% endstep %}
{% endstepper %}
{% endtab %}
{% endtabs %}

## Checking the Installation

After the restart:

* **Content Browser.** Right-click in any folder: a **Modular Input System** category appears with the groups **Components**, **Data Assets** and **Gates & Processors**.
* **Sample content.** Enable **Settings > Show Plugin Content** in the Content Browser and open `/ModularInputSystem/Input`.
* **Gameplay tags.** **Project Settings > Gameplay Tags** lists the sample tags under `ModularInput.Input.*`.
* **Monitor.** **Window > Developer Tools > Modular Input Monitor** opens the monitor tab.

{% hint style="info" %}
Unreal only scans `Config/Tags` automatically for the project itself and for Game Feature plugins. The plugin registers its own tag folder when its module starts, so the sample tags appear without any setup. The reason tags (`ModularInput.Reason.*`) and device tags (`ModularInput.Device.*`) are declared in C++ and are always available.
{% endhint %}

## Using the Plugin from C++

Blueprint-only projects need nothing more. For C++, add the modules you use to your module's `Build.cs`:

{% code title="MyGame.Build.cs" %}

```csharp
PublicDependencyModuleNames.AddRange(new string[]
{
    "Core",
    "CoreUObject",
    "Engine",
    "EnhancedInput",
    "GameplayTags",
    "ModularInputSystem",       // component, modes, gates, processors, buffer
});

// Only if you use the settings and rebinding view models:
PrivateDependencyModuleNames.Add("ModularInputSystemUI");
```

{% endcode %}

Public headers live under `Public/` and are included by folder, for example:

```cpp
#include "Runtime/MIPS_InputComponent.h"
#include "Gates/MIPS_InputGate.h"
#include "Processors/MIPS_InputProcessor.h"
#include "BP/MIPS_InputLibrary.h"
```

{% hint style="info" %}
Every class, struct, enum and file in the plugin starts with `MIPS_` (for example `UMIPS_InputComponent`), helpers live in the `MIPS` namespace and the log category is `LogModularInput`.
{% endhint %}

## Optional: Look Settings

The inverted-look and sensitivity settings only work when the plugin's user settings class is active. Set **Project Settings > Engine > Enhanced Input > User Settings Class** to `MIPS_InputUserSettings` (or your subclass of it) and enable **Enable User Settings**. Everything else in the plugin works without this step.

See [Settings Screens & Key Prompts](/dante-docs/modular-input-system/core-concepts/settings-and-rebinding.md).

## Next Steps

{% content-ref url="/pages/c4ba3b49d973e7b34384a70878bd34676698fad6" %}
[Sample Content](/dante-docs/modular-input-system/sample-content.md)
{% endcontent-ref %}
