다음을 통해 공유


태블릿 모드

개요

태블릿 모드는 Windows 10에서 제공되는 새로운 적응형 사용자 환경으로 앱과 Windows 셸의 모양과 동작을 물리적 폼 팩터와 고객의 사용량 기본 설정에 맞게 최적화합니다. 이 문서에서는 투인원 장치 및 태블릿에서 태블릿 모드를 구현하는 방법, 특히 "태블릿 모드"를 켜고 끄는 방법을 설명합니다.

태블릿 모드는 장치 환경을 태블릿 모드에서 데스크톱 모드로, 그리고 그 반대로 전환하는 기능입니다. 사용자가 "태블릿 모드"에 진입하고 종료하는 기본 방법은 알림 센터를 통해 수동으로 작업 표시줄의 오른쪽 아래에 있는 아이콘을 클릭하는 것입니다. 또한 OEM은 하드웨어 전환(예: 투인원 장치를 폴더형에서 태블릿으로 변환하고 그 반대의 경우도 마찬가지)을 보고할 수 있어 두 모드 간에 자동 전환이 가능합니다. 그러나 태블릿 모드에서는 사용자가 항상 자신의 환경을 제어할 수 있어야 하므로, 이러한 하드웨어 전환은 사용자가 확인해야 하는 알림 프롬프트를 통해 표시됩니다. 사용자는 기본 응답을 설정하는 옵션도 있습니다.

대상 장치

     
태블릿 분리 가능 컨버터블
태블릿 분리 가능 컨버터블
외부 모니터 + 키보드 + 마우스에 도킹할 수 있는 순수 태블릿 및 장치입니다. 사용자 지정 디자인이 적용된 분리 가능한 키보드가 있는 태블릿과 비슷한 장치입니다. 접거나 회전하는 키보드가 있는 노트북과 비슷한 장치입니다.

장치가 태블릿 모드로 전환되면 다음이 발생합니다.

  • 전체 화면에서 크기 조정이 시작되어 몰입형 환경을 제공합니다.
  • Microsoft Store 앱의 제목 표시줄은 자동으로 숨겨져 불필요한 기능을 치우고 콘텐츠가 잘 보이도록 합니다.
  • Microsoft Store 앱 및 Win32 앱은 태블릿 모드에서 터치 우선이 되도록 레이아웃을 최적화할 수 있습니다.
  • 사용자는 위쪽 가장자리에서 아래로 살짝 밀어 Win32 앱을 포함한 앱을 닫을 수 있습니다.
  • 사용자는 Win32 앱을 포함하여 최대 두 개의 앱을 나란히 맞춰 손가락으로 동시에 크기를 쉽게 조정할 수 있습니다.
  • 앱은 사용자의 큰 노력 없이도 병렬로 자동 시작하여 멀티태스킹 레이아웃을 만들 수 있습니다.
  • 작업 표시줄은 태블릿에 더 적합한 탐색 및 상태 표시줄로 변환됩니다.
  • 터치 키보드를 자동으로 호출할 수 있습니다.

물론 "태블릿 모드"에서도 사용자는 스냅 어시스트, 작업 보기 및 알림 센터와 같은 Windows 10 기능을 즐길 수 있습니다. 터치 사용 장치에서 고객은 이러한 기능에 대한 터치 친화적인 호출에 액세스할 수 있습니다. 왼쪽 가장자리에서 살짝 밀어 작업 보기를 표시하거나 오른쪽 가장자리에서 살짝 밀어 알림 센터를 불러올 수 있습니다.

태블릿 모드에서는 고객이 가장 편안한 방식으로 장치를 유연하게 사용할 수 있습니다. 예를 들어 고객은 8" 태블릿을 외부 모니터, 마우스 및 키보드에 고정하지 않은 상태에서는 "태블릿 모드"에서만 사용하고 싶을 수 있습니다. 이 시점에서 고객은 "태블릿 모드"를 종료하고 이전 버전의 Windows와 같은 방식으로 모든 앱을 데스크톱의 기존 창으로 사용합니다. 마찬가지로, 컨버터블 투인원 장치의 사용자는 하루 중에 장치를 사용하면서(예: 버스에서 통근, 사무실 책상에 앉아 있음) 하드웨어의 신호를 사용하여 적절한 전환 순간을 제안받아 "태블릿 모드"에 진입 및 종료하고 싶어 할 수 있습니다.

태블릿 모드용 장치 디자인

컨버터블 또는 분리 가능한 투인원 장치를 디자인하는 경우 제품을 디자인할 때 다음 순서도를 따라 진행하는 것이 좋습니다. 이렇게 하면 장치의 상태가 변경될 때 태블릿 모드 프롬프트가 표시되도록 올바르게 구현할 수 있습니다. 흐름도의 각 상자에는 구현 옵션이 포함되어 있습니다.

태블릿 모드 흐름도

방법 1 - GPIO 기반 지표에 대한 ACPI 설명 구현

시스템이 상태 전환을 나타내는 데 물리적 GPIO를 사용하는 투인원 장치인 경우, ACPI의 상태 전환 표시기를 설명하면 Windows는 해당 표시기에서 시작된 GPIO 인터럽트를 운영 체제로 자동으로 전달합니다.

자세한 내용은 MSDN에서 다음 리소스를 검토하세요.

방법 2 - 삽입 인터페이스 사용

시스템이 상태 전환을 나타내는 데 물리적 GPIO를 사용하지 않는 투인원 장치인 경우 Microsoft의 "GPIO 노트북 및 슬레이트 표시기 드라이버"에 상태 전환 표시를 주입하는 사용자 또는 커널 모드 드라이버를 개발해야 합니다.

"GPIO 노트북 및 슬레이트 표시기 드라이버"에 대한 주입 인터페이스는 다음과 같이 정의됩니다.

/* 317fc439-3f77-41c8-b09e-08ad63272aa3 */ DEFINE_GUID(GUID_GPIOBUTTONS_LAPTOPSLATE_INTERFACE, 0x317fc439, 0x3f77, 0x41c8, 0xb0, 0x9e, 0x08, 0xad, 0x63, 0x27, 0x2a, 0xa3);

인터페이스에 대해 WriteFile을 호출하면 표시기의 상태를 토글할 수 있습니다. 드라이버가 주입 인터페이스를 사용하는 방법에 대한 코드 샘플은 여기의 MSDN 페이지에서 찾을 수 있습니다. https://msdn.microsoft.com/library/windows/hardware/dn457889.aspx

주입 인터페이스를 사용하는 드라이버를 만드는 경우에도 Microsoft의 "GPIO 노트북 및 슬레이트 표시기 드라이버"가 로드되도록 하려면 노트북/슬레이트 모드 표시기용 ACPI 설명을 선언해야 합니다. 그러나 "노트북 및 슬레이트 표시기"에 대한 ACPI 선언에 GPIO 리소스를 추가할 필요는 없습니다.

참고 장치가 부팅되면 "GPIO 노트북 및 슬레이트 표시기 드라이버"가 먼저 "슬레이트" 모드로 초기화됩니다. 따라서 주입 드라이버가 운영 체제 상태를 확인하여 장치가 부팅된 직후 시스템의 실제 상태와 동기화되었는지 확인하는 것이 중요합니다.

Microsoft의 받은 편지함 드라이버에 상태 전환을 주입하는 드라이버 또는 기타 솔루션은 SOC IHV 파트너에서 이미 제공할 수 있습니다. 이 경우 해당 지침에 따라 IHV의 솔루션을 활용하여 시간과 노력을 절약할 수 있습니다.

방법 3 - 무인 설정을 사용하여 영구 장치 상태 선언

장치가 투인원 장치(예: 일반 노트북 또는 데스크톱)가 아닌 경우 응답 파일에서 ConvertibleSlateModePromptPreference 설정을 사용하여 프롬프트를 사용하지 않도록 설정할 수 있습니다. 값을 0으로 설정하면 프롬프트가 표시되지 않고 UI가 전환되지 않습니다. 값이 지정되지 않은 경우 기본값은 1이며, 이때 시스템에 모드를 전환하라는 메시지가 표시됩니다.

참고 또한 응답 파일에서 DeviceForm 설정을 사용하여 빌드하는 폼 팩터의 유형을 지정하는 것이 좋습니다.

장치 테스트

장치가 ConvertibleSlateMode를 구현하는지 확인합니다.

장치가 ConvertibleSlateMode를 올바르게 구현하는지 확실하지 않은 경우, 장치 관리자에 "GPIO 노트북 또는 슬레이트 표시기 드라이버"가 있는지 확인합니다.

gpio 드라이버 속성

장치 관리자에서 "숨겨진 장치 표시"를 사용하도록 설정하여 이 드라이버가 있는지 확인합니다.

장치 관리자 보기 옵션

"태블릿 모드"에 진입 및 종료하는 데는 두 가지 주요 방법이 있습니다.

  • 수동 - 사용자가 알림 센터에 있는 "태블릿 모드" 단추를 눌러 "태블릿 모드"에 수동으로 진입/종료할 수 있습니다.
  • 트리거된 하드웨어 작업 - OS는 하드웨어가 ConvertibleSlateMode를 통해 폼 팩터가 변경되었다고 표시한 경우 사용자에게 "태블릿 모드"에 진입/종료할지 여부를 요청할 수 있습니다.

Bluetooth 키보드의 상태를 태블릿 모드 트리거로 사용하는 것은 지원되지 않습니다. Bluetooth를 트리거로 사용하는 것의 주요 문제점은 Bluetooth 이벤트가 장치 페어링 및 근접성과 관련이 있으며 이러한 이벤트는 키보드가 사용 중인지 여부에 대한 신호를 안정적으로 보내지 못하기 때문에(예: 키보드가 고객과 멀리 떨어져 있을 수도 있음) "태블릿 모드"에 진입하거나 종료하려는 고객의 의도에 대한 신호를 안정적으로 보내지 못한다는 것입니다.

Bluetooth 지원 키보드와 함께 제공되는 장치가 고객이 모드를 변경할 수 있는 하드웨어 기반 힌트를 제공하는지 확인하려는 경우 현재 폼 팩터를 이해하고 ConvertibleSlateMode를 통해 OS에 신호를 전송하는 센서를 구현하는 것이 좋습니다.

"태블릿 모드"에 진입/종료하라는 Windows 프롬프트는 ConvertibleSlateMode 구현에 따라 달라지므로 ConvertibleSlateMode를 토글하는 펌웨어를 철저히 테스트해야 합니다. 낮은 품질의 ConvertibleSlateMode 구현으로 인해 사용자에게 "’태블릿 모드’에 진입하도록” 여러 번 요청하는 등 최종 사용자 환경이 저하될 수 있습니다.

또한 투인원 장치가 폴더형에서 태블릿으로 변경되면 태블릿을 들고 있는 사용자가 키보드와 터치패드에 실수로 키를 입력할 수 있습니다. Windows는 컨버터블을 태블릿으로 변경할 때 기본 제공 키보드 및 터치패드의 입력 무시를 지원하지 않습니다. 장치 제조업체가 폼 팩터 변경 중에 의도하지 않은 입력을 방지하기 위해 하드웨어 또는 소프트웨어에 조치를 취하고 철저히 테스트할 것을 기대합니다. 다음 표에서는 발생할 수 있는 몇 가지 일반적인 오류와 그 원인이 되는 사용 사례를 보여줍니다. 이러한 사용 사례는 사용자에게 부정적인 전환 환경이 제공되지 않도록 테스트를 거쳐야 합니다.

오류 오류를 일으킬 수 있는 사용 사례
ConvertibleSlateMode는 고객이 관찰할 수 있는 이유(예: 거짓 시작)가 없더라도 전환됩니다.
  • 기계적/전기적 문제
  • 전환이 발생하는 기술적 이유(예: 시스템이 절전 모드로 전환할 때 구성 요소의 전원을 조기에 꺼야 해서 가짜 전환이 발생하는 경우)
시스템이 실제로는 노트북 폼 팩터인데 ConvertibleSlateMode는 시스템이 현재 슬레이트 폼 팩터라고 생각함(또는 그 반대)
  • 장치가 전원 상태 전환 중일 때 장치의 폼 팩터를 변경(예: 전원 켜기/끄기, 절전 모드 전환 등)
  • 시스템의 폼 팩터를 너무 느리게 변경
  • 시스템의 폼 팩터를 너무 빠르게 변경
ConvertibleSlateMode가 연속적으로 빠르게 여러 번 전환되어 OS가 사용자에게 "태블릿 모드"에 진입/종료하라는 메시지를 반복적으로 표시함
  • 시스템의 폼 팩터를 너무 느리게 변경
  • 시스템의 폼 팩터를 너무 빠르게 변경

무인 설정

태블릿 모드 지원 장치를 디자인하는 경우 다음과 같은 무인 설정이 유용합니다.

무인 설정 설명

ConvertibleSlateMode

ConvertibleSlateMode 설정을 사용하면 장치의 물리적 동작(예: 회전 및 화면 키보드)에 영향을 주는 장치의 물리적 기능을 지정하고 최종 사용자에게 표시되는 적절한 첫 번째 사용 환경을 정의하는 데 도움이 됩니다. 노트북 모드를 지정하면 최종 사용자가 실제 키보드에서 입력할 수 있습니다. 태블릿 모드를 지정하는 경우 최종 사용자는 키보드가 제거되거나 키보드가 다시 접혀 액세스할 수 없으므로 실제 키보드에 입력할 수 없습니다.

  • 0 – 태블릿, 컨버터블 또는 분리 가능(기본값)

  • 1 – 노트북

ConvertibleSlateModePromptPreference

ConvertibleSlateModePromptPreference 설정을 사용하면 사용자에게 태블릿 모드에 진입하거나 종료하도록 프롬프트를 표시할지 여부를 지정할 수 있습니다. 장치 폼 팩터 또는 제품 디자인은 프롬프트를 표시할지 여부를 선택하는 데 영향을 줍니다. 프롬프트를 숨기도록 선택하면 모드가 전환되지 않습니다. (즉, 태블릿 모드가 켜진 경우 켜진 상태가 유지되고 태블릿 모드가 꺼져 있으면 꺼진 상태가 유지됩니다.) 하드웨어 이벤트가 발생할 때 프롬프트를 표시하려면 하드웨어 또는 소프트웨어 솔루션을 구현하여 이 설정을 전환해야 합니다.

  • 0 – 사용 안 함, 프롬프트가 표시되지 않고 UI가 모드를 전환하지 않습니다.

  • 1 – 사용(기본값), 프롬프트가 나타나고 사용자가 동의하면 UI가 모드를 전환합니다.

SignInMode

SignInMode 설정을 사용하여 사용자가 로그온한 후 디스플레이를 태블릿 모드로 설정할지 또는 데스크톱 모드로 설정할지 여부를 지정합니다. 이 값을 명시적으로 설정하지 않으면 화면 크기가 10인치 미만이고 기본 전원 관리 프로필(전원 플랫폼 역할)이 슬레이트(즉, 태블릿 폼 팩터)인 경우 기본값은 태블릿입니다. 그렇지 않으면 기본값은 마지막으로 사용한 설정입니다. 이전 설정이 없는 경우 마지막으로 사용한 설정은 데스크톱으로 간주됩니다.

  • 0 – 태블릿(화면 크기가 10인치 미만이고 전원 플랫폼 역할이 슬레이트인 경우 기본값)

  • 1 – 데스크톱

  • 2 – 마지막으로 사용한 설정(태블릿 기본 요구 사항이 충족되지 않은 경우 기본값), 실제 마지막 설정이 없으면 마지막 설정은 데스크톱으로 간주됩니다.

DeviceForm

다양한 앱(예: Bing 및 Cortana)이 지정된 장치 폼 팩터에 대한 올바른 콘텐츠를 확인할 수 있도록 DeviceForm 설정을 지정합니다. 또한 소매 데모 모드와 같은 기능에 이 설정을 사용하여 장치 유형에 가장 알맞은 데모 콘텐츠를 지정할 수 있습니다.

가능한 값은 30개입니다. 기본 값은 아래에 나와 있습니다.

  • 0 – 알 수 없음(기본값)

  • 2 - 태블릿

  • 4 – 노트북

  • 5 - 컨버터블

  • 6 - 분리 가능

"태블릿 모드"의 동작

Windows에서 뛰어난 태블릿 환경을 구현하기 위해, 작업 표시줄의 다음과 같은 데스크톱 측면은 태블릿 모드에 최적화되어 있습니다.

  • 실행 중인 앱 표시 - 사용자에게 실행 중인 앱의 수명 주기를 관리할 것을 추천합니다.
  • 데스크톱에 대한 여러 진입점 - 태블릿 사용자는 "태블릿 모드"에서 데스크톱에 쉽게 액세스할 필요가 없습니다.
  • 작업 표시줄의 빽빽한 레이아웃 - 더 많은 항목이 들어갈 수 있지만 "태블릿 모드"에서는 기본 입력으로 터치를 사용할 가능성이 높으며 덜 빽빽한 레이아웃이 필요합니다.
  • 최상위 수준 및 오버플로 수준에서 Deskband 및 Win32 알림 아이콘을 표시 - 이러한 알림의 대부분은 사용자가 의도적으로 배치한 것이 아니며 일반적으로 사용되지 않습니다.

회전 잠금

회전 잠금은 기본적으로 사용(또는 잠김)으로 설정됩니다. OEM이 회전 잠금을 잠금 해제로 설정하지 않는 한, 새 태블릿을 언박싱하는 고객은 장치를 드는 방법에 따라 OOBE가 가로 또는 세로로 회전하지 않아 불만을 느낄 수 있습니다. OEM은 회전 잠금을 사용하지 않도록 설정하여 고객이 알림 센터의 빠른 작업 영역에서 회전 잠금 설정을 얼마나 쉽게 관리할 수 있는지 살펴보기도 전에 새 장치의 응답성에 만족하도록 할 수 있습니다.

회전 잠금을 사용하지 않도록 설정하고 기본적으로 회전을 사용하도록 설정하려면 다음을 수행합니다.

  1. 감사 모드에서 HKLM\Software\Microsoft\Windows\CurrentVersion\AutoRotation\Enable을 1로 설정합니다. 여기서 1은 회전이 사용됨을 의미합니다.
  2. Sysprep을 사용하여 평소처럼 고객을 위해 컴퓨터를 준비합니다.

알림 영역 아이콘

태블릿 모드로 전환할 때 알림 영역에 몇 가지 변경 사항이 적용됩니다. 다음 아이콘이 표시됩니다.

  • 배터리
  • 네트워크
  • 볼륨
  • 조치 센터

더 구체적으로 설명하자면, 사용자가 이러한 4개의 아이콘 중 하나라도 오버플로로 강등한 경우 최상위 수준으로 다시 전환되거나, OEM이 배터리 아이콘을 오버플로로 강등한 경우 최상위 수준으로 다시 전환됩니다.

그러나 고객이 시스템 아이콘 켜기 또는 끄기(아래에 표시)의 설정에서 이러한 아이콘 중 하나를 사용하지 않도록 설정한 경우 Windows는 고객의 수동 설정을 따르고 아이콘을 사용하도록 설정하지 않습니다.

시스템 아이콘 켜기 또는 끄기

OEM 고정 알림 아이콘, 사용자가 고정한 알림 아이콘 및 오버플로 펼침 단추가 숨김 처리되어 오버플로 창이 효과적으로 숨겨집니다.

알림 아이콘을 최상위 수준으로 자동 승격하는 것은 차단되지만, 아이콘이 최상위 수준으로 올 수 없는 경우에도 앱은 계속해서 알림 메시지를 시작할 수 있어야 합니다. 한 가지 예외는 위치 서비스 아이콘입니다. 시스템 아이콘 켜기 또는 끄기에서 이 아이콘을 사용하도록 설정하면 배터리 아이콘의 왼쪽에 있는 최상위 수준으로 승격할 수 있습니다. 그러나 사용자가 시스템 아이콘 켜기 또는 끄기 설정을 사용하여 위치 서비스 아이콘을 사용하지 않도록 수동으로 선택한 경우 Windows 아이콘이 강제로 승격되지 않습니다.

고객이 알림 영역 설정에서 항상 모든 아이콘을 표시를 선택하면 위의 동작이 꺼지며, 알림 영역은 태블릿 모드가 사용되지 않을 때의 콘텐츠 및 동작으로 되돌아갑니다.

터치 키보드 단추

태블릿 모드로 전환하면 터치 키보드 단추가 숨겨집니다. 태블릿 모드 작업 표시줄 상황에 맞는 메뉴의 터치 키보드 단추 표시 설정을 통해 표시 여부를 제어할 수 있습니다.

앱 아이콘

기본적으로 앱 아이콘은 태블릿 모드의 작업 표시줄에서 보이지 않습니다. 이는 태블릿 모드에서 작업 표시줄에 앱 아이콘 숨기기 설정을 따릅니다.

태블릿 모드 시스템 설정

태블릿 모드 API와 상호 작용하는 앱 만들기

앱에서 UWP(유니버설 Windows 플랫폼) 및 클래식 Windows API를 사용하여 태블릿 모드를 활용할 수 있습니다. 이러한 API를 사용하여 앱의 사용자 환경을 태블릿 모드의 경우 터치 우선으로, 데스크톱 사용 시 마우스 우선으로 조정할 수 있습니다. 이 섹션에서는 애플리케이션에서 UWP 및 클래식 Windows API를 모두 사용하여 태블릿 모드를 감지하고 대응하는 방법을 설명합니다.

API를 사용하면 Windows 데스크톱 애플리케이션과 유니버설 Windows 앱 모두 현재 상호 작용 모드를 쿼리하고 여기에 설명된 대로 모드 변경에 응답할 수 있습니다.

클래식 Windows 앱 API

   
UIViewSettings 앱에서 특정 애플리케이션에 대한 시스템의 현재 포인터 장치 기본 설정 상태를 쿼리하도록 허용합니다. GetForCurrentView에서 가져오는 활성화할 수 없는 클래스입니다.
UserInteractionMode Windows.UI.ViewManagement.UserInteractionMode 열거의 값을 사용하는 GetForWindow의 속성입니다. 허용되는 값은 터치 및 마우스입니다.
WM_SETTINGSCHANGE "UserInteractionMode"를 사용하여 WM_SETTINGSCHANGE를 브로드캐스트하여 현재 입력 상태가 변경되면 앱에 알림이 표시됩니다.

유니버설 Windows 앱 API

   
UIViewSettings 앱에서 특정 애플리케이션에 대한 시스템의 현재 포인터 장치 기본 설정 상태를 쿼리하도록 허용합니다. GetForCurrentView에서 가져오는 활성화할 수 없는 클래스입니다.
UserInteractionMode Windows.UI.ViewManagement.UserInteractionMode 열거의 값을 사용하는 UIViewSettings의 속성입니다. 허용되는 값은 터치 및 마우스입니다.
SizeChanged 현재 입력 상태가 변경되면 이벤트가 트리거됩니다. 앱은 이 이벤트를 쿼리해야 합니다.

예제 1: 앱 시작 시 레이아웃 최적화

앱이 시작되면 다음 예제와 같이 시스템의 현재 상태를 쿼리하고 현재 상호 작용 모드에 대한 레이아웃을 최적화할 수 있습니다.

유니버설 Windows 앱(C#) 샘플

using Windows.UI.Xaml;
using Windows.UI.ViewManagement;
 
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            InitializeComponent();
            // Every view gets an initial SizeChanged, so we will do all our 
            // work there. This means that our view also responds to dynamic
            // changes in user interaction mode.
            Window.Current.SizeChanged += SizeChanged;
        }
 
        private void SizeChanged(object sender, RoutedEventArgs e)
        {
            switch(UIViewSettings.GetForCurrentView().UserInteractionMode)
            {
                case UserInteractionMode.Mouse:
                    VisualStateManager.GoToState(this, "MouseLayout", true);
                    break;
 
                case UserInteractionMode.Touch:
                default:
                    VisualStateManager.GoToState(this, "TouchLayout", true);
                    break;
            }
        }
     }

클래식 Windows 앱(C++) 샘플

using namespace Microsoft::WRL::Wrappers;
using namespace Microsoft::WRL;
HRESULT OnLayout()
{
    ComPtr<IUIViewSettingsInterop> uiViewSettingsInterop;
    HRESULT hr = GetActivationFactory(
        HStringReference(RuntimeClass_Windows_UI_ViewManagement_UIViewSettings).Get(), 
        &uiViewSettingsInterop);
    if (SUCCEEDED(hr))
    {
        ComPtr<IUIViewSettings> uiViewSettings; 
        hr = uiViewSettingsInterop->GetForWindow(hwndApp, IID_PPV_ARGS(&uiViewSettings)); 
        if (SUCCEEDED(hr))
        {
            Windows::UI::ViewManagement::UserInteractionMode mode;
            hr = uiViewSettings->get_UserInteractionMode(&mode);
            if (SUCCEEDED(hr))
            {
                switch (mode)
                {
                case UserInteractionMode_Mouse:
                    hr = LayoutForMouse(); 
                    break;
 
                case UserInteractionMode_Touch:
                default:
                    hr = LayoutForTouch();
                    break;
                }
            }
        }
    }
    return hr;
}

예제 2: 태블릿 모드 시작/종료에 대응

장치가 태블릿 모드에 진입하거나 종료하면 셸에서 사용자에게 모드를 전환하라는 메시지를 표시합니다. 이를 트리거로 사용하여 현재 상호 작용 모드에 맞게 앱을 최적화할 수 있습니다. 다음 예제와 같이 시스템의 현재 상태를 쿼리해야 합니다.

유니버설 Windows 앱(C#) 샘플

예제 1과 동일합니다.

클래식 Windows 앱(C++) 샘플

// WM_SETTINGCHANGE handler
void OnSettingsChange(LPARAM lParam)
{
    if (lParam != 0)
    {
        PCWSTR message = reinterpret_cast<PCWSTR>(lParam);
        if (CSTR_EQUAL == CompareStringOrdinal(message, -1,                                                                                                                                                  L“UserInteractionMode”, -1, TRUE))
        {
             OnLayout();
        }
    }
}

FAQ(질문과 대답)

# 질문 답변
1 장치가 "태블릿 모드"에 있는 경우 파일 연결이 변경되나요? 아니요, 모든 앱은 "태블릿 모드"에서 지원되므로 Windows에서는 파일 연결을 변경하지 않습니다.
2 외부 USB 키보드를 삽입할 때 "태블릿 모드"에 진입/종료하라는 자동 메시지가 표시되나요? 아니요, 자동 프롬프트는 키보드가 있으면 트리거되는 것이 아니라 ConvertibleSlateMode 값의 토글을 통해 트리거됩니다.
3 장치 관리자에 "GPIO 노트북 또는 슬레이트 표시기 드라이버"가 표시되도록 트리거하는 것은 무엇인가요? PNP0C60(노트북/슬레이트 모드 상태 표시기)을 정의하면 장치 관리자에 드라이버가 표시되도록 트리거됩니다. 이 드라이버를 표시하려면 장치 관리자에서 "숨겨진 장치 표시" 옵션을 선택해야 합니다.
4 동일한 시나리오를 사용으로 설정하기 위해 외부 키보드 및 마우스와 함께 순수 AiO(올인원)를 사용할 수 있나요? 예, AiO는 하드웨어에 대해 적절한 전환 지점에서 ConvertibleSlateMode 토글을 구현하여 "태블릿 모드"를 활용할 수 있습니다.
5 "태블릿 모드"를 사용하지 않는 동안 터치 키보드는 자동으로 사용하지 않도록 설정되나요? 터치 키보드는 "태블릿 모드"에 있는 동안에만 자동으로 호출됩니다. 데스크톱을 사용할 때는 터치 키보드를 수동으로 호출해야 합니다. 사용자가 "태블릿 모드"에 있지 않지만 장치에서 키보드를 제거하면 터치 키보드가 표시됩니다.
6 Bluetooth 키보드는 "도크"로 간주되나요? 아니요, 해당 시나리오가 항상 사실이지는 않을 수 있으므로 Bluetooth 키보드는 "도크"로 간주되지 않습니다. 태블릿 모드는 절대로 프롬프트를 트리거하기 위해 키보드(USB, Bluetooth 등)의 여부를 사용하지 않습니다. 적절한 경우에 ConvertibleSlateMode를 전환하여 Bluetooth 분리 가능한 디자인을 구현할 수 있습니다.
7 Win32 앱: Win32 앱이 태블릿 모드를 활용하려면 UWP(유니버설 Windows 플랫폼) API를 사용하여 앱을 컴파일해야 합니까? Win32 앱에는 터치 우선 및 마우스 우선 사용 중에서 적응하는 데 사용할 수 있는 Win32 전용 API가 있습니다.
8 애플리케이션 개발자의 경우 태블릿 및 데스크톱 모드 전환을 처리하기 위해 API를 호출해야 하나요? 아니면 Windows에서 자동으로 처리하나요? 애플리케이션 내에서 레이아웃을 변경하려면 UWP API 또는 Win32 API를 사용하여 "태블릿 모드"를 나타내야 합니다. "태블릿 모드"에 진입/종료할 때 애플리케이션의 실제 크기 조정은 자동으로 처리됩니다.
9 시스템이 ConvertibleSlateMode를 구현하지만 상태 전환 후에 "태블릿 모드"에 진입/종료하라는 메시지가 표시되지 않습니다. 투인원 장치가 ConvertibleSlateMode를 올바르게 토글하지만 시스템에서 "태블릿 모드"에 진입/종료하라는 메시지를 표시하지 않으면 기능이 꺼져 있는 것일 수 있습니다. 태블릿 모드를 켜려면 설정\시스템\태블릿 모드로 이동합니다. 드롭다운 목록에서 "장치에서 모드를 전환하려는 경우"를 선택하고 "항상 확인 프롬프트 표시"를 선택합니다.
10 태블릿의 경우 GPIO가 지원되면 가상 드라이버가 필요한가요? GPIO를 사용할 수 있는 경우 BIOS를 변경해야 하나요? 물리적 GPIO 또는 주입 드라이버 접근 방식 중에서 선택할 수 있습니다. ConvertibleSlateMode를 올바르게 전환하고 있다면 변경할 필요가 없습니다. 중요: convertibleSlateMode의 Windows 10 구현은 Windows 8.1과 다릅니다. 장치가 올바르게 동작하도록 철저히 테스트해야 합니다.
11 태블릿 모드 지원을 위한 UEFI BIOS 요구 사항 또는 변경 사항이 있나요? 태블릿 모드 지원을 위해 UEFI BIOS의 내재적인 변경 사항은 필요하지 않습니다. 가장 편리한 방법을 통해 ConvertibleSlateMode를 자유롭게 토글할 수 있습니다.
12 화면 회전은 태블릿 모드에 연결되어 있나요? 아니요, 화면 회전이 꼭 태블릿 모드와 관련이 있는 것은 아닙니다. 화면 회전은 현재 장치 구성에 연결되어 있으며, 이 구성은 장치가 "태블릿 모드"에 있는지 여부에 매핑되거나 매핑되지 않을 수 있습니다.
13 작업 표시줄이 왼쪽에 있으면 어떻게 되나요? 작업 표시줄은 지정된 위치에 유지됩니다.
14 최종 고객에게 확인을 표시하지 않고 시스템에서 보고한 노트북 또는 슬레이트 모드에 따라 시스템이 태블릿 모드를 자동으로 사용하거나 사용하지 않도록 설정하는 시나리오에 대한 계획이 있나요? 지원 안 됨 우리는 모드 전환 여부를 항상 사용자의 선택에 맡기고자 합니다. 사용자는 원하는 경우 이를 재정의할 수 있습니다.
15 "태블릿 모드 진입"을 요청하는 UI가 변경되나요? 사용자가 "매번 이 작업을 수행"하기로 선택할 수 있는 확인란을 추가할 계획이 있나요? 예, 현재 디자인부터 변경됩니다. 사용자가 다음에 수행할 작업(예: "항상 프롬프트 표시" 등)을 선택할 수 있도록 "예/아니요" 단추와 드롭다운 목록이 포함될 예정입니다.
16 태블릿 모드에서 글로벌 뒤로 단추는 어디에 있나요? 시작 단추 옆에 있습니다.