倉頡之友 。馬來西亞
自 學 倉 頡 輸 入 法
主頁 | 最新消息 | 課程 | 字典 | 論壇 | 下載 | 網上輸入法 | 常見問題 | 友站 | 資料 | 聯絡 | 捐助本站
替換微軟倉頡碼表,盡享倉頡補完計劃的樂趣 - 倉頡論壇 - 倉頡之友 - Powered by Discuz!

倉頡之友

 找回密碼
 注册
搜索
熱搜: 活動 交友 discuz
查看: 2581|回復: 26

替換微軟倉頡碼表,盡享倉頡補完計劃的樂趣

[複製鏈接]
發表於 18-4-2020 20:17:12 | 顯示全部樓層 |閱讀模式
本帖最後由 馬拉一個錘子 於 23-4-2020 12:59 AM 編輯

一樓喂熊
 樓主| 發表於 18-4-2020 20:43:21 | 顯示全部樓層
本帖最後由 馬拉一個錘子 於 2-6-2020 10:27 PM 編輯

大功告成,切換到微軟倉頡開始享受寫字的樂趣。
屏幕快照 2020-06-02 下午10.27.20.png

點評

Good Job!辛苦了!  發表於 19-4-2020 01:44 AM
回復 支持 2 反對 0

使用道具 舉報

 樓主| 發表於 18-4-2020 20:18:23 | 顯示全部樓層
本帖最後由 馬拉一個錘子 於 18-4-2020 08:20 PM 編輯

衆所周知,微軟倉頡有着一個非常糟糕的碼表。非Big5部分有着大量錯碼、還有不少缺字。即使是Big5部分,也存在排序難用的問題。
於是,一些人包括我就想,為什麼不能把微軟倉頡的碼表換成自己的呢?
這個想法很美好,只是,微軟倉頡的碼表以特殊的方式encode,因此要更換它並不是很容易。儘管隔壁的微軟五筆碼表早已被解開可以隨意替換,但微軟倉頡的碼表卻遲遲沒有人找出其中的奧秘。(笑)
 樓主| 發表於 18-4-2020 20:19:45 | 顯示全部樓層
本帖最後由 馬拉一個錘子 於 23-4-2020 01:15 AM 編輯

不過,並不是沒有人努力過。例如我在幾年前曾諮詢過解出過微軟五筆碼表的xionghuaidong,@mrhso 找出了讀取微軟倉頡擴展區碼表的方法。

我近日就在mrhso的基礎上,研究明白了微軟倉頡擴展區碼表的結構,並成功寫出了程序來把我們的碼表變成微軟倉頡的lex格式。
 樓主| 發表於 18-4-2020 20:20:41 | 顯示全部樓層
本帖最後由 馬拉一個錘子 於 23-4-2020 01:02 AM 編輯

倉頡補完計劃包括了倉頡三代補完計劃與倉頡五代補完計劃。它們對不同字形、大字集具有着良好的支持。例如說,它們可以支持剛發佈不久的Ext-G區和Unicode 13.0標準。因此,將微軟倉頡的碼表替換成倉頡三代/五代補完計劃具有巨大的好處。不僅打簡體沒問題了,還能打ABCDEFG區字。
 樓主| 發表於 18-4-2020 20:21:39 | 顯示全部樓層
本帖最後由 馬拉一個錘子 於 2-6-2020 10:14 PM 編輯

例如說,微軟倉頡的「反」原來只能以「竹水」打出。而倉頡三代/五代補完計劃不僅支持「竹水」,還支持「一水」。下圖為補完計劃碼表替換後的效果圖。
IMG_4613.JPG
 樓主| 發表於 18-4-2020 20:23:03 | 顯示全部樓層
本帖最後由 馬拉一個錘子 於 2-6-2020 10:15 PM 編輯

再例如,微軟倉頡把很多「讠」旁的字都錯編成了「戈山」、「戈弓」。而倉頡補完計劃則沒有這些問題,下圖為替換後的效果圖。
屏幕快照 2020-06-02 下午10.14.52.PNG
 樓主| 發表於 18-4-2020 20:23:45 | 顯示全部樓層
本帖最後由 馬拉一個錘子 於 23-4-2020 01:02 AM 編輯

倉頡三代/五代補完計劃對舊字形也有部分支持。例如說,「曾」不僅可以以「金田.日」打出,還可以以「金.田火.日」打出。
 樓主| 發表於 18-4-2020 20:24:52 | 顯示全部樓層
本帖最後由 馬拉一個錘子 於 2-6-2020 10:25 PM 編輯

由於倉頡三代/五代補完計劃有較好的編碼質量,而且支持到G區,因此替換碼表後可以以微軟倉頡打出G區字,下方為效果圖。
屏幕快照 2020-06-02 下午10.25.20.png
 樓主| 發表於 18-4-2020 20:31:04 | 顯示全部樓層
本帖最後由 馬拉一個錘子 於 23-4-2020 09:59 AM 編輯

我先將替換碼表的鏈接放在這裏,然後再講講替換碼表的方法。本方案支持Windows 10。


注:雖然8.1與10具有相同的碼表格式,但是我們提供的碼表並不適用於8.1。这是因為微軟倉頡的擴展區以Unicode碼位排序,為了方便用戶,我們使用了特殊的方式儘量讓lex碼表中的排序與原補完計劃碼表中的排序一致。這種方式可以使得替換碼表後,Windows 10的微軟倉頡中的重碼字有正常的排序,但在Windows 8.1的微軟倉頡中卻會出現異常。考慮到Windows 8.1的用戶較少,權衡利弊,我們僅提供適用於Windows 10的lex格式碼表。

倉頡三代補完計劃替換碼表下載地址:https://github.com/Arthurmcarthur/Cangjie3-Plus/releases

倉頡五代補完計劃替換碼表下載地址:https://github.com/Jackchows/Cangjie5/releases
 樓主| 發表於 18-4-2020 20:32:26 | 顯示全部樓層
本帖最後由 馬拉一個錘子 於 2-6-2020 10:28 PM 編輯

拿到了替換的碼表後,如何替換系統內置的碼表呢?
A.如果你現在在使用微軟倉頡,或開機後啓用過微軟倉頡,請你現在切換到其他輸入法。然後在任務管理器裏找到你看到的所有的Microsoft IME進程,並把它們結束掉。

B.如果你不會結束進程,也可以進入鍵盘設定中刪除掉微軟倉頡,然後重啓電腦。


之所以要這麼做,是為了防止輸入法進程佔用碼表文件,使得文件無法被刪除。
屏幕快照 2020-06-02 下午9.50.15.PNG
 樓主| 發表於 18-4-2020 20:33:24 | 顯示全部樓層
本帖最後由 馬拉一個錘子 於 2-6-2020 10:42 PM 編輯

然後,打開你的系統盤,這個盤符通常是C。現在我們假設你的系統盤符是C。

然後你要確定你的Windows 10的版本號。按下Win+R組合鍵,在「運行」窗口中輸入winver並回車。
在彈出的窗口中,有「版本 XXXX」的字樣。如果這個版本低於2004,進入C:\Windows\InputMethod\CHT文件夾。若這個版本為2004,請進入C:\Windows\System32\zh-hk文件夾。要稍微注意的是,2004之前的版本中,與微軟倉頡有關的文件是ChtChangjie.lex、ChtChangjie.spd和ChtChangjieExt.lex。已經正式發佈的Windows 10 2004中,與微軟倉頡有關的文件是ChtCangjie.sdc、ChtCangjie.spd和ChtCangjieExt.lex。不過讀者不必為此感到困擾,因为儘管不同版本之間存在差異,但替換的原理是大同小異的。

Windows版本號查看

Windows版本號查看

Windows 10 2004

Windows 10 2004

Windows 10 2004以前的版本

Windows 10 2004以前的版本
 樓主| 發表於 18-4-2020 20:34:28 | 顯示全部樓層
本帖最後由 馬拉一個錘子 於 3-6-2020 12:09 AM 編輯

然後,對於Windows 10 2004之前版本的用戶,可以試着刪除ChtChangjie.lex、ChtChangjie.spd和ChtChangjieExt.lex文件。
對於Windows 10 2004的用戶,可以試着刪除ChtCangjie.sdc、ChtCangjie.spd和ChtCangjieExt.lex文件。
據本人的測試,Windows 10 2004在提供管理員權限後應可以直接刪除掉相關文件,而Windows 10 2004以前的版本則無法直接刪除。
若你的系統在提供管理員權限後可以直接刪除相關文件,則可以直接跳到20樓看後續步驟。若提供管理員權限後仍無法刪除,請繼續往下看。

此處以Windows 10 2004之前版本為例,你會發現不能刪除相關文件,即使你提供了管理員權限亦然。
屏幕快照 2020-06-02 下午10.38.17.png
 樓主| 發表於 18-4-2020 20:35:45 | 顯示全部樓層
本帖最後由 馬拉一個錘子 於 2-6-2020 10:52 PM 編輯

那怎麼辦呢?
原來,我們必須把文件的所有者改成自己,然後給自己以足夠的權限。

首先,Windows 10 2004之前版本,請退回到上一級目錄,選中CHT文件夾,右擊→內容(簡體中文版譯為「属性」),再切換到「安全」選項卡。接下來,點擊「進階」選項(簡體中文版譯為「高级」)。
屏幕快照 2020-06-02 下午10.50.58.png
1.png
 樓主| 發表於 18-4-2020 20:37:52 | 顯示全部樓層
本帖最後由 馬拉一個錘子 於 2-6-2020 10:53 PM 編輯

在彈出的窗口中點擊「變更」(簡體中文版譯為「更改」)。
屏幕快照 2020-06-02 下午10.52.55.png
 樓主| 發表於 18-4-2020 20:38:35 | 顯示全部樓層
本帖最後由 馬拉一個錘子 於 2-6-2020 10:55 PM 編輯

在彈出的窗口的下方的文本框中輸入自己的用戶名,如果你不確定自己有沒有輸對,可以點擊「檢查名稱」來檢查一下。之後點擊兩次「確定」。
在這裏,我的用戶名是「fraise」。
屏幕快照 2020-06-02 下午10.54.06.png
 樓主| 發表於 18-4-2020 20:39:11 | 顯示全部樓層
本帖最後由 馬拉一個錘子 於 2-6-2020 10:56 PM 編輯

之後還是在安全選項卡點擊「編輯」。
屏幕快照 2020-06-02 下午10.55.43.png
 樓主| 發表於 18-4-2020 20:39:49 | 顯示全部樓層
本帖最後由 馬拉一個錘子 於 2-6-2020 10:58 PM 編輯

點擊「新增」(簡體中文版譯為「添加」)。
屏幕快照 2020-06-02 下午10.56.51.png
 樓主| 發表於 18-4-2020 20:40:41 | 顯示全部樓層
本帖最後由 馬拉一個錘子 於 2-6-2020 10:59 PM 編輯

在下方的文本框內輸入自己的用戶名,然後按「確定」。
在此,我的用戶名是「fraise」。
屏幕快照 2020-06-02 下午10.58.41.png
 樓主| 發表於 18-4-2020 20:41:28 | 顯示全部樓層
本帖最後由 馬拉一個錘子 於 2-6-2020 11:00 PM 編輯

之後在「安全」選項卡中選中自己的用戶名,再勾選「完全控制」。
屏幕快照 2020-06-02 下午10.59.42.png
 樓主| 發表於 18-4-2020 20:42:08 | 顯示全部樓層
本帖最後由 馬拉一個錘子 於 3-6-2020 12:05 AM 編輯

對於Windows 10 2004以前的版本,請回到CHT文件夾內,刪除ChtChangjie.lex、ChtChangjie.spd、ChtChangjieExt.lex三个文件,順便要做好備份工作,然後將我們提供的ChtChangjieExt.lex複製到文件夾中。(請注意不要弄錯文件名)

對於Windows 10 2004,請回到zh-hk文件夾內,刪除ChtCangjie.sdc、ChtCangjie.spd和ChtCangjieExt.lex文件,順便也要做好備份工作。然後將我們提供的ChtCangjieExt.lex複製到文件夾中,或者將我們提供的ChtChangjieExt.lex更名為ChtCangjieExt.lex後複製到文件夾中。(請注意不要弄錯文件名)



你也許會問,那另外兩個文件呢?答案是我只解開了ChtChangjieExt.lex/ChtCangjieExt.lex,所以那兩個文件就不需要了。

進入微軟倉頡的設置,打開「包括HKSCS中的字符」的開關。然後,上方的「Unicode字符」選項,請務必根據自己的需求改為「包括中日韓統一表意文字擴展區A」或「包括中日韓統一表意文字擴展區A和B」。若是改為「包括中日韓統一表意文字擴展區A」,則僅能輸入基本區和擴展A區字符,若改為「包括中日韓統一表意文字擴展區A和B」,則能輸入基本區和擴展ABCDEFG區的字符。
因為我解開的是Ext的lex文件,所以修改這些選項是必需的,如果維持默認的設置,將無法出字。

另外有一點需要注意的是,对于Windows 10 2004,這設置頁面上還會有一個「相容性」的開關,這個開關默認是關閉的。如果打開這個開關,還原使用舊版的話,Windows 10 2004會去讀取C:\Windows\InputMethod\CHT文件夾下的碼表文件(沒錯,Windows 10 2004仍然保留了舊版的碼表文件),而如果不打開這個開關的話,Windows 10 2004會去讀取C:\Windows\System32\zh-hk下的碼表文件。本教程默認Windows 10 2004的用戶會保持這個開關關閉。若Windows 10 2004的用戶要打開這個開關,則請參考較舊版本系統的替換方法。

由於Windows 10 2004的微軟倉頡更新了,如果你在替換碼表後又從舊版本系統更新到了Windows 10 2004,可能需要參考本文重新替換碼表。

在此順便吐槽一下微軟倉頡,換皮非常勤快,但是碼表卻沒有改善,可謂是「科技以換殼為本」的典範了。反觀微軟五筆,從內置以來改進了許多,為何微軟倉頡不能像微軟五筆一樣呢?
不過話說回來,像Windows內置的行列與大易則是從Vista以來就毫無變化(也許兼容Metro App算個變化吧),大概是一堆祖傳代碼+微軟無人會用的原因吧。
屏幕快照 2020-06-02 下午11.03.32.png
您需要登錄後才可以回帖 登錄 | 注册

本版積分規則

小黑屋|手機版|Archiver|倉頡論壇  

GMT+8, 5-8-2020 09:40 AM , Processed in 0.759892 second(s), 25 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表