Skip to content

aa846301/UserWord_Community

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UserWord - 微軟注音詞庫同步工具 社區版

這是微軟注音輸入法使用者造詞同步工具

功能

  • ✅ 自動備份功能,保護原始詞庫
  • ✅ 系統匣常駐,快速存取
  • ✅ 跨電腦詞庫同步(透過 Redis)

設定同步

推薦使用方法

  1. 前往 Upstash 建立免費帳號
  2. 建立一個 Redis 資料庫
  3. 複製 Redis URL(格式:rediss://default:xxx@xxx.upstash.io:6379
  4. 在程式的「設定」頁面貼上 Redis URL
  5. 或建立 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

使用方式

  1. 執行 userword.exe
  2. 程式會在系統匣(右下角)顯示圖示
  3. 右鍵點擊圖示開啟選單:
    • 設定 - 開啟 Web 設定介面
    • 更新詞彙 - 同步詞彙
    • 檢查程式更新 - 檢查新版本(會開啟首頁)
    • 結束 - 關閉程式

詞庫檔案格式 (TCEUDP.UPT)

微軟注音使用者自訂詞庫通常位於 %APPDATA%\Microsoft\Ime\15.0\IMETC\TCEUDP.UPT。本專案透過解析此二進位檔案來達成同步與管理。

檔案結構概覽

  • Header (128 bytes): 包含 Magic (USERDEFP)、詞條數量、資料區位移等 metadata。
  • Data Region: 包含變長度的詞條記錄。

Header 結構 (精簡版)

偏移 大小 說明
0x00 8 Magic: USERDEFP
0x10 4 資料區起始位置 (Data Offset)
0x14 4 資料區結束位置 (Data End)
0x18 4 檔案總大小 (File Size)
0x1C 4 實際詞條數量 (Entry Count)

詞條記錄格式

每個記錄按以下結構排列,並對齊到 4-byte 邊界後額外填 4 bytes:

  1. Record Length (2 bytes): 整個記錄的總長度。
  2. 注音編碼 (每字 4 bytes): 2B 編碼 + 2B 填充 (00 00)。
  3. 間隔 (4 bytes): 固定為 00 00 00 00
  4. 詞彙內容: UTF-16LE 編碼的文字。

注音編碼定義 (16-bit)

位元 (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

同步流程

  1. 將本機與雲端的所有詞彙進行合併之後 去重複 (只比較中文,不比較注音)
  2. 將本機及雲端的詞彙取代成最新的集合
  3. 刪除的詞彙會被記錄到刪除清單,其他客戶端同步時會自動刪除(30天後自動清理)

Redis 訂閱目錄結構 (Catalog)

如果您想建立自己的訂閱目錄供他人使用,請在 Redis 中手動建立以下結構:

1. 目錄索引 (Index)

建立一個 Set,key 為 catalog:index,內容為所有可用分類的 ID (名稱)。

# 新增分類 "英雄聯盟" 和 "機械加工"
SADD catalog:index "英雄聯盟" "機械加工"

2. 分類資料 (Data)

為每個分類建立一個 Hash,key 為 catalog:data:<ID>,內容為該分類的詞彙與注音。

# 設定 "英雄聯盟" 的詞彙
HSET catalog:data:英雄聯盟 "提摩" "ㄊㄧ ㄇㄛ"
HSET catalog:data:英雄聯盟 "蓋倫" "ㄍㄞˋ ㄌㄨㄣˊ"

# 設定 "機械加工" 的詞彙
HSET catalog:data:機械加工 "車床" "ㄔㄜ ㄔㄨㄤˊ"
HSET catalog:data:機械加工 "銑床" "ㄒㄧˇ ㄔㄨㄤˊ"

配置完成後,將此 Redis 的 URL 設定為 CatalogURL,使用者即可在訂閱管理器中看到這些分類並進行訂閱。

About

UserWord Community 社群版本,可自行架設Redis用於同步詞彙

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors