From: havoc Date: Sat, 31 Jan 2004 23:04:13 +0000 (+0000) Subject: handle funky ToAscii values (shift/ctrl/alt sometimes produce ascii values for no... X-Git-Tag: xonotic-v0.1.0preview~6143 X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fdarkplaces.git;a=commitdiff_plain;h=6254924244c3008ac5daa51421ff726de590f2be;ds=sidebyside handle funky ToAscii values (shift/ctrl/alt sometimes produce ascii values for no reason), and also ignore any 0 or 2 character values git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@3845 d7cf8633-e32d-0410-b094-e92efae38249 --- diff --git a/vid_wgl.c b/vid_wgl.c index fed809b0..4b72f774 100644 --- a/vid_wgl.c +++ b/vid_wgl.c @@ -505,7 +505,7 @@ LONG WINAPI MainWndProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) LONG lRet = 1; int fActive, fMinimized, temp; char state[256]; - short ascchar; + char asciichar[4]; int vkey; qboolean down = false; @@ -537,8 +537,11 @@ LONG WINAPI MainWndProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) case WM_SYSKEYUP: vkey = MapKey(lParam, wParam); GetKeyboardState (state); - ToAscii (wParam, vkey, state, &ascchar, 0); - Key_Event (vkey, (char)(ascchar & 0xFF), down); + // alt/ctrl/shift tend to produce funky ToAscii values, + // and if it's not a single character we don't know care about it + if (vkey == K_ALT || vkey == K_CTRL || vkey == K_SHIFT || ToAscii (wParam, lParam >> 16, state, asciichar, 0) != 1) + asciichar[0] = 0; + Key_Event (vkey, asciichar[0], down); break; case WM_SYSCHAR: