chrome.input.ime
描述: |
使用 chrome.input.ime API 为 Chrome OS 实现自定义的输入法,它允许您的扩展程序处理键盘输入、设置候选内容及管理候选窗口。
|
可用版本: |
从 Chrome 21 开始支持。
|
权限: |
"input"
|
清单文件
您必须在扩展程序的清单文件中声明 "input" 权限才能使用输入法 API。例如:
{ "name": "我的扩展程序", ... "permissions": [ "input" ], ... }
例子
如下代码创建一个将输入字母转换为大写的输入法:
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; } });
有关使用该API的一个例子,请参见基本的 input.ime 示例。有关其他例子以及查看源代码的帮助,请参见示例。
摘要
类型 | |
---|---|
KeyboardEvent | |
InputContext | |
MenuItem | |
方法 | |
setComposition −
chrome.input.ime.setComposition(object parameters, function callback)
| |
clearComposition −
chrome.input.ime.clearComposition(object parameters, function callback)
| |
commitText −
chrome.input.ime.commitText(object parameters, function callback)
| |
sendKeyEvents −
chrome.input.ime.sendKeyEvents(object parameters, function callback)
| |
hideInputView −
chrome.input.ime.hideInputView()
| |
setCandidateWindowProperties −
chrome.input.ime.setCandidateWindowProperties(object parameters, function callback)
| |
setCandidates −
chrome.input.ime.setCandidates(object parameters, function callback)
| |
setCursorPosition −
chrome.input.ime.setCursorPosition(object parameters, function callback)
| |
setMenuItems −
chrome.input.ime.setMenuItems(object parameters, function callback)
| |
updateMenuItems −
chrome.input.ime.updateMenuItems(object parameters, function callback)
| |
deleteSurroundingText −
chrome.input.ime.deleteSurroundingText(object parameters, function callback)
| |
keyEventHandled −
chrome.input.ime.keyEventHandled(string requestId, boolean response)
| |
事件 | |
onActivate | |
onDeactivated | |
onFocus | |
onBlur | |
onInputContextUpdate | |
onKeyEvent | |
onCandidateClicked | |
onMenuItemActivated | |
onSurroundingTextChanged | |
onReset |
类型
KeyboardEvent
属性 | ||
---|---|---|
enum of "keyup" , or "keydown" |
type |
"keyup"(按键弹起)或 "keydown"(按键按下)。 |
string | requestId |
请求标识符。 |
string | (可选) extensionId |
从 Chrome 34 开始支持。 发送键盘事件的扩展程序标识符。 |
string | key |
按下的按键值。 |
string | code |
从 Chrome 26 开始支持。 按下的物理按键的值,不受当前键盘布局或组合键状态的影响。 |
integer | (可选) keyCode |
从 Chrome 37 开始支持。警告:目前为 Beta 分支。了解更多内容 弃用的 HTML5 按键代码,是一种与系统和实现相关的数字代码,表示与按键相关联的未经修改的标识符。 |
boolean | (可选) altKey |
是否按下了 Alt 键。 |
boolean | (可选) ctrlKey |
是否按下了 Ctrl 键。 |
boolean | (可选) shiftKey |
是否按下了 Shift 键。 |
boolean | (可选) capsLock |
从 Chrome 29 开始支持。 Caps Lock 键是否启用。 |
InputContext
属性 | ||
---|---|---|
integer | contextID |
该属性用来指定文本框操作的目标,一旦接收到 onBlur 事件该标识符就不再有效。 |
enum of "text" , "search" , "tel" , "url" , "email" , or "number" |
type |
该文本框编辑的值的类型:文本、数字、URL 等。Type of value this text field edits, (Text, Number, URL, etc) |
MenuItem
从 Chrome 30 开始支持。
属性 | ||
---|---|---|
string | id |
传递给回调函数的字符串,用来引用这一菜单项。 |
string | (可选) label |
这一菜单项在菜单中显示的文本。 |
enum of "check" , "radio" , or "separator" |
(可选) style |
代表这一菜单项是否是:"check"(复选)、"radio"(单选)或 "separator"(分隔符)的枚举值。在分隔符之间的单选按钮将认为是同一组的。 |
boolean | (可选) visible |
表示这一菜单项是否可见。 |
boolean | (可选) checked |
表示这一菜单项是否已勾选。 |
boolean | (可选) enabled |
表示这一菜单项是否已启用。 |
方法
setComposition
chrome.input.ime.setComposition(object parameters, function callback)
设置当前的候选内容。如果当前扩展程序没有独占当前输入法,该方法将会失败。
参数 | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
object | parameters |
|
|||||||||||||||||||||||||||
function | (可选) callback |
当操作完成时调用,传递一个布尔值,表示文本是否被接受。如果调用失败,将设置 runtime.lastError。 如果您指定了 callback 参数,它应该是一个如下形式的函数: function(boolean success) {...};
|
clearComposition
chrome.input.ime.clearComposition(object parameters, function callback)
清除当前的候选内容。如果当前扩展程序没有独占当前输入法,该方法将会失败。
参数 | |||||
---|---|---|---|---|---|
object | parameters |
|
|||
function | (可选) callback |
当操作完成时调用,传递一个布尔值,表示文本是否被接受。如果调用失败,将设置 runtime.lastError。 如果您指定了 callback 参数,它应该是一个如下形式的函数: function(boolean success) {...};
|
commitText
chrome.input.ime.commitText(object parameters, function callback)
将提供的文本提交至当前输入。
参数 | ||||||||
---|---|---|---|---|---|---|---|---|
object | parameters |
|
||||||
function | (可选) callback |
当操作完成时调用,传递一个布尔值,表示文本是否被接受。如果调用失败,将设置 runtime.lastError。 如果您指定了 callback 参数,它应该是一个如下形式的函数: function(boolean success) {...};
|
sendKeyEvents
chrome.input.ime.sendKeyEvents(object parameters, function callback)
从 Chrome 33 开始支持。
发送键盘事件,该函数由虚拟键盘使用。用户按下虚拟键盘上的按键时,该函数可以用来将该事件传播给系统。
参数 | ||||||||
---|---|---|---|---|---|---|---|---|
object | parameters |
|
||||||
function | (可选) callback |
操作完成时调用。 如果您指定了 callback 参数,它应该是一个如下形式的函数: function() {...};
|
hideInputView
chrome.input.ime.hideInputView()
从 Chrome 34 开始支持。
隐藏系统自动弹出的输入视图窗口。如果输入视图窗口已经隐藏,该函数不进行任何操作。
setCandidateWindowProperties
chrome.input.ime.setCandidateWindowProperties(object parameters, function callback)
设置候选窗口的属性。如果当前扩展程序没有独占当前输入法,该方法将会失败。
参数 | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
object | parameters |
|
|||||||||||||||||||||||||||
function | (可选) callback |
操作完成时调用。 如果您指定了 callback 参数,它应该是一个如下形式的函数: function(boolean success) {...};
|
setCandidates
chrome.input.ime.setCandidates(object parameters, function callback)
设置当前的候选列表。如果当前扩展程序没有独占当前输入法,该方法将会失败。
参数 | ||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
object | parameters |
|
||||||||||||||||||||||||||||||
function | (可选) callback |
操作完成时调用。 如果您指定了 callback 参数,它应该是一个如下形式的函数: function(boolean success) {...};
|
setCursorPosition
chrome.input.ime.setCursorPosition(object parameters, function callback)
设置候选窗口中的光标位置。如果当前扩展程序没有独占当前输入法,则不进行任何操作。
参数 | ||||||||
---|---|---|---|---|---|---|---|---|
object | parameters |
|
||||||
function | (可选) callback |
操作完成时调用。 如果您指定了 callback 参数,它应该是一个如下形式的函数: function(boolean success) {...};
|
setMenuItems
chrome.input.ime.setMenuItems(object parameters, function callback)
当前输入法处于活动状态时,向语言菜单添加提供的菜单项。
参数 | ||||||||
---|---|---|---|---|---|---|---|---|
object | parameters |
|
||||||
function | (可选) callback |
如果您指定了 callback 参数,它应该是一个如下形式的函数: function() {...};
|
updateMenuItems
chrome.input.ime.updateMenuItems(object parameters, function callback)
更新指定菜单项的状态。
参数 | ||||||||
---|---|---|---|---|---|---|---|---|
object | parameters |
|
||||||
function | (可选) callback |
操作完成时调用。 如果您指定了 callback 参数,它应该是一个如下形式的函数: function() {...};
|
deleteSurroundingText
chrome.input.ime.deleteSurroundingText(object parameters, function callback)
从 Chrome 27 开始支持。
删除光标周围的文本。
参数 | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
object | parameters |
|
||||||||||||
function | (可选) callback |
操作完成时调用。 如果您指定了 callback 参数,它应该是一个如下形式的函数: function() {...};
|
keyEventHandled
chrome.input.ime.keyEventHandled(string requestId, boolean response)
从 Chrome 25 开始支持。
表示 onKeyEvent 接收到的键盘事件已处理,只有当 onKeyEvent 监听器为异步时才应该调用该方法。
参数 | ||
---|---|---|
string | requestId |
处理的事件的请求标识符,应该从 keyEvent.requestId 获得。 |
boolean | response |
如果按键已处理则为 true,否则为 false。 |
事件
onActivate
输入法激活时发送这一事件,这意味着当前输入法将会接收 onKeyEvent 事件。
addListener
chrome.input.ime.onActivate.addListener(function callback)
参数 | ||||||||
---|---|---|---|---|---|---|---|---|
function | callback |
callback 参数应该是一个如下形式的函数: function(string engineID, enum of
|
onDeactivated
当输入法处于不活动状态时产生,这意味着当前输入法不会继续接收 onKeyEvent 事件。
addListener
chrome.input.ime.onDeactivated.addListener(function callback)
参数 | |||||
---|---|---|---|---|---|
function | callback |
callback 参数应该是一个如下形式的函数: function(string engineID) {...};
|
onFocus
当焦点进入文本框时发送该事件,它将发送至用户启用并且监听该事件的所有扩展程序。
addListener
chrome.input.ime.onFocus.addListener(function callback)
参数 | |||||
---|---|---|---|---|---|
function | callback |
callback 参数应该是一个如下形式的函数: function( InputContext context) {...};
|
onBlur
当焦点离开文本框时发送这一事件,它将发送至用户启用并且监听该事件的所有扩展程序。
addListener
chrome.input.ime.onBlur.addListener(function callback)
参数 | |||||
---|---|---|---|---|---|
function | callback |
callback 参数应该是一个如下形式的函数: function(integer contextID) {...};
|
onInputContextUpdate
当前的 InputContext(输入上下文)属性(例如类型)更改时发送这一事件,它将发送至用户启用并且监听该事件的所有扩展程序。
addListener
chrome.input.ime.onInputContextUpdate.addListener(function callback)
参数 | |||||
---|---|---|---|---|---|
function | callback |
callback 参数应该是一个如下形式的函数: function( InputContext context) {...};
|
onKeyEvent
如果当前扩展程序独占当前输入法,则会发送这一事件。
addListener
chrome.input.ime.onKeyEvent.addListener(function callback, )
参数 | ||||||||
---|---|---|---|---|---|---|---|---|
function | callback |
callback 参数应该是一个如下形式的函数: function(string engineID, KeyboardEvent keyData) {...};
|
监听器返回值
- ( boolean )
- 如果处理了这一次按键操作则返回 true,否则返回 false。如果没有指定 "async" 的话该函数必须返回一个值。
onCandidateClicked
如果当前扩展程序独占当前输入法,则会发送这一事件。
addListener
chrome.input.ime.onCandidateClicked.addListener(function callback)
参数 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
function | callback |
callback 参数应该是一个如下形式的函数: function(string engineID, integer candidateID, enum of
|
onMenuItemActivated
当用户选择菜单项时调用。
addListener
chrome.input.ime.onMenuItemActivated.addListener(function callback)
参数 | ||||||||
---|---|---|---|---|---|---|---|---|
function | callback |
callback 参数应该是一个如下形式的函数: function(string engineID, string name) {...};
|
onSurroundingTextChanged
从 Chrome 27 开始支持。
当光标周围可编辑的字符串更改或光标位置移动时调用,前进和后退方向的文本长度限制都是 100 个字符。
addListener
chrome.input.ime.onSurroundingTextChanged.addListener(function callback)
参数 | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
function | callback |
callback 参数应该是一个如下形式的函数: function(string engineID, object surroundingInfo) {...};
|
onReset
从 Chrome 29 开始支持。
当 Chrome 浏览器终止正在进行的文字输入会话时发送该事件。
addListener
chrome.input.ime.onReset.addListener(function callback)
参数 | |||||
---|---|---|---|---|---|
function | callback |
callback 参数应该是一个如下形式的函数: function(string engineID) {...};
|
示例扩展程序
- Test IME – A simple IME that converts all keystrokes to upper case.