Understanding XInput

Everything you need to know about Microsoft XInput API and X.Org xinput utility for controlling input devices.

Download XInput

Select the appropriate version for your operating system

What is XInput?

The term "xinput" refers to two different technologies that are commonly confused:

Microsoft XInput API

An Application Programming Interface (API) developed by Microsoft for Windows that standardizes communication between games and Xbox-compatible controllers.

X.Org xinput Utility

A command-line utility for Unix-like operating systems (Linux, BSD) that allows users to configure various input devices like mice, keyboards, and touchpads.

Quick Comparison

FeatureMicrosoft XInput APIX.Org xinput Utility
Primary OSWindowsUnix-like (Linux, BSD) with X11/XWayland
Main FunctionAPI for game controller inputUtility to configure X11 input devices
Typical UseGaming with Xbox-style controllersConfiguring mice, keyboards, touchpads
InstallationIntegrated into OS/DriversVia package manager (apt, dnf, etc.)
InterfaceNone (API); Tested via joy.cplCommand-Line Interface (CLI)

Microsoft XInput API

A standardized interface for game controllers on Windows.

Key Features

  • Standardized controller layout based on Xbox controllers
  • Simplified API for developers compared to DirectInput
  • Built-in vibration/rumble support
  • Proper analog trigger support
  • Headset/audio device support
  • Support for up to four controllers simultaneously

XInput Versions

Different versions exist, with varying features and OS compatibility:

XInput 1.4

Windows 8, 10, and 11

Most current version with full feature set

XInput 9.1.0

Windows Vista and newer

Reduced feature set, maintained for backward compatibility

XInput 1.3

Legacy version from DirectX SDK

No longer readily available from Microsoft

Setting Up Microsoft XInput

XInput functionality is integrated into Windows and accessed through controller drivers. Here's how to ensure it works correctly:

Steps to Ensure XInput Works Correctly

1
Update Windows

Keep your Windows OS updated to ensure you have the latest XInput support

2
Install Correct Drivers

For official Xbox controllers, Windows Update often handles this automatically. For other controllers, you may need to download specific drivers.

3
Connect Your Controller

Connect your controller via USB or a wireless adapter/Bluetooth

4
Check Device Manager

Verify that Windows recognizes your controller correctly without errors

Verifying XInput Works

1
Check Device Manager

Look under "Human Interface Devices," "Xbox Peripherals," or "Sound, video and game controllers"

2
Use Game Controller Settings

Press Win+R, type joy.cpl, and press Enter to open the Game Controllers panel

3
Test in Games

Launch a game that supports XInput to test if your controller works properly

X.Org xinput Utility

A command-line tool for managing input devices on Unix-like systems with the X Window System.

Core Purpose

The xinput utility allows you to:

  • List all input devices recognized by the X server
  • Query detailed information about specific devices
  • Configure device settings dynamically (button mappings, sensitivity, etc.)
  • Enable or disable devices entirely

Installing X.Org xinput Utility

Installing xinput is typically done through your distribution's package manager:

Prerequisites

  • A running Unix-like system (Linux, BSD)
  • X Window System (X11 or XWayland)
  • Administrative privileges (root or sudo)

Installation Commands

Debian, Ubuntu, Linux Mint
sudo apt update && sudo apt install xinput
Fedora, RHEL 8+, CentOS 8+
sudo dnf install xinput
RHEL 7, CentOS 7
sudo yum install xinput
Arch Linux, Manjaro
sudo pacman -Syu xorg-xinput

Essential xinput Commands

xinput list

Displays all input devices recognized by the X server

$ xinput list

xinput list-props "Device Name"

Shows properties associated with a specific device

$ xinput list-props "DELL Touchpad"

xinput set-prop "Device Name" "Property Name" <value>

Modifies device behavior by setting properties

$ xinput set-prop "DELL Touchpad" "libinput Tapping Enabled" 1

xinput enable/disable "Device Name"

Enables or disables a device

$ xinput disable "DELL Touchpad"

Verifying Installation

1
Open a terminal

Access your system's command-line interface

2
Check version

Run "xinput --version" to confirm installation

3
List devices

Run "xinput list" to see if it can detect your input devices

Compatibility Considerations

X Server Versions

Capabilities depend on the X Input Extension version supported by your server

Wayland

xinput has limited functionality under Wayland, only affecting applications running through XWayland

Common Issues & Solutions

Microsoft XInput Not Working

  • Update controller drivers via Device Manager
  • Check USB ports or wireless adapter connections
  • Try different USB ports
  • Check for Windows updates
  • Test with another game or application

X.Org xinput Command Not Found

  • Verify installation with your package manager
  • Log out and back in to update PATH
  • Check if you're running Wayland instead of X11
  • Try using the full path to the xinput binary

xinput Settings Reset After Reboot

  • Add your xinput commands to startup scripts
  • Create a .desktop file in ~/.config/autostart/
  • Use your desktop environment's startup application settings

Frequently Asked Questions

Are Microsoft XInput and X.Org xinput related?

No, they are entirely different technologies that happen to share a similar name. Microsoft XInput is for game controllers on Windows, while X.Org xinput is for configuring input devices on Unix-like systems.

Can I use Xbox controllers on Linux?

Yes, most modern Linux distributions support Xbox controllers. While the X.Org xinput utility can help configure some aspects, for gaming you'll typically rely on the kernel's support for game controllers via the joystick and evdev subsystems.

Do I need to install XInput on Windows?

No, XInput functionality is integrated into Windows. You only need to ensure your controller has the correct drivers installed, which often happens automatically.

How do I fix my controller not being detected?

On Windows, check Device Manager for driver issues. On Linux, use 'lsusb' to verify the device is connected, then configure it with the appropriate tools for your environment.

Can xinput commands be made permanent on Linux?

Yes, add your xinput commands to startup scripts or create a udev rule for more permanent configuration.

Additional Resources