Fix capslock not working outside of chat/console and shifting non letter characters

This commit is contained in:
Latapostrophe 2018-11-17 22:21:10 +01:00
parent e85e621d2c
commit e9767df4ff
2 changed files with 34 additions and 16 deletions

View file

@ -1098,8 +1098,17 @@ boolean CON_Responder(event_t *ev)
return true;
}
if (capslock ^ shiftdown) // gets capslock to work because capslock is cool
key = shiftxform[key];
// same capslock code as hu_stuff.c's HU_responder. Check there for details.
if ((key >= 'a' && key <= 'z') || (key >= 'A' && key <= 'Z'))
{
if (shiftdown ^ capslock)
key = shiftxform[key];
}
else
{
if (shiftdown)
key = shiftxform[key];
}
// enter a char into the command prompt
if (key < 32 || key > 127)

View file

@ -1074,6 +1074,18 @@ boolean HU_Responder(event_t *ev)
return false;
}
c = (INT32)ev->data1;
// capslock (now handled outside of chat on so that it works everytime......)
if (c && c == KEY_CAPSLOCK) // it's a toggle.
{
if (capslock)
capslock = false;
else
capslock = true;
return true;
}
if (!chat_on)
{
// enter chat mode
@ -1109,21 +1121,18 @@ boolean HU_Responder(event_t *ev)
c = (INT32)ev->data1;
// capslock
if (c && c == KEY_CAPSLOCK) // it's a toggle.
// I know this looks very messy but this works. If it ain't broke, don't fix it!
// shift LETTERS to uppercase if we have capslock or are holding shift
if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))
{
if (capslock)
capslock = false;
else
capslock = true;
return true;
if (shiftdown ^ capslock)
c = shiftxform[c];
}
// use console translations
if (shiftdown ^ capslock)
c = shiftxform[c];
// TODO: make chat behave like the console, so that we can go back and edit stuff when we fuck up.
else // if we're holding shift we should still shift non letter symbols
{
if (shiftdown)
c = shiftxform[c];
}
// pasting. pasting is cool. chat is a bit limited, though :(
if (((c == 'v' || c == 'V') && ctrldown) && !CHAT_MUTE)
@ -2114,7 +2123,7 @@ void HU_Drawer(void)
LUAh_ScoresHUD();
#endif
}
}
}
if (gamestate != GS_LEVEL)
return;