Emacs:如何绑定两次点击的密钥?

Emacs:如何绑定两次点击的密钥?,emacs,Emacs,我正在使用Emacs(23)并将C-。组合键绑定到一个函数: (global-set-key (kbd "C-.") 'myfunction) 可以快速“双击”一把钥匙吗?例如,我想在快速键入两次时调用函数myfunction。没有内置任何内容,但您可以使用此代码。自定义变量dc单击cmd和dc双击cmd,使其成为所需的命令 注意:这引入了一个轻微的延迟,b/c代码需要等待一点时间来确定事件是单次单击还是双击 (defvar dc-single-click-cmd 'dc-example-si

我正在使用Emacs(23)并将
C-。
组合键绑定到一个函数:

(global-set-key (kbd "C-.") 'myfunction)

可以快速“双击”一把钥匙吗?例如,我想在快速键入两次
时调用函数
myfunction

没有内置任何内容,但您可以使用此代码。自定义变量
dc单击cmd
dc双击cmd
,使其成为所需的命令

注意:这引入了一个轻微的延迟,b/c代码需要等待一点时间来确定事件是单次单击还是双击

(defvar dc-single-click-cmd 'dc-example-single-click)
(defvar dc-double-click-cmd 'dc-example-double-click)
(defvar dc-click-timer nil
  "Pending single-click event.")
(defun dc-example-single-click ()
  (interactive)
  (message "A single click just happened."))
(defun dc-example-double-click ()
  (interactive)
  (message "Wait!  I meant double click."))
(defun dc-click-cmd ()
  "Either kick off a single click, or a double click."
  (interactive)
  (if dc-click-timer
      (progn
        (cancel-timer dc-click-timer)
        (setq dc-click-timer nil)
        (call-interactively dc-double-click-cmd))
    (setq dc-click-timer (run-at-time (when double-click-time 
                                            (/ 1000.0 double-click-time))
                                      nil
                                      'dc-call-single-click))))
(defun dc-call-single-click ()
  "spawn the single click"
  (setq dc-click-timer nil)
  (call-interactively dc-single-click-cmd))
(定义myfunction2() (互动) (如果(不是(eq最后一个命令'myfunction2)) (插入“.”) (设置此命令为零) (删除向后字符1) (以交互方式调用“myfunction”))

(defun myfunction() (互动) (信息“MYFUNCTION”))

(全局设置键“,”myfunction2)

提供了与您正在寻找的功能类似的功能。

我相信这是当今解决此问题的标准解决方案


(免责声明:我自己(目前)不使用KeyChord,但很多人都使用,所以我确信它至少值得一试。)

谢谢Trey,我试过了,效果很好。在晚上重新思考我的问题时,我认为如果我可以自定义输入方法,那也会很有趣:例如,在编写
'
时,emacs将等待下一个字符并修改缓冲区内容(
'a
将导致
á
)。然而,这是另一个问题的主题,在我做了自己的研究之后,我可能会问。