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

倉頡之友

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

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

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

一樓喂熊
 樓主| 發表於 18-4-2020 20:43:21 | 顯示全部樓層
本帖最後由 馬拉一個錘子 於 23-4-2020 01:13 AM 編輯

大功告成,切換到微軟倉頡開始享受寫字的樂趣。
图像 23-4-20,上午1.12.JPG

點評

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 | 顯示全部樓層
本帖最後由 馬拉一個錘子 於 23-4-2020 01:16 AM 編輯

例如說,微軟倉頡的「关」原來只能以「金一大」打出。而倉頡三代/五代補完計劃不僅支持「金一大」,還支持「廿大」。下圖為補完計劃碼表替換後的效果圖。
5baa8922720e0cf3a3e5a19c1d46f21fbf09aa44.jpg.png
 樓主| 發表於 18-4-2020 20:23:03 | 顯示全部樓層
本帖最後由 馬拉一個錘子 於 23-4-2020 01:08 AM 編輯

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

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

由於倉頡三代/五代補完計劃有較好的編碼質量,而且支持到G區,因此替換碼表後可以以微軟倉頡打出G區字,下方為效果圖。
f17ff850352ac65c844e8914ecf2b21192138a03.jpg.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 | 顯示全部樓層
拿到了替換的碼表後,如何替換系統內置的碼表呢?
如果你現在在使用微軟倉頡,或開機後啓用過微軟倉頡,請你現在切換到其他輸入法。然後在任務管理器裏找到兩個Microsoft IME進程,並把它們結束掉。
aec01dd7912397dd3f0276634e82b2b7d1a28753.jpg.png
 樓主| 發表於 18-4-2020 20:33:24 | 顯示全部樓層
本帖最後由 馬拉一個錘子 於 21-4-2020 05:48 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 | 顯示全部樓層
本帖最後由 馬拉一個錘子 於 21-4-2020 05:50 PM 編輯

然後,對於Windows 10 2004之前版本的用戶,可以試着刪除ChtChangjie.lex和ChtChangjie.spd文件。
對於Windows 10 2004的用戶,可以試着刪除ChtCangjie.sdc和ChtCangjie.spd文件。

此處以Windows 10 2004之前版本為例,你馬上就會發現不能刪除這幾個文件。
a779910a19d8bc3e5143e8ad958ba61ea9d34503.jpg.png
 樓主| 發表於 18-4-2020 20:35:45 | 顯示全部樓層
本帖最後由 馬拉一個錘子 於 21-4-2020 05:53 PM 編輯

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

首先,Windows 10 2004之前版本,請退回到上一級目錄,選中CHT文件夾,右擊→屬性,再切換到「安全」選項卡。接下來,點擊「高級」選項。
Windows 10 2004版本,也請退回到上一級目錄,選中zh-hk文件夾,右擊→屬性,再切換到「安全」選項卡。接下來,點擊「高級」選項。此處的圖片以Windows 10 2004之前的版本為例,對於Windows 10 2004的用戶,若非特別指明,接下來的步驟與Windows 10 2004以前的版本相同。
a928e603918fa0ec6a728a6a319759ee3c6ddb1d.jpg.png
88ee7c224f4a20a42ba8d2a087529822730ed018.jpg.png
 樓主| 發表於 18-4-2020 20:37:52 | 顯示全部樓層
在彈出的窗口中點擊「更改」。
4de0277adab44aed6cd35083a41c8701a08bfb35.jpg.png
 樓主| 發表於 18-4-2020 20:38:35 | 顯示全部樓層
在彈出的窗口的下方的文本框中輸入自己的用戶名,如果你不確定自己有沒有輸對,可以點擊「檢查名稱」來檢查一下。之後點擊「確定」。
1c326acb0a46f21fc9a1b034e1246b600d33ae3d.jpg.png
 樓主| 發表於 18-4-2020 20:39:11 | 顯示全部樓層
之後還是在安全選項卡點擊「編輯」。
78e1fac4b74543a9b39e14ab09178a82bb0114cc.jpg.png
 樓主| 發表於 18-4-2020 20:39:49 | 顯示全部樓層
點擊「添加」。
3ddc7a600c338744963dc11b460fd9f9d52aa0d2.jpg.png
 樓主| 發表於 18-4-2020 20:40:41 | 顯示全部樓層
在下方的文本框內輸入自己的用戶名,然後按「確定」。
3602be51f3deb48f49994fb9e71f3a292ff578da.jpg.png
 樓主| 發表於 18-4-2020 20:41:28 | 顯示全部樓層
之後在「安全」選項卡中選中自己的用戶名,再勾選「完全控制」。
b875b8773912b31b8c86234e9118367ad8b4e1ec.jpg.png
 樓主| 發表於 18-4-2020 20:42:08 | 顯示全部樓層
本帖最後由 馬拉一個錘子 於 23-4-2020 01:06 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內置的行列與大易則是從Vista以來就毫無變化(也許兼容Metro App算個變化吧),大概是一堆祖傳代碼+微軟無人會用的原因吧。
628f2812b31bb051c4145a4f217adab44bede09a.jpg.png
您需要登錄後才可以回帖 登錄 | 注册

本版積分規則

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

GMT+8, 27-5-2020 08:27 PM , Processed in 0.186360 second(s), 25 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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