/*++ Copyright (c) 1995-1999 Microsoft Corporation, All Rights Reserved Module Name: DATA.C ++*/ #include #include #include "imedefs.h" #pragma data_seg(".ShareDate") IMEG sImeG = {0}; MBINDEX MBIndex = {0}; #ifdef UNICODE TCHAR SKLayout[NumsSK][MAXSOFTKEYS] = { #ifdef KEYSTICKER #ifdef CHAJEI 0x3000, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x65E5, 0x6708, 0x91D1, 0x6728, 0x6C34, 0x706B, 0x571F, 0x7AF9, 0x6208, 0x5341, 0x5927, 0x4E2D, 0x4E00, 0x5F13, 0x4EBA, 0x5FC3, 0x624B, 0x53E3, 0x5C38, 0x5EFF, 0x5C71, 0x5973, 0x7530, 0x96E3, 0x535C, 0xFF3A, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, #else //if PHON 0x3000, 0x3122, 0x3105, 0x3109, 0x02C7, 0x02CB, 0x3113, 0x02CA, 0x02D9, 0x311A, 0x311E, 0x3107, 0x3116, 0x310F, 0x310E, 0x310D, 0x3111, 0x3115, 0x3118, 0x311B, 0x3128, 0x311C, 0x3120, 0x3129, 0x3119, 0x311F, 0x3123, 0x3106, 0x3110, 0x310B, 0x3114, 0x3127, 0x3112, 0x310A, 0x310C, 0x3117, 0x3108, 0x3124, 0x0020, 0x311D, 0x3126, 0x3121, 0x3125, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, #endif //CHAJEI #else //KEYSTICKER 0x3000, 0xFF10, 0xFF11, 0xFF12, 0xFF13, 0xFF14, 0xFF15, 0xFF16, 0xFF17, 0xFF18, 0xFF19, 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF47, 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, 0xFF4F, 0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57, 0xFF58, 0xFF59, 0xFF5A, 0xFF1B, 0xFF1D, 0xFF0C, 0xFF0D, 0xFF0E, 0xFF0F, 0xFF40, 0xFF3B, 0xFF3C, 0xFF3D, 0xFF07, #endif //KEYSTICKER 0x3000, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x03BA, 0x03C7, 0x03C5, 0x03BC, 0x03B3, 0x03BD, 0x03BE, 0x03BF, 0x03B8, 0x03C0, 0x03C1, 0x0020, 0x03C9, 0x03C8, 0x03B9, 0x0020, 0x03B1, 0x03B4, 0x03BB, 0x03B5, 0x03B7, 0x03C6, 0x03B2, 0x03C4, 0x03B6, 0x03C3, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x3000, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x043B, 0x044A, 0x0448, 0x043D, 0x0432, 0x043E, 0x043F, 0x0440, 0x0436, 0x0441, 0x0442, 0x0443, 0x044C, 0x044B, 0x0437, 0x0438, 0x0430, 0x0433, 0x043C, 0x0434, 0x0451, 0x0449, 0x0431, 0x0447, 0x0435, 0x0446, 0x0444, 0x0020, 0x044D, 0x0020, 0x044E, 0x044F, 0x0020, 0x0439, 0x0020, 0x043A, 0x0445, 0x3000, 0x3122, 0x3105, 0x3109, 0x02C7, 0x02CB, 0x3113, 0x02CA, 0x02D9, 0x311A, 0x311E, 0x3107, 0x3116, 0x310F, 0x310E, 0x310D, 0x3111, 0x3115, 0x3118, 0x311B, 0x3128, 0x311C, 0x3120, 0x3129, 0x3119, 0x311F, 0x3123, 0x3106, 0x3110, 0x310B, 0x3114, 0x3127, 0x3112, 0x310A, 0x310C, 0x3117, 0x3108, 0x3124, 0x0020, 0x311D, 0x3126, 0x3121, 0x3125, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x3000, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0113, 0x0020, 0x01D4, 0x011B, 0x01CE, 0x00E8, 0x0020, 0x012B, 0x01D2, 0x00ED, 0x01D0, 0x00EC, 0x01D8, 0x01D6, 0x00F2, 0x0020, 0x0101, 0x00E0, 0x00E9, 0x0020, 0x00F3, 0x00F9, 0x00E1, 0x00FA, 0x014D, 0x016B, 0x0020, 0x0020, 0x01DA, 0x0020, 0x01DC, 0x00FC, 0x0020, 0x00EA, 0x0020, 0x0020, 0x0020, 0x3000, 0x0020, 0x3043, 0x3045, 0x3047, 0x3049, 0x304B, 0x304D, 0x304F, 0x3051, 0x3053, 0x306A, 0x3082, 0x3080, 0x306C, 0x3059, 0x306D, 0x306E, 0x306F, 0x3064, 0x3072, 0x3075, 0x3078, 0x3085, 0x3083, 0x3063, 0x3066, 0x3055, 0x305B, 0x306B, 0x305D, 0x3061, 0x3081, 0x3057, 0x307F, 0x305F, 0x307E, 0x307B, 0x0020, 0x3087, 0x3093, 0x308E, 0x3092, 0x3041, 0x3068, 0x0020, 0x3090, 0x3091, 0x3000, 0x30B1, 0x30A3, 0x30A5, 0x30F4, 0x30A7, 0x30A9, 0x30AB, 0x30F5, 0x30AD, 0x30AF, 0x30CA, 0x30E2, 0x30E0, 0x30CC, 0x30B9, 0x30CD, 0x30CE, 0x30CF, 0x30C4, 0x30D2, 0x30D5, 0x30D8, 0x30E5, 0x30E3, 0x30C3, 0x30C6, 0x30B5, 0x30BB, 0x30CB, 0x30BD, 0x30C1, 0x30E1, 0x30B7, 0x30DF, 0x30BF, 0x30DE, 0x30DB, 0x30B3, 0x30E7, 0x30F6, 0x30EE, 0x30F2, 0x30A1, 0x30C8, 0x30F3, 0x30F0, 0x30F1, 0x3000, 0x02C9, 0xFF0C, 0x3001, 0xFF1B, 0xFF1A, 0xFF1F, 0xFF01, 0x2026, 0x2014, 0x00B7, 0x3014, 0xFF08, 0x3010, 0x3008, 0x201C, 0x3009, 0x300A, 0x300B, 0x2236, 0x300C, 0x300D, 0x300E, 0xFF3B, 0xFF09, 0xFF02, 0xFF07, 0x2018, 0x201D, 0x3015, 0x3005, 0x2016, 0x3011, 0x2019, 0x3017, 0xFF5E, 0x3016, 0x300F, 0x00A8, 0xFF3D, 0x02C7, 0xFF5B, 0xFF5D, 0x3002, 0xFF40, 0x3003, 0xFF5C, 0xFF0E, 0x3000, 0x216A, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x3220, 0x2478, 0x2476, 0x3222, 0x248A, 0x3223, 0x3224, 0x3225, 0x248F, 0x3226, 0x3227, 0x3228, 0x247A, 0x2479, 0x2490, 0x2491, 0x2488, 0x248B, 0x3221, 0x248C, 0x248E, 0x2477, 0x2489, 0x2475, 0x248D, 0x2474, 0x3229, 0x0020, 0x247B, 0x216B, 0x247C, 0x247D, 0x2160, 0x0020, 0x0020, 0x0020, 0x0020, 0x3000, 0x0020, 0x2261, 0x2260, 0xFF1D, 0x2264, 0x2265, 0xFF1C, 0xFF1E, 0x226E, 0x226F, 0x2227, 0x2299, 0x2220, 0x2211, 0xFF0D, 0x220F, 0x222A, 0x2229, 0x222B, 0x2208, 0x0020, 0x2235, 0x223D, 0x224C, 0x222E, 0x221D, 0x00B1, 0x00D7, 0x2228, 0x00F7, 0x0020, 0x2312, 0xFF0B, 0x2225, 0xFF0F, 0x22A5, 0x2234, 0x0020, 0x0020, 0x2237, 0x221A, 0x0020, 0x2248, 0x221E, 0x0020, 0x0020, 0x0020, 0x3000, 0x00A4, 0x00B0, 0x2032, 0x2033, 0xFF04, 0xFFE1, 0xFFE5, 0x2030, 0xFF05, 0x2103, 0x767E, 0x0020, 0x6BEB, 0x4E07, 0x4E8C, 0x4EBF, 0x5146, 0x5409, 0x4E03, 0x592A, 0x62CD, 0x827E, 0x0020, 0x0020, 0x516B, 0x4E5D, 0x25CB, 0x4E09, 0x5343, 0x56DB, 0x516D, 0x5FAE, 0x4E00, 0x5398, 0x4E94, 0x5206, 0x0020, 0x0020, 0x0020, 0xFFE0, 0x0020, 0x0020, 0x0020, 0x5341, 0x0020, 0x0020, 0x0020, 0x3000, 0x2504, 0x250D, 0x250E, 0x250F, 0x2510, 0x2511, 0x2512, 0x2513, 0x0020, 0x2500, 0x252C, 0x2540, 0x253E, 0x252E, 0x251E, 0x252F, 0x2530, 0x2531, 0x2523, 0x2532, 0x2533, 0x0020, 0x2542, 0x2541, 0x0020, 0x2502, 0x251C, 0x251F, 0x252D, 0x2520, 0x2522, 0x253F, 0x251D, 0x253D, 0x2521, 0x253C, 0x0020, 0x0020, 0x2543, 0x2508, 0x0020, 0x0020, 0x250C, 0x2506, 0x0020, 0x250A, 0x0020, 0x3000, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x25A0, 0xFF3E, 0xFF20, 0x25B2, 0x2606, 0x203B, 0x2192, 0x2190, 0x25C7, 0x2191, 0x2193, 0x3013, 0xFFE3, 0xFF3F, 0x25C6, 0x25A1, 0x00A7, 0x2605, 0x25B3, 0x25CB, 0x25CE, 0xFF3C, 0x2116, 0xFF06, 0x25CF, 0xFF03, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, }; TCHAR SKLayoutS[NumsSK][MAXSOFTKEYS] = { #ifdef KEYSTICKER 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, #else 0x3000, 0xFF09, 0xFF01, 0xFF20, 0xFF03, 0xFF04, 0xFF05, 0xFF3E, 0xFF06, 0xFF0A, 0xFF08, 0xFF21, 0xFF22, 0xFF23, 0xFF24, 0xFF25, 0xFF26, 0xFF27, 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F, 0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34, 0xFF35, 0xFF36, 0xFF37, 0xFF38, 0xFF39, 0xFF3A, 0xFF1A, 0xFF0B, 0xFF1C, 0xFF3F, 0xFF1E, 0xFF1F, 0xFF5E, 0xFF5B, 0xFF5C, 0xFF5D, 0xFF02, #endif //KEYSTICKER 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x039A, 0x03A7, 0x03A5, 0x039C, 0x0393, 0x039D, 0x039E, 0x039F, 0x0398, 0x03A0, 0x03A1, 0x0020, 0x03A9, 0x03A8, 0x0399, 0x0020, 0x0391, 0x0394, 0x039B, 0x0395, 0x0397, 0x03A6, 0x0392, 0x03A4, 0x0396, 0x03A3, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x041B, 0x042A, 0x0428, 0x041D, 0x0412, 0x041E, 0x041F, 0x0420, 0x0416, 0x0421, 0x0422, 0x0423, 0x042C, 0x042B, 0x0417, 0x0418, 0x0410, 0x0413, 0x041C, 0x0414, 0x0401, 0x0429, 0x0411, 0x0427, 0x0415, 0x0426, 0x0424, 0x0020, 0x042D, 0x0020, 0x042E, 0x042F, 0x0020, 0x0419, 0x0020, 0x041A, 0x0425, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x3044, 0x3046, 0x3048, 0x304A, 0x304C, 0x304E, 0x3050, 0x3052, 0x3054, 0x3071, 0x308D, 0x308B, 0x3077, 0x305A, 0x307A, 0x307D, 0x3070, 0x3065, 0x3073, 0x3076, 0x3079, 0x3086, 0x3084, 0x0020, 0x3067, 0x3056, 0x305C, 0x3074, 0x305E, 0x3062, 0x308C, 0x3058, 0x308A, 0x3060, 0x3089, 0x307C, 0x0020, 0x3088, 0x0020, 0x308F, 0x0020, 0x3042, 0x3069, 0x0020, 0x0020, 0x0020, 0x0020, 0x30B2, 0x30A4, 0x30A6, 0x0020, 0x30A8, 0x30AA, 0x30AC, 0x0020, 0x30AE, 0x30B0, 0x30D1, 0x30ED, 0x30EB, 0x30D7, 0x30BA, 0x30DA, 0x30DD, 0x30D0, 0x30C5, 0x30D3, 0x30D6, 0x30D9, 0x30E6, 0x30E4, 0x0020, 0x30C7, 0x30B6, 0x30BC, 0x30D4, 0x30BE, 0x30C2, 0x30EC, 0x30B8, 0x30EA, 0x30C0, 0x30E9, 0x30DC, 0x30B4, 0x30E8, 0x0020, 0x30EF, 0x0020, 0x30A2, 0x30C9, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x2460, 0x2482, 0x2480, 0x2462, 0x2494, 0x2463, 0x2464, 0x2465, 0x2499, 0x2466, 0x2467, 0x2468, 0x2484, 0x2483, 0x249A, 0x249B, 0x2492, 0x2495, 0x2461, 0x2496, 0x2498, 0x2481, 0x2493, 0x247F, 0x2497, 0x247E, 0x2469, 0x0020, 0x2485, 0x0020, 0x2486, 0x2487, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x4F70, 0x0020, 0x0020, 0x0020, 0x8D30, 0x0020, 0x0020, 0x0020, 0x67D2, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x634C, 0x7396, 0x96F6, 0x53C1, 0x4EDF, 0x8086, 0x9646, 0x0020, 0x58F9, 0x0020, 0x4F0D, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x62FE, 0x0020, 0x0020, 0x0020, 0x0020, 0x2505, 0x2515, 0x2516, 0x2517, 0x2518, 0x2519, 0x251A, 0x251B, 0x0020, 0x2501, 0x2534, 0x2548, 0x2546, 0x2536, 0x2526, 0x2537, 0x2538, 0x2539, 0x252B, 0x253A, 0x253B, 0x0020, 0x254A, 0x2549, 0x0020, 0x2503, 0x2524, 0x2527, 0x2535, 0x2528, 0x252A, 0x2547, 0x2525, 0x2545, 0x2529, 0x2544, 0x0020, 0x0020, 0x254B, 0x2509, 0x0020, 0x0020, 0x2514, 0x2507, 0x0020, 0x250B, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, }; #else BYTE SKLayout[NumsSK][MAXSOFTKEYS*2] = { #ifdef KEYSTICKER #ifdef CHAJEI "  日月金木水火土竹戈十大中一弓人心手口尸廿山女田難卜Z "), #else //if PHON " ㄢㄅㄉˇˋㄓˊ˙ㄚㄞㄇㄖㄏㄎㄍㄑㄕㄘㄛㄨㄜㄠㄩㄙㄟㄣㄆㄐㄋㄔㄧㄒㄊㄌㄗㄈㄤ ㄝㄦㄡㄥ ", #endif //CHAJEI #else //KEYSTICKER " 0123456789abcdefghijklmnopqrstuvwxyz;=,-./`[\]'", #endif //KEYSTICKER "  κχυμγνξοθπρ ωψι αδλεηφβτζσ ", "  лъшнвопржстуьызиагмдёщбчецф э юя й кх", " ㄢㄅㄉˇˋㄓˊ˙ㄚㄞㄇㄖㄏㄎㄍㄑㄕㄘㄛㄨㄜㄠㄩㄙㄟㄣㄆㄐㄋㄔㄧㄒㄊㄌㄗㄈㄤ ㄝㄦㄡㄥ ", // " ㄦㄉ ㄓ ㄚㄞㄢㄇㄖㄏㄎㄍㄑㄕㄘㄛㄨㄜㄠㄩㄙㄟㄣㄆㄐㄋㄔㄧㄒㄊ ㄗㄈㄤ ㄝ ㄡㄥㄅ ", "  ē ǔěǎè īǒíǐìǘǖò āàé óùáúōū ǚ ǜü ê ", "  ぃぅぇぉかきくけこなもむぬすねのはつひふへゅゃってさせにそちめしみたまほ ょんゎをぁと ゐゑ", " ケィゥヴェォカヵキクナモムヌスネノハツヒフヘュャッテサセニソチメシミタマホコョヶヮヲァトンヰヱ", " ˉ,、;:?!…—·〔(【〈“〉《》∶「」『[)"'‘”〕々‖】’〗~〖』¨]ˇ{}。`〃|.", " ⅪⅡⅢⅣⅤⅥⅦⅧⅨⅩ㈠⑸⑶㈢⒊㈣㈤㈥⒏㈦㈧㈨⑺⑹⒐⒑⒈⒋㈡⒌⒎⑷⒉⑵⒍⑴㈩ ⑻Ⅻ⑼⑽Ⅰ ", "  ≡≠=≤≥<>≮≯∧⊙∠∑-∏∪∩∫∈ ∵∽≌∮∝±×∨÷ ⌒+∥/⊥∴ ∷√ ≈∞ ", " ¤°′″$£¥‰%℃百 毫万二亿兆吉七太拍艾 八九○三千四六微一厘五分 ¢ 十 ", " ┄┍┎┏┐┑┒┓ ─┬╀┾┮┞┯┰┱┣┲┳ ╂╁ │├┟┭┠┢┿┝┽┡┼ ╃┈ ┌┆ ┊ ", "  ■^@▲☆※→←◇↑↓〓 ̄_◆□§★△○◎\№&●# ", }; BYTE SKLayoutS[NumsSK][MAXSOFTKEYS*2] = { #ifdef KEYSTICKER " ", #else " )!@#$%^&*(ABCDEFGHIJKLMNOPQRSTUVWXYZ:+<_>?~{|}"", #endif //KEYSTICKER " ΚΧΥΜΓΝΞΟΘΠΡ ΩΨΙ ΑΔΛΕΗΦΒΤΖΣ ", " ЛЪШНВОПРЖСТУЬЫЗИАГМДЁЩБЧЕЦФ Э ЮЯ Й КХ", " ", " ", " いうえおがぎぐげごぱろるぷずぺぽぼづびぶべゆや でざぜぴぞぢれじりだらぼ よ わ あど ", " ゲイウ エオガ ギグパロルプズペポバヅビブベユヤ デザゼピゾヂレジリダラボゴヨ ワ アド ", " ", " ①⒂⒀③⒔④⑤⑥⒙⑦⑧⑨⒄⒃⒚⒛⒒⒕②⒖⒘⒁⒓⑿⒗⑾⑩ ⒅ ⒆⒇ ", " ", " 佰 贰 柒 扒玖零叁仟肆陆 壹 伍 拾 ", " ┅┕┖┗┘┙┚┛ ━┴╈╆┶┦┷┸┹┫┺┻ ╊╉ ┃┤┧┵┨┪╇┥╅┩╄ ╋┉ └┇ ┋ ", " ", }; #endif //UNICODE #pragma data_seg() // TCHAR CWCodeStr[13] = {0}; TCHAR CWDBCSStr[41] = {0}; HWND hCrtDlg = NULL; UINT uStartComp = 0; UINT uOpenCand = 0; UINT uCaps = 0; DWORD SaTC_Trace; UINT UI_CANDSTR = 300; HINSTANCE hInst; IMEL sImeL; LPIMEL lpImeL = NULL; TCHAR szImeMBFileName[MAX_PATH] = TEXT(""); TCHAR szUIClassName[CLASS_LEN] = TEXT(""); TCHAR szCompClassName[CLASS_LEN] = TEXT(""); TCHAR szCandClassName[CLASS_LEN] = TEXT(""); TCHAR szStatusClassName[CLASS_LEN] = TEXT(""); TCHAR szCMenuClassName[CLASS_LEN]; TCHAR szSoftkeyMenuClassName[CLASS_LEN]; TCHAR szOrgName[NAMESIZE/2] = TEXT(""); TCHAR szVerInfo[NAMESIZE] = TEXT(""); TCHAR szHandCursor[] = TEXT("Hand"); TCHAR szChinese[] = TEXT("Chinese"); TCHAR szCZ[] = TEXT("CZ"); #ifdef UNICODE WCHAR szCandInf1[] = { 0x0020, 0x0020, 0x0053, 0x0068, 0x0069, 0x0066, 0x0074, 0x0020, 0x002B, 0x0020, 0x6570, 0x5B57, 0x952E, 0x0000 }; WCHAR szCandInf2[] = { 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x6570, 0x5B57, 0x952E, 0x0000 }; #else TCHAR szCandInf1[] = TEXT(" Shift + 数字键"); TCHAR szCandInf2[] = TEXT(" 数字键"); #endif TCHAR szEnglish[] = TEXT("English"); TCHAR szImeName[] = TEXT("ImeName"); TCHAR szCode[] = TEXT("Code"); TCHAR szEudc[] = TEXT("Eudc"); TCHAR szFullShape[] = TEXT("FullShape"); TCHAR szHalfShape[] = TEXT("HalfShape"); TCHAR szSymbol[] = TEXT("Symbol"); TCHAR szNoSymbol[] = TEXT("NoSymbol"); TCHAR szNone[] = TEXT("None"); TCHAR szSoftKBD[] = TEXT("SoftKBD"); TCHAR szNoSoftKBD[] = TEXT("NoSoftKBD"); TCHAR szDigit[] = TEXT("01234567890"); #ifdef UNICODE WCHAR szTrace[] = { 0x5149, 0x6807, 0x8DDF, 0x968F, 0x0000 }; WCHAR szWarnTitle[] = { 0x8B66, 0x544A, 0x0000 }; WCHAR szErrorTitle[] = { 0x9519, 0x8BEF, 0x0000 }; #else TCHAR szTrace[]= TEXT("光标跟随"); TCHAR szWarnTitle[]=TEXT("警告"); TCHAR szErrorTitle[]=TEXT("错误"); #endif // convert char to upper case BYTE bUpper[] = { 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F, '`', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' }; TCHAR szRegIMESetting[] = TEXT("Control Panel\\Input Method"); TCHAR szPara[] = TEXT("Parallel Distance"); TCHAR szPerp[] = TEXT("Perpendicular Distance"); TCHAR szParaTol[] = TEXT("Parallel Tolerance"); TCHAR szPerpTol[] = TEXT("Perpendicular Tolerance"); #if defined(CROSSREF) #ifdef UNICODE WCHAR szRegRevKL[] = { 0x7F16, 0x7801, 0x67E5, 0x8BE2, 0x0000 }; WCHAR szRegRevMaxKey[] = { 0x7F16, 0x7801, 0x67E5, 0x8BE2, 0x7801, 0x957F, 0x0000 }; #else TCHAR szRegRevKL[] = TEXT("编码查询"); TCHAR szRegRevMaxKey[] = TEXT("编码查询码长"); #endif #endif //CROSSREF #if defined(EUDC) TCHAR szRegEudcDictName[] = TEXT("EUDCDictName"); TCHAR szRegEudcMapFileName[] = TEXT("EUDCMapFileName"); #endif // decide UI offset base on escapement const NEARCARET ncUIEsc[] = { // LogFontX LogFontY ParaX PerpX ParaY PerpY { 0, 1, 1, 0, 0, 1}, // 0 { 1, 0, 0, 1, 1, 0}, // 900 { 0, 0, -1, 0, 0, 1}, // 1800 {-1, 0, 0, -1, -1, 0} // 2700 }; // decide another UI offset base on escapement const NEARCARET ncAltUIEsc[] = { // LogFontX LogFontY ParaX PerpX ParaY PerpY { 0, 0, 1, 0, 0, -1}, // 0 { 0, 0, 0, -1, 1, 0}, // 900 { 0, 0, -1, 0, 0, -1}, // 1800 { 0, 0, 0, 1, -1, 0} // 2700 }; // decide input rectangle base on escapement const POINT ptInputEsc[] = { // LogFontWi LogFontHi {1, 1}, // 0 {1, -1}, // 900 {1, 1}, // 1800 {-1, 1} // 2700 }; // decide another input rectangle base on escapement const POINT ptAltInputEsc[] = { // LogFontWi LogFontHi {1, -1}, // 0 {-1, -1}, // 900 {1, -1}, // 1800 {1, 1} // 2700 }; BYTE VirtKey48Map[MAXSOFTKEYS] = { 0x20, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xdb, 0xdc, 0xdd, 0xde }; #ifdef KEYSTICKER #ifdef CHAJEI TCHAR KeyIndexTbl[INDEXNUM] = { TEXT('a'), TEXT('b'), TEXT('c'), TEXT('d'), TEXT('e'), TEXT('f'), TEXT('g'), TEXT('h'), TEXT('i'), TEXT('j'), TEXT('k'), TEXT('l'), TEXT('m'), TEXT('n'), TEXT('o'), TEXT('p'), TEXT('q'), TEXT('r'), TEXT('s'), TEXT('t'), TEXT('u'), TEXT('v'), TEXT('w'), TEXT('x'), TEXT('y'), TEXT('z')}; #ifdef UNICODE WCHAR MapKeySticker_a[] = { 0x65E5, 0x0000 }; WCHAR MapKeySticker_b[] = { 0x6708, 0x0000 }; WCHAR MapKeySticker_c[] = { 0x91D1, 0x0000 }; WCHAR MapKeySticker_d[] = { 0x6728, 0x0000 }; WCHAR MapKeySticker_e[] = { 0x6C34, 0x0000 }; WCHAR MapKeySticker_f[] = { 0x706B, 0x0000 }; WCHAR MapKeySticker_g[] = { 0x571F, 0x0000 }; WCHAR MapKeySticker_h[] = { 0x7AF9, 0x0000 }; WCHAR MapKeySticker_i[] = { 0x6208, 0x0000 }; WCHAR MapKeySticker_j[] = { 0x5341, 0x0000 }; WCHAR MapKeySticker_k[] = { 0x5927, 0x0000 }; WCHAR MapKeySticker_l[] = { 0x4E2D, 0x0000 }; WCHAR MapKeySticker_m[] = { 0x4E00, 0x0000 }; WCHAR MapKeySticker_n[] = { 0x5F13, 0x0000 }; WCHAR MapKeySticker_o[] = { 0x4EBA, 0x0000 }; WCHAR MapKeySticker_p[] = { 0x5FC3, 0x0000 }; WCHAR MapKeySticker_q[] = { 0x624B, 0x0000 }; WCHAR MapKeySticker_r[] = { 0x53E3, 0x0000 }; WCHAR MapKeySticker_s[] = { 0x5C38, 0x0000 }; WCHAR MapKeySticker_t[] = { 0x5EFF, 0x0000 }; WCHAR MapKeySticker_u[] = { 0x5C71, 0x0000 }; WCHAR MapKeySticker_v[] = { 0x5973, 0x0000 }; WCHAR MapKeySticker_w[] = { 0x7530, 0x0000 }; WCHAR MapKeySticker_x[] = { 0x96E3, 0x0000 }; WCHAR MapKeySticker_y[] = { 0x535C, 0x0000 }; WCHAR MapKeySticker_z[] = { 0xFF3A, 0x0000 }; LPWSTR MapKeyStickerTbl[INDEXNUM] = { MapKeySticker_a, MapKeySticker_b, MapKeySticker_c, MapKeySticker_d, MapKeySticker_e, MapKeySticker_f, MapKeySticker_g, MapKeySticker_h, MapKeySticker_i, MapKeySticker_j, MapKeySticker_k, MapKeySticker_l, MapKeySticker_m, MapKeySticker_n, MapKeySticker_o, MapKeySticker_p, MapKeySticker_q, MapKeySticker_r, MapKeySticker_s, MapKeySticker_t, MapKeySticker_u, MapKeySticker_v, MapKeySticker_w, MapKeySticker_x, MapKeySticker_y, MapKeySticker_z }; #else LPTSTR MapKeyStickerTbl[INDEXNUM] = { TEXT("日"), TEXT("月"), TEXT("金"), TEXT("木"), TEXT("水"), TEXT("火"), TEXT("土"), TEXT("竹"), TEXT("戈"), TEXT("十"), TEXT("大"), TEXT("中"), TEXT("一"), TEXT("弓"), TEXT("人"), TEXT("心"), TEXT("手"), TEXT("口"), TEXT("尸"), TEXT("廿"), TEXT("山"), TEXT("女"), TEXT("田"), TEXT("難"), TEXT("卜"), TEXT("Z")}; #endif // UNICODE #endif // CHAJEI #ifdef PHON TCHAR KeyIndexTbl[INDEXNUM] = { TEXT('a'), TEXT('b'), TEXT('c'), TEXT('d'), TEXT('e'), TEXT('f'), TEXT('g'), TEXT('h'), TEXT('i'), TEXT('j'), TEXT('k'), TEXT('l'), TEXT('m'), TEXT('n'), TEXT('o'), TEXT('p'), TEXT('q'), TEXT('r'), TEXT('s'), TEXT('t'), TEXT('u'), TEXT('v'), TEXT('w'), TEXT('x'), TEXT('y'), TEXT('z'), TEXT('1'), TEXT('2'), TEXT('3'), TEXT('4'), TEXT('5'), TEXT('6'), TEXT('7'), TEXT('8'), TEXT('9'), TEXT('0'), TEXT('-'), TEXT('='), TEXT('\\'),TEXT('['), TEXT(']'), TEXT(';'), TEXT('\''),TEXT(','), TEXT('.'), TEXT('/')}; #ifdef UNICODE WCHAR MapKeySticker_a[] = { 0x3107, 0x0000 }; WCHAR MapKeySticker_b[] = { 0x3116, 0x0000 }; WCHAR MapKeySticker_c[] = { 0x310F, 0x0000 }; WCHAR MapKeySticker_d[] = { 0x310E, 0x0000 }; WCHAR MapKeySticker_e[] = { 0x310D, 0x0000 }; WCHAR MapKeySticker_f[] = { 0x3111, 0x0000 }; WCHAR MapKeySticker_g[] = { 0x3115, 0x0000 }; WCHAR MapKeySticker_h[] = { 0x3118, 0x0000 }; WCHAR MapKeySticker_i[] = { 0x311B, 0x0000 }; WCHAR MapKeySticker_j[] = { 0x3128, 0x0000 }; WCHAR MapKeySticker_k[] = { 0x311C, 0x0000 }; WCHAR MapKeySticker_l[] = { 0x3120, 0x0000 }; WCHAR MapKeySticker_m[] = { 0x3129, 0x0000 }; WCHAR MapKeySticker_n[] = { 0x3119, 0x0000 }; WCHAR MapKeySticker_o[] = { 0x311F, 0x0000 }; WCHAR MapKeySticker_p[] = { 0x3123, 0x0000 }; WCHAR MapKeySticker_q[] = { 0x3106, 0x0000 }; WCHAR MapKeySticker_r[] = { 0x3110, 0x0000 }; WCHAR MapKeySticker_s[] = { 0x310B, 0x0000 }; WCHAR MapKeySticker_t[] = { 0x3114, 0x0000 }; WCHAR MapKeySticker_u[] = { 0x3127, 0x0000 }; WCHAR MapKeySticker_v[] = { 0x3112, 0x0000 }; WCHAR MapKeySticker_w[] = { 0x310A, 0x0000 }; WCHAR MapKeySticker_x[] = { 0x310C, 0x0000 }; WCHAR MapKeySticker_y[] = { 0x3117, 0x0000 }; WCHAR MapKeySticker_z[] = { 0x3108, 0x0000 }; WCHAR MapKeySticker_1[] = { 0x3105, 0x0000 }; WCHAR MapKeySticker_2[] = { 0x3109, 0x0000 }; WCHAR MapKeySticker_3[] = { 0x02C7, 0x0000 }; WCHAR MapKeySticker_4[] = { 0x02CB, 0x0000 }; WCHAR MapKeySticker_5[] = { 0x3113, 0x0000 }; WCHAR MapKeySticker_6[] = { 0x02CA, 0x0000 }; WCHAR MapKeySticker_7[] = { 0x02D9, 0x0000 }; WCHAR MapKeySticker_8[] = { 0x311A, 0x0000 }; WCHAR MapKeySticker_9[] = { 0x311E, 0x0000 }; WCHAR MapKeySticker_0[] = { 0x3122, 0x0000 }; WCHAR MapKeySticker_MINUS[] = { 0x3126, 0x0000 }; WCHAR MapKeySticker_EQUAL[] = { 0x0000, 0x0000 }; WCHAR MapKeySticker_BSLASH[] = { 0x0000, 0x0000 }; WCHAR MapKeySticker_LBRACKET[] = { 0x0000 }; WCHAR MapKeySticker_RBRACKET[] = { 0x0000 }; WCHAR MapKeySticker_SEMICLN[] = { 0x3124, 0x0000 }; WCHAR MapKeySticker_QUOTE[] = { 0x0000 }; WCHAR MapKeySticker_COMMA[] = { 0x311D, 0x0000 }; WCHAR MapKeySticker_DOT[] = { 0x3121, 0x0000 }; WCHAR MapKeySticker_SLASH[] = { 0x3125, 0x0000 }; LPWSTR MapKeyStickerTbl[INDEXNUM] = { MapKeySticker_a, MapKeySticker_b, MapKeySticker_c, MapKeySticker_d, MapKeySticker_e, MapKeySticker_f, MapKeySticker_g, MapKeySticker_h, MapKeySticker_i, MapKeySticker_j, MapKeySticker_k, MapKeySticker_l, MapKeySticker_m, MapKeySticker_n, MapKeySticker_o, MapKeySticker_p, MapKeySticker_q, MapKeySticker_r, MapKeySticker_s, MapKeySticker_t, MapKeySticker_u, MapKeySticker_v, MapKeySticker_w, MapKeySticker_x, MapKeySticker_y, MapKeySticker_z, MapKeySticker_1, MapKeySticker_2, MapKeySticker_3, MapKeySticker_4, MapKeySticker_5, MapKeySticker_6, MapKeySticker_7, MapKeySticker_8, MapKeySticker_9, MapKeySticker_0, MapKeySticker_MINUS, MapKeySticker_EQUAL, MapKeySticker_BSLASH, MapKeySticker_LBRACKET, MapKeySticker_RBRACKET, MapKeySticker_SEMICLN, MapKeySticker_QUOTE, MapKeySticker_COMMA, MapKeySticker_DOT, MapKeySticker_SLASH }; #else LPTSTR MapKeyStickerTbl[INDEXNUM] = { TEXT("ㄇ"), TEXT("ㄖ"), TEXT("ㄏ"), TEXT("ㄎ"), TEXT("ㄍ"), TEXT("ㄑ"), TEXT("ㄕ"), TEXT("ㄘ"), TEXT("ㄛ"), TEXT("ㄨ"), TEXT("ㄜ"), TEXT("ㄠ"), TEXT("ㄩ"), TEXT("ㄙ"), TEXT("ㄟ"), TEXT("ㄣ"), TEXT("ㄆ"), TEXT("ㄐ"), TEXT("ㄋ"), TEXT("ㄔ"), TEXT("ㄧ"), TEXT("ㄒ"), TEXT("ㄊ"), TEXT("ㄌ"), TEXT("ㄗ"), TEXT("ㄈ"), TEXT("ㄅ"), TEXT("ㄉ"), TEXT("ˇ"), TEXT("ˋ"), TEXT("ㄓ"), TEXT("ˊ"), TEXT("˙"), TEXT("ㄚ"), TEXT("ㄞ"), TEXT("ㄢ"), TEXT("ㄦ"), TEXT(""), TEXT(""), TEXT(""), TEXT(""), TEXT("ㄤ"), TEXT(""), TEXT("ㄝ"), TEXT("ㄡ"), TEXT("ㄥ")}; #endif // UNICODE #endif // PHON #endif //KEYSTICKER