Reply to the Manlio Perillo's message, wrote on 24/07/2018 at 22:47:
On Tue, Jul 24, 2018 at 12:03 PM Gabriele Battaglia <iz4...@libero.it> wrote:

Ciao.
Avevo chiesto, ad una comunità online di Python, un aiuto per capirci
qualcosa di questa libreria, avrei voluto vedere un esempio di
funzionamento.
Posto qui il mio messaggio originale, se qualcuno ha uno script
funzionante che la include, potrebbe inviarmelo, per favore?


pynput ha delle limitazioni abbastanza severe:
https://pynput.readthedocs.io/en/latest/limitations.html

Sono accettabili per te?

Onestamente, Manlio, non so risponderti: ho letto la pagina linkata qui sopra ma non posseggo le competenze sufficienti per comprendere a fondo ciò che riporta. Azzarderei un "Non mi sembra che siano limitazioni importanti per me", ma chiaramente non ne sono affatto certo. Tuttavia, potrebbe essere un problema secondario. Potrei provare ad usare la libreria quando e se riuscirò a capire come diavolo funziona, e poi vediamo l'eventuale perchè non funziona.

[...]

Se il tuo script gira su terminale, esiste un implementazione senza
queste limitazioni.
Che significa? Un'implementazione di che, di Pynput stessa o del terminale? Sì, per problemi di accessibilità ed anche per mia personale incompetenza, tutti gli strumenti che realizzo in Python, girano sulla console di Windows e sul Terminale di MacOS. Niente grafica perciò, niente GUI di nessun tipo, soltanto scritte su terminale.


Comunque se sei su Windows puoi usare pyunput o msvcrt.getwche per
implementare una bozza, e da questa chiedere consigli più dettagliati.
Ce l'ho già. Mi ero scritto un programma che funziona perfettamente e fa ciò che voglio. Funziona stupendamente sia sotto Win che sotto MacOS però... funziona solo per Python2 e, per un motivo che non sono in grado di capire, non riesco ASSOLUTAMENTE a migrarlo sul 3. Correggo il codice a livello formale, ma qualcosa smette di funzionare e non trovo una soluzione. Se vuoi/volete... lo posto qui in lista nel caso qualcuno avesse voglia di buttarci un occhio... Non è lungo e il codice non è complesso.


Da quello che leggo in
https://github.com/python/cpython/blob/master/Lib/getpass.py#L97,
getwch(e) ha il problema che non processa l'input e quindi devi
gestire il KeyboardInterrupt da te.  Ma usando SetConsoleMode
(https://docs.microsoft.com/en-us/windows/console/setconsolemode)
dovrebbe essere possibile implementare la lettura da console secondo
le tue necessità semplicemente resettando *solo* il flag
ENABLE_LINE_INPUT.
Devo chiedere venia ancora una volta, mostrando tutta la mia ignoranza: sono ad un livello più niubbo di quanto credi. Non mi pare d'aver mai giocato con i flags del prompt di DOS, ne con quelli del terminale su MacOS: ho sempre lasciato tutto di default direi e lo script che mi va perfettamente sotto Python2 e che ho chiamato key.py, per l'appunto, va... Senza che ci sia stata necessità di modificare flags.

[...]

Che cosa vuoi fare? Intercettare la pressione dei tasti da tastiera a
basso livello, o semplicemente leggere un carattere alla volta dalla
tastiera senza che l'utente premi INVIO?
Principalmente la seconda che dici. In pratica mi serve che determinate azioni partano quando io premo dei tasti, senza aspettare l'invio, che toglie immediatezza alla cosa. Questo è importante quando scrivo dei piccoli giochi, o quando la pressione dei tasti serve a compiere azioni che si ripetono spesso. Sarebbe bello poter fare quello che permette il modulo keyboard di pygame che provvede un array nel quale, per ogni tasto, ritorna un flag booleano quando il tasto viene premuto ed un altro quando viene rilasciato; questo sarebbe proprio fiko per i miei scopi, ma il modulo pygame non posso usarlo perchè, per funzionare, richiede una modalità grafica attiva, che inibisce il modo console, quindi niente più print() sulla console. A me comunque, basterebbe una funzione che mi ritorni il codice ASCII del carattere quando viene premuto e null quando non è premuto niente. Io la interrogherei ogni tot millisecondi e nel frattempo il mio programma si farebbe i fatti propri, senza interrompersi come con input()

Tutto qui. Grazie infinite per il tuo interesse, per le ricerche che hai fatto, per il tuo tempo e la tua gentilezza.

GabryB.
_______________________________________________
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python

Reply via email to