I am using Emacs (23) and I am binding the C-.
key combination to a function:
(global-set-key (kbd "C-.") 'myfunction)
Is it possible to bind a quick "double tap" of a key? For example, I would like to call a function myfunction
when typing .
quickly two times.
There isn't anything built in, but you can use this code. Customize the variables dc-single-click-cmd
and dc-double-click-cmd
to be the commands you want.
Note: this introduces a slight delay, b/c the code needs to wait for a little bit of time to determine whether the event was a single or double click.
(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))