Nach dem Ausführen von stty raw in der Konsole und dem anschließenden Kombinieren von getchar() und cin.peek() in C++ sollte es in Ordnung sein, diese einfache Aufgabe abzuschließen.
Ich habe festgestellt, dass cin.peek() dies tun wird blockiert werden, wenn Sie nur die ESC-Taste drücken. Aber Peek ist Peek, es sollte NICHT blockiert werden.
Hier ist der Code, um dieses Problem zu reproduzieren. Es kann die Aufwärts-Taste, aber die ESC-Taste
erkennen
Code: Select all
#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