/*
* QKey - global key functions
* 14-04-97: Created!
* FUTURE;
* - Accented chars; ALT+(F-K) or something
* (C) MarketGraph/RVG
*/
#include <qlib/keys.h>
#include <stdio.h>
char QKeyToASCII(qkey key)
// Use X? Keymaps etc.
{
int mod;
// Strip out modifiers (NumLock is a tricky one)
mod=QK_Modifiers(key);
key=QK_Key(key);
//qdbg("QKeyToASCII(%d)\n",key);
if(mod==QK_SHIFT)
{ switch(key)
{ case QK_A: return 'A';
#ifndef WIN32
case QK_A_ACUTE : return 'Á';
case QK_A_GRAVE : return 'À';
case QK_A_CIRCUMFLEX: return 'Â';
case QK_A_DIAERESIS : return 'Ä';
case QK_A_TILDE : return 'Ã';
case QK_A_RING : return 'Å';
#endif
// AE Æ
case QK_B: return 'B';
case QK_C: return 'C';
#ifndef WIN32
case QK_C_CEDILLA: return 'Ç';
#endif
case QK_D: return 'D';
case QK_E: return 'E';
#ifndef WIN32
case QK_E_ACUTE : return 'É';
case QK_E_GRAVE : return 'È';
case QK_E_CIRCUMFLEX: return 'Ê';
case QK_E_DIAERESIS : return 'Ë';
#endif
case QK_F: return 'F';
case QK_G: return 'G';
case QK_H: return 'H';
case QK_I: return 'I';
#ifndef WIN32
case QK_I_ACUTE : return 'Í';
case QK_I_GRAVE : return 'Ì';
case QK_I_CIRCUMFLEX: return 'Î';
case QK_I_DIAERESIS : return 'Ï';
#endif
case QK_J: return 'J';
case QK_K: return 'K';
case QK_L: return 'L';
case QK_M: return 'M';
case QK_N: return 'N';
#ifndef WIN32
case QK_N_TILDE: return 'Ñ';
#endif
case QK_O: return 'O';
#ifndef WIN32
case QK_O_ACUTE : return 'Ó';
case QK_O_GRAVE : return 'Ò';
case QK_O_CIRCUMFLEX: return 'Ô';
case QK_O_DIAERESIS : return 'Ö';
case QK_O_TILDE : return 'Õ';
case QK_O_OBLIQUE : return 'Ø';
#endif
case QK_P: return 'P';
case QK_Q: return 'Q';
case QK_R: return 'R';
case QK_S: return 'S';
case QK_T: return 'T';
case QK_U: return 'U';
#ifndef WIN32
case QK_U_ACUTE : return 'Ú';
case QK_U_GRAVE : return 'Ù';
case QK_U_CIRCUMFLEX: return 'Û';
case QK_U_DIAERESIS : return 'Ü';
#endif
case QK_V: return 'V';
case QK_W: return 'W';
case QK_X: return 'X';
case QK_Y: return 'Y';
#ifndef WIN32
case QK_Y_ACUTE : return 'Ý';
#endif
// No diaeresis
case QK_Z: return 'Z';
case QK_0: case QK_KP_0: return ')';
case QK_1: case QK_KP_1: return '!';
case QK_2: case QK_KP_2: return '@';
case QK_3: case QK_KP_3: return '#';
case QK_4: case QK_KP_4: return '$';
case QK_5: case QK_KP_5: return '%';
case QK_6: case QK_KP_6: return '^';
case QK_7: case QK_KP_7: return '&';
case QK_8: case QK_KP_8: return '*';
case QK_9: case QK_KP_9: return '(';
case QK_PERIOD: return '>';
case QK_COMMA: return '<';
case QK_SLASH: return '?';
case QK_SEMICOLON: return ':';
case QK_APOSTROPHE: return '"';
case QK_BRACKETLEFT: return '{';
case QK_BRACKETRIGHT: return '}';
case QK_BACKSLASH: return '|';
case QK_MINUS: return '_';
case QK_EQUALS: return '+';
case QK_GRAVE: return '~';
//case QK_: return ' ';
case QK_KP_PLUS: return '+';
case QK_KP_MINUS: return '-';
case QK_KP_ASTERISK: return '*';
case QK_KP_SLASH: return '/';
case QK_KP_PERIOD: return '.';
case QK_SPACE: return ' ';
default: return 0;
}
}
//if(!(mod&QK_SHIFT))
if(mod==0)
{ switch(key)
{ case QK_A: return 'a';
#ifndef WIN32
case QK_A_ACUTE : return 'á';
case QK_A_GRAVE : return 'à';
case QK_A_CIRCUMFLEX: return 'â';
case QK_A_DIAERESIS : return 'ä';
case QK_A_TILDE : return 'ã';
case QK_A_RING : return 'å';
#endif
// ae
case QK_B: return 'b';
case QK_C: return 'c';
#ifndef WIN32
case QK_C_CEDILLA: return 'ç';
#endif
case QK_D: return 'd';
case QK_E: return 'e';
#ifndef WIN32
case QK_E_ACUTE : return 'é';
case QK_E_GRAVE : return 'è';
case QK_E_CIRCUMFLEX: return 'ê';
case QK_E_DIAERESIS : return 'ë';
#endif
case QK_F: return 'f';
case QK_G: return 'g';
case QK_H: return 'h';
case QK_I: return 'i';
#ifndef WIN32
case QK_I_ACUTE : return 'í';
case QK_I_GRAVE : return 'ì';
case QK_I_CIRCUMFLEX: return 'î';
case QK_I_DIAERESIS : return 'ï';
#endif
case QK_J: return 'j';
case QK_K: return 'k';
case QK_L: return 'l';
case QK_M: return 'm';
case QK_N: return 'n';
#ifndef WIN32
case QK_N_TILDE: return 'ñ';
#endif
case QK_O: return 'o';
#ifndef WIN32
case QK_O_ACUTE : return 'ó';
case QK_O_GRAVE : return 'ò';
case QK_O_CIRCUMFLEX: return 'ô';
case QK_O_DIAERESIS : return 'ö';
case QK_O_TILDE : return 'õ';
case QK_O_OBLIQUE : return 'ø';
#endif
case QK_P: return 'p';
case QK_Q: return 'q';
case QK_R: return 'r';
case QK_S: return 's';
case QK_T: return 't';
case QK_U: return 'u';
#ifndef WIN32
case QK_U_ACUTE : return 'ú';
case QK_U_GRAVE : return 'ù';
case QK_U_CIRCUMFLEX: return 'û';
case QK_U_DIAERESIS : return 'ü';
#endif
case QK_V: return 'v';
case QK_W: return 'w';
case QK_X: return 'x';
case QK_Y: return 'y';
#ifndef WIN32
case QK_Y_ACUTE : return 'ý';
case QK_Y_DIAERESIS : return 'ÿ';
#endif
case QK_Z: return 'z';
case QK_0: case QK_KP_0: return '0';
case QK_1: case QK_KP_1: return '1';
case QK_2: case QK_KP_2: return '2';
case QK_3: case QK_KP_3: return '3';
case QK_4: case QK_KP_4: return '4';
case QK_5: case QK_KP_5: return '5';
case QK_6: case QK_KP_6: return '6';
case QK_7: case QK_KP_7: return '7';
case QK_8: case QK_KP_8: return '8';
case QK_9: case QK_KP_9: return '9';
case QK_PERIOD: return '.';
case QK_COMMA: return ',';
case QK_SLASH: return '/';
case QK_SEMICOLON: return ';';
case QK_APOSTROPHE: return '\'';
case QK_BRACKETLEFT: return '[';
case QK_BRACKETRIGHT: return ']';
case QK_BACKSLASH: return '\\';
case QK_MINUS: return '-';
case QK_EQUALS: return '=';
case QK_GRAVE: return '`';
//case QK_: return ' ';
case QK_SPACE: return ' ';
case QK_KP_PLUS: return '+';
case QK_KP_MINUS: return '-';
case QK_KP_ASTERISK: return '*';
case QK_KP_SLASH: return '/';
case QK_KP_PERIOD: return '.';
default:
#ifdef WIN32
qdbg("QKeyToASCII(0x%x) not known\n",key);
#endif
return 0;
}
}
return 0;
}