Описание
Используйте API chrome.input.ime
для реализации собственного редактора метода ввода (IME) для Chrome OS. Это позволит вашему расширению обрабатывать нажатия клавиш, настраивать композицию и управлять окном-кандидатом.
Разрешения
input
Для использования API input.ime необходимо указать разрешение «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
Идентификатор кнопок во вспомогательном окне.
Перечисление
"отменить" "addToDictionary"
AssistiveWindowProperties
Свойства вспомогательного окна.
Характеристики
- announceString
строка необязательная
Строки для объявления ChromeVox.
- тип
"отменить"
- видимый
булев
Установите значение true, чтобы отобразить AssistiveWindow, установите значение false, чтобы скрыть.
AssistiveWindowType
Тип вспомогательного окна.
Ценить
"отменить"
AutoCapitalizeType
Тип автоматического заглавия букв в текстовом поле.
Перечисление
"персонажи" "слова" "предложения"
InputContext
Описывает входной контекст
Характеристики
- автокапитализацияХром 69+
Тип автоматического заглавия букв в текстовом поле.
- автозаполнение
булев
Требуется ли автозаполнение текстового поля.
- автозамена
булев
Требуется ли автокоррекция текстового поля.
- contextID
число
Используется для указания целей операций с текстовыми полями. Этот идентификатор становится недействительным сразу после вызова onBlur.
- shouldDoLearning
булев
Хром 68+Следует ли использовать текст, введенный в текстовое поле, для улучшения подсказок по вводу для пользователя.
- Проверка орфографии
булев
Требуется ли проверка орфографии в текстовом поле.
- тип
Тип значения, которое редактирует это текстовое поле (текст, число, URL и т. д.)
InputContextType
Тип значения, которое редактирует это текстовое поле (текст, число, URL и т. д.)
Перечисление
"текст" "поиск" "тел" "url" "электронная почта" "число" "пароль" "нулевой"
KeyboardEvent
См. http://www.w3.org/TR/DOM-Level-3-Events/#events-KeyboardEvent
Характеристики
- altKey
логическое необязательное
Нажата ли клавиша ALT.
- altgrKey
логическое необязательное
Хром 79+Нажата ли клавиша ALTGR.
- CapsLock
логическое необязательное
Включен ли CAPS_LOCK.
- код
нить
Значение нажатой физической клавиши. Значение не зависит от текущей раскладки клавиатуры или состояния модификатора.
- ctrlKey
логическое необязательное
Нажата ли клавиша CTRL.
- extensionId
строка необязательная
Идентификатор расширения отправителя этого ключевого события.
- ключ
нить
Значение нажатой клавиши
- keyCode
номер необязательно
Устаревший HTML-код keyCode, представляющий собой зависящий от системы и реализации числовой код, обозначающий неизмененный идентификатор, связанный с нажатой клавишей.
- requestId
строка необязательная
(Устарело) Идентификатор запроса. Вместо этого используйте параметр
requestId
из событияonKeyEvent
. - shiftKey
логическое необязательное
Нажата ли клавиша SHIFT.
Одно из нажатий клавиши вверх или вниз.
KeyboardEventType
Перечисление
"keyup" "нажатие клавиши"
MenuItem
Пункт меню, используемый методом ввода для взаимодействия с пользователем из языкового меню.
Характеристики
- проверено
логическое необязательное
Указывает, что этот пункт следует оформить с проверкой.
- включено
логическое необязательное
Указывает, что этот элемент включен.
- идентификатор
нить
Строка, которая будет передана обратным вызовам, ссылающимся на этот MenuItem.
- этикетка
строка необязательная
Текст, отображаемый в меню для этого пункта.
- стиль
MenuItemStyle необязательно
Тип пункта меню.
- видимый
логическое необязательное
Указывает, что этот элемент видим.
MenuItemStyle
Тип пункта меню. Переключатели между разделителями считаются сгруппированными.
Перечисление
"проверять" "радио" "разделитель"
MenuParameters
Характеристики
- engineID
нить
Идентификатор используемого движка.
- предметы
Пункт меню []
Пункты меню для добавления или обновления. Они будут добавлены в том порядке, в котором они находятся в массиве.
MouseButton
Какие кнопки мыши были нажаты.
Перечисление
"левый" "середина" "верно"
ScreenType
Тип экрана, при котором активируется IME.
Перечисление
"нормальный" "авторизоваться" "замок" "вторичный вход"
UnderlineStyle
Тип подчеркивания для изменения этого сегмента.
Перечисление
"подчеркнуть" "doubleUnderline" "noUnderline"
WindowPosition
Где отображать окно-кандидат. Если установлено значение «cursor», окно следует за курсором. Если установлено значение «composition», окно фиксируется в начале композиции.
Перечисление
"курсор" "композиция"
Методы
clearComposition()
chrome.input.ime.clearComposition(
parameters: object,
): Promise<boolean>
Очистить текущую композицию. Если это расширение не владеет активным IME, это не сработает.
Параметры
- параметры
объект
- contextID
число
Идентификатор контекста, в котором будет очищена композиция
Возврат
Обещание<логическое>
Хром 111+
commitText()
chrome.input.ime.commitText(
parameters: object,
): Promise<boolean>
Применяет предоставленный текст к текущему вводу.
Параметры
- параметры
объект
- contextID
число
Идентификатор контекста, в котором будет зафиксирован текст
- текст
нить
Текст для совершения
Возврат
Обещание<логическое>
Хром 111+
deleteSurroundingText()
chrome.input.ime.deleteSurroundingText(
parameters: object,
): Promise<void>
Удаляет текст вокруг курсора.
Параметры
- параметры
объект
- contextID
число
Идентификатор контекста, в котором будет удален окружающий текст.
- engineID
нить
Идентификатор движка, принимающего событие.
- длина
число
Количество символов, которые нужно удалить
- компенсировать
число
Смещение от позиции курсора, с которого начнётся удаление. Это значение может быть отрицательным.
Возврат
Обещание<void>
Хром 111+
hideInputView()
chrome.input.ime.hideInputView(): void
Скрывает окно ввода, которое автоматически открывается системой. Если окно ввода уже скрыто, эта функция ничего не сделает.
keyEventHandled()
chrome.input.ime.keyEventHandled(
requestId: string,
response: boolean,
): void
Указывает, что событие нажатия клавиши, полученное onKeyEvent, обработано. Вызывается только в том случае, если прослушиватель onKeyEvent асинхронный.
Параметры
- requestId
нить
Идентификатор запроса обработанного события. Должен быть получен из keyEvent.requestId.
- ответ
булев
True, если нажатие клавиши было обработано, false — если нет.
sendKeyEvents()
chrome.input.ime.sendKeyEvents(
parameters: object,
): Promise<void>
Отправляет события клавиш. Эта функция предназначена для использования виртуальными клавиатурами. Когда пользователь нажимает клавишу(и) на виртуальной клавиатуре, эта функция используется для передачи события в систему.
Параметры
- параметры
объект
- contextID
число
Идентификатор контекста, в который будут отправляться ключевые события, или ноль для отправки ключевых событий в поле, не предназначенное для ввода.
- keyData
Данные о ключевом событии.
Возврат
Обещание<void>
Хром 111+
setAssistiveWindowButtonHighlighted()
chrome.input.ime.setAssistiveWindowButtonHighlighted(
parameters: object,
): Promise<void>
Выделяет/снимает выделение кнопки во вспомогательном окне.
Параметры
- параметры
объект
- announceString
строка необязательная
Текст, который будет озвучивать программа чтения с экрана.
- buttonID
Идентификатор кнопки
- contextID
число
Идентификатор контекста, владеющего вспомогательным окном.
- выделено
булев
Нужно ли выделять кнопку.
- Тип окна
"отменить"
Тип окна, к которому принадлежит кнопка.
Возврат
Обещание<void>
Хром 111+
setAssistiveWindowProperties()
chrome.input.ime.setAssistiveWindowProperties(
parameters: object,
): Promise<boolean>
Показывает/скрывает вспомогательное окно с заданными свойствами.
Параметры
- параметры
объект
- contextID
число
Идентификатор контекста, владеющего вспомогательным окном.
- характеристики
Свойства вспомогательного окна.
Возврат
Обещание<логическое>
Хром 111+
setCandidates()
chrome.input.ime.setCandidates(
parameters: object,
): Promise<boolean>
Устанавливает текущий список кандидатов. Не работает, если у этого расширения нет активного IME.
Параметры
- параметры
объект
- кандидаты
объект[]
Список кандидатов для отображения в окне кандидатов
- аннотация
строка необязательная
Дополнительный текст, описывающий кандидата
- кандидат
нить
Кандидат
- идентификатор
число
Удостоверение личности кандидата
- этикетка
строка необязательная
Короткая строка, отображаемая рядом с кандидатом, часто это сочетание клавиш или индекс
- parentId
номер необязательно
Идентификатор для добавления этих кандидатов в
- использование
объект необязательный
Использование или подробное описание слова.
- тело
нить
Строка тела подробного описания.
- заголовок
нить
Строка заголовка описания деталей.
- contextID
число
Идентификатор контекста, которому принадлежит окно-кандидат.
Возврат
Обещание<логическое>
Хром 111+
setCandidateWindowProperties()
chrome.input.ime.setCandidateWindowProperties(
parameters: object,
): Promise<boolean>
Задаёт свойства окна-кандидата. Это не сработает, если расширение не владеет активным редактором метода ввода (IME).
Параметры
- параметры
объект
- engineID
нить
Идентификатор движка, для которого необходимо задать свойства.
- характеристики
объект
- вспомогательныйтекст
строка необязательная
Текст, который отображается в нижней части окна кандидата.
- вспомогательныйТекстВидимый
логическое необязательное
True — для отображения вспомогательного текста, false — для его скрытия.
- currentCandidateIndex
номер необязательно
Хром 84+Индекс текущего выбранного кандидата из общего числа кандидатов.
- курсорВидимый
логическое необязательное
True — отобразить курсор, false — скрыть его.
- размер страницы
номер необязательно
Количество кандидатов, отображаемых на странице.
- общее количество кандидатов
номер необязательно
Хром 84+Общее количество кандидатов в окне кандидатов.
- вертикальный
логическое необязательное
True, если окно-кандидат должно быть вертикальным, false — чтобы сделать его горизонтальным.
- видимый
логическое необязательное
True — показать окно «Кандидат», false — скрыть его.
- Положение окна
WindowPosition необязательно
Где отображать окно кандидатов.
Возврат
Обещание<логическое>
Хром 111+
setComposition()
chrome.input.ime.setComposition(
parameters: object,
): Promise<boolean>
Установить текущую композицию. Если это расширение не владеет активным IME, это не сработает.
Параметры
- параметры
объект
- contextID
число
Идентификатор контекста, в котором будет установлен текст композиции
- курсор
число
Положение курсора в тексте.
- сегменты
объект[] необязательный
Список сегментов и связанных с ними типов.
- конец
число
Индекс символа, которым следует завершить данный сегмент.
- начинать
число
Индекс символа, с которого начинается этот сегмент
- стиль
Тип подчеркивания для изменения этого сегмента.
- выборКонец
номер необязательно
Позиция в тексте, на которой заканчивается выделение.
- выборНачало
номер необязательно
Позиция в тексте, с которой начинается выделение.
- текст
нить
Текст для установки
Возврат
Обещание<логическое>
Хром 111+
setCursorPosition()
chrome.input.ime.setCursorPosition(
parameters: object,
): Promise<boolean>
Установите положение курсора в окне кандидатов. Это не будет выполняться, если у этого расширения нет активного IME.
Параметры
- параметры
объект
- идентификатор кандидата
число
Идентификатор кандидата для выбора.
- contextID
число
Идентификатор контекста, которому принадлежит окно-кандидат.
Возврат
Обещание<логическое>
Хром 111+
setMenuItems()
chrome.input.ime.setMenuItems(
parameters: MenuParameters,
): Promise<void>
Добавляет предоставленные пункты меню в языковое меню, когда этот IME активен.
Параметры
- параметры
Возврат
Обещание<void>
Хром 111+
updateMenuItems()
chrome.input.ime.updateMenuItems(
parameters: MenuParameters,
): Promise<void>
Обновляет состояние указанных пунктов меню.
Параметры
- параметры
Возврат
Обещание<void>
Хром 111+
События
onActivate
chrome.input.ime.onActivate.addListener(
callback: function,
)
Это событие отправляется при активации редактора метода ввода (IME). Оно сигнализирует о том, что редактор метода ввода (IME) будет получать события onKeyPress.
Параметры
- перезвонить
функция
Параметр
callback
выглядит так:(engineID: string, screen: ScreenType) => void
- engineID
нить
- экран
onAssistiveWindowButtonClicked
chrome.input.ime.onAssistiveWindowButtonClicked.addListener(
callback: function,
)
Это событие отправляется при нажатии кнопки во вспомогательном окне.
Параметры
- перезвонить
функция
Параметр
callback
выглядит так:(details: object) => void
- подробности
объект
- buttonID
Идентификатор нажатой кнопки.
- Тип окна
Тип вспомогательного окна.
onBlur
chrome.input.ime.onBlur.addListener(
callback: function,
)
Это событие отправляется, когда фокус покидает текстовое поле. Оно отправляется всем расширениям, которые отслеживают это событие и включены пользователем.
Параметры
- перезвонить
функция
Параметр
callback
выглядит так:(contextID: number) => void
- contextID
число
onCandidateClicked
chrome.input.ime.onCandidateClicked.addListener(
callback: function,
)
Это событие отправляется, если данное расширение владеет активным IME.
Параметры
- перезвонить
функция
Параметр
callback
выглядит так:(engineID: string, candidateID: number, button: MouseButton) => void
- engineID
нить
- идентификатор кандидата
число
- кнопка
onDeactivated
chrome.input.ime.onDeactivated.addListener(
callback: function,
)
Это событие отправляется при деактивации редактора метода ввода (IME). Оно сигнализирует о том, что редактор метода ввода (IME) больше не будет получать события onKeyPress.
Параметры
- перезвонить
функция
Параметр
callback
выглядит так:(engineID: string) => void
- engineID
нить
onFocus
chrome.input.ime.onFocus.addListener(
callback: function,
)
Это событие отправляется при перемещении фокуса на текстовое поле. Оно отправляется всем расширениям, которые отслеживают это событие и включаются пользователем.
Параметры
- перезвонить
функция
Параметр
callback
выглядит так:(context: InputContext) => void
- контекст
onInputContextUpdate
chrome.input.ime.onInputContextUpdate.addListener(
callback: function,
)
Это событие отправляется при изменении свойств текущего InputContext, например, типа. Оно отправляется всем расширениям, которые прослушивают это событие и включаются пользователем.
Параметры
- перезвонить
функция
Параметр
callback
выглядит так:(context: InputContext) => void
- контекст
onKeyEvent
chrome.input.ime.onKeyEvent.addListener(
callback: function,
)
Срабатывает при отправке события нажатия клавиши из операционной системы. Событие будет отправлено расширению, если этому расширению принадлежит активный редактор метода ввода (IME). Функция прослушивателя должна возвращать значение true, если событие было обработано, и значение false, если не было. Если событие будет обрабатываться асинхронно, эта функция должна возвращать значение undefined, а IME должен впоследствии вызвать keyEventHandled() с результатом.
Параметры
- перезвонить
функция
Параметр
callback
выглядит так:(engineID: string, keyData: KeyboardEvent, requestId: string) => boolean | undefined
- engineID
нить
- keyData
- requestId
нить
- возвращается
логическое значение | неопределенное
onMenuItemActivated
chrome.input.ime.onMenuItemActivated.addListener(
callback: function,
)
Вызывается, когда пользователь выбирает пункт меню.
Параметры
- перезвонить
функция
Параметр
callback
выглядит так:(engineID: string, name: string) => void
- engineID
нить
- имя
нить
onReset
chrome.input.ime.onReset.addListener(
callback: function,
)
Это событие отправляется, когда Chrome завершает текущий сеанс ввода текста.
Параметры
- перезвонить
функция
Параметр
callback
выглядит так:(engineID: string) => void
- engineID
нить
onSurroundingTextChanged
chrome.input.ime.onSurroundingTextChanged.addListener(
callback: function,
)
Вызывается при изменении редактируемой строки вокруг курсора или при перемещении курсора. Длина текста ограничена 100 символами для каждого направления.
Параметры
- перезвонить
функция
Параметр
callback
выглядит так:(engineID: string, surroundingInfo: object) => void
- engineID
нить
- окружающаяИнформация
объект
- якорь
число
Начальная позиция выделения. Это значение указывает позицию курсора, если выделение отсутствует.
- фокус
число
Конечная позиция выделения. Это значение указывает позицию курсора, если выделение отсутствует.
- компенсировать
число
Хром 46+Смещение позиции
text
. Посколькуtext
включает в себя только подмножество текста вокруг курсора, смещение указывает абсолютную позицию первого символаtext
. - текст
нить
Текст вокруг курсора. Это лишь часть всего текста в поле ввода.