KeymouseGo使用技巧:10个你不知道的高级功能
作为一款开源的鼠标键盘自动化工具,KeymouseGo不仅提供基础的录制回放功能,还隐藏着诸多能大幅提升效率的高级特性。本文将深入剖析10个鲜为人知的实用功能,帮助你从"简单录制"升级为"自动化大师"。
一、热键系统深度定制
KeymouseGo的热键系统支持组合键与自定义映射,默认配置为F6(开始)、F9(停止)、F10(录制),但通过界面可实现全自定义:
# 热键设置核心代码逻辑(UIFunc.py)
self.hotkey_stop.setText(self.config.value("Config/StopHotKey"))
self.hotkey_start.setText(self.config.value("Config/StartHotKey"))
self.hotkey_record.setText(self.config.value("Config/RecordHotKey"))
高级用法:
- 使用Ctrl+Alt+字母组合避免冲突(如Ctrl+Alt+R启动录制)
- 支持鼠标侧键(XButton1/XButton2)作为触发键
- 组合键最多支持3个修饰键+1个普通键(如Ctrl+Shift+Alt+F12)
二、脚本循环与条件执行
通过修改配置文件或界面设置,可实现复杂的执行逻辑:
# 循环执行核心代码(RunScriptClass.py)
while (j < self.runtimes or self.runtimes == 0) and nointerrupt:
self.tnumrdSignal.emit(f'{running_text}... Looptimes [{j + 1}/{self.runtimes}]')
nointerrupt = nointerrupt and self.run_script_from_objects(head_object)
j += 1
实用场景:
- 设置循环次数为0实现无限循环(需手动停止)
- 结合"if"类型事件实现条件分支(通过PluginManager.call判断)
- 使用"subroutine"类型事件调用外部脚本片段
三、多语言界面无缝切换
软件内置完整的国际化支持,无需重启即可切换界面语言:
# 语言切换核心代码(UIFunc.py)
self.choice_language.addItems(['简体中文', 'English', '繁體中文'])
self.choice_language.currentTextChanged.connect(self.onchangelang)
def onchangelang(self):
if self.choice_language.currentText() == '简体中文':
self.trans.load(get_assets_path('i18n', 'zh-cn'))
elif self.choice_language.currentText() == 'English':
self.trans.load(get_assets_path('i18n', 'en'))
elif self.choice_language.currentText() == '繁體中文':
self.trans.load(get_assets_path('i18n', 'zh-tw'))
_app.installTranslator(self.trans)
self.retranslateUi(self)
支持语言包括简体中文、英语和繁体中文,自动根据系统 locale 选择默认语言。
四、脚本文件管理高级操作
通过文件对话框功能,可对脚本进行重命名、删除和批量操作:
# 脚本管理核心代码(UIFunc.py)
def OnBtOpenScriptFilesButton(self):
import UIFileDialogFunc
file_dialog = UIFileDialogFunc.FileDialog()
self.bt_open_script_files.setDisabled(True)
file_dialog.show()
# 刷新脚本列表
self.choice_script.clear()
self.choice_script.addItems(scripts)
文件操作技巧:
- 脚本文件默认保存在
scripts目录下,支持.txt和.json5格式 - 通过文件对话框可按修改时间排序脚本
- 支持批量导入导出脚本集合
五、主题美化与个性化
软件内置多种UI主题,可通过界面即时切换:
# 主题切换核心代码(UIFunc.py)
self.choice_theme.addItems(['Default'])
self.choice_theme.addItems(list_themes())
self.choice_theme.currentTextChanged.connect(self.onchangetheme)
def onchangetheme(self):
theme = self.choice_theme.currentText()
if theme == 'Default':
self.apply_stylesheet(self.app, theme='default')
else:
self.apply_stylesheet(self.app, theme=theme)
qt-material主题库提供20+种预设主题,包括:
- dark_amber.xml
- dark_blue.xml
- dark_cyan.xml
- light_pink.xml
- light_teal.xml等
六、鼠标移动精度调节
通过调整鼠标移动间隔参数,平衡执行速度与精准度:
# 鼠标精度调节代码(UIFunc.py)
self.mouse_move_interval_ms.setValue(int(self.config.value("Config/Precision")))
self.mouse_move_interval_ms.valueChanged.connect(Recorder.set_interval)
参数建议:
- 高精度场景(如绘图软件):50-100ms
- 普通办公场景:200-300ms
- 快速操作场景:500ms以上
七、事件录制暂停与继续
录制过程中可随时暂停,灵活跳过不需要的操作:
# 录制暂停功能代码(UIFunc.py)
def pauseRecordMethod(self):
if self.state == State.PAUSE_RECORDING:
self.btpauserecord.setText(QCoreApplication.translate("UIView", 'Pause', None))
self.update_state(State.RECORDING)
elif self.state == State.RECORDING:
self.btpauserecord.setText(QCoreApplication.translate("UIView", 'Continue', None))
self.tnumrd.setText('record paused')
self.update_state(State.PAUSE_RECORDING)
使用技巧:
- 暂停时移动鼠标不被录制
- 暂停期间可调整窗口位置
- 继续录制后保持原有时间序列
八、脚本执行暂停与恢复
执行过程中支持暂停/恢复,便于进行人工干预:
# 执行暂停功能代码(RunScriptClass.py)
def set_pause(self):
self.eventPause = True
def resume(self):
self.eventPause = False
super().resume()
def wait_if_pause(self):
if self.eventPause:
self.pause()
else:
self.resume()
操作流程:
- 按开始热键启动脚本
- 再次按开始热键暂停执行
- 第三次按开始热键恢复执行
- 按停止热键终止执行
九、脚本解析与兼容性处理
软件能自动识别并处理新旧格式的脚本文件:
# 脚本解析兼容性代码(RunScriptClass.py)
try:
head_object = ScriptParser.parse(script_path)
except Exception as e:
logger.warning('Failed to parse script, maybe it is using legacy grammar')
try:
head_object = LegacyParser.parse(script_path)
except Exception as e:
logger.error(e)
支持的脚本格式:
- 新版:JSON5格式,支持注释和复杂结构
- 旧版:简单文本格式,每行一个事件
十、插件系统扩展功能
通过插件机制可无限扩展软件功能:
# 插件调用核心代码(RunScriptClass.py)
call_group: List[str] = json_object.content.get('call', None)
if call_group:
PluginManager.call_group(call_group, json_object)
# 判断逻辑调用
result = PluginManager.call(json_object.content['condition'], json_object)
if result:
return json_object.next_object
else:
return json_object.next_object_if_false
插件开发方向:
- 自定义判断条件(如窗口是否存在、文件是否存在)
- 扩展事件类型(如网络请求、文件操作)
- 添加OCR识别、图像匹配等高级功能
结语
KeymouseGo作为一款开源的自动化工具,提供了远超基础录制回放的强大功能。通过本文介绍的10个高级技巧,你可以充分发挥其潜力,实现复杂的自动化任务。无论是日常办公自动化、游戏辅助操作,还是软件测试脚本,KeymouseGo都能成为你提高效率的得力助手。
建议配合官方文档和示例脚本进一步学习,探索更多适合个人需求的使用方式。如有疑问或功能建议,可通过项目仓库提交issue或参与社区讨论。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



