Я пытаюсь получить строку, представляющую клавишу со стрелкой вверх, из базы данных termcap. Используя следующее:
char *buffer = malloc(2048);
tgetent(buffer, getenv("TERM")); //TERM = xterm-256color
char *key_up = tgetstr("ku", &buffer); // gives me \EOA
ku
Строка ввода, отправленная с помощью клавиши со стрелкой вверх.
Проблема в том, что клавиша со стрелкой вверх фактически передается как \E[A
при вводе в программу. Это также передается как cat
. Я пробовал с разными терминальными эмуляторами и оболочками, и все они проходили одинаково.
Поэтому я решил жестко закодировать это значение для ключа вместо использования значения ku
, и оно работает, но не кажется правильным.
Я что-то здесь упускаю? Как программно получить правильное значение ku
?