Запретить чтение строки

Я использую readline в приложении, которое следует за вводом в реальном времени. Я не хочу позволять пользователю нажимать Enter, Control + J или любой другой эквивалент и, таким образом, непреднамеренно очищать поле.

Я на самом деле пересылаю ключи сам, поэтому могу отлавливать и предотвращать определенные вводы клавиш, но я не думаю, что это путь, потому что обратный поиск (Control - R) также должен обрабатываться.

Я просмотрел документы по GNU, но не нашел ничего полезного.

Мой код похож на этот https://github.com/ulfalizer/readline-and-ncurses

1 ответ

Решение

Вы можете запретить эти ключи, конфигурируя привязки клавиш в файле инициализации libreadline:

  1. в ~/.inputrc настроить для текущего пользователя
  2. в /etc/inputrc настроить для всех пользователей.

Чтобы запретить Enter и Control + J, вы можете добавить в файл инициализации:

ВЕРНУТЬ:
CJ:

Если вы предпочитаете, вы можете сделать это программно, используя rl_unbind_key, добавив к своему коду:

rl_unbind_key('\r'); // unbind Enter
rl_unbind_key('\n'); // unbind Control+J
Другие вопросы по тегам