Reply to the Manlio Perillo's message, wrote on 18/02/2019 at 11:38:
On Sun, Feb 17, 2019 at 10:25 PM Gabriele Battaglia <iz4...@libero.it> wrote:
[...]
Ricordo che già tempo fa qualcuno ti aveva consigliato:
https://pypi.org/project/pynput/
Funziona con un modello a callback, che potrebbe o no essere il
modello migliore per il tuo caso.
C'è un esempio nella pagina che ho riportato, nella sezione
Monitoring the keyboard.
Ciao Manlio.
Ho letto la guida qui: https://pynput.readthedocs.io/en/latest/keyboard.html
L’avevo già letta tempo fa quando, come dici giustamente, questo modulo mi fu
consigliato. Ma ora come allora, continuo a non capirlo. E’ troppo complesso
per me, mi sfugge proprio il come funziona.
Innanzitutto, cos’è un modello a callback?
https://it.wikipedia.org/wiki/Callback
Ciao Manlio. Ok, ora è più chiaro.
Io ho capito che va lanciato un listener della tastiera che apre un suo thread
e si mette in ascolto. Ma poi, come leggo i tasti premuti?
Come faccio a dire al listner, che in un determinato punto del programma mi
aspetto che l’utente prema le 4 frecce, e, qualche riga più avanti, una “s” o
una “n”?
Mi servirebbe un esempio pratico, poter scambiare qualche mail con qualcuno che
lo usa.
Se il tuo programma è ancora quello che avevi postato su Dropbox tempo
fa, allora ti consiglio di usare la libreria curses:
https://docs.python.org/3.7/howto/curses.html.
Purtroppo quel tutorial è obsoleto, dato che l' implementazioni
alternativa UniCurses sembra non sia più sviluppata.
Ignora anche il consiglio di usare il modulo Console.
Usa invece https://pypi.org/project/windows-curses, se sei su Windows.
Questa sembra sia aggiornata.
C'è una richiesta aperta di supportare curses anche su Windows nella
libreria standard, ma è ferma:
https://bugs.python.org/issue2889
Quello che ti serve di curses è:
https://docs.python.org/3.7/howto/curses.html#user-input
In particolare le funzioni getkey e getstr.
Ecco un piccolo esempio:
https://pastebin.com/b0B0LbfC
getkey la puoi implementare usando pyunput, ma la seconda è molto più complessa.
Fai attenzione che curses **altera** come il terminale funziona
normalmente, quindi potresti vedere cose strane.
Francamente, sul mio sistema Linux non mi sembra che curses si
comporti come dichiarato nella documentazione...
Infatti, molto strane.
Dopo l'istruzione initsch() con cui si inizializza l'area di schermo del
terminale, tutta la tecnologia di supporto (lettore di schermo della
console) impazzisce.
Win curses, almeno in ambiente Windows, mi risulta completamente
inutilizzabile, ci avevo già provato tempo fa. Sarebbe ottimo se potessi
importare solo quelle 2 funzioni per gli eventi di tastiera lasciando
stare tutto il resto, ma se non chiamo l'inizializzazione initsch(), non
posso usarne i moduli. Inoltre, avevo notato che, una volta
inizializzata, in caso di uscita a per un errore, il terminale diventa
ingestibile, come se rimanesse a metà fra la sua modalità normale e
quella di wincurses; probabilmente alcuni thread non escono con l'errore
e continuano a fare casino.
Inutile rivolgersi a librerie così complesse che fanno così tante cose.
A me serve qualcosa di piccolo e specifico, solo per la tastiera.
Grazie per gli altri link, li ho letti tutti.
Gabriele.
_______________________________________________
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python