KEY_ENTER vs '\ n'? - PullRequest
       67

KEY_ENTER vs '\ n'?

2 голосов
/ 03 июня 2010

Когда я использую PDcurses и пытаюсь выйти из цикла while, когда клавиша ввода нажата while(key != KEY_ENTER), цикл while никогда не завершается.Однако, когда я пытаюсь получить такой же выход из цикла с while((char)key != '\n'), он успешно завершается всякий раз, когда я нажимаю клавишу ввода.Почему '\n' работает, а не KEY_ENTER?

btw, key - это int

, и я надеюсь, что это соответствующие несколько строк кода:

int key;
while((char)key != '\n') {
    key = getch();
    ...
}

Ответы [ 2 ]

3 голосов
/ 03 июня 2010

getch() - это функция, определенная стандартом ANSI C для библиотеки времени выполнения C.

В большинстве систем, таких как Windows, Linux и т. Д., Эта функция реализована так, чтобы возвращать '\n', когда пользователь нажал Enter. Для сравнения, в Windows само нажатие клавиши (из Enter) может быть представлено как код клавиши VK_ENTER.

PDCurses переводит коды клавиш в значения ASCII для вас.

Вы можете получить нужные значения ключей, если сначала вызовете функции PDCurses raw(); nonl();. Кроме того, вам, вероятно, следует использовать wgetch() для нового кода.

2 голосов
/ 03 июня 2010
KEY_ENTER == 0x157, '\n' == 0xA

'\ n' является стандартной новой строкой ASCII, а KEY_ENTER представляет код клавиатуры. См. код PDCurses .

Для получения дополнительной информации вы должны опубликовать соответствующую часть вашего кода.

...