Ich replizieren ein Irssi interface für ein Schülerprojekt. Ich möchte NCurses für die Textschnittstelle verwenden und readline bessere Text-Bearbeitungsfunktionen beim Schreiben von Nachrichten bieten.Readline & NCurses, behandeln spezielle Tasten und Tastenkombinationen
Diese question, answer und project lieferte mir einen guten Ausgangspunkt.
Mein Problem ist, dass ich möchte eine Eingabe/Ereignisschleife wie diese haben:
int ch;
while (exit_condition) {
ch = wgetch(window);
switch (ch) {
case ERR: continue;
case KEY_F(1): /* do something */ break;
case KEY_UP: /* do something else */ break;
default: forward_to_readline(ch); break;
}
}
Aber um KEY_F(n)
oder KEY_UP
ich keypad(window, TRUE)
aktivieren müssen übereinstimmen, die die Eingabe wird ändern und es machen unbrauchbar für readline.
Aus dem Handbuch:
Wenn Tastatur TRUE ist, und eine Funktionstaste gedrückt wird, wird das Token für die Funktionstaste anstelle der rohen Zeichen zurückgegeben.
Wenn ein Zeichen, das der Anfang einer Funktionstaste sein könnte, ist empfangen (was, auf modernen Terminals, bedeutet ein Escape-Zeichen), flurs setzt einen Timer. Wenn der Rest der Sequenz nicht innerhalb der angegebenen Zeit in kommt, wird das Zeichen durchlaufen; Andernfalls wird der Wert des Funktionstastenwerts zurückgegeben. Aus diesem Grund gibt es viele Terminals eine Verzögerung zwischen der Zeit, die ein Benutzer drückt die Escape-Taste und das Escape wird an das Programm zurückgegeben.
Hier sind meine Gedanken:
- Gibt es eine Funktion, die Wirkung von
keypad
zu umkehren? - Sollte ich das Verhalten von
keypad
selbst implementieren? Ich denke, ich muss das auch tun, wenn ich Events wie Shift + Up einfangen will. Ich wäre froh, Beispiele dafür zu haben. - Kann mir die Tastenkombination readline geben, wenn ich es NCurses bilden nicht erhalten können? vielleicht mit Key Binding Callbacs (relevant ?)?
Vielen Dank für Ihre Zeit!
Vielen Dank! Ich schätze, es könnte keine bessere Person geben, um meine Fragen zu beantworten. Ich werde mit der Readline-Funktion gehen. Was ich mit der umgekehrten Tastatur meinte, ist, dass ich bei einem Token für eine Funktionstaste die Reihenfolge der Escape-Codes am Ursprung des Tokens abrufen konnte. –