通訊協定
控制器
定義於 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 互動,瀏覽權限已變更 。例如:使用者輕觸關閉按鈕。 |