home *** CD-ROM | disk | FTP | other *** search
- #include <exec/types.h>
- #include <devices/keymap.h>
- #include <libraries/dos.h>
- #include "keymap.h"
-
- UBYTE replacements[] =
- { 0,1,2,3,4,5,6,7,8,9,10,11,12,16,17,21,26,27,32,41,42,43,49,55,56,57,58,QR };
- UBYTE qual_repl[] = { 0,8,12,26,27,42,43 };
-
- ULONG *fi_map[] = {
- KEY('\xb0','`','~','`'),
- KEY('!','1','!','1'),
- KEY('@','2','"','2'),
- KEY('#','3','£','3'),
- KEY('\\','4','$','4'),
- KEY('\x1e','\x1d','%','5'),
- KEY('^','6','&','6'),
- KEY('&','7','/','7'),
- KEY('*','8','(','8'),
- KEY('(','9',')','9'),
- KEY(')','0','=','0'),
- KEY('_','-','?','+'),
- KEY('+','=','`','\x27'),
- KEY('\xc5','\xe5','Q','q'),
- KEY('\xb0','\xb0','W','w'),
- KEY('\xa5','\xa4','Y','y'),
- KEY('\xc5','\xe5','{','['),
- KEY('^','\xa8','}',']'),
- STR(&akey),
- KEY(':','\x2c','\xd6','\xf6'),
- KEY('"','\x27','\xC4','\xE4'),
- KEY('\xdc','\xfc','*','\x27'),
- KEY('\xac','\xb1','Z','z'),
- KEY('\xbf','\xb8','M','m'),
- KEY('<',',',';',','),
- KEY('>','.',':','.'),
- KEY('?','/','_','-'),
- VAL(0) };
-
- ULONG *ag_map[] = {
- KEY('\xb0','~','^','~'),
- KEY('!','1','!','1'),
- KEY('"','2','"','2'),
- KEY('\xa7','3','\xa7','3'),
- KEY('$','4','$','4'),
- KEY('\x1e','\x1d','%','5'),
- KEY('{','6','&','6'),
- KEY('}','7','/','7'),
- KEY('(','8','(','8'),
- KEY(')','9',')','9'),
- KEY('=','0','=','0'),
- KEY('?','\xdf','?','\xdf'),
- STR(&rlacc),
- KEY('\xc5','\xe5','Q','q'),
- KEY('\xb0','\xb0','W','w'),
- KEY('\xa5','\xa4','Z','z'),
- KEY('\xdc','\xfc','\\','@'),
- KEY('*','+','*','+'),
- STR(&akey),
- KEY('\xd5','\xf5','\xd5','\xf5'),
- KEY('\xc4','\xe4','[',']'),
- KEY('\x27','#','\x27','#'),
- KEY('\xac','\xb1','Y','y'),
- KEY('\xbf','\xb8','M','m'),
- KEY(';',',',';',','),
- KEY(':','.',':','.'),
- KEY('_','-','_','-'),
- VAL(PLEQ) };
-
- ULONG *bf_map[] = {
- STR(&laacc),
- KEY('1','~','1','&'),
- KEY('2','\xe9','2','\xe9'),
- KEY('3','"','3','"'),
- KEY('4','\x27','4','\x27'),
- KEY('\x1e','\x1d','5','('),
- KEY('{','[','6','\xa7'),
- KEY('}',']','7','\xe8'),
- KEY('8','^','8','!'),
- KEY('9','\xe7','9','\xe7'),
- KEY('0','\xc1','0','\xc1'),
- KEY('\xb0',')','\xb0',')'),
- KEY('_','-','_','-'),
- STR(&akey),
- KEY('\xb0','\xb0','Z','z'),
- KEY('\xa5','\xa4','Y','y'),
- STR(&hdacc),
- KEY('*','£','*','$'),
- KEY('\xc5','\xe5','Q','q'),
- KEY('M','m','M','m'),
- KEY('%','\\','%','\xdc'),
- KEY('@','#','@','#'),
- KEY('\xac','\xb1','W','w'),
- KEY('\xbf','\xb8','?',','),
- KEY('.',';','.',';'),
- KEY('/',':','/',':'),
- KEY('+','=','+','='),
- VAL(CORN|UFCR|AQSW) };
-
- ULONG *br_map[] = {
- STR(&aoacc),
- KEY('~','1','!','1'),
- KEY('"','2','"','2'),
- KEY('#','3','£','3'),
- KEY('$','4','$','4'),
- KEY('\x1e','\x1d','%','5'),
- KEY('^','6','&','6'),
- KEY('\x27','7','\x27','7'),
- KEY('(','8','(','8'),
- KEY(')','9',')','9'),
- KEY('=','0','=','0'),
- KEY('_','-','_','-'),
- KEY('\xc5','\xc6','\xc5','\xc6'),
- KEY('\xc5','\xe5','Q','q'),
- KEY('\xb0','\xb0','W','w'),
- KEY('\xa5','\xa4','Y','y'),
- KEY('\\','|','\xa7','@'),
- KEY('[',']','[',']'),
- STR(&akey),
- KEY('+',';','+',';'),
- KEY('{','}','*',':'),
- STR(&hlacc),
- KEY('\xac','\xb1','Z','z'),
- KEY('\xbf','\xb8','M','m'),
- KEY(',',',',',',','),
- KEY('.','.','.','.'),
- KEY('?','/','?','/'),
- VAL(CORN|LNCR) };
-
- ULONG *cf_map[] = {
- STR(&aoacc),
- KEY('~','1','!','1'),
- KEY('"','2','"','2'),
- KEY('/','3','/','3'),
- KEY('£','4','$','4'),
- KEY('\x1e','\x1d','%','5'),
- KEY('^','6','?','6'),
- KEY('&','7','&','7'),
- KEY('*','8','*','8'),
- KEY('{','9','(','9'),
- KEY('}','0',')','0'),
- KEY('_','-','_','-'),
- KEY('+','=','+','='),
- STR(&akey),
- KEY('\xb0','\xb0','W','w'),
- KEY('\xa5','\xa4','Y','y'),
- KEY('[',']','\xc7','\xe7'),
- KEY('@','#','@','#'),
- KEY('\xc5','\xe5','Q','q'),
- KEY(':',';',':',';'),
- STR(&hdacc),
- KEY('|','\\','|','\\'),
- KEY('\xac','\xb1','Z','z'),
- KEY('\xbf','\xb8','M','m'),
- KEY('\x27',',','\x27',','),
- KEY('.','.','.','.'),
- KEY('\xc8','\xe8','\xc8','\xe8'),
- VAL(CORN|LFCR|AQSW) };
-
- ULONG *dn_map[] = {
- STR(&aoacc),
- KEY('~','1','!','1'),
- KEY('"','2','"','2'),
- KEY('@','3','\xa7','3'),
- KEY('£','4','$','4'),
- KEY('\x1e','\x1d','%','5'),
- KEY('^','6','&','6'),
- KEY('/','7','/','7'),
- KEY('{','8','(','8'),
- KEY('}','9',')','9'),
- KEY('=','0','=','0'),
- KEY('{','}','?','+'),
- STR(&rlacc),
- KEY('\xc5','\xe5','Q','q'),
- KEY('\xb0','\xb0','W','w'),
- KEY('\xa5','\xa4','Y','y'),
- KEY('[',']','\xc5','\xe5'),
- STR(&dhacc),
- STR(&akey),
- KEY('\xc6','\xe6','\xc6','\xe6'),
- KEY('\\','#','\xd8','\xf8'),
- KEY('*','\x27','*','\x27'),
- KEY('\xac','\xb1','Z','z'),
- KEY('\xbf','\xb8','M','m'),
- KEY(';',',',';',','),
- KEY(':','.',':','.'),
- KEY('_','-','_','-'),
- VAL(CORN|PLEQ|UNCR) };
-
- ULONG *du_map[] = {
- STR(&aoacc),
- KEY('1','\xbc','1','\xbc'),
- KEY('[','2','\xbd','2'),
- KEY(']','3','£','3'),
- KEY('$','4','$','4'),
- KEY('\x1e','\x1d','%','5'),
- KEY('^','6','#','6'),
- KEY('&','7','&','7'),
- KEY('(','8','(','8'),
- KEY(')','9',')','9'),
- KEY('\\','0','\xa7','0'),
- KEY('"','\x27','"','\x27'),
- KEY(':','/',':','/'),
- KEY('\xc5','\xe5','q','Q'),
- KEY('\xb0','\xb0','w','W'),
- KEY('\xa5','\xa4','y','Y'),
- STR(&hlacc),
- KEY('~','*','!','*'),
- STR(&akey),
- KEY('_','-','_','-'),
- KEY('`','\x27','`','\x27'),
- KEY('|','@','|','@'),
- KEY('\xac','\xb1','z','Z'),
- KEY('\xbf','\xb8','m','M'),
- KEY('?',',','?',','),
- KEY(';','.',';','.'),
- KEY('+','=','+','='),
- VAL(CORN|UFCR) };
-
- ULONG *fl_map[] = {
- STR(&laacc),
- KEY('1','~','1','&'),
- KEY('2','\xc8','2','\xc8'),
- KEY('3','^','3','"'),
- KEY('4','\x27','4','\x27'),
- KEY('\x1e','\x1d','5','('),
- KEY('6','[','6','\xa7'),
- KEY('7',']','7','\xe8'),
- KEY('8','!','8','!'),
- KEY('{','\xe7','9','\xe7'),
- KEY('}','\xc1','0','\xc1'),
- KEY('\xb0',')','\xb0',')'),
- KEY('_','-','_','-'),
- STR(&akey),
- KEY('\xb0','\xb0','Z','z'),
- KEY('\xa5','\xa4','Y','y'),
- STR(&hdacc),
- KEY('*','£','*','$'),
- KEY('\xc5','\xe5','Q','q'),
- KEY('M','m','M','m'),
- KEY('%','\\','%','\xfc'),
- KEY('@','#','@','#'),
- KEY('\xac','\xb1','W','w'),
- KEY('\xbf','\xb8','?',','),
- KEY('.',';','.',';'),
- KEY('/',':','/',':'),
- KEY('+','=','+','='),
- VAL(CORN|UFCR|AQSW) };
-
- ULONG *ic_map[] = {
- STR(&lhacc),
- KEY('~','1','!','1'),
- KEY('"','2','"','2'),
- KEY('#','3','#','3'),
- KEY('£','4','$','4'),
- KEY('\x1e','\x1d','%','5'),
- KEY('^','6','&','6'),
- KEY('/','7','/','7'),
- KEY('(','8','(','8'),
- KEY(')','9',')','9'),
- KEY('=','0','=','0'),
- KEY('\xd6','\xf6','\xd6','\xf6'),
- KEY('_','-','_','-'),
- KEY('\xc5','\xe5','Q','q'),
- KEY('\xb0','\xb0','W','w'),
- KEY('\xa5','\xa4','Y','y'),
- KEY('@','\\','@','\\'),
- KEY('?','\x27','?','\x27'),
- STR(&akey),
- KEY('{','}','[',']'),
- KEY('`','\x27','`','\x27'),
- KEY('*','+','*','+'),
- KEY('\xac','\xb1','Z','z'),
- KEY('\xbf','\xb8','M','m'),
- KEY(';',',',';',','),
- KEY(':','.',':','.'),
- KEY('\xd8','\xf8','\xd8','\xf8'),
- VAL(CORN) };
-
- ULONG *it_map[] = {
- STR(&laacc),
- KEY('1','@','1','£'),
- KEY('2','#','2','\xe9'),
- KEY('3','~','3','"'),
- KEY('4','\x27','4','\x27'),
- KEY('\x1e','\x1d','5','('),
- KEY('6','^','6','_'),
- KEY('7','\xe8','7','\xe8'),
- STR(&ital8),
- KEY('9','[','9','\xe7'),
- KEY('0',']','0','\xe0'),
- KEY('\xb0',')','\xb0',')'),
- KEY('+','-','+','-'),
- KEY('\xc5','\xe5','Q','q'),
- KEY('\xb0','\xb0','Z','z'),
- KEY('\xa5','\xa4','Y','y'),
- KEY('{','}','=','\xed'),
- KEY('&','$','&','$'),
- STR(&akey),
- KEY('M','m','M','m'),
- KEY('%','\xfa','%','\xfa'),
- KEY('\\','*','\xa7','*'),
- KEY('\xac','\xb1','W','w'),
- KEY('\xbf','\xb8','?',','),
- KEY('.',';','.',';'),
- KEY('/',':','/',':'),
- KEY('!','\xf3','!','\xf3'),
- VAL(CORN|ITA8) };
-
- ULONG *no_map[] = {
- STR(&aoacc),
- KEY('~','1','!','1'),
- KEY('"','2','"','2'),
- KEY('@','3','\xa7','3'),
- KEY('£','4','$','4'),
- KEY('\x1e','\x1d','%','5'),
- KEY('^','6','&','6'),
- KEY('/','7','/','7'),
- KEY('{','8','(','8'),
- KEY('}','9',')','9'),
- KEY('=','0','=','0'),
- KEY('{','}','?','+'),
- STR(&rlacc),
- KEY('\xc5','\xe5','Q','q'),
- KEY('\xb0','\xb0','W','w'),
- KEY('\xa5','\xa4','Y','y'),
- KEY('[',']','\xc5','\xe5'),
- STR(&dhacc),
- STR(&akey),
- KEY('\xd8','\xf8','\xd8','\xf8'),
- KEY('\\','#','\xc6','\xe6'),
- KEY('*','\x27','*','\x27'),
- KEY('\xac','\xb1','Z','z'),
- KEY('\xbf','\xb8','M','m'),
- KEY(';',',',';',','),
- KEY(':','.',':','.'),
- KEY('_','-','_','-'),
- VAL(CORN|PLEQ|UNCR) };
-
- ULONG *po_map[] = {
- KEY('\xb0','\\','|','\\'),
- KEY('~','1','!','1'),
- KEY('@','2','@','2'),
- KEY('#','3','#','3'),
- KEY('£','4','$','4'),
- KEY('\x1e','\x1d','%','5'),
- KEY('^','6','"','6'),
- KEY('&','7','&','7'),
- KEY('*','8','*','8'),
- KEY('(','9','(','9'),
- KEY(')','0',')','0'),
- KEY('_','-','_','-'),
- KEY('+','=','+','='),
- KEY('\xc5','\xe5','Q','q'),
- KEY('\xb0','\xb0','W','w'),
- KEY('\xa5','\xa4','Y','y'),
- STR(&rlacc),
- KEY('}',']','}',']'),
- STR(&akey),
- KEY('\xc7','\xe7','\xc7','\xe7'),
- STR(&ahacc),
- KEY('{','[','{','['),
- KEY('\xac','\xb1','Z','z'),
- KEY('\xbf','\xb8','M','m'),
- KEY(';',',',';',','),
- KEY(':','.',':','.'),
- KEY('?','/','?','/'),
- VAL(UFCR|LFCR) };
-
- ULONG *sp_map[] = {
- KEY('\xa1','\xbf','\\','@'),
- KEY('~','1','!','1'),
- KEY('"','2','"','2'),
- KEY('\xb0','3','#','3'),
- KEY('£','4','$','4'),
- KEY('\x1e','\x1d','%','5'),
- KEY('^','6','&','6'),
- KEY('/','7','/','7'),
- KEY('{','8','(','8'),
- KEY('}','9',')','9'),
- KEY('=','0','=','0'),
- KEY('?','\x27','?','\x27'),
- KEY('[',']','\xb1','\xba'),
- KEY('\xc5','\xe5','Q','q'),
- KEY('\xb0','\xb0','W','w'),
- KEY('\xa5','\xa4','Y','y'),
- STR(&lhacc),
- KEY('*','+','*','+'),
- STR(&akey),
- KEY('\xd1','\xf1','\xd1','\xf1'),
- STR(&rdacc),
- STR(&caacc),
- KEY('\xac','\xb1','Z','z'),
- KEY('\xbf','\xb8','M','m'),
- KEY(';',',',';',','),
- KEY(':','.',':','.'),
- KEY('_','-','_','-'),
- VAL(UFCR|LFCR|LNCR) };
-
- ULONG *sw_map[] = {
- STR(&aoacc),
- KEY('~','1','!','1'),
- KEY('"','2','"','2'),
- KEY('@','3','\xa7','3'),
- KEY('£','4','$','4'),
- KEY('\x1e','\x1d','%','5'),
- KEY('^','6','&','6'),
- KEY('/','7','/','7'),
- KEY('(','8','(','8'),
- KEY(')','9',')','9'),
- KEY('=','0','=','0'),
- KEY('?','+','?','+'),
- STR(&hlacc),
- KEY('\xc5','\xe5','Q','q'),
- KEY('\xb0','\xb0','W','w'),
- KEY('\xa5','\xa4','Y','y'),
- KEY('[',']','\xc5','\xe5'),
- KEY('\\','#','\xdc','\xfc'),
- STR(&akey),
- KEY('{','}','\xd6','\xf6'),
- KEY('£','|','\xc4','\xe4'),
- KEY('*','\x27','*','\x27'),
- KEY('\xac','\xb1','Z','z'),
- KEY('\xbf','\xb8','M','m'),
- KEY(';',',',';',','),
- KEY(':','.',':','.'),
- KEY('_','-','_','-'),
- VAL(CORN|PLEQ) };
-
- ULONG *sf_map[] = {
- KEY('\xb0','!','\xb0','!'),
- KEY('~','1','+','1'),
- KEY('"','2','"','2'),
- KEY('#','3','*','3'),
- KEY('@','4','\xe7','4'),
- KEY('\x1e','\x1d','%','5'),
- KEY('^','6','&','6'),
- KEY('/','7','/','7'),
- KEY('{','8','(','8'),
- KEY('}','9',')','9'),
- KEY('=','0','=','0'),
- KEY('{','}','?','\x27'),
- STR(&hlacc),
- KEY('\xc5','\xe5','Q','q'),
- KEY('\xb0','\xb0','W','w'),
- KEY('\xa5','\xa4','Z','z'),
- KEY('\\','\xe9','\xfc','\xe9'),
- STR(&daacc),
- STR(&akey),
- KEY('[','\xe8','\xf6','\xe8'),
- KEY(']','\xe1','\xe4','\xe1'),
- KEY('#','$','£','$'),
- KEY('\xac','\xb1','Y','y'),
- KEY('\xbf','\xb8','M','m'),
- KEY(';',',',';',','),
- KEY(':','.',':','.'),
- KEY('_','-','_','-'),
- VAL(PLEQ|UNCR) };
-
- ULONG *sg_map[] = {
- KEY('\xb0','!','\xb0','!'),
- KEY('~','1','+','1'),
- KEY('"','2','"','2'),
- KEY('#','3','*','3'),
- KEY('@','4','\xe7','4'),
- KEY('\x1e','\x1d','%','5'),
- KEY('^','6','&','6'),
- KEY('/','7','/','7'),
- KEY('{','8','(','8'),
- KEY('}','9',')','9'),
- KEY('=','0','=','0'),
- KEY('{','}','?','\x27'),
- STR(&hlacc),
- KEY('\xc5','\xe5','Q','q'),
- KEY('\xb0','\xb0','W','w'),
- KEY('\xa5','\xa4','Z','z'),
- KEY('\\','\xfc','\xe9','\xfc'),
- STR(&daacc),
- STR(&akey),
- KEY('[','\xf6','\xe8','\xf6'),
- KEY(']','\xe4','\xe1','\xe4'),
- KEY('#','$','#','$'),
- KEY('\xac','\xb1','Y','y'),
- KEY('\xbf','\xb8','M','m'),
- KEY(';',',',';',','),
- KEY(':','.',':','.'),
- KEY('_','-','_','-'),
- VAL(PLEQ|UNCR) };
-
- ULONG *us_map[] = {
- KEY('~','`','~','`'),
- KEY('!','1','!','1'),
- KEY('\xb0','2','@','2'),
- KEY('£','3','#','3'),
- KEY('$','4','$','4'),
- KEY('\x1e','\x1d','%','5'),
- KEY('^','6','^','6'),
- KEY('&','7','&','7'),
- KEY('*','8','*','8'),
- KEY('(','9','(','9'),
- KEY(')','0',')','0'),
- KEY('_','-','_','-'),
- KEY('+','=','+','='),
- KEY('\xc5','\xe5','Q','q'),
- KEY('\xb0','\xb0','W','w'),
- KEY('\xa5','\xa4','Y','y'),
- KEY('{','[','{','['),
- KEY('}',']','}',']'),
- STR(&akey),
- KEY(':',';',':',';'),
- KEY('"','\x27','"','\x27'),
- KEY('|','\\','|','\\'),
- KEY('\xac','\xb1','Z','z'),
- KEY('\xbf','\xb8','M','m'),
- KEY(',',',',',',','),
- KEY('.','.','.','.'),
- KEY('?','/','?','/'),
- VAL(0) };
-
- replace(ULONG **key)
- {
- register ULONG val;
- register USHORT cnt = 0;
-
- while (replacements[cnt] != QR) {
- lokeymap[replacements[cnt]] = *key++;
- cnt++;
- }
- val = (ULONG)*key;
- for (cnt = 0; cnt < REPC; cnt++) {
- if (val & (1 << cnt)) lotypes[qual_repl[cnt]] = KCF_SHIFT|KCF_DEAD;
- else lotypes[qual_repl[cnt]] = KCF_SHIFT|KCF_ALT;
- }
- if (val & AQSW) {
- lotypes[16] = KCF_SHIFT|KCF_CONTROL|KCF_ALT|KCF_DEAD;
- lotypes[32] = KCF_SHIFT|KCF_CONTROL|KCF_ALT;
- }
- else {
- lotypes[16] = KCF_SHIFT|KCF_CONTROL|KCF_ALT;
- lotypes[32] = KCF_SHIFT|KCF_CONTROL|KCF_ALT|KCF_DEAD;
- }
- return(0);
- }
-