Windows 7 でコンソールのキープレス イベントを処理しようとしています。左の Ctrl キーを押すと、コード 0x0008 (0b00001000 - LEFT_CTRL_PRESSED) が返されると予想されますが、代わりに 0x0028 (0b00101000) が返されます。 )。
...
DWORD n;
INPUT_RECORD ir;
HANDLE hin;
hin = GetStdHandler(STD_INPUT_HANDLE);
...
ReadConsoleInput(hin, &ir, 1, &n)...
...
if(ir.Event.KeyEvent.dwControlKeyState == LEFT_CTRL_PRESSED) {
// some code..
}
xor 32を使用するとすべて正常に動作する場合:
if((ir.Event.KeyEvent.dwControlKeyState ^ 32) == LEFT_CTRL_PRESSED) {
// some code..
}
余分なビットはどこにありましたか?
ps: ユニコードのプロジェクト