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