BBS水木清华站∶精华区

发信人: yorkwu@ms4.hinet.net (), 看板: Linux 
标  题: 如何让chdrv能用倚天式的注音 
发信站: DCI HiNet (Sat Mar 15 16:11:35 1997) 
转信站: sobee!netnews.ntu!news.mcu!news.cs.nthu!news.cis.nctu!news-peer.nctu!n 
 
                             
        终於成功的把chdrv的注音换倚天了... 
        耗时良久说... 想做的人照以下去做: 
 
1. 抓chdrv的source,解开 
2. 将phone.c里 
 
static char phone_v[] = "1QAZ2WSXEDCRFV5TGBYHN"; 
static char phone_j1[] = "UJM"; 
static char phone_j2[] = "8IK,9OL.0P;/-"; 
static char phone_k[] = "7 634"; 
 
        改成 
 
static char phone_v[] = "BPMFDTNLVKHG7C,./J;'S"; 
static char phone_j1[] = "EXU"; 
static char phone_j2[] = "AORWIQZY890-="; 
static char phone_k[] = "1 234"; 
 
3. 然後跑後列的程式(kc2et.c),造出phone.et.def 
4. 以phone.et.def取代phone.def 
5. make install                      
 
 
就可以试试了...应该没什麽问题才对...有的话请通知我... 
 
--------------------------cut here!------------------------------- 
/* et2kc.c -- 将chdrv的phone.def改倚天式排法 */ 
/* By York Wu, 1997 version 0.9 */ 
 
#include<stdio.h> 
#include<stdlib.h> 
 
struct convtbli{ 
        char src; 
        char tgt; 
}; 
 
struct convtbli ConvTbl[]={ 
        {'h',   '\''}, 
        {'c',   'h'}, 
        {'v',   'c'}, 
        {'e',   'v'}, 
        {'u',   'e'}, 
        {'m',   'u'},                
        {'a',   'm'}, 
        {'8',   'a'}, 
        {'0',   '8'}, 
        {';',   '0'}, 
        {'y',   ';'}, 
        {'.',   'y'}, 
        {'t',   '.'}, 
        {'w',   't'}, 
        {',',   'w'}, 
        {'5',   ','}, 
        {'-',   '='}, 
        {'/',   '-'}, 
        {'g',   '/'}, 
        {'r',   'g'}, 
        {'k',   'r'}, 
        {'d',   'k'}, 
        {'2',   'd'}, 
        {'6',   '2'}, 
        {'o',   'q'}, 
        {'i',   'o'}, 
        {'9',   'i'}, 
        {'p',   '9'},                         
        {'q',   'p'}, 
        {'7',   '1'}, 
        {'f',   '7'}, 
        {'z',   'f'}, 
        {'l',   'z'}, 
        {'x',   'l'}, 
        {'j',   'x'}, 
        {'b',   'j'}, 
        {'1',   'b'}, 
        {'s',   'n'}, 
        {'n',   's'}, 
        {'\0',  '\0'}}; 
 
void tbl_xchg(char *p) 

        int i; 
        for(i=0;ConvTbl[i].src != '\0';i++) 
                if(*p==ConvTbl[i].src){ 
                        *p=ConvTbl[i].tgt; 
                        break; 
                } 
}                                              
 
void proc_line(char *s) 

        int i;                       
        for(i=0;i<4;i++)        /* 注音最多四符 */ 
                tbl_xchg(s+i); 

 
main() 

        char srcf[]="phone.def",destf[]="phone.et.def"; 
        char line[81]; 
        FILE *fps,*fpd; 
 
        if((fps=fopen(srcf,"rt"))==NULL){ 
                perror("Cannot find phone.def"); 
                exit(1); 
        } 
        if((fpd=fopen(destf,"wt"))==NULL){ 
                perror("Cannot create output file"); 
                exit(1); 
        }                      
        while(fgets(line,80,fps)!=NULL){ 
                proc_line(line); 
                fputs(line,fpd); 
        } 
        if(!feof(fps)){ 
                perror("There's an error:"); 
                exit(1); 
        } else { 
                fclose(fps); 
                fclose(fpd); 
        } 
}                     
 
 
-- 
o=|====> yorkwu@ms4.hinet.net 

BBS水木清华站∶精华区