browser.input.ime

說明

使用 chrome.input.ime API 為 ChromeOS 實作自訂 IME。這樣一來,擴充功能就能處理按鍵動作、設定組合結構,以及管理候選字視窗。

權限

input

您必須在擴充功能資訊清單中宣告「input」權限,才能使用 input.ime API。例如:

{
  "name": "My extension",
  ...
  "permissions": [
    "input"
  ],
  ...
}

可用性

僅適用於 ChromeOS

範例

下列程式碼會建立 IME,將輸入的字母轉換為大寫。

var context_id = -1;

browser.input.ime.onFocus.addListener(function(context) {
  context_id = context.contextID;
});

browser.input.ime.onKeyEvent.addListener(
  function(engineID, keyData) {
    if (keyData.type == "keydown" && keyData.key.match(/^[a-z]$/)) {
      browser.input.ime.commitText({"contextID": context_id,
                                    "text": keyData.key.toUpperCase()});
      return true;
    } else {
      return false;
    }
  }
);

類型

AssistiveWindowButton

Chrome 85 以上版本 Chrome 148 以上版本為 browser.*

輔助視窗中按鈕的 ID。

列舉

"undo"

"addToDictionary"

AssistiveWindowProperties

Chrome 85 以上版本 Chrome 148 以上版本為 browser.*

輔助視窗的屬性。

屬性

  • announceString

    字串 選填

    ChromeVox 要朗讀的字串。

  • 類型

    "undo"

  • 顯示

    布林值

    設為 true 即可顯示 AssistiveWindow,設為 false 則會隱藏。

AssistiveWindowType

Chrome 85 以上版本 Chrome 148 以上版本為 browser.*

輔助視窗類型。

值

"undo"

AutoCapitalizeType

Chrome 69 以上版本 Chrome 148 以上版本中的 browser.*

文字欄位的自動大寫類型。

列舉

"characters"

"words"

"sentences"

InputContext

說明輸入內容

屬性

  • autoCapitalize
    Chrome 69 以上版本 Chrome 148 以上版本中的 browser.*

    文字欄位的自動大寫類型。

  • autoComplete

    布林值

    文字欄位是否要自動完成。

  • autoCorrect

    布林值

    文字欄位是否要自動更正。

  • contextID

    數字

    這可用來指定文字欄位作業的目標。呼叫 onBlur 後,這個 ID 就會失效。

  • shouldDoLearning

    布林值

    Chrome 68 以上版本 瀏覽器。*自 Chrome 148 起

    是否應使用在文字欄位中輸入的文字,改善使用者的輸入建議。

  • spellCheck

    布林值

    文字欄位是否要拼字檢查。

  • 這個文字欄位編輯的值類型 (文字、數字、網址等)

InputContextType

Chrome 44 以上版本 瀏覽器。*自 Chrome 148 起

這個文字欄位編輯的值類型 (文字、數字、網址等)

列舉

"text"

"search"

"tel"

"url"

"email"

"number"

"password"

"null"

KeyboardEvent

請參閱 http://www.w3.org/TR/DOM-Level-3-Events/#events-KeyboardEvent

屬性

  • altKey

    布林值 選填

    是否按下 ALT 鍵。

  • altgrKey

    布林值 選填

    Chrome 79 以上版本 Chrome 148 以上版本中的 browser.*

    是否按下 ALTGR 鍵。

  • capsLock

    布林值 選填

    是否啟用 CAPS_LOCK。

  • 程式碼

    字串

    按下的實體按鍵值。這個值不受目前鍵盤配置或輔助鍵狀態影響。

  • ctrlKey

    布林值 選填

    是否按下 CTRL 鍵。

  • extensionId

    字串 選填

    這個按鍵事件傳送者的擴充功能 ID。

  • 金鑰

    字串

    按下的按鍵值

  • keyCode

    數字 選填

    已淘汰的 HTML keyCode,這是與系統和實作相關的數字代碼,代表與按下的按鍵相關聯的未修改 ID。

  • requestId

    字串 選填

    (已淘汰) 要求 ID。請改用 onKeyEvent 事件中的 requestId 參數。

  • shiftKey

    布林值 選填

    是否按下 SHIFT 鍵。

  • keyup 或 keydown。

KeyboardEventType

Chrome 44 以上版本 瀏覽器。*自 Chrome 148 起

列舉

"keyup"

"keydown"

MenuItem

輸入法用來透過語言選單與使用者互動的選單項目。

屬性

  • 已勾選

    布林值 選填

    表示這個項目應以勾號繪製。

  • 已啟用

    布林值 選填

    表示已啟用這個項目。

  • id

    字串

    要傳遞給參照這個 MenuItem 的回呼的字串。

  • 標籤

    字串 選填

    選單中顯示的這個項目文字。

  • 樣式

    選單項目類型。

  • 顯示

    布林值 選填

    表示這個項目可見。

MenuItemStyle

Chrome 44 以上版本 瀏覽器。*自 Chrome 148 起

選單項目類型。分隔符之間的圓形按鈕會視為群組。

列舉

「check」

"radio"

"separator"

MenuParameters

Chrome 88 以上版本 Chrome 148 起為瀏覽器。*

屬性

  • engineID

    字串

    要使用的引擎 ID。

  • 項目

    要新增或更新的 MenuItems。系統會按照陣列中的順序新增。

MouseButton

Chrome 44 以上版本 瀏覽器。*自 Chrome 148 起

點按了哪些滑鼠按鈕。

列舉

"left"

"middle"

"right"

ScreenType

Chrome 44 以上版本 瀏覽器。*自 Chrome 148 起

啟用 IME 的螢幕類型。

列舉

"normal"

"login"

「鎖定」

"secondary-login"

UnderlineStyle

Chrome 44 以上版本 瀏覽器。*自 Chrome 148 起

修改這個區段的底線類型。

列舉

"underline"

"doubleUnderline"

"noUnderline"

WindowPosition

Chrome 44 以上版本 瀏覽器。*自 Chrome 148 起

候選字詞視窗的顯示位置。如果設為「cursor」,視窗會跟隨游標移動。如果設為「composition」,視窗會鎖定在組合結構的開頭。

列舉

"cursor"

"composition"

方法

clearComposition()

browser.input.ime.clearComposition(
  parameters: object,
)
: Promise<boolean>

清除目前的組合。如果這個擴充功能不具備有效的 IME,則會失敗。

參數

  • parameters

    物件

    • contextID

      數字

      要清除組合結構的結構定義 ID

傳回

  • Promise<boolean>

    Chrome 111 以上版本 Chrome 148 起為 browser.*

    作業完成後,系統會傳回布林值,指出是否接受文字。如果失敗,系統會拒絕 promise。

commitText()

browser.input.ime.commitText(
  parameters: object,
)
: Promise<boolean>

將提供的文字提交至目前的輸入內容。

參數

  • parameters

    物件

    • contextID

      數字

      要提交文字的內容 ID

    • 文字

      字串

      要提交的文字

傳回

  • Promise<boolean>

    Chrome 111 以上版本 Chrome 148 起為 browser.*

    作業完成後,系統會傳回布林值,指出是否接受文字。如果失敗,系統會拒絕 promise。

deleteSurroundingText()

browser.input.ime.deleteSurroundingText(
  parameters: object,
)
: Promise<void>

刪除插入點周圍的文字。

參數

  • parameters

    物件

    • contextID

      數字

      要刪除周圍文字的情境 ID。

    • engineID

      字串

      接收事件的引擎 ID。

    • 長度

      數字

      要刪除的字元數

    • 碳補償

      數字

      從插入點位置開始刪除的偏移量。這個值可以為負數。

傳回

  • 承諾<void>

    Chrome 111 以上版本 Chrome 148 起為 browser.*

    作業完成後,系統會解析。

hideInputView()

browser.input.ime.hideInputView(): void

隱藏系統自動彈出的輸入檢視畫面視窗。如果輸入檢視畫面視窗已隱藏,這項函式不會執行任何動作。

keyEventHandled()

browser.input.ime.keyEventHandled(
  requestId: string,
  response: boolean,
)
: void

表示已處理 onKeyEvent 接收到的按鍵事件。只有在 onKeyEvent 事件監聽器為非同步時,才應呼叫這個方法。

參數

  • requestId

    字串

    已處理事件的要求 ID。這應來自 keyEvent.requestId

  • 回應

    布林值

    如果已處理按鍵動作,則傳回 true;否則傳回 false

sendKeyEvents()

browser.input.ime.sendKeyEvents(
  parameters: object,
)
: Promise<void>

傳送按鍵事件。這個函式預期由虛擬鍵盤使用。當使用者按下虛擬鍵盤上的按鍵時,系統會使用這個函式將該事件傳播到系統。

參數

  • parameters

    物件

    • contextID

      數字

      要傳送重要事件的內容 ID,或設為零,將重要事件傳送至非輸入欄位。

    • keyData

      重要事件的資料。

傳回

  • 承諾<void>

    Chrome 111 以上版本 Chrome 148 起為 browser.*

    作業完成後,系統會解析。

setAssistiveWindowButtonHighlighted()

Chrome 86 以上版本 Chrome 148 以上版本支援 browser.*
browser.input.ime.setAssistiveWindowButtonHighlighted(
  parameters: object,
)
: Promise<void>

醒目顯示/取消醒目顯示輔助視窗中的按鈕。

參數

  • parameters

    物件

    • announceString

      字串 選填

      螢幕閱讀器要朗讀的文字。

    • 按鈕 ID

    • contextID

      數字

      擁有輔助視窗的結構定義 ID。

    • 重要留言

      布林值

      是否要醒目顯示按鈕。

    • windowType

      "undo"

      按鈕所屬的視窗類型。

傳回

  • 承諾<void>

    Chrome 111 以上版本 Chrome 148 起為 browser.*

    作業完成後,系統會解析。如果失敗,系統會拒絕 promise。

setAssistiveWindowProperties()

Chrome 85 以上版本 Chrome 148 以上版本為 browser.*
browser.input.ime.setAssistiveWindowProperties(
  parameters: object,
)
: Promise<boolean>

顯示/隱藏具有指定屬性的輔助視窗。

參數

  • parameters

    物件

傳回

  • Promise<boolean>

    Chrome 111 以上版本 Chrome 148 起為 browser.*

    作業完成後,系統會解析。

setCandidates()

browser.input.ime.setCandidates(
  parameters: object,
)
: Promise<boolean>

設定目前的候選字詞清單。如果這個擴充功能並未擁有使用中的 IME,就會失敗

參數

  • parameters

    物件

    • 待選項目

      object[]

      候選字詞視窗中顯示的候選字詞清單

      • 註解

        字串 選填

        候選項目的額外說明文字

      • 候選

        字串

        候選人

      • id

        數字

        候選項目 ID

      • 標籤

        字串 選填

        候選字詞旁顯示的短字串,通常是快速鍵或索引

      • parentId

        數字 選填

        要新增這些候選項目的 ID

      • 用量

        物件 選填

        字詞的使用方式或詳細說明。

        • body

          字串

          詳細說明的內文字串。

        • title

          字串

          詳細資料說明的標題字串。

    • contextID

      數字

      擁有候選視窗的內容 ID。

傳回

  • Promise<boolean>

    Chrome 111 以上版本 Chrome 148 起為 browser.*

    作業完成後,系統會解析。

setCandidateWindowProperties()

browser.input.ime.setCandidateWindowProperties(
  parameters: object,
)
: Promise<boolean>

設定候選字詞視窗的屬性。如果擴充功能並非使用中的輸入法,這項操作就會失敗

參數

  • parameters

    物件

    • engineID

      字串

      要設定屬性的引擎 ID。

    • 屬性

      物件

      • auxiliaryText

        字串 選填

        顯示在候選字詞視窗底部的文字。

      • auxiliaryTextVisible

        布林值 選填

        如要顯示輔助文字,請設為 true;如要隱藏,請設為 false。

      • currentCandidateIndex

        數字 選填

        Chrome 84 以上版本 Chrome 148 以上版本的瀏覽器。*

        目前選取的候選字詞在所有候選字詞中的索引。

      • cursorVisible

        布林值 選填

        True 表示顯示游標,False 表示隱藏游標。

      • pageSize

        數字 選填

        每頁顯示的候選字詞數量。

      • totalCandidates

        數字 選填

        Chrome 84 以上版本 Chrome 148 以上版本的瀏覽器。*

        候選視窗的候選項目總數。

      • 直向

        布林值 選填

        如果候選字詞視窗應垂直顯示,則為 True;如果應水平顯示,則為 False。

      • 顯示

        布林值 選填

        如要顯示候選字詞視窗,請設為 true;如要隱藏,請設為 false。

      • windowPosition

        候選字詞視窗的顯示位置。

傳回

  • Promise<boolean>

    Chrome 111 以上版本 Chrome 148 起為 browser.*

    作業完成後,系統會解析。

setComposition()

browser.input.ime.setComposition(
  parameters: object,
)
: Promise<boolean>

設定目前的組合。如果這個擴充功能不具備有效的 IME,則會失敗。

參數

  • parameters

    物件

    • contextID

      數字

      要設定撰寫文字的內容 ID

    • cursor

      數字

      游標在文字中的位置。

    • 個區隔

      object[] 選填

      區隔和相關類型的清單。

      • end

        數字

        這個片段結束後的字元索引。

      • start

        數字

        這個片段的起始字元索引

      • 修改這個區段的底線類型。

    • selectionEnd

      數字 選填

      選取範圍在文字中的結束位置。

    • selectionStart

      數字 選填

      選取範圍在文字中的起始位置。

    • 文字

      字串

      要設定的文字

傳回

  • Promise<boolean>

    Chrome 111 以上版本 Chrome 148 起為 browser.*

    作業完成後,系統會傳回布林值,指出是否接受文字。如果失敗,系統會拒絕 promise。

setCursorPosition()

browser.input.ime.setCursorPosition(
  parameters: object,
)
: Promise<boolean>

設定游標在候選字詞視窗中的位置。如果這個擴充功能並未擁有有效的 IME,則這項操作無效。

參數

  • parameters

    物件

    • candidateID

      數字

      要選取的候選項目 ID。

    • contextID

      數字

      擁有候選視窗的內容 ID。

傳回

  • Promise<boolean>

    Chrome 111 以上版本 Chrome 148 起為 browser.*

    作業完成時解析

setMenuItems()

browser.input.ime.setMenuItems(
  parameters: MenuParameters,
)
: Promise<void>

這個 IME 啟用時,將提供的選單項目新增至語言選單。

參數

傳回

  • 承諾<void>

    Chrome 111 以上版本 Chrome 148 起為 browser.*

updateMenuItems()

browser.input.ime.updateMenuItems(
  parameters: MenuParameters,
)
: Promise<void>

更新指定 MenuItems 的狀態

參數

傳回

  • 承諾<void>

    Chrome 111 以上版本 Chrome 148 起為 browser.*

    作業完成時解析

事件

onActivate

browser.input.ime.onActivate.addListener(
  callback: function,
)

啟用 IME 時,系統會傳送這個事件。這表示 IME 將接收 onKeyPress 事件。

參數

  • callback

    函式

    callback 參數如下:

    (engineID: string, screen: ScreenType) => void

onAssistiveWindowButtonClicked

Chrome 85 以上版本 Chrome 148 以上版本為 browser.*
browser.input.ime.onAssistiveWindowButtonClicked.addListener(
  callback: function,
)

使用者點選輔助視窗中的按鈕時,系統會傳送這個事件。

參數

  • callback

    函式

    callback 參數如下:

    (details: object) => void

onBlur

browser.input.ime.onBlur.addListener(
  callback: function,
)

焦點離開文字方塊時,系統會傳送這個事件。系統會將這項事件傳送給所有監聽這項事件,且由使用者啟用的擴充功能。

參數

  • callback

    函式

    callback 參數如下:

    (contextID: number) => void

    • contextID

      數字

onCandidateClicked

browser.input.ime.onCandidateClicked.addListener(
  callback: function,
)

如果這個擴充功能擁有有效的輸入法,就會傳送這個事件。

參數

  • callback

    函式

    callback 參數如下:

    (engineID: string, candidateID: number, button: MouseButton) => void

    • engineID

      字串

    • candidateID

      數字

    • 按鈕

onDeactivated

browser.input.ime.onDeactivated.addListener(
  callback: function,
)

停用 IME 時,系統會傳送這個事件。這表示 IME 不會再收到 onKeyPress 事件。

參數

  • callback

    函式

    callback 參數如下:

    (engineID: string) => void

    • engineID

      字串

onFocus

browser.input.ime.onFocus.addListener(
  callback: function,
)

焦點進入文字方塊時,系統會傳送這個事件。系統會將這項事件傳送給所有監聽這項事件,且由使用者啟用的擴充功能。

參數

onInputContextUpdate

browser.input.ime.onInputContextUpdate.addListener(
  callback: function,
)

當目前 InputContext 的屬性 (例如類型) 變更時,系統會傳送這個事件。系統會將這項事件傳送給所有監聽這項事件,且由使用者啟用的擴充功能。

參數

onKeyEvent

browser.input.ime.onKeyEvent.addListener(
  callback: function,
)

作業系統傳送按鍵事件時觸發。如果這個擴充功能擁有有效的 IME,事件就會傳送至該擴充功能。如果事件已處理,事件監聽器函式應傳回 true,否則傳回 false。如果事件會以非同步方式評估,這個函式必須傳回未定義的值,且 IME 之後必須使用結果呼叫 keyEventHandled()。

參數

  • callback

    函式

    callback 參數如下:

    (engineID: string, keyData: KeyboardEvent, requestId: string) => boolean | undefined

    • returns

      boolean | undefined

onMenuItemActivated

browser.input.ime.onMenuItemActivated.addListener(
  callback: function,
)

使用者選取選單項目時呼叫

參數

  • callback

    函式

    callback 參數如下:

    (engineID: string, name: string) => void

    • engineID

      字串

    • name

      字串

onReset

browser.input.ime.onReset.addListener(
  callback: function,
)

Chrome 終止進行中的文字輸入工作階段時,會傳送這個事件。

參數

  • callback

    函式

    callback 參數如下:

    (engineID: string) => void

    • engineID

      字串

onSurroundingTextChanged

browser.input.ime.onSurroundingTextChanged.addListener(
  callback: function,
)

當插入點周圍的可編輯字串變更,或插入點位置移動時,系統會呼叫這個方法。每個來回方向的文字長度上限為 100 個字元。

參數

  • callback

    函式

    callback 參數如下:

    (engineID: string, surroundingInfo: object) => void

    • engineID

      字串

    • surroundingInfo

      物件

      • anchor

        數字

        選取範圍的起始位置。如果未選取任何內容,這個值會指出插入點位置。

      • 焦點

        數字

        選取範圍的結束位置。如果未選取任何內容,這個值會指出插入點位置。

      • 碳補償

        數字

        Chrome 46 以上版本 Chrome 148 以上版本為 browser.*

        text 的偏移位置。由於 text 只包含游標周圍的部分文字,因此偏移量代表 text 第一個字元的絕對位置。

      • 文字

        字串

        游標周圍的文字。這只是輸入欄位中所有文字的一部分。