连续触发,切换标签

可以定义任何你想使用的连续操作,比如连续关闭标签,调节系统声音,亮度,放大,缩小等

打开/激活应用功能

告别从任务栏中寻找应用的烦恼!众里寻他千百度,一个手势搞定。

手势提示

手势太多,记不起来,可以开启手势提示增强记忆

复制粘贴

复杂的操作简单化,使用快捷键组等开放的Lua脚本实现更强大的功能
使用文档
## FastGestures ![image](https://raw.githubusercontent.com/zhaokeli/FastGestures/3061c102560f81d42bdd325d9a16ef9171accfd1/fg.png) ## 简述 使用鼠标或触控板定义一组助记符,同时映射一个自定义的操作,比如经常在各软件之间切换激活,打开系统便签,记事本,右键复制,粘贴等等. 尽情发挥你的想象自定义自己常用的操作。 ## 特别注意 1、此软件最好别跟其它手势软件一块打开混用,可能出现鼠标假死等情况,如果出现右键不能使用的情况可按下 ctrl+shift+alt+Q 强制退出 2、鼠标手势以手势键弹起为结束然后执行对应操作,触控板手势以所有手指离开触控板为结束然后执行对应操作,自定义手势键按下时开始记录助记符,弹起时结束 ## 手势助记符 所有手势都用下面符号组合成成一组,不同应用上可用同一组手势,手势匹配优先级 ,匹配当前鼠标上应用 > 然后应用所在分组 > 然后全局 1、 八个方向的鼠标轨迹手势 → ↑ ← ↓ ↗ ↖ ↙ ↘ 2、 ◐ 鼠标左键 3、 ◑ 鼠标右键 4、 ◉ 鼠标中键 5、 ◈ 鼠标X1键 6、 ▣ 鼠标X2键 7、 ▲ 鼠标滚轮向上一次 8、 ▼ 鼠标滚轮向下一次 9、 0-9 键盘按键 10、A-Z 键盘按键 ## 快速入门 鼠标按下右键,或两指分开一段距离放触控板一指不动另一指画方向,或按下设置的键盘手势键接着移动鼠标或单指在触控板上移动,此时屏幕上就会出现轨迹从而识别出当前画的方向手势符号,除了使用方向手势外也可添加鼠标点击、键盘按键等手势符号,当按下的手势键释放时就会查找命中的操作去执行 手势分为应用上手势,分组手势,全局手势,组合出一组手势符号后会先查询鼠标下面应用有没有设置对应的手势,如果没有就查找应用所在的分组手势,分组也没有就会查找全局手势。期间有一个匹配就会终止查询,执行对应的操作 ## 手势组合建议 手势组合,如:`→◐` `→◐◐` `→↑◐` `→↑◐◐`,`→AA`,`→BB`,以简单的方向加键单击,可提高每次手势的命中率,同样也可减少手势记忆 ## 屏幕触发操作 1、鼠标移入屏幕四个角落,触发四个触发角事件 2、屏幕四个边缘宽 50px 高为屏幕宽/高 50%,3 秒内连续划入 3 次,触发四个敲击边事件 3、鼠标放屏幕四个边缘然后滚动滚轮,可触发边缘滚动事件 ## 连续触发手势 连续手势只支持鼠标,遇到鼠标滚轮滚动时可连续触发指定操作,滚动滚轮之前可添加其它助记符,可实现无限个连续触发手势,比如 ◐◐▲ 左键点两次然后滚轮 →▲ 右方向然后滚轮 ←→▲ 左右方向然后滚轮 ## 精确式触控板手势 手指放到触控板上即为手势开始,除了默认忽略的几个操作外均可画出手势符号。 1、四个角落、四个边、单击事件 2、2,3,4,5 指,在触控板上短按、长按事件,时间可自定义 3、忽略单指,两指系统默认操作行为,(两指可一指按下,另一指画手势 用法参考 Betterandbetter:[查看单指画手势视频](https://13315641.s21v.faiusr.com/58/1/ABUIABA6GAAgmtnK_AUoxN37-gI.mp4>) 4、三指拖动启用后,三指画手势符号会被忽略 5、三指:先放上去,左中右单击并抬起后分别代表 鼠标左中右单击手势,同时可画方向手势,也可定义三指为左键或中键拖动功能 6、其它情况可使用几个手指同时画出指定手势 ## 应用列表 列表中每一个应用后面有继承和排除两项设置,继承:除了使用本应用里设置的手势外也可以使用全局中设置的手势,排除:勾选后在此应用中不使用任何手势 > 全局项设置,全局里只有一个排除项设置,勾选后手势只会作用于添加到应用列表中的应用, 没有添加的应用不会显示手势轨迹 ## 配置项 ### 手势键 为了方便配合触控板上单指画手势的操作,添加了自定义手势键功能,按下键盘上自定义的手势键后,单指和鼠标可直接画手势 手势键:中 右 X1 X2键 自定义键 任意一个按下,移动大于 4 个像素后开始识别手势轨迹方向键 ### 手势超时时间 手势超时时间,<=3000 不限,>=3000 时,超过设置的时间手势还没有结束,则取消本次手势识别 ### 手势方向限制 1、不限制,画方向时不限制识别的方向,由软件自行优化,画手势速度很快的时候,不再识别出斜方向手势,首个方向没有此限制 2、正方向,只识别正方向的四个方向键,首个方向没有此限制 3、斜方向,只识别斜方向的四个方向键,首个方向没有此限制 ### 鼠标下窗口 当执行快捷键和窗口操作时,此项若开启则会激活当前鼠标下窗口,并作用于此窗口,若关闭则会作用于当前激活的窗口 ### 手势提示 开启后,会在屏幕左下角提前显示当前可用的手势项 ### 全局手势键 设置此手势键后,用此手势键画出的手势全为全局手势 ### 其它配置项 其它配置项,见名其意,应该很好理解,不再过多解释 ## 手势可操作项 ### 执行命令行 可调用系统命令来执行对应的操作 ### 打开/激活应用 查找应用的主窗口,如果不存在则启动它 ### 检测屏幕二维码 可识别出当前显示的二维码内容 ### 快捷键 录入想要执行的快捷键 ### 快捷键组 此种操作可一次分开执行多个快捷键。 如:复制一个地址后希望在谷歌浏览器中画一个手势完成地址栏获得焦点,粘贴地址,回车访问这个连续的操作, 需要执行的按键依次为:ctrl+L 选择地址栏, ctrl+v 粘贴地址,enter 访问地址。 可设置如下 json 结构,其中 delay 为每个快捷键操作之前的延时时间,单位毫秒,vk_code 接收十六进制虚拟码。具体的键码可在此处获得, [查看全部虚拟键码](https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes) ```json [ { "delay": 500, "buttons": [ { "vk_code": "0xA2", "vk_name": "Ctrl" }, { "vk_code": "0x4C", "vk_name": "L" } ] }, { "delay": 500, "buttons": [ { "vk_code": "0xA2", "vk_name": "Ctrl" }, { "vk_code": "0x56", "vk_name": "V" } ] }, { "delay": 500, "buttons": [ { "vk_code": "0x0D", "vk_name": "Enter" } ] } ] ``` ### 窗口操作 可作用于当前鼠标下窗口,执行对应的操作 ### 资源管理器导航 可对当前打开的资源管理器循环激活显示,叠排显示 ### 微信多开 可对PC微信实现多开 ### 激活手势界面 打开手势软件的主界面 ### 打开地址/搜索 执行此操作时可根据当前选中文本是否是地址,实现拖拽打开地址,搜索等功能,搜索时可用当前剪切板文本做为关键词 ### Lua 脚本 可输入自己的 lua 脚本,内容可以为下面几种形式 1、直接输入 lua 脚本内容 2、单行输入脚本文件所在的绝对路径 3、放入预置的脚本目录,位置二选一 C:\Program Files\FastGestures\LuaScript C:\Users\xxxx\AppData\Roaming\zhaokeli.com\FastGestures\LuaScript 当脚本为文件时可使用以下预置全局变量 - **FILE** 脚本全路径 - **DIR** 脚本所在路径,结尾不带斜线 以下为可用的内置函数 #### fg_active_main_winows() 激活手势主窗口 #### fg_show_msg(string) 显示一个消息提示 ```lua fg_show_msg("一个提示消息"); ``` #### fg_send_shortcut_group(string) 发送一组快捷键,参数为 json 字符串,同上面快捷键组一样 ```lua local keyList=[[ [ { "delay": 10, "buttons": [ { "vk_code": "0xA2", "vk_name": "Ctrl" }, { "vk_code": "0x12", "vk_name": "Alt" }, { "vk_code": "0x4C", "vk_name": "L" } ] }, { "delay": 100, "buttons": [ { "vk_code": "0xA2", "vk_name": "Ctrl" }, { "vk_code": "0x53", "vk_name": "S" } ] } ] ]] fg_send_shortcut_group(keyList); ``` #### fg_get_clipboard_text() 获取当前剪切板文本内容 #### fg_set_clipboard_text(string text) 设置剪切板文本 #### fg_set_windows_top(int hwnd) 设置窗口置顶或取消,参数传 0 时,默认为当前鼠标下的窗口 #### fg_sleep(int time) 挂起/延时时间,单位毫秒 #### fg_get_mouse_windows_hwnd() 取当前鼠标下的窗口句柄 #### fg_get_mouse_windows_path() 取当前鼠标下的窗口可执行文件路径 #### fg_parse_screen_qrcode() 从屏幕上解析出二维码内容,如果不存在二维码则返回空字符串 #### fg_active_application(string fullPath,int isRunAs) 打开或激活应用,fullPath 应用的全路径,isRunAs 是否使用管理员权限执行 #### fg_send_text(string text) 发送文本 #### fg_create_qrcode(string text) 生成并显示一个二维码 #### fg_volume_inc() 音量加 #### fg_volume_dec() 音量减 #### fg_volume_switch() 静音/关闭静音切换 #### fg_brightness_inc() 屏幕亮度加,(部分屏幕不支持) #### fg_brightness_dec() 屏幕亮度减,(部分屏幕不支持) #### fg_run_cmd(string cmdStr,int isShow,int isReturn) 执行命令行并取返回值,cmdStr 命令,isShow 是否显示命令行窗口,isReturn 是否取返回值,特别注意取返回值时确保调用的程序会自动退出。 #### fg_get_pid_by_name(string processName) 通过进程名字取 Pid,多个相同名字进程只取首个,名字忽略大小写 #### fg_mouse_wheel(int direction,int num,int times,int delay) 鼠标滚轮事件 direction 0:向下滚动 1:向上滚动 num 每次滚动距离 times 滚动次数 delay 多次滚动时延时默认 10 毫秒 #### fg_get_selected_files_path(int type) type 0:返回选中所有的(文件/目录)路径,1:返回选中文件路径,2:返回选中目录路径 返回结构为一个元表,示例,取选中的第一个文件路径 ```lua local fileList=fg_get_selected_files_path(1); fg_show_msg(fileList[0]); ``` #### 其它示例 ```lua -- 设置文本 fg_set_clipboard_text("Lua 变量"); -- 暂停1秒 fg_sleep(1000); -- 取文本 local tex=fg_get_clipboard_text(); --提示信息 fg_show_msg(tex); ``` ### 扩展功能 更多扩展可加 QQ 群下载 一个扩展至少有两个文件 `plugin.json` 配置文件,一个主执行文件 `main.lua`,主执行文件由配置文件中来指定 一个扩展一个目录,目录名字可随意,但`plugin.json`中`uuid`字段必须唯一,且以后也不能变更 扩展目录可放于软件安装目录`C:\Program Files\FastGestures\Plugins`,或用户数据目录`C:\Users\xxxx\AppData\Roaming\zhaokeli.com\FastGestures\Plugins` 可使用软件扩展管理->新建扩展来初始化一个新扩展目录 `plugin.json`结构如下 ```json { "uuid": "17963bd79d6b170eace6e1a489332363", "name": "搜索客户表", "version": "1.0.0", "desc": "搜索客户表", "executeFileName": "main.lua", "type": 0, "author": "zhaokeli", "iconPath": "icon.png" } ``` - `uuid`: 32 位唯一标识,不符合规则会忽略 - `name`: 扩展名字 - `version`: 扩展版本 - `desc`: 扩展描述 - `executeFileName`: 可执行文件名,相对 Plugins 目录的路径,如果在目录里请带上路径,开头不带斜杠 - `type`: 可执行文件类型,0:lua 脚本,1:windows 可执行程序 - `author`: 扩展作者 - `iconPath`: 扩展图标,可空,同样是相对路径开头不带斜杠 下面是一个脚本,实现`Ctrl+F` 、 `Ctrl+A` 、`发送文件` 、的一连串功能 ,文本从命令行入参`arg[1]`取得 `main.lua` ```lua local keyList=[[ [ { "delay": 10, "buttons": [ { "vk_code": "0xA2", "vk_name": "Ctrl" }, { "vk_code": "0x46", "vk_name": "F" } ] }, { "delay": 100, "buttons": [ { "vk_code": "0xA2", "vk_name": "Ctrl" }, { "vk_code": "0x41", "vk_name": "A" } ] } ] ]] fg_send_shortcut_group(keyList); fg_send_text(arg[1]); ``` 选择扩展功能后,根据扩展的使用方法,是否需要设置命令行入参来执行对应的功能,执行操作时可传入命令行参数,脚本或可执行文件可解析此参数来执行对应的操作 lua 脚本中取命令行中的参数有两种 - 直接使用 arg[0],arg[1],来取以空格分隔的命令参数 - 使用全局变量 cmd_params[name],取对应的值,例 --name="keli zhao" --path=E:/test lua 脚本中依然可用预置的全局变量 ## 常见问题解决文案 1、如果出现在一些窗口(任务管理器等)上手势失效,请到安装目录或开始菜单安装证书到受信任的根证书目录. 2、电脑上安装有 360 卫士杀毒的用户,请加将本软件加入信任,已知安全软件会拦截模拟的鼠标,键盘操作,本软件用到鼠标(画轨迹),键盘(发送快捷键),会导致手势失效.加信任后还不能使用的,可以尝试退出/卸载 360 后再次尝试使用,Win10 自带安全软件也是不错的选择哟! 3、如果遇到拖动文件到一些编辑等软件上出现不可用的情况,请重启手势软件和编辑器后再次尝试,当前以普通用户登陆,而手势软件和编辑器使用管理员权限打开的情况下会遇到此种问题。 4、打开/激活应用功能,如果遇到一开始可以正常激活,后来又激活不了了,可尝试重启软件来解决 5、如果安装成功,启动时出现 0xC000007b 错误,可能因为系统运行库损坏,请重新下载 vc 运行库修复 https://www.microsoft.com/zh-CN/download/details.aspx?id=48145 6、如果 win7 下出现部分 emoji 字符不显示,可下载 `Segoe UI Emoji` (600K)字体安装后重启软件 7、如果出现启动异常或崩溃,请修复系统相关运行库文件, 打开微软官网 https://docs.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170, 64 位运行库 https://aka.ms/vs/17/release/vc_redist.x64.exe 32 位运行库 https://aka.ms/vs/17/release/vc_redist.x86.exe ## 问题反馈 QQ 群: [89193444](https://jq.qq.com/?_wv=1027&k=mOqSBLo7) QQ: 735579768 微信: kelicom