DirectInput 的扫描码和普通窗口消息略有差异,少数特殊键统一在这里处理。
| 50 | |
| 51 | // DirectInput 的扫描码和普通窗口消息略有差异,少数特殊键统一在这里处理。 |
| 52 | inline BYTE DirectInputScanCode(UINT vk_code) { |
| 53 | switch (vk_code) { |
| 54 | case VK_NUMLOCK: |
| 55 | return 0x45; |
| 56 | case VK_PAUSE: |
| 57 | return 0xC5; |
| 58 | case VK_SNAPSHOT: |
| 59 | return 0xB7; |
| 60 | default: |
| 61 | break; |
| 62 | } |
| 63 | |
| 64 | BYTE scan = static_cast<BYTE>(::MapVirtualKey(vk_code, MAPVK_VK_TO_VSC) & 0xff); |
| 65 | if (scan == 0) |
| 66 | return 0; |
| 67 | return IsExtendedVirtualKey(vk_code) ? static_cast<BYTE>(scan | 0x80) : scan; |
| 68 | } |
| 69 | |
| 70 | } // namespace op::input::key_message |
no test coverage detected