制限時間内のキー入力検査
Posted feedbacks - Emacs Lisp
Emacs のミニバッファから。
1 2 3 4 5 6 7 | (defun input-checker (n s)
(interactive "nTime(second): \nsString: ")
(let ((c (read-char (concat "input(" s ")=>"))))
(push c unread-command-events))
(with-timeout (n (message "TIME OUT"))
(let ((input (read-string (concat "input(" s ")=>"))))
(message (if (string= input s) "OK" "NG")))))
|


raynstard
#3420()
Rating0/2=0.00
関数 InputCheckerは、以下の仕様を満たしてください。
たとえば、「InputCheker(5, "ABCDEF")」と指定した場合、 出力例はこんな感じです。
1. input(ABCDEF) =>と出力して入力待ちをし、ユーザーが「ABCDEF<ENTER>」を入力したとき、 入力開始から5秒以内ならば「OK」、5秒をこえていれば「TIME OUT」を出力します。 このとき、ユーザーがキーを押下しなければ1. を出力してから たとえ10秒たっていても「TIME OUT」にはならないので注意してください。 時間計測はあくまでユーザーが入力を開始してからです。
このお題はraynstardさんの投稿です。ご協力ありがとうございます。
[ reply ]