getch

Petr Prazak prazak na grisoft.cz
Středa Prosinec 27 10:33:53 CET 2000


Dobry den,

23.12.2000, Martin Žižka napsal k `getch':

> Potreboval bych ve skriptu pockat a vyhodnotit stisknutou klavesu. Problem
> je v tom, ze jsem neprisel na to, jak to provest. V BASHi 2.neco umi READ
> cist jenom jeden znak, tak je to mozne s urcitymi obtizemi take resit,
> jenomze ja bych to potreboval, aby to behalo i pod starsim BASHem. Zkousel
> jsem najit i nejakou C funkci, ktera by tohle resila, ze bych si napsal
> nejaky externi programek, ale getchar() nacte cely radek az do stisku Enter
> a vrati prvni znak = nepouzitelne a jedina dalsi funkce, kterou jsem nasel
> je getch z knihovny ncurses, jenomze to aby fungovalo se musi
> nainicializovat (initscr) a soucasti te inicializace je vymaz obrazovky =
> nepouzitelne, v dobe cekani na klavesu musi byt na obrazovce informace...
> Jak tohle resit?

Pred ctenim klaves musite prepnout vstupni rezim terminalu do primeho (raw)
modu, jinak dojde k vyse popsanemu bufferovani (cooked mode). V prikazovem
radku to jde pomoci prikazu stty(1), urcite na to existuje i knihovni funkce.

Doporucuji si precist nejakou literaturu. Pomerne dobre toto bylo popsano v
knize Brodsky, Skocovsky: Operacni system Unix a jazyk C (jestli se nepletu,
pisu to z hlavy), ktera ale vysla uz davno. Zkuste ji najit v nejake knihovne.


-- 
S pozdravem,
  Petr Prazak

-------------------------------
developer @ GRISOFT(c) SOFTWARE
mailto:prazak na grisoft.cz
$ whois PP2717
ICQ# 10467674
-------------------------------




Další informace o konferenci Linux