Skip to content

事件 Events

Events 是统一事件总线。可监听按键、屏幕亮灭、无障碍事件和窗口切换;也可用 emit 派发自定义事件。多数系统事件依赖无障碍;按键还需先 observeKey(),且无障碍服务配置允许过滤按键。脚本结束会自动清理监听。

javascript
Events.observeKey();
Events.on('key_down', function (e) {
  console.log(e.key, e.keyCode);
});
方法作用
observeKey()开始观察按键
ignoreKey()停止观察按键
isObservingKey()是否正在观察按键
on(event, cb)持续监听
once(event, cb)只触发一次
emit(event, ...args)派发事件(系统或自定义)
off(event)移除该事件全部监听
off(event, cb)移除指定回调
removeAllListeners()清空全部监听

事件名

事件回调说明
key_down(event, keyCode)键按下
key_up(event, keyCode)键抬起
key(event, keyCode)按下与抬起
screen_on无参亮屏
screen_off无参灭屏
accessibility(obj, eventType)无障碍事件
window_changed(obj)窗口状态变化
自定义名(...args)emit 自行派发

按键 event 含:keyCodeactionkey(如 volume_up)、repeatCount

observeKey()

返回: {void}

开始观察按键。未调用时不会派发 key_down / key_up / key

javascript
Events.observeKey();

ignoreKey()

返回: {void}

停止观察按键。

isObservingKey()

返回: {boolean}

on(event, callback)

参数:

  • event {string} 事件名
  • callback {function} 回调

返回: {void}

javascript
Events.on('screen_off', function () {
  console.log('屏幕灭了');
});

Events.on('window_changed', function (obj) {
  console.log(obj.packageName, obj.className);
});

emit(event, ...args)

参数:

  • event {string} 事件名(系统名或自定义名)
  • ...args 可选,原样传给监听回调

返回: {void}

javascript
Events.on('task_done', function (name, ok) {
  console.log(name, ok);
});
Events.emit('task_done', 'login', true);

事件名会规范化:去首尾空白、转小写、-_

once(event, callback)

参数:on

返回: {void}

只触发一次后自动移除。

off(event) / off(event, callback)

参数:

  • event {string} 事件名
  • callback {function} 可选,指定要移除的回调

返回: {void}

removeAllListeners()

返回: {void}

清空全部监听并停止按键观察。任务脚本里长监听请用定时器保活;脚本结束也会自动清理。

相关