[Python] Non-Blocking input multiplatform. Era: Re: Fwd: pynput: help request.

Gabriele Battaglia iz4apu a libero.it
Gio 2 Ago 2018 15:44:18 CEST


Ciao Manlio e tutti.

Grazie per i tuoi suggerimenti Manlio.
Sto applicando le modifiche che mi dicevi, affinché il mio script funzioni.
Qui in ufficio posso provarlo sotto Win, a casa poi, proverò anche sotto 
Mac, dove mi da i problemi maggiori.

Nel tuo precedente messaggio mi chiedevi perchè avessi settato il 
terminale in modalità non_blocking, con le seguenti istruzioni:

***
     fd = sys.stdin.fileno()
     oldterm = termios.tcgetattr(fd)
     newattr = termios.tcgetattr(fd)
     newattr[3] = newattr[3] & ~termios.ICANON & ~termios.ECHO
     termios.tcsetattr(fd, termios.TCSANOW, newattr)
     oldflags = fcntl.fcntl(fd, fcntl.F_GETFL)
     fcntl.fcntl(fd, fcntl.F_SETFL, oldflags | os.O_NONBLOCK)
***

E mi indicavi quali righe di codice modificare per impostare 
diversamente il terminale, così:

***
oldflags = fcntl.fcntl(fd, fcntl.F_GETFL)
fcntl.fcntl(fd, fcntl.F_SETFL, oldflags | os.O_NONBLOCK)

e

fcntl.fcntl(fd, fcntl.F_SETFL, oldflags)
***

Purtroppo la mia conoscenza delle istruzioni e dei loro metodi, è 
praticamente nulla. Ho copiato questo codice da un post su 
StackOverflow, ma non lo comprendo.

Saresti così gentile da dirmi in che modo, devo cambiare i parametri 
passati a queste istruzioni?

Per il resto, ho semplificato il codice come mi suggerivi tu definendo 
prima le funzioni, e poi assegnandole a key, in base alla rilevazione 
del sistema operativo da parte di sys.platform.
Il modulo è ora così:

https://www.dropbox.com/s/mvcrhyglml2tg1d/key3.py?dl=0

Grazie per il tuo aiuto.... Ovviamente non c'è fretta e siamo un po 
tutti, almeno spero... in vacanza, perciò rispondimi quando e se ne hai 
tempo e voglia.

Grazie infinite.

Gabriele.


Maggiori informazioni sulla lista Python