Skip to content

KeyBoards ​

KeyBoards 通过默认输入法往已获焦点的文本框里输入。这是可选增强,不是默认输入方案。

一般优先顺序:

  1. 无障碍 UiObject.setText
  2. 不行再用剪贴板:System.setClip + paste
  3. 业务明确需要更接近真人输入时,再用本页的 KeyBoards

使用输入法前必须检查状态:先 canInput()(或先看 isEnabled())。状态不对时要提示用户去启用并设为默认输入法,不要静默失败。

先按 输入法设置 设为默认。和 Hid 一起用时,点、滑走硬件,打字走输入法。

javascript
if (!KeyBoards.canInput()) {
    FloatDialogs.toast('请将 DeekeScript 输入法设为默认后再试');
    KeyBoards.showInputMethodPicker();
} else {
    KeyBoards.input('文本框新增内容');
}
场景建议
普通填表、改文案优先 setText / 剪贴板
平台对自动化改文本较严、且已设好输入法再用输入法(先 canInput())
框不能编辑、没有焦点无障碍节点操作;不要硬调输入法
方法作用
canInput()是否已是默认输入法
isEnabled()是否已启用(不等于能输入)
showInputMethodPicker()按状态带到启用或选择页
input(info)在焦点框末尾追加
delete()删一个字符
hide()收起键盘
pressKey(key)回车、方向键等
pressEnter() / pressTab() / pressSpace()常用键快捷方法

canInput() ​

返回: {boolean} 当前是否为默认输入法,为 false 时不能输入

javascript
if (KeyBoards.canInput()) {
    KeyBoards.input('文本框新增内容');
}

isEnabled() ​

返回: {boolean} 输入法是否已启用

已启用但未设为默认时这里是 true,canInput() 仍是 false。

javascript
if (!KeyBoards.isEnabled()) {
    KeyBoards.showInputMethodPicker();
}

showInputMethodPicker() ​

返回: {boolean} 已经是默认输入法则 true;否则打开相应页面并返回 false

  • 已是默认:直接 true
  • 未启用:跳到启用页
  • 已启用未默认:弹出输入法选择
javascript
if (!KeyBoards.showInputMethodPicker()) {
    System.sleep(2000);
    if (KeyBoards.canInput()) {
        console.log('输入法已设置为默认');
    }
}

input(info) ​

参数:

  • info {string} 要追加的文本

返回: {boolean} 指令是否发出。框没有焦点时也可能是 true,但字不会出现

先点进输入框,确认有焦点再调。内容加在已有文字后面,不会清空。

javascript
KeyBoards.input('文本框新增内容');

delete() ​

返回: {boolean} 删除指令是否发出。框已经空了也会返回 true

一次只删一个字符。要清空就先读长度,再循环调用。

javascript
KeyBoards.delete();

hide() ​

返回: {boolean} 是否收起键盘

javascript
KeyBoards.hide();

pressKey(key) ​

参数:

  • key {string|number} 按键名(如 "ENTER")或 KeyBoards.KEYCODE.ENTER

返回: {boolean} 是否发出

只能发文本相关键。HOME、BACK、POWER 等系统键发不出去,用 Gesture 或 Hid。

名称不区分大小写:ENTER、DEL / DELETE、TAB、SPACE、UP、DOWN、LEFT、RIGHT、CENTER、ESCAPE / ESC、FORWARD_DEL、MOVE_HOME、MOVE_END、PAGE_UP、PAGE_DOWN。

javascript
KeyBoards.pressKey('ENTER');
KeyBoards.pressKey('SPACE');
KeyBoards.pressKey(KeyBoards.KEYCODE.ENTER);

pressEnter() ​

返回: {boolean} 是否发出回车,等同 pressKey('ENTER')

javascript
KeyBoards.pressEnter();

pressTab() ​

返回: {boolean} 是否发出 Tab,等同 pressKey('TAB')

javascript
KeyBoards.pressTab();

pressSpace() ​

返回: {boolean} 是否发出空格,等同 pressKey('SPACE')

javascript
KeyBoards.pressSpace();

相关页 ​