平板電腦模式

概觀

平板電腦模式是Windows 10中提供的新調適型使用者體驗,可針對實體尺寸和客戶的使用喜好設定,將應用程式和 Windows 殼層的外觀和行為優化。 本檔說明如何在 2-in-1 裝置和平板電腦上實作平板電腦模式,特別是如何切換和移出「平板電腦模式」。

平板電腦模式是一項功能,可讓您的裝置體驗從平板電腦模式切換為桌面圖案和返回。 使用者進入和結束「平板電腦模式」的主要方式是透過控制中心手動,方法是按一下工作列右下角的圖示。 此外,OEM 可以回報硬體轉換 (例如,從 clamshell 轉換成平板電腦 2-in-1 裝置,反之亦然,) ,啟用兩種模式之間的自動切換。 不過,平板電腦模式的主要承諾是使用者隨時都能控制其體驗,因此這些硬體轉換會透過使用者必須確認的快顯通知提示呈現。 使用者也可以選擇設定預設回應。

目標裝置

     
片 可卸離 兌換
平板電腦 可卸離 敞篷
可停駐到外部監視器 + 鍵盤 + 滑鼠的純平板電腦和裝置。 具有自訂設計可卸離鍵盤的平板電腦裝置。 膝上型電腦型裝置,具有折迭或旋轉的鍵盤。

當裝置切換到平板電腦模式時,會發生下列情況:

  • 開始在整個畫面上調整大小,以提供沉浸式體驗。
  • Microsoft Store 應用程式的標題列會自動隱藏,以移除不必要的 Chrome,並讓內容更亮。
  • Microsoft Store 應用程式和 Win32 應用程式可以在平板電腦模式中將其配置優化為觸控優先。
  • 使用者可透過從上邊緣向下撥動來關閉應用程式,甚至是 Win32 應用程式。
  • 使用者可以並排貼齊兩個應用程式,包括 Win32 應用程式,並輕鬆地使用手指同時調整它們的大小。
  • 應用程式可以並排啟動,以建立多工配置,而不需要太多使用者工作。
  • 工作列會轉換成更適合平板電腦的導覽和狀態列。
  • 觸控式鍵盤可以自動叫用。

當然,即使在「平板電腦模式」中,使用者仍可享有Windows 10功能,例如貼齊協助、工作檢視和控制中心。 在啟用觸控功能的裝置上,客戶可以存取這些功能的觸控易記調用:他們可以從左邊緣撥動來啟動工作檢視,或從右邊緣撥動來啟動控制中心。

平板電腦模式可讓客戶彈性地以最熟悉的方式使用其裝置。 例如,客戶可能會想要以「平板電腦模式」獨佔使用其 8 吋平板電腦,直到他們將其停駐到外部監視器、滑鼠和鍵盤為止。 此時,客戶將會結束「平板電腦模式」,並使用其所有應用程式作為桌面上的傳統視窗,與舊版 Windows 相同。 同樣地,可轉換 2-in-1 裝置的使用者可能會想要在一 (天中的裝置使用「平板電腦模式」,例如,在公車上通路、在辦公室) 的桌面上,使用硬體的訊號來建議適當的轉換時間。

設計適用于平板電腦模式的裝置

如果您要設計可轉換或可中斷連結的 2-in-1 裝置,建議您在設計產品時流覽下列流程圖。 這可確保您已具備正確的實作,讓平板電腦模式提示在裝置的狀態變更時顯示。 流程圖中的每個方塊都包含實作選項。

平板電腦模式流程圖

方法 1 - 實作 GPIO 型指標的 ACPI 描述

如果您的系統是使用實體 GPO 來指出狀態轉換的 2-in-1 裝置,您可以在 ACPI 中描述狀態轉換指標,而 Windows 會自動將該指標引發的 GPIO 中斷轉送至作業系統。

如需詳細資訊,請檢閱 MSDN 上的下列資源。

方法 2 - 使用插入介面

如果您的系統是 2-in-1 裝置,但未使用實體 GPO 來指出狀態轉換,則您必須開發使用者或核心模式驅動程式,以將狀態轉換指示插入 Microsoft 的「GPIO 膝上型電腦和 Slate 指標驅動程式」。

「GPIO 膝上型電腦和 Slate 指標驅動程式」 的插入介面定義為下列內容:

/* 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

如果您要建立使用插入介面的驅動程式,您仍然需要宣告膝上型電腦/平板模式指示器的 ACPI 描述,以確保 Microsoft 的「GPIO 膝上型電腦和 Slate 指標驅動程式」 載入。 不過,您不需要將 GPIO 資源新增至「膝上型電腦和平板指示器」 的 ACPI 宣告。

注意 當裝置開機時,「GPIO 膝上型電腦和 Slate 指標驅動程式」會先在「平板電腦」模式中初始化。 因此,請務必檢查作業系統狀態,以確保它在裝置開機後立即與系統的實際狀態同步。

您的 SOC IHV 合作夥伴可能已經提供驅動程式或其他解決方案,以將狀態轉換插入 Microsoft 的收件匣驅動程式。 如果是這種情況,您可以根據 IHV 的特定指導方針運用 IHV 的解決方案來節省時間和精力。

方法 3 - 使用自動設定來宣告永久裝置狀態

如果您的裝置不是 2-in-1 裝置,例如一般膝上型電腦或桌上型電腦,您可以在回應檔案中使用 ConvertibleSlateModePromptPreference 設定來停用提示。 將值設定為 0,提示將不會顯示,且 UI 不會切換。 如果未指定任何值,預設值為 1,系統會提示您切換模式。

注意 此外,建議您在回應檔案中使用 DeviceForm 設定來指定您要建置的規格類型。

測試您的裝置

確認您的裝置實作 ConvertibleSlateMode

如果您不確定您的裝置是否已正確實作ConvertibleSlateMode,請檢查裝置管理員中是否存在 「GPIO 膝上型電腦或 Slate 指標驅動程式」。

gpio 驅動程式屬性

請務必從裝置管理員啟用 「顯示隱藏的裝置」,以確認此驅動程式是否存在:

裝置管理員檢視選項

有兩種進入/結束「平板電腦模式」的主要方式:

  • 手動 - 使用者可以按位於控制中心的 [平板電腦模式] 按鈕,手動進入/結束「平板電腦模式」。
  • 觸發的硬體動作 - 如果硬體已指出表單尺寸已透過 ConvertibleSlateMode變更,OS 可以詢問使用者是否要進入/結束「平板電腦模式」。

不支援使用藍牙鍵盤作為平板電腦模式觸發程式。 使用藍牙作為觸發程式的主要問題是藍牙事件與裝置配對和鄰近性相互關聯,而且這些事件不會可靠地訊號指出鍵盤是否正在使用 (,甚至可能甚至不在客戶附近) ,因此不會可靠地向客戶發出進入或結束「平板電腦模式」的訊號。

如果您有興趣確定具有藍牙功能的鍵盤隨附的裝置提供硬體型提示,讓客戶能夠變更模式,建議您實作可瞭解目前尺寸的感應器,然後透過 ConvertibleSlateMode 向作業系統發出訊號。

因為 Windows 提示輸入/結束「平板電腦模式」取決於可轉換式SlateMode 的實作,因此請務必確保已徹底測試切換可轉換的韌體。 品質較低的可轉換式Mode 實作可能會導致使用者體驗不佳,例如要求使用者多次「進入平板電腦模式」。

此外,當 2-in-1 裝置從 clamshell 變更為平板電腦時,鍵盤和觸控板可能會從持有平板電腦的使用者收到意外按下。 當可轉換成平板電腦時,Windows 不支援忽略內建鍵盤和觸控板的輸入。 我們預期裝置製造商在其硬體或軟體中運作,以避免在尺寸變更期間發生意外輸入,並徹底測試。 下表顯示可能發生的一些常見錯誤,以及可能導致這些錯誤的使用案例。 這些使用案例應經過測試,以防止使用者有不佳的切換體驗:

錯誤 可能導致錯誤的使用案例
可轉換的SlateMode 參數,即使沒有客戶可觀察的原因, (例如,誤引發) 。
  • 機械/電力問題
  • 例如,導致切換發生 (的技術原因,必須在系統進入睡眠狀態時將元件關閉電源,導致假性轉換)
ConvertibleSlateMode 認為系統目前是平板式尺寸,而實際上是膝上型電腦尺寸 (,反之亦然) 。
  • 在裝置處於電源狀態轉換 (時變更裝置的規格,例如,啟動/關閉電源、進入睡眠等) 。
  • 變更系統的尺寸非常慢
  • 非常快速地變更系統的尺寸
ConvertibleSlateMode 會連續多次切換,導致 OS 重複提示使用者進入/結束「平板電腦模式」。
  • 變更系統的尺寸非常慢
  • 非常快速地變更系統的尺寸

自動設定

如果您要針對具備平板電腦模式的裝置進行設計,下列自動設定很有用:

自動設定 描述

ConvertibleSlateMode

使用 ConvertibleSlateMode 設定時,您可以指定裝置的實體功能,這會影響裝置的實體行為 (,例如旋轉和螢幕鍵盤) ,並協助您定義向使用者呈現的適當第一次使用體驗。 如果您指定膝上型電腦模式,終端使用者可以在實體鍵盤上輸入 。 如果您指定平板電腦模式,則使用者無法在實體鍵盤上輸入,因為已移除鍵盤或鍵盤被翻轉,使其無法存取。

  • 0 – 平板電腦、可轉換或可卸離 (預設)

  • 1 – 膝上型電腦

ConvertibleSlateModePromptPreference

使用 ConvertibleSlateModePromptPreference 設定,您可以指定是否要提示使用者進入或結束平板電腦模式。 裝置尺寸或產品設計會影響您是否選擇顯示提示。 如果您選擇隱藏提示,則不會切換模式。 (也就是說,如果平板電腦模式處於開啟狀態,而平板電腦模式已關閉,則會保持關閉。) 如果您想要在硬體事件發生時出現提示,您必須實作硬體或軟體解決方案來切換此設定。

  • 0 – 已停用;提示未出現,且 UI 不會切換模式

  • 1 – 啟用 (預設) ;提示隨即出現,且使用者同意時 UI 會切換模式

SignInMode

您可以使用 SignInMode 設定來指定是否要在使用者登入之後,將顯示器設定為平板電腦模式或桌面圖案。 如果您未明確設定此值,則如果螢幕大小小於 10 英吋,且您慣用的電源管理設定檔 (電源平臺) 角色,則預設值為平板電腦, (即平板電腦) 。 否則,預設值是上次使用的設定。 如果沒有先前的設定,則會將最後一個使用的設定視為桌面。

  • 0 – 如果螢幕大小小於 10 英吋,且電源平臺角色為平板電腦) ,則平板電腦 (預設值

  • 1 – 桌面

  • 2 – 如果不符合平板電腦預設需求,則上次使用的設定 (預設值) ;如果沒有實際的最後一個設定,桌面會被視為最後一個設定

DeviceForm

您可以指定 DeviceForm 設定,讓各種應用程式 (例如 Bing 和 Cortana) 可以判斷指定裝置尺寸的正確內容。 您也可以將此設定用於零售示範模式等功能,以指定最適合裝置類型的示範內容。

有 30 個可能的值。 主要值如下所列:

  • 0 – 未知 (預設)

  • 2 – 平板電腦

  • 4 – 膝上型電腦

  • 5 – 可轉換

  • 6 – 可卸離

「平板電腦模式」的行為

為了在 Windows 中達到絕佳的平板電腦體驗,工作列的下列桌面層面已針對平板電腦模式優化:

  • 顯示執行中的應用程式 - 這建議給需要管理其執行中應用程式生命週期的人員。
  • 桌面的數個進入點 - 平板電腦使用者不需要在「平板電腦模式」中輕鬆存取桌面。
  • 工作列中的密集版 面配置 - 這可以容納更多專案,但在「平板電腦模式」中,觸控可能是主要輸入,而且需要較不密集的配置。
  • 顯示最上層和溢位層級的 Deskbands 和 Win32 通知圖示 - 大部分不是使用者刻意放置於該處,而且通常不會使用。

旋轉鎖定

旋轉鎖定預設會設定為啟用 (或鎖定) 。 除非 OEM 將旋轉鎖定設定為解除鎖定,否則客戶可能會因為 OOBE 未旋轉到橫向或直向而感到挫折,因為客戶如何保存新裝置。 藉由停用旋轉鎖定,OEM 可確保客戶滿意其新裝置的回應性,即使在探索控制中心 [快速動作] 區域中管理旋轉鎖定設定的簡易性之前。

若要將旋轉鎖定設定為停用,並預設啟用旋轉:

  1. 在稽核模式中,將 HKLM\Software\Microsoft\Windows\CurrentVersion\AutoRotation\Enable 設定為 1,其中 1 表示啟用旋轉。
  2. 使用 Sysprep 為客戶準備機器,就像平常一樣。

通知區域圖示

進入平板電腦模式時,通知區域會經歷數項變更。 將會顯示下列圖示:

  • 電池
  • 網路
  • 磁碟區
  • 控制中心

更具體來說,如果使用者已將這四個圖示中的任何一個降級到溢位,則會帶回最上層,或 OEM 已將電池圖示降級到溢位,則會帶回最上層。

不過,如果客戶已在 [ 開啟或關閉系統圖示 ] 底下的 [設定] 中停用其中一項 (如下所示) ,Windows 將會遵循客戶的手動設定,而不會啟用圖示。

開啟或關閉系統圖示

OEM 釘選通知圖示將會隱藏、使用者釘選通知圖示將會隱藏,而溢位形箭號將會隱藏,有效地隱藏溢位視窗。

系統會封鎖將通知圖示自動升階到最上層,但即使圖示無法到達最上層,應用程式仍應該能夠繼續引發快顯通知。 這是其中一個例外狀況是位置服務圖示。 在 [ 開啟或關閉系統圖示] 底下啟用時,它將能夠將自己升階到最上層,並移至電池圖示的左側。 不過,如果使用者已手動選擇使用 [開啟或關閉系統圖示 ] 設定來停用位置服務圖示,Windows 將不會強制圖示升級。

如果客戶選取 [ 一律顯示通知區域] 設定中的所有圖示 ,則上述行為將會關閉,而通知區域會還原成與未使用平板電腦模式相同的內容和行為。

觸控式鍵盤按鈕

進入平板電腦模式時,將會隱藏 [觸控式鍵盤] 按鈕。 其可見度可透過平板電腦模式工作列操作功能表中的 [ 顯示觸控式鍵盤] 按鈕 設定來控制。

應用程式圖示

根據預設,應用程式圖示將會隱藏在平板電腦模式的工作列上。 這是由 在平板電腦模式設定中隱藏工作列上的應用程式圖示 所控制:

平板電腦模式系統設定

建立與平板電腦模式 API 互動的應用程式

您可以在應用程式中使用 通用 Windows 平臺 (UWP) 和傳統 Windows API,利用平板電腦模式。 使用這些 API,您可以針對平板電腦模式量身打造應用程式的使用者體驗,或針對桌面使用滑鼠優先。 本節說明如何在應用程式中同時使用 UWP 和傳統 Windows API 來偵測和回應平板電腦模式。

API 可讓 Windows 傳統型應用程式和通用 Windows 應用程式查詢目前的互動模式,並回應模式的變更,如這裡所述。

傳統 Windows 應用程式 API

   
UIViewSettings 可讓應用程式查詢系統目前特定應用程式的指標裝置喜好設定狀態。 這是您從 GetForCurrentView 取得的非可啟用類別。
UserInteractionMode GetForWindow 的 屬性,其接受 Windows.UI.ViewManagement.UserInteractionMode 列舉中的值,其允許值為 Touch 和 Mouse。
WM_SETTINGSCHANGE 當目前的輸入狀態變更時,應用程式會透過使用 「UserInteractionMode」 廣播WM_SETTINGSCHANGE來收到通知。

通用 Windows 應用程式 API

   
UIViewSettings 可讓應用程式查詢系統目前特定應用程式的指標裝置喜好設定狀態。 這是您從 GetForCurrentView 取得的非可啟用類別。
UserInteractionMode 在 Windows.UI.ViewManagement.UserInteractionMode 列舉中接受值的 UIViewSettings 屬性,其允許值為 Touch 和 Mouse。
SizeChanged 當目前的輸入狀態變更時,就會觸發事件。 應用程式應該查詢此事件。

範例 1:在應用程式啟動時優化版面配置

當應用程式啟動時,它可以查詢系統的目前狀態,並針對目前的互動模式優化其配置,如下列範例所示。

通用 Windows app (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:React到平板電腦模式進入/結束

當裝置進入或結束平板電腦模式時,殼層會提示使用者切換模式。 您可以使用此專案作為觸發程式,將應用程式優化為目前的互動模式。 您必須查詢系統的目前狀態,如下列範例所示。

通用 Windows app (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 膝上型電腦或 Slate 指標驅動程式」,以在裝置管理員中顯示? 定義 PNP0C60 (膝上型電腦/平板模式狀態指示器) 會觸發驅動程式在裝置管理員中顯示。 您必須從裝置管理員選擇 [顯示隱藏的裝置] 選項,以顯示此驅動程式。
4 我們是否可以搭配外部鍵盤和滑鼠使用單純的 All-in-ones (AiO) 來啟用相同的案例? 是,AiOs 可以藉由在硬體的適當轉換點實作 ConvertibleSlateMode 來利用「平板電腦模式」。
5 在停用「平板電腦模式」時,觸控式鍵盤是否自動停用? 觸控式鍵盤只會在「平板電腦模式」中自動叫用。 在桌面使用期間,必須手動叫用觸控式鍵盤。 如果使用者不是處於「平板電腦」模式,但會從裝置移除鍵盤,就會顯示觸控式鍵盤。
6 藍牙鍵盤是否會被視為「停駐」? 否,藍牙鍵盤不會被視為「停駐」,因為該案例不一定是正確的。 平板電腦模式永遠不會使用鍵盤 (USB、藍牙等) 來觸發提示。 您可以在適當的時間切換 ConvertibleSlateMode,以實作藍牙可中斷連結的設計。
7 Win32 應用程式:若要讓 Win32 應用程式利用平板電腦模式,應用程式是否需要使用 通用 Windows 平臺 (UWP) API 進行編譯? Win32 應用程式會有 Win32 特定 API,可取用以在觸控優先和滑鼠優先使用之間進行調整。
8 對於應用程式開發人員,我們需要呼叫任何 API 來處理平板電腦和桌面圖案切換嗎? 或者,Windows 會自動處理它嗎? 如果您想要變更應用程式內的版面配置,您必須使用 UWP API 或 WIN32 API 來指出「平板電腦模式」。 在進入/結束「平板電腦模式」時,會自動調整應用程式的實際大小。
9 我的系統會實作 ConvertibleSlateMode,但狀態轉換不會產生提示,要求我進入/結束「平板電腦模式」。 如果您的 2-in-1 裝置正確切換 ConvertibleSlateMode,但系統不會提示您進入/結束「平板電腦模式」,此功能可能會關閉。 若要開啟平板電腦模式,請移至 [ 設定\系統\平板電腦模式]。 從下拉式清單中,選取 [當我的裝置想要切換模式時],然後選取 [一律提示我確認]。
10 對於平板電腦,如果支援 GPIO,我們需要虛擬驅動程式嗎? 如果有 GPIO 可用,我們需要任何 BIOS 變更嗎? 您可以選擇使用實體 GPIO 或插入驅動程式方法。 只要您正確切換 ConvertibleSlateMode,就不需要變更。 重要事項:可轉換的 Windows 10 Mode 實作與Windows 8.1不同。 您必須徹底測試您的裝置,以確保正確行為。
11 UEFI BIOS 是否有支援平板電腦模式的需求或變更? 不支援平板電腦模式所需的 UEFI BIOS 固有變更。 您可以隨意切換 ConvertibleSlateMode,無論哪種方式都最適合您。
12 螢幕旋轉是否系結至平板電腦模式? 否,螢幕旋轉不一定與平板電腦模式相關。 螢幕旋轉會系結至您目前的裝置設定,這可能不一定對應到裝置是否處於「平板電腦」模式。
13 當工作列位於左側時,會發生什麼事? 工作列會保留在其位置。
14 是否有計劃根據系統所報告的膝上型電腦或平板模式自動啟用或停用電腦模式,而不會對終端客戶顯示任何確認? 不支援。 我們一律希望使用者處於控制狀態,並選擇是否要切換模式。 使用者可以視需要覆寫此內容。
15 要求「進入平板電腦模式」的 UI 是否會變更? 您是否打算新增核取方塊,讓使用者決定「每次執行此動作」? 是,它會從目前的設計變更。 它應該包含 [是/否] 按鈕和下拉式清單,讓使用者選擇下次 (時要執行的動作,例如「一律提示」,以及更多) 。
16 您可以顯示全域上一頁按鈕處於平板電腦模式的位置嗎? 它位於 [開始] 按鈕旁邊。