if service.check("可编辑",node) then
  符号=
  {
    "\"",",","*","#","%",">","<","$300",


    "{","}","&","@","'","!","_","/","|",


    "[","]","-",":",


[[自定义符号面板使用说明，
温馨提示所有无法用抬手激活操作的按钮，无法用手势执行模拟点击。只能用手势定位，然后双击屏幕。
免费用户可切换到逐字浏览模式对快捷手势进行简单编辑制作。
在编辑手势过程中如发现手是报错，一般会提示报错在多少行，
到解说-内容设置-朗读项目序号索引浏览列表项目时，读出当前项目的序号索引复选框未选择，把这个复选框选择上。
然后将拆分编辑切换到段落模式，即可快速找到错误的那一行。
有些创建的自动点击的命令过长，为了便于编辑修改，在拆分编辑界面找到需要编辑修改的那一行，双击长按即可拆分为据，即可快速定位到需要修改的地方。
如果是手动创建，可分为多行创建，只是换行要注意在每一组按钮后面。
需要更多交流欢迎加入解说快捷手势交流群，
599040699
对符号面板有哪些好的建议，如需开通会员制作快捷手势。可到解说官方群联系002，手机15549408477
  002解说读屏售后群欢迎亲的加入，
以下内容建议用解说的拆分浏览阅读，有些符号必须用拆分浏览的逐字解释才能读出。
1，如在功能上面加判断编辑框，该功能将只在编辑框执行命令。
2，如在功能上面加判断输入法，该功能将只在激活编辑框弹出键盘执行命令。
以上两个代码用于只想需要在编辑框或弹出输入法打开的功能，
例如，粘贴，清空，拆分编辑，剪切板，收藏家，自定义符号面板等等。在这些功能的最上面加上这两个代码中的一个，
该功能将只在编辑框或弹出键盘才能打开。
还有解说在编辑框所执行的某些手势，如果我们也进行了自定义设置，
如不加入判断编辑框的代码，将导致某些在编辑框执行的功能无法正常使用。
例如，向右滑，向左滑在编辑框移动光标。
上下-在编辑框光标移到开头，下上-在编辑框光标移到结尾，
左右-逐字解释编辑框里面所有的文字，右左-统计编辑框文字数量以及光标所停留的位置等。
3，按钮名称支持一些符号进行通配，
如按钮前面加#(井号)，表示该按钮为自定义标签，例如，#Navigateup，你也可以给该按钮重命名标签为中文，在按钮前面同样也要加上#。
按钮前边或后边加*，表示前边或后边还有其他字符，例如，开始播放，播放暂停，我们只需要输入*播放*，因为两个按钮中间都有播放暂停这两个关键字。用这种方式两个按钮只需输入一个即可。
再比如，在QQ主界面要点击，解说读屏交流群，而这个名称有时候后面会有99条未读之类内容，这时候就要写成，
"解说读屏交流群*",

按钮后边加#表示按钮次序，有时候一个界面有很多个名称一样的按钮，
用于某些无法定位到需要点击的按钮，
这时候需要用井号来说明点击第几个，
比如同一界面有几个同样的按钮，在按钮后面加入#1，#2，#3等，
定位到你所需要点击的焦点，
例如，
系统文字转语音设置，里面的进行引擎设置按钮。

在按钮后面加$表示点击完成后延时点击下一个按钮，$1000代表延时一秒。主要用于点击某些按钮之后需要等待几秒钟才能执行下一个按钮，
默认状态下，每个按钮之间的延时为$1000，也就是一秒钟。
{"群资料卡$2000","文件"},
表示点击群资料卡卡后2秒点击文件，
符号中英文
|
表示或者，也就是如果有
|
前边的点击前边的，没有就点击后边的按钮，
就拿确定和完成的例子，可以简写为，
"确定|完成",
如果该页面有确定就执行确定，
没有确定就依次执行完成。
按钮后边加@(圈a)表示只在某一个程序查找，
例如在发送后面加入@微信，该按钮将只在微信界面执行命令，主要用于通用手势方案。也就是识别程序，
"发送@微信",

&表示和，也就是只有有&符号后边内容的界面，才点击前边内容的按钮，
"确定&*退出*",
这个界面有退出才能执行前面的确定按钮。
也就是&符号代表识别窗口。

&符号在前表示检查当前焦点类型，
&可编辑
代表识别编辑框，
例如，
{"&可编辑","%剪切板"},
{"&可编辑","%收藏夹"},
{"&可编辑","%清空"},
该功能将指在编辑框执行命令。

&编辑框
这个编辑框是弹出输入法的编辑框，
也就是识别输入法，
例如，
{"&编辑框","%剪切板"},
{"&编辑框","%收藏夹"},
{"&编辑框","%清空"},该功能将激活编辑框弹出键盘，才能执行命令。

<号，重复执行号，重复点击按钮多少次，
例如，
"下一曲<10",
就重复点击下一曲十次，
<号如果在按钮前面，将对该按钮只执行定位，不执行点击。
可用于某些不读的按钮或者动态的按钮执行点击。
我们可以将焦点定位到该按钮，上个焦点或下个焦点上，通过移动焦点的方式定位到不读的按钮或动态按钮执行点击。
例如开启关闭WiFi，
{"%打开通知栏$50","<数据连接","%上个焦点<2$50","%点击$2000","%返回"},


>号，代表等待执行，
例如，{"群资料卡","文件>10"},
手机反应有快有慢，用这个符号可以等待一定时间，这个代码表示，点击群资料卡后等待十秒，十秒以内以内如果出现文件就立即点击，如果超过时间就停止执行，这个数字可根据实际情况来调整。
主要用于网页加载，删除聊天记录等，
再单独点击的一个按钮或连续点击的多个按钮，
第一个按钮后面不要加这个符号，否则会导致该手势上面某些功能无法正常使用。

% 可以执行一些常用指令，
比如，
"%复制",
可以复制，
"%全屏朗读",
可以全屏朗读，
%代表执行的是解说的某些功能。

>号可以打开程序，
例如，
">微信",
打开微信，
">QQ",
打开QQ，

|%向下翻页>10
这个命令是执行需要要翻页点击的按钮，
例如，解说内容设置里面的，自动朗读聊天信息自动朗读QQ微信等当前聊天窗口的最新信息复选框未选择，
如果不加上上面的命令是无法执行翻页点击的，
比如，
{"%程序设置$50","内容设置>50$50","自动朗读聊天信息*|%向下翻页>10","%下个焦点$5","%上个焦点$4000","%返回<2$100"},


在手势执行中有时会有一些不同情况出现，比如打开QQ，点击解说读屏交流群，点击群资料卡，点击文件，
如果有群公告，会在点击群资料卡那一步卡住，不能执行，
这时需要分支代码来执行这些突发情况，

按钮列表=
{
{">QQ","解说读屏交流群*",
{"我已阅读新公告*&*群公告*"},
"群资料卡","文件"},
}
service.click(按钮列表)
return true

因为QQ版本不同，确定群公告按钮也不一样，
可以看到，在点击解说读屏交流群后，多了一对花括号括起来按钮，这个括号中的按钮，有则执行，没有则跳过，不影响后边按钮的执行，
如果分支中有复杂操作，或者多种场景，我们还可以套入多个括号，

按钮列表=
{
{">QQ","解说读屏交流群*",
{"我已阅读新公告*&*群公告*"},
{"我知道了&*群公告*"},
"群资料卡","文件"},
}
service.click(按钮列表)
return true

我们看到，括号又嵌入一层。
这样就能应付非常复杂的场景了。
由于qq版本和其他原因导致群公告那个我已阅读按钮不一样，
这个群公告是可以用解说的命运返回关掉的，我们也可做一个通用方案。
例如，
按钮列表=
{
{">QQ","解说读屏交流群*",
{"%返回&*群公告*"},
"群资料卡","文件"},
}
service.click(按钮列表)
return true

_用于解说的一些相关插件重命名，
例如，
解说_单程序快捷手势- 更新时间1月30日.gpk
这样在我们家在的时候，它会自动过滤掉_后面的多余字符，
如果单程序快捷手势加载完成后，名称后面有多余字符。是无法被程序调用的。
]],


    [[--接微信电话，打开关闭免提备注，
"接听#0","免*#0",]],
    [[--微信电话取消挂断备注，
"取消#0","挂断#0",]],
    [[--抢微信红包备注，
{"领取红包@微信","$3"},
{"查看红包@微信","$3"},]],


    [[--抢QQ红包备注，
{"*点击查看详情"},
{"*点击拆开"},
{"口令*$500","点击输入口令*>50$100","发送"},
{"*点击录制口令$500","*按住录音<3>50$50"},]],


    [[--电话-接听，打开关闭免提备注，
"接*",
"免提","听筒",
"*扬声器",]],
    [[--电话挂断备注，
"挂*","拒接",]],


    [[--增加进度条备注，
if service.check("进度条",node) and service.execute("增加进度",node) then    return true    end]],
    [[--减少进度条备注，
if service.check("进度条",node) and service.execute("减少进度",node) then    return true    end]],


    [[--长按，可用于一键快速执行弹出菜单上的选项备注，
require "import"
service.execute("长按",node)
task(10,function()service.click(
{
  "回复","撤回"
}
)end)]],


[[--用于在编辑框执行某些功能，备注。
{"&可编辑$5","%剪切板"},]],
[[--用于激活编辑框弹出键盘执行某些功能，备注。
{"&编辑框$5","%剪切板"},]],


[[-- 我要用 用于启用停用当前单程序快捷手势 -将下面的应用名称改成你所需要的应用名称 -备注
按钮列表=
{
{"%操作设置$500","单应用手势方案*>5$500",
"QQ|%向下翻页>10$500",
"确定","%返回"},
}
service.click(按钮列表)
return true]],


    [[--当前执行，
return true]],
    [[--返回上一层执行，
return false]],


    [[--判断当前是输入法执行默认手势，
if service.check("编辑框",node) then
return false
end]],

    [[--判断编辑框，
if node.isEditable() then    return false    end]],


--用于下拉刷新
[["[0.5,0.3,0.5,0.8,1000]",]],


[[%朗读/内容]],
[[%输入/内容]],


[[%长按$200]],
[[%上个焦点$500]],
    [[%下个焦点$500]],
[[%点击$500]],
    [[%返回$300]],


    [[--新多功能快捷手势代码
按钮列表=
{
{"QQ","002解说读屏售后群*"},
}
service.click(按钮列表)
return true]],



[[|%向下翻页>10$100]],

    [[>60$300]],




  }
  require "import"
  import "android.widget.*"
  import "com.androlua.*"


  layout={
    GridView,
    id="grid",
    numColumns=5,
    --items=符号,
    layout_width="fill",
    layout_height="fill"
  }

  dlg=LuaDialog(service)
  dlg.View=loadlayout(layout)
  grid.adapter=SingleLineAdapter(service,String(符号))
  dlg.setButton("取消",nil)
  dlg.show()
  grid.onItemClick=function(l,v)
    dlg.dismiss()
    task(500,function()
      service.insert(node,v.text)
    end)
  end
  return true
end

按钮列表=
{
  "阅读模式",
{"local 过滤列表=[[|%向下翻页>4$100"},
  {"拆分编辑*$5&*拆分编辑*","%下个焦点<$5","%点击$500","%清空"},
}
if service.click(按钮列表) then
  return true
end
service.execute("向下滚动",node)
--返回上一层执行，
return false