4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Target Display Modeをキー入力なしで行う方法

Last updated at Posted at 2016-03-20

使わなくなったiMacを外部ディスプレイとして利用する時に、Thunderboltケーブルを挿すだけで自動的にTarget Display Mode(ターゲットディスプレイモードもしくはTDM)にするShell Scriptを書きました。Source @GitHub

Target Display Modeとは何か

特徴

これまではUSB切り替え器などを用いてキーボードをiMacとMacBookに接続していたが、Thunderboltケーブルを挿すだけで自動的にTarget Display Modeになるようにした。

使いかた

Sourceを落としてきて、auto.shを実行するだけ。

sh ./auto.sh

ただし、「Apple keyboardがUSBでささっている」かつ「ログイン状態」であることが必要。

改善

「Apple keyboardがUSBでささっている」かつ「ログイン状態」という制約から逃れたいがどうすればいいかまだわからないので、知っている人がいれば教えていただきたい。

コードの説明

auto.sh
#!/bin/bash
    
#スクリーンセーバーを動作させるためのコード
open_screen_saver () {
    open /System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/

}

#Thunderboltが接続されているか確認する(Thunderboltなら全て反応してしまう)
get_status () {
    if [ `system_profiler SPThunderboltDataType | grep "Macintosh:"` ]; then
        status="connected"
    else
        status="disconnected"
    fi
    echo $status
}

#Target Display Modeを開始する。
#command + F2を押す動作をosascriptにより実現
start_target_display_mode (){
    echo "Start target display mode..."
    osascript -e 'tell application "System Events" to key code 144 using command down'
}

#init
echo "Start auto Target Display Mode..."
open_screen_saver;

#working
#Thunderboltが接続されているかステータスを確認する
while :
do
    preStatus=$status
    echo $preStatus
    status=`get_status`
    if [ "$preStatus" != "connected" ] && [ "$status" = "connected" ]; then
        start_target_display_mode;
    elif [ "$preStatus" = "connected" ] && [ "$status" = "disconnected" ]; then
        open_screen_saver;
    fi
    sleep 1
done

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?