説明
chrome.input.ime API を使用して、Chrome OS 用のカスタム IME を実装します。これにより、拡張機能でキー操作の処理、構成の設定、候補ウィンドウの管理が可能になります。
権限
inputinput.ime API を使用するには、拡張機能のマニフェストで「input」権限を宣言する必要があります。次に例を示します。
{
  "name": "My extension",
  ...
  "permissions": [
    "input"
  ],
  ...
}
対象
例
次のコードは、入力された文字を大文字に変換する IME を作成します。
var context_id = -1;
chrome.input.ime.onFocus.addListener(function(context) {
  context_id = context.contextID;
});
chrome.input.ime.onKeyEvent.addListener(
  function(engineID, keyData) {
    if (keyData.type == "keydown" && keyData.key.match(/^[a-z]$/)) {
      chrome.input.ime.commitText({"contextID": context_id,
                                    "text": keyData.key.toUpperCase()});
      return true;
    } else {
      return false;
    }
  }
);
型
AssistiveWindowButton
補助ウィンドウのボタンの ID。
列挙型
"undo" 
 
"addToDictionary" 
 
AssistiveWindowProperties
補助ウィンドウのプロパティ。
プロパティ
- 
    announceString
文字列 省略可
ChromeVox が読み上げる文字列。
 - 
    type
"undo"
 - 
    表示
ブール値
true に設定すると AssistiveWindow が表示され、false に設定すると非表示になります。
 
AssistiveWindowType
補助ウィンドウの種類。
値
"undo" 
 
AutoCapitalizeType
テキスト フィールドの自動大文字化のタイプ。
列挙型
"characters" 
 
"words" 
 
"sentences" 
 
InputContext
入力コンテキストを記述します
プロパティ
- 
    autoCapitalizeChrome 69 以降
テキスト フィールドの自動大文字化のタイプ。
 - 
    autoComplete
ブール値
テキスト フィールドで自動補完が必要かどうか。
 - 
    autoCorrect
ブール値
テキスト フィールドで自動修正が必要かどうか。
 - 
    contextID
数値
これは、テキスト フィールド オペレーションのターゲットを指定するために使用されます。この ID は onBlur が呼び出されるとすぐに無効になります。
 - 
    shouldDoLearning
ブール値
Chrome 68 以降テキスト フィールドに入力されたテキストをユーザーの入力候補の改善に使用するかどうか。
 - 
    spellCheck
ブール値
テキスト フィールドでスペルチェックが必要かどうか。
 - 
    type
このテキスト フィールドで編集する値の型(テキスト、数値、URL など)
 
InputContextType
このテキスト フィールドで編集する値の型(テキスト、数値、URL など)
列挙型
"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 以降ALTGR キーが押されているかどうか。
 - 
    capsLock
ブール値(省略可)
CAPS_LOCK が有効かどうか。
 - 
    コード
文字列
押されている物理キーの値。この値は、現在のキーボード レイアウトや修飾キーの状態の影響を受けません。
 - 
    ctrlKey
ブール値(省略可)
Ctrl キーが押されているかどうか。
 - 
    extensionId
文字列 省略可
このキーイベントの送信者の拡張機能 ID。
 - 
    key
文字列
押されているキーの値
 - 
    keyCode
number 省略可
非推奨の HTML keyCode。押されたキーに関連付けられた変更されていない識別子を示す、システムと実装に依存する数値コードです。
 - 
    requestId
文字列 省略可
(非推奨)リクエストの ID。代わりに
onKeyEventイベントのrequestIdパラメータを使用してください。 - 
    shiftKey
ブール値(省略可)
SHIFT キーが押されているかどうか。
 - 
    type
keyup または keydown のいずれか。
 
KeyboardEventType
列挙型
"keyup" 
 
"keydown" 
 
MenuItem
入力メソッドが言語メニューからユーザーとやり取りするために使用するメニュー項目。
プロパティ
- 
    ON
ブール値(省略可)
この項目をチェック付きで描画する必要があることを示します。
 - 
    有効
ブール値(省略可)
このアイテムが有効であることを示します。
 - 
    id
文字列
この MenuItem を参照するコールバックに渡される文字列。
 - 
    ラベル
文字列 省略可
この項目のメニューに表示されるテキスト。
 - 
    スタイル
MenuItemStyle 省略可
メニュー項目のタイプ。
 - 
    表示
ブール値(省略可)
このアイテムが表示されていることを示します。
 
MenuItemStyle
メニュー項目のタイプ。区切り文字の間のラジオボタンはグループ化されているとみなされます。
列挙型
"check" 
 
"radio" 
 
"separator" 
 
MenuParameters
プロパティ
- 
    engineID
文字列
使用するエンジンの ID。
 - 
    アイテム
MenuItem[]
追加または更新する MenuItems。これらは、配列に存在する順序で追加されます。
 
MouseButton
クリックされたマウスボタン。
列挙型
"left" 
 
"middle" 
 
"right" 
 
ScreenType
IME が有効になる画面のタイプ。
列挙型
"normal" 
 
"login" 
 
"lock" 
 
"secondary-login" 
 
UnderlineStyle
このセグメントを変更する下線の種類。
列挙型
"underline" 
 
"doubleUnderline" 
 
"noUnderline" 
 
WindowPosition
候補ウィンドウを表示する場所。「cursor」に設定すると、ウィンドウがカーソルを追跡します。「composition」に設定すると、ウィンドウはコンポジションの先頭にロックされます。
列挙型
"cursor" 
 
"composition" 
 
メソッド
clearComposition()
chrome.input.ime.clearComposition(
parameters: object,
): Promise<boolean>
現在のコンポジションをクリアします。この拡張機能がアクティブな IME を所有していない場合、この処理は失敗します。
パラメータ
- 
    パラメータ
オブジェクト
- 
    contextID
数値
コンポジションがクリアされるコンテキストの ID
 
 - 
    
 
戻り値
- 
            
Promise<boolean>
Chrome 111+ 
commitText()
chrome.input.ime.commitText(
parameters: object,
): Promise<boolean>
指定されたテキストを現在の入力に commit します。
パラメータ
- 
    パラメータ
オブジェクト
- 
    contextID
数値
テキストがコミットされるコンテキストの ID
 - 
    テキスト
文字列
コミットするテキスト
 
 - 
    
 
戻り値
- 
            
Promise<boolean>
Chrome 111+ 
deleteSurroundingText()
chrome.input.ime.deleteSurroundingText(
parameters: object,
): Promise<void>
カーソルの周囲のテキストを削除します。
パラメータ
- 
    パラメータ
オブジェクト
- 
    contextID
数値
周囲のテキストが削除されるコンテキストの ID。
 - 
    engineID
文字列
イベントを受信するエンジンの ID。
 - 
    長さ
数値
削除する文字数
 - 
    offset
数値
削除が開始されるカーソル位置からのオフセット。この値は負の値でもかまいません。
 
 - 
    
 
戻り値
- 
            
Promise<void>
Chrome 111+ 
hideInputView()
chrome.input.ime.hideInputView(): void
システムによって自動的にポップアップされる入力ビュー ウィンドウを非表示にします。入力ビュー ウィンドウがすでに非表示になっている場合、この関数は何も行いません。
keyEventHandled()
chrome.input.ime.keyEventHandled(
requestId: string,
response: boolean,
): void
onKeyEvent で受信したキーイベントが処理されたことを示します。これは、onKeyEvent リスナーが非同期の場合にのみ呼び出す必要があります。
パラメータ
- 
    requestId
文字列
処理されたイベントのリクエスト ID。これは keyEvent.requestId から取得する必要があります
 - 
    レスポンス
ブール値
キーストロークが処理された場合は true、処理されなかった場合は false
 
sendKeyEvents()
chrome.input.ime.sendKeyEvents(
parameters: object,
): Promise<void>
キーイベントを送信します。この関数は、仮想キーボードで使用されることが想定されています。ユーザーが仮想キーボードのキーを押すと、この関数を使用してそのイベントがシステムに伝播されます。
パラメータ
- 
    パラメータ
オブジェクト
- 
    contextID
数値
キーイベントが送信されるコンテキストの ID。入力フィールド以外にキーイベントを送信する場合は 0。
 - 
    keyData
キーイベントに関するデータ。
 
 - 
    
 
戻り値
- 
            
Promise<void>
Chrome 111+ 
setAssistiveWindowButtonHighlighted()
chrome.input.ime.setAssistiveWindowButtonHighlighted(
parameters: object,
): Promise<void>
補助ウィンドウのボタンをハイライト表示またはハイライト表示解除します。
パラメータ
- 
    パラメータ
オブジェクト
- 
    announceString
文字列 省略可
スクリーン リーダーで読み上げるテキスト。
 - 
    buttonID
ボタンの ID
 - 
    contextID
数値
補助ウィンドウを所有するコンテキストの ID。
 - 
    強調表示
ブール値
ボタンをハイライト表示するかどうか。
 - 
    windowType
"undo"
ボタンが属するウィンドウ タイプ。
 
 - 
    
 
戻り値
- 
            
Promise<void>
Chrome 111+ 
setAssistiveWindowProperties()
chrome.input.ime.setAssistiveWindowProperties(
parameters: object,
): Promise<boolean>
指定されたプロパティを持つ補助ウィンドウを表示または非表示にします。
パラメータ
- 
    パラメータ
オブジェクト
- 
    contextID
数値
補助ウィンドウを所有するコンテキストの ID。
 - 
    
補助ウィンドウのプロパティ。
 
 - 
    
 
戻り値
- 
            
Promise<boolean>
Chrome 111+ 
setCandidates()
chrome.input.ime.setCandidates(
parameters: object,
): Promise<boolean>
現在の候補リストを設定します。この拡張機能がアクティブな IME を所有していない場合、この処理は失敗します。
パラメータ
- 
    パラメータ
オブジェクト
- 
    候補者
object[]
候補ウィンドウに表示する候補のリスト
- 
    アノテーション
文字列 省略可
候補者を説明する追加のテキスト
 - 
    候補
文字列
候補者
 - 
    id
数値
候補者の ID
 - 
    ラベル
文字列 省略可
候補の横に表示される短い文字列(多くの場合、ショートカット キーまたはインデックス)
 - 
    parentId
number 省略可
これらの候補を追加する ID
 - 
    用途
オブジェクト 省略可
単語の使用方法や詳細な説明。
- 
    body
文字列
詳細説明の本文文字列。
 - 
    title
文字列
詳細説明のタイトル文字列。
 
 - 
    
 
 - 
    
 - 
    contextID
数値
候補ウィンドウを所有するコンテキストの ID。
 
 - 
    
 
戻り値
- 
            
Promise<boolean>
Chrome 111+ 
setCandidateWindowProperties()
chrome.input.ime.setCandidateWindowProperties(
parameters: object,
): Promise<boolean>
候補ウィンドウのプロパティを設定します。拡張機能がアクティブな IME を所有していない場合、この処理は失敗します。
パラメータ
- 
    パラメータ
オブジェクト
- 
    engineID
文字列
プロパティを設定するエンジンの ID。
 - 
    プロパティ
オブジェクト
- 
    auxiliaryText
文字列 省略可
候補ウィンドウの下部に表示されるテキスト。
 - 
    auxiliaryTextVisible
ブール値(省略可)
補助テキストを表示する場合は true、非表示にする場合は false。
 - 
    currentCandidateIndex
number 省略可
Chrome 84 以降候補者の総数に対する、現在選択されている候補者のインデックス。
 - 
    cursorVisible
ブール値(省略可)
カーソルを表示する場合は true、非表示にする場合は false。
 - 
    pageSize
number 省略可
1 ページに表示する候補の数。
 - 
    totalCandidates
number 省略可
Chrome 84 以降候補ウィンドウの候補の合計数。
 - 
    カテゴリ
ブール値(省略可)
候補ウィンドウを縦向きでレンダリングする場合は true、横向きにする場合は false。
 - 
    表示
ブール値(省略可)
候補ウィンドウを表示する場合は true、非表示にする場合は false。
 - 
    windowPosition
WindowPosition 省略可
候補ウィンドウを表示する場所。
 
 - 
    
 
 - 
    
 
戻り値
- 
            
Promise<boolean>
Chrome 111+ 
setComposition()
chrome.input.ime.setComposition(
parameters: object,
): Promise<boolean>
現在のコンポジションを設定します。この拡張機能がアクティブな IME を所有していない場合、この処理は失敗します。
パラメータ
- 
    パラメータ
オブジェクト
- 
    contextID
数値
楽曲のテキストが設定されるコンテキストの ID
 - 
    cursor
数値
テキスト内のカーソルの位置。
 - 
    セグメント
object[] 省略可
セグメントとその関連タイプのリスト。
- 
    end
数値
このセグメントの終了位置となる文字のインデックス。
 - 
    start
数値
このセグメントの開始文字のインデックス
 - 
    スタイル
このセグメントを変更する下線の種類。
 
 - 
    
 - 
    selectionEnd
number 省略可
選択が終了するテキスト内の位置。
 - 
    selectionStart
number 省略可
選択が開始されるテキスト内の位置。
 - 
    テキスト
文字列
設定するテキスト
 
 - 
    
 
戻り値
- 
            
Promise<boolean>
Chrome 111+ 
setCursorPosition()
chrome.input.ime.setCursorPosition(
parameters: object,
): Promise<boolean>
候補ウィンドウ内のカーソルの位置を設定します。この拡張機能がアクティブな IME を所有していない場合、これは no-op です。
パラメータ
- 
    パラメータ
オブジェクト
- 
    candidateID
数値
選択する候補の ID。
 - 
    contextID
数値
候補ウィンドウを所有するコンテキストの ID。
 
 - 
    
 
戻り値
- 
            
Promise<boolean>
Chrome 111+ 
setMenuItems()
chrome.input.ime.setMenuItems(
parameters: MenuParameters,
): Promise<void>
この IME がアクティブなときに、指定されたメニュー項目を言語メニューに追加します。
パラメータ
- 
    パラメータ
 
戻り値
- 
            
Promise<void>
Chrome 111+ 
updateMenuItems()
chrome.input.ime.updateMenuItems(
parameters: MenuParameters,
): Promise<void>
指定された MenuItems の状態を更新します
パラメータ
- 
    パラメータ
 
戻り値
- 
            
Promise<void>
Chrome 111+ 
イベント
onActivate
chrome.input.ime.onActivate.addListener(
callback: function,
)
このイベントは、IME が有効になったときに送信されます。IME が onKeyPress イベントを受け取ることを示すシグナルです。
パラメータ
- 
    callback
関数
callbackパラメータは次のようになります。(engineID: string, screen: ScreenType) => void
- 
    engineID
文字列
 - 
    画面
 
 - 
    
 
onAssistiveWindowButtonClicked
chrome.input.ime.onAssistiveWindowButtonClicked.addListener(
callback: function,
)
このイベントは、補助ウィンドウのボタンがクリックされたときに送信されます。
パラメータ
- 
    callback
関数
callbackパラメータは次のようになります。(details: object) => void
- 
    詳細
オブジェクト
- 
    buttonID
クリックされたボタンの ID。
 - 
    windowType
補助ウィンドウのタイプ。
 
 - 
    
 
 - 
    
 
onBlur
chrome.input.ime.onBlur.addListener(
callback: function,
)
このイベントは、テキスト ボックスからフォーカスが外れたときに送信されます。このイベントをリッスンし、ユーザーによって有効になっているすべての拡張機能に送信されます。
パラメータ
- 
    callback
関数
callbackパラメータは次のようになります。(contextID: number) => void
- 
    contextID
数値
 
 - 
    
 
onCandidateClicked
chrome.input.ime.onCandidateClicked.addListener(
callback: function,
)
このイベントは、この拡張機能がアクティブな IME を所有している場合に送信されます。
パラメータ
- 
    callback
関数
callbackパラメータは次のようになります。(engineID: string, candidateID: number, button: MouseButton) => void
- 
    engineID
文字列
 - 
    candidateID
数値
 - 
    ボタン
 
 - 
    
 
onDeactivated
chrome.input.ime.onDeactivated.addListener(
callback: function,
)
IME が無効になったときに送信されます。これは、IME が onKeyPress イベントを受け取らなくなることを示すシグナルです。
パラメータ
- 
    callback
関数
callbackパラメータは次のようになります。(engineID: string) => void
- 
    engineID
文字列
 
 - 
    
 
onFocus
chrome.input.ime.onFocus.addListener(
callback: function,
)
このイベントは、テキスト ボックスにフォーカスが移動したときに送信されます。このイベントをリッスンし、ユーザーによって有効になっているすべての拡張機能に送信されます。
パラメータ
- 
    callback
関数
callbackパラメータは次のようになります。(context: InputContext) => void
- 
    コンテキスト
 
 - 
    
 
onInputContextUpdate
chrome.input.ime.onInputContextUpdate.addListener(
callback: function,
)
このイベントは、現在の InputContext のプロパティ(タイプなど)が変更されたときに送信されます。このイベントをリッスンし、ユーザーによって有効になっているすべての拡張機能に送信されます。
パラメータ
- 
    callback
関数
callbackパラメータは次のようになります。(context: InputContext) => void
- 
    コンテキスト
 
 - 
    
 
onKeyEvent
chrome.input.ime.onKeyEvent.addListener(
callback: function,
)
キーイベントがオペレーティング システムから送信されたときに発生します。この拡張機能がアクティブな IME を所有している場合、イベントは拡張機能に送信されます。イベントが処理された場合は true を返し、処理されなかった場合は false を返す必要があります。イベントが非同期で評価される場合、この関数は undefined を返す必要があり、IME は後で結果とともに keyEventHandled() を呼び出す必要があります。
パラメータ
- 
    callback
関数
callbackパラメータは次のようになります。(engineID: string, keyData: KeyboardEvent, requestId: string) => boolean | undefined
- 
    engineID
文字列
 - 
    keyData
 - 
    requestId
文字列
 
- 
            戻り値
boolean | undefined
 
 - 
    
 
onMenuItemActivated
chrome.input.ime.onMenuItemActivated.addListener(
callback: function,
)
ユーザーがメニュー項目を選択したときに呼び出されます
パラメータ
- 
    callback
関数
callbackパラメータは次のようになります。(engineID: string, name: string) => void
- 
    engineID
文字列
 - 
    name
文字列
 
 - 
    
 
onReset
chrome.input.ime.onReset.addListener(
callback: function,
)
このイベントは、Chrome が進行中のテキスト入力セッションを終了したときに送信されます。
パラメータ
- 
    callback
関数
callbackパラメータは次のようになります。(engineID: string) => void
- 
    engineID
文字列
 
 - 
    
 
onSurroundingTextChanged
chrome.input.ime.onSurroundingTextChanged.addListener(
callback: function,
)
カーソルの周囲の編集可能な文字列が変更されたとき、またはカーソルの位置が移動されたときに呼び出されます。テキストの長さは、往復の各方向で 100 文字に制限されています。
パラメータ
- 
    callback
関数
callbackパラメータは次のようになります。(engineID: string, surroundingInfo: object) => void
- 
    engineID
文字列
 - 
    surroundingInfo
オブジェクト
- 
    アンカー
数値
選択の開始位置。この値は、選択がない場合のキャレット位置を示します。
 - 
    ピント
数値
選択の終了位置。この値は、選択がない場合のキャレット位置を示します。
 - 
    offset
数値
Chrome 46 以降textのオフセット位置。textにはカーソル周辺のテキストのサブセットのみが含まれるため、オフセットはtextの最初の文字の絶対位置を示します。 - 
    テキスト
文字列
カーソルの周囲のテキスト。これは、入力フィールド内のすべてのテキストのサブセットにすぎません。
 
 - 
    
 
 -