Pregunta:
Tengo un código que se ejecuta en un gancho que quiero cambiar para que solo se ejecute si el botón izquierdo del mouse no está presionado. No veo ninguna función o variable obvia que me permita consultar directamente el estado del botón del mouse. ¿Cuál es la forma más sencilla de hacer esto?
Respuesta:
Esto parece hacer lo que quieres:
(defun mouse-button-pressed-p ()
"Return non-nil if last event is a mouse-button down event."
(run-hooks 'mouse-leave-buffer-hook)
(and (consp last-input-event)
(string-match-p "down-mouse-" (format "%s" (car last-input-event)))))
Puedes probarlo usando la Mx bar
. Eso le dará 2 segundos para realizar una acción que emite un evento y luego llamar mouse-button-pressed-p
para probar si el último evento fue un evento con el botón del mouse presionado. Después de 2 segundos le indica si en el momento mouse-button-pressed-p
se mouse-button-pressed-p
(se mantuvo presionado) el botón del mouse.
(defun bar ()
(interactive)
(run-with-timer 2 nil 'foo))
(defun foo ()
(message (if (mouse-button-pressed-p)
"Button is pressed now"
"No button is pressed now")))
Consulte el manual de Elisp, nodo Eventos de botones .