LINUX.ORG.RU

Считывание с клавиатуры в терминале

 , ,


1

2

Подскажите, куда копать. Нужно отлавливать и обрабатывать нажатия кнопок клавиатуры в консольной программе. В какой части стандартной библиотеки искать? Речь не про stdin.

★★☆

А про что тогда речь? Curses или аналоги используешь? Готов читать файл линукс-специфичный устройства? Если нет, то как ты это все себе представляешь, на каком таком уровне абстракции?

t184256 ★★★★★
()
Ответ на: комментарий от dataman

ему нужен такой чтобы он мог дописать экшн на определённые комбинации. Скорее всего питоновским скриптом заюзать библиотеку input_чтототамеще

monkdt
()
Последнее исправление: monkdt (всего исправлений: 1)
Ответ на: комментарий от t184256

Просто консоль(вывод через stdout), но требуется прямой доступ к клавиатуре, без stdin. Вне линукса использоваться не будет, поэтому на переносимость плевать.

Werenter ★★☆
() автор топика
Последнее исправление: Werenter (всего исправлений: 1)
Ответ на: комментарий от Werenter

но требуется прямой доступ к клавиатуре, без stdin

Ну открой файл клавиатуры и читай события из неё. Просто чтобы разупороться и понять, что тебе это не надо.

t184256 ★★★★★
()

Возьми ncurses. Кажется под капотом там нужно что-то типа передать управляющие последовательности терминала чтобы отключить буферизацию и эхо, и тогда бы сможешь читать по одной клавише из stdin. Не алфацифровые клавиши наверняка будут кодироваться в несколько байт. Всё это будет отличаться в разных терминалах и локалях. Поэтому возьми ncurses, он это детали абстрагирует. Либо более современную библиотеку с не таким ублюдским интерфейсом, например notcurses. По части клавиатуры последняя умеет например продвинутый протокол kitty который позволяет ловить отпускания клавиш.

slovazap ★★★★★
()
Ответ на: комментарий от slovazap

Возьми ncurses. Кажется под капотом там нужно что-то типа передать управляющие последовательности терминала чтобы отключить буферизацию и эхо, и тогда бы сможешь читать по одной клавише из stdin.

можно без ncusrses - достаточно tcgetattr, tcsetattr;

хордкорно и без попсовых новоделов :-)

MKuznetsov ★★★★★
()