hooks – ¿Detectar si el botón del mouse está presionado?

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 .

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım