[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