Рубин: Есть ли способ захватить нажатия клавиш и время между ними в рубине - PullRequest
0 голосов
/ 02 марта 2012

Я пытаюсь написать программу, которая просит пользователя ввести пароль, а затем измеряет время между каждым нажатием клавиши после его ввода.Возможно ли это?

Ответы [ 2 ]

1 голос
/ 02 марта 2012

Я думаю, что стандартный способ - использовать библиотеку curses. Чтобы получить нажатие клавиши, вы можете использовать метод getch. Вы должны вставить Time.now сразу после getch, чтобы получить время сразу после нажатия клавиши. Делая вычитание со временем предыдущего нажатия клавиши, вы можете получить длительность.

1 голос
/ 02 марта 2012

Поскольку вы можете попросить Ruby дать вам необработанный ввод-вывод, а затем получить отметку времени после каждого чтения, да, вы можете.Если вам действительно нужна очень высокая точность, сам ruby ​​добавит несколько микросекунд задержки.

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

...