Как использовать только внешний дисплей с открытой крышкой MacBook Pro на Lion?


28

Извините за многословное название, но моя проблема заключается в следующем:

  • Когда я нахожусь за своим столом, я хотел бы использовать только внешний дисплей.
  • С изящными жестами в Lion я решил использовать внутренний трекпад на моем MacBook
  • Чтобы физически дотронуться до трекпада, крышка моего MacBook Pro должна быть открыта

Раньше это было просто для Snow Leopard и ниже - вы подключаете внешний дисплей, закрываете крышку, подключаете USB-устройство или нажимаете клавишу на подключенной клавиатуре, чтобы разбудить машину, и как только она проснется и внешний дисплей снова открывает крышку, а внутренний экран остается выключенным.

К сожалению, Lion обнаруживает, когда мой MacBook Pro открыт, и считает его полезным, активируя дисплей. Есть ли способ отключить это? Есть ли способ обмануть Льва, думая, что моя крышка закрыта?


1
Почему вы не хотите дополнительной экранной недвижимости, предоставляемой внутренним дисплеем?
CajunLuke

5
@CajunLuke Это просто не очень хорошо работает. Несколько дисплеев лучше всего, когда они сидят рядом друг с другом и находятся на одинаковом расстоянии от ваших глаз. Они также лучше всего подходят, когда два соседних дисплея имеют одинаковое физическое измерение и разрешение вдоль общего края. С моим MacBook Pro этого не происходит, и меня раздражает необходимость управлять им, и это расстраивает, когда мой указатель исчезает на другом экране
Кайл Кронин

1
Другие также хотели это для лучшего отвода тепла, а также для приема антенны WiFi. В этом может помочь вертикальная подставка, но это может усилить желание Кайла управлять экраном независимо от датчика приближения дисплея. (что и не нужно покупать или ставить волшебный трекпад на свою рабочую поверхность)
bmike

Ответы:


17

Mac OS X Hints обнаружил команду, которая позволит это :

Чтобы вернуться к поведению до Lion, введите следующую команду в Терминале:

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

Чтобы отменить это изменение, введите следующую команду или запустите PRAM (нажмите Cmd + Opt + p + r при включении):

sudo nvram -d boot-args 

4
Стоит отметить: вам нужно перезагрузить компьютер, прежде чем это сработает.
Дэмиен Уилсон

1
К сожалению, я получаю это сообщение об ошибке в High Sierra: «nvram: ошибка при получении переменной -« boot-args »: (iokit / common) общая ошибка»
OMA

На Мохаве (10.14.4) получается:nvram: Error setting variable - 'boot-args': (iokit/common) not permitted
Рамазан Полат

17

Я принял предложение Оливье организовать мои мониторы для устранения общей границы:

введите описание изображения здесь

Я выбрал нижний правый угол, потому что держу свою док-станцию ​​с левой стороны экрана и использую верхний правый угол в качестве горячего угла, чтобы усыпить дисплей. Я также переместил строку меню на свой настольный монитор, и экран MacBook полностью затемнен.

Был еще один вариант, о котором я слышал: использовать магнит, чтобы заставить ваш MacBook думать, что крышка закрыта. Это работает - я поместил кусок магнита на холодильник возле левой нижней части клавиатуры и, конечно же, мой MacBook подумал, что закрыл дисплей. К сожалению, Mac OS X также отключает ввод с клавиатуры и трекпада, когда считает, что дисплей закрыт, поэтому эта опция у меня не сработала.


Знаете ли вы, как сделать внешний экран по умолчанию, чтобы окна не появлялись на экране ноутбука?
Сабольч

1
Неважно, я искал неправильные ключевые слова. Вам просто нужно перетащить белую строку меню.
Сабольч

4

Quick WorkAround (не актуальное решение)

Просто установите флажок «Зеркальные отображения» в настройках отображения. Смотрите скриншот ниже.

Настройки отображения - Зеркальные отображения

Затем уменьшите яркость Macbook до нуля.


Есть несколько проблем с этим. Отключение неиспользуемого экрана имеет свои преимущества, и такой подход на них проигрывает. 1) освобождает VRAM, потому что ему не нужен экранный буфер (особенно дисплей сетчатки с высоким разрешением), 2) он предотвращает случайное появление окон 3) закрывает крышку, автоматически перемещает все окна экрана ноутбука на внешний дисплей
Александр - Восстановить Монику

Я думаю, что вы упустили момент, когда он сказал, чтобы отразить показы. Это может по-прежнему использовать некоторые дополнительные ресурсы, но реальным недостатком здесь является то, что оно ограничивает разрешения, которые вы можете использовать. Для меня это работало нормально (оба монитора работают с разрешением 3360x1890, что мне и нужно)
Therealsix

бесполезно, если у вас 2 внешних экрана
бормат

2

Я знаю, что это немного затруднительно, но моя работа по решению этой проблемы - удерживать регулятор яркости на моем MacBook, пока экран не потемнеет.

Как и вы, я предпочитаю просто работать с большим дисплеем и продолжать печатать на клавиатуре своего ноутбука (когда дисплей ноутбука открыт только частично и достаточно открыт, я могу использовать клавиатуру ноутбука).

Во всяком случае, это решение работает для меня.

Re: "... и это расстраивает, когда мой указатель исчезает на другой экран .."

Я могу обойти это, просто щелкнув по опции «зеркальные отображения» в Системных настройках> Дисплеи> Расположение

Надеюсь это поможет.


3
«Зеркальный дисплей» не будет работать, если ваш внешний дисплей имеет лучшее разрешение, чем ваш внутренний дисплей. Я использую то же решение, что и вы (затемнение экрана), но я размещаю мониторы так, чтобы у них было очень мало общей границы, чтобы не потерять мой указатель.
Оливье

1
Re: «Зеркальный дисплей», вы правы, я должен был упомянуть, что мой больший внешний монитор Samsung samsung 22 имеет такое же разрешение 1680x1050, что и мой 15-
дюймовый

@olivier: зеркальный дисплей работает, если внешние дисплеи имеют лучшее разрешение. После включения «Зеркальных отображений» перейдите на вкладку «Экран» и выберите дисплей с лучшим разрешением в раскрывающемся меню «Оптимизировать для». Затем вы получите исходное разрешение на мониторе с более высоким разрешением, а на внутреннем мониторе вы получите то же изображение, но уменьшенное до его более низкого разрешения.
OMA

2

Не уверен, что это работает в Lion, но если вы закрыли крышку и подключили USB-устройство, это включит ваш монитор, а затем вы можете открыть крышку, и ваш внешний монитор будет включен, и ваша крышка будет отключена.


2

Я столкнулся с той же проблемой некоторое время назад, и вот что я сделал:

Сначала я отразил дисплеи, как уже было предложено. Вскоре после этого я понял, что очень неприятно, когда краем глаза у меня выключен экран MacBook. Это потребовало, чтобы я убил яркость на экране MacBook. Но будучи ленивым парнем, я ненавидел необходимость вручную регулировать яркость каждый раз, когда отключал / подключал внешний монитор. Поэтому я подумал, есть ли способ автоматизировать этот процесс. Я нашел это бесплатное приложение под названием Control Plane, которое позволяет мне устанавливать «контексты» в зависимости от того, подключены ли определенные устройства (мониторы, жесткие диски и т. Д.), Находятся ли определенные Wi-Fi-сети в зоне действия и т. Д .; и на основании этих условий запускают определенные сценарии оболочки. Так что все, что мне нужно было сделать, это написатьkillBrightness.scpt) убить яркость на экране macbook и вызвать скрипт оболочки killBrightness.scpt; и вызвать этот сценарий оболочки в необходимом контексте.

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

Сценарий оболочки

#!/bin/sh

osascript /path/to/killBrightness.scpt

Поскольку я подключил к своему MacBook много разных мониторов, я заметил, что когда подключен один монитор с другим соотношением сторон, мои окна свисают с края экрана. Решением этой проблемы будет изменение размеров окон, но это крайне неэффективно, когда вы используете тонну приложений и окон, как я; Кроме того, мне так же лениво, как и мне, не понравилось это решение. Итак, с помощью приятных ребят из Stack Overflow я смог придумать этот AppleScript (называемый resizer.scpt) для автоматического изменения размера всех окон (почти) всех приложений (оговорка в том, что некоторые приложения не используют правильные Фреймворки пользовательского интерфейса перехватывают, поэтому изменить их размер довольно сложно)

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

Теперь все, что мне нужно было сделать, это написать аналогичный сценарий оболочки для вызова resizer.scptи поместить его в ControlPlane, и я был снова настроен быть ленивым!

Надеюсь это поможет

PS: я забыл упомянуть, что все это было сделано на моем 15-дюймовом MacBook Pro под управлением Lion


Я бы добавил еще один голос, если бы это было возможно. Благодарность!
noamtm

2

Другое решение, хотя и гетто, - разместить очень слабый ферритовый магнит (например, магниты на холодильник) рядом с датчиком эффекта Холла ноутбука.

Это имеет то преимущество, что имитирует режим macshell при сохранении открытой крышки для повышения эффективности охлаждения.

Не используйте сильные неодимовые магниты. Это может повредить датчик эффекта Холла.

Чтобы дифференцировать: ферритовые магниты являются слабыми и сделаны из черного композита, неодимовые магниты очень прочные и обычно покрыты никелем, имея блестящий серебряный вид

! [введите описание изображения здесь


Здравствуй! как мне различить два? Где ты взял свой?
анки

@ankiiiiiii ферритовые магниты являются слабыми и сделаны из черного композита, неодимовые магниты очень прочные и обычно покрыты никелем, имея блестящий серебряный вид.
gatosec

1

Это сочетание нескольких других постов / комментариев здесь в одном месте. Я использую MacBook Pro под управлением El Capitan.

Преимущества этого метода перед командами терминала:

  1. перезагрузка не требуется
  2. нет модификации boot-args

шаги:

  1. подключите и включите внешний монитор
  2. перейдите в Системные настройки -> Дисплеи -> Расположение
    • снимите флажок "зеркальные отображения"
    • перетащите белую строку меню с дисплея MacBook на внешний монитор (см. скриншоты ). Это делает внешний монитор основным дисплеем.
    • Расставьте синие прямоугольники так, чтобы касались только углы (скриншот предоставлен Кайлом Кронином в постах выше). Это предотвращает перемещение мыши между экранами.
  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. Теперь вы используете только свой внешний дисплей, курсор не будет переходить на другой дисплей. Сейчас только один дисплей.

Это не работает После закрытия крышки компьютер переходит в спящий режим, и затем он не просыпается, независимо от того, нажимаю ли я клавиши на внешней клавиатуре или кнопку мыши Bluetooth. Он не проснется, пока вы снова не откроете крышку.
OMA

Это связано с зарядным устройством?
Сирадж Алам

Пробовал как подключен, так и не подключен
OMA

Это должно работать (если вы заряжаете) - но это бесполезно, поскольку он явно говорит, что ему нужно открыть экран.
где

-2

Как только вы подключили внешний монитор, на некоторое время вы увидите расширенную настройку монитора. Но если вы не хотите использовать экран ноутбука, просто закройте крышку MacBook Pro и продолжайте работать на большом экране, это работает. Ноутбук не переходит в спящий режим. Это с выпуском Lion.


Я думаю, что Кайл спрашивал, как он может сделать это с открытой крышкой.
Кевин Чен

Это не работает Закрытие крышки приводит к тому, что весь компьютер заходит в обычный режим сна, поэтому внешний дисплей также гаснет.
OMA
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.