Как я могу получить локализованное имя NSScreen на macOS старше 10.15? - PullRequest
1 голос
/ 27 апреля 2020

macOS 10.15+ обеспечивает NSScreen.localizedName, которое предоставляет имя для экрана, отображаемое пользователем, такое как «Встроенный дисплей Retina» или «Встроенный дисплей Retina» (если местный язык - русский) .

Однако мне нужно поддерживать macOS старше 10.15, и неясно, каким должен быть запасной вариант.

Я вижу этот вопрос: «Как получить отображаемое имя с отображаемым идентификатором в Ma c OS X?» . Однако, все ответы используют CGDisplayIOServicePort, который недоступен в macOS> 10.9.

Я также вижу этот вопрос, "CGDisplayIOServicePort устарел в OS X> = 10.9, как заменить? ". Однако все ответы зависят от GLFW , огромной библиотеки, которую я явно не хочу включать, просто чтобы получить отображаемое имя.

(РЕДАКТИРОВАТЬ) Я также нашел эту прокладку , «получить отображаемое имя из NSScreen» , но оно не работает должным образом - например, мой «Встроенный дисплей Retina» получает нечетное имя «Цветной ЖК-дисплей» и не находит io_service_t для экрана iPad моего Sidecar.

1 Ответ

0 голосов
/ 30 апреля 2020

Фактическое имя экрана - «Цветной ЖК-дисплей», но удобное для пользователя localizedName (и то, что System Prefs показывает в более старых версиях ОС) имеет дополнительную проверку для определения того, что это внутренний дисплей ноутбука.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...