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


Poltronic