Zum Inhalt springen

Ncurses: Spezialtasten

Aus Wikibooks


<<< 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 >