Поскольку вы можете попросить Ruby дать вам необработанный ввод-вывод, а затем получить отметку времени после каждого чтения, да, вы можете.Если вам действительно нужна очень высокая точность, сам ruby добавит несколько микросекунд задержки.
Предполагая, что это не проблема, сделайте что-то вроде получения необработанного дескриптора файла для / dev / tty, используйте ioctls для его установкидля необработанного режима и используйте метод read, чтобы получить каждый символ по мере его ввода.Это, конечно, грязно, но то, что вы просите, трудно сделать беспорядочным образом.(Он также не переносим между операционными системами, но переносим для всех версий Unix. Вы не сможете делать точно то же самое в Windows, для этого вам потребуется другой код.)