
решение1
Это уровень декодирования терминального ввода, который вы получаете от дисциплины линии в каноническом режиме ввода. Это не очень много.
Каждое приложение, которое хочет представить редактируемый ввод командной строки, который учитывает клавиатуру курсора, клавиатуру редактирования и функциональные клавиши, должно переключить терминал в режим необработанного ввода и декодировать поток ввода ECMA-48, учитывая типы терминалов (и различные конечные автоматы для RXVT, Linux KVT, SCO Console и Interix). Ваша программа должна это сделать.
Для этого существуют различные библиотеки: от GNU ReadLine до libtermkey/libtickitиeditline(он же libedit) в ZLE в оболочке Z и библиотеку редактирования оболочки Korn.