Собственно сабж. Как-то через kbhit() и цикл while?
#include <windows.h>
#include <iostream>
int main() {
do {
std::cout << "not pressed" << std::endl;
Sleep(20);
} while((::GetKeyState(VK_SPACE) & 0xFF00) == 0x0000);
do {
std::cout << "pressed" << std::endl;
Sleep(20);
} while((::GetKeyState(VK_SPACE) & 0xFF00) == 0xFF00);
// Здесь чистишь буфер
std::cout << "go!" << std::endl;
return 0;
}
16-тиричные коды - коды клавиш ?
Нет, признаки нажатия/отпускания... Если GetKeyState() & 0xFF00 равно нулю (т.е., если старший байт результата == 0) значит клавиша отпущена, иначе - нажата...
Поэтому при нажатии пробела первый цикл прекращается (GetKeyState() & 0xFF00 != 0), а при ее отпускании - прекращается второй цикл, результат AND-а опять нулевой...