home *** CD-ROM | disk | FTP | other *** search
/ Game.EXE 2002 June / Game.EXE_06_2002.iso / Alawar / Lib / InputForGameExe / InputDeviceWindowsKeyboard.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2002-04-26  |  4.6 KB  |  171 lines

  1. #include "InputDeviceWindowsKeyboard.h"
  2. #include "InputManagerPtr.h"
  3. #include <win32/windows.h>
  4. #include <Converter.h>
  5.  
  6. void InputDeviceWindowsKeyboard::key_up(int scan_code)
  7. {
  8.     InputManagerPtr()->add_key_event( InputKeyEvent( get_name(), get_name_by_code( scan_code ), InputKeyEvent::RELEASE ) );
  9. }
  10.  
  11. void InputDeviceWindowsKeyboard::key_down(int scan_code)
  12. {
  13.     InputManagerPtr()->add_key_event( InputKeyEvent( get_name(), get_name_by_code( scan_code ), InputKeyEvent::PRESS ) );
  14. }
  15.  
  16. void InputDeviceWindowsKeyboard::key_char(int scan_code)
  17. {
  18.     InputManagerPtr()->add_key_event( InputKeyEvent( get_name(), String(1, scan_code), InputKeyEvent::TEXT ) );
  19. }
  20.  
  21. String InputDeviceWindowsKeyboard::get_type()const
  22. {
  23.     return "Keyboard";
  24. }
  25.  
  26. String InputDeviceWindowsKeyboard::get_name()const
  27. {
  28.     return "Keyboard";
  29. }
  30.  
  31. String InputDeviceWindowsKeyboard::get_name_by_code(int scan_code)
  32. {
  33.     switch(scan_code)
  34.     {
  35.     case VK_ESCAPE:
  36.         return "Esc";
  37.     case VK_RETURN:
  38.         return "Enter";
  39.     case VK_LEFT:
  40.         return "Left";
  41.     case VK_UP:
  42.         return "Up";
  43.     case VK_RIGHT:
  44.         return "Right";
  45.     case VK_DOWN:
  46.         return "Down";
  47.     case VK_SPACE:
  48.         return "Space";
  49.     case VK_DELETE:
  50.         return "Delete";
  51.     case VK_BACK:
  52.         return "BackSpace";
  53.     }
  54.     char sy[2] = { 0, 0 };
  55.     if( scan_code >= 0x30 && scan_code <= 0x39 )
  56.     {
  57.         sy[0] = "0123456789"[ scan_code - 0x30 ];
  58.         return sy;
  59.     }
  60.     if( scan_code >= 0x41 && scan_code <= 0x5A )
  61.     {
  62.         sy[0] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[ scan_code - 0x41 ];
  63.         return sy;
  64.     }
  65. // VK_0 thru VK_9 are the same as ASCII '0' thru '9' (0x30 - 0x39)
  66. // VK_A thru VK_Z are the same as ASCII 'A' thru 'Z' (0x41 - 0x5A)
  67.  
  68.     return String("Key#") + Converter::convert( scan_code );
  69. /*
  70. #define VK_CANCEL         0x03
  71.  
  72. #define VK_TAB            0x09
  73.  
  74. #define VK_CLEAR          0x0C
  75.  
  76. #define VK_SHIFT          0x10
  77. #define VK_CONTROL        0x11
  78. #define VK_MENU           0x12
  79. #define VK_PAUSE          0x13
  80. #define VK_CAPITAL        0x14
  81.  
  82. #define VK_KANA           0x15
  83. #define VK_HANGEUL        0x15
  84. #define VK_HANGUL         0x15
  85. #define VK_JUNJA          0x17
  86. #define VK_FINAL          0x18
  87. #define VK_HANJA          0x19
  88. #define VK_KANJI          0x19
  89.  
  90.  
  91. #define VK_CONVERT        0x1C
  92. #define VK_NONCONVERT     0x1D
  93. #define VK_ACCEPT         0x1E
  94. #define VK_MODECHANGE     0x1F
  95.  
  96. #define VK_PRIOR          0x21
  97. #define VK_NEXT           0x22
  98. #define VK_END            0x23
  99. #define VK_HOME           0x24
  100. #define VK_SELECT         0x29
  101. #define VK_PRINT          0x2A
  102. #define VK_EXECUTE        0x2B
  103. #define VK_SNAPSHOT       0x2C
  104. #define VK_INSERT         0x2D
  105. #define VK_HELP           0x2F
  106.  
  107. // VK_0 thru VK_9 are the same as ASCII '0' thru '9' (0x30 - 0x39)
  108. // VK_A thru VK_Z are the same as ASCII 'A' thru 'Z' (0x41 - 0x5A)
  109.  
  110. #define VK_LWIN           0x5B
  111. #define VK_RWIN           0x5C
  112. #define VK_APPS           0x5D
  113.  
  114. #define VK_NUMPAD0        0x60
  115. #define VK_NUMPAD1        0x61
  116. #define VK_NUMPAD2        0x62
  117. #define VK_NUMPAD3        0x63
  118. #define VK_NUMPAD4        0x64
  119. #define VK_NUMPAD5        0x65
  120. #define VK_NUMPAD6        0x66
  121. #define VK_NUMPAD7        0x67
  122. #define VK_NUMPAD8        0x68
  123. #define VK_NUMPAD9        0x69
  124. #define VK_MULTIPLY       0x6A
  125. #define VK_ADD            0x6B
  126. #define VK_SEPARATOR      0x6C
  127. #define VK_SUBTRACT       0x6D
  128. #define VK_DECIMAL        0x6E
  129. #define VK_DIVIDE         0x6F
  130. #define VK_F1             0x70
  131. #define VK_F2             0x71
  132. #define VK_F3             0x72
  133. #define VK_F4             0x73
  134. #define VK_F5             0x74
  135. #define VK_F6             0x75
  136. #define VK_F7             0x76
  137. #define VK_F8             0x77
  138. #define VK_F9             0x78
  139. #define VK_F10            0x79
  140. #define VK_F11            0x7A
  141. #define VK_F12            0x7B
  142. #define VK_F13            0x7C
  143. #define VK_F14            0x7D
  144. #define VK_F15            0x7E
  145. #define VK_F16            0x7F
  146. #define VK_F17            0x80
  147. #define VK_F18            0x81
  148. #define VK_F19            0x82
  149. #define VK_F20            0x83
  150. #define VK_F21            0x84
  151. #define VK_F22            0x85
  152. #define VK_F23            0x86
  153. #define VK_F24            0x87
  154.  
  155. #define VK_NUMLOCK        0x90
  156. #define VK_SCROLL         0x91
  157.  
  158. //
  159. // VK_L* & VK_R* - left and right Alt, Ctrl and Shift virtual keys.
  160. // Used only as parameters to GetAsyncKeyState() and GetKeyState().
  161. // No other API or message will distinguish left and right keys in this way.
  162. //
  163. #define VK_LSHIFT         0xA0
  164. #define VK_RSHIFT         0xA1
  165. #define VK_LCONTROL       0xA2
  166. #define VK_RCONTROL       0xA3
  167. #define VK_LMENU          0xA4
  168. #define VK_RMENU          0xA5
  169. */
  170. }
  171.