fuchsia.input.virtualKeyboard

新增:7

通訊協定

控制器

定義於 fuchsia.input.virtualkeyboard/virtual_keyboard.fidl

提供控制虛擬鍵盤的功能。

抽象模型

一次最多只能有一個控制器「擁有」虛擬鍵盤。擁有者是焦點所在的相關 View 的控管者。如果沒有這類控制器,虛擬鍵盤就會處於未擁有 (且隱藏) 的狀態。

只有自有控制器才能修改虛擬鍵盤設定。 當自有控制器失去焦點時,這個通訊協定的實作者 就會自動關閉虛擬鍵盤

角色

這個通訊協定通常會:

  • 由控制鍵盤顯示功能的平台元件實作。
  • 由應用程式執行階段耗用。例如 Flutter、Chromium

相關通訊協定

  • 透過這個通訊協定,您無法存取虛擬機器的輸出內容 鍵盤。如要瞭解如何進行這項操作,請參閱下列任一協定:
    • fuchsia.ui.input3.Keyboard (用於按鍵輸入)
    • fuchsia.ui.input.InputMethodEditor (用於編輯文字)
  • 這項通訊協定適用於虛擬鍵盤的消費者/使用者。鍵盤的實作者/擁有者應使用下方的 Manager

實作者注意事項

理想情況下,只有在相關聯的 View 有焦點時,才允許呼叫此通訊協定的各項方法。不過,此通訊協定的實作者和使用者會獨立收到焦點變更通知,因此無法保證 Controller 實作者會在 Controller 使用者之前得知焦點變更。

因此,在 View 未聚焦時禁止呼叫會帶來風險 錯誤。 相反地,實作程序按照 個別方法的註解。

RequestHide

要求隱藏鍵盤。

  • 如果呼叫端判斷此控制器的 View 已聚焦,就會立即套用變更。
  • 如果受呼叫者判定此控制器的 View 是 「未」聚焦:
    • 如果有待處理的 RequestShow(),來電者就會取消
    • 否則呼叫不會生效。
  • 對此方法的呼叫為冪等。

要求

<EMPTY>

RequestShow

要求顯示鍵盤。

  • 如果呼叫端判斷此控制器的 View 已聚焦,就會立即套用變更。
  • 如果呼叫端判斷此控制器的 View 獲得焦點,則會在 View 重新獲得焦點時套用變更。不過,呼叫 RequestHide() 會使這類待處理的要求失效。
  • 對這個方法的呼叫為等冪的。

要求

<EMPTY>

SetTextType

要求變更虛擬鍵盤的文字類型。

  • 如果呼叫端判斷此控制器的 View 已聚焦,就會立即套用變更。
  • 如果呼叫端判斷此控制器的 View 獲得焦點,則會在 View 重新獲得焦點時套用變更。
  • 如果受話者在 View 回歸前收到多次來電 焦點,由受呼叫者套用最近一次通話帶來的價值。

要求

名稱類型
text_type TextType

WatchVisibility

等待可見度變更,然後回報新值。

  • 在受呼叫端收到 RequestShow() 後傳回 true 卻未呼叫此控制器的 。

    • 這項錯誤可能會在鍵盤顯示在螢幕上之前發生。
    • 可能發生在這個控制器的 View 之前 焦點。
  • 當被呼叫端決定隱藏由此控制器要求的鍵盤時,會傳回 false

    • 這可能是因為來電 RequestHide() 所致; 在 View 失去焦點時隱含。
    • 鍵盤在顯示時傳回這個函式 可以顯示在畫面上
  • 第一個呼叫會立即傳回...

    • true 如果呼叫端已決定應因此控制器的要求而顯示鍵盤 (這不保證鍵盤會顯示在螢幕上)
    • 其他情況則為 false

要求

&lt;EMPTY&gt;

回應

名稱類型
is_visible bool

ControllerCreator

fuchsia.input.virtualkeyboard/virtual_keyboard.fidl 中定義的

提供取得 Controller 的功能。

這個通訊協定會將 Controller 綁定至 View (透過 ViewRef)。這個繫結可讓鍵盤子系統使用 View 的知識 聚焦於限制Controller能影響虛擬鍵盤的時機 此外還會從 0 自動調整資源配置 您完全不必調整資源調度設定

請注意,Controller 本身可設定虛擬鍵盤的呈現方式 (可見度和版面配置),但與文字事件無關。詳情請參閱 Controller 說明文件。

角色

這個通訊協定通常會:

  • 由控制 UI 政策的平台元件實作。
  • 供應用程式執行階段使用。例如 Flutter、Chromium

建立

要求將 server_end:Controller 通道的另一端 Controllerview_ref 參照的 View 建立關聯。

呼叫 Controller.RequestShow() 時,Controller 實作者會嘗試提供針對 text_type 輸入內容最佳化的鍵盤 (除非類型已由對 Controller.SetType() 的呼叫覆寫)。

ControllerCreator 的實作者使用 以便將存取權控管套用至相關 View 的焦點狀態 在 Controller 上撥出的通話。查看「Controller」的說明文件 方法。

ControllerCreator 的使用者可以隨意放棄建立者連線,而不會影響其控制器。

要求

名稱類型
view_ref fuchsia.ui.views/ViewRef
text_type TextType
controller_request server_end:Controller

管理員

定義於 fuchsia.input.virtualkeyboard/virtual_keyboard.fidl

啟用虛擬鍵盤 UI,與平台同步處理狀態。

角色

這個通訊協定通常會:

  • 由控制 UI 政策的平台元件實作。
  • 由提供文字輸入 GUI 操作元素的元件使用。

通知

通知通話對象虛擬鍵盤的可見性 以及觸發變更的原因

呼叫端等待結果,再再次呼叫此方法,以免造成被呼叫端超載。

要求

名稱類型
is_visible bool
reason VisibilityChangeReason

回應

&lt;EMPTY&gt;

WatchTypeAndVisibility

等待預期的 text_type 或瀏覽權限變更,然後回報新值。在回應狀態變更時,呼叫端應應設定要求的類型和顯示設定,然後呼叫 Notify 通知平台變更。

第一個呼叫會立即傳回目前所需的 text_type 和顯示方式。

如果不支援 text_type,呼叫端應 實作備用方案,以提供所需的大量鍵 。

要求

&lt;EMPTY&gt;

回應

名稱類型
text_type TextType
is_visible bool

ENUMS

TextType 彈性

類型:uint32

fuchsia.input.virtualkeyboard/virtual_keyboard.fidl 中定義的

說明虛擬鍵盤預計輸入的文字類型。

名稱說明
0

文字可能同時包含字母和數字 字元。這是列舉的預設值 (零值),因此未初始化的列舉例項可為鍵盤使用者提供最具彈性的輸入內容。

1

文字可能只包含數字字元。

2

文字可能同時包含數字字元 和標點符號搭配使用 (例如「*」、「#」)。

VisibilityChangeReason 彈性

類型:uint32

定義於 fuchsia.input.virtualkeyboard/virtual_keyboard.fidl

說明會新增虛擬鍵盤或 向使用者顯示的介面。

名稱說明
1

因程式輔助請求而變更瀏覽權限。例如:統一發票 元件對 WatchTypeAndVisibility() 的呼叫傳回新的 「is_visible」的值。

2

由於使用者與 GUI 互動,瀏覽權限已變更 。例如:使用者輕觸關閉按鈕。