[Python] Fwd: pynput: help request.

Manlio Perillo manlio.perillo a gmail.com
Mer 25 Lug 2018 13:13:19 CEST


On Wed, Jul 25, 2018 at 10:39 AM Gabriele Battaglia <iz4apu a libero.it> wrote:
>
> Reply to the Manlio Perillo's message, wrote on 24/07/2018 at 22:47:
> [...]
> > 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.
>

Ottimo.
Allora dimentica tutto il resto che ho scritto e posta il codice su un
pastebin o su gist se hai un account github.
Cerca di eliminare tutte le parti che non sono necessarie.

> [...]
>
> > 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;

Come controlli questo array mentre "fai qualcos'altro"?

Comunque non dovrebbe essere difficile emulare questa API, usando pyunput.
Se vedi https://pythonhosted.org/pynput/keyboard.html#monitoring-the-keyboard,
ti basta che nelle callback on_press ed on_release setti i flag
appropriati.
Ciascuna callback ha come parametro il codice del tasto premuto.

Personalmente mi sembra che questo tipo di API sia abbastanza problematica.

> [...]

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

Di nulla.

Ciao
Manlio


Maggiori informazioni sulla lista Python