GitHub
Это лучшее, что я могу придумать для обработки нажатий клавиш в стиле ncurses (на самом деле я пишу альтернативу ncurses по разным причинам).
Пример приложения, созданного с использованием этого кода, советует пользователю «Выйти, нажав Escape».По правде говоря, это требует Escape + Escape или Escape + Arrow Key.Я бы хотел это исправить.
#include <sys/ioctl.h>
#include <termios.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *get_key() {
char c = getchar();
switch(c) {
case 'a': return "a";
case 'b': return "b";
case 'c': return "c";
...
case '\x1b':
c = getchar();
switch(c) {
case '[':
c = getchar();
switch(c) {
case 'A': return "up";
case 'B': return "down";
case 'C': return "right";
case 'D': return "left";
}
case '\x1b': return "escape";
}
default: return "unknown";
}