Wczytanie klawiszy c++

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
mozg07
Sędziwy Jeż
Sędziwy Jeż
Posty: 36
Rejestracja: 27 wrz 2007, 13:32
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Wczytanie klawiszy c++

Post autor: mozg07 »

Mam napisany pewien program (konsolowy). Chciałbym, aby był wygodniejszy w użytku.
Mam na początku menu. I do wyboru kilka opcji (na zasadzie: 1- opcja 1, 2- opcja 2, itd).
W tym momencie muszę wcisnąć odpowiednią cyfrę (bądź literę) i zatwierdzić enterem.
Czy da się jakoś ominąć ten enter. Jest on chwilami bardzo uciążliwy...

Dużo w google szukałem i nie znalazłem odpowiedzi, która by u mnie działała. Ponoć w ncurses.h jest getch(), ale u mnie to cały czas zwraca -1. :(
Awatar użytkownika
youlleck
Sędziwy Jeż
Sędziwy Jeż
Posty: 62
Rejestracja: 01 lut 2008, 00:19
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Openbox
Architektura: x86_64
Kontakt:

Odp: Wczytanie klawiszy c++

Post autor: youlleck »

getch() jest w conio.h a nie w ncurses.

Kod: Zaznacz cały

char a;
a=getch();
wszystko powinno dzialac.
Problem rozwiazany? Dodaj [SOLVED] do tytulu watku!

Best4Linux.NET - sprawdz czy twoj sprzet zadziala pod Linuksem!
fox_masters
Piegowaty Guziec
Piegowaty Guziec
Posty: 2
Rejestracja: 28 sie 2008, 14:55
Płeć: Mężczyzna
Wersja Ubuntu: 8.04

Odp: Wczytanie klawiszy c++

Post autor: fox_masters »

youlleck pisze:getch() jest w conio.h a nie w ncurses.
youlleck nie wprowadzaj forumowiczów w błąd. Mówimy o programowaniu pod linuxem, a nagłówka conio.h jak pewnie wiesz (lub nie):-) pod tym systemem nie uświadczysz.
Awatar użytkownika
youlleck
Sędziwy Jeż
Sędziwy Jeż
Posty: 62
Rejestracja: 01 lut 2008, 00:19
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Openbox
Architektura: x86_64
Kontakt:

Odp: Wczytanie klawiszy c++

Post autor: youlleck »

ajjjj wybaczcie, moj blad :)
Problem rozwiazany? Dodaj [SOLVED] do tytulu watku!

Best4Linux.NET - sprawdz czy twoj sprzet zadziala pod Linuksem!
mozg07
Sędziwy Jeż
Sędziwy Jeż
Posty: 36
Rejestracja: 27 wrz 2007, 13:32
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Odp: Wczytanie klawiszy c++

Post autor: mozg07 »

youlleck pisze:getch() jest w conio.h a nie w ncurses.

Kod: Zaznacz cały

char a;
a=getch();
wszystko powinno dzialac.
Tak, to wiem. Ale w ncurses również jest, tylko tak jakoś nie chce mi działać tak jakbym chciał. Pod linuxem nie ma conio, o nim również wiem (pod windowsem też trochę programowałem- to mi działało tam).
shargath
Piegowaty Guziec
Piegowaty Guziec
Posty: 9
Rejestracja: 26 lis 2007, 18:57
Płeć: Mężczyzna
Wersja Ubuntu: 8.04
Środowisko graficzne: GNOME
Kontakt:

Odp: Wczytanie klawiszy c++

Post autor: shargath »

O ile dobrze pamiętam można dać

Kod: Zaznacz cały

#include <iostream>
a potem używać

Kod: Zaznacz cały

std::cin >> a;
mam nadzieję że pamięć mnie nie myli.
Pozdrawiam

Jednak trochę się myliłem bo można więcej niż jeden znak wprowadzić oczywiście więc zamiast tego można

Kod: Zaznacz cały

cin.get()
Awatar użytkownika
Struchu
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 116
Rejestracja: 23 mar 2008, 19:58
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME
Architektura: x86

Odp: Wczytanie klawiszy c++

Post autor: Struchu »

Z tym że to nadal będzie wymagało zatwierdzania enterem. Mózgu: skorzystaj z funkcji raw() (która przestawia terminal w tzw. tryb surowy - znaki wprowadzane z klawiatury nie będą buforowane aż do otrzymania znaku nowej linii, tylko od razu będą przesyłane do Twojego procesu - oczywiście jest to funkcja z ncurses, żeby nie było ;) ).
Ma zielone, kocie oczy...
Awatar użytkownika
pixelenter
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 194
Rejestracja: 31 gru 2009, 15:41
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: GNOME
Architektura: x86_64

Odp: Wczytanie klawiszy c++

Post autor: pixelenter »

mozg07 pisze:Tak, to wiem. Ale w ncurses również jest, tylko tak jakoś nie chce mi działać tak jakbym chciał. Pod linuxem nie ma conio, o nim również wiem (pod windowsem też trochę programowałem- to mi działało tam).
A zrobiłeś na początku initscr? Jak nie to gdziś przed funkcją powinno być initscr() a po endwin(). Jeżeli już piszesz w ncurses to najlepiej zrób całe w ncurses(Może wyjść ci naprawdę szpanerski interface al'a np. mc). Jeżeli nie ncurses to pozostaje stare dobre

Kod: Zaznacz cały

std::cin.get(); 
zwracające znak. Jednak jak już i tak ma być menu to polecam ncurses ;)
PS.
Sory za odkop. Google :x
http://uwolnijlaptopa.pl
http://counter.li.org/cgi-bin/certificate.cgi/528644
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 2 gości