После запуска stty raw в консоли и последующего объединения getchar() и cin.peek() в C++, можно завершить эту простую задачу.
Я обнаружил, что cin.peek() будет быть заблокирован, если вы только нажмете Клавиша ESC. Но просмотр есть просмотр, его НЕ следует блокировать.
Вот код, позволяющий воспроизвести эту проблему. Он может идентифицировать клавиши Up, но ESC
Код: Выделить всё
#include
#include
using namespace std;
// ESC: 1b, UP: 1b 5b 41
int esc_or_up() {
auto esc_key = 0x1b, bracket_key = 0x5B, a_key=0x41;
auto buf = cin.rdbuf();
int ch = buf->sbumpc();
if (ch != esc_key)
return ch;
auto debug = [&]() {
static int count = 0;
cout
Подробнее здесь: [url]https://stackoverflow.com/questions/79326578/cin-peek-is-blocked-after-running-stty-raw[/url]
Мобильная версия