keyevent-parser.js 956 B

12345678910111213141516171819202122232425
  1. /** 语句:keyevent 系统按键(含 adb 下 keyevent 子逻辑) */
  2. const types = ['keyevent']
  3. function parse(action, parseContext) {
  4. return Object.assign({}, action, { type: 'keyevent' })
  5. }
  6. async function execute(action, ctx) {
  7. const { device, variableContext, api, extractVarName, resolveValue } = ctx
  8. let keyCode = null
  9. const inVars = action.inVars || []
  10. if (inVars.length > 0) {
  11. const keyVar = extractVarName(inVars[0])
  12. keyCode = variableContext[keyVar] || keyVar
  13. } else if (action.value) {
  14. keyCode = resolveValue(action.value, variableContext)
  15. }
  16. if (!keyCode) return { success: false, error: 'keyevent 操作缺少按键代码参数' }
  17. if (keyCode === 'KEYCODE_BACK') keyCode = '4'
  18. const keyResult = api.sendSystemKey(device, String(keyCode))
  19. if (!keyResult.success) return { success: false, error: `按键失败: ${keyResult.error}` }
  20. return { success: true }
  21. }
  22. module.exports = { types, parse, execute }