В какой операционной системе и в каком компиляторе? Работа с клавиатурой не является частью стандарта C++ и в разных ОС / компиляторах реализуется по-разному (и не напрямую, а через механизмы операционной системы).
В свое время интересовали сканкоды нажатых клавиш. Запилил тогда приложение которое выводило на экран данные. Осталось только понять как приложение функционирует и поймете как узнать какая клавиша была нажата. На деле можно еще отслеживать была ли отпущена клавиша и на основании этого делать выводы зажата клавиша или нет.
Подскажу что основные действия происходят в switch (message), а конкретнее в case WM_KEYDOWN:. Все что до этого это шаблонное создание и вывод окна и как таковое не интересно.
#if defined(UNICODE) && !defined(_UNICODE)
#define _UNICODE
#elif defined(_UNICODE) && !defined(UNICODE)
#define UNICODE
#endif
hwnd = CreateWindowEx (
0, /* Extended possibilites for variation */
szClassName, /* Classname */
_T("Press key for watch scan code"), /* Title Text */
WS_OVERLAPPEDWINDOW, /* default window */
CW_USEDEFAULT, /* Windows decides the position */
CW_USEDEFAULT, /* where the window ends up on the screen */
640, /* The programs width */
480, /* and height in pixels */
HWND_DESKTOP, /* The window is a child-window to desktop */
NULL, /* No menu */
hThisInstance, /* Program Instance handler */
NULL /* No Window Creation data */
);
ShowWindow (hwnd, nCmdShow);
while (GetMessage (&messages, NULL, 0, 0))
{
TranslateMessage(&messages);
DispatchMessage(&messages);
}