实验室新搞了一台iMac,没有支持新世纪的码表的中文输入法啊。搜索半天大家推荐用Rime(鼠须管)来挂接新世纪码表。不知道还有没有其它支持外挂码表的Mac版输入法,暂时只有搞这个了。看了一下别人已经做出来的新世纪码表,怕跟自己常用的不习惯,所以准备在他们的配置文件基础上,用自己的码表文件代替。可以极点、小小等用的码表是先码后字的方式,即:
a 工 戈
aa 工 式
aaa 工
aaaa 工 恭恭敬敬
aaad 工期
而Rime用的是先字后码的方式:
工 a
戈 a
工 aa
式 aa
工 aaa
工 aaaa
所以只能自己转一下了,大致说一下过程:
1.将你现在用的码表打开,随便用支持大文件的文件编辑器就好,我用的Emeditor,然后复制[DATA]以下的实际编码到excel粘贴。
2.在excel里粘贴后一行是一个单元格,用“分列”功能,以空格把原一列的数据分成多列,第1列为编码,后面的可能有多列的汉字。
3.新建一个sheet,默认名字是sheet2,前面粘贴的一般为sheet1,如果你的excel默认启动就是3个sheet的话,就不用了。
4.在excel里按alt+f11,打开vba编辑器,粘贴如下代码:
1 Sub GetRimeDict() 2 Dim i As Long, j As Long, n As Long 3 Dim sht As Worksheet 4 Set sht = Sheets("sheet1") 5 Dim sht1 As Worksheet 6 Set sht1 = Sheets("sheet2") 7 With sht 8 i = 1 9 n = 1 10 Do While Len(.Cells(i, 1).Value) > 0 11 j = 2 12 Do While Len(.Cells(i, j).Value) > 0 13 sht1.Cells(n, 1) = .Cells(i, j) 14 sht1.Cells(n, 2) = .Cells(i, 1) 15 j = j + 1 16 n = n + 1 17 Loop 18 i = i + 1 19 Loop 20 21 End With 22 23 End Sub 24 25 Sub GenTxt() 26 Dim i As Long 27 Dim sht1 As Worksheet 28 Set sht1 = Sheets("sheet2") 29 Dim sql As String 30 sql = "" 31 i = 1 32 Do While Len(sht1.Cells(i, 1).Value) > 0 33 sql = sql & sht1.Cells(i, 1) & Chr(9) & sht1.Cells(i, 2) & Chr(10) 34 i = i + 1 35 Loop 36 37 SaveFile sql, "c:\xsj_rime.txt" 38 End Sub 39 40 Sub SaveFile(sql As String, fileName As String) 41 '-------------------------------------------------------------- 42 '功 能:保存语句,若已存在文件则直接追加,若文件不存在在先新建. 43 '作 者:erqie 44 '制作日期:2009-08-24 45 '修订日期: 46 'ForReading 1 以只读方式打开文件。 不能写这个文件。 47 'ForWriting 2 以写方式打开文件 48 'ForAppending 8 打开文件并从文件末尾开始写。 49 '-------------------------------------------------------------- 50 Dim fso, MyFile 51 Set fso = CreateObject("Scripting.FileSystemObject") 52 If (fso.fileExists(fileName)) Then 53 '参数8表示在文件末尾追加写入 54 Set MyFile = fso.OpenTextFile(fileName, 8) 55 'fso.Delete (fileName) 56 57 Else 58 'ture表示覆盖创建 59 Set MyFile = fso.CreateTextFile(fileName, ture) 60 End If 61 MyFile.writeline (sql) 62 MyFile.Close 63 Set fso = Nothing 64 Set MyFile = Nothing 65 End Sub
然后把光标定位在GetRimeDict函数里,按f5运行后,在sheet2里生成新的码表。
然后把光标定位在GenTxt函数里运行,后会在C盘下生成转换后的码表。此后就可以复制到Rime的码表文件里替换原来的汉字编码了。