: O. Yuanying

MacBook の内蔵ディスプレイだけスリープ

MacBookをスリープせずにリッドクローズドモード

IMG_0030_thumb.jpg

要するに「MacBookをデュアルディスプレイで使用時に、AppleScriptなりなんなりで内蔵ディスプレイだけスリープさせたい。」というやり取りが某掲示板であったのでそれをまとめる。

340 :キモオタ :sage :2007/09/05(水) 03:54:31

片方のディスプレイをスリープ状態に出来れば良いの? (ちなみにアメリカではこれスリープって言わない ラップトップの人が何でぐぐればいいか教えてくれるかもねw)

IOKitにPowerManagerを制御する命令が確かあったよ。IOPMSleepSystemで出来たかもしれないねやったことないけど AppleScriptが良いならcall methodすれば良いんじゃない?

IOPMSleepSystemの詳細は file://localhost/System/Library/Frameworks/IOKit.framework/Versions/A/Headers/pwr_mgt/IOPMLib.h に書いてあるよ。

341 :キモオタ :sage :2007/09/05(水) 04:40:58

と思ったらDarwin Source Codeの中にそのものズバリなコードを見つけたw

IOGraphicsの中のIOGraphicsFamilyにあるIODisplayWrangler.cppがお探しの魔法の呪文だ 。そこに書かれてるsetPowerStateの項を見てね 。

400 :キモオタ :sage :2007/09/06(木) 06:54:42

うんしょうがないなー、じゃあターミナルを使ってディスプレイを強制的にスリープさせる方法なら教えてあげる 。

ターミナル起動して以下のコマンドをコピペしてreturn押してみて 、

sleep 1; pmset force -a displaysleep 107374183; sleep 1; pmset force -a displaysleep `pmset -g | grep displaysleep | awk '{print $2}'`

でもこれじゃマウスを動かしたりすると起きちゃうね。

起きないようにするにはこう 、

sleep 1; pmset force -a displaysleep 107374183

重要

もし画面消えて何もできなくなっても焦らずにMBPのふたを閉じてスリープさせたあと、再度スリープから復帰させれば直るからね 。

でもPowerManagerをいじくってるので再起動までしたほうがいいかなーなんて... 。

424 :キモヲタ :sage :2007/09/06(木) 15:00:44

>>413
Darwin Source Codeはここで見れるよ。

http://www.opensource.apple.com/darwinsource/

IODisplayWrangler.cppっていうのはつまりカーネルの一部ってことだね、ここにはカーネルがハードとしてのディスプレイをどのように管理しているかの根っこの部分がありのままに書かれてる

IOKitはCocoaだからAppleScriptからも当然呼び出せるよ。

ところでAppleってハードウェア的な意味でディスプレイ、ソフトウェア的な意味ではモニタって呼んでるっぽいんだけど気のせいだろか...

各スクリプトから何かするんだったら>>400で紹介した方法をいろいろと改造してみたら? ターミナルコマンドだからいぢりやすいでそ?