8

Thunderbolt ケーブルを使用して MBA を iMac に接続しました。iMac で CMD+F2 を押すと、ターゲット ディスプレイ モードが有効になり、iMac を MBA のディスプレイとして使用できます。そのイベントをプログラムでトリガーする方法を知っている人はいますか?

私の最初のアプローチは、に送信するCGEventPostことでしたkCGHIDEventTap

CGEventRef f2CommandDown = CGEventCreateKeyboardEvent(src, (CGKeyCode)120, YES);
CGEventSetFlags(f2CommandDown, kCGEventFlagMaskCommand);
CGEventRef f2CommandUp = CGEventCreateKeyboardEvent(src, (CGKeyCode)120, NO);
CGEventPost(kCGHIDEventTap, f2CommandDown);
CGEventPost(kCGHIDEventTap, f2CommandUp);

それはうまくいきません。それがするのはエラー「ビープ」だけです。(ルートユーザーとしても実行しようとしました)。kCGHIDEventTapは間違ったターゲットであり、CMD + F2 は OS の上位レベル (別名「どこか」) に存在する可能性があると思います

キー イベント キャプチャ コードを実行しても、CMD+F2 では何も表示されません。

誰にもヒントはありますか?前もって感謝します!

4

3 に答える 3

5

これを行うプロジェクトを開始しました。つまり、iMac を監視し、ターゲット表示モードを自動的にトリガーし、Macbook が接続されているときに Bluetooth をオフに切り替えます。https://github.com/duanefields/VirtualKVMからダウンロードできます。キーをトリガーするために AppleScript を使用しています。

于 2014-06-25T12:31:33.053 に答える
3

実際には、osascript を使用して、プログラムなしでこれを非常に簡単に行うことができます。

osascript -e 'tell application "System Events" to key code 144 using command down'

ただし、ケーブルを接続しても自動的には実行されません。

単一の Bluetooth キーボードとトラックパッドも使用する場合は、blueutil を使用して Macbook に切り替えて、imac で Bluetooth を一時的に無効にし、Macbook がキーボードとトラックパッドを取得できるようにします。ターゲット表示モードを終了したいときはいつでも、Macbook の Bluetooth をオフにして、imac がキーボードとトラックパッドに再接続されるまで数秒待ちます。

お使いの imac で、以下のスクリプトをファイル ~/bin/target-display-mode に置き、`chmod +x ~/bin/target-display-mode を実行します

次に、imac の用語ウィンドウで、target-display-mode をコマンドとして実行します。MacBook で Bluetooth が有効になっていて、キーボードとトラックパッドが既に認識されている場合は、それらに接続されます。または、Bluetooth 設定を開き、各デバイスを見つけて「接続」します (MacBook の組み込みキーボードとトラックパッドを使用)。

#! /usr/bin/env bash

#  Enter target-display mode with a macbook connected by cable;
#  then, temporarily turn off bluetooth so the macbook can the
#  bluetooth keyboard, trackpad and other devices that are currently
#  connected to the imac.
#
#  Later, turn bluetooth back on so the imac can later reconnect to it's 
#  bluetooth devices.
#
#  To exit target display mode, turn off bluetooth on the macbook and 
#  disconnect the cable.  After a few seconds, the imac will reconnect to
#  the keyboard and trackpad.
#
osascript -e 'tell application "System Events" to key code 144 using command down'
sleep 5
(
/usr/local/bin/blueutil off
sleep 60
/usr/local/bin/blueutil on
) &

スクリプトが 60 秒間待機してから、imac で Bluetooth をオンに戻すことに注意してください。別のキーボードや有線マウスを持っていないことは非常に重要です。Bluetooth がオフのままの場合、ssh を使用するか再起動しないと再接続できません。

于 2017-11-18T13:13:09.767 に答える
0

あなたがこれを理解したことがあるかどうか疑問に思っていました。私が見た唯一の解決策は、フルスクリーンウィンドウを実行し、このようなキープレスをトリガーすることです

http://bogner.sh/2013/07/os-x-how-to-use-an-imac-as-monitor/#comment-50925

于 2014-04-22T13:01:04.370 に答える