Module: qkey.cpp

Flat functions
 

QKeyToASCIIchar QKeyToASCII(qkey key)

Use X? Keymaps etc.



/*
 * 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;
}