我正在尝试编写一个程序,要求用户输入密码,然后测量每次按键输入后的时间。这可能吗?
答案 0 :(得分:1)
就你可以要求Ruby给你原始的i / o然后在每次读取返回后得到时间戳,是的,你可以。如果你真的需要非常高的精度,ruby本身会增加一些微秒的延迟。
假设这不是问题,请执行诸如获取/ dev / tty的原始文件描述符之类的操作,使用ioctls将其设置为原始模式,并使用read方法获取输入的每个字符。当然,这是凌乱的,但你要求的是很难以非凌乱的方式做。 (它也不能在操作系统之间移植,但它可以在Unix版本之间移植。你无法在Windows上做同样的事情,你需要不同的代码。)
答案 1 :(得分:1)
我认为标准方法是使用库curses
。要获得按键,您可以使用getch
方法。您应该在Time.now
之后立即插入getch
,以便在按下该键后立即获取时间。通过使用上一次按键的时间进行减法,您可以获得持续时间。