diff --git a/lsteamclient/steamclient_main.c b/lsteamclient/steamclient_main.c index b02b682d..66e92307 100644 --- a/lsteamclient/steamclient_main.c +++ b/lsteamclient/steamclient_main.c @@ -11,10 +11,6 @@ #include "winuser.h" #include "winternl.h" -#ifdef __linux__ -#include -#endif - #include "steamclient_private.h" WINE_DEFAULT_DEBUG_CHANNEL(steamclient); @@ -407,192 +403,6 @@ void *alloc_vtable(void *vtable, unsigned int method_count, const char *iface_ve return ret; } -#ifdef __linux__ -static const uint32_t vk_to_xkeysym[0xFF] = -{ - 0, /* 0x0 Undefined */ - 0, /* VK_LBUTTON */ - 0, /* VK_RBUTTON */ - XK_Cancel, /* VK_CANCEL */ - 0, /* VK_MBUTTON */ - 0, /* VK_XBUTTON1 */ - 0, /* VK_XBUTTON2 */ - 0, /* 0x07 Undefined */ - XK_BackSpace, /* VK_BACK */ - XK_Tab, /* VK_TAB */ - 0, /* 0x0A-0x0B Undefined */ - 0, - XK_Clear, /* VK_CLEAR */ - XK_Return, /* VK_RETURN */ - 0, /* 0x0E-0x0F Undefined */ - 0, - XK_Shift_L, /* VK_SHIFT */ - XK_Control_L, /* VK_CONTROL */ - XK_Alt_L, /* VK_MENU */ - XK_Pause, /* VK_PAUSE */ - XK_Caps_Lock, /* VK_CAPITAL */ - 0, /* VK_KANA */ - 0, /* 0x16 Undefined */ - 0, /* VK_JUNJA */ - 0, /* VK_FINAL */ - 0, /* VK_HANJA */ - 0, /* 0x1A Undefined */ - XK_Escape, /* VK_ESCAPE */ - XK_Henkan_Mode, /* VK_CONVERT */ - XK_Muhenkan, /* VK_NONCONVERT */ - 0, /* VK_ACCEPT */ - 0, /* VK_MODECHANGE */ - ' ', /* VK_SPACE */ - XK_Prior, /* VK_PRIOR */ - XK_Next, /* VK_NEXT */ - XK_End, /* VK_END */ - XK_Home, /* VK_HOME */ - XK_Left, /* VK_LEFT */ - XK_Up, /* VK_UP */ - XK_Right, /* VK_RIGHT */ - XK_Down, /* VK_DOWN */ - XK_Select, /* VK_SELECT */ - XK_Print, /* VK_PRINT */ - XK_Execute, /* VK_EXECUTE */ - XK_Print, /* VK_SNAPSHOT */ - XK_Insert, /* VK_INSERT */ - XK_Delete, /* VK_DELETE */ - XK_Help, /* VK_HELP */ - - '0', - '1', - '2', - '3', - '4', - '5', - '6', - '7', - '8', - '9', - 0, - 0, - 0, - 0, - 0, - 0, - 0, /* 0x3A-0x40 Undefined */ - 'A', - 'B', - 'C', - 'D', - 'E', - 'F', - 'G', - 'H', - 'I', - 'J', - 'K', - 'L', - 'M', - 'N', - 'O', - 'P', - 'Q', - 'R', - 'S', - 'T', - 'U', - 'V', - 'W', - 'X', - 'Y', - 'Z', - - XK_Super_L, /* VK_LWIN */ - XK_Super_R, /* VK_RWIN */ - XK_Menu, /* VK_APPS */ - 0, /* 0x5E Unassigned */ - 0, /* VK_SLEEP */ - XK_KP_0, /* VK_NUMPAD0 */ - XK_KP_1, /* VK_NUMPAD1 */ - XK_KP_2, /* VK_NUMPAD2 */ - XK_KP_3, /* VK_NUMPAD3 */ - XK_KP_4, /* VK_NUMPAD4 */ - XK_KP_5, /* VK_NUMPAD5 */ - XK_KP_6, /* VK_NUMPAD6 */ - XK_KP_7, /* VK_NUMPAD7 */ - XK_KP_8, /* VK_NUMPAD8 */ - XK_KP_9, /* VK_NUMPAD9 */ - XK_KP_Multiply, /* VK_MULTIPLY */ - XK_KP_Add, /* VK_ADD */ - XK_KP_Separator, /* VK_SEPARATOR */ - XK_KP_Subtract, /* VK_SUBTRACT */ - XK_KP_Decimal, /* VK_DECIMAL */ - XK_KP_Divide, /* VK_DIVIDE */ - XK_F1, /* VK_F1 */ - XK_F2, /* VK_F2 */ - XK_F3, /* VK_F3 */ - XK_F4, /* VK_F4 */ - XK_F5, /* VK_F5 */ - XK_F6, /* VK_F6 */ - XK_F7, /* VK_F7 */ - XK_F8, /* VK_F8 */ - XK_F9, /* VK_F9 */ - XK_F10, /* VK_F10 */ - XK_F11, /* VK_F11 */ - XK_F12, /* VK_F12 */ - XK_F13, /* VK_F13 */ - XK_F14, /* VK_F14 */ - XK_F15, /* VK_F15 */ - XK_F16, /* VK_F16 */ - XK_F17, /* VK_F17 */ - XK_F18, /* VK_F18 */ - XK_F19, /* VK_F19 */ - XK_F20, /* VK_F20 */ - XK_F21, /* VK_F21 */ - XK_F22, /* VK_F22 */ - XK_F23, /* VK_F23 */ - XK_F24, /* VK_F24 */ - 0, /* VK_NAVIGATION_VIEW */ - 0, /* VK_NAVIGATION_MENU */ - 0, /* VK_NAVIGATION_UP */ - 0, /* VK_NAVIGATION_DOWN */ - 0, /* VK_NAVIGATION_LEFT */ - 0, /* VK_NAVIGATION_RIGHT */ - 0, /* VK_NAVIGATION_ACCEPT */ - 0, /* VK_NAVIGATION_CANCEL */ - XK_Num_Lock, /* VK_NUMLOCK */ - XK_Scroll_Lock, /* VK_SCROLL */ - XK_KP_Equal, /* VK_OEM_NEC_EQUAL */ - 0, /* VK_OEM_FJ_JISHO */ - 0, /* VK_OEM_FJ_MASSHOU */ - 0, /* VK_OEM_FJ_TOUROKU */ - 0, /* VK_OEM_FJ_LOYA */ - 0, /* VK_OEM_FJ_ROYA */ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, /* 0x97-0x9F Unassigned */ - XK_Shift_L, /* VK_LSHIFT */ - XK_Shift_R, /* VK_RSHIFT */ - XK_Control_L, /* VK_LCONTROL */ - XK_Control_R, /* VK_RCONTROL */ - XK_Alt_L, /* VK_LMENU */ - XK_Alt_R, /* VK_RMENU */ - - /* below are OEM, browser keys, etc */ -}; - -uint32_t manual_convert_nNativeKeyCode( uint32_t win_vk ) -{ - if(win_vk < sizeof(vk_to_xkeysym) / sizeof(*vk_to_xkeysym)) - return vk_to_xkeysym[win_vk]; - return 0; -} -#else -#error You must implement VK<->Native keysym conversion for this platform. -#endif - struct steamclient_interface { struct list entry; diff --git a/lsteamclient/unix_steam_input_manual.cpp b/lsteamclient/unix_steam_input_manual.cpp index d9d665d7..29eb5df0 100644 --- a/lsteamclient/unix_steam_input_manual.cpp +++ b/lsteamclient/unix_steam_input_manual.cpp @@ -11,6 +11,196 @@ #include "cppISteamInput_SteamInput005.hpp" #include "cppISteamInput_SteamInput006.hpp" +#ifdef __linux__ +#include +#endif + +#ifdef __linux__ +static const uint32_t vk_to_xkeysym[0xFF] = +{ + 0, /* 0x0 Undefined */ + 0, /* VK_LBUTTON */ + 0, /* VK_RBUTTON */ + XK_Cancel, /* VK_CANCEL */ + 0, /* VK_MBUTTON */ + 0, /* VK_XBUTTON1 */ + 0, /* VK_XBUTTON2 */ + 0, /* 0x07 Undefined */ + XK_BackSpace, /* VK_BACK */ + XK_Tab, /* VK_TAB */ + 0, /* 0x0A-0x0B Undefined */ + 0, + XK_Clear, /* VK_CLEAR */ + XK_Return, /* VK_RETURN */ + 0, /* 0x0E-0x0F Undefined */ + 0, + XK_Shift_L, /* VK_SHIFT */ + XK_Control_L, /* VK_CONTROL */ + XK_Alt_L, /* VK_MENU */ + XK_Pause, /* VK_PAUSE */ + XK_Caps_Lock, /* VK_CAPITAL */ + 0, /* VK_KANA */ + 0, /* 0x16 Undefined */ + 0, /* VK_JUNJA */ + 0, /* VK_FINAL */ + 0, /* VK_HANJA */ + 0, /* 0x1A Undefined */ + XK_Escape, /* VK_ESCAPE */ + XK_Henkan_Mode, /* VK_CONVERT */ + XK_Muhenkan, /* VK_NONCONVERT */ + 0, /* VK_ACCEPT */ + 0, /* VK_MODECHANGE */ + ' ', /* VK_SPACE */ + XK_Prior, /* VK_PRIOR */ + XK_Next, /* VK_NEXT */ + XK_End, /* VK_END */ + XK_Home, /* VK_HOME */ + XK_Left, /* VK_LEFT */ + XK_Up, /* VK_UP */ + XK_Right, /* VK_RIGHT */ + XK_Down, /* VK_DOWN */ + XK_Select, /* VK_SELECT */ + XK_Print, /* VK_PRINT */ + XK_Execute, /* VK_EXECUTE */ + XK_Print, /* VK_SNAPSHOT */ + XK_Insert, /* VK_INSERT */ + XK_Delete, /* VK_DELETE */ + XK_Help, /* VK_HELP */ + + '0', + '1', + '2', + '3', + '4', + '5', + '6', + '7', + '8', + '9', + 0, + 0, + 0, + 0, + 0, + 0, + 0, /* 0x3A-0x40 Undefined */ + 'A', + 'B', + 'C', + 'D', + 'E', + 'F', + 'G', + 'H', + 'I', + 'J', + 'K', + 'L', + 'M', + 'N', + 'O', + 'P', + 'Q', + 'R', + 'S', + 'T', + 'U', + 'V', + 'W', + 'X', + 'Y', + 'Z', + + XK_Super_L, /* VK_LWIN */ + XK_Super_R, /* VK_RWIN */ + XK_Menu, /* VK_APPS */ + 0, /* 0x5E Unassigned */ + 0, /* VK_SLEEP */ + XK_KP_0, /* VK_NUMPAD0 */ + XK_KP_1, /* VK_NUMPAD1 */ + XK_KP_2, /* VK_NUMPAD2 */ + XK_KP_3, /* VK_NUMPAD3 */ + XK_KP_4, /* VK_NUMPAD4 */ + XK_KP_5, /* VK_NUMPAD5 */ + XK_KP_6, /* VK_NUMPAD6 */ + XK_KP_7, /* VK_NUMPAD7 */ + XK_KP_8, /* VK_NUMPAD8 */ + XK_KP_9, /* VK_NUMPAD9 */ + XK_KP_Multiply, /* VK_MULTIPLY */ + XK_KP_Add, /* VK_ADD */ + XK_KP_Separator, /* VK_SEPARATOR */ + XK_KP_Subtract, /* VK_SUBTRACT */ + XK_KP_Decimal, /* VK_DECIMAL */ + XK_KP_Divide, /* VK_DIVIDE */ + XK_F1, /* VK_F1 */ + XK_F2, /* VK_F2 */ + XK_F3, /* VK_F3 */ + XK_F4, /* VK_F4 */ + XK_F5, /* VK_F5 */ + XK_F6, /* VK_F6 */ + XK_F7, /* VK_F7 */ + XK_F8, /* VK_F8 */ + XK_F9, /* VK_F9 */ + XK_F10, /* VK_F10 */ + XK_F11, /* VK_F11 */ + XK_F12, /* VK_F12 */ + XK_F13, /* VK_F13 */ + XK_F14, /* VK_F14 */ + XK_F15, /* VK_F15 */ + XK_F16, /* VK_F16 */ + XK_F17, /* VK_F17 */ + XK_F18, /* VK_F18 */ + XK_F19, /* VK_F19 */ + XK_F20, /* VK_F20 */ + XK_F21, /* VK_F21 */ + XK_F22, /* VK_F22 */ + XK_F23, /* VK_F23 */ + XK_F24, /* VK_F24 */ + 0, /* VK_NAVIGATION_VIEW */ + 0, /* VK_NAVIGATION_MENU */ + 0, /* VK_NAVIGATION_UP */ + 0, /* VK_NAVIGATION_DOWN */ + 0, /* VK_NAVIGATION_LEFT */ + 0, /* VK_NAVIGATION_RIGHT */ + 0, /* VK_NAVIGATION_ACCEPT */ + 0, /* VK_NAVIGATION_CANCEL */ + XK_Num_Lock, /* VK_NUMLOCK */ + XK_Scroll_Lock, /* VK_SCROLL */ + XK_KP_Equal, /* VK_OEM_NEC_EQUAL */ + 0, /* VK_OEM_FJ_JISHO */ + 0, /* VK_OEM_FJ_MASSHOU */ + 0, /* VK_OEM_FJ_TOUROKU */ + 0, /* VK_OEM_FJ_LOYA */ + 0, /* VK_OEM_FJ_ROYA */ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, /* 0x97-0x9F Unassigned */ + XK_Shift_L, /* VK_LSHIFT */ + XK_Shift_R, /* VK_RSHIFT */ + XK_Control_L, /* VK_LCONTROL */ + XK_Control_R, /* VK_RCONTROL */ + XK_Alt_L, /* VK_LMENU */ + XK_Alt_R, /* VK_RMENU */ + + /* below are OEM, browser keys, etc */ +}; + +uint32_t manual_convert_nNativeKeyCode( uint32_t win_vk ) +{ + if(win_vk < sizeof(vk_to_xkeysym) / sizeof(*vk_to_xkeysym)) + return vk_to_xkeysym[win_vk]; + return 0; +} +#else +#error You must implement VK<->Native keysym conversion for this platform. +#endif + typedef std::unordered_map< uint64_t, char * > glyph_cache; static glyph_cache input_cache, input_cache_svg, input_cache_png, xbox_cache, controller_cache;