# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1048662184 0 # Node ID aac3ab26d636c3ee0dc531ae83ae703bbaca7cee # Parent 144a940112653e5b366da5e69946dd592d945739 More key_press cleanups. diff -r 144a94011265 -r aac3ab26d636 win/dw.c --- a/win/dw.c Tue Mar 25 23:49:59 2003 +0000 +++ b/win/dw.c Wed Mar 26 07:03:04 2003 +0000 @@ -1278,12 +1278,15 @@ void (*windowfunc)(PVOID); ULONG origmsg = msg; + /* Deal with translating some messages */ if(msg == WM_RBUTTONDOWN || msg == WM_MBUTTONDOWN) msg = WM_LBUTTONDOWN; - if(msg == WM_RBUTTONUP || msg == WM_MBUTTONUP) + else if(msg == WM_RBUTTONUP || msg == WM_MBUTTONUP) msg = WM_LBUTTONUP; - if(msg == WM_HSCROLL) + else if(msg == WM_HSCROLL) msg = WM_VSCROLL; + else if(msg == WM_KEYDOWN && mp1 >= VK_F1 && mp1 <= VK_F24) + msg = WM_CHAR; if(result == -1) { @@ -1411,6 +1414,7 @@ if(hWnd == tmp->window) { int special = 0; + char ch = 0; if(GetAsyncKeyState(VK_SHIFT) & 0x8000) special |= KC_SHIFT; @@ -1419,7 +1423,10 @@ if(mp2 & (1 << 29)) special |= KC_ALT; - result = keypressfunc(tmp->window, mp1 > 255 ? 0 : (char)mp1, mp1, special, tmp->data); + if(origmsg == WM_CHAR && mp1 < 128) + ch = (char)mp1; + + result = keypressfunc(tmp->window, ch, mp1, special, tmp->data); tmp = NULL; } } @@ -1923,6 +1930,7 @@ case WM_SIZE: case WM_COMMAND: case WM_CHAR: + case WM_KEYDOWN: _wndproc(hWnd, msg, mp1, mp2); break; }