فهرست منبع

Merge pull request #243 from CIB/cleanup

Various fixes to keyboard input on windows
Ivan Safrin 12 سال پیش
والد
کامیت
13a2164e84
1فایلهای تغییر یافته به همراه4 افزوده شده و 8 حذف شده
  1. 4 8
      Core/Contents/Source/PolyWinCore.cpp

+ 4 - 8
Core/Contents/Source/PolyWinCore.cpp

@@ -478,20 +478,16 @@ PolyKEY Win32Core::mapKey(LPARAM lParam, WPARAM wParam) {
 					else
 					else
 						wParam = VK_LCONTROL;
 						wParam = VK_LCONTROL;
 					break;
 					break;
-				case 33:
+				case VK_MENU:
 					if ( lParam&EXTENDED_KEYMASK )
 					if ( lParam&EXTENDED_KEYMASK )
 						wParam = VK_RMENU;
 						wParam = VK_RMENU;
 					else
 					else
 						wParam = VK_LMENU;
 						wParam = VK_LMENU;
 					break;
 					break;
 				case VK_SHIFT:
 				case VK_SHIFT:
-					// We can't tell if it's LSHIFT or RSHIFT,
-					// so use GetKeyState to tell which it is.
-					if( GetKeyState(VK_LSHIFT) ) {
-						wParam = VK_LSHIFT;
-					} else {
-						wParam = VK_RSHIFT;
-					}
+					// Use MapVirtualKey to determine whether it's LSHIFT or RSHIFT by scancode.
+					UINT scancode = (lParam & 0x00ff0000) >> 16;
+					wParam = MapVirtualKey(scancode, MAPVK_VSC_TO_VK_EX);
 					break;
 					break;
 			}
 			}