Erstellen/bearbeiten Sie schnell Tastaturkürzel für Menüelemente

Wenn ich derzeit eine neue Tastenkombination an einen Menüpunkt binden möchte, muss ich einen etwas langwierigen Prozess mit vielen Schritten durchlaufen:

  1. Öffnen Sie die Systemeinstellungen, dann den Tastaturbereich und dann die App-Verknüpfungen
  2. Klicken Sie auf die +Schaltfläche
  3. Finden Sie die Anwendung im Menü
  4. Vergessen Sie den genauen Namen des Menüpunkts, den ich binden möchte
  5. Gehen Sie zurück zur anderen Anwendung, suchen Sie den Menüpunkt, merken Sie sich genau, wie er heißt
  6. Gehen Sie zurück zu den Systemeinstellungen und geben Sie das in das Feld ein
  7. Geben Sie die gewünschte Verknüpfung ein und klicken Sie auf „Hinzufügen“.
  8. Stellen Sie beim Testen fest, dass ich mich irgendwie vertippt habe, und verbringen Sie ein paar Minuten damit, die Schritte 5–7 zu beheben

Für etwas so Einfaches wie das Binden einer Tastenkombination an ein Menüelement denke ich, dass es einen sehr einfachen Weg geben sollte, dies in etwa zwei Sekunden zu erreichen.

Gibt es eine Art Skript oder App, mit der ich die Tastenkombinationen einer App einfach verwalten kann?

Ich wäre genauso glücklich mit etwas, das einem von diesen ähnelt:

  • Eine kleine Skript-/Hintergrund-App, die ich aufrufen kann, die mich auffordert, einen Menüpunkt auszuwählen und meine gewünschte Verknüpfung einzugeben
  • Ein etwas größeres Programm, das jeden Menüpunkt und/oder jede Tastenbelegung innerhalb einer bestimmten App auflistet und bearbeiten lässt
Einige Apps machen das intern - normalerweise die mit einer halben Million Optionen, Photoshop und Cubase sind zwei, die einem sofort in den Sinn kommen. Für den Rest gibt es Ihre Beispielmethode.
Ich könnte mir vorstellen, dass dies nicht sehr schwer zu programmieren wäre – Diese Einstellungen scheinen in den NSUserKeyEquivalents-Schlüsseln in den Präferenzlisten jeder Anwendung gespeichert zu sein (oder in der Apple Global Domain für global festgelegte Verknüpfungen). Sie können alle vorhandenen Bindungen leicht mit sehen defaults find NSUserKeyEquivalents, und das Schreiben ist nicht viel anders.
Ich habe diesen Befehl gerade ausprobiert - er deckt nicht einmal die Änderungen an den Systemeinstellungen meiner Tastatur ab, geschweige denn die unzähligen, die ich in pshop & cubase habe.
@Tetsujin Nun, natürlich deckt es nicht die Änderungen ab, die auf proprietäre Weise vorgenommen wurden! Ich spreche hier nur von der nativen Funktionalität; die sind irgendwie egal. Obwohl es seltsam ist, dass es nicht alle Ihre Bindungen in den Systemeinstellungen enthält ... es funktioniert gut für mich. Führen Sie es mit den entsprechenden Berechtigungen aus?
Ich hatte eine Liste mit genau 4 Elementen, die diesen Befehl verwendeten [alle 'true']. Meine tatsächliche Liste der Einstellungen geht in die Dutzende, mit Ausnahme der speziellen Apps mit integrierter Funktionalität, die nur in diesen Apps angezeigt werden.
@Tetsujin Das ist wirklich seltsam, keiner von ihnen sollte sogar boolesch sein! Hier ist, was es für mich zurückgibt: cl.ly/k24a
Mit "true" meinte ich, dass es sich um tatsächlich erkannte Nicht-Standardwerte handelt, nicht um boolesche Werte. Verzeihung.
Oh bitte. Ich brauche das. Darunter leide ich die ganze Zeit. Als Nebenbemerkung bietet Ihnen BetterTouchTool eine größere Flexibilität, da Sie Platzhalter verwenden, das n-te Menüelement auswählen und dieselbe Verknüpfung für mehrere Menüelemente festlegen können (falls sie sich je nach Status ändern), aber leider ist das Hinzufügen der Verknüpfungen nicht der Fall nicht viel kürzer.

Antworten (1)

Hier ist das AppleScript dafür:

on run

tell application "System Events"
    set theActiveApp to name of 1st process whose frontmost is true
end tell

set theApplicationID to id of application theActiveApp
set theMenuItem to text returned of (display dialog "Enter menu item name" default answer "Example: New Window")
set theShortcut to text returned of (display dialog "Enter shortcut (use these: ⌘=@,  ⌥=~,  ⇧=$,  ^=^)" default answer "Example: @$1")

do shell script "defaults write " & quoted form of theApplicationID & " NSUserKeyEquivalents -dict-add " & quoted form of (quote & theMenuItem & quote) & " " & quoted form of (quote & theShortcut & quote)

end run

Es erhält also die Kennung der aktuellen Anwendung und fügt dann den Namen Ihres Menüelements und die Verknüpfung nach Bedarf hinzu. Sie können sogar auf die Menüleiste der Anwendung klicken, ohne dass das Popup verschwindet!

Beachten Sie jedoch, dass dies nur eine rudimentäre Version dessen ist, was Sie wollten. es fügt nur Einträge hinzu. Wenn Sie einen Fehler machen, können Sie diesen manuell beheben (und er wird möglicherweise nicht in den Systemeinstellungen angezeigt). Außerdem schien es im Automator oder Script Editor nicht zu funktionieren, aber für den Finder funktionierte es gut. Bei den ersten beiden werden die Einträge hinzugefügt, aber aus irgendeinem Grund werden sie nicht in den Systemeinstellungen angezeigt und können auch nach dem Neustart der App nicht verwendet werden. Ich weiß nicht warum, aber hey, zumindest ist es etwas ;)