LinuxForum.Fans
Тема

как распознать esc-последовательность

Автор: chuk 2 сообщений 1202 просмотров
#138789

Возьмем, к примеру, кнопку F1. При ее нажатии приложению передается последовательность байт: "^[[1;2".
Если вызовом read(0,buff, N) последовательность прочитается вся целиком - распознать ее не проблема.
Часто бывает, что читается только код esc "^[", а следующим вызовом read(...) - остальная часть "[1;2".
Вот сижу и не могу сообразить как в консольном приложении корректно отличить начало esc-последовательности, от простого нажатия на кнопку esc .

#138811
text
#include <stdio.h>

int main() { int c = 0; while(c != 'q') { c = getchar(); printf("%X\n", c); } return 0; }

как видите, getchar читает поток до ENTER'а.
read() читает в точности точно также. Это свойство потока, а не программы.

что-бы читать то, что юзер вбивает с клавы, вам лучше использовать getch()
man getch
из библиотеки ncurses (см. соотв. мануал).

Войдите или зарегистрируйтесь, чтобы ответить.