Есть ли простой способ считывать сканкоды с клавиатуры без привлечения сторонних библиотек?

#keyboard #rust

#клавиатура #Ржавчина

Вопрос:

Я пытаюсь создать проект оболочки в Rust, и в самом начале у меня возникли проблемы. Вместо чтения всей строки и вывода через stdin / stdout я хочу анализировать каждое нажатие клавиши и сохранять буфер до Enter нажатия. С возможностью перемещения курсора, обратного пробела, доступа к истории команд с помощью клавиш вверх / вниз и т.д.

Комментарии:

1. Полный API стандартной библиотеки задокументирован , поэтому проверьте это для соответствующих типов и функций. Вы не указали никаких кроссплатформенных требований, поэтому я предполагаю, что вы используете Linux. Возможно, вы можете просто открыть /dev/tty или что-то еще? Большинство людей просто использовали бы ящик для решения этой проблемы (Rust любит ящики), но запрос рекомендации библиотеки не по теме для Stack Overflow, так что хорошо, что вы этого не сделали!

2. Ммм… почему это оффтопик? Я слышу это впервые. Кроме того, я совершенно новичок в системном программировании, поэтому я был бы признателен за любые ссылки на конкретные примеры в Rust о том, как открыть / dev / tty и т. Д

3. @IvanYouroff: SO отвечает на вопросы, на которые есть объективный «лучший» ответ. Вопросы и ответы — это не форум, поэтому он не подходит для дебатов и (в данном случае) противопоставления одной библиотеки другой. SO также стремится получать ответы, которые сохраняются (в идеале, вечно действительны), а лучшие библиотеки, как правило, приходят и уходят, так что через 2 года лучшая библиотека для конкретной задачи может быть совершенно другой… и, следовательно, «рекомендация» должна быть полностью отключена, что могло бы ввести людей в заблуждение.

4. Я согласен с частью о дебатах и священных войнах, но большинство проблем программирования более высокого уровня решаются так: «Как мне сделать X?» — «Используйте библиотеку Y, вот пример», и даже спустя годы, если библиотека Z будет лучшим вариантом, поиск ответа с упоминанием Y будет хорошей отправной точкой.