rallyunlimited-engine/code/win32/win_minimize.c
2024-02-02 19:46:17 +03:00

192 lines
4 KiB
C

#include "../client/client.h"
#include "win_local.h"
struct hk_token
{
const unsigned int vk;
const char *name;
} ;
static struct hk_token tokens[] =
{
{ VK_BACK, "BS" },
{ VK_BACK, "BACK" },
{ VK_BACK, "BACKSPACE" },
{ VK_UP, "UP" },
{ VK_ESCAPE, "ESC" },
{ VK_ESCAPE, "ESCAPE" },
{ VK_TAB, "TAB" },
{ VK_CONTROL, "CTL" },
{ VK_CONTROL, "CTRL" },
{ VK_CONTROL, "CONTROL" },
{ VK_LCONTROL, "LCTL" },
{ VK_LCONTROL, "LCTRL" },
{ VK_LCONTROL, "LCONTROL" },
{ VK_RCONTROL, "RCTL" },
{ VK_RCONTROL, "RCTRL" },
{ VK_RCONTROL, "RCONTROL" },
{ VK_MENU, "ALT" },
{ VK_LMENU, "LALT" },
{ VK_RMENU, "RALT" },
{ VK_SHIFT, "SHIFT" },
{ VK_LSHIFT, "LSHIFT" },
{ VK_RSHIFT, "RSHIFT" },
{ VK_LWIN, "WIN" },
{ VK_END, "END" },
{ VK_INSERT, "INS" },
{ VK_INSERT, "INSERT" },
{ VK_DELETE, "DEL" },
{ VK_DELETE, "DELELE" },
{ VK_ADD, "ADD" },
{ VK_ADD, "PLUS" },
{ VK_SUBTRACT, "SUB" },
{ VK_SUBTRACT, "SUBTRACT" },
{ VK_SUBTRACT, "MINUS" },
{ VK_DIVIDE, "DIV" },
{ VK_DIVIDE, "DIVIDE" },
{ VK_MULTIPLY, "MUL" },
{ VK_MULTIPLY, "MULTIPLY" },
// { VK_MULTIPLY, "STAR" },
{ VK_NUMLOCK, "NUM" },
{ VK_NUMLOCK, "NUMLOCK" },
{ VK_NUMLOCK, "NUM_LOCK" },
{ VK_CLEAR, "DOT" },
{ VK_CLEAR, "CLEAR" },
{ VK_CAPITAL, "CAPS" },
{ VK_CAPITAL, "CAPITAL" },
{ VK_CAPITAL, "CAPSLOCK" },
{ VK_CAPITAL, "CAPS_LOCK" },
{ VK_HOME, "HOME" },
{ VK_APPS, "MENU" },
{ VK_PRIOR, "PGUP" },
{ VK_PRIOR, "PAGEUP" },
{ VK_PRIOR, "PAGE_UP" },
{ VK_NEXT, "PGDN" },
{ VK_NEXT, "PAGEDOWN" },
{ VK_NEXT, "PAGE_DOWN" },
{ VK_LEFT, "LEFT" },
{ VK_RIGHT, "RIGHT" },
{ VK_DOWN, "DOWN" },
{ VK_LWIN|HK_MOD_LWIN, "LWIN" },
{ VK_RWIN|HK_MOD_RWIN, "RWIN" },
{ VK_SPACE, "SPACE" },
{ VK_PAUSE, "PAUSE" },
// { VK_CANCEL, "BREAK" },
{ VK_RETURN, "ENTER" },
{ VK_RETURN, "RETURN" },
{ VK_PRINT, "PRINT" },
{ VK_PRINT, "SYSRQ" },
{ VK_SCROLL, "SCROLL" },
{ VK_OEM_MINUS, "-" },
{ VK_OEM_MINUS, "_" },
{ VK_OEM_PLUS, "=" },
{ VK_OEM_5, "\\" },
{ VK_OEM_5, "|" },
{ VK_OEM_4, "[" },
{ VK_OEM_4, "{" },
{ VK_OEM_6, "]" },
{ VK_OEM_6, "}" },
{ VK_OEM_1, ";" },
{ VK_OEM_1, ":" },
{ VK_OEM_7, "'" },
{ VK_OEM_7, "\"" },
{ VK_OEM_COMMA, "," },
{ VK_OEM_COMMA, "<" },
{ VK_OEM_PERIOD, "." },
{ VK_OEM_PERIOD, ">" },
{ VK_OEM_2, "?" },
{ VK_OEM_2, "/" },
{ VK_OEM_3, "`" },
{ VK_OEM_3, "~" },
{ '1', "!" },
{ '2', "@" },
{ '3', "#" },
{ '4', "$" },
{ '5', "%" },
{ '6', "^" },
{ '7', "&" },
{ '8', "*" },
{ '9', "(" },
{ '0', ")" },
{ VK_F1, "F1" },
{ VK_F2, "F2" },
{ VK_F3, "F3" },
{ VK_F4, "F4" },
{ VK_F5, "F5" },
{ VK_F6, "F6" },
{ VK_F7, "F7" },
{ VK_F8, "F8" },
{ VK_F9, "F9" },
{ VK_F10, "F10" },
{ VK_F11, "F11" },
{ VK_F12, "F12" },
{ VK_F13, "F13" },
{ VK_F14, "F14" },
{ VK_F15, "F15" },
{ VK_F16, "F16" },
{ VK_F17, "F17" },
{ VK_F18, "F18" },
{ VK_F19, "F19" },
{ VK_NUMPAD0, "KP_0" },
{ VK_NUMPAD1, "KP_1" },
{ VK_NUMPAD2, "KP_2" },
{ VK_NUMPAD3, "KP_3" },
{ VK_NUMPAD4, "KP_4" },
{ VK_NUMPAD5, "KP_5" },
{ VK_NUMPAD6, "KP_6" },
{ VK_NUMPAD7, "KP_7" },
{ VK_NUMPAD8, "KP_8" },
{ VK_NUMPAD9, "KP_9" },
{ 0, "" }
};
int Win32_GetKey( const char **s, char *buf, int buflen )
{
const char *base, *end;
int len, i;
base = *s;
// skip leading separators
while ( *base == ' ' || *base == '\t' || *base == '+' )
base++;
// empty token
if ( !*base )
return 0;
end = base;
while( *end != '\0' && *end != ' '&& *end != '\t' && *end != '+' ) end++;
len = end - base;
if ( !len )
return 0;
*s = base + len;
if ( len > buflen-1 )
len = buflen-1;
strncpy( buf, base, len );
buf[len]= '\0';
for ( i = 0; i < len ; i++ ) //uppercase
if ( buf[i] >= 'a' && buf[i] <= 'z' )
buf[i] += 'A'-'a';
if ( len == 1 ) {
if ( buf[0] >='A' && buf[0] <= 'Z' )
return buf[0];
if ( buf[0] >='0' && buf[0] <= '9' )
return buf[0];
}
for ( i = 0; i < ARRAY_LEN( tokens ) - 1; i++ )
if ( !strcmp( buf, tokens[i].name ) )
return tokens[i].vk;
return -1;
}