Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Samsung Galaxy Z Fold8 Ultra: il pieghevole più famoso diventa quasi perfetto
Recensione Samsung Galaxy Z Fold8 Ultra: il pieghevole più famoso diventa quasi perfetto
Samsung rinnova la serie pieghevole di punta con Galaxy Z Fold8 Ultra: pannello interno da 8 pollici quasi senza piega, cerniera Flex Titanium, Snapdragon 8 Elite Gen 5 for Galaxy e batteria finalmente da 5.000 mAh. Prezzo italiano da 2.299 a 2.899 euro. Tra colorimetro, benchmark reali e giorni di uso quotidiano, ecco dove questo pieghevole convince e dove il nome Ultra fatica ancora a trovare piena giustificazione
Insta360 X6: Dolby Vision, 8K e montaggio "Zero Editing"
Insta360 X6: Dolby Vision, 8K e montaggio "Zero Editing"
La nuova Insta360 X6 introduce sensori Sony da 1/1.1" e un SoC Triple AI a 4nm. Analizziamo le riprese 8K, il primo Dolby Vision nativo a 10-bit nel settore sferico e l'innovativo flusso di lavoro diretto sulla futura versione 22 di DaVinci Resolve.
Due settimane con Dacia Spring 2026: novità, consumi, autonomia reale e test bagagli
Due settimane con Dacia Spring 2026: novità, consumi, autonomia reale e test bagagli
Dopo due settimane trascorse al volante della Dacia Spring 2026 possiamo raccontarvi tutto, dalle novità di motore e batteria, fino ai consumi in tutti le situazioni, compresa l'autonomia reale ad alta velocità
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 28-04-2004, 15:32   #1
NetTitus
Senior Member
 
Iscritto dal: Feb 2004
Messaggi: 443
Acquisizione caratteri da tastiera sotto linux

Salve a tutti!!

Ho un problema nell'acquisizione singola dei tasti premuti da tastiera con il C++ (G++ in ambiente linux).

Mi spiego, in Windows esiste una funzione fgetch() che "legge" un
carattere alla volta senza aspettare che premi invio.

In linux non esiste (non sono riuscito a trovare) una funzione simile che faccia al mio caso (infatti cin inserisce nello stream fino a quando premo invio ).

Cosa posso fare ??


Saluti
NetTitus è offline   Rispondi citando il messaggio o parte di esso
Old 28-04-2004, 15:36   #2
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
stdin è line-buffered, devi renderla char-buffered (ed opzionalmente non bloccante). v. man termios, in particolare tcsetattr.
Ho postato del codice su questo argomento diverso tempo fa; se non riesci a trovarlo ti do una mano.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 28-04-2004, 15:43   #3
NetTitus
Senior Member
 
Iscritto dal: Feb 2004
Messaggi: 443
Grazie per l'aiuto che mi stai dando .

Ho trovato questo a riguardo

tcsetattr() sets the parameters associated with the termi-
nal (unless support is required from the underlying hard-
ware that is not available) from the termios structure
referred to by termios_p. optional_actions specifies when
the changes take effect:

Ma non ho capito bene cosa devo fare (mi sembra un po' complesso)

Saluti
NetTitus è offline   Rispondi citando il messaggio o parte di esso
Old 28-04-2004, 15:53   #4
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Codice:
struct termios new_tty;
struct termios old_tty;
tcgetattr(fileno(stdin), &old_tty);
new_tty = old_tty;
new_tty.c_lflag &= ~ICANON;
// Decommenta questa riga se vuoi togliere l'eco dei caratteri
// new_tty.c_lflag &= ~ECHO;
new_tty.c_cc[VMIN] = 1;
new_tty.c_cc[VTIME] = 0;
tcsetattr(fileno(stdin), TCSAFLUSH, &new_tty);
Ora stdin legge un carattere alla volta, ma è sempre bloccante. Se vuoi vedere quanti caratteri ci sono da leggere, esegui
Codice:
int cnt;
ioctl(fileno(stdin), FIONREAD, &cnt);
Per leggere un carattere, puoi usare una normale read (ricorda che se non ci sono caratteri in ingresso, è bloccante):
Codice:
char ch;
read(fileno(stdin), &ch, 1);
Ricorda ti ripristinare old_tty prima di terminare il programma.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 28-04-2004, 16:43   #5
NetTitus
Senior Member
 
Iscritto dal: Feb 2004
Messaggi: 443
Grazie mille!!

Pero' ho un'altro problema : l'attesa di un carattere.

Es.
Pensa se devi creare un flipper che comandicon la tastiera in Linux se e' bloccante non riesci e gestire altri eventi che devi gestire continuamente (pensa al movimento della pallina) .

Esiste un modo in linux per gestire cio' ??

Come si puo' creare un'interfaccia ad eventi se c'e' una funzione bloccante ??

Saluti !
NetTitus è offline   Rispondi citando il messaggio o parte di esso
Old 28-04-2004, 16:54   #6
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
http://forum.hwupgrade.it/showthread...ighlight=getch

Scommetto che eri un utente Borland
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 28-04-2004, 17:03   #7
NetTitus
Senior Member
 
Iscritto dal: Feb 2004
Messaggi: 443
Esatto !!

Eh la borland fa funzioni veramente efficenti e semplici per il programmatore.

Avresti dell'altro materiale a riguardo ??

Grazie mille per l'aiuto che mi hai dato finora.

Mi piacerebbe specializzarmi di piu' con il C++ in linux con compilatori freeware potenti.

Saluti!
NetTitus è offline   Rispondi citando il messaggio o parte di esso
Old 28-04-2004, 17:13   #8
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Mi sembra che ci sia già abbastanza materiale...hai guardato nei link ?
Codice:
   #include <curses.h>
   
   int main(){
     WINDOW *w;
     int c;
   
     w = initscr();
   
     cbreak();          /* no line buffering */
     nodelay(w, TRUE);  /* make getch call non blocking */
   
     while(1){
       if((c = getch()) != ERR) break;   /* if(kbhit()) break; */
     }
   
     endwin();
     return 0;
   }
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 28-04-2004, 19:32   #9
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da NetTitus
Pero' ho un'altro problema : l'attesa di un carattere.

Es.
Pensa se devi creare un flipper che comandicon la tastiera in Linux se e' bloccante non riesci e gestire altri eventi che devi gestire continuamente (pensa al movimento della pallina) .

Esiste un modo in linux per gestire cio' ??
Secondo te la ioctl che te la ho postata a fare?
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione Samsung Galaxy Z Fold8 Ultra: il pieghevole più famoso diventa quasi perfetto Recensione Samsung Galaxy Z Fold8 Ultra: il pieg...
Insta360 X6: Dolby Vision, 8K e montaggio "Zero Editing" Insta360 X6: Dolby Vision, 8K e montaggio "...
Due settimane con Dacia Spring 2026: novità, consumi, autonomia reale e test bagagli Due settimane con Dacia Spring 2026: novit&agrav...
AORUS GeForce RTX 5080 INFINITY WOOD 16G: una scheda video diversa dalle altre AORUS GeForce RTX 5080 INFINITY WOOD 16G: una sc...
Hyundai Ioniq 9: dopo due settimane di test non avremmo voluto restituirla Hyundai Ioniq 9: dopo due settimane di test non ...
Vogliono costruire un monumento per Elon...
Ring Intercom Audio crolla a 39,99€ su A...
La Francia blocca il divieto dei social ...
Trump citato in giudizio: chiesto lo sto...
PEC obbligatoria per revisione e passagg...
Il ripulitore di watermark Claude da 4.5...
Xiaomi 17 Ultra scambia il Sole per la L...
È arrivata la migliore e-bike Eng...
Apple Mac mini M4, ecco perché conviene ...
Robot aspirapolvere in offerta su Amazon...
Il nuovo pick-up elettrico di Ford &egra...
Google Pixel 11 arriva su Amazon: preord...
Mega sconti su attrezzi a batteria e rob...
Google Search dà per morto Sam Al...
Il noleggio delle GPU NVIDIA si quota in...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 07:11.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v