2016-09-19 8 views
2

Ich verwende readline in einer Anwendung, die der Eingabe in Echtzeit folgt. Ich möchte nicht zulassen, dass der Benutzer Enter, Strg + J oder ein anderes Äquivalent drückt und somit unbeabsichtigt das Feld löscht.Prevent readline line submit

Ich bin eigentlich die Schlüssel selbst weiterleiten, so dass ich bestimmte Tasteneingaben fangen und verhindern kann, aber ich denke nicht, dass dies der Weg ist, weil umgekehrte Suche (Control - R) ebenfalls behandelt werden muss.

Ich habe über die gnu docs geschaut, aber nichts nützliches gefunden.

Mein Code ist ähnlich wie diese https://github.com/ulfalizer/readline-and-ncurses

+0

Ich bin kein Experte, aber tut alles in der [Alternative Interface] (http://www.delorie.com/gnu/docs/readline/rlman_41.html) Hilfe? – JAL

+0

Danke für den Link, leider nicht. – vise

Antwort

1

Sie können diese Tasten Konfiguration Tastenbelegungen in der Initialisierungsdatei von libreadline hemmen:

  1. in ~/.inputrc für den aktuellen Benutzer konfigurieren
  2. in /etc/inputrc konfigurieren für alle Benutzer.

Enter Zur Hemmung und Strg + J, Sie zu der Initialisierungsdatei hinzufügen könnte:

RÜCKKEHR:
CJ:

Wenn Sie Sie tun können, bevorzugen programmgesteuert mit rl_unbind_key, Hinzufügen zu Ihrem Code:

rl_unbind_key('\r'); // unbind Enter 
rl_unbind_key('\n'); // unbind Control+J 
+0

Das ist, was ich gesucht habe. Vielen Dank! – vise