]> git.jsancho.org Git - lugaru.git/blob - Source/MacInput.cpp
Added GPL license and headers.
[lugaru.git] / Source / MacInput.cpp
1 /*
2 Copyright (C) 2003, 2010 - Wolfire Games
3
4 This file is part of Lugaru.
5
6 Lugaru is free software; you can redistribute it and/or
7 modify it under the terms of the GNU General Public License
8 as published by the Free Software Foundation; either version 2
9 of the License, or (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
14
15 See the GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
20 */
21
22 /**> HEADER FILES <**/
23 #include "MacInput.h"
24 #include "String.h"
25
26 extern bool keyboardfrozen;
27
28 /********************> IsKeyDown() <*****/
29 Boolean IsKeyDown( unsigned char *keyMap, unsigned short theKey )
30 {
31         if(keyboardfrozen)return 0;
32
33         static long     keyMapIndex;
34         static Boolean  isKeyDown;
35         static short    bitToCheck;
36         
37         // Calculate the key map index
38         keyMapIndex = keyMap[theKey/8];
39         
40         // Calculate the individual bit to check
41         bitToCheck = theKey%8;
42         
43         // Check the status of the key
44         isKeyDown = ( keyMapIndex >> bitToCheck ) & 0x01;
45         
46         // Return the status of the key
47         return isKeyDown;
48         
49 }
50
51 unsigned short  CharToKey(char* which)
52 {
53         if(!strcmp(which,"a")){
54                 return MAC_A_KEY;
55         }
56         if(!strcmp(which,"b")){
57                 return MAC_B_KEY;
58         }
59         if(!strcmp(which,"c")){
60                 return MAC_C_KEY;
61         }
62         if(!strcmp(which,"d")){
63                 return MAC_D_KEY;
64         }
65         if(!strcmp(which,"e")){
66                 return MAC_E_KEY;
67         }
68         if(!strcmp(which,"f")){
69                 return MAC_F_KEY;
70         }
71         if(!strcmp(which,"g")){
72                 return MAC_G_KEY;
73         }
74         if(!strcmp(which,"h")){
75                 return MAC_H_KEY;
76         }
77         if(!strcmp(which,"i")){
78                 return MAC_I_KEY;
79         }
80         if(!strcmp(which,"j")){
81                 return MAC_J_KEY;
82         }
83         if(!strcmp(which,"k")){
84                 return MAC_K_KEY;
85         }
86         if(!strcmp(which,"l")){
87                 return MAC_L_KEY;
88         }
89         if(!strcmp(which,"m")){
90                 return MAC_M_KEY;
91         }
92         if(!strcmp(which,"n")){
93                 return MAC_N_KEY;
94         }
95         if(!strcmp(which,"o")){
96                 return MAC_O_KEY;
97         }
98         if(!strcmp(which,"p")){
99                 return MAC_P_KEY;
100         }
101         if(!strcmp(which,"q")){
102                 return MAC_Q_KEY;
103         }
104         if(!strcmp(which,"r")){
105                 return MAC_R_KEY;
106         }
107         if(!strcmp(which,"s")){
108                 return MAC_S_KEY;
109         }
110         if(!strcmp(which,"t")){
111                 return MAC_T_KEY;
112         }
113         if(!strcmp(which,"u")){
114                 return MAC_U_KEY;
115         }
116         if(!strcmp(which,"v")){
117                 return MAC_V_KEY;
118         }
119         if(!strcmp(which,"w")){
120                 return MAC_W_KEY;
121         }
122         if(!strcmp(which,"x")){
123                 return MAC_X_KEY;
124         }
125         if(!strcmp(which,"y")){
126                 return MAC_Y_KEY;
127         }
128         if(!strcmp(which,"z")){
129                 return MAC_Z_KEY;
130         }
131         if(!strcmp(which,"0")){
132                 return MAC_NUMPAD_0_KEY;
133         }
134         if(!strcmp(which,"1")){
135                 return MAC_NUMPAD_1_KEY;
136         }
137         if(!strcmp(which,"2")){
138                 return MAC_NUMPAD_2_KEY;
139         }
140         if(!strcmp(which,"3")){
141                 return MAC_NUMPAD_3_KEY;
142         }
143         if(!strcmp(which,"4")){
144                 return MAC_NUMPAD_4_KEY;
145         }
146         if(!strcmp(which,"5")){
147                 return MAC_NUMPAD_5_KEY;
148         }
149         if(!strcmp(which,"6")){
150                 return MAC_NUMPAD_6_KEY;
151         }
152         if(!strcmp(which,"7")){
153                 return MAC_NUMPAD_7_KEY;
154         }
155         if(!strcmp(which,"8")){
156                 return MAC_NUMPAD_8_KEY;
157         }
158         if(!strcmp(which,"9")){
159                 return MAC_NUMPAD_9_KEY;
160         }
161         if(!strcmp(which,"enter")){
162                 return MAC_ENTER_KEY;
163         }
164         if(!strcmp(which,"control")){
165                 return MAC_CONTROL_KEY;
166         }
167         if(!strcmp(which,"return")){
168                 return MAC_RETURN_KEY;
169         }
170         if(!strcmp(which,"space")){
171                 return MAC_SPACE_KEY;
172         }
173         if(!strcmp(which,"shift")){
174                 return MAC_SHIFT_KEY;
175         }
176         if(!strcmp(which,"uparrow")){
177                 return MAC_ARROW_UP_KEY;
178         }
179         if(!strcmp(which,"downarrow")){
180                 return MAC_ARROW_DOWN_KEY;
181         }
182         if(!strcmp(which,"leftarrow")){
183                 return MAC_ARROW_LEFT_KEY;
184         }
185         if(!strcmp(which,"rightarrow")){
186                 return MAC_ARROW_RIGHT_KEY;
187         }
188 }
189
190 char*   KeyToChar(unsigned short which)
191 {
192         static int i;
193         
194         if(which==MAC_A_KEY){
195                 return "a";
196         }
197         if(which==MAC_B_KEY){
198                 return "b";
199         }
200         if(which==MAC_C_KEY){
201                 return "c";
202         }
203         if(which==MAC_D_KEY){
204                 return "d";
205         }
206         if(which==MAC_E_KEY){
207                 return "e";
208         }
209         if(which==MAC_F_KEY){
210                 return "f";
211         }
212         if(which==MAC_G_KEY){
213                 return "g";
214         }
215         if(which==MAC_H_KEY){
216                 return "h";
217         }
218         if(which==MAC_I_KEY){
219                 return "i";
220         }
221         if(which==MAC_J_KEY){
222                 return "j";
223         }
224         if(which==MAC_K_KEY){
225                 return "k";
226         }
227         if(which==MAC_L_KEY){
228                 return "l";
229         }
230         if(which==MAC_M_KEY){
231                 return "m";
232         }
233         if(which==MAC_N_KEY){
234                 return "n";
235         }
236         if(which==MAC_O_KEY){
237                 return "o";
238         }
239         if(which==MAC_P_KEY){
240                 return "p";
241         }
242         if(which==MAC_Q_KEY){
243                 return "q";
244         }
245         if(which==MAC_R_KEY){
246                 return "r";
247         }
248         if(which==MAC_S_KEY){
249                 return "s";
250         }
251         if(which==MAC_T_KEY){
252                 return "t";
253         }
254         if(which==MAC_U_KEY){
255                 return "u";
256         }
257         if(which==MAC_V_KEY){
258                 return "v";
259         }
260         if(which==MAC_W_KEY){
261                 return "w";
262         }
263         if(which==MAC_X_KEY){
264                 return "x";
265         }
266         if(which==MAC_Y_KEY){
267                 return "y";
268         }
269         if(which==MAC_Z_KEY){
270                 return "z";
271         }
272         if(which==MAC_NUMPAD_1_KEY){
273                 return "1";
274         }
275         if(which==MAC_NUMPAD_2_KEY){
276                 return "2";
277         }
278         if(which==MAC_NUMPAD_3_KEY){
279                 return "3";
280         }
281         if(which==MAC_NUMPAD_4_KEY){
282                 return "4";
283         }
284         if(which==MAC_NUMPAD_5_KEY){
285                 return "5";
286         }
287         if(which==MAC_NUMPAD_6_KEY){
288                 return "6";
289         }
290         if(which==MAC_NUMPAD_7_KEY){
291                 return "7";
292         }
293         if(which==MAC_NUMPAD_8_KEY){
294                 return "8";
295         }
296         if(which==MAC_NUMPAD_9_KEY){
297                 return "9";
298         }
299         if(which==MAC_ENTER_KEY){
300                 return "enter";
301         }
302         if(which==MAC_NUMPAD_0_KEY){
303                 return "0";
304         }
305         if(which==MAC_1_KEY){
306                 return "1";
307         }
308         if(which==MAC_2_KEY){
309                 return "2";
310         }
311         if(which==MAC_3_KEY){
312                 return "3";
313         }
314         if(which==MAC_4_KEY){
315                 return "4";
316         }
317         if(which==MAC_5_KEY){
318                 return "5";
319         }
320         if(which==MAC_6_KEY){
321                 return "6";
322         }
323         if(which==MAC_7_KEY){
324                 return "7";
325         }
326         if(which==MAC_8_KEY){
327                 return "8";
328         }
329         if(which==MAC_9_KEY){
330                 return "9";
331         }
332         if(which==MAC_0_KEY){
333                 return "0";
334         }
335         if(which==MAC_F1_KEY){
336                 return "F1";
337         }
338         if(which==MAC_F2_KEY){
339                 return "F2";
340         }
341         if(which==MAC_F3_KEY){
342                 return "F3";
343         }
344         if(which==MAC_F4_KEY){
345                 return "F4";
346         }
347         if(which==MAC_F5_KEY){
348                 return "F5";
349         }
350         if(which==MAC_F6_KEY){
351                 return "F6";
352         }
353         if(which==MAC_F7_KEY){
354                 return "F7";
355         }
356         if(which==MAC_F8_KEY){
357                 return "F8";
358         }
359         if(which==MAC_F9_KEY){
360                 return "F9";
361         }
362         if(which==MAC_F10_KEY){
363                 return "F10";
364         }
365         if(which==MAC_F11_KEY){
366                 return "F11";
367         }
368         if(which==MAC_F12_KEY){
369                 return "F12";
370         }
371         if(which==MAC_ESCAPE_KEY){
372                 return "escape";
373         }
374         if(which==MAC_DELETE_KEY){
375                 return "backspace";
376         }
377         if(which==MAC_TAB_KEY){
378                 return "tab";
379         }
380         if(which==MAC_TILDE_KEY){
381                 return "`";
382         }
383         if(which==MAC_CAPS_LOCK_KEY){
384                 return "caps lock";
385         }
386         if(which==MAC_COMMAND_KEY){
387                 return "command";
388         }
389         if(which==MAC_OPTION_KEY){
390                 return "option";
391         }
392         if(which==MAC_DEL_KEY){
393                 return "delete";
394         }
395         if(which==MAC_INSERT_KEY){
396                 return "insert";
397         }
398         if(which==MAC_HOME_KEY){
399                 return "home";
400         }
401         if(which==MAC_END_KEY){
402                 return "end";
403         }
404         if(which==MAC_PAGE_UP_KEY){
405                 return "page up";
406         }
407         if(which==MAC_PAGE_DOWN_KEY){
408                 return "page down";
409         }
410         if(which==MAC_NUMPAD_CLEAR_KEY){
411                 return "clear";
412         }
413         if(which==MAC_CONTROL_KEY){
414                 return "control";
415         }
416         if(which==MAC_SPACE_KEY){
417                 return "space";
418         }
419         if(which==MAC_RETURN_KEY){
420                 return "return";
421         }
422         if(which==MAC_SHIFT_KEY){
423                 return "shift";
424         }
425         if(which==MAC_ARROW_UP_KEY){
426                 return "uparrow";
427         }
428         if(which==MAC_ARROW_DOWN_KEY){
429                 return "downarrow";
430         }
431         if(which==MAC_ARROW_LEFT_KEY){
432                 return "leftarrow";
433         }
434         if(which==MAC_ARROW_RIGHT_KEY){
435                 return "rightarrow";
436         }
437         if(which==MAC_MINUS_KEY||which==MAC_NUMPAD_MINUS_KEY){
438                 return "-";
439         }
440         if(which==MAC_PLUS_KEY||which==MAC_NUMPAD_EQUALS_KEY){
441                 return "=";
442         }
443         if(which==MAC_NUMPAD_PLUS_KEY){
444                 return "+";
445         }
446         if(which==MAC_NUMPAD_ASTERISK_KEY){
447                 return "*";
448         }
449         if(which==MAC_SLASH_KEY||which==MAC_NUMPAD_SLASH_KEY){
450                 return "/";
451         }
452         if(which==MAC_BACKSLASH_KEY){
453                 return "\\";
454         }
455         if(which==MAC_LEFTBRACKET_KEY){
456                 return "[";
457         }
458         if(which==MAC_RIGHTBRACKET_KEY){
459                 return "]";
460         }
461         if(which==MAC_PERIOD_KEY||which==MAC_NUMPAD_PERIOD_KEY){
462                 return ".";
463         }
464         if(which==MAC_COMMA_KEY){
465                 return ",";
466         }
467         if(which==MAC_APOSTROPHE_KEY){
468                 return "\"";
469         }
470         if(which==MAC_SEMICOLON_KEY){
471                 return ";";
472         }
473         return "unknown";
474 }
475
476 char    KeyToSingleChar(unsigned short which)
477 {
478         static int i;
479         
480         if(which==MAC_A_KEY){
481                 return 'a';
482         }
483         if(which==MAC_B_KEY){
484                 return 'b';
485         }
486         if(which==MAC_C_KEY){
487                 return 'c';
488         }
489         if(which==MAC_D_KEY){
490                 return 'd';
491         }
492         if(which==MAC_E_KEY){
493                 return 'e';
494         }
495         if(which==MAC_F_KEY){
496                 return 'f';
497         }
498         if(which==MAC_G_KEY){
499                 return 'g';
500         }
501         if(which==MAC_H_KEY){
502                 return 'h';
503         }
504         if(which==MAC_I_KEY){
505                 return 'i';
506         }
507         if(which==MAC_J_KEY){
508                 return 'j';
509         }
510         if(which==MAC_K_KEY){
511                 return 'k';
512         }
513         if(which==MAC_L_KEY){
514                 return 'l';
515         }
516         if(which==MAC_M_KEY){
517                 return 'm';
518         }
519         if(which==MAC_N_KEY){
520                 return 'n';
521         }
522         if(which==MAC_O_KEY){
523                 return 'o';
524         }
525         if(which==MAC_P_KEY){
526                 return 'p';
527         }
528         if(which==MAC_Q_KEY){
529                 return 'q';
530         }
531         if(which==MAC_R_KEY){
532                 return 'r';
533         }
534         if(which==MAC_S_KEY){
535                 return 's';
536         }
537         if(which==MAC_T_KEY){
538                 return 't';
539         }
540         if(which==MAC_U_KEY){
541                 return 'u';
542         }
543         if(which==MAC_V_KEY){
544                 return 'v';
545         }
546         if(which==MAC_W_KEY){
547                 return 'w';
548         }
549         if(which==MAC_X_KEY){
550                 return 'x';
551         }
552         if(which==MAC_Y_KEY){
553                 return 'y';
554         }
555         if(which==MAC_Z_KEY){
556                 return 'z';
557         }
558         if(which==MAC_NUMPAD_1_KEY){
559                 return '1';
560         }
561         if(which==MAC_NUMPAD_2_KEY){
562                 return '2';
563         }
564         if(which==MAC_NUMPAD_3_KEY){
565                 return '3';
566         }
567         if(which==MAC_NUMPAD_4_KEY){
568                 return '4';
569         }
570         if(which==MAC_NUMPAD_5_KEY){
571                 return '5';
572         }
573         if(which==MAC_NUMPAD_6_KEY){
574                 return '6';
575         }
576         if(which==MAC_NUMPAD_7_KEY){
577                 return '7';
578         }
579         if(which==MAC_NUMPAD_8_KEY){
580                 return '8';
581         }
582         if(which==MAC_NUMPAD_9_KEY){
583                 return '9';
584         }
585         if(which==MAC_NUMPAD_0_KEY){
586                 return '0';
587         }
588         if(which==MAC_1_KEY){
589                 return '1';
590         }
591         if(which==MAC_2_KEY){
592                 return '2';
593         }
594         if(which==MAC_3_KEY){
595                 return '3';
596         }
597         if(which==MAC_4_KEY){
598                 return '4';
599         }
600         if(which==MAC_5_KEY){
601                 return '5';
602         }
603         if(which==MAC_6_KEY){
604                 return '6';
605         }
606         if(which==MAC_7_KEY){
607                 return '7';
608         }
609         if(which==MAC_8_KEY){
610                 return '8';
611         }
612         if(which==MAC_9_KEY){
613                 return '9';
614         }
615         if(which==MAC_0_KEY){
616                 return '0';
617         }
618         if(which==MAC_SPACE_KEY){
619                 return ' ';
620         }
621         if(which==MAC_MINUS_KEY||which==MAC_NUMPAD_MINUS_KEY){
622                 return '-';
623         }
624         if(which==MAC_PLUS_KEY||which==MAC_NUMPAD_EQUALS_KEY){
625                 return '=';
626         }
627         if(which==MAC_NUMPAD_PLUS_KEY){
628                 return '+';
629         }
630         if(which==MAC_NUMPAD_ASTERISK_KEY){
631                 return '*';
632         }
633         if(which==MAC_SLASH_KEY||which==MAC_NUMPAD_SLASH_KEY){
634                 return '/';
635         }
636         if(which==MAC_BACKSLASH_KEY){
637                 return '\\';
638         }
639         if(which==MAC_LEFTBRACKET_KEY){
640                 return '[';
641         }
642         if(which==MAC_RIGHTBRACKET_KEY){
643                 return ']';
644         }
645         if(which==MAC_PERIOD_KEY||which==MAC_NUMPAD_PERIOD_KEY){
646                 return '.';
647         }
648         if(which==MAC_COMMA_KEY){
649                 return ',';
650         }
651         if(which==MAC_APOSTROPHE_KEY){
652                 return '\'';
653         }
654         if(which==MAC_SEMICOLON_KEY){
655                 return ';';
656         }
657         return '\0';
658 }
659
660 char    Shift(char which)
661 {
662         static int i;
663         
664         if(which=='a'){
665                 return 'A';
666         }
667         if(which=='b'){
668                 return 'B';
669         }
670         if(which=='c'){
671                 return 'C';
672         }
673         if(which=='d'){
674                 return 'D';
675         }
676         if(which=='e'){
677                 return 'E';
678         }
679         if(which=='f'){
680                 return 'F';
681         }
682         if(which=='g'){
683                 return 'G';
684         }
685         if(which=='h'){
686                 return 'H';
687         }
688         if(which=='e'){
689                 return 'E';
690         }
691         if(which=='f'){
692                 return 'F';
693         }
694         if(which=='g'){
695                 return 'G';
696         }
697         if(which=='h'){
698                 return 'H';
699         }
700         if(which=='i'){
701                 return 'I';
702         }
703         if(which=='j'){
704                 return 'J';
705         }
706         if(which=='k'){
707                 return 'K';
708         }
709         if(which=='l'){
710                 return 'L';
711         }
712         if(which=='m'){
713                 return 'M';
714         }
715         if(which=='n'){
716                 return 'N';
717         }
718         if(which=='o'){
719                 return 'O';
720         }
721         if(which=='p'){
722                 return 'P';
723         }
724         if(which=='q'){
725                 return 'Q';
726         }
727         if(which=='r'){
728                 return 'R';
729         }
730         if(which=='s'){
731                 return 'S';
732         }
733         if(which=='t'){
734                 return 'T';
735         }
736         if(which=='u'){
737                 return 'U';
738         }
739         if(which=='v'){
740                 return 'V';
741         }
742         if(which=='w'){
743                 return 'W';
744         }
745         if(which=='x'){
746                 return 'X';
747         }
748         if(which=='y'){
749                 return 'Y';
750         }
751         if(which=='z'){
752                 return 'Z';
753         }
754         if(which=='1'){
755                 return '!';
756         }
757         if(which=='2'){
758                 return '@';
759         }
760         if(which=='3'){
761                 return '#';
762         }
763         if(which=='4'){
764                 return '$';
765         }
766         if(which=='5'){
767                 return '%';
768         }
769         if(which=='6'){
770                 return '^';
771         }
772         if(which=='7'){
773                 return '&';
774         }
775         if(which=='8'){
776                 return '*';
777         }
778         if(which=='9'){
779                 return '(';
780         }
781         if(which=='0'){
782                 return ')';
783         }
784         if(which=='-'){
785                 return '_';
786         }
787         if(which=='='){
788                 return '+';
789         }
790         if(which=='['){
791                 return '{';
792         }
793         if(which==']'){
794                 return '}';
795         }
796         if(which=='\\'){
797                 return '|';
798         }
799         if(which=='.'){
800                 return '>';
801         }
802         if(which==','){
803                 return '<';
804         }
805         if(which=='/'){
806                 return '?';
807         }
808         if(which==';'){
809                 return ':';
810         }
811         if(which=='\''){
812                 return '\"';
813         }
814         return which;
815 }
816
817 bool    Compare(char *thestring, char *tocompare, int start, int end)
818 {
819         static int i;
820         for(i=start;i<=end;i++){
821                 if(thestring[i]!=tocompare[i-start]&&thestring[i]!=tocompare[i-start]+'A'-'a')return 0;
822         }
823         return 1;
824 }