Fact-checked by Grok 2 weeks ago

DirectInput

DirectInput is a legacy () developed by as part of the multimedia framework, designed to handle input from various devices including keyboards, mice, joysticks, and other game controllers. Introduced with 1.0 in 1995, it enables developers to retrieve device data directly, bypassing some Windows message handling for more responsive applications, particularly in gaming. Key features of DirectInput include support for force-feedback effects, which allow controllers to provide haptic responses like vibrations or resistance, and action mapping, a system that abstracts input actions to make applications device-agnostic. It enumerates and configures a wide range of input devices, processing data from both standard and specialized hardware such as steering wheels or flight sticks. However, does not recommend using DirectInput for or input in contemporary development, advising instead the use of Windows messages for those devices due to better integration and performance. In its current status as of 2025, DirectInput remains supported on Windows for backward compatibility with legacy hardware and applications but is considered outdated compared to newer APIs. For modern game controllers, particularly those compatible with Xbox hardware (XUSB devices), Microsoft promotes XInput, which offers simpler setup, native support for features like separate trigger inputs and vibration, and cross-compatibility with Xbox consoles. DirectInput is unavailable in Windows Store apps and requires the legacy DirectX SDK for implementation, often used alongside XInput to ensure broad device support in PC gaming software. Emerging alternatives like the GameInput API further consolidate input handling by superseding both DirectInput and XInput for future-proof development.

Overview

Purpose and Capabilities

DirectInput is a legacy component of the that enables the collection of raw input data from various devices, including joysticks, gamepads, mice, and keyboards. Its primary purpose is to allow game developers to retrieve input directly from hardware, circumventing the standard Windows input processing queues to minimize latency and support flexible, application-specific input configurations. Key capabilities of DirectInput include handling up to 128 buttons, 8 axes, and 4 point-of-view (POV) hats per device, providing comprehensive support for complex controller interactions. It features action mapping, which permits developers to bind device elements—such as axes or buttons—to abstract game actions, ensuring portability across different hardware without hardcoded dependencies. DirectInput also incorporates force feedback mechanisms for haptic output, supporting effects like motor and advanced vibrations on compatible devices to enhance in and simulations. Originally centered on devices for precise control in early applications, its scope expanded over time to accommodate a wider array of input peripherals.

Key Components

DirectInput's architecture revolves around a set of core COM interfaces that form the foundation for interacting with input devices. The primary interface, IDirectInput8, serves as the entry point for initializing DirectInput, enumerating available devices, creating device instances, and managing overall system status. This interface allows applications to discover devices by type, such as joysticks or mice, and supports configuration through methods like RunControlPanel for launching device setup dialogs. Complementing this, the IDirectInputDevice8 interface represents a specific input device, enabling applications to acquire the device, retrieve input data via polling or events, and configure properties like cooperative levels for shared access. For devices supporting force feedback, the IDirectInputEffect interface handles the creation, download, and playback of haptic effects, allowing precise control over parameters such as magnitude and duration. Key data structures underpin these interfaces by standardizing device information and input states. The DIDEVICEINSTANCE structure captures essential details about a device instance, including its globally (GUID), product name, and type, which is populated during to identify and categorize . For joystick-specific input with extended capabilities, the DIJOYSTATE2 structure holds the current state of axes, buttons, and point-of-view controls, providing a snapshot of positional and digital data in a fixed format for easy retrieval. Action mapping is facilitated by the DIACTIONFORMAT structure, which defines an array of action-semantic mappings to abstract device-specific inputs into application-defined actions, simplifying cross-device compatibility. Device discovery occurs through the enumeration process initiated by the IDirectInput8::EnumDevices , which invokes a user-defined callback to iterate over connected devices filtered by type (e.g., GUID_SysKeyboard for keyboards or GUID_Joystick for joysticks) and usage flags. This process populates instances of DIDEVICEINSTANCE for each matching device, enabling applications to select and create appropriate IDirectInputDevice8 objects without prior knowledge of the configuration. Input retrieval in DirectInput supports two primary buffer modes to accommodate different application needs. In immediate mode, the IDirectInputDevice8::GetDeviceState method fetches the current device state directly into a structure like DIJOYSTATE2, ideal for real-time polling where only the latest input is required. Conversely, buffered mode queues multiple input events in an internal buffer, accessible via repeated calls to GetDeviceState, which allows retrieval of historical data such as button presses and releases in , useful for event-driven scenarios without missing transient inputs. The buffer size is configurable through device properties to balance and usage.

History and Development

Origins in DirectX

DirectInput was launched in 1995 as a core component of 1.0, Microsoft's initial release of its multimedia suite aimed at enabling hardware-accelerated gaming on the newly introduced operating system. This integration was part of a broader strategy to transform Windows into a viable platform for high-performance games, moving away from the dominance of by providing developers with unified access to PC hardware. The primary design goal of DirectInput was to overcome the shortcomings of existing Win32 input APIs, such as the Windows (WinMM) joystick interface, which offered limited support for multiple devices, lacked low-latency polling, and required cumbersome low-level programming for diverse hardware configurations. By facilitating direct access to input hardware like s, DirectInput allowed games to achieve more responsive and consistent control without the overhead of standard Windows drivers, thereby streamlining development for real-time applications. Within the DirectX ecosystem, served as the dedicated input layer complementing for graphics rendering and DirectSound for audio processing, together forming a cohesive framework for comprehensive multimedia input and output in PC gaming. This holistic approach enabled developers to build immersive experiences that leveraged across multiple subsystems simultaneously. Early adoption of DirectInput was driven primarily by game developers seeking reliable joystick support in an era of proliferating and incompatible input hardware, as it provided a standardized method to handle varying device capabilities without custom driver implementations. While initially focused on s, DirectInput would expand to include and handling in subsequent iterations.

Version History

DirectInput evolved alongside the platform, with major advancements introduced in successive versions to enhance input handling for games and multimedia applications. The debuted in 1.0, released in September 1995, initially providing support for joysticks to enable low-latency input in real-time applications. 2.0, released in 1996, included minor refinements to DirectInput for improved stability and compatibility with early hardware. DirectX 3.0, released in September 1996, expanded to include and support through wrappers around Windows , alongside pollable and event-based real-time input for joysticks. In August 1997, DirectX 5.0 introduced force feedback capabilities to the DirectInput API, allowing developers to integrate haptic effects with compatible devices such as force-feedback joysticks for more immersive user interactions. DirectX 6.0, shipped in August 1998, improved 's device enumeration and integration with emerging hardware standards, notably adding support for Universal Serial Bus (USB) to enable true plug-and-play functionality for input devices including joysticks, keyboards, and pointing devices, while also enhancing multithreading compatibility for better performance in complex applications. The September 1999 release of DirectX 7.0 included general platform refinements but no major updates to DirectInput. DirectX 8.0, announced in November 2000, marked the final major update to , introducing action mapping as a substantial new feature for simplified, device-agnostic input configuration, along with improved compatibility with Windows 2000. Following DirectX 8.0, received only minor compatibility updates in later DirectX versions, such as DirectX 9.0, to maintain for legacy applications, but no significant new features were added, positioning it as a stable but deprecated component in modern Windows ecosystems.

Technical Architecture

API Interfaces

DirectInput provides developers with a set of COM-based interfaces for interacting with input devices, primarily through the IDirectInput8 interface for system-level operations and the IDirectInputDevice8 interface for device-specific control. These interfaces enable the creation, enumeration, and management of input devices, supporting both polling and event-driven input modes. Additionally, the IDirectInputEffect interface handles force feedback effects, allowing for advanced haptic interactions. All methods return HRESULT values to indicate success or failure, with input-specific errors such as DIERR_NOTACQUIRED signaling when a device is not properly acquired for input.) The IDirectInput8 interface serves as the entry point for DirectInput applications, obtained via the . Its instantiates a device interface by specifying a device GUID, returning an IDirectInputDevice8 pointer for further interaction; this is essential for targeting specific hardware like joysticks without prior . The lists connected devices by applying filters for type (e.g., keyboards, mice, or joysticks) and flags to include or exclude certain categories, using a callback to process each enumerated device. For user configuration, the invokes the Windows Control Panel applet associated with DirectInput, facilitating hardware setup and calibration directly from the application. Once a is created, the IDirectInputDevice8 interface manages its state and . The SetDataFormat method defines the structure of input data, using predefined formats such as c_dfDIJoystick to map device axes, buttons, and POV hats to a consistent layout like the DIJOYSTATE structure for input. In polling mode, GetDeviceState retrieves the current device state into a , returning immediate values for axes, buttons, and other controls; this method requires the device to be beforehand via . For buffered or -driven input, SetEventNotification associates a Windows handle with the device, signaling the application when input changes occur, which is useful for responsiveness in games. Force feedback capabilities are exposed through the , obtained from an IDirectInputDevice8 instance supporting effects. The generates a haptic effect using the DIEFFECT structure, which specifies parameters including effect type (e.g., constant or periodic ), direction, , , and envelope details for motors or actuators. Once created, the initiates playback of the effect, optionally repeating it for a set number of iterations, while the halts it immediately; these allow dynamic control of feedback in response to game events. Error handling for these operations follows the HRESULT pattern, with codes like DIERR_EFFECTPLAYING indicating conflicts during effect management.

Input Device Handling

DirectInput devices begin in an unacquired state by default, which prevents applications from reading input data until explicit control is obtained. To gain access, applications invoke the IDirectInputDevice8::Acquire method after setting the data format, transitioning the device to an acquired state that enables subsequent calls to input retrieval functions. This acquisition process is essential for ensuring the application has priority over the device's input stream, with failure to acquire often resulting from invalid parameters or another application holding priority. The acquired state supports both exclusive and shared access modes, determined by prior configuration of the cooperative level. To relinquish control, the IDirectInputDevice8::Unacquire method is called, immediately returning to the unacquired state without , which allows other applications to acquire it. Unacquiring is particularly important in scenarios like deactivation or application to avoid blocking or peer to . If is already unacquired, the method returns DI_NOEFFECT without . Input handling in DirectInput supports both polling and event-driven approaches for flexibility in application design. Polling involves synchronous calls to IDirectInputDevice8::GetDeviceState, which retrieves the immediate current state of into a provided , suitable for applications requiring constant updates. In contrast, event-driven handling uses IDirectInputDevice8::SetEventNotification to associate an event handle with , signaling the application via the Win32 SetEvent function whenever state changes, enabling efficient asynchronous processing without continuous polling. For buffered event-driven input, the buffer size is set using the DIPROPDWORD through IDirectInputDevice8::SetProperty, specifying the maximum number of that can be queued before potential on . Data processing in DirectInput includes mechanisms for refining raw input values, particularly for analog , to ensure and accuracy. calibration is configured via IDirectInputDevice8::SetProperty with properties like DIPROP_CALIBRATIONMODE, allowing applications to switch between calibrated (default) and raw data modes or adjust per-axis settings for hardware-specific corrections. Dead zones, which filter out minor input fluctuations to eliminate unintended movements, and saturation levels, which cap the effective range of axis values to prevent overflow, are managed through dedicated properties such as DIPROP_DEADZONE and DIPROP_SATURATION, respectively, often integrated with the overall axis range defined by DIPROPRANGE to map physical inputs to logical values between -10,000 and +10,000. These settings enable developers to tailor input sensitivity, with dead zones typically expressed as a of the range (e.g., 10% to ignore central ) and saturation ensuring full-scale outputs at hardware . Multidevice support in DirectInput relies on levels to coordinate access across multiple applications and devices without conflicts. The IDirectInputDevice8::SetCooperativeLevel establishes these levels using flags like DISCL_FOREGROUND, which restricts acquisition to when the application's window is in the foreground, and DISCL_EXCLUSIVE, which grants sole access to the device while blocking other exclusive claimants but permitting non-exclusive sharing. Combinations such as DISCL_FOREGROUND | DISCL_EXCLUSIVE prioritize focused, dedicated control for immersive applications, while DISCL_BACKGROUND | DISCL_NONEXCLUSIVE allows input capture even when the window is inactive, facilitating multitasking. These levels manage focus and priority by automatically unacquiring devices during events like window minimization or system dialogs, ensuring equitable resource distribution.

Comparisons with Other Input APIs

Versus XInput

DirectInput and XInput represent two distinct approaches to handling input in Windows applications, with DirectInput serving as a general-purpose for a wide range of (HID)-compliant input devices, while XInput is specifically designed for and compatible controllers using a standardized layout. DirectInput, part of the broader ecosystem, supports diverse peripherals such as joysticks, wheels, and custom devices by providing flexible enumeration and state querying, but it requires more complex initialization and device-specific handling. In contrast, XInput, introduced in version 1.1 with the April 2006 DirectX SDK release, streamlines development for controllers by offering a unified interface that mirrors console programming models, reducing setup overhead and ensuring consistent behavior across Windows and platforms. Key feature differences highlight XInput's optimizations for modern gamepads, particularly in areas like haptic feedback and audio integration, which DirectInput lacks native support for in Xbox-compatible devices. For instance, XInput enables through the XInputSetState function, allowing developers to trigger motor effects with simple parameters for left and right intensities, a not available when accessing XInput devices (known as XUSB) via DirectInput's HID interface. Additionally, XInput supports querying connected headset devices for voice input and output, facilitating integrated audio features common in controllers, whereas DirectInput does not expose this functionality. DirectInput, however, excels in supporting legacy or non-standard devices with up to 8 axes and 128 buttons, compared to XInput's limits of 4 axes, 10 buttons, 2 triggers, and an 8-direction , making it more versatile for specialized hardware despite its higher complexity. In terms of performance, both APIs rely on polling via functions like IDirectInputDevice8::GetDeviceState for DirectInput and XInputGetState for XInput, but XInput's streamlined design results in lower overhead for controllers, as it avoids the generalized device enumeration and buffering required by DirectInput. DirectInput incurs additional processing for non-Xbox devices due to its broad HID compatibility, potentially leading to higher in diverse setups, though both can achieve responsive input when implemented efficiently. Compatibility between the two APIs is asymmetric, with XInput devices accessible through DirectInput via the XUSB driver's HID export, but this fallback introduces inaccuracies such as combining left and right triggers into a single Z-axis, limiting their independent range and precision. XInput, conversely, does not support legacy DirectInput-only devices, requiring developers to implement dual-API support—often by checking for XInput availability first—for broader compatibility in applications targeting both old and new hardware. This design positions XInput as the preferred choice for contemporary gamepad-centric games since its debut, while DirectInput persists as a legacy option for fallback scenarios.

Versus Raw Input and Windows Messages

Raw Input, introduced with , offers applications low-level access to input from Human Interface Devices (HIDs) such as keyboards and mice without requiring a dependency on . In contrast, DirectInput internally wraps Raw Input functionality but introduces additional overhead by creating a separate to process the data, making it less efficient for keyboard and mouse handling. This overhead is particularly noticeable in scenarios requiring high-precision input, where Raw Input provides direct HID stack access and supports native handling of multiple devices of the same type, such as several mice, without the need for device enumeration or opening. Windows messages, such as WM_KEYDOWN for events and WM_MOUSEMOVE for movements, deliver input through an event-driven model integrated into the standard . DirectInput bypasses this message loop to enable polling-based input retrieval, allowing applications to query device states directly from drivers even in the background, but this approach is unnecessary and discouraged for keyboards and mice since DirectX 8 due to its complexity without corresponding benefits for standard text entry or navigation tasks. Alternatives like Raw Input and Windows messages offer key advantages over DirectInput's device acquisition model, which requires explicit claiming of devices in exclusive or non-exclusive modes that can suppress input for other applications or ignore system settings like mouse acceleration. Raw Input avoids such conflicts by delivering data via WM_INPUT messages that can be processed alongside other events, while Windows messages ensure seamless integration with applications without overriding global input behaviors. Both methods eliminate the need for DirectInput's cooperative levels, reducing potential interference and simplifying development for non-controller inputs. Microsoft recommends using Raw Input for low-level keyboard and mouse access in games, Windows messages for general event handling, and XInput for gamepads, reserving DirectInput primarily for legacy joysticks where polling flexibility remains relevant.

Device Support and Compatibility

Game Controllers and Joysticks

DirectInput provides robust support for traditional joysticks through the predefined device type identified by the GUID_Joystick, a product GUID used during device enumeration to identify compatible hardware such as flight simulation yokes and steering wheels.) To access joystick input, applications enumerate available devices using IDirectInput8::EnumDevices, filtering for joystick instances in the callback function based on the device GUID or type, and then create a device instance with the specific instance GUID. Once created, the device is configured with the standard data format c_dfDIJoystick via IDirectInputDevice8::SetDataFormat, which defines support for up to six axes—X, Y, Z for positional movement, R for rotation, and U, V for additional sliders—along with 32 buttons and 4 point-of-view (POV) hats. This format corresponds to the DIJOYSTATE structure, enabling retrieval of the current state through IDirectInputDevice8::GetDeviceState, typically preceded by a Poll call to ensure updated data from the device driver. Gamepads, often treated as generic Human Interface Devices (HID), are handled in DirectInput via the GUID_Unknown for broad enumeration or GUID_Joystick if the device matches semantics, allowing applications to detect and acquire non-standard controllers during the same EnumDevices process. For non-standard layouts, developers can implement custom mappings by enumerating device objects with IDirectInputDevice8::EnumObjects and building a tailored DIDATAFORMAT structure that specifies object instances using DIDFT_AXIS for axes and DIDFT_BUTTON for buttons, thus selecting only relevant inputs while ignoring extraneous ones.) This object-level filtering ensures compatibility with varied configurations, such as those with fewer axes or additional buttons, without relying on predefined formats.) Legacy compatibility for specialized controllers like flight simulation yokes and wheels is maintained through DirectInput's property pages, accessible via methods like IDirectInputDevice8::GetProperty and SetProperty, which allow runtime adjustments to axis ranges, dead zones, and saturation levels. Calibration is facilitated by invoking IDirectInputDevice8::RunControlPanel, which launches the system's standard control panel (joy.cpl) for user-driven setup, including centering axes and testing buttons and POVs.) These features ensure that older hardware remains functional in modern applications, particularly in where precise control mapping is essential. DirectInput also supports force feedback effects, such as rumble motors in compatible controllers, through the IDirectInputEffect for enhanced immersion.)

Xbox Controller Integration

DirectInput provides support for Xbox controllers by enumerating them as joystick devices, but this integration comes with significant limitations compared to the dedicated XInput API, which offers superior feature access for these peripherals. The is detected by DirectInput as a standard , enabling basic input polling through APIs like IDirectInputDevice8::GetDeviceState. However, the left and right triggers are combined into a single Z-axis, preventing independent detection of each trigger's position, which complicates precise control in games requiring separate throttle or braking inputs. The functions as a point-of-view (POV) hat rather than discrete buttons, limiting its use in applications expecting button-like behavior for directional input. Additionally, advanced features such as vibration feedback and voice headset support are unavailable under DirectInput, as these rely on XInput-specific extensions. Support for the original under DirectInput 8 is basic and often inconsistent, requiring third-party drivers or emulation modes to achieve recognition as a HID-compliant device. These workarounds map the controller's inputs to standard axes and buttons, but issues and incomplete feature mapping, such as limited analog precision, frequently arise without specialized software like XBCD. To mitigate these shortcomings, applications can implement a fallback mechanism by first querying XInput via XInputGetState to detect controllers and retrieve full state data, then converting the XINPUT_STATE structure to a DIJOYSTATE format for compatibility with legacy DirectInput code. This approach—filtering devices by identifiers like "IG_" in WMI queries—ensures controllers are handled optimally while preserving support for non-XInput devices. Later Xbox controllers, such as those for and Xbox Series X/S, receive partial DirectInput support through HID enumeration, allowing core button and axis inputs to be read as a generic joystick. However, recommends using XInput or the newer GameInput API for these devices, as DirectInput disregards advanced capabilities like adaptive triggers and enhanced rumble, resulting in a degraded experience for feature-rich titles.

Legacy Status and Alternatives

Deprecation and Recommendations

DirectInput has received no updates since version 8.0, released with 8.0 in November 2000, marking it as the final major iteration of the . documentation from 2011 onward classifies DirectInput as a component, advising developers to avoid it in new projects due to its outdated design and limited support for modern hardware. For contemporary input handling, recommends XInput specifically for gamepads and Xbox-compatible controllers, Raw Input for low-level access to keyboards, mice, and joysticks, and the —introduced in 2021 via the —for a unified interface across all input devices with enhanced performance and cross-platform capabilities. Legacy applications, particularly games from before 2005, often depend on DirectInput for device interaction, posing migration challenges when updating to newer systems or ; community-developed wrappers, such as those emulating DirectInput through XInput, can bridge this gap for compatibility without full rewrites. Although still operational on and 11, DirectInput no longer benefits from security patches or optimizations for emerging devices, potentially leading to compatibility issues with newer peripherals.

Modern Usage Scenarios

Despite its legacy status since the introduction of XInput, DirectInput continues to find use in legacy PC games from the 1990s and 2000s, where it serves as the primary input for handling controllers and other devices. Titles such as and its mods, originally released in 1998, rely on DirectInput for joystick and gamepad support, enabling compatibility with older hardware without requiring updates to modern APIs like XInput. Flight simulators, including those like Microsoft Flight Simulator 2020, often support DirectInput-compatible custom joysticks and (hands-on-throttle-and-stick) systems that demand extensive axis and button mappings beyond standard gamepad inputs. In emulation software, persists for retro gaming setups, particularly with adapters for legacy consoles like the , where it ensures recognition of non-XInput devices that original hardware inputs. Niche applications in settings leverage DirectInput for specialized Human Interface Devices (HID), such as custom panels or force-feedback equipment, where its support for diverse input types provides granular not always available through newer APIs. Backward compatibility layers in platforms like and Windows maintain DirectInput functionality for older titles and devices, with Steam Input offering to bridge DirectInput games using modern controllers. Third-party libraries, such as SDL2, abstract DirectInput on Windows to provide cross-platform support for legacy input in emulators and projects, ensuring ongoing viability without native changes. Looking ahead, DirectInput's role is unlikely to expand due to its legacy status, but elements of its functionality are integrated into the Universal Windows Platform (UWP) through the GameInput API, which acts as a superset encompassing DirectInput alongside XInput and HID for unified device handling in modern applications. In October 2025, the Microsoft Game Development Kit updated GameInput to include enhanced support for advanced haptics and motion sensors across PC and console. As of 2025, no full retirement has been announced for Windows 11, allowing continued support in compatibility modes, though developers are encouraged to migrate to GameInput for future-proofing.

References

  1. [1]
    Introduction to DirectInput
    ### Summary of Introduction to DirectInput
  2. [2]
    DirectX: 30 years of Windows gaming from DOOM95 to ray tracing
    Sep 30, 2025 · The result was published as DirectX 1.0 on 30 September 1995. The first version was a set of programming interfaces (APIs) designed to ...
  3. [3]
    DirectInput
    ### Summary of DirectInput
  4. [4]
    DirectInput and XUSB Devices - Win32 apps - Microsoft Learn
    Jul 14, 2025 · XUSB devices use a HID interface for DirectInput, supporting gamepads, arcade sticks, wheels, flight sticks, and guitars.
  5. [5]
    Comparison of XInput and DirectInput features - Win32 apps
    Jul 14, 2025 · XInput is easier to use and requires less setup than DirectInput; Both Xbox and Windows programming will use the same sets of core APIs, ...
  6. [6]
    DIJOYSTATE2 Structure
    ### Summary of DirectInput Capabilities for Joystick Devices
  7. [7]
    IDirectInput8 Interface
    ### Summary of IDirectInput8 Interface
  8. [8]
  9. [9]
    Microsoft Announces Release of DirectX 8.0 - Source
    Nov 9, 2000 · DirectX was first introduced in 1995 and is a recognized standard for multimedia application development on the Windows platform. About ...
  10. [10]
    Q150651: Microsoft DirectX 1.0 Questions and Answers
    ### Summary of DirectX 1.0 from Q150651
  11. [11]
    Direct X-tasy - GameDev.net
    In this article we are going to cover some philosophical ground about DirectX and its origins, some actual experiences with DirectX, and then finish up with ...
  12. [12]
    Microsoft Ships DirectX Version 3.0 - Source
    Sep 25, 1996 · The final version of DirectX 3.0 for the Windows® 95 operating system is available now to software developers. Microsoft will license the ...
  13. [13]
    Microsoft Ships DirectX 5.0 - Source
    Aug 4, 1997 · DirectX 5.0 is a set of application programming interfaces (APIs) ... DirectInput® API support for force-feedback devices and a new extensible game ...
  14. [14]
    Microsoft Ships Final Release of DirectX 6.0 - Source
    Aug 7, 1998 · Now integrated into Windows 98 and upcoming Windows NT® 5.0 operating systems, DirectX offers better graphics, faster frame rates and enhanced ...
  15. [15]
    IDirectInputDevice8 Interface
    ### Summary of IDirectInputDevice8 Methods
  16. [16]
    DirectInput Interfaces
    ### Summary of IDirectInputEffect Interface and Methods
  17. [17]
    XInput Versions - Win32 apps - Microsoft Learn
    Jul 14, 2025 · The first redistributable version of XInput, XInput 1.1, shipped in the April 2006 release of the DirectX SDK. The last version to ship in ...Missing: introduction | Show results with:introduction
  18. [18]
    Raw Input Overview - Win32 apps | Microsoft Learn
    Jul 14, 2025 · The raw input API provides a stable and robust way for applications to accept raw input from any HID, including the keyboard and mouse.Missing: DirectInput documentation
  19. [19]
    Taking Advantage of High-Definition Mouse Movement - Win32 apps
    May 11, 2023 · For more info about WM_INPUT, see About raw input. DirectInput. DirectInput ... DirectInput is only useful for reading data from DirectInput ...
  20. [20]
    Understanding DirectInput
    ### Summary of DirectInput's Interaction with Windows Messages, Acquisition Model, and Why It Bypasses Messages
  21. [21]
    XInput Game Controller APIs - Win32 apps - Microsoft Learn
    Jul 14, 2025 · This guide contains information on how to use the XInput API to interact with a controller when it is connected to a Windows PC. Programming ...
  22. [22]
    Using DirectInput
    ### Summary: Enumerating Joysticks in DirectInput
  23. [23]
    DIJOYSTATE Structure
    ### Summary of DIJOYSTATE Structure
  24. [24]
    Joystick Data
    ### Summary of DirectInput Joystick Support
  25. [25]
    Does the Xbox windows controller work with directinput games?
    Apr 11, 2012 · Yes, MSDN provides confirmation that this will work and of the limitations imposed on the Xbox 360 controller when using DirectIput: The Xbox ...Does the Xbox One controller support DirectInput on PC? - ArqadeHow can I hookup 24 Xbox One controllers on my PC? What is the ...More results from gaming.stackexchange.com
  26. [26]
    Driver needed for original Xbox Controller in x64 premium
    Jul 11, 2010 · original title: Original Xbox Controller in x64 premium i have been looking everywhere for a correct driver for my xbox controller (the MS ...
  27. [27]
    Controller:Xbox Controller - PCGamingWiki PCGW
    Sep 16, 2025 · A new version of XBCD driver allows Original Xbox Controllers to be used on Windows machines. Officially supports 32 Product IDs, although ...
  28. [28]
    Using DirectInput with XBOX One controller and window focus on ...
    Feb 12, 2018 · Been exploring this myself regarding XBox One controllers. Each API has its own set of limitations when it comes to XBox One and XBox360 ...<|separator|>
  29. [29]
    Legacy User Interaction Features - Win32 apps - Microsoft Learn
    DirectInput is legacy and not available for Windows Store apps. Use XInput instead. Text Services Framework, Describes how to use the Microsoft Windows Text ...
  30. [30]
    Raw Input - Win32 apps - Microsoft Learn
    Jul 14, 2025 · This section describes how the system provides raw input to your application and how an application receives and processes that input.Missing: DirectInput | Show results with:DirectInput
  31. [31]
    GameInput introduction - Microsoft Game Development Kit
    Apr 28, 2025 · GameInput is a next-gen input API with a single interface for various devices, a superset of legacy APIs, and is recommended for new code.Missing: history | Show results with:history
  32. [32]
    csutorasa/XOutput: DirectInput to XInput wrapper - GitHub
    Dec 3, 2024 · XOutput is a software that can convert DirectInput into XInput. DirectInput data is read and sent to a virtual XInput (Xbox 360 Controller) device.
  33. [33]
    Glossary:Controller - PCGamingWiki PCGW
    Oct 14, 2025 · DirectInput is Microsoft's original controller API layered above the Raw Input API and were released with DirectX 1.0 in 1995. DirectInput ...
  34. [34]
    XInput vs DirectInput vs Switch Mode (vs Steam Input) Explained
    Sep 28, 2025 · Comparing XInput vs DirectInput vs Switch Mode ; Best Use Case, Modern PC games, plug-and-play. Old games, niche hardware, advanced mapping.
  35. [35]
    DirectInput support? · Issue #54 · HarbourMasters/Starship - GitHub
    Dec 24, 2024 · A lot of old legacy N64 to Windows adapters only work with DirectInput and don't appear to be recognized at all by Starship. Thank you again for ...
  36. [36]
    Human Interface Devices Reference - Win32 apps - Microsoft Learn
    Jan 23, 2023 · The DIHIDFFINITINFO structure is used by DirectInput to provide information to a HID force-feedback driver about the device it is being asked ...Missing: industrial | Show results with:industrial
  37. [37]
    How to Play DirectInput Games with Steam Input - Bryan Rumsey
    Apr 18, 2019 · Regardless, Steam Input doesn't natively support DirectInput which means there are hundreds of thousands of games that aren't compatible with it ...Missing: industrial specialized HID devices backward Windows
  38. [38]
    Microsoft's new GameInput API is going to open up so many ... - Reddit
    Feb 28, 2024 · GameInput is a functional superset of all legacy input APIs—XInput, DirectInput, Raw Input, Human Interface Device (HID), and WinRT APIs—in ...what's the difference between Xinput and DirectInput on Controller APIDo you think any of the third party controller manufacturers ... - RedditMore results from www.reddit.comMissing: documentation | Show results with:documentation
  39. [39]
    GDC 2025: GameInput PC Expands to Meet Your Needs
    Mar 17, 2025 · The new version of the API is now able to work in remote session scenarios as well. Available today via NuGet. If you are wondering how you can ...
  40. [40]
    Deprecated features in the Windows client - Microsoft Learn
    As of November 2024, the Application Virtualization (App-V) client in Windows is no longer deprecated and persists with a fixed extended support lifecycle.