home *** CD-ROM | disk | FTP | other *** search
- #include "InputDeviceWindowsKeyboard.h"
- #include "InputManagerPtr.h"
- #include <win32/windows.h>
- #include <Converter.h>
-
- void InputDeviceWindowsKeyboard::key_up(int scan_code)
- {
- InputManagerPtr()->add_key_event( InputKeyEvent( get_name(), get_name_by_code( scan_code ), InputKeyEvent::RELEASE ) );
- }
-
- void InputDeviceWindowsKeyboard::key_down(int scan_code)
- {
- InputManagerPtr()->add_key_event( InputKeyEvent( get_name(), get_name_by_code( scan_code ), InputKeyEvent::PRESS ) );
- }
-
- void InputDeviceWindowsKeyboard::key_char(int scan_code)
- {
- InputManagerPtr()->add_key_event( InputKeyEvent( get_name(), String(1, scan_code), InputKeyEvent::TEXT ) );
- }
-
- String InputDeviceWindowsKeyboard::get_type()const
- {
- return "Keyboard";
- }
-
- String InputDeviceWindowsKeyboard::get_name()const
- {
- return "Keyboard";
- }
-
- String InputDeviceWindowsKeyboard::get_name_by_code(int scan_code)
- {
- switch(scan_code)
- {
- case VK_ESCAPE:
- return "Esc";
- case VK_RETURN:
- return "Enter";
- case VK_LEFT:
- return "Left";
- case VK_UP:
- return "Up";
- case VK_RIGHT:
- return "Right";
- case VK_DOWN:
- return "Down";
- case VK_SPACE:
- return "Space";
- case VK_DELETE:
- return "Delete";
- case VK_BACK:
- return "BackSpace";
- }
- char sy[2] = { 0, 0 };
- if( scan_code >= 0x30 && scan_code <= 0x39 )
- {
- sy[0] = "0123456789"[ scan_code - 0x30 ];
- return sy;
- }
- if( scan_code >= 0x41 && scan_code <= 0x5A )
- {
- sy[0] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[ scan_code - 0x41 ];
- return sy;
- }
- // VK_0 thru VK_9 are the same as ASCII '0' thru '9' (0x30 - 0x39)
- // VK_A thru VK_Z are the same as ASCII 'A' thru 'Z' (0x41 - 0x5A)
-
- return String("Key#") + Converter::convert( scan_code );
- /*
- #define VK_CANCEL 0x03
-
- #define VK_TAB 0x09
-
- #define VK_CLEAR 0x0C
-
- #define VK_SHIFT 0x10
- #define VK_CONTROL 0x11
- #define VK_MENU 0x12
- #define VK_PAUSE 0x13
- #define VK_CAPITAL 0x14
-
- #define VK_KANA 0x15
- #define VK_HANGEUL 0x15
- #define VK_HANGUL 0x15
- #define VK_JUNJA 0x17
- #define VK_FINAL 0x18
- #define VK_HANJA 0x19
- #define VK_KANJI 0x19
-
-
- #define VK_CONVERT 0x1C
- #define VK_NONCONVERT 0x1D
- #define VK_ACCEPT 0x1E
- #define VK_MODECHANGE 0x1F
-
- #define VK_PRIOR 0x21
- #define VK_NEXT 0x22
- #define VK_END 0x23
- #define VK_HOME 0x24
- #define VK_SELECT 0x29
- #define VK_PRINT 0x2A
- #define VK_EXECUTE 0x2B
- #define VK_SNAPSHOT 0x2C
- #define VK_INSERT 0x2D
- #define VK_HELP 0x2F
-
- // VK_0 thru VK_9 are the same as ASCII '0' thru '9' (0x30 - 0x39)
- // VK_A thru VK_Z are the same as ASCII 'A' thru 'Z' (0x41 - 0x5A)
-
- #define VK_LWIN 0x5B
- #define VK_RWIN 0x5C
- #define VK_APPS 0x5D
-
- #define VK_NUMPAD0 0x60
- #define VK_NUMPAD1 0x61
- #define VK_NUMPAD2 0x62
- #define VK_NUMPAD3 0x63
- #define VK_NUMPAD4 0x64
- #define VK_NUMPAD5 0x65
- #define VK_NUMPAD6 0x66
- #define VK_NUMPAD7 0x67
- #define VK_NUMPAD8 0x68
- #define VK_NUMPAD9 0x69
- #define VK_MULTIPLY 0x6A
- #define VK_ADD 0x6B
- #define VK_SEPARATOR 0x6C
- #define VK_SUBTRACT 0x6D
- #define VK_DECIMAL 0x6E
- #define VK_DIVIDE 0x6F
- #define VK_F1 0x70
- #define VK_F2 0x71
- #define VK_F3 0x72
- #define VK_F4 0x73
- #define VK_F5 0x74
- #define VK_F6 0x75
- #define VK_F7 0x76
- #define VK_F8 0x77
- #define VK_F9 0x78
- #define VK_F10 0x79
- #define VK_F11 0x7A
- #define VK_F12 0x7B
- #define VK_F13 0x7C
- #define VK_F14 0x7D
- #define VK_F15 0x7E
- #define VK_F16 0x7F
- #define VK_F17 0x80
- #define VK_F18 0x81
- #define VK_F19 0x82
- #define VK_F20 0x83
- #define VK_F21 0x84
- #define VK_F22 0x85
- #define VK_F23 0x86
- #define VK_F24 0x87
-
- #define VK_NUMLOCK 0x90
- #define VK_SCROLL 0x91
-
- //
- // VK_L* & VK_R* - left and right Alt, Ctrl and Shift virtual keys.
- // Used only as parameters to GetAsyncKeyState() and GetKeyState().
- // No other API or message will distinguish left and right keys in this way.
- //
- #define VK_LSHIFT 0xA0
- #define VK_RSHIFT 0xA1
- #define VK_LCONTROL 0xA2
- #define VK_RCONTROL 0xA3
- #define VK_LMENU 0xA4
- #define VK_RMENU 0xA5
- */
- }
-