Mousetroke GitHub
简体中文 ▾
指南目录

按键序列语法#

从一个快捷键开始#

在“发送按键”中粘贴 ^c,Windows 会发送 Ctrl+C;Mac 复制使用 #c,即 Command+C。也可以点击“录制”,按下组合键后点“完成”。Lua 的 ms.keys(sequence) 使用同一套语法。

普通字符表示美式键盘位置。abc 依次按 A、B、C,写成大写 ABC 也不会自动按 Shift。需要 Shift+A 时用 +a。Unicode 或固定文字见文本与转义及剪贴板示例。

修饰符与分组#

前缀WindowsMac
^CtrlControl ⌃
%AltOption ⌥
+ShiftShift ⇧
#WinCommand ⌘

前缀作用于下一个键或括号分组。^+t 发送 Ctrl+Shift+T;^(ac) 对 A 和 C 都加 Ctrl;^ac 只有 A 带 Ctrl。分组可以嵌套,请配对括号。分组修饰符会附加到每个按键动作,不要依赖它在两个键之间始终保持按下。末尾单独一个修饰符不会发送按键;需要修饰键本身时,例如使用 {CTRL}。

Lua ms.is_keys_pressed 在两平台查询所有键和修饰键的并集:^ac 要求 Control、A、C 同时按下。前缀接受任意一侧,显式 {LCTRL}/{RCTRL} 名称保留侧别。重复次数忽略;延时、文本、鼠标或滚轮步骤使结果为 false。此接口不识别过去按下的顺序。

键名、重复与延时#

{ENTER} 表示回车,键名不区分大小写。{LEFT 3} 连按三次左方向键。正整数表示重复次数,0 或负数回退为一次。{SLEEP 100} 等待 100 毫秒,必须提供非负整数。键名与参数之间用空格分隔。

例如 Windows 的 ^c{SLEEP 100}^v 会复制、稍等、粘贴;Mac 对应 #c{SLEEP 100}#v。

下表列出解析器接受的名称,包括别名和全部编号功能键/小键盘键。单个 ASCII 字母、数字或支持的美式标点也可以放入花括号,如 {a}、{+}。

键名含义
{ENTER}, {RETURN}回车
{ESC}退出
{TAB}制表键
{BACKSPACE}退格
{SPACE}空格
{CAPSLOCK}大写锁定
{INSERT}, {INS}插入(仅 Windows)
{DELETE}, {DEL}删除/向前删除
{HOME}, {END}开头/末尾
{PGUP}, {PGDN}上一页/下一页
{UP}, {DOWN}, {LEFT}, {RIGHT}方向键
{PRTSC}截屏(仅 Windows)
{BREAK}中断(仅 Windows)
{MEDIA_NEXT}, {MEDIA_PREV}, {MEDIA_STOP}, {MEDIA_PLAY}, {MEDIA_PLAY_PAUSE}媒体键(按键序列中仅 Windows)
{VOLUME_MUTE}, {VOLUME_DOWN}, {VOLUME_UP}音量键(按键序列中仅 Windows)
{CTRL}, {ALT}, {SHIFT}Control/Alt(Mac 为 Option)/Shift
{LCTRL}, {RCTRL}, {LSHIFT}, {RSHIFT}, {LALT}, {RALT}左右修饰键,Mac 的 Alt 为 Option
{LWIN}, {WIN}, {RWIN}Windows 键,Mac 为 Command
{F1}, {F2}, {F3}, {F4}, {F5}, {F6}, {F7}, {F8}, {F9}, {F10}, {F11}, {F12}, {F13}, {F14}, {F15}, {F16}, {F17}, {F18}, {F19}, {F20}, {F21}, {F22}, {F23}, {F24}功能键,Mac 支持 F1–F20
{N0}, {N1}, {N2}, {N3}, {N4}, {N5}, {N6}, {N7}, {N8}, {N9}小键盘数字 0–9
{MOUSE_LEFT}, {MOUSE_RIGHT}, {MOUSE_MIDDLE}, {MOUSE_X1}, {MOUSE_X2}鼠标点击(仅 Windows)
{MOUSE_WHEEL}, {MOUSE_HWHEEL}滚轮,例如 {MOUSE_WHEEL 120}、{MOUSE_HWHEEL -120}(仅 Windows)
{SLEEP}等待,例如 {SLEEP 100},单位毫秒

鼠标按钮与滚轮#

Windows 支持 {MOUSE_LEFT}、{MOUSE_RIGHT}、{MOUSE_MIDDLE}、{MOUSE_X1} 和 {MOUSE_X2} 点击。{MOUSE_LEFT 2} 点击两次,不会移动鼠标位置。

{MOUSE_WHEEL 120} 向上滚一格,-120 向下;{MOUSE_HWHEEL 120} 向右,-120 向左。参数是带符号的滚轮位移,不是重复次数。这是模拟输入的正负约定,与录制手势滚轮步骤的方向符号不同。

Mac 能解析这些记号,但执行按键时会跳过鼠标与滚轮动作,不能通过 ms.keys 模拟 Mac 点击或滚动。

文本与转义#

文本优先模式只通过 Lua 的 ms.keys(s, true) 使用,“发送按键”编辑器始终使用按键模式。普通字符会作为 Unicode 文字输出,但 ^、%、+、#、括号和左花括号仍会被解释为语法。花括号中的单字符在文本优先模式下仍是按键动作。

在文本优先模式里发送快捷键,要给键加花括号:^{c} 发送 Ctrl+C,#{c} 发送 Command+C。这个模式中的 ^c 会输出文字 c,丢弃修饰符。也可以另用普通按键模式调用 ms.keys("^c")。

想输入的字符序列写法
^{^}
%{%}
+{+}
#{#}
({(}
){)}
{{{}
}}(不加括号)

反斜杠不是按键序列转义符。Lua 普通引号字符串中,一个反斜杠要写成 "\\",也可用长括号字符串。含语法符号的任意文本建议用剪贴板方法,避免两层转义。

常用快捷键#

是否生效取决于目标程序和系统的快捷键设置。

用途Windows 序列Mac 序列
复制^c#c
粘贴^v#v
剪切^x#x
全选^a#a
撤销^z#z
新建标签页^t#t
关闭标签页^w#w
恢复关闭的标签页^+t#+t
下一个标签页^{TAB}^{TAB}
上一个标签页^+{TAB}^+{TAB}
切换程序%{TAB}#{TAB}
上一个/下一个桌面#^{LEFT} / #^{RIGHT}^{LEFT} / ^{RIGHT}
区域截图#+s#+4
显示桌面#d{F11}
任务管理器/活动监视器^+{ESC}使用“打开程序”:com.apple.ActivityMonitor
锁屏#l^#q

为什么不能发送 Ctrl+Alt+Del#

Ctrl+Alt+Del 是 Windows 的安全注意序列(Secure Attention Sequence)。Windows 会忽略用于该序列的普通模拟输入,所以 ^%{DEL} 无法打开安全界面。可用 ^+{ESC} 打开任务管理器,#l 锁屏;需要注销时,用“运行命令”执行 shutdown /l,它会结束当前会话。

限制与平台说明#

共享解析器没有整体字符串长度或重复次数上限。重复次数和延时按无符号 32 位保存,滚轮位移按有符号 32 位保存;超范围转换可能回绕,请使用实际需要的小次数和短延时。未知键名或缺少必要参数会报解析错误,编辑器会在输入时校验。

Windows 在线程中发送序列,{SLEEP ms} 会等待。Mac 使用计时器分批发送:动作字符串超过 16,384 字节会拒绝;Lua 已解析序列限制为 16,384 个动作,单个文本动作最多 16,384 字节。等待队列最多容纳 64 项,超出会丢弃并记日志。

Mac 支持 F1–F20、小键盘数字和已映射的导航键;Insert/INS、PRTSC、BREAK、F21–F24、媒体/音量及鼠标/滚轮记号尚不支持,会跳过。媒体和音量请使用“媒体与系统”。ms.keys_down 和 ms.keys_up 仅 Windows 支持,详见 Lua API。

从一个常用手势开始

免费下载 Mousetroke,设置你的第一个手势。Windows 与 Mac 测试版均可使用。