local 符号=
 {
 "\"\",",",","*","#","#1","%","=",">","<",">50$50",">50$300","%返回<1","*|%向下翻页>100$500","$50",
 "{","}","|","/","\\",":",".",";","&","@",
 "[","]","_","-","&!","(",")",
"and",
[[break]],
[[ do]],
[[else]],
[[elseif ]],
[[end]],
[[for]],
[[function]],
[[if ]],
[[local]],
[[node]],
"or",
[[print]],
[[then]],
[[while]],
[[return true]],
[[return false]],
[[service.execute(node)]],
[[service.click({{}})]],
[[node.isEditable()]],
[[service.check(node)]],
[[service.speak()]],
[[service.plugin(node)]],
[[service.getEditText()]],
[[{"&编辑框$1","%"},]],
[[if service.startApp("")]],
 [[%朗读/]],
[[%输入/]],
[[%导航/]],
[[%插件/]],
[[%工具/]],
[[%手势/]],
[[%长按$50]],
[[%上个焦点$50]],
 [[%下个焦点$50]],
[[%点击$50]],
 [[%返回$50]],
 [[|%向上翻页>20$100]],
 [[|%向下翻页>20$100]],
 [[按钮列表=
{"",
}
service.click(按钮列表)
return true]],
[[--循环点击代码
点击列表={
{{}},
{{}}
}
按钮列表={}
function append(t1,t2)
 for k,v in ipairs(t2) do
 table.insert(t1,v)
 end
end
for n=1,10 do
 append(按钮列表,点击列表)
end
if service.click(按钮列表) then
 return true
 end]],
[[function 判断()
service.click({{},
{"%判断$1",},
})
end
service.click({
{"%判断$1",}})]],
[[--随机时间
math.random(1,50)]],
[[service.execute(命令,node)
--这个命令就是解说为了简化开发内置的一些指令，如果执行成功返回true，失败返回false。
]],
[[service.postExecute(时间,命令,node)
--延时执行命令，
]],
[[service.getText(node)
--获取指定节点的文字信息。
]],
[[service.setText(node,text)
--设置指定焦点输入框文字内容。
]],
[[service.setText(text)
--设置当前界面焦点输入框文字内容。
]],
[[service.copy()
--复制当前焦点的文字内容到剪切板。
]],
[[service.appendCopy()
--追加复制当前焦点的文字内容到剪切板。
]],
[[service.copy(text)
--复制指定的文字内容到剪切板。
]],
[[service.appendCopy(text)
--追加复制指定的文字内容到剪切板。
]],
[[service.paste()
--将剪切板内容粘贴到当前界面的输入框。
]],
[[service.paste(node)
--将剪切板内容粘贴到指定的输入框。
]],
[[service.toNext()
--下一个焦点。
]],
[[service.toNext(node,bool)
--指定节点下一个焦点，bool为true查找子节点，为false不查找子节点。
]],
[[service.toPrevious()
--上一个焦点。
]],
[[service.toPrevious(node,bool)
--指定节点上一个焦点，bool为true查找子节点，为false不查找子节点。
]],
[[service.toNextChar()
--下一个字符。
]],
[[service.toPreviousChar()
--上一个字符。
]],
[[service.toNextLine()
--下一行。
]],
[[service.toPreviousLine()
--上一行。
]],
[[service.toTextStart()
--到文字开头。
]],
[[service.toTextEnd()
--到文字结尾。
]],
[[service.toListViewStart()
--到列表开头。
]],
[[service.toListViewEnd()
--到列表结尾。
]],
[[service.getRootNodeInfo()
--获取根节点。
]],
[[service.ocr(node)
--文字识别指定节点，仅会员可用。
]],
[[service.setTimerMode(bool)
--开启或关闭计时器模式，bool为true开启，false为关闭。
]],
[[service.setAutoReadEnabled(bool)
--开启或关闭阅读模式，bool为true开启，false为关闭。
]],
[[service.setAutoNext(bool)
--开启或关闭自动浏览模式，bool为true开启，false为关闭。
]],
[[service.isEditView(node)
--判断当前节点是否为编辑框。
]],
[[service.isSeekBar(node)
--判断当前节点是否为进度滑块。
]],
[[service.isListView(node)
--判断当前节点是否为列表。
]],
[[service.isInListView(node)
--判断当前节点是否在列表中。
]],
[[service.isInWebView(node)
--判断当前节点是否在网页中。
]],
[[service.isClick(node)
--判断当前节点是否可以点击。
]],
[[node.isLongClickable()
--判断当前焦点是否可以长按。
]],
[[service.isShowInputWindow()
--判断有没有输入法键盘。
]],
[[service.getSelectionStart()
--获取光标位置
]],
[[service.getEditText()
--定位到编辑框
]],
[[service.callPhone()
--号码呼出
]],
[[service.toClick()
--点击当前焦点，在安卓7以上优先使用模拟手点击焦点。
]],
[[service.toClick(node)
--点击指定节点。
]],
[[service.toLongClick()
--长当前焦点。
]],
[[service.toLongClick(node)
--长按指定节点。
]],
[[service.toBack()
--返回。
]],
[[service.toHome()
--返回主屏幕。
]],
[[service.toNotification()
--打开通知栏。
]],
[[service.toParent()
--打开最近任务列表。
]],
[[service.scrollBackward(node)
--向后滚动。
]],
[[service.scrollForward(node)
--向前滚动。
]],
[[service.loadGesturePackage(name)
--载入手势方案。
]],
[[service.click(x,y)
--模拟人手点击屏幕指定位置，仅安卓7以上可用。
]],
[[service.longClick(x,y)
--模拟人手长按屏幕指定位置，仅安卓7以上可用。
]],
[[service.press(x,y,t)
--模拟人手在屏幕指定位置按住指定时间，仅安卓7以上可用。
]],
[[service.swipe(x1,y1,x2,y2,t)
--模式人手从一个位置用指定时间滑动到另一个位置，仅安卓7以上可用。
]],
[[if 条件 then 要执行的代码
 end
 满足指定条件执行中间的代码。
 如，
 if service.isEditView(node) then service.execute(拆分编辑,node)
 return true
 end
 这句代码意思是，当焦点为编辑框时打开拆分编辑。
]],
[[for n=1,重复次数 do
 要执行代码
 end
 重复指定代码一定次数
 如，
 for n=1,10 do
 service.toBack()
 end
 重复返回10次。
]],
[[定义函数，
 function 函数名称(参数)
 函数代码
 end]],
[[函数是代码的功能块，可以有效的重复利用代码。
 如，下边是一个向列表添加数据的函数，在手势代码中，可以用于向一个列表添加重复的代码。
 function append(t1,t2)
 for k,v in ipairs(t2) do
 table.insert(t1,v)
 end
 end
 点击列表={}
 按钮列表={%点击,%返回}
 for n=1,10 do
 append(点击列表,按钮列表)
 end
 向点击列表重复添加10次按钮列表的内容。]],
[[function 滑动()
 service.swipe(500,300,500,1000,1000)
 return true
 end
 模拟手在屏幕上滑动，可以在手势代码中使用，
 service.click({{>微信,%滑动}})
 打开微信模拟在屏幕从上向下滑动。
]], }
require "import"
import "android.widget.*"
import "com.androlua.*"
 layout={
 GridView,
 id="grid",
 numColumns=5,
 layout_width="fill",
 layout_height="fill"
 }

 dlg=LuaDialog(service)
 dlg.View=loadlayout(layout)
 grid.adapter=SingleLineAdapter(service,String(符号))
 dlg.setButton("关闭",{onClick=function(v)
end})
.show()
 grid.onItemClick=function(l,v)
 dlg.dismiss()
service.pasteText(node,v.text)
service.speak(v.text)
end