通訊協定
控制器
定義於 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
 
要求
<EMPTY>
回應
| 名稱 | 類型 | 
|---|---|
| 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 通道的另一端 Controller 與 view_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 | 
回應
<EMPTY>
WatchTypeAndVisibility
等待預期的 text_type 或瀏覽權限變更,然後回報新值。在回應狀態變更時,呼叫端應應設定要求的類型和顯示設定,然後呼叫 Notify 通知平台變更。
第一個呼叫會立即傳回目前所需的 text_type 和顯示方式。
如果不支援 text_type,呼叫端應
實作備用方案,以提供所需的大量鍵
。
要求
<EMPTY>
回應
| 名稱 | 類型 | 
|---|---|
| text_type | TextType | 
| is_visible | bool | 
ENUMS
TextType 彈性
類型:uint32
在 fuchsia.input.virtualkeyboard/virtual_keyboard.fidl 中定義的
說明虛擬鍵盤預計輸入的文字類型。
| 名稱 | 值 | 說明 | 
|---|---|---|
| ALPHANUMERIC | 0 | 文字可能同時包含字母和數字 字元。這是列舉的預設值 (零值),因此未初始化的列舉例項可為鍵盤使用者提供最具彈性的輸入內容。 | 
| NUMERIC | 1 | 文字可能只包含數字字元。 | 
| 手機 | 2 | 文字可能同時包含數字字元 和標點符號搭配使用 (例如「*」、「#」)。 | 
VisibilityChangeReason 彈性
類型:uint32
定義於 fuchsia.input.virtualkeyboard/virtual_keyboard.fidl
說明會新增虛擬鍵盤或 向使用者顯示的介面。
| 名稱 | 值 | 說明 | 
|---|---|---|
| 程式輔助 | 1 | 因程式輔助請求而變更瀏覽權限。例如:統一發票
元件對  | 
| USER_INTERACTION | 2 | 由於使用者與 GUI 互動,瀏覽權限已變更 。例如:使用者輕觸關閉按鈕。 |