Mac アプリのチートシート ( http://www.cheatsheetapp.com/CheatSheet/ ) またはキーキュー ( http://www.ergonis.com/products/keycue/ ) には、アクティブなアプリケーションのすべてのキーボード ショートカットを収集する機能があります。この機能をどのように実現できるか知りたいです。
質問する
479 次
1 に答える
2
Mac では、次のようないくつかの方法でこれを行うことができます。
- メニューとメニュー項目を列挙し、それらからキーストロークを読み取ります。これも、次の 3 つの方法で実行できます。
- UI スクリプト。これを行うには、AppleScript、ScriptingBridge、appscript、F-Script などを介してアプリの「システム イベント」(AppleScript エディタ、具体的にはプロセス スイートの辞書を参照) と対話します。これが機能するためのアクセス。
- すべてのアプリに独自のコードを挿入し、NSMenu API を使用します。
- すべてのアプリにコードを挿入するには、さまざまな方法がありますが、SIMBLプラグインを作成するだけでよいので、自分でその方法を理解する必要はありません。
- どのアプリからでも、ObjC ランタイムがあれば、メニューバーを実行するすべての Cocoa クラスにアクセスできます。場合によっては、これにより、現在存在しないが可能性のある動的に生成されたメニュー項目を取得することさえできます。
- マイナス面は、Carbon アプリでは機能しないことですが、毎日残っているアプリが少なくなっています。
- これに興味がある場合は、アプリにfscriptを挿入し、オブジェクト ブラウザーとスクリプト インターフェイスで遊んでみてください。そこから理解できるはずです。次に、学んだことを選択した言語に翻訳できます。
- 独自のコードをすべてのアプリに挿入し、HIToolbox の Carbon Menu Manager API を使用します。
- これらは Carbon/Menus.h にあります。それらはより手間がかかり、将来性ははるかに低くなりますが、現時点では、Carbon アプリと Cocoa アプリの両方で機能します。
- アプリに埋め込まれた NIB ファイルを見てください。これは非常に単純ですが、NIB から作成されたメニューのみを処理します。
- アプリが OS に登録するショートカットを確認します。これも非常に単純ですが、最近の OS X ではほとんど役に立ちません。通常、グローバル ショートカットしか登録されないからです。(システム環境設定の [キーボード] ペインを開くと、そこにあるものが表示されます。)
Windows では、これにはある種の WM_* メッセージの送信が含まれると思いますが、おそらく、この質問に添付するのではなく、別の質問 (osx のタグが付いていないもの) にすることをお勧めします。
于 2012-07-10T18:16:36.343 に答える