我是emacs lisp的新手。我想知道在输入缓冲区时是否可以在elisp中监听键盘事件。我读到了read-key-sequence / read-key-sequence-vector / read-event / read-key的文档,结果这些命令阻止了缓冲输入流,因为在调用时,后续的键击不会显示在缓冲区。例如。如果我输入“go”进入当前缓冲区然后调用read-key-sequence然后键入“o”,则第二个“o”被视为命令序列而不是缓冲区内容文本的字符。
虽然我可能找到了解决此问题的方法,但是要以编程方式将键击插入缓冲区:
(catch 'break
(while
(progn
(let
((strokes (read-key-sequence-vector nil)))
(if
(equal strokes [27 27 27])
(throw 'break nil)
(insert strokes)))
t)))
我更愿意看看是否有更好的方法来实现这一目标。如果elisp可以像javascript一样执行事件驱动的东西,这将是很好的
someObject.addEventListener('keydown', function (e) { ... })
这当然是我唯一的希望。 :) 谢谢。