]> asedeno.scripts.mit.edu Git - PuTTY.git/blob - xlat.c
Silly mistake - restore-cursor-pos doesn't make sure the cursor
[PuTTY.git] / xlat.c
1 #include <windows.h>
2 #include <stdio.h>
3 #include "putty.h"
4
5 static unsigned char win2koi[] =
6 {
7       0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
8      16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
9      32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
10      48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
11      64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
12      80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
13      96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
14     112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
15     128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
16     144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
17     160,161,162,163,164,189,166,167,179,169,180,171,172,173,174,183,
18     176,177,182,166,173,181,182,183,163,185,164,187,188,189,190,167,
19     225,226,247,231,228,229,246,250,233,234,235,236,237,238,239,240,
20     242,243,244,245,230,232,227,254,251,253,255,249,248,252,224,241,
21     193,194,215,199,196,197,214,218,201,202,203,204,205,206,207,208,
22     210,211,212,213,198,200,195,222,219,221,223,217,216,220,192,209
23 };
24
25 static unsigned char koi2win[] =
26 {
27       0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
28      16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
29      32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
30      48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
31      64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
32      80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
33      96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
34     112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
35     128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
36     144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
37     160,161,162,184,186,165,179,191,168,169,170,171,172,180,174,175,
38     176,177,178,168,170,181,178,175,184,185,186,187,188,165,190,191,
39     254,224,225,246,228,229,244,227,245,232,233,234,235,236,237,238,
40     239,255,240,241,242,243,230,226,252,251,231,248,253,249,247,250,
41     222,192,193,214,196,197,212,195,213,200,201,202,203,204,205,206,
42     207,223,208,209,210,211,198,194,220,219,199,216,221,217,215,218
43 };
44
45 static unsigned char xlatWIN1250toISO88592[] =
46 {
47       0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
48      16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
49      32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
50      48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
51      64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
52      80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
53      96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
54     112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
55     128,129, 39,131, 34, 46,124,124,136, 47,169, 60,166,171,174,172,
56     144, 96, 39, 34, 34, 42, 45, 45,152, 84,185, 62,182,187,190,188,
57     160,183,162,163,164,161,124,167,168, 99,170, 34, 39,173, 82,175,
58     176, 63,178,179,180,117,182,255,184,177,186, 34,165,189,181,191,
59     192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
60     208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
61     224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
62     240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
63 };
64
65 static unsigned char xlatISO88592toWIN1250[] =
66 {
67       0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
68      16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
69      32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
70      48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
71      64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
72      80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
73      96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
74     112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
75     128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
76     144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
77     160,165,162,163,164,188,140,167,168,138,170,141,143,173,142,175,
78     176,185,178,179,180,190,156,161,184,154,186,157,159,189,158,191,
79     192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
80     208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
81     224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
82     240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
83 };
84
85 unsigned char xlat_kbd2tty(unsigned char c)
86 {
87     if(cfg.xlat_enablekoiwin)
88         return win2koi[c];
89     else if (cfg.xlat_88592w1250)
90         return xlatWIN1250toISO88592[c];
91     return c;
92 }
93
94 unsigned char xlat_tty2scr(unsigned char c)
95 {
96     if(cfg.xlat_enablekoiwin)
97         return koi2win[c];
98     else if (cfg.xlat_88592w1250)
99         return xlatISO88592toWIN1250[c];
100     return c;
101 }
102
103
104 static unsigned char latkbd2_win[]=
105 {
106       0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
107      16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
108      32, 33,221, 35, 36, 37, 38,253, 40, 41, 42,178,225,186,254, 46,
109      48, 49, 50, 51, 52, 53, 54, 55, 56, 57,198,230,193,179,222, 44,
110      64,212,200,209,194,211,192,207,208,216,206,203,196,220,210,217,
111     199,201,202,219,197,195,204,214,215,205,223,245,191,250, 94,170,
112      96,244,232,241,226,243,224,239,240,248,238,235,228,252,242,249,
113     231,233,234,251,229,227,236,246,247,237,255,213,175,218,126,127,
114     128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
115     144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
116     160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
117     176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
118     192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
119     208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
120     224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
121     240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
122 };
123
124 unsigned char xlat_latkbd2win(unsigned char  c)
125 {
126     if(cfg.xlat_capslockcyr)
127         return latkbd2_win[c];
128     return c;
129 }