+++ /dev/null
-#include <windows.h>
-#include <stdio.h>
-#include <ctype.h>
-
-int main(int argc, char *argv[])
-{
- static int escCount = 0;
-
- HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE);
- while (true) {
- DWORD count;
- INPUT_RECORD ir;
- if (!ReadConsoleInput(hStdin, &ir, 1, &count)) {
- printf("ReadConsoleInput failed\n");
- return 1;
- }
-
- if (true) {
- DWORD mode;
- GetConsoleMode(hStdin, &mode);
- SetConsoleMode(hStdin, mode & ~ENABLE_PROCESSED_INPUT);
- }
-
- if (ir.EventType == KEY_EVENT) {
- const KEY_EVENT_RECORD &ker = ir.Event.KeyEvent;
- printf("%s", ker.bKeyDown ? "dn" : "up");
- printf(" ch=");
- if (isprint(ker.uChar.AsciiChar))
- printf("'%c'", ker.uChar.AsciiChar);
- printf("%d", ker.uChar.AsciiChar);
- printf(" vk=%#x", ker.wVirtualKeyCode);
- printf(" scan=%#x", ker.wVirtualScanCode);
- printf(" state=%#x", (int)ker.dwControlKeyState);
- printf(" repeat=%d", ker.wRepeatCount);
- printf("\n");
- if (ker.uChar.AsciiChar == 27 && ++escCount == 6)
- break;
- }
- }
-}