Generieren Sie ein Maus-2-Ereignis aus dem MacBook-Trackpad


7

Ich habe Emacs.app Version 24.5 (9.0) auf einem MacBook mit Mac OS X 10.11.3 (15D21). Wie kann ich Maus-2 aus dem Trackpad meines MacBook generieren? Ich habe gegoogelt und Verweise auf mac-emulate-three-button-mouse( diese Frage ) (in einer solchen Emacs-Version nicht gefunden) und ähnliche Tricks gefunden, die nicht funktionieren.

Es ist möglich, ein solches Ereignis zu generieren, oder es gibt eine andere Möglichkeit, beispielsweise eine globale Bindung wie s- <mouse-1> an <mouse-2> usw. vorzunehmen.

Antworten:


4

Sie können flyspell auch anweisen, mouse-3die für ein Kontextmenü geeigneter erscheint:

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

Antwort von hier gestohlen


Das ist toll! Ich habe flyspell.el.gz jedes Mal geändert und jedes Mal, wenn ich aktualisiert habe, habe ich es verloren.
Joshua Olson

4

Nach einigem googeln und Lesen des Handbuchs habe ich eine Lösung gefunden, die für mich funktioniert, indem ich der Datei ~/.emacs.d/init.eldie folgende Zeile hinzufüge :

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

Auf diese Weise kann ich mouse-2Ereignisse generieren , indem ich beim Klicken mit dem Trackpad auf Befehl drücke.

key-translation-mapist eine Übersetzungs-Keymap (siehe Handbuch ), die "... Übersetzungs-Keymaps verwendet, um bestimmte Ereignissequenzen in andere zu übersetzen."


Leider funktioniert das bei mir nicht. Wenn ich versuche, s-mouse-1 zu verwenden, erhalte ich Meldungen wie "Flyspell-korrektes Wort muss an ein Ereignis mit Parametern gebunden sein"
killdash9

Ich denke, Bryan Ashs Antwort ist für die meisten Menschen die richtige.
Joshua Olson

2

Von meiner Antwort bei SuperUser kopiert:

Dies ist weniger eine Lösung als eine Problemumgehung, aber ich probiere derzeit die (Open Source) MiddleClick-App aus, die systemweit Middle-Click-Funktionen hinzufügt, indem sie bei einem Drei- Finger-Vorgang einen Middle-Click auslöst. Zapfhahn.

Die einzigen Probleme sind, dass Sie versehentlich den Mittelklick drücken können, indem Sie ab und zu drei Finger auf dem Trackpad berühren, was etwas ärgerlich war. Es gibt natürlich auch die System-Trackpad-Bindungen (z. B. App Exposeoder Mission Control), die mit dem Tippen mit drei Fingern in Konflikt stehen können, wenn Sie die entsprechende Bildlaufbewegung nicht ausreichend ausdrücken. Sie könnten diese Konflikte wahrscheinlich beheben, indem Sie die Quellen optimieren, da anscheinend keine Einstellungen in der laufenden App selbst vorhanden sind.

Sie können MiddleClick auch über Homebrew installieren:

brew cask install middleclick

BEARBEITEN:

Es stellt sich heraus, dass das Drei-Finger-Tipp-Verhalten von MiddleClick zumindest für mich ziemlich nervig und unbrauchbar ist. Der Versuch, die Quellen für ein besseres Verhalten zu ändern, erwies sich als schwieriger als es sich lohnt, da MiddleClick davon Gebrauch macht MultitouchSupport.framework, was privat ist und Reverse Engineering erfordert, um die Parameter seiner Funktionen zu verstehen. Leider habe ich momentan keine Zeit dafür, insb. über etwas so Grundlegendes. Ich habe jedoch BetterTouchTool gefunden, das die gleiche Grundfunktionalität implementiert, aber viel mehr Anpassbarkeit bietet . Es ist nicht kostenlos, aber es kostet nur 3 US-Dollar und funktioniert außerdem gut mit dem Magic Trackpad 2, was für die ähnliche App, die ich auch ausprobiert habe, MagicPrefs , nicht gesagt werden kann.

BetterTouchTool kann auch über Homebrew installiert werden:

brew cask info bettertouchtool

1

Ich habe die Antwort von bryan-ash angepasst, um die add-hookFunktion zu verwenden, anstatt eval-after-loadmeine magischen Mausbindungen für das anzupassen flyspell.

  1. Fügen Sie der .emacsDatei den folgenden Elisp-Code hinzu , um die magische Maus zuzuordnen down-mouse-3und auf zu mouse-3klicken 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
      )
    

Diese Antwort wurde validiert mit:

emacs-version: GNU Emacs 26.1 (Build 1, x86_64-apple-darwin14.5.0, NS-Appkit-1348.17 Version 10.10.5 (Build 14F2511)) vom 30.05.2018


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.