# Introduction to Input

> Understand the different options for implementing input in Unity.

Input in Unity refers to users sending signals from the outside world to your game or app using a physical device.

Unity supports input from many types of device, such as gamepads, mouse, keyboard, touchscreen, joystick, movement-sensors like accelerometers or gyroscopes, and VR and AR controllers. Almost every project requires input of some kind, whether it is to allow users to navigate a UI, control a character in a game, or move around and interact with objects in virtual reality.

Unity has two methods of implementing Input:

* The **Input System Package**, which is newer, more flexible, and better supported.
* The legacy Editor (which includes the built-in `Input` class).

## The Input System Package

By default, the [Input System Package](https://docs.unity3d.com/Packages/com.unity.inputsystem@latest) provides input support in Unity. If needed, you can also install it through the [Package Manager](/engine/6000.5/manual/packages-list/packages.md).

This is the recommended solution for most projects. It provides an intuitive interface in the Editor to configure input, and provides a variety of workflows to suit your project and coding style.


**The Actions Editor window, with some default actions provided by the Input System Package:**
![](/api/media?file=/engine/6000.5/media/images/InputManagerActionsEditor.png)

Get started with the [Input System Package](https://docs.unity3d.com/Packages/com.unity.inputsystem@latest).

## Legacy projects

If you are supporting a project that needs to use the older Input Manager, refer to the [legacy Input Manager documentation](/engine/6000.5/manual/input/legacy.md).

## Additional resources

* [Input System Package](https://docs.unity3d.com/Packages/com.unity.inputsystem@latest)
* [Legacy Input Manager](/engine/6000.5/manual/input/legacy/class-input-manager.md)
