Overview of GameInput

GameInput is a next-generation input API that exposes input devices of all kinds through a single consistent interface. It's designed with a simple programming model that makes it easy to use. GameInput is built from the ground up for the best possible performance. Key features of the GameInput API are as follows.

  • Availability

    GameInput is available on Xbox via the GDK and PC via NuGet. Older versions of Windows going back to Windows 10 19H1 (May 2019 update) are supported.

  • Consistency

    GameInput exposes input from keyboards, mice, gamepads, and other game controllers via a single unified input model, synchronized to a common time base. The code for handling input from these devices is nearly identical, using many of the same functions but with different filters applied. This makes it easy to add support for additional input devices, without major changes to input code.

  • Functionality

    GameInput is a functional superset of all legacy input APIs—XInput, DirectInput, Raw Input, Human Interface Device (HID), and WinRT APIs—in addition to adding new features of its own. GameInput's functionality ranges from simple fixed-format gamepad state to detailed low-level raw device access. Input can be obtained via polling or callbacks in an event-driven way. Haptics and force feedback are fully supported, and third-party device SDKs can easily be written on top of GameInput to provide access to custom device features.

  • Performance

    GameInput is built around an entirely new direct memory access (DMA) architecture for the lowest possible input latency and resource usage. Nearly all API functions are lock-free with strict performance guarantees, while still being 100 percent thread-safe. This makes them safe to call from time-sensitive contexts such as render threads. Advanced applications can take direct control of scheduling GameInput's internal asynchronous work queues, controlling which thread does the work and how often.

  • Usability

    GameInput was designed with ease of use as a top priority. Most common input tasks can be implemented with just a few lines of code.

Getting started

GameInput is the recommended API for all new code, regardless of the target platform, because it provides support across all Microsoft platforms (including earlier versions of Windows), and provides superior performance versus legacy APIs.

Note

For games developed on the Microsoft Game Development Kit (GDK) for Xbox One, GameInput is the only input API available.

If you are developing a game targeting the PC, you should install GameInput from the Microsoft.GameInput] NuGet package.

To learn more about the GameInput API, start with GameInput fundamentals.

If you're porting input code from an existing codebase, see the GameInput porting guide for API-specific guidance.

See also

GameInput fundamentals

GameInput installation for PC with NuGet

GameInput porting guide

GameInput API reference

Microsoft Game Development Kit