00001 00032 #ifndef LL_LLKEYBOARDWIN32_H 00033 #define LL_LLKEYBOARDWIN32_H 00034 00035 #include "llkeyboard.h" 00036 00037 // this mask distinguishes extended keys, which include non-numpad arrow keys 00038 // (and, curiously, the num lock and numpad '/') 00039 const MASK MASK_EXTENDED = 0x0100; 00040 00041 class LLKeyboardWin32 : public LLKeyboard 00042 { 00043 public: 00044 LLKeyboardWin32(); 00045 /*virtual*/ ~LLKeyboardWin32() {}; 00046 00047 /*virtual*/ BOOL handleKeyUp(const U16 key, MASK mask); 00048 /*virtual*/ BOOL handleKeyDown(const U16 key, MASK mask); 00049 /*virtual*/ void resetMaskKeys(); 00050 /*virtual*/ MASK currentMask(BOOL for_mouse_event); 00051 /*virtual*/ void scanKeyboard(); 00052 BOOL translateExtendedKey(const U16 os_key, const MASK mask, KEY *translated_key); 00053 U16 inverseTranslateExtendedKey(const KEY translated_key); 00054 00055 protected: 00056 MASK updateModifiers(); 00057 //void setModifierKeyLevel( KEY key, BOOL new_state ); 00058 private: 00059 std::map<U16, KEY> mTranslateNumpadMap; 00060 std::map<KEY, U16> mInvTranslateNumpadMap; 00061 }; 00062 00063 #endif