Вы можете проверить только Ctrl + d , когда ваше чтение вернуло EOF
, см. Руководство по вашему чтению, чтобы получить больше информации об этом, но обычно оно возвращает 0. То же самое идет на Ctrl + c , так как оба посылают сигналы в вашу программу.
Для других комбинаций клавиш Ctrl + это сильно зависит от вашей системы.
В Linux Ctrl + a и Ctrl + e в оболочке или emacs переместит вас в начало или конец / начало строки соответственно.
Самый простой способ получить то, что вам нужно, - написать небольшую программу, использующую чтение, без буферизации (см. ioctl ), с 8-байтовым буфером, и сбрасывать ваши байты чтения каждый раз, когда вы выходите из чтения.
int nbr;
int i;
char buf[8];
nbr = 42;
while (nbr > 0)
{
nbr = read(0, buf, 8);
i = 0;
while (i < nbr)
printf("%x ", buf[i++]);
printf("\n");
}
У вас будет шестнадцатеричная версия полученных последовательностей ключей ctrl +. Может начинаться с \ ESC или \ 033 (последовательность escape-символов). Например, клавиша со стрелкой вверх выглядит как \033[A