Какие символы клавиатуры можно прочитать с помощью getchar () в Linux - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть приложение C ++, работающее в Ubuntu, которое ожидает нажатия клавиши, используя функцию getchar (). Ввод не используется, я просто завершаю программу нажатием любой клавиши.

Я заметил, что могу набрать практически любой печатный символ, но также некоторые непечатаемые символы, такие как escape и backspace . Ключами, которые не вызывали окончание моей программы, были такие клавиши, как shift и ctrl .

Так что мой вопрос в том, какие нажатия клавиш считываются getchar ()? Как я могу их классифицировать, так как, по-видимому, не только печатаемые символы запускают getchar ()?

Я не смог найти ответ на странице руководства или в справке по C ++.

Это в основном весь код, который я написал:

std::cout << "Ready for input ..." << std::endl;
std::getchar();
std::cout << "A key was pressed, landing ..." << std::endl;

Помните, что я манипулирую termios, чтобы не ждать символа новой строки и не повторять.

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Получается, что ключи, которые getchar () не перехватывает, это Modifier keys. Может быть, просто потому, что они просто «модификаторы» и всегда используются вместе с другим ключом для создания определенного характера. Если кто-то знает конкретную причину, я хотел бы знать.

0 голосов
/ 26 апреля 2018

getchar читает из stdin, а не напрямую с клавиатуры. Бит, который вам не хватает, намекает на ваше предположение о «символах клавиатуры». Не хватает перевода с нажатия клавиш на символы. Например, нажатие клавиши Shift + a производит A. Способ ввода à зависит от конфигурации клавиатуры xact.

...