next up previous contents
Next: Usuwanie okien i linii Up: Opcje Previous: Atrybuty terminala   Contents

Używanie opcji

Widzieliśmy opcje okien, tryby terminala czas aby opisać ich sposób użycia.

Po pierwsze, w Linuksie powinieneś włączyć klawiaturę numeryczną. Dzięki temu użytkownik będzie mógł skorzystać ze strzałek i części numerycznej klawiatury.


\begin{tscreen}
  \begin{verbatim}keypad(stdscr,TRUE);\end{verbatim}\end{tscreen}

Teraz, mamy dwa główne typu wejścia.

1.
Program chce aby użytkownik nacisnął klawisz, po czym wywoła funkcję zależną od klawisza ( dla przykład coś takiego: "Naciśnij 'q' aby zakończyć", przy czym czekamy na klawisz ).
2.
Program chce sformatowany łańcuch znaków ( np.: katalog, lub adres w bazie danych ).

Dla pierwszego używamy następujących opcji i pętli while.


\begin{tscreen}
  \begin{verbatim}char c;noecho();
  timeout(-1);
  nonl();
  cbre...
  ... case 'q': funkcja_konczaca();
  default: break;
  }
  }\end{verbatim}\end{tscreen}

Program będzie czekał na naciśnięcie jakiegoś klawisza, jeżeli naciśnięto q program wywoła funkcja_konczaca, w innym wypadku program zaczeka na inne wejście.

Wyrażenie switch może zostać rozszerzone dla dowolnego wejścia. Użyj makr KEY_* aby sprawdzić czy naciśnięto specjalne klawisze, np.:


\begin{tscreen}
  \begin{verbatim}KEY_UP KEY_RIGHT KEY_A1 KEY_B2 KEY_C1
  KEY_DOWN KEY_LEFT KEY_A3 KEY_C3\end{verbatim}\end{tscreen}

dla klawiszy kursora. Dla przeglądarki plików pętla mogłaby wyglądać następująco:


\begin{tscreen}
  \begin{verbatim}int loop=TRUE;
  char c;
  enum{UP,DOWN,RIGHT,LEFT...
  ...se 'q':
  case 'Q': loop=FALSE;
  default: break;
  }
  }\end{verbatim}\end{tscreen}

Dla drugiego typu musimy tylko ustawić echo() aby znaki wpisywane przez użytkownika były wypisywane na ekranie. Aby wypisywać znaki na wybranej przez ciebie pozycji skorzystaj z move(...) lub wmove(...).

Lub, możemy otworzyć okno z maską ( inne kolory od tych okna zrobią to ) i poprosić użytkownika o łańcuch:


\begin{tscreen}
  \begin{verbatim}WINDOW *maskwin;
  WINDOW *mainwin;
  char *ptr=(c...
  ...in(maskwin);
  delwin(mainwin);
  endwin();
  free(ptr);\end{verbatim}\end{tscreen}
Zobacz input.c w katalogu z przykładami.


next up previous contents
Next: Usuwanie okien i linii Up: Opcje Previous: Atrybuty terminala   Contents
Paweł Niewiadomski
2000-10-17