On Wed, Feb 27, 2019 at 11:08 AM Gabriele Battaglia <iz4...@libero.it> wrote: > > Gente, so che sono uno stress infinito con sta storia, me ne rendo conto > e mi scuso. > Le mie enormi lacune in programmazione unitamente alle mie esigenze > particolari di utente disabile, mi rendono un po una spina nel fianco di > questo gruppo: grazie per la vostra pazienza e per tutto il vostro aiuto > e supporto. Per fortuna che il traffico qui non è tanto elevato. > > Ribadisco, ed è importante, che chiunque si deve sentire libero di > rispondere solo quando e se ha tempo e voglia, non ho fretta alcuna. >
Io trovo le tue domande interessanti, proprio perchè sei novizio e disabile. > Riepilogando. > Io scrivo piccoli programmini privi di GUI, utili principalmente a me > che usano testo in out e tastiera in input. Ho bisogno di un modulo che > possa importare in tutti i miei scripts che agevoli l'input da tastiera > facendo sostanzialmente 2 cose: > 1. che non blocchi tutto mentre l'utente scrive e, 2. che non debba > attendere la pressione di invio. > Tutto deve funzionare sotto Windows e sotto Unix BSD e tutto deve andare > in modalità terminale, quindi niente grafica, niente pygame o altre > librerie che cambiano la modalità di visualizzazione della console. > > La miglior approssimazione di ciò che mi serve è questa: > > https://www.dropbox.com/s/rzd3wwrsmyx587p/key14.py?dl=0 > Non hai problemi con il software di assistenza quando imposti la modalità non canonica su Unix? Inoltre un consiglio: per entrare ed uscire dalla modalità non canonica, usa un context: https://docs.python.org/3/reference/datamodel.html#with-statement-context-managers Ti basta definire il metodo __enter__ che semplicemente restituisce self, ed il metodo exit che resetta il terminale. In questo modo puoi fare: with KBHit() as kb: ... > Funziona bene sotto Unix, perciò guardate solo la parte che riguarda > Windows che ha dei problemi: Ironicamente, su Windows è molto più facile fare quello che vuoi, perchè non ha i problemi che ci sono su Unix. I terminali su Unix sono un incubo, per non parlare dei problemi sei vuoi impostare la modalità non bloccante su un file: https://cr.yp.to/unix/nonblock.html. Per impostare la modalità non canonica: https://docs.microsoft.com/en-us/windows/console/setconsolemode Per vedere se c'è input disponibile (ma non credo ti serva): https://docs.microsoft.com/en-us/windows/console/peekconsoleinput Per leggere in Unicode: https://docs.microsoft.com/en-us/windows/console/readconsole Per attendere la pressione di un tasto, con timeout (simile a select): https://docs.microsoft.com/en-us/windows/desktop/api/synchapi/nf-synchapi-waitforsingleobject > innanzitutto va a capo ogni volta che > stampa un carattere, se imposto end="" in print(), non stampa più nulla > finchè non premo invio e da ultimo crasha quando premo un carattere non > alfanumerico, magari questo si sistema facilmente, non ho approfondito. > Non sono sicuro di capire il primo problema. Perchè devi premere [INVIO] per forzare print a scrivere sul terminale? Riguardo il crash (tecnicamente non è un trash, ma una eccezione non gestita), dovresti allegare il traceback completo. > [...] Ciao Manlio Perillo _______________________________________________ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python