Доступ к нажатий клавиш в C - PullRequest
1 голос
/ 26 ноября 2011

Я пытаюсь получить доступ к нажатию клавиш в C. Я могу получить доступ к буквенно-цифровым клавишам. Как получить доступ к клавишам Control , Shift и Alt ?
Плюс я где-то читал, что иногда при вводе текста в консоли ОС маскирует клавишу возврата. Я хотел бы знать, где пользователь нажал клавишу возврата. Это не то же самое, что знать, когда была нажата кнопка \ n. GNU C. Ubuntu 11.

Ответы [ 2 ]

2 голосов
/ 26 ноября 2011

Дитрих Эпп ответил в комментарии: используйте ncurses library.

См. Также этот вопрос

И вы можете создать X11 клиентское графическое приложение; в этом случае используйте библиотеку графических инструментов, такую ​​как GTK или Qt

Если вы хотите создать консольное приложение, используйте ncurses или, возможно, readline

И ваш вопрос, если его понимать буквально, не имеет смысла: строгий стандарт C не знает, что такое клавиша или нажатие клавиши (единственные операции ввода-вывода, упомянутые в стандарте, относятся к <stdio.h> через FILE). Вот почему большинство людей использует дополнительные библиотеки и стандарты (в дополнение к тем, которые требуются ISO C), например. Posix ...

1 голос
/ 26 ноября 2011

Простой ответ: «Вы не можете», по крайней мере, нелегко или без загрузки сторонних библиотек.

Большинству программ на Си не нужно ничего знать о клавиатуре или экране.Стандарт C касается только чтения из файлов и записи в них (клавиатура и экран являются файлами особого случая).

Если у вас есть веская причина для непосредственного доступа к клавиатуре, вы должны рассмотретьБиблиотека ncurses (http://www.gnu.org/software/ncurses/ncurses.html). Ncurses знает, сколько работает различных (виртуальных) терминалов и клавиатур, и предоставляет им единый интерфейс. Она позволяет рисовать экран и создавать замещающий графический интерфейс, используя только блоки текста.

Поскольку вы используете Ubuntu, попробуйте выполнить команду "aptitude", чтобы увидеть хороший пример того, что может сделать ncurses.

...