getch()

David Pasek pasek at idc.cz
Thu Aug 17 13:47:30 CEST 2000


Diky za tipy.

Cejka Rudolf wrote:
> 
> Tomu moc nerozumim, protoze "#define getch() wgetch(stdscr)".
> Neni mi tedy jasne, jak se muze getch() a wgetch() svym chovanim
> lisit. Nemate nejaky kratky ukazkovy priklad?

Zdrojak podivneho chovani getch() posilam i kdyz je to vyresene jinym
zpusobem (viz nize). Takhle mi to ve 2.2.6 funguje:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>
#include <ncurses.h>
#include <unistd.h>
#include <errno.h>
#include <sys/time.h>
#include <time.h>

main(int argc, char *argv[]) {
 WINDOW *w;
 int key;

 initscr();
 start_color();
 cbreak();
 noecho();
 nonl();
 keypad(stdscr,TRUE);

 w=newwin(20,79,0,0);
 box(w,0,0);
 mvwprintw(w,0,30," text ");
 mvwprintw(w,1,1,"");
 wrefresh(w);
 sleep(5); 
  
 do {
  key=getch();
  wprintw(w,"%d\n",key);
 } while (key!=13);
  
 endwin();

 exit(0);
}

pro 4.0. musim pouzit kombinaci prikazu { keypad(win,true); wgetch(win)
} (viz jeste nize)
 
> Ve FreeBSD 2.2.6 byly dve odlisne knihovny: curses (curses.h / -lcurses)
> a ncurses (ncurses.h / -lncurses). Ve FreeBSD 4.0 je curses uz jen odkaz
> na ncurses. Skutecne ta aplikace pouzivala ncurses i na FreeBSD 2.2.6?

Aha, to jsem nevedel. Nicmene jsem to jeste ted odzkousel a ve 2.2.6
funguje aplikace po prekladu v obou variantach (-lcurses i -lncurses)
 
> getch()/wgetch() kody pro funkcni klavesy vraci, ale je potreba
> zavolat keypad(win, TRUE) a mit definici v terminalovem popisu.

Todle mi pomohlo. Nebudu pouzivat getch() ale wgetch(okno)

Vzdycky jsem totoz psal na zacatku aplikace 
keypad(stdscr,TRUE);
a to pak fungovalo s getch() ve vsech oknech (otestovano Linux 6.0.,
FreeBSD 2.6.). Ne vsak na FreeBSD 4.0. Na verzi FreeBSD 3.x jsem to
nekompiloval takze nevim. Spis to asi bude verzi ncurses, ale nevim.

Ted jsem teda udelal keypad(mojeokno, TRUE) s pouzitim wgetch(mojeokno)
a vse funguje i ve 4.0.

Takhle to bude fungovat snad vsude :-)
Ale stejne je to s tim getch() divny :-(

Diky.
--
David Pasek
Email: pasek at idc.cz WWW: http://www.idc.cz ICQ: 76039994



More information about the Users-l mailing list