Ncurses: Spezialtasten
<<< ncurses-Startseite | ncurses | << Inhaltsverzeichnis |
< Farben und andere Attribute | Fenster > |
Damit Spezialtasten (z.B. Pfeiltasten, Funktionstasten, Backspace-Taste) korrekt angesprochen werden, müssen mittels
int keypad(WINDOW *win, bool bf);
deren ncurses-Escapesequenzen aktiviert werden.
Nachfolgend die Bezeichnung einiger häufig benötigter Spezialtasten. Zwecks vollständiger Auflistung wird auf die ncurses-Header-Datei curses.h
hingewiesen:
KEY_DOWN | |
KEY_UP | |
KEY_LEFT | |
KEY_RIGHT | |
KEY_BACKSPACE | |
KEY_F(1), ... | Funktionstaste F1, ... |
KEY_END | |
KEY_PRINT |
Beispiel
[Bearbeiten]#include <curses.h> #include <stdlib.h> void quit(void) { endwin(); } int main(void) { initscr(); atexit(quit); clear(); noecho(); curs_set(0); cbreak(); keypad(stdscr, TRUE); mvaddstr(5, 5, "Hallo"); mvaddstr(6, 10, "Welt!"); mvaddstr(10, 1, "Programm beenden durch Drücken der Taste F1"); refresh(); while(getch() != KEY_F(1)) { } return(0); }
Damit dieses Beispiel ordnungsgemäß funktioniert, muss die Zeilenpufferung und teilweise Einzelzeichenbearbeitung für das Textterminal ausgeschaltet sein. Sicherheitshalber sollte dieser "cbreak"-Modus explizit aktiviert werden, denn es ist nicht garantiert, dass sich das Terminal automatisch in diesem Modus befindet. Testweise kann in diesem Beispiel die cbreak
-Funktion durch die nocbreak
-Funktion ersetzt werden. Das Programm lässt sich dann nicht mehr durch Drücken der F1
-Funktionstaste beenden. nocbreak()
versetzt das Terminal wieder in den sogenannten "cooked"-Modus. Zusätzlich kann das Terminal auch noch mittel raw()
in den "raw"-Modus versetzt werden. Dieser unterscheidet sich vom "cbreak"-Modus dadurch, dass die Einzelzeichenbearbeitung komplett ausgeschaltet wird, dem Prozess werden alle Zeichen unverarbeitet zur Verfügung gestellt. Im "cbreak"-Modus ließe sich das Programm notfalls auch noch durch die Tastenkombination CRTL-C
beenden. Im "raw"-Modus würde dieses Zeichen keinen Interrupt mehr auslösen, sondern wie jedes normale Zeichen an das Programm weitergeleitet werden.
<<< ncurses-Startseite | ncurses | << Inhaltsverzeichnis |
< Farben und andere Attribute | Fenster > |