00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
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);
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 )
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 )
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 )
00185 {
00186 return NULL;
00187 }
00188
00189
00190
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