Ruby:有没有办法在ruby中捕获按键和它们之间的时间

时间:2012-03-02 00:42:18

标签: ruby timestamp keyevent

我正在尝试编写一个程序,要求用户输入密码,然后测量每次按键输入后的时间。这可能吗?

2 个答案:

答案 0 :(得分:1)

就你可以要求Ruby给你原始的i / o然后在每次读取返回后得到时间戳,是的,你可以。如果你真的需要非常高的精度,ruby本身会增加一些微秒的延迟。

假设这不是问题,请执行诸如获取/ dev / tty的原始文件描述符之类的操作,使用ioctls将其设置为原始模式,并使用read方法获取输入的每个字符。当然,这是凌乱的,但你要求的是很难以非凌乱的方式做。 (它也不能在操作系统之间移植,但它可以在Unix版本之间移植。你无法在Windows上做同样的事情,你需要不同的代码。)

答案 1 :(得分:1)

我认为标准方法是使用库curses。要获得按键,您可以使用getch方法。您应该在Time.now之后立即插入getch,以便在按下该键后立即获取时间。通过使用上一次按键的时间进行减法,您可以获得持续时间。