mirror of
https://github.com/FunkyFr3sh/cnc-ddraw.git
synced 2025-03-15 06:04:49 +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;
|
||||
} mouse;
|
||||
|
||||
struct
|
||||
{
|
||||
int toggle_fullscreen;
|
||||
int toggle_maximize;
|
||||
int unlock_cursor1;
|
||||
int unlock_cursor2;
|
||||
int screenshot;
|
||||
} hotkeys;
|
||||
|
||||
HWND hwnd;
|
||||
WNDPROC wndproc;
|
||||
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->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.bottom = cfg_get_int("height", 0);
|
||||
g_config.window_rect.left = cfg_get_int("posX", -32000);
|
||||
@ -328,6 +334,28 @@ static void cfg_create_ini()
|
||||
"\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"
|
||||
"; The following settings override all settings shown above, section name = executable name\n"
|
||||
"\n"
|
||||
@ -996,11 +1024,18 @@ BOOL cfg_get_bool(LPCSTR key, BOOL 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);
|
||||
|
||||
char value[16];
|
||||
char value[20];
|
||||
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 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();
|
||||
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();
|
||||
return 0;
|
||||
@ -605,7 +614,7 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
||||
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);
|
||||
}
|
||||
@ -614,18 +623,20 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
||||
}
|
||||
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();
|
||||
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();
|
||||
return 0;
|
||||
@ -636,7 +647,7 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
||||
}
|
||||
case WM_KEYUP:
|
||||
{
|
||||
if (wParam == VK_SNAPSHOT)
|
||||
if (g_ddraw->hotkeys.screenshot && wParam == g_ddraw->hotkeys.screenshot)
|
||||
ss_take_screenshot(g_ddraw->primary);
|
||||
|
||||
break;
|
||||
|
Loading…
x
Reference in New Issue
Block a user