功能:記錄使用者的滑鼠鍵盤操作,通過觸發按鈕自動執行之前記錄的操作,可設定執行的次數,可以理解為 精簡綠色版 的 按鍵精靈。
用途:在進行某些操作簡單、單調重複的工作時,使用本軟體就可以很省力了。自己只要做一遍,然後接下來就讓電腦來做。
該軟體通過 Python 語言編寫,已打包為可執行檔案,未安裝 Python 的使用者可直接下載 release 版本 ,直接點選 KeymouseGo 執行
1. 安裝 Python3.14.5 (python-3.14.5-amd64.exe) [(原來Python 3.12以上不能安裝Pywinhook的問題已由Postman1yeary於2026年5月14日完美解決]
2. pip安裝依賴
- (Windows) pip install -r requirements-windows.txt
- (Linux/MacOS) pip3 install -r requirements-universal.txt
3. pip安裝pyinstaller
- pip install pyinstaller
4. pyinstaller打包
- (Windows) pyinstaller -F -w --add-data "./assets;assets" KeymouseGo.py
- (Linux X11) pyinstaller -F -w --add-data "./assets:assets" --hidden-import "pynput.keyboard._xorg" --hidden-import "pynput.mouse._xorg" KeymouseGo.py
- (Linux Wayland) pyinstaller -F -w --add-data "./assets:assets" --hidden-import "pynput.keyboard._uinput" --hidden-import "pynput.mouse._uinput" KeymouseGo.py
- (MacOS) pyinstaller -F -w --add-data "./assets:assets" --hidden-import "pynput.keyboard._darwin" --hidden-import "pynput.mouse._darwin" KeymouseGo.py
打包完成後,可執行檔案在專案路徑的dist資料夾內。
1、點選 錄製 按鈕,開始錄製。
2、在電腦上進行任意操作,如點選滑鼠、鍵盤輸入,這部分的動作會被記錄下來。
3、點選 結束 按鈕,結束錄製。
4、點選 啟動 按鈕,電腦會重複執行一遍第2步中所錄製的動作。
直接執行指定指令碼:
> ./KeymouseGo scripts/0314_1452.txt
執行指定指令碼3次:
> ./KeymouseGo scripts/0314_1452.txt -rt 3
> ./KeymouseGo scripts/0314_1452.txt --runtimes 3
1、可設定指令碼重複執行的次數,如果為 0 即為無限循環。
2、預設啟動熱鍵為 F12,功能等同於 啟動 按鈕;預設終止熱鍵為 F9,按下後將會停止正在執行的指令碼。
3、錄製時只記錄滑鼠點選動作和鍵盤動作,不記錄滑鼠移動軌跡。
4、每次錄製結束后都會在 scripts 目前下產生一個新的指令碼檔案。
5、執行前可以在列表中選擇一個需要執行的指令碼。
6、scripts 下的指令碼檔案內容可以修改,修改時可參考如下所述 指令碼格式說明。
7、熱鍵設定中的Middle指代滑鼠中鍵,XButton指代滑鼠側鍵
8、由於程式速度受限,當輸入的滑鼠速度大於一定值時指令碼將無法以預期的輸入速度執行
9、部分系統環境中,可能出現無法錄製完整的滑鼠事件的情況,請以管理員身份/root身份執行此工具即可正常使用。
10、使用Mac的使用者,需要確保程式在輔助功能白名單,如果使用打包的exec檔案,則還需要確保終端也在輔助功能白名單。 如果app程式閃退,請嘗試給予~/.qt_material目錄下檔案的寫許可權:
chmod -R 770 ~/.qt_material11、對於Linux/Mac使用者,如果在以系統管理員身分執行后仍然存在無法錄製或執行的問題,可以參考pynput的文件
演示螢幕解析度為
1920 * 1080
指令碼為 json5 格式,每個最內層的jsonobject代表一個事件
{
scripts: [
// 開始執行 `3000ms` 后,在螢幕相對座標 `(0.05208, 0.1852)`即 `(100,200)` 處 `按下滑鼠右鍵`;
{delay: 3000, event_type: "EM", action_type: "mouse right down", action: ["0.05208%", "0.1852%"], type: "event"},
// 等待 `50ms` 后在相同位置 `抬起滑鼠右鍵`;
// 橫縱座標為[-1, -1]時,表示在滑鼠目前所在位置執行操作。
{delay: 50, event_type: "EM", action_type: "mouse right up", action: [-1, -1], type: "event"},
// 等待 `1000ms` 后 `按下F鍵`;
{delay: 1000, event_type: "EK", action_type: "key down", action: [70, 'F', 0], type: "event"},
// 等待 `50ms` 后 `抬起F鍵`;
{delay: 50, event_type: "EK", action_type: "key up", action: [70, 'F', 0], type: "event"},
// 等待 `100ms` 后,在螢幕相對座標 `(0.2604, 0.4630)`即 `(500, 500)` 處 `按下滑鼠左鍵`;
{delay: 100, event_type: "EM", action_type: "mouse left down", action: ["0.2604%", "0.4630%"], type: "event"},
// 等待 `100ms` 后,滑鼠移動至相對座標 `(0.2604, 0.5556)`即 `(500, 600)` 位置;
{delay: 100, event_type: "EM", action_type: "mouse move", action: ["0.2604%", "0.5556%"], type: "event"},
// 等待 `100ms` 后,在螢幕相對座標 `(0.3125, 0.5556)`即 `(600, 600)` 處 `抬起滑鼠左鍵`;
{delay: 100, event_type: "EM", action_type: "mouse left up", action: ["0.3125%", "0.5556%"], type: "event"},
// 等待 `100ms` 后,在目前位置輸入 `你好 world` 文字。
{delay: 100, event_type: "EX", action_type: "input", action: "你好 world", type: "event"}
//按 TAB 鍵共 12 次(等於按TAB鍵 N次, N為action--例如action: 12就是按TAB 12次)
{delay: 10, event_type: "EX", action_type: "click_tab", action: 12, type: "event"},
//按 組合鍵 SHIFT+TAB 共 3 次
{delay: 10, event_type: "EK", action_type: "key down", action: [160, "Lshift", 0], type: "event"},
{delay: 10, event_type: "EX", action_type: "click_tab", action: 3, type: "event"},
{delay: 10, event_type: "EK", action_type: "key up", action: [160, "Lshift", 0], type: "event"},
//貼上新文字(等於CTRL+V的四行表逹式, 前提下需要先複製文字)
{delay: 10, event_type: "EX", action_type: "ctrl_v", action: "", type: "event"},
]
}功能的使用詳見wiki
我是陶佳元,熱愛程式碼,懷舊,在網際網路上常用的 ID 有 taojy123 、tao.py。
我的個人站點 tslow.cn 整理並羅列了一些 個人專案 和 小工具 合集。
你可以在 簡書 瀏覽我最新發布的文章,還可以在 B站 觀看我的技術分享和生活紀實。
我的郵箱: taojy123@163.com
如果您是開發愛好者,並對本專案感興趣,歡迎參與專案的共同建設,您可以通過本專案的dev分支檢視目前的進度,並且可以向本專案的dev分支提交 Pull request 來貢獻程式碼。
註:如果您需要修改應用界面,請修改UIView.ui檔案並通過pyuic產生UIVIew.py,控制元件的初始化等操作請新增到UIFunc.py內。
感謝 JetBrains 免費提供開發工具
-
原作者繁體及簡體翻譯需要修補, 已完善
-
移除音效及音量條(不會再發出聲音---註:本人認為聲音對腳本無意義而且影響脚本執行, 故刪除)
-
移除原作者根據系統時區決定語言的程式碼(本人認為不合理, 而且事實上重開硬性顯示簡體), 改為由使用者自己選擇(繁體中文、English、簡體中文)
-
界面所有文字由使用者選擇的語言決定而變化 (原作者硬性規定簡體中文, 且游標硬性英文, 不合理)
-
2026年4月30日已向作者提出不能執行舊TXT脚本嚴重問題, 已由作者積極回應及修復(官方現在5月1日的源碼已修復), 本人亦重新將所有message改回新版action_type (有關2026年5月1日前, 曾將新版action_type全部取代回舊版message的所有本人修改版本已刪除) 因已解決, 應換回新版action_type)。 #368
-
2026年5月6日已向作者請求修改錄制JSON5原來的一個動作會由多行顯示, 需要變成一行的要求, 並指出不必要逗號問題, 已得到作者積極修復(官方DEV分支已在5月6日源碼修復), 因此本人亦作出修復, 從此錄制的JSON5文件與官方簡介描述基本一致(一個動作--例如按鍵, 滑鼠移動等, 僅通過一行顯示)
-
2026年5月7日發現已錄制之JSON5檔案內, delay、 event_type、 action、 action_type及type五個常量的前後被加入雙引號,即正確的delay成為"delay" 而這5個常量的前後雙引號雖然不會對執行有任何影響, 但顯示內容與官方一直以來的語法說明指南(delay)不一致, 故修改以去除雙引號, 以保持嚴謹和一致。
-
2026年5月9日加入ctrl_v指令(等於CTRL+V的四行表逹式, 前提下需要先複製文字) :
{delay: 100, event_type: "EX", action_type: "ctrl_v", action: "", type: "event"} -
2026年5月12加入click_tab指令(等於按TAB鍵N次, N為action--例如action: 5就是按5次) :
{delay: 100, event_type: "EX", action_type: "click_tab", action: 5, type: "event"}
因pywinhook作者停止更新, 導致WHEEL檔案只能安裝於PYTHON 3.12版本以下, 本人已重新編譯pywinhook 3.14 whl檔, 現在可使用最新版本的python 3.14.5
在此特別感激作者的積極認真, 敬業樂業的高尚精神, 實為我等科技興趣者之楷模。實在感激不盡。

