Ну е-мае. Как можно ТАК криво писать программы? Под эмуляторами терминалов нормально не работает (половину функций не вызвать, по каждому чиху падает), т.е. фактически использовать можно только в консоли, причем исключительно с правами рута - потому как нормально воспринимается ввод только из фреймбуфферо-подобного /dev/vcsa*. x86_64 версия не существует в принципе, потому что там накодено так, что кроме как под i386 не соберется. Про другие архитектуры я промолчу; про BSD и другие ОС лучше даже не заикаться.
ЭТО должно срочно уйти в биореактор. Чтобы мир забыл про существование таких позорных программ.
Полностью согласен. Esc нормально не обрабатывает, выходит постоянно не к месту. Под FreeBSD, кстати, работает, и в консоле и в xterm'е, проблем с работой из-под юзера не замечено. Но малоюзабельно - факт.
>По поводу Esc - в *nix терминалах коды клавиш это esc последовательности и чтобы отличить esc последовательность от Esc клавиши введена задержка
Это понятно, только *nix терминалами еще можно гибко управлять, и наверное поэтому в куче консольного софта, который у меня стоит Esc работает как надо.
>Это понятно, только *nix терминалами еще можно гибко управлять, и наверное поэтому в куче консольного софта, который у меня стоит Esc работает как надо.
Управлять, если бы... управлять конечно можно, но всеми поразному и не со стороны приложения, а со стороны пользователя (т.е. из конфигурационных файлов/диалогов настройки и т.д.). В результате такого управления для автора программы всё становится только запутанней. Сделать так, чтоб Esc нормально работал _везде_ невозможно - ибо никто не запрещает терминалу подключённому к удалённому хосту устроить паузу в пару секунд между Esc начинающим esc-последовательность и её содержимым (например из-за перегруженности сети). В реальности эта задержка больше полусекунды наверное никогда не бывает, поэтому полусекундная пауза работает удовлетворительно в абсолютном большинстве случаев.
Однако полсекунды - для интерактивной программы тоже мягко говоря многовато. Проведя несколько экспериментов я пришёл к выводу что на практике задержка в большинстве случаев вообще не нужна - если нажата клавиша, генерирующая esc-последовательность, то на stdin символы приходят не по отдельности а все одновременно, если же только Esc, то соответственнона нём всё и заканчивается. Таким образом Esc можно отличать и без видимой задержки.
(всё описанное выше относится не конкретно к biew а к интерактивным консольным программам в общем)