Domanda

che sto giocando intorno con fare un semplice gioco basato su terminale con Ruby, e sto attualmente cercando di trovare un modo di leggere l'input dal terminale.

Finora ho usato gets, ma mi piacerebbe avere il gioco reagire immediatamente senza la necessità di un ritorno a capo (quindi non c'è bisogno di premere un tasto, e poi ENTER).

Ho capito che ho bisogno di mettere il terminale in modalità non canonica, e sto assumendo posso farlo chiamando $stdin.ioctl. Il problema è che io non sono sicuro di quali argomenti o bandiere dovrei essere di passaggio a questo, e la documentazione e le ricerche solo portare a informazioni sulla funzione C sottostante.

Qualcuno può dirmi che cosa dovrei chiamando $stdin.ioctl con? Sto usando Terminal.app/tcsh su OSX Leopard.

Edit: Questo è quello che ho finito per usare, grazie alla MarkusQ:

%x{stty -icanon -echo}
key = STDIN.read(1)
È stato utile?

Soluzione

Il tuo problema è al di fuori di rubino.

risposta più semplice:. Avvolgere il vostro IO in% x {stty -raw eco} e {x% stty -raw eco} per cambiare la modalità con stty

Probabilmente si vorrà fare e garantire un gestore di uscita per assicurarsi che la modalità è impostata indietro quando si esce.

- MarkusQ

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top