diff --git a/inc/dd.h b/inc/dd.h
index 8949cb5..9f6573f 100644
--- a/inc/dd.h
+++ b/inc/dd.h
@@ -127,6 +127,7 @@ typedef struct CNCDDRAW
     BOOL d3d9linear;
     BOOL gdilinear;
     int resolutions;
+    BOOL dinputhook;
     BOOL armadahack;
     BOOL tshack;
     BOOL cnchack;
diff --git a/src/config.c b/src/config.c
index a19920a..f29700b 100644
--- a/src/config.c
+++ b/src/config.c
@@ -54,6 +54,7 @@ void cfg_load()
     g_ddraw->d3d9linear = cfg_get_bool("d3d9linear", TRUE);
     g_ddraw->gdilinear = cfg_get_bool("gdilinear", FALSE);
     g_ddraw->resolutions = cfg_get_int("resolutions", RESLIST_NORMAL);
+    g_ddraw->dinputhook = cfg_get_bool("dinputhook", FALSE);
 
     g_ddraw->armadahack = cfg_get_bool("armadahack", FALSE);
     g_ddraw->tshack = cfg_get_bool("tshack", FALSE);
@@ -754,11 +755,11 @@ static void cfg_create_ini()
             "; Moorhuhn\n"
             "[Moorhuhn]\n"
             "renderer=opengl\n"
-            "hook=3\n"
+            "dinputhook=true\n"
             "\n"
             "; Moorhuhn 2\n"
             "[Moorhuhn2]\n"
-            "hook=3\n"
+            "dinputhook=true\n"
             "\n"
             "; Outlaws\n"
             "[olwin]\n"
diff --git a/src/hook.c b/src/hook.c
index 1c1a711..b9c0f9c 100644
--- a/src/hook.c
+++ b/src/hook.c
@@ -381,7 +381,7 @@ void hook_init()
         BOOL initial_hook = !g_hook_active;
 
 #ifdef _MSC_VER
-        if (initial_hook && g_hook_method == 3)
+        if (initial_hook && g_ddraw->dinputhook)
         {
             real_DirectInputCreateA =
                 (DIRECTINPUTCREATEAPROC)GetProcAddress(LoadLibraryA("dinput.dll"), "DirectInputCreateA");
@@ -459,7 +459,7 @@ void hook_exit()
         g_hook_active = FALSE;
 
 #ifdef _MSC_VER
-        if (g_hook_method == 3)
+        if (g_ddraw->dinputhook)
         {
             if (real_DirectInputCreateA)
             {