アプリケーション(ステータスバーにある)から別のアプリケーション内にある NSTextField にテキストを貼り付ける方法を教えてください。
貼り付けは、受信アプリケーションで行われることです。ペーストボードへの書き込みはコピーです。
さらに、ユーザーが NSTextField に貼り付けたいと考えることはできません。NSTextView、WebView のテキストエリア、Carbon EditText または MLTE コントロール、または Qt や wxWidgets テキスト エディターなどの他のテキスト エディターの場合があります。テキストを直接貼り付けられるリスト ビューを備えたアプリを使用している場合もあります。
そのため、アプリケーションに「ここにテキストがあります。貼り付けてください」と直接伝えるプログラム的な方法はありません。それを一般的なペーストボードにコピーしてから、一般的に最前面のアプリを貼り付けるイベントを作成する必要があります。チャーリーの ⌘V の提案は、トリッキーではありますが、1 つの方法です。Dvorak レイアウトでは V が別のキーに配置されますが、「Dvorak QWERTY ⌘」レイアウトでは V-with-⌘ (V-without-⌘ ではなく) が QWERTY の V と同じキーに配置されます。
その ⌘V イベントを偽造するには、 CGEventTap を調べます。関数を使用しCGEventCreateKeyboardEvent
てイベント自体を作成する必要があります。その関数はキー コードを受け取るため、⌘V の組み合わせの V 部分の適切なキー コードを検索する必要があります。これにはTextを使用する必要があります。レイアウトに応じて、入力ソース サービスまたはキーボード レイアウト サービス。
この時点で、アクセシビリティを使用して [編集] メニューの [貼り付け] メニュー項目を見つけて AXPress メッセージを送信することを考えるかもしれませんが、「貼り付け」と「編集」はこれらの概念を表す英語の単語にすぎません。これを行った場合、アプリは他の言語では動作しません。順序 (3 番目のメニュー、6 番目のメニュー項目) で実行することもできますが、その場合、ファイル メニューがないアプリケーション、やり直しメニュー項目がないアプリケーション、または 2 つの元に戻すメニュー項目があるアプリケーション (Photoshop) ではアプリが動作しません。⌘V イベントを作成することは、実際に進むべき道です。