win32 key_released fix
This commit is contained in:
parent
52dc62c4a2
commit
ec197c1a1b
1 changed files with 14 additions and 1 deletions
|
|
@ -265,7 +265,9 @@ static LRESULT CALLBACK wndproc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) {
|
||||||
if(HIBYTE(VkKeyScan(wp)) & 2) n |= MwKEY_CONTROL_FLAG;
|
if(HIBYTE(VkKeyScan(wp)) & 2) n |= MwKEY_CONTROL_FLAG;
|
||||||
if(msg == WM_SYSCHAR) n |= MwKEY_ALT_FLAG;
|
if(msg == WM_SYSCHAR) n |= MwKEY_ALT_FLAG;
|
||||||
|
|
||||||
if((0x20 <= n && n <= 0x7f) || (n & MwKEY_FLAG)) MwLLDispatch(u->ll, key, &n);
|
if((0x20 <= n && n <= 0x7f) || (n & MwKEY_FLAG)) {
|
||||||
|
MwLLDispatch(u->ll, key, &n);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case WM_SETFOCUS:
|
case WM_SETFOCUS:
|
||||||
|
|
@ -322,6 +324,17 @@ static LRESULT CALLBACK wndproc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(n == -1 && (msg == WM_KEYUP || msg == WM_SYSKEYUP)) {
|
||||||
|
WORD ch;
|
||||||
|
BYTE state[256];
|
||||||
|
|
||||||
|
GetKeyboardState(state);
|
||||||
|
|
||||||
|
if(ToAscii(wp, HIWORD(lp) & 0xff, state, &ch, 0)) {
|
||||||
|
n = ch;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if((msg == WM_SYSKEYDOWN || msg == WM_SYSKEYUP) && n != -1 && wp != VK_MENU) {
|
if((msg == WM_SYSKEYDOWN || msg == WM_SYSKEYUP) && n != -1 && wp != VK_MENU) {
|
||||||
n |= MwKEY_ALT_FLAG;
|
n |= MwKEY_ALT_FLAG;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue