Просмотр исходного кода

Improved the LSHIFT/RSHIFT distinction.

Got a new answer on stackoverflow. :)
cib 12 лет назад
Родитель
Сommit
1e5b9e3100
1 измененных файлов с 3 добавлено и 7 удалено
  1. 3 7
      Core/Contents/Source/PolyWinCore.cpp

+ 3 - 7
Core/Contents/Source/PolyWinCore.cpp

@@ -485,13 +485,9 @@ PolyKEY Win32Core::mapKey(LPARAM lParam, WPARAM wParam) {
 						wParam = VK_LMENU;
 					break;
 				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;
 			}