Main Page   Namespace List   Class Hierarchy   Compound List   File List   Compound Members   File Members  

keyboard_svgalib.cpp

Go to the documentation of this file.
00001 /*
00002         $Id: keyboard_svgalib.cpp,v 1.1 2001/03/06 15:09:21 mbn Exp $
00003 
00004         ------------------------------------------------------------------------
00005         ClanLib, the platform independent game SDK.
00006 
00007         This library is distributed under the GNU LIBRARY GENERAL PUBLIC LICENSE
00008         version 2. See COPYING for details.
00009 
00010         For a total list of contributers see CREDITS.
00011 
00012         ------------------------------------------------------------------------
00013 */
00014 
00015 #include "Core/precomp.h"
00016 
00017 #ifdef USE_SVGALIB
00018 
00019 #include <vgakeyboard.h>
00020 #include "keyboard_svgalib.h"
00021 
00022 #include <API/Display/Input/inputaxis.h>
00023 #include <Display/Input/Svgalib/keyboard_svgalib.h>
00024 #include <API/Display/Input/inputbutton.h>
00025 #include <Display/Input/Svgalib/keyboard_svgalib.h>
00026 #include <API/Display/Input/inputcursor.h>
00027 #include <API/Display/Input/inputhat.h>
00028 #include <Display/Input/Svgalib/keyboard_svgalib.h>
00029 
00030 #include "API/Core/System/cl_assert.h"
00031 
00032 CL_SVGAKeyboard::CL_SVGAKeyboard()
00033 {
00034         int err = keyboard_init();
00035         cl_assert(err != -1); // Failed to init svgalib keyboard handler
00036 
00037         keyboard_translatekeys(TRANSLATE_CURSORKEYS);
00038 }
00039 
00040 CL_SVGAKeyboard::~CL_SVGAKeyboard()
00041 {
00042         keyboard_close();
00043         
00044         int num = buttons.get_num_items();
00045         for (int i=0; i<num; i++) delete buttons[i];
00046 }
00047 
00048 char *CL_SVGAKeyboard::get_name()
00049 {
00050         return "Standard keyboard";
00051 }
00052 
00053 int CL_SVGAKeyboard::get_num_buttons()
00054 {
00055         return CL_NUM_KEYS;
00056 }
00057 
00058 CL_InputButton *CL_SVGAKeyboard::get_button(int button_num)
00059 {
00060         keyboard_update();
00061         if (buttons[button_num] != NULL) return buttons[button_num];
00062 
00063         int translate_key = -1;
00064         switch (button_num)
00065         {
00066         case CL_KEY_A: translate_key = SCANCODE_A; break;
00067         case CL_KEY_B: translate_key = SCANCODE_B; break;
00068         case CL_KEY_C: translate_key = SCANCODE_C; break;
00069         case CL_KEY_D: translate_key = SCANCODE_D; break;
00070         case CL_KEY_E: translate_key = SCANCODE_E; break;
00071         case CL_KEY_F: translate_key = SCANCODE_F; break;
00072         case CL_KEY_G: translate_key = SCANCODE_G; break;
00073         case CL_KEY_H: translate_key = SCANCODE_H; break;
00074         case CL_KEY_I: translate_key = SCANCODE_I; break;
00075         case CL_KEY_J: translate_key = SCANCODE_J; break;
00076         case CL_KEY_K: translate_key = SCANCODE_K; break;
00077         case CL_KEY_L: translate_key = SCANCODE_L; break;
00078         case CL_KEY_M: translate_key = SCANCODE_M; break;
00079         case CL_KEY_N: translate_key = SCANCODE_N; break;
00080         case CL_KEY_O: translate_key = SCANCODE_O; break;
00081         case CL_KEY_P: translate_key = SCANCODE_P; break;
00082         case CL_KEY_Q: translate_key = SCANCODE_Q; break;
00083         case CL_KEY_R: translate_key = SCANCODE_R; break;
00084         case CL_KEY_S: translate_key = SCANCODE_S; break;
00085         case CL_KEY_T: translate_key = SCANCODE_T; break;
00086         case CL_KEY_U: translate_key = SCANCODE_U; break;
00087         case CL_KEY_V: translate_key = SCANCODE_V; break;
00088         case CL_KEY_W: translate_key = SCANCODE_W; break;
00089         case CL_KEY_X: translate_key = SCANCODE_X; break;
00090         case CL_KEY_Y: translate_key = SCANCODE_Y; break;
00091         case CL_KEY_Z: translate_key = SCANCODE_Z; break;
00092 
00093         case CL_KEY_0: translate_key = SCANCODE_0; break;
00094         case CL_KEY_1: translate_key = SCANCODE_1; break;
00095         case CL_KEY_2: translate_key = SCANCODE_2; break;
00096         case CL_KEY_3: translate_key = SCANCODE_3; break;
00097         case CL_KEY_4: translate_key = SCANCODE_4; break;
00098         case CL_KEY_5: translate_key = SCANCODE_5; break;
00099         case CL_KEY_6: translate_key = SCANCODE_6; break;
00100         case CL_KEY_7: translate_key = SCANCODE_7; break;
00101         case CL_KEY_8: translate_key = SCANCODE_8; break;
00102         case CL_KEY_9: translate_key = SCANCODE_9; break;
00103 
00104         case CL_KEY_F1: translate_key = SCANCODE_F1; break;
00105         case CL_KEY_F2: translate_key = SCANCODE_F2; break;
00106         case CL_KEY_F3: translate_key = SCANCODE_F3; break;
00107         case CL_KEY_F4: translate_key = SCANCODE_F4; break;
00108         case CL_KEY_F5: translate_key = SCANCODE_F5; break;
00109         case CL_KEY_F6: translate_key = SCANCODE_F6; break;
00110         case CL_KEY_F7: translate_key = SCANCODE_F7; break;
00111         case CL_KEY_F8: translate_key = SCANCODE_F8; break;
00112         case CL_KEY_F9: translate_key = SCANCODE_F9; break;
00113         case CL_KEY_F10: translate_key = SCANCODE_F10; break;
00114         case CL_KEY_F11: translate_key = SCANCODE_F11; break;
00115         case CL_KEY_F12: translate_key = SCANCODE_F12; break;
00116 
00117         case CL_KEY_ESCAPE: translate_key = SCANCODE_ESCAPE; break;
00118         case CL_KEY_LEFT: translate_key = SCANCODE_CURSORLEFT; break;
00119         case CL_KEY_RIGHT: translate_key = SCANCODE_CURSORRIGHT; break;
00120         case CL_KEY_UP: translate_key = SCANCODE_CURSORUP; break;
00121         case CL_KEY_DOWN: translate_key = SCANCODE_CURSORDOWN; break;
00122         case CL_KEY_LCTRL: translate_key = SCANCODE_LEFTCONTROL; break;
00123         case CL_KEY_RCTRL: translate_key = SCANCODE_RIGHTCONTROL; break;
00124         case CL_KEY_LSHIFT: translate_key = SCANCODE_LEFTSHIFT; break;
00125         case CL_KEY_RSHIFT: translate_key = SCANCODE_RIGHTSHIFT; break;
00126         case CL_KEY_ALT: translate_key = SCANCODE_LEFTALT; break;
00127         case CL_KEY_ALTGR: translate_key = SCANCODE_RIGHTALT; break;
00128         case CL_KEY_TAB: translate_key = SCANCODE_TAB; break;
00129         case CL_KEY_ENTER: translate_key = SCANCODE_ENTER; break;
00130         case CL_KEY_SPACE: translate_key = SCANCODE_SPACE; break;
00131         case CL_KEY_BACKSPACE: translate_key = SCANCODE_BACKSPACE; break;
00132         case CL_KEY_INSERT: translate_key = SCANCODE_INSERT; break;
00133         case CL_KEY_DELETE: translate_key = SCANCODE_REMOVE; break;
00134         case CL_KEY_HOME: translate_key = SCANCODE_HOME; break;
00135         case CL_KEY_END: translate_key = SCANCODE_END; break;
00136         case CL_KEY_PAGEUP: translate_key = SCANCODE_PAGEUP; break;
00137         case CL_KEY_PAGEDOWN: translate_key = SCANCODE_PAGEDOWN; break;
00138         case CL_KEY_CAPSLOCK: translate_key = SCANCODE_CAPSLOCK; break;
00139         case CL_KEY_NUMLOCK: translate_key = SCANCODE_NUMLOCK; break;
00140         case CL_KEY_SCRLOCK: translate_key = SCANCODE_SCROLLLOCK; break;
00141         case CL_KEY_PRINT: translate_key = SCANCODE_PRINTSCREEN; break;
00142         case CL_KEY_PAUSE: translate_key = SCANCODE_BREAK; break;
00143         case CL_KEY_KP_DIV: translate_key = SCANCODE_KEYPADDIVIDE; break;
00144         case CL_KEY_KP_MULT: translate_key = SCANCODE_KEYPADMULTIPLY; break;
00145         case CL_KEY_KP_MINUS: translate_key = SCANCODE_KEYPADMINUS; break;
00146         case CL_KEY_KP_PLUS: translate_key = SCANCODE_KEYPADPLUS; break;
00147         case CL_KEY_KP_ENTER: translate_key = SCANCODE_KEYPADENTER; break;
00148         }
00149 
00150         if (translate_key == -1) return NULL;
00151 
00152         buttons.add(
00153                 new CL_InputButton_SVGAKeyboard(translate_key),
00154                 button_num);
00155 
00156         return buttons[button_num];
00157 }
00158 
00159 int CL_SVGAKeyboard::get_num_axes()
00160 {
00161         return 0;
00162 }
00163 
00164 CL_InputAxis *CL_SVGAKeyboard::get_axis(int /*axis_num*/)
00165 {
00166         return NULL;
00167 }
00168 
00169 int CL_SVGAKeyboard::get_num_hats()
00170 {
00171         return 0;
00172 }
00173 
00174 CL_InputHat *CL_SVGAKeyboard::get_hat(int /*hat_num*/)
00175 {
00176         return NULL;
00177 }
00178 
00179 int CL_SVGAKeyboard::get_num_cursors()
00180 {
00181         return 0;
00182 }
00183 
00184 CL_InputCursor *CL_SVGAKeyboard::get_cursor(int /*cursor_num*/)
00185 {
00186         return NULL;
00187 }
00188 
00189 /***********************
00190   InputButton SVGA
00191 ***********************/
00192 
00193 CL_InputButton_SVGAKeyboard::CL_InputButton_SVGAKeyboard(int _key)
00194 {
00195         key = _key;
00196 }
00197 
00198 bool CL_InputButton_SVGAKeyboard::is_pressed()
00199 {
00200         if (keyboard_keypressed(key)) return true;
00201         return false;
00202 }
00203 
00204 #endif

Generated at Wed Apr 4 19:54:01 2001 for ClanLib by doxygen1.2.6 written by Dimitri van Heesch, © 1997-2001