gpt4 book ai didi

ruby - 有没有办法在 ruby​​ 中获得一次击键?

转载 作者:数据小太阳 更新时间:2023-10-29 08:01:05 24 4
gpt4 key购买 nike

我需要一种方法来检查键盘,查看是否按下了任何一个键,如果是,则获取该键,如果没有,请离开并继续我的工作。我只需要检查大约六把 key 。而且我会经常返回检查(即,此检查在程序的一部分中不断重复 [只要程序正在运行。] 或者,我想我也可以将其实现为中断,即,做剩下的循环并在按下时获取 key 。

因为 get 和 getc 都等待返回,所以它们对我不起作用。我在 Java 和 Windows 中找到了示例,但我在 Mac 上。

最佳答案

要立即读取字符而不给 tty 设备编辑字符和等待返回的机会,您需要这样的东西:

system 'stty cbreak'
$stdout.syswrite 'How now: '
q = $stdin.sysread 1
puts
puts "You typed #{q} it seems."
system 'stty cooked'

要添加对可用字符的检查,将其扩展为执行非阻塞读取...

def read1maybe
return $stdin.read_nonblock 1
rescue Errno::EAGAIN
return ''
end

system 'stty cbreak'
while true
q = read1maybe
break if q.length > 0
puts 'you did not change anything'
sleep 1
end
puts
puts "You typed #{q} it seems."
system 'stty cooked'

有关更详细的内容,请参阅 the standard library curses package.您还可以找到 io/console有用。

关于ruby - 有没有办法在 ruby​​ 中获得一次击键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11871425/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com