]> git.jsancho.org Git - lugaru.git/blob - Source/WinInput.cpp
856bf12a6b601b2ea90dcc41036fdff4ff498c72
[lugaru.git] / Source / WinInput.cpp
1 /**> HEADER FILES <**/
2 #include "WinInput.h"
3 #include "String.h"
4
5 extern bool keyboardfrozen;
6 extern bool buttons[3];
7 /********************> IsKeyDown() <*****/
8 Boolean IsKeyDown( unsigned char *keyMap, unsigned short theKey )
9 {
10         if(keyboardfrozen)return 0;
11         if(theKey< 0x80 /*1000*/){
12                 static long     keyMapIndex;
13                 static Boolean  isKeyDown;
14                 static short    bitToCheck;
15
16                 // Calculate the key map index
17                 keyMapIndex = keyMap[theKey/8];
18
19                 // Calculate the individual bit to check
20                 bitToCheck = theKey%8;
21
22                 // Check the status of the key
23                 isKeyDown = ( keyMapIndex >> bitToCheck ) & 0x01;
24
25                 // Return the status of the key
26                 return isKeyDown;
27         }
28         else if(theKey==MAC_MOUSEBUTTON1)
29                 return buttons[0];
30         else if(theKey==MAC_MOUSEBUTTON2)
31                 return buttons[1];
32
33         return 0;
34 }
35
36 unsigned short  CharToKey(char* which)
37 {
38         // alphabetic keys
39         if(!stricmp(which,"a")){
40                 return MAC_A_KEY;
41         }
42         if(!stricmp(which,"b")){
43                 return MAC_B_KEY;
44         }
45         if(!stricmp(which,"c")){
46                 return MAC_C_KEY;
47         }
48         if(!stricmp(which,"d")){
49                 return MAC_D_KEY;
50         }
51         if(!stricmp(which,"e")){
52                 return MAC_E_KEY;
53         }
54         if(!stricmp(which,"f")){
55                 return MAC_F_KEY;
56         }
57         if(!stricmp(which,"g")){
58                 return MAC_G_KEY;
59         }
60         if(!stricmp(which,"h")){
61                 return MAC_H_KEY;
62         }
63         if(!stricmp(which,"i")){
64                 return MAC_I_KEY;
65         }
66         if(!stricmp(which,"j")){
67                 return MAC_J_KEY;
68         }
69         if(!stricmp(which,"k")){
70                 return MAC_K_KEY;
71         }
72         if(!stricmp(which,"l")){
73                 return MAC_L_KEY;
74         }
75         if(!stricmp(which,"m")){
76                 return MAC_M_KEY;
77         }
78         if(!stricmp(which,"n")){
79                 return MAC_N_KEY;
80         }
81         if(!stricmp(which,"o")){
82                 return MAC_O_KEY;
83         }
84         if(!stricmp(which,"p")){
85                 return MAC_P_KEY;
86         }
87         if(!stricmp(which,"q")){
88                 return MAC_Q_KEY;
89         }
90         if(!stricmp(which,"r")){
91                 return MAC_R_KEY;
92         }
93         if(!stricmp(which,"s")){
94                 return MAC_S_KEY;
95         }
96         if(!stricmp(which,"t")){
97                 return MAC_T_KEY;
98         }
99         if(!stricmp(which,"u")){
100                 return MAC_U_KEY;
101         }
102         if(!stricmp(which,"v")){
103                 return MAC_V_KEY;
104         }
105         if(!stricmp(which,"w")){
106                 return MAC_W_KEY;
107         }
108         if(!stricmp(which,"x")){
109                 return MAC_X_KEY;
110         }
111         if(!stricmp(which,"y")){
112                 return MAC_Y_KEY;
113         }
114         if(!stricmp(which,"z")){
115                 return MAC_Z_KEY;
116         }
117
118         // keypad keys
119         if(!stricmp(which,"KP0")){
120                 return MAC_NUMPAD_0_KEY;
121         }
122         if(!stricmp(which,"KP1")){
123                 return MAC_NUMPAD_1_KEY;
124         }
125         if(!stricmp(which,"KP2")){
126                 return MAC_NUMPAD_2_KEY;
127         }
128         if(!stricmp(which,"KP3")){
129                 return MAC_NUMPAD_3_KEY;
130         }
131         if(!stricmp(which,"KP4")){
132                 return MAC_NUMPAD_4_KEY;
133         }
134         if(!stricmp(which,"KP5")){
135                 return MAC_NUMPAD_5_KEY;
136         }
137         if(!stricmp(which,"KP6")){
138                 return MAC_NUMPAD_6_KEY;
139         }
140         if(!stricmp(which,"KP7")){
141                 return MAC_NUMPAD_7_KEY;
142         }
143         if(!stricmp(which,"KP8")){
144                 return MAC_NUMPAD_8_KEY;
145         }
146         if(!stricmp(which,"KP9")){
147                 return MAC_NUMPAD_9_KEY;
148         }
149
150         // enter
151         if(!stricmp(which,"enter")){
152                 return MAC_ENTER_KEY;
153         }
154
155         // number keys
156         if(!stricmp(which,"0")){
157                 return MAC_0_KEY;
158         }
159         if(!stricmp(which,"1")){
160                 return MAC_1_KEY;
161         }
162         if(!stricmp(which,"2")){
163                 return MAC_2_KEY;
164         }
165         if(!stricmp(which,"3")){
166                 return MAC_3_KEY;
167         }
168         if(!stricmp(which,"4")){
169                 return MAC_4_KEY;
170         }
171         if(!stricmp(which,"5")){
172                 return MAC_5_KEY;
173         }
174         if(!stricmp(which,"6")){
175                 return MAC_6_KEY;
176         }
177         if(!stricmp(which,"7")){
178                 return MAC_7_KEY;
179         }
180         if(!stricmp(which,"8")){
181                 return MAC_8_KEY;
182         }
183         if(!stricmp(which,"9")){
184                 return MAC_9_KEY;
185         }
186
187         // function keys
188         if(!stricmp(which,"F1")){
189                 return MAC_F1_KEY;
190         }
191         if(!stricmp(which,"F2")){
192                 return MAC_F2_KEY;
193         }
194         if(!stricmp(which,"F3")){
195                 return MAC_F3_KEY;
196         }
197         if(!stricmp(which,"F4")){
198                 return MAC_F4_KEY;
199         }
200         if(!stricmp(which,"F5")){
201                 return MAC_F5_KEY;
202         }
203         if(!stricmp(which,"F6")){
204                 return MAC_F6_KEY;
205         }
206         if(!stricmp(which,"F7")){
207                 return MAC_F7_KEY;
208         }
209         if(!stricmp(which,"F8")){
210                 return MAC_F8_KEY;
211         }
212         if(!stricmp(which,"F9")){
213                 return MAC_F9_KEY;
214         }
215         if(!stricmp(which,"F10")){
216                 return MAC_F10_KEY;
217         }
218         if(!stricmp(which,"F11")){
219                 return MAC_F11_KEY;
220         }
221         if(!stricmp(which,"F12")){
222                 return MAC_F12_KEY;
223         }
224
225         // escape
226         if(!stricmp(which,"escape")){
227                 return MAC_ESCAPE_KEY;
228         }
229         if(!stricmp(which,"backspace")){
230                 return MAC_DELETE_KEY;
231         }
232         if(!stricmp(which,"tab")){
233                 return MAC_TAB_KEY;
234         }
235         if(!stricmp(which,"`")){
236                 return MAC_TILDE_KEY;
237         }
238         if(!stricmp(which,"caps_lock")){
239                 return MAC_CAPS_LOCK_KEY;
240         }
241 //      if(which==){
242 //              return "";
243 //      }
244         if(!stricmp(which,"command")){
245                 return MAC_COMMAND_KEY;
246         }
247         if(!stricmp(which,"option")){
248                 return MAC_OPTION_KEY;
249         }
250         if(!stricmp(which,"delete")){
251                 return MAC_DEL_KEY;
252         }
253         if(!stricmp(which,"insert")){
254                 return MAC_INSERT_KEY;
255         }
256         if(!stricmp(which,"home")){
257                 return MAC_HOME_KEY;
258         }
259         if(!stricmp(which,"end")){
260                 return MAC_END_KEY;
261         }
262         if(!stricmp(which,"page_up")){
263                 return MAC_PAGE_UP_KEY;
264         }
265         if(!stricmp(which,"page_down")){
266                 return MAC_PAGE_DOWN_KEY;
267         }
268         if(!stricmp(which,"clear")){
269                 return MAC_NUMPAD_CLEAR_KEY;
270         }
271
272         if(!stricmp(which,"control")){
273                 return MAC_CONTROL_KEY;
274         }
275         if(!stricmp(which,"return")){
276                 return MAC_RETURN_KEY;
277         }
278         if(!stricmp(which,"space")){
279                 return MAC_SPACE_KEY;
280         }
281         if(!stricmp(which,"shift")){
282                 return MAC_SHIFT_KEY;
283         }
284         if(!stricmp(which,"uparrow")){
285                 return MAC_ARROW_UP_KEY;
286         }
287         if(!stricmp(which,"downarrow")){
288                 return MAC_ARROW_DOWN_KEY;
289         }
290         if(!stricmp(which,"leftarrow")){
291                 return MAC_ARROW_LEFT_KEY;
292         }
293         if(!stricmp(which,"rightarrow")){
294                 return MAC_ARROW_RIGHT_KEY;
295         }
296         if(!stricmp(which,"mouse1")){
297                 return MAC_MOUSEBUTTON1;
298         }
299         if(!stricmp(which,"mouse2")){
300                 return MAC_MOUSEBUTTON2;
301         }
302         if(!stricmp(which,"+")){
303                 return MAC_NUMPAD_PLUS_KEY;
304         }
305         if(!stricmp(which,"*")){
306                 return MAC_NUMPAD_ASTERISK_KEY;
307         }
308         if(!stricmp(which,"/")){
309                 return MAC_SLASH_KEY;
310         }
311         if(!stricmp(which,"\\")){
312                 return MAC_BACKSLASH_KEY;
313         }
314         if(!stricmp(which,"[")){
315                 return MAC_LEFTBRACKET_KEY;
316         }
317         if(!stricmp(which,"]")){
318                 return MAC_RIGHTBRACKET_KEY;
319         }
320         if(!stricmp(which,".")){
321                 return MAC_PERIOD_KEY;
322         }
323         if(!stricmp(which,",")){
324                 return MAC_COMMA_KEY;
325         }
326         if(!stricmp(which,"\"")){
327                 return MAC_APOSTROPHE_KEY;
328         }
329         if(!stricmp(which,";")){
330                 return MAC_SEMICOLON_KEY;
331         }
332         return UNKNOWN_KEY;
333 }
334
335 char*   KeyToChar(unsigned short which)
336 {
337         static int i;
338
339         // alphabetic keys
340         if(which==MAC_A_KEY){
341                 return "a";
342         }
343         if(which==MAC_B_KEY){
344                 return "b";
345         }
346         if(which==MAC_C_KEY){
347                 return "c";
348         }
349         if(which==MAC_D_KEY){
350                 return "d";
351         }
352         if(which==MAC_E_KEY){
353                 return "e";
354         }
355         if(which==MAC_F_KEY){
356                 return "f";
357         }
358         if(which==MAC_G_KEY){
359                 return "g";
360         }
361         if(which==MAC_H_KEY){
362                 return "h";
363         }
364         if(which==MAC_I_KEY){
365                 return "i";
366         }
367         if(which==MAC_J_KEY){
368                 return "j";
369         }
370         if(which==MAC_K_KEY){
371                 return "k";
372         }
373         if(which==MAC_L_KEY){
374                 return "l";
375         }
376         if(which==MAC_M_KEY){
377                 return "m";
378         }
379         if(which==MAC_N_KEY){
380                 return "n";
381         }
382         if(which==MAC_O_KEY){
383                 return "o";
384         }
385         if(which==MAC_P_KEY){
386                 return "p";
387         }
388         if(which==MAC_Q_KEY){
389                 return "q";
390         }
391         if(which==MAC_R_KEY){
392                 return "r";
393         }
394         if(which==MAC_S_KEY){
395                 return "s";
396         }
397         if(which==MAC_T_KEY){
398                 return "t";
399         }
400         if(which==MAC_U_KEY){
401                 return "u";
402         }
403         if(which==MAC_V_KEY){
404                 return "v";
405         }
406         if(which==MAC_W_KEY){
407                 return "w";
408         }
409         if(which==MAC_X_KEY){
410                 return "x";
411         }
412         if(which==MAC_Y_KEY){
413                 return "y";
414         }
415         if(which==MAC_Z_KEY){
416                 return "z";
417         }
418
419         // keypad keys
420         if(which==MAC_NUMPAD_1_KEY){
421                 return "KP1";
422         }
423         if(which==MAC_NUMPAD_2_KEY){
424                 return "KP2";
425         }
426         if(which==MAC_NUMPAD_3_KEY){
427                 return "KP3";
428         }
429         if(which==MAC_NUMPAD_4_KEY){
430                 return "KP4";
431         }
432         if(which==MAC_NUMPAD_5_KEY){
433                 return "KP5";
434         }
435         if(which==MAC_NUMPAD_6_KEY){
436                 return "KP6";
437         }
438         if(which==MAC_NUMPAD_7_KEY){
439                 return "KP7";
440         }
441         if(which==MAC_NUMPAD_8_KEY){
442                 return "KP8";
443         }
444         if(which==MAC_NUMPAD_9_KEY){
445                 return "KP9";
446         }
447         if(which==MAC_NUMPAD_0_KEY){
448                 return "KP0";
449         }
450
451         // enter
452         if(which==MAC_ENTER_KEY){
453                 return "enter";
454         }
455
456         // number keys
457         if(which==MAC_1_KEY){
458                 return "1";
459         }
460         if(which==MAC_2_KEY){
461                 return "2";
462         }
463         if(which==MAC_3_KEY){
464                 return "3";
465         }
466         if(which==MAC_4_KEY){
467                 return "4";
468         }
469         if(which==MAC_5_KEY){
470                 return "5";
471         }
472         if(which==MAC_6_KEY){
473                 return "6";
474         }
475         if(which==MAC_7_KEY){
476                 return "7";
477         }
478         if(which==MAC_8_KEY){
479                 return "8";
480         }
481         if(which==MAC_9_KEY){
482                 return "9";
483         }
484         if(which==MAC_0_KEY){
485                 return "0";
486         }
487
488         // function keys
489         if(which==MAC_F1_KEY){
490                 return "F1";
491         }
492         if(which==MAC_F2_KEY){
493                 return "F2";
494         }
495         if(which==MAC_F3_KEY){
496                 return "F3";
497         }
498         if(which==MAC_F4_KEY){
499                 return "F4";
500         }
501         if(which==MAC_F5_KEY){
502                 return "F5";
503         }
504         if(which==MAC_F6_KEY){
505                 return "F6";
506         }
507         if(which==MAC_F7_KEY){
508                 return "F7";
509         }
510         if(which==MAC_F8_KEY){
511                 return "F8";
512         }
513         if(which==MAC_F9_KEY){
514                 return "F9";
515         }
516         if(which==MAC_F10_KEY){
517                 return "F10";
518         }
519         if(which==MAC_F11_KEY){
520                 return "F11";
521         }
522         if(which==MAC_F12_KEY){
523                 return "F12";
524         }
525
526         // escape
527         if(which==MAC_ESCAPE_KEY){
528                 return "escape";
529         }
530         if(which==MAC_DELETE_KEY){
531                 return "backspace";
532         }
533         if(which==MAC_TAB_KEY){
534                 return "tab";
535         }
536         if(which==MAC_TILDE_KEY){
537                 return "`";
538         }
539         if(which==MAC_CAPS_LOCK_KEY){
540                 return "caps_lock";
541         }
542         if(which==MAC_COMMAND_KEY){
543                 return "command";
544         }
545         if(which==MAC_OPTION_KEY){
546                 return "option";
547         }
548         if(which==MAC_DEL_KEY){
549                 return "delete";
550         }
551         if(which==MAC_INSERT_KEY){
552                 return "insert";
553         }
554         if(which==MAC_HOME_KEY){
555                 return "home";
556         }
557         if(which==MAC_END_KEY){
558                 return "end";
559         }
560         if(which==MAC_PAGE_UP_KEY){
561                 return "page_up";
562         }
563         if(which==MAC_PAGE_DOWN_KEY){
564                 return "page_down";
565         }
566         if(which==MAC_NUMPAD_CLEAR_KEY){
567                 return "clear";
568         }
569         if(which==MAC_CONTROL_KEY){
570                 return "control";
571         }
572         if(which==MAC_SPACE_KEY){
573                 return "space";
574         }
575         if(which==MAC_RETURN_KEY){
576                 return "return";
577         }
578         if(which==MAC_SHIFT_KEY){
579                 return "shift";
580         }
581         if(which==MAC_ARROW_UP_KEY){
582                 return "uparrow";
583         }
584         if(which==MAC_ARROW_DOWN_KEY){
585                 return "downarrow";
586         }
587         if(which==MAC_ARROW_LEFT_KEY){
588                 return "leftarrow";
589         }
590         if(which==MAC_ARROW_RIGHT_KEY){
591                 return "rightarrow";
592         }
593         if(which==MAC_MOUSEBUTTON1){
594                 return "mouse1";
595         }
596         if(which==MAC_MOUSEBUTTON2){
597                 return "mouse2";
598         }
599         if(which==MAC_ARROW_RIGHT_KEY){
600                 return "rightarrow";
601         }
602         if(which==MAC_MINUS_KEY||which==MAC_NUMPAD_MINUS_KEY){
603                 return "-";
604         }
605         if(which==MAC_PLUS_KEY||which==MAC_NUMPAD_EQUALS_KEY){
606                 return "=";
607         }
608         if(which==MAC_NUMPAD_PLUS_KEY){
609                 return "+";
610         }
611         if(which==MAC_NUMPAD_ASTERISK_KEY){
612                 return "*";
613         }
614         if(which==MAC_SLASH_KEY||which==MAC_NUMPAD_SLASH_KEY){
615                 return "/";
616         }
617         if(which==MAC_BACKSLASH_KEY){
618                 return "\\";
619         }
620         if(which==MAC_LEFTBRACKET_KEY){
621                 return "[";
622         }
623         if(which==MAC_RIGHTBRACKET_KEY){
624                 return "]";
625         }
626         if(which==MAC_PERIOD_KEY||which==MAC_NUMPAD_PERIOD_KEY){
627                 return ".";
628         }
629         if(which==MAC_COMMA_KEY){
630                 return ",";
631         }
632         if(which==MAC_APOSTROPHE_KEY){
633                 return "\"";
634         }
635         if(which==MAC_SEMICOLON_KEY){
636                 return ";";
637         }
638         return "unknown";
639 }
640
641 char    KeyToSingleChar(unsigned short which)
642 {
643         static int i;
644
645         if(which==MAC_A_KEY){
646                 return 'a';
647         }
648         if(which==MAC_B_KEY){
649                 return 'b';
650         }
651         if(which==MAC_C_KEY){
652                 return 'c';
653         }
654         if(which==MAC_D_KEY){
655                 return 'd';
656         }
657         if(which==MAC_E_KEY){
658                 return 'e';
659         }
660         if(which==MAC_F_KEY){
661                 return 'f';
662         }
663         if(which==MAC_G_KEY){
664                 return 'g';
665         }
666         if(which==MAC_H_KEY){
667                 return 'h';
668         }
669         if(which==MAC_I_KEY){
670                 return 'i';
671         }
672         if(which==MAC_J_KEY){
673                 return 'j';
674         }
675         if(which==MAC_K_KEY){
676                 return 'k';
677         }
678         if(which==MAC_L_KEY){
679                 return 'l';
680         }
681         if(which==MAC_M_KEY){
682                 return 'm';
683         }
684         if(which==MAC_N_KEY){
685                 return 'n';
686         }
687         if(which==MAC_O_KEY){
688                 return 'o';
689         }
690         if(which==MAC_P_KEY){
691                 return 'p';
692         }
693         if(which==MAC_Q_KEY){
694                 return 'q';
695         }
696         if(which==MAC_R_KEY){
697                 return 'r';
698         }
699         if(which==MAC_S_KEY){
700                 return 's';
701         }
702         if(which==MAC_T_KEY){
703                 return 't';
704         }
705         if(which==MAC_U_KEY){
706                 return 'u';
707         }
708         if(which==MAC_V_KEY){
709                 return 'v';
710         }
711         if(which==MAC_W_KEY){
712                 return 'w';
713         }
714         if(which==MAC_X_KEY){
715                 return 'x';
716         }
717         if(which==MAC_Y_KEY){
718                 return 'y';
719         }
720         if(which==MAC_Z_KEY){
721                 return 'z';
722         }
723         if(which==MAC_NUMPAD_1_KEY){
724                 return '1';
725         }
726         if(which==MAC_NUMPAD_2_KEY){
727                 return '2';
728         }
729         if(which==MAC_NUMPAD_3_KEY){
730                 return '3';
731         }
732         if(which==MAC_NUMPAD_4_KEY){
733                 return '4';
734         }
735         if(which==MAC_NUMPAD_5_KEY){
736                 return '5';
737         }
738         if(which==MAC_NUMPAD_6_KEY){
739                 return '6';
740         }
741         if(which==MAC_NUMPAD_7_KEY){
742                 return '7';
743         }
744         if(which==MAC_NUMPAD_8_KEY){
745                 return '8';
746         }
747         if(which==MAC_NUMPAD_9_KEY){
748                 return '9';
749         }
750         if(which==MAC_NUMPAD_0_KEY){
751                 return '0';
752         }
753         if(which==MAC_1_KEY){
754                 return '1';
755         }
756         if(which==MAC_2_KEY){
757                 return '2';
758         }
759         if(which==MAC_3_KEY){
760                 return '3';
761         }
762         if(which==MAC_4_KEY){
763                 return '4';
764         }
765         if(which==MAC_5_KEY){
766                 return '5';
767         }
768         if(which==MAC_6_KEY){
769                 return '6';
770         }
771         if(which==MAC_7_KEY){
772                 return '7';
773         }
774         if(which==MAC_8_KEY){
775                 return '8';
776         }
777         if(which==MAC_9_KEY){
778                 return '9';
779         }
780         if(which==MAC_0_KEY){
781                 return '0';
782         }
783         if(which==MAC_SPACE_KEY){
784                 return ' ';
785         }
786         if(which==MAC_MINUS_KEY||which==MAC_NUMPAD_MINUS_KEY){
787                 return '-';
788         }
789         if(which==MAC_PLUS_KEY||which==MAC_NUMPAD_EQUALS_KEY){
790                 return '=';
791         }
792         if(which==MAC_NUMPAD_PLUS_KEY){
793                 return '+';
794         }
795         if(which==MAC_NUMPAD_ASTERISK_KEY){
796                 return '*';
797         }
798         if(which==MAC_SLASH_KEY||which==MAC_NUMPAD_SLASH_KEY){
799                 return '/';
800         }
801         if(which==MAC_BACKSLASH_KEY){
802                 return '\\';
803         }
804         if(which==MAC_LEFTBRACKET_KEY){
805                 return '[';
806         }
807         if(which==MAC_RIGHTBRACKET_KEY){
808                 return ']';
809         }
810         if(which==MAC_PERIOD_KEY||which==MAC_NUMPAD_PERIOD_KEY){
811                 return '.';
812         }
813         if(which==MAC_COMMA_KEY){
814                 return ',';
815         }
816         if(which==MAC_APOSTROPHE_KEY){
817                 return '\'';
818         }
819         if(which==MAC_SEMICOLON_KEY){
820                 return ';';
821         }
822         return '\0';
823 }
824
825 char    Shift(char which)
826 {
827         static int i;
828
829         if(which=='a'){
830                 return 'A';
831         }
832         if(which=='b'){
833                 return 'B';
834         }
835         if(which=='c'){
836                 return 'C';
837         }
838         if(which=='d'){
839                 return 'D';
840         }
841         if(which=='e'){
842                 return 'E';
843         }
844         if(which=='f'){
845                 return 'F';
846         }
847         if(which=='g'){
848                 return 'G';
849         }
850         if(which=='h'){
851                 return 'H';
852         }
853         if(which=='e'){
854                 return 'E';
855         }
856         if(which=='f'){
857                 return 'F';
858         }
859         if(which=='g'){
860                 return 'G';
861         }
862         if(which=='h'){
863                 return 'H';
864         }
865         if(which=='i'){
866                 return 'I';
867         }
868         if(which=='j'){
869                 return 'J';
870         }
871         if(which=='k'){
872                 return 'K';
873         }
874         if(which=='l'){
875                 return 'L';
876         }
877         if(which=='m'){
878                 return 'M';
879         }
880         if(which=='n'){
881                 return 'N';
882         }
883         if(which=='o'){
884                 return 'O';
885         }
886         if(which=='p'){
887                 return 'P';
888         }
889         if(which=='q'){
890                 return 'Q';
891         }
892         if(which=='r'){
893                 return 'R';
894         }
895         if(which=='s'){
896                 return 'S';
897         }
898         if(which=='t'){
899                 return 'T';
900         }
901         if(which=='u'){
902                 return 'U';
903         }
904         if(which=='v'){
905                 return 'V';
906         }
907         if(which=='w'){
908                 return 'W';
909         }
910         if(which=='x'){
911                 return 'X';
912         }
913         if(which=='y'){
914                 return 'Y';
915         }
916         if(which=='z'){
917                 return 'Z';
918         }
919         if(which=='1'){
920                 return '!';
921         }
922         if(which=='2'){
923                 return '@';
924         }
925         if(which=='3'){
926                 return '#';
927         }
928         if(which=='4'){
929                 return '$';
930         }
931         if(which=='5'){
932                 return '%';
933         }
934         if(which=='6'){
935                 return '^';
936         }
937         if(which=='7'){
938                 return '&';
939         }
940         if(which=='8'){
941                 return '*';
942         }
943         if(which=='9'){
944                 return '(';
945         }
946         if(which=='0'){
947                 return ')';
948         }
949         if(which=='-'){
950                 return '_';
951         }
952         if(which=='='){
953                 return '+';
954         }
955         if(which=='['){
956                 return '{';
957         }
958         if(which==']'){
959                 return '}';
960         }
961         if(which=='\\'){
962                 return '|';
963         }
964         if(which=='.'){
965                 return '>';
966         }
967         if(which==','){
968                 return '<';
969         }
970         if(which=='/'){
971                 return '?';
972         }
973         if(which==';'){
974                 return ':';
975         }
976         if(which=='\''){
977                 return '\"';
978         }
979         return which;
980 }
981
982 bool    Compare(char *thestring, char *tocompare, int start, int end)
983 {
984         static int i;
985         for(i=start;i<=end;i++){
986                 if(thestring[i]!=tocompare[i-start]&&thestring[i]!=tocompare[i-start]+'A'-'a')return 0;
987         }
988         return 1;
989 }