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