ncurses i wykrywanie klawiszy

0

Mam problem z funkcją getch() i klawiszami Alt, Ctrl, czy Shift. Problem polega na tym, że jak program dojdzie do getch() i wcisne np Ctrl to nic sie nie dzieje, musze wcisnac cos innego. Jak wcisne Ctrl+cosTam to wtedy pokazuje jakis tam znak typu ^F, czyli okay, ale jak wcisne Ctrl+klawiszStrzalki to pokazuje np D (68 ascii), no i jest problem bo potrzebuje wykrywac sekwencje Ctrl+strzalki i Shift+strzalki, a one zamieniaja sie na zwykle litery ascii ktore notabene tez musze wykrywac (pisze edytor tekstu).

0

strzałki kontrole i tego typu generują dwa kody na arz 0 + jakiś kod
jeśli wciskasz strzalke, to otzrymujesz dwa bajty, po rozpoznaniu, że pierwzsy to 0, wiesz, że drugi był jakims kontrolem albo sttrzalką. i teraz [patrzysz, że np. 68 odpowiada strzałce w dól
czyli strzałka w dól = 0 68, a D = 68

0

Tylko ze te zera na poczatku sa chyba ucinane. Gdy mam zmienna int
ch=getch(), to po nacisnieciu strzalki mam kod ch=261 (w przyblizeniu), a po nacisnieciu Ctrl+strzalka mam ch=68 czyli zwykle D. Czy mam wiec uzyc jakiejs innej funkcji niz getch() (jakiej?).

0

jak ja sie bawiłem, to w takich przypadkach pierwsze wywołanie getch zwracało 0, wtedy wiedziaęłm, że jest jeszcze drugi bajt. moze masz w pętli ala

if(kbhit)
c=getch();

wtedy wczyta ci 0, ale że w buforze coś jeszcze jest, to wczyta i to drugi, i zobaczysz tylko ten drugi bajt.
zrob tak:
if(kbhit())
{
if(!(c=getch()))

0

coś uciąło poprzedni, to jest mniej więcej:

if(kbhit())
if(!(c=getch()))
{
c=getch();
//i tu obsługa klawiszy specjalnych
//o kodzie 0-c
}
else
//tu obsluga zwyklych klawiszy o kodzie c

0

Funkcja kbhit() jest jak rozumiem w bibliotece conio.h, ktorej z kolei nie ma w linuksie. Chodzi o to ze swoj projekt musze zrobic w ncurses.h i oprocz getch() to w zasadzie nie mam pojecia jakie funkcje moga tam jeszcze sluzyc do wykrywania znakow.

0

Ten na gorze to ja, tylko sie zalogowac zapomnialem ;)

0

ja tez mam podobny problem, w ncurses muszę przechwytywać m.in SHIFT i ALT i nie wiem jak tego dokonać, wie ktoś coś na ten temat?

1 użytkowników online, w tym zalogowanych: 0, gości: 1