更新时间:2021-07-12 18:20:41收藏我的文档设置返回文档简介本文介绍 iot 小程序如何技术方式集成监听键盘事件,适用于已有iot小程序,需要技术接入的开发者。my.ix.keyeventchange 为 iot 小程序提供的监听键盘事件api。主要提供开启和关闭两步监听api:●my.ix.onkeyeventchange:开启键盘事件监听,调用后开启注册监听键盘事件,键盘操作通过监听事件返回。●my.ix.offkeyeventchange:关闭键盘事件监听,调用后取消注册,关闭监听键盘事件,完成一个监听闭环。使用说明监听键盘事件支持:蜻蜓f4蓝牙键盘和usb键盘监听。监听键盘事件api调用说明每个 page 只需要在 onshow 的时候执行 onkeyeventchange,在 onhide 的时候执行 offkeyeventchange 键盘事件是全局事件,建议参考下文 监听键盘事件示例代码 做逻辑注册;也可以每个 page 在 onshow 注册,在 onhide 取消注册(切记不要多次 onkeyeventchange 或遗漏 offkeyeventchange,否则会造成键盘事件回调被多次执行;也不要遗漏 onhide,否则多页面跳转时多个页面都会收到按键事件)。如果不在 onhide 的时候取消注册,在某些连续返回的场景(navigateback 带有 delta 参数)会多页面派发按键事件,导致逻辑异常。开启键盘事件监听my.ix.onkeyeventchange 开启注册监听键盘事件,键盘操作通过监听事件返回。注:切记不要多次 onkeyeventchange 开启监听,否则会造成键盘事件回调被多次执行。示例代码javascript复制代码91234567//.jsmy.ix.onkeyeventchange((r) => { if (r.keycode === 131) my.showtoast({content: 'amount: ' r.amount}); else my.showtoast({content: 'keycode: ' r.keycode});});入参名称类型必填描述listenerfunction是键盘事件产生时被回调的方法回调参数名称类型描述keycodenumber模拟键盘按键的代码值,keycode 参数的值是字符输入设备(如:键盘,扫码枪等)输入的字符在 iot 小程序中的代码值,详细代码值如下 keycode 参数代码表 所示amountstringamount 只会在 keycode = 131 时存在,蜻蜓 f4 蓝牙键盘最多支持8位金额keycode 回调参数值列表alipay k1 键盘通过 usb 连接蜻蜓设备时,收款、刷脸、取消、设置等4个按钮会同时触发3个键盘事件,其中前面2个事件(keycode=113 /57)需要忽略掉。比如按键收款会监听到3个事件:●{"action":0,"keycode":113}●{"action":0,"keycode":57}●{"action":0,"amount":"0.01","keycode":131}keycode描述键盘模拟7keycode - 7 = 0,表示按键00(仅扫码枪支持输入)8keycode - 7 = 1,表示按键11(仅扫码枪支持输入)9keycode - 7 = 2,表示按键22(仅扫码枪支持输入)10keycode - 7 = 3,表示按键33(仅扫码枪支持输入)11keycode - 7 = 4,表示按键44(仅扫码枪支持输入)12keycode - 7 = 5,表示按键55(仅扫码枪支持输入)13keycode - 7 = 6,表示按键66(仅扫码枪支持输入)14keycode - 7 = 7,表示按键77(仅扫码枪支持输入)15keycode - 7 = 8,表示按键88(仅扫码枪支持输入)16keycode - 7 =9,表示按键99(仅扫码枪支持输入)66确认enter131收款f1 金额 enter132刷脸f2133取消f3134设置f4135退款f5(仅随机 usb 键盘支持)136账单f6(仅随机 usb 键盘支持)关闭键盘事件监听my.ix.offkeyeventchange 关闭键盘事件监听,调用后取消注册,关闭监听键盘事件,完成一个监听闭环。切记不要遗漏 offkeyeventchange,也不要遗漏 onhide,否则多页面跳转时多个页面都会收到按键事件。示例代码关闭键盘事件监听的api在代码中只能直接调用,不可以有任何参数,没有回调。完整监听键盘事件实现示例代码首先创建 utils/ix.js。在所有需要用到按键的 page.js 开头加上 import,并实现关键方法 onkeypress。按上述实现,所有按键的事件就会随着页面自动分配,避免重复注册或未注册的问题。