如何在Lion上打开我的MacBook Pro盖子时仅使用外接显示器?


28

对于罗嗦的标题感到抱歉,但我的问题是:

  • 当我在办公桌前时,我只想使用外接显示器。
  • 凭借Lion中的漂亮手势,我决定使用MacBook上的内部触控板
  • 要物理触摸触控板,我的MacBook Pro上的盖子需要打开

这曾经是Snow Leopard及其下方的小菜一碟 - 你插上外接显示器,关上盖子,插上USB设备或按下连接键盘上的按键唤醒机器,一旦它被唤醒并使用外部显示屏重新打开盖子,内部屏幕保持关闭状态。

不幸的是,Lion检测到我的MacBook Pro何时打开,并通过激活显示器认为它有用。有没有办法禁用它?有没有办法愚弄狮子认为我的盖子关闭?


1
为什么不想要内部显示器提供的额外屏幕空间?
CajunLuke 2011年

5
@CajunLuke它不能很好地工作。当多个显示器彼此相邻并且与您的眼睛距离相同时,它们是最佳的。当两个相邻的显示器沿共享边缘具有相同的物理尺寸和分辨率时,它们也是最佳的。随着我的MacBook Pro也不是的情况下,我觉得这恼人不必管理它,这是令人沮丧时,我的指针消失到其他屏幕
凯尔·克罗宁

1
其他人也希望这可以更好地散热以及WiFi天线接收。垂直支架可以帮助那里,但这可能会增强凯尔独立于显示器接近传感器控制屏幕的愿望。(那并且不需要在他的工作面上购买或放置魔术触控板)
bmike

Answers:


17

Mac OS X Hints 发现了一个允许这样的命令

要返回到Lion之前的行为,请在终端中输入以下命令:

sudo nvram boot-args="iog=0x0" 

要撤消此更改类型,请键入以下命令或删除PRAM(在启动时按Cmd + Opt + p + r):

sudo nvram -d boot-args 

4
值得注意的是:在此工作之前,您需要重新启动计算机。
Damien Wilson

1
不幸的是,我在High Sierra中收到此错误消息:“nvram:错误变量 - 'boot-args':( iokit / common)一般错误”
OMA

在Mojave(10.14.4)得到这个:nvram: Error setting variable - 'boot-args': (iokit/common) not permitted
Ramazan Polat

17

我接受了olivier的建议,安排我的显示器消除一个共同的边界:

在此输入图像描述

我选择了右下方,因为我将我的底座放在屏幕的左侧,我用右上角作为热门角落来睡觉。我还将菜单栏移动到桌面显示器上,MacBook屏幕完全变暗。

我听说过另一种选择:使用磁铁让MacBook认为盖子已关闭。这确实有效 - 我在键盘的左下方附近放了一块冰箱磁铁片,果然我的MacBook认为我关闭了显示器。不幸的是,Mac OS X在认为显示屏已关闭时也会禁用键盘和触控板输入,因此此选项对我不起作用。


你知道如何使外部屏幕成为默认设置,因此Windows不会一直弹出笔记本电脑的屏幕吗?
Szabolcs

1
没关系,我搜索了错误的关键字。您只需要拖动白色菜单栏。
Szabolcs

4

Quick WorkAround(非实际解决方案)

只需选中“显示首选项”中的“镜像显示”选项。见下面的截图。

显示首选项 - 镜像显示

然后将Macbook的亮度调低至零。


这有很多问题。禁用未使用的屏幕有好处,这种方法就失去了它们。1)释放VRAM,因为它不需要屏幕缓冲区(特别是高分辨率视网膜显示器),2)它可以防止窗户意外弹出那里3)关闭盖子自动将所有笔记本电脑屏幕窗口移动到外部显示器
Alexander

我想你错过了他说要反映显示器的那一点。这可能仍然使用一些额外的资源,但真正的缺点是它限制了你可以使用的分辨率。对我来说,这工作正常(两个显示器运行3360x1890,这是我想要的)
therealsix

2

我知道这有点像kludge,但我解决这个问题的方法是按住我的macbook上的亮度控制,直到屏幕变暗。

和你一样,我更喜欢在更大的显示器上工作,并继续用我的笔记本电脑键盘打字(笔记本电脑显示器只能部分打开,只需打开就可以使用笔记本电脑的键盘)。

无论如何,这个解决方案适合我。

回复:“..当我的指针消失在另一个屏幕上时,它很令人沮丧......”

我只需单击System Prefs> Displays> Arrangement中的“mirror displays”选项即可解决这个问题

希望这可以帮助。


3
如果外部显示器的分辨率高于内部显示器,则“镜像显示”将不起作用。我使用与你相同的解决方案(调暗屏幕),但我安排了显示器,因此他们只有很少的共同边框,以免丢失我的指针。
奥利维尔

1
回复:“镜像显示”,你是对的我应该提到我的更大的外置三星22“显示器具有完全相同的1680x1050分辨率与我的2011年15”MacBook Pro
user1556373

@olivier:如果外部显示器具有更好的分辨率,则镜像显示功能正常。启用“镜像显示”后,转到“屏幕”选项卡,然后在“优化”下拉菜单中选择分辨率更高的显示。然后,您将在更高分辨率的显示器和内部显示器中获得原始分辨率,您将获得相同的图像,但缩小到较低的分辨率。
OMA

2

不确定这是否适用于Lion,但如果您关闭盖子并插入USB设备,它将打开显示器电源,然后您可以打开盖子,外接显示器将打开,盖子将关闭。


2

我不久前遇到了同样的问题,这就是我所做的:

首先,我已经建议镜像显示器。在做完这个之后不久,我意识到将macbook的点亮屏幕放在眼角是非常分散注意力的。这要求我杀死macbook屏幕上的亮度。但是,作为一个懒惰的人,我讨厌每次取消/插入外接显示器时都必须手动调节亮度。所以我想知道是否有办法自动化这个过程。我找到了这个名为Control Plane的免费应用程序,让我根据某些设备(显示器,硬盘驱动器等)是否插入,某些Wi-Fi网络是否在范围内等设置“上下文”; 并基于这些上下文,运行某些shell脚本。所以我所要做的就是写一个AppleScript(叫做killBrightness.scpt)杀死macbook屏幕上的亮度和要调用的shell脚本killBrightness.scpt; 并在所需的上下文中调用此shell脚本。

killBrightness.scpt

tell application "System Preferences" to set current pane to pane "Displays"

tell application "System Events"
    tell process "System Preferences"
        repeat with theWindow in windows
            if title of theWindow as string is "Color LCD" then
                tell tab group 1 of theWindow
                    tell slider 1 of group 2
                        set value to 0
                    end tell
                end tell
            end if
        end repeat
    end tell
end tell

tell application "System Preferences" to quit

shell脚本

#!/bin/sh

osascript /path/to/killBrightness.scpt

由于我将许多不同的显示器插入我的macbook,我注意到当插入一个具有不同宽高比的显示器时,我的窗口悬挂在屏幕边缘。解决这个问题的方法是调整窗口大小,但是当你像我一样使用大量的应用程序和窗口时效率非常低; 而且,我和我一样懒惰,不喜欢那个解决方案。所以,在Stack Overflow上的优秀人员的帮助下,我能够提出这个AppleScript(被称为resizer.scpt)来自动调整(几乎)所有应用程序的所有窗口(需要注意的是,某些应用程序不使用正确的UI框架挂钩,所以很难调整它们的大小):

resizer.scpt

property blacklist : {"Finder", "Preview", "Console", "AppleScript Editor", "Spotify", "TaskCoach", "Skype", "VirtualBox"}
property buttonApps : {"LyX", "Eclipse"}
property buttonMaps : {{name:"LyX", Button:1, pname:"lyx"}, {name:"Eclipse", Button:2, pname:"eclipse"}, {name:"Spotify", Button:3, pname:"Spotify"}, {name:"TaskCoach", Button:3, pname:"TaskCoach"}}

tell application "Finder" to set theBounds to bounds of window of desktop

tell application "System Events"
    set bids to bundle identifier of processes where background only is false
end tell

repeat with bid in bids
    tell application id bid
        if name is not in blacklist then
            set appName to name as string
            if name is "Terminal" then
                set newBounds to {0, 0, (item 3 of theBounds) - 10, item 4 of theBounds}
                repeat with theWindow in windows
                    if visible of theWindow is true then
                        set bounds of theWindow to newBounds
                    end if
                end repeat
            else if name is not in buttonApps then
                try
                    repeat with theWindow in windows
                        if visible of theWindow is true then
                            set bounds of theWindow to theBounds
                        end if
                    end repeat
                end try
            else if name is in buttonApps then
                -- get the buttonNumber
                repeat with buttonApp in buttonMaps
                    if (name of buttonApp as string) is appName then
                        set theButton to Button of buttonApp
                    end if
                end repeat
                tell application "System Events"
                    repeat with theProcess in (processes where bundle identifier is bid)
                        try
                            tell theProcess to tell window 1 to click button theButton
                        end try
                    end repeat
                end tell
            end if
        end if
    end tell
end repeat

现在,我所要做的就是编写一个类似的shell脚本来调用resizer.scpt并将其放入ControlPlane中,我已经准备好再次懒惰了!

希望这可以帮助

PS:我之前忘了提到所有这些都是在我的15英寸MacBook Pro上完成的,运行Lion


如果有可能,我会添加另一个upvote。谢谢!
noamtm

2

另一种解决方案,即贫民窟,是在笔记本电脑的霍尔效应传感器附近放置一个非常弱的铁氧体磁铁(如冰箱磁铁)。

这有利于模拟macshell模式,同时保持盖子打开以改善冷却性能。

不要使用强钕磁铁。这可能会损坏霍尔效应传感器。

区别对待:铁氧体磁铁很薄,由黑色复合物制成,钕磁铁非常坚固,通常镀镍,具有闪亮的银色外观

![在此处输入图像说明


嗨!我如何区分这两者?哪里拿你的东西了?
ankii

@ankiiiiiii铁氧体磁铁很薄,由黑色复合材料制成,钕磁铁非常坚固,通常镀镍,具有闪亮的银色外观。
gatosec

1

这是一些其他帖子/评论的组合到一个地方。我正在使用运行El Capitan的MacBook Pro。

此方法优于终端命令的优点:

  1. 无需重启
  2. 没有修改boot-args

脚步:

  1. 插上并打开外接显示器
  2. 转到系统偏好设置 - >显示 - >排列
    • 取消选中“镜像显示”
    • 将白色菜单栏从macbook显示拖动到外部监视器(带有屏幕截图的参考)。这使外部显示器成为主显示器。
    • 安排蓝色方框,以便只有角落触摸(Kyle Cronin在上面的帖子中提供的屏幕截图)。这可以防止鼠标在屏幕之间移动。
  3. 关闭显示选项并点击macbook的调光键(即F1),直到屏幕变黑。

撤消步骤(保留以后的安排):

  1. 点击MacBook上的提亮屏幕键(即F2)。
  2. 拔掉外接显示器。

撤消步骤(如果再次插入,则将其更改回默认值):

  1. 点击MacBook上的提亮屏幕键(即F2)。
  2. 转到系统偏好设置 - >显示 - >排列
    • 将白色菜单栏拖回macbook显示。
    • 将蓝色框拖回原位。
    • 检查镜像显示选项。
  3. 拔掉外接显示器。

黑屏并不意味着它没有被使用:您的系统将知道它在那里,并且渲染也在您的笔记本电脑屏幕上完成。实际上,当它的blakc唯一关闭的是你的背光。
贝尔卡

0

更新2019年

自OS X El Capitan以来,系统完整性保护(SIP)不允许更改nvram选项。也boot-args="iog=0x0"不再工作了。

为解决这个问题,我找到了这个解决方案

  1. 进入恢复模式:重新启动并按住+ R直到出现Apple徽标。
  2. 转到“实用工具”>“终端”
  3. 类型 csrutil disable
  4. 重启Mac
  5. 打开终端并输入 sudo nvram boot-args="niog=1"
  6. 盖子关闭后重新启动
  7. 使用您的用户登录,您可以打开盖子
  8. 出于安全考虑,请再次进入恢复模式,键入csrutil enable并重新启动

撤消(多个选项):

  • 转到终端并输入sudo nvram -d boot-args
  • ...或重新启动并按住这四个键:+ + P+ R用于重置NVRAM。

-1

这就是我实现这一目标的方式。

  1. 使用电源线(充电器)连接MacBook。
  2. 连接外部键盘+鼠标。
  3. 转动MacBook盖子。
  4. 现在单击键盘按钮。
  5. 现在您只使用外部显示器,光标不会进入您的其他显示器。现在只有一个显示器。

这不起作用。关闭盖子后,计算机进入睡眠模式,无论我按下外接键盘上的按键还是蓝牙鼠标中的按钮,它都不会唤醒。直到再次打开盖子才会醒来。
OMA

它是否连接到充电器?
Siraj Alam

尝试连接和未连接
OMA

这应该有效(如果你正在收费) - 但是由于他明确表示他需要打开屏幕,所以没有用。
Therealsix

-2

一旦连接了外部显示器,有时您会看到这种扩展的显示器设置。但是如果您不想使用笔记本电脑屏幕,只需关闭macbook pro的盖子并继续在较大的屏幕上工作即可。笔记本电脑不进入睡眠模式。这是Lion发布的。


我相信凯尔问他怎么能打开盖子做到这一点。
Kevin Chen

这不起作用。关闭盖子使整个计算机像往常一样进入睡眠状态,因此外部显示器也会变为空白。
OMA
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.