00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef _WINDOWSKEYMAPPER_
00019 #define _WINDOWSKEYMAPPER_
00020
00021 #include <winuser.h>
00022
00023 #include "input/AbstractKeyMapper.h"
00024 #include "input/InputEvent.h"
00025
00026 class WindowsKeyMapper : public AbstractKeyMapper
00027 {
00028 public:
00029 virtual int MapKeyCode(const int nPlatformKeyCode)
00030 {
00031 if(nPlatformKeyCode >= 0x30 && nPlatformKeyCode < 0x40)
00032 {
00033 return VIRTUALKEY_0 + (nPlatformKeyCode - 0x30);
00034 }
00035 else if(nPlatformKeyCode >= 0x41 && nPlatformKeyCode < 0x60)
00036 {
00037 return VIRTUALKEY_A + (nPlatformKeyCode - 0x41);
00038 }
00039 else if(nPlatformKeyCode >= 0x60 && nPlatformKeyCode < 0x6A)
00040 {
00041 return VIRTUALKEY_NUMPAD0 + (nPlatformKeyCode - 0x60);
00042 }
00043 else if(nPlatformKeyCode >= 0x70 && nPlatformKeyCode < 0x7C)
00044 {
00045 return VIRTUALKEY_F1 + (nPlatformKeyCode - 0x70);
00046 }
00047
00048 switch(nPlatformKeyCode)
00049 {
00050 case VK_BACK:
00051 return VIRTUALKEY_BACK;
00052 case VK_TAB:
00053 return VIRTUALKEY_TAB;
00054 case VK_RETURN:
00055 return VIRTUALKEY_RETURN;
00056 case VK_SHIFT:
00057 return VIRTUALKEY_SHIFT;
00058 case VK_CONTROL:
00059 return VIRTUALKEY_CONTROL;
00060 case VK_MENU:
00061 return VIRTUALKEY_MENU;
00062 case VK_PAUSE:
00063 return VIRTUALKEY_PAUSE;
00064 case VK_ESCAPE:
00065 return VIRTUALKEY_ESCAPE;
00066 case VK_SPACE:
00067 return VIRTUALKEY_SPACE;
00068 case VK_END:
00069 return VIRTUALKEY_END;
00070 case VK_HOME:
00071 return VIRTUALKEY_HOME;
00072 case VK_LEFT:
00073 return VIRTUALKEY_LEFT;
00074 case VK_UP:
00075 return VIRTUALKEY_UP;
00076 case VK_RIGHT:
00077 return VIRTUALKEY_RIGHT;
00078 case VK_DOWN:
00079 return VIRTUALKEY_DOWN;
00080 case VK_SELECT:
00081 return VIRTUALKEY_SELECT;
00082 case VK_SNAPSHOT:
00083 return VIRTUALKEY_SNAPSHOT;
00084 case VK_INSERT:
00085 return VIRTUALKEY_INSERT;
00086 case VK_DELETE:
00087 return VIRTUALKEY_DELETE;
00088 case VK_HELP:
00089 return VIRTUALKEY_HELP;
00090 case VK_MULTIPLY:
00091 return VIRTUALKEY_MULTIPLY;
00092 case VK_ADD:
00093 return VIRTUALKEY_ADD;
00094 case VK_SEPARATOR:
00095 return VIRTUALKEY_SEPARATOR;
00096 case VK_SUBTRACT:
00097 return VIRTUALKEY_SUBTRACT;
00098 case VK_DECIMAL:
00099 return VIRTUALKEY_DECIMAL;
00100 case VK_DIVIDE:
00101 return VIRTUALKEY_DIVIDE;
00102 case VK_NUMLOCK:
00103 return VIRTUALKEY_NUMLOCK;
00104 case VK_SCROLL:
00105 return VIRTUALKEY_SCROLL;
00106 case VK_LSHIFT:
00107 return VIRTUALKEY_LSHIFT;
00108 case VK_RSHIFT:
00109 return VIRTUALKEY_RSHIFT;
00110 case VK_LCONTROL:
00111 return VIRTUALKEY_LCONTROL;
00112 case VK_RCONTROL:
00113 return VIRTUALKEY_RCONTROL;
00114 }
00115 return 0;
00116 }
00117 };
00118
00119 #endif