2017-07-06 1 views
0

Ich schreibe ein Ncurses-Programm, und ich muss KEY_BACKSPACE erkennen. Ich habe das Programm unter 2 Linux Distributionen getestet.Erkennung von KEY_BACKSPACE in Ncurses

Darunter läuft es OK. Aber unter Archlinux, KEY_BACKSPACE ist 263, aber was ich aus dem Programm drucken habe 127.

Für suse, sie sind beide 263.

Ich verwende int ch = wgetch(somw_window), um den Tastendruck zu bekommen.

Antwort

0

Es kommt: ob Rück ASCII BS (8) oder ASCII DEL (127) konfigurierbar ist mit vielen Terminalemulatoren wie xterm sendet. Die Terminal-Beschreibung (ausgewählt durch die Umgebungsvariable) muss mit der Konfiguration des Terminals übereinstimmen, sonst wird curses nicht sehen, dass die Fähigkeit (Backspace-Taste) mit dem übereinstimmt, was Ihre Tastatur tatsächlich sendet, und Sie erhalten nur die 8/127 Wert.

Einige Terminals senden nur das eine oder das andere (aber die meisten der hartcodierten Terminals, auf die Sie stoßen werden, verwenden ASCII DEL).

Weiterführende Literatur (xterm FAQ):

+0

Thomas, vielen Dank! Ich habe 2 weitere Fragen. Ich verwende putty & tmux, 'TERM' ist sowohl' screen-256color', als auch Konfiguration unter 'putty-Terminal-Keyboard'. Gibt es noch etwas zu konfigurieren? Und aus Ihrem Post ist "Fluch" nicht für diese Inkonsistenz verantwortlich? – delta

+0

stimme zu: curses ist nicht verantwortlich, es ist normalerweise eine konfigurierbare Sache. Eine komplizierte Sache mit tmux ist, dass es versucht, die ankommenden Zeichen der Terminalbeschreibung zuzuordnen, und kann zum Beispiel eine Terminalbeschreibung sehen, wo 'kbs =^H ', wo dein Terminal tatsächlich' kbs = ^? 'Ist. –

+0

Wie überprüft man '^ H',' ^? 'Unterschied im Terminal? Meine Putty Config sind beide '^?' – delta