/project/jni/sdl-1.3/src/video/bwindow/SDL_bkeyboard.cc

https://github.com/aichunyu/FFPlayer · C++ · 189 lines · 151 code · 17 blank · 21 comment · 10 complexity · c8bfc9d2e0a30f79abca1b1058bde6ec MD5 · raw file

  1. /*
  2. SDL - Simple DirectMedia Layer
  3. Copyright (C) 1997-2012 Sam Lantinga
  4. This library is free software; you can redistribute it and/or
  5. modify it under the terms of the GNU Lesser General Public
  6. License as published by the Free Software Foundation; either
  7. version 2.1 of the License, or (at your option) any later version.
  8. This library is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  11. Lesser General Public License for more details.
  12. You should have received a copy of the GNU Lesser General Public
  13. License along with this library; if not, write to the Free Software
  14. Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  15. Sam Lantinga
  16. slouken@libsdl.org
  17. */
  18. #include "SDL_config.h"
  19. #if SDL_VIDEO_DRIVER_BWINDOW
  20. #include <SupportDefs.h>
  21. #include <support/UTF8.h>
  22. #ifdef __cplusplus
  23. extern "C" {
  24. #endif
  25. #include "SDL_events.h"
  26. #include "SDL_keycode.h"
  27. #include "SDL_bkeyboard.h"
  28. #define KEYMAP_SIZE 128
  29. static SDL_Scancode keymap[KEYMAP_SIZE];
  30. static int8 keystate[KEYMAP_SIZE];
  31. void BE_InitOSKeymap() {
  32. for( uint i = 0; i < SDL_TABLESIZE(keymap); ++i ) {
  33. keymap[i] = SDL_SCANCODE_UNKNOWN;
  34. }
  35. for( uint i = 0; i < KEYMAP_SIZE; ++i ) {
  36. keystate[i] = SDL_RELEASED;
  37. }
  38. keymap[0x01] = SDL_GetScancodeFromKey(SDLK_ESCAPE);
  39. keymap[B_F1_KEY] = SDL_GetScancodeFromKey(SDLK_F1);
  40. keymap[B_F2_KEY] = SDL_GetScancodeFromKey(SDLK_F2);
  41. keymap[B_F3_KEY] = SDL_GetScancodeFromKey(SDLK_F3);
  42. keymap[B_F4_KEY] = SDL_GetScancodeFromKey(SDLK_F4);
  43. keymap[B_F5_KEY] = SDL_GetScancodeFromKey(SDLK_F5);
  44. keymap[B_F6_KEY] = SDL_GetScancodeFromKey(SDLK_F6);
  45. keymap[B_F7_KEY] = SDL_GetScancodeFromKey(SDLK_F7);
  46. keymap[B_F8_KEY] = SDL_GetScancodeFromKey(SDLK_F8);
  47. keymap[B_F9_KEY] = SDL_GetScancodeFromKey(SDLK_F9);
  48. keymap[B_F10_KEY] = SDL_GetScancodeFromKey(SDLK_F10);
  49. keymap[B_F11_KEY] = SDL_GetScancodeFromKey(SDLK_F11);
  50. keymap[B_F12_KEY] = SDL_GetScancodeFromKey(SDLK_F12);
  51. keymap[B_PRINT_KEY] = SDL_GetScancodeFromKey(SDLK_PRINTSCREEN);
  52. keymap[B_SCROLL_KEY] = SDL_GetScancodeFromKey(SDLK_SCROLLLOCK);
  53. keymap[B_PAUSE_KEY] = SDL_GetScancodeFromKey(SDLK_PAUSE);
  54. keymap[0x11] = SDL_GetScancodeFromKey(SDLK_BACKQUOTE);
  55. keymap[0x12] = SDL_GetScancodeFromKey(SDLK_1);
  56. keymap[0x13] = SDL_GetScancodeFromKey(SDLK_2);
  57. keymap[0x14] = SDL_GetScancodeFromKey(SDLK_3);
  58. keymap[0x15] = SDL_GetScancodeFromKey(SDLK_4);
  59. keymap[0x16] = SDL_GetScancodeFromKey(SDLK_5);
  60. keymap[0x17] = SDL_GetScancodeFromKey(SDLK_6);
  61. keymap[0x18] = SDL_GetScancodeFromKey(SDLK_7);
  62. keymap[0x19] = SDL_GetScancodeFromKey(SDLK_8);
  63. keymap[0x1a] = SDL_GetScancodeFromKey(SDLK_9);
  64. keymap[0x1b] = SDL_GetScancodeFromKey(SDLK_0);
  65. keymap[0x1c] = SDL_GetScancodeFromKey(SDLK_MINUS);
  66. keymap[0x1d] = SDL_GetScancodeFromKey(SDLK_EQUALS);
  67. keymap[0x1e] = SDL_GetScancodeFromKey(SDLK_BACKSPACE);
  68. keymap[0x1f] = SDL_GetScancodeFromKey(SDLK_INSERT);
  69. keymap[0x20] = SDL_GetScancodeFromKey(SDLK_HOME);
  70. keymap[0x21] = SDL_GetScancodeFromKey(SDLK_PAGEUP);
  71. keymap[0x22] = SDL_GetScancodeFromKey(SDLK_NUMLOCKCLEAR);
  72. keymap[0x23] = SDL_GetScancodeFromKey(SDLK_KP_DIVIDE);
  73. keymap[0x24] = SDL_GetScancodeFromKey(SDLK_KP_MULTIPLY);
  74. keymap[0x25] = SDL_GetScancodeFromKey(SDLK_KP_MINUS);
  75. keymap[0x26] = SDL_GetScancodeFromKey(SDLK_TAB);
  76. keymap[0x27] = SDL_GetScancodeFromKey(SDLK_q);
  77. keymap[0x28] = SDL_GetScancodeFromKey(SDLK_w);
  78. keymap[0x29] = SDL_GetScancodeFromKey(SDLK_e);
  79. keymap[0x2a] = SDL_GetScancodeFromKey(SDLK_r);
  80. keymap[0x2b] = SDL_GetScancodeFromKey(SDLK_t);
  81. keymap[0x2c] = SDL_GetScancodeFromKey(SDLK_y);
  82. keymap[0x2d] = SDL_GetScancodeFromKey(SDLK_u);
  83. keymap[0x2e] = SDL_GetScancodeFromKey(SDLK_i);
  84. keymap[0x2f] = SDL_GetScancodeFromKey(SDLK_o);
  85. keymap[0x30] = SDL_GetScancodeFromKey(SDLK_p);
  86. keymap[0x31] = SDL_GetScancodeFromKey(SDLK_LEFTBRACKET);
  87. keymap[0x32] = SDL_GetScancodeFromKey(SDLK_RIGHTBRACKET);
  88. keymap[0x33] = SDL_GetScancodeFromKey(SDLK_BACKSLASH);
  89. keymap[0x34] = SDL_GetScancodeFromKey(SDLK_DELETE);
  90. keymap[0x35] = SDL_GetScancodeFromKey(SDLK_END);
  91. keymap[0x36] = SDL_GetScancodeFromKey(SDLK_PAGEDOWN);
  92. keymap[0x37] = SDL_GetScancodeFromKey(SDLK_KP_7);
  93. keymap[0x38] = SDL_GetScancodeFromKey(SDLK_KP_8);
  94. keymap[0x39] = SDL_GetScancodeFromKey(SDLK_KP_9);
  95. keymap[0x3a] = SDL_GetScancodeFromKey(SDLK_KP_PLUS);
  96. keymap[0x3b] = SDL_GetScancodeFromKey(SDLK_CAPSLOCK);
  97. keymap[0x3c] = SDL_GetScancodeFromKey(SDLK_a);
  98. keymap[0x3d] = SDL_GetScancodeFromKey(SDLK_s);
  99. keymap[0x3e] = SDL_GetScancodeFromKey(SDLK_d);
  100. keymap[0x3f] = SDL_GetScancodeFromKey(SDLK_f);
  101. keymap[0x40] = SDL_GetScancodeFromKey(SDLK_g);
  102. keymap[0x41] = SDL_GetScancodeFromKey(SDLK_h);
  103. keymap[0x42] = SDL_GetScancodeFromKey(SDLK_j);
  104. keymap[0x43] = SDL_GetScancodeFromKey(SDLK_k);
  105. keymap[0x44] = SDL_GetScancodeFromKey(SDLK_l);
  106. keymap[0x45] = SDL_GetScancodeFromKey(SDLK_SEMICOLON);
  107. keymap[0x46] = SDL_GetScancodeFromKey(SDLK_QUOTE);
  108. keymap[0x47] = SDL_GetScancodeFromKey(SDLK_RETURN);
  109. keymap[0x48] = SDL_GetScancodeFromKey(SDLK_KP_4);
  110. keymap[0x49] = SDL_GetScancodeFromKey(SDLK_KP_5);
  111. keymap[0x4a] = SDL_GetScancodeFromKey(SDLK_KP_6);
  112. keymap[0x4b] = SDL_GetScancodeFromKey(SDLK_LSHIFT);
  113. keymap[0x4c] = SDL_GetScancodeFromKey(SDLK_z);
  114. keymap[0x4d] = SDL_GetScancodeFromKey(SDLK_x);
  115. keymap[0x4e] = SDL_GetScancodeFromKey(SDLK_c);
  116. keymap[0x4f] = SDL_GetScancodeFromKey(SDLK_v);
  117. keymap[0x50] = SDL_GetScancodeFromKey(SDLK_b);
  118. keymap[0x51] = SDL_GetScancodeFromKey(SDLK_n);
  119. keymap[0x52] = SDL_GetScancodeFromKey(SDLK_m);
  120. keymap[0x53] = SDL_GetScancodeFromKey(SDLK_COMMA);
  121. keymap[0x54] = SDL_GetScancodeFromKey(SDLK_PERIOD);
  122. keymap[0x55] = SDL_GetScancodeFromKey(SDLK_SLASH);
  123. keymap[0x56] = SDL_GetScancodeFromKey(SDLK_RSHIFT);
  124. keymap[0x57] = SDL_GetScancodeFromKey(SDLK_UP);
  125. keymap[0x58] = SDL_GetScancodeFromKey(SDLK_KP_1);
  126. keymap[0x59] = SDL_GetScancodeFromKey(SDLK_KP_2);
  127. keymap[0x5a] = SDL_GetScancodeFromKey(SDLK_KP_3);
  128. keymap[0x5b] = SDL_GetScancodeFromKey(SDLK_KP_ENTER);
  129. keymap[0x5c] = SDL_GetScancodeFromKey(SDLK_LCTRL);
  130. keymap[0x5d] = SDL_GetScancodeFromKey(SDLK_LALT);
  131. keymap[0x5e] = SDL_GetScancodeFromKey(SDLK_SPACE);
  132. keymap[0x5f] = SDL_GetScancodeFromKey(SDLK_RALT);
  133. keymap[0x60] = SDL_GetScancodeFromKey(SDLK_RCTRL);
  134. keymap[0x61] = SDL_GetScancodeFromKey(SDLK_LEFT);
  135. keymap[0x62] = SDL_GetScancodeFromKey(SDLK_DOWN);
  136. keymap[0x63] = SDL_GetScancodeFromKey(SDLK_RIGHT);
  137. keymap[0x64] = SDL_GetScancodeFromKey(SDLK_KP_0);
  138. keymap[0x65] = SDL_GetScancodeFromKey(SDLK_KP_PERIOD);
  139. keymap[0x66] = SDL_GetScancodeFromKey(SDLK_LGUI);
  140. keymap[0x67] = SDL_GetScancodeFromKey(SDLK_RGUI);
  141. keymap[0x68] = SDL_GetScancodeFromKey(SDLK_MENU);
  142. keymap[0x69] = SDL_GetScancodeFromKey(SDLK_2); /* SDLK_EURO */
  143. keymap[0x6a] = SDL_GetScancodeFromKey(SDLK_KP_EQUALS);
  144. keymap[0x6b] = SDL_GetScancodeFromKey(SDLK_POWER);
  145. }
  146. SDL_Scancode BE_GetScancodeFromBeKey(int32 bkey) {
  147. if(bkey > 0 && bkey < (int32)SDL_TABLESIZE(keymap)) {
  148. return keymap[bkey];
  149. } else {
  150. return SDL_SCANCODE_UNKNOWN;
  151. }
  152. }
  153. int8 BE_GetKeyState(int32 bkey) {
  154. if(bkey > 0 && bkey < KEYMAP_SIZE) {
  155. return keystate[bkey];
  156. } else {
  157. return SDL_RELEASED;
  158. }
  159. }
  160. void BE_SetKeyState(int32 bkey, int8 state) {
  161. if(bkey > 0 && bkey < KEYMAP_SIZE) {
  162. keystate[bkey] = state;
  163. }
  164. }
  165. #ifdef __cplusplus
  166. }
  167. #endif
  168. #endif /* SDL_VIDEO_DRIVER_BWINDOW */