M_MenuTypingInput: In Virtual Keyboard mode, assign some buttons as shortcuts

- Start: closes the menu
- B/X: backspace
- C: Toggle shift/caps lock
This commit is contained in:
toaster 2023-05-21 00:04:45 +01:00
parent f24a640e04
commit 04d87bfb6c

View file

@ -173,6 +173,22 @@ boolean M_ChangeStringCvar(INT32 choice)
return false; return false;
} }
static void M_ToggleVirtualShift(void)
{
if (menutyping.keyboardcapslock == true)
{
menutyping.keyboardcapslock = false;
}
else
{
menutyping.keyboardshift ^= true;
if (menutyping.keyboardshift == false)
{
menutyping.keyboardcapslock = true;
}
}
}
static boolean M_IsTypingKey(INT32 key) static boolean M_IsTypingKey(INT32 key)
{ {
return key == KEY_BACKSPACE || key == KEY_ENTER return key == KEY_BACKSPACE || key == KEY_ENTER
@ -183,7 +199,6 @@ static boolean M_IsTypingKey(INT32 key)
void M_MenuTypingInput(INT32 key) void M_MenuTypingInput(INT32 key)
{ {
const UINT8 pid = 0; const UINT8 pid = 0;
// Fade-in // Fade-in
@ -228,7 +243,8 @@ void M_MenuTypingInput(INT32 key)
&& !(menucmd[pid].buttons & MBT_C) && !(menucmd[pid].buttons & MBT_C)
&& !(menucmd[pid].buttons & MBT_X) && !(menucmd[pid].buttons & MBT_X)
&& !(menucmd[pid].buttons & MBT_Y) && !(menucmd[pid].buttons & MBT_Y)
&& !(menucmd[pid].buttons & MBT_Z)) && !(menucmd[pid].buttons & MBT_Z)
&& !(menucmd[pid].buttons & MBT_START))
{ {
menutyping.keyboardtyping = true; menutyping.keyboardtyping = true;
} }
@ -243,6 +259,7 @@ void M_MenuTypingInput(INT32 key)
|| M_MenuButtonPressed(pid, MBT_X) || M_MenuButtonPressed(pid, MBT_X)
|| M_MenuButtonPressed(pid, MBT_Y) || M_MenuButtonPressed(pid, MBT_Y)
|| M_MenuButtonPressed(pid, MBT_Z) || M_MenuButtonPressed(pid, MBT_Z)
|| M_MenuButtonPressed(pid, MBT_START)
|| (menucmd[pid].dpad_lr != 0 && menucmd[pid].prev_dpad_lr == 0) || (menucmd[pid].dpad_lr != 0 && menucmd[pid].prev_dpad_lr == 0)
|| (menucmd[pid].dpad_ud != 0 && menucmd[pid].prev_dpad_ud != 0) || (menucmd[pid].dpad_ud != 0 && menucmd[pid].prev_dpad_ud != 0)
)) ))
@ -270,9 +287,12 @@ void M_MenuTypingInput(INT32 key)
if (key == KEY_ENTER || key == KEY_ESCAPE) if (key == KEY_ENTER || key == KEY_ESCAPE)
{ {
menutyping.menutypingclose = true; // close menu. menutyping.menutypingclose = true; // close menu.
M_SetMenuDelay(pid);
S_StartSound(NULL, sfx_s3k5b);
return; return;
} }
} }
if (menucmd[pid].delay == 0 && !menutyping.keyboardtyping) // We must check for this here because we bypass the normal delay check to allow for normal keyboard inputs if (menucmd[pid].delay == 0 && !menutyping.keyboardtyping) // We must check for this here because we bypass the normal delay check to allow for normal keyboard inputs
@ -332,6 +352,30 @@ void M_MenuTypingInput(INT32 key)
M_SetMenuDelay(pid); M_SetMenuDelay(pid);
S_StartSound(NULL, sfx_s3k5b); S_StartSound(NULL, sfx_s3k5b);
} }
else if (M_MenuButtonPressed(pid, MBT_START))
{
// Shortcut for close menu.
menutyping.menutypingclose = true;
M_SetMenuDelay(pid);
S_StartSound(NULL, sfx_s3k5b);
}
else if (M_MenuBackPressed(pid))
{
// Shortcut for backspace.
M_ChangeStringCvar(KEY_BACKSPACE);
M_SetMenuDelay(pid);
S_StartSound(NULL, sfx_s3k5b);
}
else if (M_MenuExtraPressed(pid))
{
// Shortcut for shift/caps lock.
M_ToggleVirtualShift();
M_SetMenuDelay(pid);
S_StartSound(NULL, sfx_s3k5b);
}
else if (M_MenuConfirmPressed(pid)) else if (M_MenuConfirmPressed(pid))
{ {
// Add the character. First though, check what we're pressing.... // Add the character. First though, check what we're pressing....
@ -348,27 +392,11 @@ void M_MenuTypingInput(INT32 key)
if (c == KEY_RSHIFT) if (c == KEY_RSHIFT)
{ {
if (menutyping.keyboardcapslock == true) M_ToggleVirtualShift();
{
menutyping.keyboardcapslock = false;
}
else
{
menutyping.keyboardshift ^= true;
if (menutyping.keyboardshift == false)
{
menutyping.keyboardcapslock = true;
}
}
} }
/*
else if (c == KEY_CAPSLOCK)
menutyping.keyboardcapslock = !menutyping.keyboardcapslock;
*/
else if (c == KEY_ENTER) else if (c == KEY_ENTER)
{ {
menutyping.menutypingclose = true; // close menu. menutyping.menutypingclose = true; // close menu.
return;
} }
else else
{ {