eddy_em: (Default)
eddy_em ([personal profile] eddy_em) wrote2020-12-23 12:00 pm

Терминальчик

На основе найденного на просторах интернета примера, как "подружить" ncurses и readline, переделал tty_term — простенький терминальный клиент. Теперь команды вводить намного удобней: они находятся в отдельной строке и запоминаются readline'ом.

Прокручивать экран сообщений тоже можно "до упора": абсолютно все сообщения запоминаются в связном списке (я решил, что нет смысла его ограничивать: все равно больше нескольких мегабайт накопить не удастся).
Правда, не решил проблему с изменением размера окна: почему-то "на кошках" все работает нормально, но тот же самый код, дополненный работой с последовательным терминалом, "задерживает" сигнал обновления до нажатия какой-либо клавиши! А еще оказалось, что изменение размера экрана посылает сигнал, который превосходно прерывает select() (а я в его обработчике совсем забыл сразу добавить реакцию на EINTR).
Ну и да: мне лень было заморачиваться с прокруткой экрана, чтобы все было красиво и по одной строчке, как бы ни менялся размер окна, поэтому прокрутка производится поэлементно (т.е. квантом является не отображаемая строка, а сохраненная в памяти).
Режим работы пока только текстовый. Если вдруг у меня появится устройство, имеющее бинарный протокол, возможно, добавлю еще представление в виде hex + ввод команд в таком же виде.

Post a comment in response:

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org