Frage

(Dies ist nicht eine Frage zu KVC / KVO und Schlüssel-Wert-Bindungen).

Ich schreibe eine Anwendung mit einem „Tools“ Panel. Jedes Werkzeug kann aus einer Buchstaben-Taste (- „Verschieben-Werkzeug“ wie „M“) verwendet werden, ausgewählt. Tool kann auch gewählt werden, wenn kein Hauptfenster ist und die Werkzeugleiste nicht aktiviert ist (nicht „Schlüssel“ zu sein).

Docs sagen, dass rohe Schlüsselereignisse nicht auf die AppDelegate propagiert werden und Dokumentensteuerung (so dass ich nicht auf onKeyDown verlassen können, da sie in einem WindowController passieren sollte). Aber „Aktionsereignisse“ (Schlüssel an einen Wähler gebunden) an die App gesendet, AppDelegate und Dokumenten Controller.

Ich kenne zwei Möglichkeiten, solche globalen Bindungen zu setzen:. Durch NSMenuItem Schlüsseläquivalente in Interface Builder oder mit ~ / Library / KeyBindings / Datei DefaultKeyBinding.dict-Datei (die für alle Anwendungen globale Bindungen gibt)

Die Menüpunkte Ansatz ist nicht gut, weil ich möchte nicht mein Menü mit Befehlen verschmutzen, die von der Werkzeugplatte ausgelöst werden können.

Ich möchte solche Bindungen programmatisch setzen oder sie in einem gebündelten KeyBindings.dict wie Xcode und Textmate tun geben.

Allerdings kann ich nicht docs oder Beispiele finden, wie solche dict Datei zu benennen und wie es um die App zu verbinden. Xcode verwendet PBKeyBinding.dict Dateiname, Textmate verwendet KeyBindings.dict. Es gibt keine Möglichkeit für Info.plist App zu sagen, die dict-Datei zu lesen.

Weiß jemand, wie dies geschehen könnte?

Danke.

War es hilfreich?

Lösung 2

In der Tat, diese Bibliothek tut, was ich brauche:

http://github.com/carpeaqua/SGHotKeysLib

Es verwendet RegisterEventHotKey Funktion (erfordert mit Carbon-Rahmen verbindet).

Andere Tipps

Die Dokumentation sagt dies nicht der Fall ist unterstützt. Also, auch wenn Sie es arbeitet, ist es in einer zukünftigen Version von Mac OS X brechen könnte.

Ich schlage vor, alle Werkzeuge in ein Menü Extras setzen. Redundanz ist nicht von Natur aus schlecht, und ein Menü könnte leichter navigierbar von Menschen mit Sehschwäche und würde dienen als schnelle Referenz für die noch nicht vertraut mit Ihrem Werkzeug-Icons.

Wenn ein Menü Extras wirklich sinnlos ist, können Sie die Hidden-Eigenschaft des Menüpunktes Extra gesetzt (dessen Untermenü ist das Menü Extras). Auf diese Weise, die Werkzeuge Menüpunkt ist nach wie vor im Hauptmenü (Menüleiste), und so sollte noch seine Tastenbelegungen mit Aktionen verknüpfen, aber es ist für Benutzer nicht sichtbar.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top