Ta första tecknet som kommer som värde för variabel i C++? [LÖST]
Ta första tecknet som kommer som värde för variabel i C++? [LÖST]
Har skrivit ett litet program som skickar ut typ: "Tryck 1 för X, 2 för Y, och 3 för Z". Nu lär man ju trycka X och sen enter. Hur gör man så att den tar värdet så fort man släppt tangenten?
Senast redigerad av 1 DrMegahertz, redigerad totalt 31 gånger.
Home sweet ~/ = http://sandnabba.se
-
- Inlägg: 6191
- Blev medlem: 14 jan 2007, 19:31
- OS: Ubuntu
- Utgåva: 22.10 Kinetic Kudu
- Ort: Stockholm
SV: Ta första tecknet som kommer som värde för variabel i C++?
En typisk FAQ, men jag hittar inget svar på den just nu. Jag vill minnas att det inte finns något bra sätt att göra det portabelt, men det finns en del trick som fungerar olika bra på olika system. Möjligtvis kan du kolla på man termios, och ncurses har säkert stöd för det också.
SV: Ta första tecknet som kommer som värde för variabel i C++?
Jag skulle nog ha använt ncurses för att lösa detta problem. Låter ju som du vill göra nån sorts meny, finns ju bra stöd för detta i ncurses också. Sedan är det ganska nice att använda int noecho(void); för att slå av att tecknet du matar in skrivs ut på terminalen.Emil.s skrev: Har skrivit ett litet program som skickar ut typ: "Tryck 1 för X, 2 för Y, och 3 för Z". Nu lär man ju trycka X och sen enter. Hur gör man så att den tar värdet så fort man släppt tangenten?
Kod: Markera allt
#include <curses.h>
int getch(void);
Så kör helt enkelt i cbreak mode, detta är mycket enklare än att köra en terminal i uncooked läge.The getch, wgetch, mvgetch and mvwgetch, routines read a character from the window. In no-delay mode, if no input is waiting, the value ERR is returned.
In delay mode, the program waits until the system passes text through to the program.
Depending on the setting of cbreak, this is after one character (cbreak mode), or after the first newline (nocbreak mode).
In half-delay mode, the program waits until a character is typed or the specified timeout has been reached.
The Black Mountain Scorpion Hoedown Bluegrass Experience Gang
From Left to Right: Wizard on Bicycle, Wizard on Bicycle, Wizard on Bicycle, Wizard on Bicycle, Wizard on Bicycle.
From Left to Right: Wizard on Bicycle, Wizard on Bicycle, Wizard on Bicycle, Wizard on Bicycle, Wizard on Bicycle.
SV: Ta första tecknet som kommer som värde för variabel i C++?
Ah, tackar! Men det finns alltså inget i standardbiblioteken för GCC? Vore en fördel.
Home sweet ~/ = http://sandnabba.se
SV: Ta första tecknet som kommer som värde för variabel i C++?
Både Ja & Nej, men varför uppfinna hjulet igen? ncurses finns installerat på när som alla GNU/Linux datorer.Emil.s skrev: Ah, tackar! Men det finns alltså inget i standardbiblioteken för GCC? Vore en fördel.
Det finns något som heter RAW mode för terminaler, en terminal är i vad man ibland kallar för "cooked mode" den är då buffrad
och man behöver inte bry sig om alla kontroll sekvenser och dylikt. Motsatsen till detta är RAW eller "uncooked mode" då måste
man själv sköta sådant, om du kör terminalen i RAW så kan du läsa tecken för tecken.
Skriv bara man termios i en terminal så får du reda på lite mer om RAW läget för en terminal.
The Black Mountain Scorpion Hoedown Bluegrass Experience Gang
From Left to Right: Wizard on Bicycle, Wizard on Bicycle, Wizard on Bicycle, Wizard on Bicycle, Wizard on Bicycle.
From Left to Right: Wizard on Bicycle, Wizard on Bicycle, Wizard on Bicycle, Wizard on Bicycle, Wizard on Bicycle.
SV: Ta första tecknet som kommer som värde för variabel i C++?
Jo, sant.gasol skrev:Både Ja & Nej, men varför uppfinna hjulet igen? ncurses finns installerat på när som alla GNU/Linux datorer.Emil.s skrev: Ah, tackar! Men det finns alltså inget i standardbiblioteken för GCC? Vore en fördel.
Det finns något som heter RAW mode för terminaler, en terminal är i vad man ibland kallar för "cooked mode" den är då buffrad
och man behöver inte bry sig om alla kontroll sekvenser och dylikt. Motsatsen till detta är RAW eller "uncooked mode" då måste
man själv sköta sådant, om du kör terminalen i RAW så kan du läsa tecken för tecken.
Skriv bara man termios i en terminal så får du reda på lite mer om RAW läget för en terminal.

Ska ta en titt på den där manualen. Tack igen!
Home sweet ~/ = http://sandnabba.se