diff -urN wine-4.12.1-orig/dlls/dinput/joystick.c wine-4.12.1/dlls/dinput/joystick.c
--- wine-4.12.1-orig/dlls/dinput/joystick.c	2019-07-07 18:25:09 +0900
+++ wine-4.12.1/dlls/dinput/joystick.c	2019-08-03 00:58:01 +0900
@@ -404,6 +404,9 @@
         }
         case (DWORD_PTR)DIPROP_DEADZONE: {
             LPCDIPROPDWORD pd = (LPCDIPROPDWORD)ph;
+            if (This->force_deadzone) {
+                break;
+            }
             if (ph->dwHow == DIPH_DEVICE) {
                 TRACE("deadzone(%d) all\n", pd->dwData);
                 for (i = 0; i < This->base.data_format.wine_df->dwNumObjs; i++)
@@ -1007,6 +1010,13 @@
         TRACE("setting default deadzone to: \"%s\" %d\n", buffer, This->deadzone);
     }
 
+    if (!get_config_key(hkey, appkey, "ForceDeadZone", buffer, sizeof(buffer)))
+    {
+        This->force_deadzone = (atoi(buffer) != 0);
+        TRACE("setting forced deadzone to: %s (\"%s\")\n",
+              This->force_deadzone ? "enabled" : "disabled", buffer);
+    }
+
     This->axis_map = HeapAlloc(GetProcessHeap(), 0, This->device_axis_count * sizeof(int));
     if (!This->axis_map) return DIERR_OUTOFMEMORY;
 
diff -urN wine-4.12.1-orig/dlls/dinput/joystick_private.h wine-4.12.1/dlls/dinput/joystick_private.h
--- wine-4.12.1-orig/dlls/dinput/joystick_private.h	2019-07-07 18:25:09 +0900
+++ wine-4.12.1/dlls/dinput/joystick_private.h	2019-08-03 00:58:01 +0900
@@ -48,6 +48,7 @@
     int         device_axis_count;      /* Total number of axes in the device */
     int        *axis_map;               /* User axes remapping */
     LONG        deadzone;               /* Default dead-zone */
+    int         force_deadzone;         /* Force use of default deadzone? */
 
     joy_polldev_handler *joy_polldev;
 } JoystickGenericImpl;
