У меня есть код, который может отслеживать активность клавиатуры для вас.
#include "stdafx.h"
#include <stdio.h>
#include "windows.h"
#include "iostream"
using namespace std;
int main(void)
{
HANDLE hStdInput, hStdOutput, hEvent;
INPUT_RECORD ir[128];
DWORD nRead;
COORD xy;
UINT i;
hStdInput = GetStdHandle(STD_INPUT_HANDLE);
hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);
FlushConsoleInputBuffer(hStdInput);
hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
HANDLE handles[2] = { hEvent, hStdInput };
while (WaitForMultipleObjects(2, handles, FALSE, INFINITE))
{
ReadConsoleInput(hStdInput, ir, 128, &nRead);
for (i = 0; i<nRead; i++)
{
switch (ir[i].EventType)
{
case KEY_EVENT:
if (ir[i].Event.KeyEvent.wVirtualKeyCode == VK_ESCAPE)
SetEvent(hEvent);
else
{
xy.X = 0; xy.Y = 0;
SetConsoleCursorPosition(hStdOutput, xy);
printf
(
"AsciiCode = %d: symbol = %c\n",
ir[i].Event.KeyEvent.uChar.AsciiChar,
ir[i].Event.KeyEvent.uChar.AsciiChar
);
// note that some keys have a AsciiCode of 0 such as shift, ctrl, and the
// rest you can try out yourself
}
break;
}
}
};
return 0;
}
В этом коде он отслеживает активность клавиатуры и пока показывает нажатую клавишу, а также ее AsciiCode, также для shift, ctrl и т. Д. Имя клавиши отображаться не будет.