這是微軟注音輸入法使用者造詞同步工具
- ✅ 自動備份功能,保護原始詞庫
- ✅ 系統匣常駐,快速存取
- ✅ 跨電腦詞庫同步(透過 Redis)
- 前往 Upstash 建立免費帳號
- 建立一個 Redis 資料庫
- 複製 Redis URL(格式:
rediss://default:xxx@xxx.upstash.io:6379) - 在程式的「設定」頁面貼上 Redis URL
- 或建立
env/.env檔案(參考env/.env.example)
- Go 1.21 或更新版本
- Windows 作業系統
# 安裝相依套件
go mod download
# 建置(無控制台視窗)
go build -ldflags "-H windowsgui -s -w" -o userword.exe .
# 建置(生產環境)
go build -ldflags "-H windowsgui -s -w" -tags prod -o userword.exe .
# 生成圖示
rsrc -ico res/icon.ico -o rsrc.syso
# 生成 Swagger 文件
swag init -g pkg/web/server.go
# 或使用 Makefile
make all- 執行
userword.exe - 程式會在系統匣(右下角)顯示圖示
- 右鍵點擊圖示開啟選單:
- 設定 - 開啟 Web 設定介面
- 更新詞彙 - 同步詞彙
- 檢查程式更新 - 檢查新版本(會開啟首頁)
- 結束 - 關閉程式
微軟注音使用者自訂詞庫通常位於 %APPDATA%\Microsoft\Ime\15.0\IMETC\TCEUDP.UPT。本專案透過解析此二進位檔案來達成同步與管理。
- Header (128 bytes): 包含 Magic (
USERDEFP)、詞條數量、資料區位移等 metadata。 - Data Region: 包含變長度的詞條記錄。
| 偏移 | 大小 | 說明 |
|---|---|---|
| 0x00 | 8 | Magic: USERDEFP |
| 0x10 | 4 | 資料區起始位置 (Data Offset) |
| 0x14 | 4 | 資料區結束位置 (Data End) |
| 0x18 | 4 | 檔案總大小 (File Size) |
| 0x1C | 4 | 實際詞條數量 (Entry Count) |
每個記錄按以下結構排列,並對齊到 4-byte 邊界後額外填 4 bytes:
- Record Length (2 bytes): 整個記錄的總長度。
- 注音編碼 (每字 4 bytes): 2B 編碼 + 2B 填充 (00 00)。
- 間隔 (4 bytes): 固定為
00 00 00 00。 - 詞彙內容: UTF-16LE 編碼的文字。
| 位元 (Bits) | 欄位 | 說明 |
|---|---|---|
| 15-11 | 聲母 | 0(無), 1(ㄅ), 2(ㄆ), 3(ㄇ)... 21(ㄙ) |
| 10-9 | 介母 | 0(無), 1(ㄧ), 2(ㄨ), 3(ㄩ) |
| 8-5 | 韻母 | 0(無), 1(ㄚ), 2(ㄛ)... 13(ㄦ) |
| 4-3 | 聲調 | 0(ˋ), 1(ˉ), 2(ˊ), 3(ˇ) |
| 2-0 | 保留 | 目前皆為 0 |
MIT License
- 將本機與雲端的所有詞彙進行合併之後 去重複 (只比較中文,不比較注音)
- 將本機及雲端的詞彙取代成最新的集合
- 刪除的詞彙會被記錄到刪除清單,其他客戶端同步時會自動刪除(30天後自動清理)
如果您想建立自己的訂閱目錄供他人使用,請在 Redis 中手動建立以下結構:
建立一個 Set,key 為 catalog:index,內容為所有可用分類的 ID (名稱)。
# 新增分類 "英雄聯盟" 和 "機械加工"
SADD catalog:index "英雄聯盟" "機械加工"為每個分類建立一個 Hash,key 為 catalog:data:<ID>,內容為該分類的詞彙與注音。
# 設定 "英雄聯盟" 的詞彙
HSET catalog:data:英雄聯盟 "提摩" "ㄊㄧ ㄇㄛ"
HSET catalog:data:英雄聯盟 "蓋倫" "ㄍㄞˋ ㄌㄨㄣˊ"
# 設定 "機械加工" 的詞彙
HSET catalog:data:機械加工 "車床" "ㄔㄜ ㄔㄨㄤˊ"
HSET catalog:data:機械加工 "銑床" "ㄒㄧˇ ㄔㄨㄤˊ"配置完成後,將此 Redis 的 URL 設定為 CatalogURL,使用者即可在訂閱管理器中看到這些分類並進行訂閱。