Предотвратить отправку строки readline

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

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

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

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


person vise    schedule 19.09.2016    source источник
comment
Я не эксперт, но делаю что-нибудь в альтернативном интерфейсе. ?   -  person JAL    schedule 22.09.2016
comment
Спасибо за ссылку, к сожалению нет.   -  person vise    schedule 22.09.2016


Ответы (1)


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

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

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

ВОЗВРАТ:
C-J:

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

rl_unbind_key('\r'); // unbind Enter
rl_unbind_key('\n'); // unbind Control+J
person mpromonet    schedule 22.09.2016
comment
Это то, что я искал. Спасибо! - person vise; 24.09.2016