Обнаружение нажатия клавиши с помощью getchar()

Когда я запускаю следующую программу:

int main()
{
  getchar();
  return 0;
}

И я нажимаю любую из клавиш со стрелками, например (стрелка вверх), на консоли я получаю ^[[A. Я хочу знать, что это значит. В частности, я хочу знать, что означает ^[.


person Alex_ban    schedule 08.09.2013    source источник


Ответы (2)


^ — это сокращенное обозначение клавиши Ctrl. Тогда ^[ — это экран-код терминала для ESC, escape-символа.

person Mihai Maruseac    schedule 08.09.2013

Символ вставки перед другим символом — это escape-последовательность для управляющего символа (одного из символов с кодовыми точками от 0 до 31). ^[ — это escape-символ с именем ESC, который обычно вводит escape-последовательности для вашего терминала. Это то, что отправляет ваша клавиатура, когда вы нажимаете стрелку вверх.

person fuz    schedule 08.09.2013
comment
Но почему keyboartd отправляет это часть кода сканирования? - person Alex_ban; 08.09.2013
comment
Для стрелки вверх нет кода ASCII. Существует стандарт ANSI, который описывает, в какие управляющие последовательности преобразуются ключи, не имеющие связанного кода ASCII. Это также указывает, что ↑ отображается на ^[[A. - person fuz; 08.09.2013