![дальнейшее чтение](https://rvso.com/image/169406/%D0%B4%D0%B0%D0%BB%D1%8C%D0%BD%D0%B5%D0%B9%D1%88%D0%B5%D0%B5%20%D1%87%D1%82%D0%B5%D0%BD%D0%B8%D0%B5.png)
решение1
Это уровень декодирования терминального ввода, который вы получаете от дисциплины линии в каноническом режиме ввода. Это не очень много.
Каждое приложение, которое хочет представить редактируемый ввод командной строки, который учитывает клавиатуру курсора, клавиатуру редактирования и функциональные клавиши, должно переключить терминал в режим необработанного ввода и декодировать поток ввода ECMA-48, учитывая типы терминалов (и различные конечные автоматы для RXVT, Linux KVT, SCO Console и Interix). Ваша программа должна это сделать.
Для этого существуют различные библиотеки: от GNU ReadLine до libtermkey/libtickitиeditline(он же libedit) в ZLE в оболочке Z и библиотеку редактирования оболочки Korn.