# SDL: Added the hint SDL\_HINT\_JOYSTICK\_WGI to control whether to use Windows.Gaming.Input for controllers (a6228)

**URL:** <https://discourse.libsdl.org/t/sdl-added-the-hint-sdl-hint-joystick-wgi-to-control-whether-to-use-windows-gaming-input-for-controllers-a6228/44724>\
**Category:** SDL Commits\
**Created:** [July 8, 2023, 5:42pm UTC](https://discourse.libsdl.org/t/sdl-added-the-hint-sdl-hint-joystick-wgi-to-control-whether-to-use-windows-gaming-input-for-controllers-a6228/44724 "2023-07-08T17:42:02Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![SDLPushPostBot](https://discourse.libsdl.org/user_avatar/discourse.libsdl.org/sdlpushpostbot/32/4370_2.png) [@SDLPushPostBot](https://discourse.libsdl.org/u/SDLPushPostBot)\
**Post date:** [July 8, 2023, 5:42pm UTC](https://discourse.libsdl.org/t/sdl-added-the-hint-sdl-hint-joystick-wgi-to-control-whether-to-use-windows-gaming-input-for-controllers-a6228/44724/1 "2023-07-08T17:42:02Z")

</div>

> <https://github.com/libsdl-org/SDL/commit/a6228e7aafb66075fe8f4aaf411314fc92340499>

```diff
From a6228e7aafb66075fe8f4aaf411314fc92340499 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Sat, 8 Jul 2023 09:32:24 -0700
Subject: [PATCH] Added the hint SDL_HINT_JOYSTICK_WGI to control whether to
 use Windows.Gaming.Input for controllers

---
 WhatsNew.txt | 7 +++++++
 include/SDL_hints.h | 9 +++++++++
 src/joystick/windows/SDL_rawinputjoystick.c | 12 ++++++++----
 src/joystick/windows/SDL_windows_gaming_input.c | 4 ++++
 4 files changed, 28 insertions(+), 4 deletions(-)

diff --git a/WhatsNew.txt b/WhatsNew.txt
index a5636ed83a9f..1d7c27e20a2d 100644
--- a/WhatsNew.txt
+++ b/WhatsNew.txt
@@ -1,6 +1,13 @@
 
 This is a list of major changes in SDL's version history.
 
+---------------------------------------------------------------------------
+2.28.2:
+---------------------------------------------------------------------------
+General:
+* Added the hint SDL_HINT_JOYSTICK_WGI to control whether to use Windows.Gaming.Input for controllers
+
+
 ---------------------------------------------------------------------------
 2.28.0:
 ---------------------------------------------------------------------------
diff --git a/include/SDL_hints.h b/include/SDL_hints.h
index ad3b4030bf46..c808a60db562 100644
--- a/include/SDL_hints.h
+++ b/include/SDL_hints.h
@@ -1007,6 +1007,15 @@ extern "C" {
   */
 #define SDL_HINT_JOYSTICK_THREAD "SDL_JOYSTICK_THREAD"
 
+/**
+ * \brief A variable controlling whether Windows.Gaming.Input should be used for controller handling.
+ *
+ * This variable can be set to the following values:
+ * "0" - WGI is not used
+ * "1" - WGI is used (the default)
+ */
+#define SDL_HINT_JOYSTICK_WGI "SDL_JOYSTICK_WGI"
+
 /**
  * \brief Determines whether SDL enforces that DRM master is required in order
  * to initialize the KMSDRM video backend.
diff --git a/src/joystick/windows/SDL_rawinputjoystick.c b/src/joystick/windows/SDL_rawinputjoystick.c
index 9aa264f33072..b6f8a5edb5fc 100644
--- a/src/joystick/windows/SDL_rawinputjoystick.c
+++ b/src/joystick/windows/SDL_rawinputjoystick.c
@@ -564,6 +564,10 @@ static void RAWINPUT_UpdateWindowsGamingInput()
 }
 static void RAWINPUT_InitWindowsGamingInput(RAWINPUT_DeviceContext *ctx)
 {
+ if (!SDL_GetHintBoolean(SDL_HINT_JOYSTICK_WGI, SDL_TRUE)) {
+ return;
+ }
+
     wgi_state.need_device_list_update = SDL_TRUE;
     wgi_state.ref_count++;
     if (!wgi_state.initialized) {
@@ -879,12 +883,12 @@ static int RAWINPUT_JoystickInit(void)
 {
     SDL_assert(!SDL_RAWINPUT_inited);
 
- if (!WIN_IsWindowsVistaOrGreater()) {
- /* According to bug 6400, this doesn't work on Windows XP */
- return -1;
+ if (!SDL_GetHintBoolean(SDL_HINT_JOYSTICK_RAWINPUT, SDL_TRUE)) {
+ return 0;
     }
 
- if (!SDL_GetHintBoolean(SDL_HINT_JOYSTICK_RAWINPUT, SDL_TRUE)) {
+ if (!WIN_IsWindowsVistaOrGreater()) {
+ /* According to bug 6400, this doesn't work on Windows XP */
         return -1;
     }
 
diff --git a/src/joystick/windows/SDL_windows_gaming_input.c b/src/joystick/windows/SDL_windows_gaming_input.c
index f9e7e4204773..218c0fb73e8d 100644
--- a/src/joystick/windows/SDL_windows_gaming_input.c
+++ b/src/joystick/windows/SDL_windows_gaming_input.c
@@ -483,6 +483,10 @@ static int WGI_JoystickInit(void)
     RoGetActivationFactory_t RoGetActivationFactoryFunc = NULL;
     HRESULT hr;
 
+ if (!SDL_GetHintBoolean(SDL_HINT_JOYSTICK_WGI, SDL_TRUE)) {
+ return 0;
+ }
+
     if (FAILED(WIN_RoInitialize())) {
         return SDL_SetError("RoInitialize() failed");
     }

```
