diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/d_main.c | 1 | ||||
-rw-r--r-- | src/m_config.c | 78 | ||||
-rw-r--r-- | src/m_config.h | 1 |
3 files changed, 80 insertions, 0 deletions
diff --git a/src/d_main.c b/src/d_main.c index 29a366a1..c59a8fb7 100644 --- a/src/d_main.c +++ b/src/d_main.c @@ -974,6 +974,7 @@ void D_DoomMain (void) V_Init (); printf (DEH_String("M_LoadDefaults: Load system defaults.\n")); + M_ApplyPlatformDefaults(); M_LoadDefaults (); // load before initing other systems printf (DEH_String("W_Init: Init WADfiles.\n")); diff --git a/src/m_config.c b/src/m_config.c index 9e770e48..4f789845 100644 --- a/src/m_config.c +++ b/src/m_config.c @@ -31,6 +31,11 @@ #include <ctype.h> #include <errno.h> +#ifdef _WIN32 +#define WIN32_LEAN_AND_MEAN +#include <windows.h> +#endif + #include "config.h" #include "deh_main.h" #include "doomdef.h" @@ -1380,3 +1385,76 @@ void M_SetConfigDir(void) } } +#ifdef _WIN32_WCE + +static int SystemHasKeyboard(void) +{ + HKEY key; + DWORD valtype; + DWORD valsize; + DWORD result; + + if (RegOpenKeyExW(HKEY_CURRENT_USER, + L"\\Software\\Microsoft\\Shell", 0, + KEY_READ, &key) != ERROR_SUCCESS) + { + return 0; + } + + valtype = REG_SZ; + valsize = sizeof(DWORD); + + if (RegQueryValueExW(key, L"HasKeyboard", NULL, &valtype, + (LPBYTE) &result, &valsize) != ERROR_SUCCESS) + { + result = 0; + } + + // Close the key + + RegCloseKey(key); + + return result; +} + +// +// Apply custom defaults for Windows CE. +// + +static void M_ApplyWindowsCEDefaults(void) +{ + // If the system doesn't have a keyboard, patch the default + // configuration to use the hardware keys. + + if (!SystemHasKeyboard()) + { + key_use = KEY_F1; + key_fire = KEY_F2; + key_menu_activate = KEY_F3; + key_map_toggle = KEY_F4; + + key_menu_help = 0; + key_menu_save = 0; + key_menu_load = 0; + key_menu_volume = 0; + + key_menu_confirm = KEY_ENTER; + key_menu_back = KEY_F2; + key_menu_abort = KEY_F2; + } +} + +#endif + +// +// Apply custom patches to the default values depending on the +// platform we are running on. +// + +void M_ApplyPlatformDefaults(void) +{ +#ifdef _WIN32_WCE + M_ApplyWindowsCEDefaults(); +#endif +} + diff --git a/src/m_config.h b/src/m_config.h index 747569cd..ff11e6d6 100644 --- a/src/m_config.h +++ b/src/m_config.h @@ -31,6 +31,7 @@ void M_LoadDefaults(void); void M_SaveDefaults(void); void M_SetConfigDir(void); +void M_ApplyPlatformDefaults(void); extern char *configdir; |