mirror of
https://github.com/FunkyFr3sh/cnc-ddraw.git
synced 2025-03-24 17:49:52 +01:00
#117 add hotkey settings to .ini
This commit is contained in:
parent
3015ddeb52
commit
768a3aaa7f
9
inc/dd.h
9
inc/dd.h
@ -104,6 +104,15 @@ typedef struct CNCDDRAW
|
|||||||
RECT rc;
|
RECT rc;
|
||||||
} mouse;
|
} mouse;
|
||||||
|
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
int toggle_fullscreen;
|
||||||
|
int toggle_maximize;
|
||||||
|
int unlock_cursor1;
|
||||||
|
int unlock_cursor2;
|
||||||
|
int screenshot;
|
||||||
|
} hotkeys;
|
||||||
|
|
||||||
HWND hwnd;
|
HWND hwnd;
|
||||||
WNDPROC wndproc;
|
WNDPROC wndproc;
|
||||||
struct { DWORD x; DWORD y; } cursor;
|
struct { DWORD x; DWORD y; } cursor;
|
||||||
|
41
src/config.c
41
src/config.c
@ -51,6 +51,12 @@ void cfg_load()
|
|||||||
g_ddraw->armadahack = cfg_get_bool("armadahack", FALSE);
|
g_ddraw->armadahack = cfg_get_bool("armadahack", FALSE);
|
||||||
g_ddraw->tshack = cfg_get_bool("tshack", FALSE);
|
g_ddraw->tshack = cfg_get_bool("tshack", FALSE);
|
||||||
|
|
||||||
|
g_ddraw->hotkeys.toggle_fullscreen = cfg_get_int("keytogglefullscreen", VK_RETURN);
|
||||||
|
g_ddraw->hotkeys.toggle_maximize = cfg_get_int("keytogglemaximize", VK_NEXT);
|
||||||
|
g_ddraw->hotkeys.unlock_cursor1 = cfg_get_int("keyunlockcursor1", VK_TAB);
|
||||||
|
g_ddraw->hotkeys.unlock_cursor2 = cfg_get_int("keyunlockcursor2", VK_RCONTROL);
|
||||||
|
g_ddraw->hotkeys.screenshot = cfg_get_int("keyscreenshot", VK_SNAPSHOT);
|
||||||
|
|
||||||
g_config.window_rect.right = cfg_get_int("width", 0);
|
g_config.window_rect.right = cfg_get_int("width", 0);
|
||||||
g_config.window_rect.bottom = cfg_get_int("height", 0);
|
g_config.window_rect.bottom = cfg_get_int("height", 0);
|
||||||
g_config.window_rect.left = cfg_get_int("posX", -32000);
|
g_config.window_rect.left = cfg_get_int("posX", -32000);
|
||||||
@ -328,6 +334,28 @@ static void cfg_create_ini()
|
|||||||
"\n"
|
"\n"
|
||||||
"\n"
|
"\n"
|
||||||
"\n"
|
"\n"
|
||||||
|
"; ### Hotkeys ###\n"
|
||||||
|
"; Use the following settings to configure your hotkeys, 0x00 = disabled\n"
|
||||||
|
"; Virtual-Key Codes: https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes\n"
|
||||||
|
"\n"
|
||||||
|
"\n"
|
||||||
|
"; Toggle fullscreen - Alt + ???\n"
|
||||||
|
"keytogglefullscreen=0x0D\n"
|
||||||
|
"\n"
|
||||||
|
"; Toggle maximize - Alt + ???\n"
|
||||||
|
"keytogglemaximize=0x22\n"
|
||||||
|
"\n"
|
||||||
|
"; Unlock Cursor 1 - Ctrl + ???\n"
|
||||||
|
"keyunlockcursor1=0x09\n"
|
||||||
|
"\n"
|
||||||
|
"; Unlock Cursor 2 - RightAlt + ???\n"
|
||||||
|
"keyunlockcursor2=0xA3\n"
|
||||||
|
"\n"
|
||||||
|
"; Screenshot\n"
|
||||||
|
"keyscreenshot=0x2C\n"
|
||||||
|
"\n"
|
||||||
|
"\n"
|
||||||
|
"\n"
|
||||||
"; ### Game specific settings ###\n"
|
"; ### Game specific settings ###\n"
|
||||||
"; The following settings override all settings shown above, section name = executable name\n"
|
"; The following settings override all settings shown above, section name = executable name\n"
|
||||||
"\n"
|
"\n"
|
||||||
@ -996,11 +1024,18 @@ BOOL cfg_get_bool(LPCSTR key, BOOL default_value)
|
|||||||
|
|
||||||
int cfg_get_int(LPCSTR key, int default_value)
|
int cfg_get_int(LPCSTR key, int default_value)
|
||||||
{
|
{
|
||||||
char def_value[16];
|
char def_value[20];
|
||||||
_snprintf(def_value, sizeof(def_value), "%d", default_value);
|
_snprintf(def_value, sizeof(def_value), "%d", default_value);
|
||||||
|
|
||||||
char value[16];
|
char value[20];
|
||||||
cfg_get_string(key, def_value, value, sizeof(value));
|
cfg_get_string(key, def_value, value, sizeof(value));
|
||||||
|
|
||||||
return atoi(value);
|
if (strstr(value, "0x"))
|
||||||
|
{
|
||||||
|
return (int)strtol(value, NULL, 0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return atoi(value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -579,13 +579,22 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
|||||||
BOOL context_code = (lParam & (1 << 29)) != 0;
|
BOOL context_code = (lParam & (1 << 29)) != 0;
|
||||||
BOOL key_state = (lParam & (1 << 30)) != 0;
|
BOOL key_state = (lParam & (1 << 30)) != 0;
|
||||||
|
|
||||||
if (wParam == VK_RETURN && !g_ddraw->fullscreen && context_code && !key_state)
|
if (g_ddraw->hotkeys.toggle_fullscreen &&
|
||||||
|
wParam == g_ddraw->hotkeys.toggle_fullscreen &&
|
||||||
|
!g_ddraw->fullscreen &&
|
||||||
|
context_code &&
|
||||||
|
!key_state)
|
||||||
{
|
{
|
||||||
util_toggle_fullscreen();
|
util_toggle_fullscreen();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (wParam == VK_NEXT && g_ddraw->resizable && !g_ddraw->border && g_ddraw->windowed && !g_ddraw->fullscreen)
|
if (g_ddraw->hotkeys.toggle_maximize &&
|
||||||
|
wParam == g_ddraw->hotkeys.toggle_maximize &&
|
||||||
|
g_ddraw->resizable &&
|
||||||
|
!g_ddraw->border &&
|
||||||
|
g_ddraw->windowed &&
|
||||||
|
!g_ddraw->fullscreen)
|
||||||
{
|
{
|
||||||
util_toggle_maximize();
|
util_toggle_maximize();
|
||||||
return 0;
|
return 0;
|
||||||
@ -605,7 +614,7 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
|||||||
g_ddraw->alt_key_down = FALSE;
|
g_ddraw->alt_key_down = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (wParam == VK_TAB || wParam == VK_RETURN)
|
if (wParam == VK_TAB || (g_ddraw->hotkeys.toggle_fullscreen && wParam == g_ddraw->hotkeys.toggle_fullscreen))
|
||||||
{
|
{
|
||||||
return DefWindowProc(hWnd, uMsg, wParam, lParam);
|
return DefWindowProc(hWnd, uMsg, wParam, lParam);
|
||||||
}
|
}
|
||||||
@ -614,18 +623,20 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
|||||||
}
|
}
|
||||||
case WM_KEYDOWN:
|
case WM_KEYDOWN:
|
||||||
{
|
{
|
||||||
if (wParam == VK_CONTROL || wParam == VK_TAB)
|
if (g_ddraw->hotkeys.unlock_cursor1 &&
|
||||||
|
(wParam == VK_CONTROL || wParam == g_ddraw->hotkeys.unlock_cursor1))
|
||||||
{
|
{
|
||||||
if (GetAsyncKeyState(VK_CONTROL) & 0x8000 && GetAsyncKeyState(VK_TAB) & 0x8000)
|
if (GetAsyncKeyState(VK_CONTROL) & 0x8000 && GetAsyncKeyState(g_ddraw->hotkeys.unlock_cursor1) & 0x8000)
|
||||||
{
|
{
|
||||||
mouse_unlock();
|
mouse_unlock();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (wParam == VK_CONTROL || wParam == VK_MENU)
|
if (g_ddraw->hotkeys.unlock_cursor2 &&
|
||||||
|
(wParam == g_ddraw->hotkeys.unlock_cursor2 || wParam == VK_MENU || wParam == VK_CONTROL))
|
||||||
{
|
{
|
||||||
if ((GetAsyncKeyState(VK_RMENU) & 0x8000) && GetAsyncKeyState(VK_RCONTROL) & 0x8000)
|
if ((GetAsyncKeyState(VK_RMENU) & 0x8000) && GetAsyncKeyState(g_ddraw->hotkeys.unlock_cursor2) & 0x8000)
|
||||||
{
|
{
|
||||||
mouse_unlock();
|
mouse_unlock();
|
||||||
return 0;
|
return 0;
|
||||||
@ -636,7 +647,7 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
|||||||
}
|
}
|
||||||
case WM_KEYUP:
|
case WM_KEYUP:
|
||||||
{
|
{
|
||||||
if (wParam == VK_SNAPSHOT)
|
if (g_ddraw->hotkeys.screenshot && wParam == g_ddraw->hotkeys.screenshot)
|
||||||
ss_take_screenshot(g_ddraw->primary);
|
ss_take_screenshot(g_ddraw->primary);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user