/* vi: set sw=4 ts=4: */ /* * CCE - Console Chinese Environment - * Copyright (C) 1998-2003 Rui He (rhe@3eti.com) * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY MAEDA ATUSI AND THE AUTHOR ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE TERRENCE R. LAMBERT BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * */ #include #include #include #include #include #include u_char *CurCoding[] = { "≮≯2022-JP≯","≮EUC-JP≯", "亂SJIS亃", "Big5", "【GB】", "【GBK】" ,"〖KSC〗", "〖KSC〗", /* UHC */ "[Unicode]", }; u_char *FullCharMap[] = { NULL, /* 0, */ " —∩◆○◇□∏∈∷■≤·【ˉ】0123456789¨〃°♂′々" "△ABCDEFGHIJKLMNOPQRSTUVWXYZ√±⊥“〔" "∑abcdefghijklmnopqrstuvwxyz⌒∶⊙× ", /* EUC-JP */ "丂両乭仈亹亾仌乫乮乯仏亄丆乚丏乛侽侾俀俁係俆俇俈俉俋丗丟亙亖亜丠" "仐俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿倀倁倂倃倄倅乲乢乴丱丵" "乪倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯倰倱倲倳倴倵倶倷倸乷乥乸乣 ", /* SJIS */ "〃…‘ˇ’∠⌒〓⒈⒉⒊⒋⒌⒍⒎⒏≌∽≈" "⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇①②③④⑤⑥⑦⑧⑨⑩€㈠㈡㈢㈣"/* */ "ˉ㈤㈥㈦㈧㈨㈩ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ 、° ", /* BIG5 */ " !”#$%&’()*+,-./0123456789:;<=>?" "@ABCDEFGHIJKLMNOPQRSTUVWXYZ〔\〕^_" "‘abcdefghijklmnopqrstuvwxyz{|}~ ", /* GB */ " !”#$%&’()*+,-./0123456789:;<=>?" "@ABCDEFGHIJKLMNOPQRSTUVWXYZ〔\〕^_" "‘abcdefghijklmnopqrstuvwxyz{|}~ ", /* GBK */ " !"#¥%&'()*+,-./0123456789:;<=>?" "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[‖]^_" "`abcdefghijklmnopqrstuvwxyz{|}… ", /* KSC */ " !"#¥%&'()*+,-./0123456789:;<=>?" "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[‖]^_" "`abcdefghijklmnopqrstuvwxyz{|}… ", /* UHC */ NULL /* Unicode */ }; char *InpNameStr[] = { "≮%s%s≯", /* ISO-JP */ "≮%s%s≯", /* EUC */ "亂%s%s亃", /* SJIS */ "%s%s", /* Big5 */ "【%s%s】", /* GB */ "【%s%s】", /* GBK */ "〖%s%s〗", /* KSC */ "〖%s%s〗", /* UHC */ " [%s%s] ", /* Unicode */ }; #if 0 char *HalfFullStr[][2] = { {"≮染%s≯", "≮链%s≯"}, /* ISO-JP */ {"≮染%s≯", "≮链%s≯"}, /* EUC */ {"亂敿%s亃", "亂慡%s亃"}, /* SJIS */ {"%s","%s"}, /* Big5 */ {"【半%s】","【全%s】"}, /* GB */ {"【半%s】","【全%s】"}, /* GBK */ {"〖阝%s〗","〖铒%s〗"}, /* KSC */ {"〖阝%s〗","〖铒%s〗"}, /* UHC */ {"[Half%s]","[Full%s]"}, /* Unicode */ }; char *ChinesePunctStr[][2] = { {",.", "。"}, /* ISO */ {",.", "。"}, /* EUC GB & JIS same code, 0xA1A3 */ {",.", "丅"}, /* SJIS */ {",.", ""}, /* Big5 "" */ {",.", "。"}, /* GB "," */ {",.", "。"}, /* GBK */ {",.", "。"}, /* KSC, KSC's period 0xA1A3 upper right? */ {",.", "。"}, /* UHC */ {",.", ",."}, /* Unicode */ }; #endif u_char HalfFullIcons[2][32] = { { 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x30, 0x00, 0x38, 0x00, 0x38, 0x00, 0x3C, 0x00, 0x7C, 0x00, 0x7C, 0x01, 0xFC, 0x1F, 0xFC, 0x0F, 0xF8, 0x07, 0xF0, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, }, { 0x00, 0x00, 0x00, 0x00, 0x07, 0xE0, 0x0F, 0xF0, 0x1F, 0xF8, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x1F, 0xF8, 0x0F, 0xF0, 0x07, 0xE0, 0x00, 0x00, 0x00, 0x00, }, }; u_char ChEngPunctIcons[2][32] = { { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x38, 0x3C, 0x38, 0x18, 0x18, 0x00, 0x10, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x1C, 0x66, 0x3E, 0x42, 0x3E, 0x42, 0x3E, 0x66, 0x1E, 0x3C, 0x0E, 0x00, 0x0C, 0x00, 0x38, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }, }; char *EngNumStr[] = { "≮毖眶%s≯%s", "≮毖眶%s≯%s", "亂塸悢%s亃%s", "璣计%s%s", /* big5 */ "【英数%s】%s", "【英数%s】%s", /* GB/GBK */ "〖缛猞%s〗%s", /* KSC */ "〖缛猞%s〗%s", /* UHC */ "[ENGNUM%s]%s", /* Unicode */ }; char *WindowStr[] = { "≮姜眉%d≯≮阗庚%d≯", "≮姜眉%d≯≮阗庚%d≯", "亂廔抂%d亃亂鈞岥%d亃", /* EUC, SJIS */ "沧狠%d怠%d", /* big 5 */ "【终端%d】【窗口%d】", "【终端%d】【窗口%d】", /* GB/GBK */ "〖瘥赢%d〗〖芒备%d〗", /* KSC no Window Hanzi in Korean? */ "〖瘥赢%d〗〖芒备%d〗", /* UHC no Window Hanzi in Korean? */ "[Term %d][Window %d]", /* Unicode */ }; char *LianXiangStr[] = { "牺鳞", "牺鳞", "楛憐", /* ISO, EUC, SJIS */ "羛稱", "联想", "联想", /* Big5 GB GBK */ "证咛", "证咛", /* KSC UHC */ "Asso", }; char *IntCode_CNameStr[] = { "柒恹", "柒恹", "撪狴", "ず絏", "内码", "内码", "耶丕", "耶丕", /* KSC UHC */ "InCode", /* Unicode */ }; char *Pinyin_CNameStr[] = { "靡不","靡不", "抭壒", /* Japanese Kanji has no "Pin" ? so I used Yin :) */ "醇", "智音","智音", "颡脲", "颡脲", /* Korean Hanzi has no Pin too? Used Yin */ "Pinyin", /* Unicode */ }; char *Zhuyin_CNameStr[] = { "混不","混不", "帉壒", /* Japanese Kanji has no "Pin" ? so I used Yin :) */ "迭", "词音", "词音", "掾脲", "掾脲", "Ciyin", /* Unicode */ }; char *ZhiyinKeyboardMapStr[] = { "Auto Keyboard (No Tone)", "Pinyin Keyboard (No Tone)", "ShuangPin Keyboard (No Tone)", "Standard Phone Keyboard (No Tone)", /* also called GuoQiao */ "Eten Phone Keyboard (No Tone)", "ChingYeah Phone Keyboard(No Tone)", "IBM Phone Keyboard(No Tone)", "ShenTong Phone Keyboard(No Tone)", "Eten26 Phone Keyboard (No Tone)", "Hsu25 Phone Keyboard (No Tone)", }; char *CiyinKeyboardMapStr[] = { "Auto Keyboard (Optional Tone)", "Pinyin Keyboard (Optional Tone -/=\\`)", "ShuangPin Keyboard(Optional Tone -/=\\`)", "Standard Phone Keyboard (Optional Tone)", "Eten Phone Keyboard (Optional Tone)", "ChingYeah Phone Keyboard (Optional Tone)", "IBM Phone Keyboard (Optional Tone)", "ShenTong Phone Keyboard(Optional Tone)", "Eten26 Phone Keyboard (Optional Tone)", "Hsu25 Phone Keyboard (Optional Tone)", }; Punct1 Punct1Str[] = { {'.', { "。", "。", "丅", "", "。", "。", "。", "。", } }, {',', { "·", "·", "丆", "", ",", ",", ",", ",", } }, {';', { "〃", "〃", "丟", "", ";", ";", ";", ";", } }, {':', { "¨", "¨", "丗", "", ":", ":", ":", ":", } }, {'?', { "々", "々", "丠", "", "?", "?", "?", "?", } }, {'(', { "∈", "∈", "乮", "", "(", "(", "(", "(", } }, {')', { "∷", "∷", "乯", "", ")", ")", ")", ")", } }, {'^', { "∧∧", "∧∧", "乧乧", "", "……", "……", "ˇ", "ˇ", } }, {'_', { "〗〗", "〗〗", "\x81\x5c\x81\x5c", "", "——", "——", "——", "——", } }, {'\\', { "、", "、", "丄", "", "、", "、", "、", "、", } }, {'@', { "ˇ", "ˇ", "丒", "", "·", "·", "·", "·", } }, {'&', { "〗", "〗", "\x81\x5c", "", "—", "—", "—", "—", } }, {'$', { "★", "★", "亸", "", "¥", "¥", "⊥", "⊥", } }, /* Big5 0xA244 is , 0xA243 is */ {'!', { "—", "—", "両", "", "!", "!", "!", "!", } }, { 0, }, /* dummy */ }; Punct2 Punct2Str[] = { /* KSC has no this punct? */ {'\"', 0, { { "∪", "∪", "乬", "¨", "“", "“", "“", "“", }, { "∩", "∩", "乭", "〃", "”", "”", "”", "”", } } }, {'\'', 0, { { "∑", "∑", "乪", "ˉ", "‘", "‘", "‘", "‘", } , { "∏", "∏", "乫", "ˇ", "’", "’", "’", "’", } } }, { 0, 0, } /* dummy */ }; Punct3 Punct3Str[] = { { { '<', '>' }, 0, { { { "≡", "≡", "乻", "", "《", "《", "《", "《", }, /* << */ { "∫", "∫", "乹", "", "〈", "〈", "〈", "〈", } }, { { "≌", "≌", "乼", "", "》","》", "》", "》", }, /* >> */ { "∮", "∮", "乺", "", "〉", "〉", "〉", "〉", } } } }, { { 0, 0 } }, };