/**********************************************************************
This file is part of Crack dot Com's free source code release of
Golgotha.
for
information about compiling & licensing issues visit this URL
If that doesn't help, contact Jonathan Clark at
golgotha_source@usa.net (Subject should have "GOLG" in it)
***********************************************************************/
#include "device/svgalib/keyboard.hh"
svgalib_keyboard_class svgalib_keyboard_instance;
static w32 sh=0;
void key_handler(int scancode, int press)
{
int k=0;
switch(scancode)
{
case SCANCODE_CURSORUP : k=i4_UP; break;
case SCANCODE_CURSORLEFT : k=i4_LEFT; break;
case SCANCODE_CURSORRIGHT : k=i4_RIGHT; break;
case SCANCODE_CURSORDOWN : k=i4_DOWN; break;
case SCANCODE_CURSORUPLEFT : k=i4_HOME; break;
case SCANCODE_CURSORUPRIGHT : k=i4_PAGEUP; break;
case SCANCODE_CURSORDOWNLEFT : k=i4_END; break;
case SCANCODE_CURSORDOWNRIGHT : k=i4_PAGEDOWN; break;
case SCANCODE_CURSORBLOCKUP : k=i4_UP; break;
case SCANCODE_CURSORBLOCKLEFT : k=i4_LEFT; break;
case SCANCODE_CURSORBLOCKRIGHT : k=i4_RIGHT; break;
case SCANCODE_CURSORBLOCKDOWN : k=i4_DOWN; break;
case SCANCODE_KEYPAD0 : k=i4_INSERT; break;
case SCANCODE_KEYPAD5 : k='5'; break;
case SCANCODE_KEYPADPLUS : k='+'; break;
case SCANCODE_KEYPADMINUS : k='-'; break;
case SCANCODE_Q : k=sh?'Q':'q'; break;
case SCANCODE_W : k=sh?'W':'w'; break;
case SCANCODE_E : k=sh?'E':'e'; break;
case SCANCODE_R : k=sh?'R':'r'; break;
case SCANCODE_T : k=sh?'T':'t'; break;
case SCANCODE_Y : k=sh?'Y':'y'; break;
case SCANCODE_U : k=sh?'U':'u'; break;
case SCANCODE_I : k=sh?'I':'i'; break;
case SCANCODE_O : k=sh?'O':'o'; break;
case SCANCODE_P : k=sh?'P':'p'; break;
case SCANCODE_A : k=sh?'A':'a'; break;
case SCANCODE_S : k=sh?'S':'s'; break;
case SCANCODE_D : k=sh?'D':'d'; break;
case SCANCODE_F : k=sh?'F':'f'; break;
case SCANCODE_G : k=sh?'G':'g'; break;
case SCANCODE_H : k=sh?'H':'h'; break;
case SCANCODE_J : k=sh?'J':'j'; break;
case SCANCODE_K : k=sh?'K':'k'; break;
case SCANCODE_L : k=sh?'L':'l'; break;
case SCANCODE_Z : k=sh?'Z':'z'; break;
case SCANCODE_X : k=sh?'X':'x'; break;
case SCANCODE_C : k=sh?'C':'c'; break;
case SCANCODE_V : k=sh?'V':'v'; break;
case SCANCODE_B : k=sh?'B':'b'; break;
case SCANCODE_N : k=sh?'N':'n'; break;
case SCANCODE_M : k=sh?'M':'m'; break;
case SCANCODE_ESCAPE : k=i4_ESC; break;
case SCANCODE_ENTER : k=i4_ENTER; break;
case SCANCODE_RIGHTCONTROL : k=i4_CTRL_R; break;
case SCANCODE_RIGHTALT : k=i4_ALT_R; break;
case SCANCODE_LEFTCONTROL : k=i4_CTRL_L; break;
case SCANCODE_LEFTALT : k=i4_ALT_L; break;
case SCANCODE_SPACE : k=' '; break;
case SCANCODE_F1 : k=i4_F1; break;
case SCANCODE_F2 : k=i4_F2; break;
case SCANCODE_F3 : k=i4_F3; break;
case SCANCODE_F4 : k=i4_F4; break;
case SCANCODE_F5 : k=i4_F5; break;
case SCANCODE_F6 : k=i4_F6; break;
case SCANCODE_F7 : k=i4_F7; break;
case SCANCODE_F8 : k=i4_F8; break;
case SCANCODE_F9 : k=i4_F9; break;
case SCANCODE_F10 : k=i4_F10; break;
case 43 : k=sh?'|':'\\'; break;
case 13 : k=sh?'+':'='; break;
case 12 : k=sh?'_':'-'; break;
case 2 : k=sh?'!':'1'; break;
case 3 : k=sh?'@':'2'; break;
case 4 : k=sh?'#':'3'; break;
case 5 : k=sh?'$':'4'; break;
case 6 : k=sh?'%':'5'; break;
case 7 : k=sh?'^':'6'; break;
case 8 : k=sh?'&':'7'; break;
case 9 : k=sh?'*':'8'; break;
case 10 : k=sh?'(':'9'; break;
case 11 : k=sh?')':'0'; break;
case 41 : k=sh?'~':'`'; break;
case 15 : k=i4_TAB; break;
case 58 : k=i4_CAPS; break;
case 26 : k=sh?'{':'['; break;
case 27 : k=sh?'}':']'; break;
case 39 : k=sh?':':';'; break;
case 40 : k=sh?'"':'\''; break;
case 51 : k=sh?'<':','; break;
case 52 : k=sh?'>':'.'; break;
case 53 : k=sh?'?':'/'; break;
case 69 : k=i4_NUM_LOCK; break;
case 14 : k=i4_BACKSPACE; break;
case 110 : k=i4_INSERT; break;
case 102 : k=i4_HOME; break;
case 104 : k=i4_PAGEUP; break;
case 111 : k=i4_DEL; break;
case 107 : k=i4_END; break;
case 109 : k=i4_PAGEDOWN; break;
case 83 : k=i4_DEL; break;
case 55 : k='*'; break;
case 98 : k='/'; break;
case 119 : k='/'; break;
case 96 : k=i4_ENTER; break;
case 42 :
{ k=i4_SHIFT_L;
if (press)
sh|=1;
else sh&=~1;
} break;
case 54 :
{ k=i4_SHIFT_R;
if (press)
sh|=2;
else sh&=~2;
} break;
}
svgalib_keyboard_instance.send_key(k,press);
}