home *** CD-ROM | disk | FTP | other *** search
- #include <exec/types.h>
- #include <libraries/dos.h>
- #include <intuition/intuition.h>
- #include <devices/keymap.h>
- #include <proto/graphics.h>
-
- #include "main.h"
- #include "keymap.h"
-
- UBYTE ret[] = { 1,4,2,6,'\x0D','\x0A',SS3,'M' };
- UBYTE enter[] = { 2,4,1,6,SS3,'M','\x0D','\x0A' };
- csi_12(ccu,'A','2');
- csi_12(ccd,'B','5');
- csi_12(ccr,'C','6');
- csi_12(ccl,'D','4');
- ss3_12(acu,'A','2');
- ss3_12(acd,'B','5');
- ss3_12(acr,'C','6');
- ss3_12(acl,'D','4');
- UBYTE del[] = { 4,8,3,12,1,15,1,16,CSI,'2','9','~',CSI,'1','~',127,127 };
- UBYTE help[] = { 4,4,3,8,CSI,'2','8','~',CSI,'3','~' };
- csi_03(f1,0x8B,'2','3');
- csi_03(f2,0x8C,'2','4');
- csi_03(f3,0x93,'2','5');
- csi_03(f4,0x91,'2','6');
- csi_03(f5,0x92,'2','8');
- csi_33(f6,'1','7','2','9');
- css_31(f7,'1','8','3','1','P');
- css_31(f8,'1','9','3','2','Q');
- css_31(f9,'2','0','3','3','R');
- css_31(f10,'2','1','3','4','S');
- ss3_10(pf1,'P','[');
- ss3_10(pf2,'Q',']');
- ss3_10(pf3,'R','/');
- ss3_10(pf4,'S','*');
- ss3_10(nnum0,'0','p');
- ss3_10(nnum1,'1','q');
- ss3_10(nnum2,'2','r');
- ss3_10(nnum3,'3','s');
- ss3_10(nnum4,'4','t');
- ss3_10(nnum5,'5','u');
- ss3_10(nnum6,'6','v');
- ss3_10(nnum7,'7','w');
- ss3_10(nnum8,'8','x');
- ss3_10(nnum9,'9','y');
- ss3_10(nnumcomma,'+','l');
- ss3_10(nnumminus,'-','m');
- ss3_10(nnumperiod,'.','n');
- ss3_10(anum0,'p','0');
- ss3_10(anum1,'q','1');
- ss3_10(anum2,'r','2');
- ss3_10(anum3,'s','3');
- ss3_10(anum4,'t','4');
- ss3_10(anum5,'u','5');
- ss3_10(anum6,'v','6');
- ss3_10(anum7,'w','7');
- ss3_10(anum8,'x','8');
- ss3_10(anum9,'y','9');
- ss3_10(anumcomma,'l','+');
- ss3_10(anumminus,'m','-');
- ss3_10(anumperiod,'n','.');
-
- UBYTE fkey[] = { 0,'f',0,'F',DPF_DEAD,DPF_R,DPF_DEAD,DPF_R,0,6,0,6,0,0x86,0,0x86 };
- UBYTE gkey[] = { 0,'g',0,'G',DPF_DEAD,DPF_L,DPF_DEAD,DPF_L,0,7,0,7,0,0x87,0,0x87 };
- UBYTE hkey[] = { 0,'h',0,'H',DPF_DEAD,DPF_H,DPF_DEAD,DPF_H,0,8,0,8,0,0x88,0,0x88 };
- UBYTE jkey[] = { 0,'j',0,'J',DPF_DEAD,DPF_A,DPF_DEAD,DPF_A,0,10,0,10,0,0x8A,0,0x8A };
- UBYTE kkey[] = { 0,'k',0,'K',DPF_DEAD,DPF_D,DPF_DEAD,DPF_D,0,11,0,11,0,0x8B,0,0x8B };
-
- MKEY(akey,'\xe6','\xc6','a','\xe1','\xe0','\xe2','\xe3','\xe4','A','\xc1','\xc0','\xc2','\xc3','\xc4');
- MKEY(ekey,'\xa9','\xa9','e','\xe9','\xe8','\xea','e','\xeb','E','\xc9','\xc8','\xca','E','\xcb');
- MKEY(ikey,'\xa1','\xa6','i','\xed','\xec','\xee','i','\xef','I','\xcd','\xcc','\xce','I','\xcf');
- MKEY(okey,'\xf8','\xd8','o','o','\xf2','\xf4','\xf5','\xf6','O','O','\xd2','\xd4','\xd5','\xd6');
- MKEY(nkey,'\xad','\xaf','n','\xf1','n','n','n','n','N','\xd1','N','N','N','N');
- MKEY(ukey,'\xb5','\xb5','u','\xfa','\xf9','\xfb','u','\xfc','U','\xda','\xd9','\xdb','U','\xdc');
-
- UBYTE aoacc[] = { DPF_DEAD,DPF_A,0,'\xb0' };
- UBYTE ahacc[] = { DPF_DEAD,DPF_A,DPF_DEAD,DPF_H };
- UBYTE rlacc[] = { DPF_DEAD,DPF_R,DPF_DEAD,DPF_L };
- UBYTE laacc[] = { DPF_DEAD,DPF_L,DPF_DEAD,DPF_A };
- UBYTE hdacc[] = { DPF_DEAD,DPF_H,DPF_DEAD,DPF_D };
- UBYTE lhacc[] = { DPF_DEAD,DPF_L,DPF_DEAD,DPF_H };
- UBYTE hlacc[] = { DPF_DEAD,DPF_H,DPF_DEAD,DPF_L };
- UBYTE dhacc[] = { DPF_DEAD,DPF_D,DPF_DEAD,DPF_H };
- UBYTE daacc[] = { DPF_DEAD,DPF_D,DPF_DEAD,DPF_A };
- UBYTE rdacc[] = { DPF_DEAD,DPF_R,DPF_DEAD,DPF_D };
- UBYTE caacc[] = { 0,'\xe7',DPF_DEAD,DPF_A };
- UBYTE ital8[] = { DPF_DEAD,DPF_H,0,'8' };
-
- UBYTE lotypes[] = {
- KCF_SHIFT|KCF_ALT, /* 0 ` */
- KCF_SHIFT|KCF_ALT, /* 1 1 */
- KCF_SHIFT|KCF_ALT, /* 2 2 */
- KCF_SHIFT|KCF_ALT, /* 3 3 */
- KCF_SHIFT|KCF_ALT, /* 4 4 */
- KCF_SHIFT|KCF_CONTROL, /* 5 5 */
- KCF_SHIFT|KCF_ALT, /* 6 6 */
- KCF_SHIFT|KCF_ALT, /* 7 7 */
- KCF_SHIFT|KCF_ALT, /* 8 8 */
- KCF_SHIFT|KCF_ALT, /* 9 9 */
- KCF_SHIFT|KCF_ALT, /* 10 0 */
- KCF_SHIFT|KCF_ALT, /* 11 + */
- KCF_SHIFT|KCF_ALT, /* 12 ' */
- KCF_SHIFT|KCF_CONTROL, /* 13 \ */
- 0, /* 14 */
- KCF_SHIFT|KCF_STRING, /* 15 0N */
- KCF_SHIFT|KCF_CONTROL|KCF_ALT, /* 16 q */
- KCF_SHIFT|KCF_CONTROL|KCF_ALT, /* 17 w */
- KCF_SHIFT|KCF_CONTROL|KCF_ALT|KCF_DEAD, /* 18 e */
- KCF_SHIFT|KCF_CONTROL|KCF_ALT, /* 19 r */
- KCF_SHIFT|KCF_CONTROL|KCF_ALT, /* 20 t */
- KCF_SHIFT|KCF_CONTROL|KCF_ALT, /* 21 y */
- KCF_SHIFT|KCF_CONTROL|KCF_ALT|KCF_DEAD, /* 22 u */
- KCF_SHIFT|KCF_CONTROL|KCF_ALT|KCF_DEAD, /* 23 i */
- KCF_SHIFT|KCF_CONTROL|KCF_ALT|KCF_DEAD, /* 24 o */
- KCF_SHIFT|KCF_CONTROL|KCF_ALT, /* 25 p */
- KCF_SHIFT|KCF_ALT, /* 26 [ */
- KCF_SHIFT|KCF_ALT, /* 27 ] */
- 0, /* 28 */
- KCF_SHIFT|KCF_STRING, /* 29 1N */
- KCF_SHIFT|KCF_STRING, /* 30 2N */
- KCF_SHIFT|KCF_STRING, /* 31 3N */
- KCF_SHIFT|KCF_CONTROL|KCF_ALT|KCF_DEAD, /* 32 a */
- KCF_SHIFT|KCF_CONTROL|KCF_ALT, /* 33 s */
- KCF_SHIFT|KCF_CONTROL|KCF_ALT, /* 34 d */
- KCF_SHIFT|KCF_CONTROL|KCF_ALT|KCF_DEAD, /* 35 f */
- KCF_SHIFT|KCF_CONTROL|KCF_ALT|KCF_DEAD, /* 36 g */
- KCF_SHIFT|KCF_CONTROL|KCF_ALT|KCF_DEAD, /* 37 h */
- KCF_SHIFT|KCF_CONTROL|KCF_ALT|KCF_DEAD, /* 38 j */
- KCF_SHIFT|KCF_CONTROL|KCF_ALT|KCF_DEAD, /* 39 k */
- KCF_SHIFT|KCF_CONTROL|KCF_ALT, /* 40 l */
- KCF_SHIFT|KCF_ALT, /* 41 ö */
- KCF_SHIFT|KCF_ALT, /* 42 ä */
- KCF_SHIFT|KCF_ALT, /* 43 ' */
- 0, /* 44 */
- KCF_SHIFT|KCF_STRING, /* 45 4N */
- KCF_SHIFT|KCF_STRING, /* 46 5N */
- KCF_SHIFT|KCF_STRING, /* 47 6N */
- KCF_SHIFT|KCF_ALT, /* 48 < */
- KCF_SHIFT|KCF_CONTROL|KCF_ALT, /* 49 z */
- KCF_SHIFT|KCF_CONTROL|KCF_ALT, /* 50 x */
- KCF_SHIFT|KCF_CONTROL|KCF_ALT, /* 51 c */
- KCF_SHIFT|KCF_CONTROL|KCF_ALT, /* 52 v */
- KCF_SHIFT|KCF_CONTROL|KCF_ALT, /* 53 b */
- KCF_SHIFT|KCF_CONTROL|KCF_ALT|KCF_DEAD, /* 54 n */
- KCF_SHIFT|KCF_CONTROL|KCF_ALT, /* 55 m */
- KCF_SHIFT|KCF_ALT, /* 56 , */
- KCF_SHIFT|KCF_ALT, /* 57 . */
- KCF_SHIFT|KCF_ALT, /* 58 - */
- 0, /* 59 */
- KCF_SHIFT|KCF_STRING, /* 60 .N */
- KCF_SHIFT|KCF_STRING, /* 61 7N */
- KCF_SHIFT|KCF_STRING, /* 62 8N */
- KCF_SHIFT|KCF_STRING }; /* 63 9N */
-
- ULONG *lokeymap[] = {
- KEY('~','`','~','`'), /* 0 ` */
- KEY('!','1','!','1'), /* 1 1 */
- KEY('\xb0','2','@','2'), /* 2 2 */
- KEY('£','3','#','3'), /* 3 3 */
- KEY('$','4','$','4'), /* 4 4 */
- KEY('\x1e','\x1d','%','5'), /* 5 5 */
- KEY('^','6','^','6'), /* 6 6 */
- KEY('&','7','&','7'), /* 7 7 */
- KEY('*','8','*','8'), /* 8 8 */
- KEY('(','9','(','9'), /* 9 9 */
- KEY(')','0',')','0'), /* 10 0 */
- KEY('_','-','_','-'), /* 11 + */
- KEY('+','=','+','='), /* 12 ' */
- KEY(28,28,'|','\\'), /* 13 \ */
- NULKEY, /* 14 */
- STR(&nnum0), /* 15 0N */
- KEY('\xc5','\xe5','Q','q'), /* 16 q */
- KEY('\xb0','\xb0','W','w'), /* 17 w */
- STR(&ekey), /* 18 e */
- KEY('\xae','\xae','R','r'), /* 19 r */
- KEY('\xde','\xfe','T','t'), /* 20 t */
- KEY('\xa5','\xa4','Y','y'), /* 21 y */
- STR(&ukey), /* 22 u */
- STR(&ikey), /* 23 i */
- STR(&okey), /* 24 o */
- KEY('\xb6','\xb6','P','p'), /* 25 p */
- KEY('{','[','{','['), /* 26 [ */
- KEY('}',']','}',']'), /* 27 ] */
- NULKEY, /* 28 */
- STR(&nnum1), /* 29 1N */
- STR(&nnum2), /* 30 2N */
- STR(&nnum3), /* 31 3N */
- STR(&akey), /* 32 a */
- KEY('\xa7','\xdf','S','s'), /* 33 s */
- KEY('\xd0','\xf0','D','d'), /* 34 d */
- STR(&fkey), /* 35 f */
- STR(&gkey), /* 36 g */
- STR(&hkey), /* 37 h */
- STR(&jkey), /* 38 j */
- STR(&kkey), /* 39 k */
- KEY('\xa3','\xa3','L','l'), /* 40 l */
- KEY(':',';',':',';'), /* 41 ö */
- KEY('"','\x27','"','\x27'), /* 42 ä */
- KEY('|','\\','|','\\'), /* 43 ' */
- NULKEY, /* 44 */
- STR(&nnum4), /* 45 4N */
- STR(&nnum5), /* 46 5N */
- STR(&nnum6), /* 47 6N */
- KEY('\xbb','\xab','>','<'), /* 48 < */
- KEY('\xac','\xb1','Z','z'), /* 49 z */
- KEY('\xf7','\xd7','X','x'), /* 50 x */
- KEY('\xc7','\xe7','C','c'), /* 51 c */
- KEY('\xfd','\xaa','V','v'), /* 52 v */
- KEY('\xff','\xba','B','b'), /* 53 b */
- STR(&nkey), /* 54 n */
- KEY('\xbf','\xb8','M','m'), /* 55 m */
- KEY(',',',',',',','), /* 56 , */
- KEY('.','.','.','.'), /* 57 . */
- KEY('?','/','?','/'), /* 58 - */
- NULKEY, /* 59 */
- STR(&nnumperiod), /* 60 .N */
- STR(&nnum7), /* 61 7N */
- STR(&nnum8), /* 62 8N */
- STR(&nnum9) }; /* 63 9N */
-
- UBYTE locapsaple[] = { 0,0,0xFF,0x03,0xFF,0x07,0xFE,0 };
- UBYTE lorepeatable[] = { 0xFF,0x3F,0xFF,0x0F,0xFF,0x0F,0xFF,0x07 };
-
- UBYTE hitypes[] = {
- KCF_CONTROL, /* 64 SPC */
- KC_NOQUAL, /* 65 BS */
- KC_NOQUAL, /* 66 TAB */
- KCF_STRING, /* 67 ENT */
- KCF_STRING, /* 68 RET */
- KC_NOQUAL, /* 69 ESC */
- KCF_STRING|KCF_SHIFT|KCF_ALT, /* 70 DEL */
- 0, /* 71 */
- 0, /* 72 */
- 0, /* 73 */
- KCF_STRING|KCF_SHIFT, /* 74 -N */
- 0, /* 75 */
- KCF_STRING|KCF_SHIFT, /* 76 UP */
- KCF_STRING|KCF_SHIFT, /* 77 DOWN */
- KCF_STRING|KCF_SHIFT, /* 78 FORWARD */
- KCF_STRING|KCF_SHIFT, /* 79 BACKWARD */
- KCF_STRING|KCF_SHIFT, /* 80 F1 */
- KCF_STRING|KCF_SHIFT, /* 81 F2 */
- KCF_STRING|KCF_SHIFT, /* 82 F3 */
- KCF_STRING|KCF_SHIFT, /* 83 F4 */
- KCF_STRING|KCF_SHIFT, /* 84 F5 */
- KCF_STRING|KCF_SHIFT, /* 85 F6 */
- KCF_STRING|KCF_SHIFT|KCF_ALT, /* 86 F7 */
- KCF_STRING|KCF_SHIFT|KCF_ALT, /* 87 F8 */
- KCF_STRING|KCF_SHIFT|KCF_ALT, /* 88 F9 */
- KCF_STRING|KCF_SHIFT|KCF_ALT, /* 89 F10 */
- KCF_STRING|KCF_SHIFT, /* 90 PF1 */
- KCF_STRING|KCF_SHIFT, /* 91 PF2 */
- KCF_STRING|KCF_SHIFT, /* 92 PF3 */
- KCF_STRING|KCF_SHIFT, /* 93 PF4 */
- KCF_STRING|KCF_SHIFT, /* 94 ,N (+) */
- KCF_STRING|KCF_SHIFT, /* 95 HELP */
- KCF_NOP, /* 96 L SHIFT */
- KCF_NOP, /* 97 R SHIFT */
- KCF_NOP, /* 98 CAPS LOCK */
- KCF_NOP, /* 99 CONTROL */
- KCF_NOP, /* 100 L ALT */
- KCF_NOP, /* 101 R ALT */
- KCF_NOP, /* 102 L AMIGA */
- KCF_NOP }; /* 103 R AMIGA */
-
- ULONG *hikeymap[] = {
- KEY(0,0,0,' '), /* 64 SPC */
- KEY(0,0,0,127), /* 65 BS */
- KEY(0,0,0,9), /* 66 TAB */
- STR(ret), /* 67 ENT */
- STR(ret), /* 68 RET */
- KEY(0,0,0,27), /* 69 ESC */
- STR(del), /* 70 DEL */
- NULKEY, /* 71 */
- NULKEY, /* 72 */
- NULKEY, /* 73 */
- STR(&nnumminus), /* 74 -N */
- NULKEY, /* 75 */
- STR(&ccu), /* 76 UP */
- STR(&ccd), /* 77 DOWN */
- STR(&ccr), /* 78 FORWARD */
- STR(&ccl), /* 79 BACKWARD */
- STR(&f1), /* 80 F1 */
- STR(&f2), /* 81 F2 */
- STR(&f3), /* 82 F3 */
- STR(&f4), /* 83 F4 */
- STR(&f5), /* 84 F5 */
- STR(&f6), /* 85 F6 */
- STR(&f7), /* 86 F7 */
- STR(&f8), /* 87 F8 */
- STR(&f9), /* 88 F9 */
- STR(&f10), /* 89 F10 */
- STR(&pf1), /* 90 PF1 */
- STR(&pf2), /* 91 PF2 */
- STR(&pf3), /* 92 PF3 */
- STR(&pf4), /* 93 PF4 */
- STR(&nnumcomma), /* 94 ,N (+) */
- STR(help), /* 95 HELP */
- NULKEY, /* 96 L SHIFT */
- NULKEY, /* 97 R SHIFT */
- NULKEY, /* 98 CAPS LOCK */
- NULKEY, /* 99 CONTROL */
- NULKEY, /* 100 L ALT */
- NULKEY, /* 101 R ALT */
- NULKEY, /* 102 L AMIGA */
- NULKEY }; /* 103 R AMIGA */
-
- UBYTE hicapsaple[] = { 0,0,0,0,0,0,0,0 };
- UBYTE hirepeatable[] = { 0x47,0xF4,0,0x40,0,0,0,0 };
-
- struct KeyMap keymap = {
- lotypes,(ULONG *)lokeymap,locapsaple,lorepeatable,
- hitypes,(ULONG *)hikeymap,hicapsaple,hirepeatable };
-
- entermode(int set)
- {
- if (set) {
- ret[0] = 2;
- enter[2] = 2;
- }
- else {
- ret[0] = 1;
- enter[2] = 1;
- }
- return(0);
- }
-
- keypadmode(int set)
- {
- if (set) {
- lokeymap[15] = STR(&anum0);
- lokeymap[29] = STR(&anum1);
- lokeymap[30] = STR(&anum2);
- lokeymap[31] = STR(&anum3);
- lokeymap[45] = STR(&anum4);
- lokeymap[46] = STR(&anum5);
- lokeymap[47] = STR(&anum6);
- lokeymap[60] = STR(&anumperiod);
- lokeymap[61] = STR(&anum7);
- lokeymap[62] = STR(&anum8);
- lokeymap[63] = STR(&anum9);
- hikeymap[3] = STR(enter);
- hikeymap[10] = STR(&anumminus);
- hikeymap[30] = STR(&anumcomma);
- }
- else {
- lokeymap[15] = STR(&nnum0);
- lokeymap[29] = STR(&nnum1);
- lokeymap[30] = STR(&nnum2);
- lokeymap[31] = STR(&nnum3);
- lokeymap[45] = STR(&nnum4);
- lokeymap[46] = STR(&nnum5);
- lokeymap[47] = STR(&nnum6);
- lokeymap[60] = STR(&nnumperiod);
- lokeymap[61] = STR(&nnum7);
- lokeymap[62] = STR(&nnum8);
- lokeymap[63] = STR(&nnum9);
- hikeymap[3] = STR(ret);
- hikeymap[10] = STR(&nnumminus);
- hikeymap[30] = STR(&nnumcomma);
- }
- return(0);
- }
-
- cursormode(int set)
- {
- if (set) {
- hikeymap[12] = STR(&ccu);
- hikeymap[13] = STR(&ccd);
- hikeymap[14] = STR(&ccr);
- hikeymap[15] = STR(&ccl);
- }
- else {
- hikeymap[12] = STR(&acu);
- hikeymap[13] = STR(&acd);
- hikeymap[14] = STR(&acr);
- hikeymap[15] = STR(&acl);
- }
- return(0);
- }
-