--- uid: input-system-devices-scripting --- # Devices (scripting) This section explains how to work with [`InputDevice`](xref:UnityEngine.InputSystem.InputDevice) instances from script. If you only need to get a device reference and read control values, refer to [Read devices directly](read-devices-directly.md). For hardware support by platform, refer to [Supported devices reference](supported-devices-reference.md). | **Topic** | **Description** | | :--- | :--- | | **[Device descriptions](device-descriptions.md)** | Learn about `InputDeviceDescription` and how devices are reported when they are discovered. | | **[Device capabilities](device-capabilities.md)** | Learn about capability strings attached to device descriptions. | | **[Device matching](device-matching.md)** | Learn to match descriptions to layouts using `InputDeviceMatcher`. | | **[Device lifecycle](device-lifecycle.md)** | Learn to manage devices throughout their life. | | **[Native devices](native-devices.md)** | Learn how to tell native backend devices apart from devices you create from script, and supply layouts when hardware is discovered. | | **[Device IDs](device-ids.md)** | Learn about session-unique IDs. | | **[Device usages](device-usages.md)** | Learn to set and query device usages. | | **[Device commands](device-commands.md)** | Learn to send commands to devices. | | **[Device states](device-states.md)** | Monitor and synthesize a device state change. | | **[Working with devices](working-with-devices.md)** | Learn to monitor connected devices, and add or remove devices manually. | ## Additional resources * [Devices](devices.md) * [Layouts](layouts.md) * [Architecture](Architecture.md)