installed pty
[VSoRC/.git] / node_modules / node-pty / deps / winpty / misc / ShowConsoleInput.cc
diff --git a/node_modules/node-pty/deps/winpty/misc/ShowConsoleInput.cc b/node_modules/node-pty/deps/winpty/misc/ShowConsoleInput.cc
new file mode 100644 (file)
index 0000000..75fbfb8
--- /dev/null
@@ -0,0 +1,40 @@
+#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;
+        }
+    }
+}