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

Rispondere a