Generar evento mouse-2 desde el trackpad de MacBook

7

Tengo Emacs.app versión 24.5 (9.0) en un MacBook con Mac OS X 10.11.3 (15D21). ¿Cómo puedo generar el mouse-2 desde el trackpad de mi MacBook? Busqué en Google y encontré referencias a mac-emulate-three-button-mouse( esta pregunta ) (que no se encuentra en dicha versión de Emacs) y trucos similares que no funcionan.

¿Es posible generar tal evento, o hay alguna otra forma, como vincular globalmente algo como s- <mouse-1> a ​​<mouse-2>, etc.?

Renzo
fuente

Respuestas:

4

También podría decirle a flyspell que use, lo mouse-3que parece más apropiado para un menú contextual:

(eval-after-load "flyspell"
    '(progn
       (define-key flyspell-mouse-map [down-mouse-3] #'flyspell-correct-word)
       (define-key flyspell-mouse-map [mouse-3] #'undefined)))

Respuesta robada de aquí

Bryan Ash
fuente
¡Esto es genial! He estado modificando flyspell.el.gz cada vez y cada vez que actualizo lo perdería.
Joshua Olson
4

Después de buscar un poco más en Google y leer el manual, he encontrado una solución que funciona para mí, agregando al archivo ~/.emacs.d/init.ella siguiente línea:

(define-key key-translation-map (kbd "<s-mouse-1>") (kbd "<mouse-2>"))

De esta manera, puedo generar mouse-2eventos presionando Comando al hacer clic con el panel táctil.

key-translation-mapes un mapa de teclas de traducción (consulte el manual ) que "... utiliza mapas de teclas de traducción para traducir ciertas secuencias de eventos a otras".

Renzo
fuente
Lamentablemente esto no funciona para mí. Cuando trato de usar s-mouse-1, recibo mensajes como "flyspell-correct-word debe estar vinculado a un evento con parámetros"
killdash9
Creo que la respuesta de Bryan Ash es la correcta para la mayoría de las personas.
Joshua Olson
2

Copiado de mi respuesta en SuperUser:

Esto no es tanto una solución como una solución alternativa, pero actualmente estoy probando la aplicación MiddleClick (código abierto) que agrega la funcionalidad de clic central en todo el sistema al activar un clic central cuando haces tres dedos: grifo.

El único problema es que puedes presionar el botón central del mouse accidentalmente tocando tres dedos en el panel táctil de vez en cuando, lo que ha sido algo molesto. Obviamente, también hay enlaces de trackpad del sistema (por ejemplo, App Exposeo Mission Control) que pueden entrar en conflicto con el toque de tres dedos si no hace que el movimiento de desplazamiento correspondiente sea lo suficientemente pronunciado. Probablemente podría solucionar estos conflictos modificando las fuentes, ya que parece que no hay configuraciones en la aplicación en ejecución.

También puede instalar MiddleClick a través de homebrew:

brew cask install middleclick

EDITAR:

Resulta que el comportamiento de tocar tres dedos de MiddleClick es bastante molesto e inutilizable, al menos para mí. Además, tratar de modificar las fuentes para un mejor comportamiento demostró ser más problemático de lo que vale, ya que MiddleClick utiliza MultitouchSupport.framework, que es privado y requiere ingeniería inversa para dar sentido a los parámetros de sus funciones. Desafortunadamente, no tengo tiempo para eso en este momento, especialmente. por algo tan básico. Sin embargo, encontré BetterTouchTool que implementa la misma funcionalidad básica pero proporciona mucha más personalización. No es gratis, pero solo cuesta $ 3 y, además, funciona bien con Magic Trackpad 2, lo que no se puede decir de la aplicación similar que también probé, MagicPrefs.

BetterTouchTool también se puede instalar a través de homebrew:

brew cask info bettertouchtool
PIB2
fuente
1

Adapte la respuesta de bryan-ash para usar la add-hookfunción en lugar de eval-after-loadpersonalizar los enlaces de mi mouse mágico para flyspell.

  1. Agregue el código elisp a continuación a su .emacsarchivo para mapear el mouse mágico down-mouse-3y mouse-3haga clic para flyspell.

    ;;
    (add-hook 'flyspell-mode-hook 'my-flyspell-mode-hook)
    ;;
    (defun my-flyspell-mode-hook ()
      ;; Do things when flyspell enters of leaves flyspell mode
      ;; Added manually
      ;;
      ;; Magic Mouse Fixes
      (if flyspell-mode (progn
           (define-key flyspell-mouse-map [down-mouse-3] #'flyspell-correct-word)
           (define-key flyspell-mouse-map [mouse-3] #'undefined))
        nil)
      ;; End my-flyspell-mode-hook
      )
    

Esta respuesta fue validada usando:

Versión emacs: GNU Emacs 26.1 (compilación 1, x86_64-apple-darwin14.5.0, NS appkit-1348.17 versión 10.10.5 (compilación 14F2511)) de 2018-05-30

Melioratus
fuente