Я играю с созданием простой терминальной игры с Ruby, и сейчас я пытаюсь найти способ чтения ввода с терминала.Настройка неканонического режима на stdin с Ruby
До сих пор я использовал gets
, но я бы хотел, чтобы игра мгновенно реагировала, не требуя новой строки (поэтому вам не нужно нажимать клавишу, затем введите).
Я понял, что мне нужно поставить терминал в неканоническом режиме, и я предполагаю, что могу это сделать, позвонив по телефону $stdin.ioctl
. Проблема в том, что я не уверен, какие аргументы или флаги я должен передать этому, а документация и запросы просто приводят к информации о базовой функции C.
Может ли кто-нибудь сказать мне, что я должен назвать $stdin.ioctl
? Я использую Terminal.app/tcsh на OSX Leopard.
Edit: Это то, что я закончил с использованием, благодаря MarkusQ:
%x{stty -icanon -echo}
key = STDIN.read(1)
Вы получили меня на правильном пути со штилевой информацией. Посмотрел и нашел, что мне нужно. Благодаря! – Luke