동적 조명

이 항목은 WINDOWS 앱이 개방형 휴먼 인터페이스 디바이스(HID)조명 및 조명 표준을을 구현하는 연결된 디바이스에서 동적 조명 효과를 제공하는 방법에 대해 설명합니다. 특히 하나 이상의 램프(조명, LED, 전구 등)가 있는 디바이스에 대한 LampArray 사양입니다.

중요 API

개요

Windows의 동적 조명 지원을 통해 앱 개발자와 최종 사용자 모두 주변 장치 및 기타 연결된 디바이스에서 조명 효과를 제어하고 동기화할 수 있습니다.

지원되는 앱 형식 및 플랫폼

  • Win10 버전 1809(2018년 10월) 이상입니다.
    • 포그라운드 UWP 및 Win32 앱에 적용됩니다.
  • Windows 11 빌드 23466(미리 보기) 이상입니다.
    • 포그라운드 및 백그라운드(앰비언트) UWP 및 Win32 앱에 적용됩니다.
  • Xbox GDK 2023년 3월 업데이트 1 이상입니다.

지원되는 디바이스 및 디바이스 형식

  • 키보드 또는 키패드
  • 마우스
  • 게임 컨트롤러(게임 패드, 플라이트스틱, 스티어링 휠 등)입니다.
  • 주변 장치(스피커, 마우스 패드, 마이크, 웹캠 등의 일반 장치)입니다.
  • 장면(전구, 스포트라이트, 스트로브 조명, 광고판, 카메라 플래시 등과 같은 방/무대/영역 장치)입니다.
  • 알림(알람, 음성 도우미 등과 같은 사용자 주의 장치)입니다.
  • 섀시(RAM, 마더보드, 팬 등과 같은 내부 PC 구성 요소)입니다.
  • 착용식 컴퓨터(헤드셋, 시계, 피트니스 트래커, 신발 등의 액세서리)입니다.
  • 가구(의자, 책상, 책장 등)입니다.
  • 아트(그림이나 조각 등)입니다.
  • 헤드셋(헤드폰 또는 마이크와 같은 헤드용으로 특별히 디자인된 액세서리)입니다.

Windows 앱은 앱이 포그라운드(Windows 10부터 시작)에 있을 때와 백그라운드에 있을 때(Windows 11부터 주변 조명이라고도 함) HID LampArray 디바이스를 제어할 수 있습니다.

사용자는 설정 -> 개인 설정 -> 동적 조명 화면을 통해 LampArray 디바이스 환경(포그라운드 및 배경 모두)을 사용자 지정하여 여러 제조업체의 디바이스를 동기화하고, 선택한 디바이스와 폼 팩터에서 밝기 및 효과를 제어하고, 주변 백그라운드 앱으로 디바이스에 대한 액세스의 우선 순위를 지정할 수 있습니다. 이러한 기능을 통해 앱은 사용자를 즐겁게 하고, 생산성을 향상시키고, Windows에서 보다 쉽게 액세스할 수 있도록 하고, 동적 조명 호환 디바이스 집합에서 응집력 있는 환경을 제공할 수 있습니다.

Screenshot of the Dynamic Lighting settings screen.

디바이스 우선 순위 지정

Windows는 앱 상태에 따라 동적 조명의 우선 순위를 지정합니다. 기본적으로 포그라운드 앱은 사용자가 설정 달리 지정하지 않는 한 항상 LampArray 디바이스에 대한 제어권을 할당받습니다. 둘 이상의 앰비언트 백그라운드 앱이 LampArray 디바이스를 제어하려고 하는 경우 시스템은 설정 우선 순위가 지정된 앱에 컨트롤을 할당합니다.

백그라운드(주변) 조명

Windows.Devices.Lights의 "ambient" API를 사용하면 백그라운드 애플리케이션에서 사용자가 전경에서 관련 없는 앱(예: 동기화된 조명 효과를 구동하는 음악 앱)과 상호 작용하는 동안 LampArray 디바이스를 제어할 수 있습니다.

앱은 사용자 설정에 따라 LampArray.AvailabilityChanged 이벤트를 받을 수 있습니다. 앱은 DeviceWatcher 클래스와 함께 연결된/연결이 끊긴 모든 LampArray 디바이스를 추적 및 관리하고 앱이 제어해야 하는 사용자를 확인할 수 있습니다. 한 가지 사용 예시는 연결된 각 디바이스에 대한 아이콘을 렌더링하고, 사용할 수 없는 디바이스가 회색으로 표시되고, 사용자가 포그라운드/백그라운드 앱 기본 설정을 변경할 수 있는 동적 조명 설정 페이지로 연결되는 UI입니다.

사용자 설정

사용자는 설정 -> 개인 설정 -> 동적 조명의 동적 조명 페이지를 통해 HID LampArray 디바이스를 개별 및 전역 수준에서 제어하고 구성할 수 있습니다. 호환되는 디바이스가 하나 이상 PC에 연결된 경우 이 페이지는 설정에 나타납니다.

Screenshot of the Dynamic Lighting settings screen.

  1. 연결되면 사용자가 개별 디바이스 설정을 변경할 수 있는 페이지 위쪽의 디바이스 카드 호환되는 디바이스가 표시됩니다.

  2. 전역 동적 조명 설정은 디바이스 카드 아래에 있습니다(이러한 설정을 변경하면 연결된 모든 디바이스에 영향을 줌).

    1. 내 디바이스에서 동적 조명 사용하기를 토글하면 사용자가 동적 조명을 켜거나 끌 수 있습니다. 동적 조명이 꺼지면 디바이스는 기본 비동기 조명 동작으로 작동해야 합니다. 동적 조명에는 기본 효과 집합이 포함되어 있습니다.
    2. 포그라운드의 호환되는 앱이 항상 조명을 제어하도록 하면 사용자가 기본 동적 조명 앱 동작을 켜거나 끌 수 있습니다. 이 기능을 해제하면 컨트롤을 원하는 포그라운드 앱이 활성화된 경우에도 백그라운드 앱이 연결된 디바이스를 제어할 수 있습니다.
    3. 백그라운드 조명 제어 섹션을 사용하면 사용자가 자신을 주변 백그라운드 컨트롤러로 등록한 설치된 앱의 우선 순위를 지정할 수 있습니다. 앱을 목록의 맨 위로 끌어다 놓고 우선 순위를 지정하고 목록의 다른 앱보다 디바이스를 제어할 수 있는지 확인합니다. 주변 백그라운드 설정은 디바이스 및 연결된 포트에 연결됩니다. LampArray를 분리한 다음 다른(USB) 포트에 연결하면 다른 디바이스로 표시됩니다.
    4. 밝기 슬라이더를 사용하면 사용자가 디바이스에서 LED 밝기를 설정할 수 있습니다.
    5. 효과 드롭다운을 사용하면 사용자가 디바이스에 대한 색과 효과를 선택할 수 있습니다.

    Screenshot of the Dynamic Lighting settings Effects screen.

참고 항목

백그라운드 조명 제어를 위해 디바이스를 선택하지 않으면 "자치 모드"에서 작동합니다. 즉, 디바이스가 기본 펌웨어 동작으로 되돌립니다.

패키징 및 앱 ID

앰비언트 백그라운드 애플리케이션은 앱 매니페스트에서 "com.microsoft.windows.lighting" AppExtension을 선언해야 합니다(이 작업을 수행하는 방법에 대한 자세한 내용은 앱 확장 만들기 및 호스트 참조). 이 요구 사항은 확장을 지원하는 패키지 ID(패키지된 앱)가 있는 프로세스에서 AmbientLightingClient의 연결만 허용하는 AmbientLightingServer에 의해 적용됩니다. 이 요구 사항은 사용자가 설치된 앱에 대한 정책을 정의한 다음 런타임에 해당 정책의 상관 관계를 지정할 수 있도록 하는 데 필요합니다.

앱 ID는 런타임에 사용자 기본 설정을 확인할 수 있도록 앰비언트 애플리케이션에 필요합니다. 애플리케이션이 설치되면 앰비언트 API를 사용하는 경우 시스템은 앱의 실행 중인 인스턴스를 사용자의 기본 설정과 상호 연결해야 합니다. 또한 설정에서 사용자가 앱을 사용할 수 있도록 하려면 앱이 주변 조명 API의 합법적인 사용자임을 시스템에 나타내는 사후 설치 아티팩트가 필요합니다.

이 ID 요구 사항은 MSIX 패키징을 통해 달성됩니다.

패키징 및 설치에 MSIX 패키징을 이미 사용하고 있는 경우 추가 요구 사항은 없습니다.

패키지되지 않은 앱이 있는 경우 애플리케이션 ID를 가져오는 데 필요한 추가 단계가 있습니다. 설치를 전체 MSIX로 마이그레이션하거나 MSIX의 간소화된 스파스 패키징 및 외부 위치 기능을 사용할 수 있습니다. 외부 위치를 사용한 스파스 패키징은 설치/설치를 MSIX로 완전히 변환할 필요 없이 기존 앱 설치가 앱 ID의 이점을 얻을 수 있도록 설계되었습니다. 설정/설치의 새로운 단계로, 도구를 사용하여 설치 중인 앱을 나타내는 MSIX 패키지를 만듭니다.

설치를 설명하는 AppXManifest.xml 패키징 매니페스트를 정의해야 합니다. MSIX 패키지는 MakeAppXPackage 도구를 사용하여 만들어집니다. 설치 시 설치된 실행 파일의 위치를 지정하는 패키지 관리자 API를 사용하여 MSIX 패키지를 설치합니다. 편의를 위해 add-appxpackage PowerShell 스크립트는 이 API 동작도 래핑합니다. 또는 설치 시 AddPackageByUriAsync를 사용하여 MSIX 패키지를 설치할 수 있습니다.

패키지되지 않은 앱 설치의 경우 실행 파일에 대한 병렬 애플리케이션 매니페스트 요구 사항도 있습니다.

패키지된 앱과 패키지되지 않은 앱에 대한 자세한 정보는 배포 개요를 참조하세요.

용어 설명

다음의 용어와 개념은 다양한 주변 조명 시스템 구성 요소를 설명하는 데 사용됩니다.

  • 자치 모드

    HID 사양에서 하드웨어가 해당 펌웨어에 정의된 기본 동작으로 되돌아가는 모드로 정의됩니다. 예를 들어 OS가 디바이스를 적극적으로 제어하지 않거나 사용자가 디바이스에 대한 OS 참여를 옵트아웃한 경우 디바이스에 미리 프로그래밍된 시각 효과가 기본값이 될 수 있습니다. 디바이스는 사용자 기대와 원활하게 상호 작용할 수 있도록 자율 모드에서 반환하기 위해 HID 명령에 응답해야 합니다.

  • 앰비언트 앱

    패키지 ID가 있고 필요한 앱 확장을 지원하는 Windows.Devices.Lights API 소비자입니다. 앰비언트 앱은 AmbientLightingClient에서 알림을 받습니다. 이벤트는 액세스 권한이 있는 디바이스를 앱에 알릴 수 있습니다. 이러한 방식으로 앱은 연결된 조명 디바이스를 열거하는 UI를 표시하고 사용자 정책 설정으로 인해 현재 액세스할 수 없는 디바이스를 회색으로 표시할 수 있습니다. 앰비언트 앱은 Windows.Devices.Lights API를 활용하여 사용 가능한 디바이스에서 효과를 유도합니다.

  • 설정 애플릿

    레지스트리의 HKEY_CURRENT_USER(HKCU)에 디바이스 사용자 기본 설정당 저장합니다. 사용자는 지정된 디바이스에 대해 우선 순위가 지정된 앰비언트 앱 집합을 디바이스별로 정의할 수 있습니다. 사용자는 동적 조명을 옵트아웃할 수도 있습니다.

  • 앱 ID

    앱 모델 개념입니다. 앱 ID가 있는 앱은 런타임 시 시스템에서 식별할 수 있습니다.

  • MSIX

    이전에 APPX로 알려진 Microsoft 배포 및 패키징 기술입니다.

예제

LampArray 샘플

Windows.Devices.LightsWindows.Devices.Lights.Effects API를 사용하여 주변 장치의 RGB 조명을 제어하는 방법을 보여 줍니다.

AutoRGB 샘플

데스크톱 화면에서 하나의 대표 색을 추출하고 이를 사용하여 연결된 RGB 디바이스에서 LED 램프를 비추는 방법을 보여 줍니다.

참고 항목