Получите вход от клавиатуры без 'возврата' в C

Как я получаю вход от клавиатуры, не нажимая 'возврат' в C / Mac OS

8
задан David Thornley 30 March 2010 в 21:40
поделиться

3 ответа

В Unix-подобных системах с терминалами (я полагаю, что MacOS X подходит), вам необходимо установить терминал в так называемый режим «cbreak». Дело в том, что терминал хранит данные до тех пор, пока не будет нажата кнопка «return», так что ваш код C ничего не может сделать, если только он не проинструктирует терминал не выполнять такую ​​буферизацию. Это часто называется «режимом cbreak» и включает функцию tcsetattr () .

Немного погуглив, нашел этот код , который кажется нормальным. Когда терминал находится в режиме cbreak, вы сможете читать данные, поскольку они идут со стандартными вызовами getchar () или fgetc () .

5
ответ дан 5 December 2019 в 14:02
поделиться

Если вам нужно разобраться с деталями самостоятельно, используйте вариант проклятия. Если он доступен, предпочитайте "ncurses" над "curses". Обратите внимание, что некоторые клавиши являются «мета-клавишами», которые на самом деле просто изменяют базовые коды клавиш. Существует несколько «режимов» для чтения введенных с клавиатуры значений: от «приготовленный», «частично приготовленный» до «сырой». Каждый режим имеет свои особенности, внимательно прочтите документацию.

Иногда лучше использовать существующий код обработки ключей из различных библиотек программирования игр. Я слышал о некоторых хороших результатах при использовании циклов сканирования ключей SDL. Это было некоторое время назад, поэтому, возможно, существуют более новые (и лучшие) наборы инструментов.

2
ответ дан 5 December 2019 в 14:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: