Go to the documentation of this file.00001
00002 NAMESPACE_START
00003
00004 void InputWindow::handleRawInput(HRAWINPUT rawID){
00005 uchar buffer[64];
00006 const uint bufferSize = sizeof(buffer);
00007 uint sizeRAWINPUT;
00008
00009 if(GetRawInputData(rawID, RID_INPUT, buffer, &(sizeRAWINPUT = bufferSize), sizeof(RAWINPUTHEADER)) > 0){
00010 const RAWINPUT& rawInput = *(PRAWINPUT)buffer;
00011 switch(rawInput.header.dwType){
00012 case RIM_TYPEMOUSE:
00013 for(uint i=0; i<mouseDevices.size(); i++){
00014 MouseDevice& device = mouseDevices.getRef(i);
00015 if(device.ID == 0 || device.ID == int(rawInput.header.hDevice))
00016 rawMouseHandler(rawInput.data.mouse, device);
00017 }
00018 break;
00019 case RIM_TYPEKEYBOARD:
00020 for(uint i=0; i<keyboardDevices.size(); i++){
00021 KeyboardDevice& device = keyboardDevices.getRef(i);
00022 if(device.ID == 0 || device.ID == int(rawInput.header.hDevice))
00023 rawKeyboardHandler(rawInput.data.keyboard, device);
00024 }
00025 break;
00026 default:
00027 break;
00028 }
00029 }
00030 }
00031
00032 void InputWindow::rawMouseHandler(const RAWMOUSE& mouse, MouseDevice& mouseInput){
00033 mouseInput.addDx(mouse.lLastX);
00034 mouseInput.addDy(mouse.lLastY);
00035
00036
00037 if(mouse.usButtonFlags & RI_MOUSE_LEFT_BUTTON_DOWN)
00038 mouseInput.setBtnsDown(mouseMap.mouseL, true);
00039 if(mouse.usButtonFlags & RI_MOUSE_LEFT_BUTTON_UP){
00040 mouseInput.setBtnsUp(mouseMap.mouseL, true);
00041 mouseInput.setBtnsDown(mouseMap.mouseL, false);
00042 }
00043
00044 if(mouse.usButtonFlags & RI_MOUSE_MIDDLE_BUTTON_DOWN)
00045 mouseInput.setBtnsDown(mouseMap.mouseM, true);
00046 if(mouse.usButtonFlags & RI_MOUSE_MIDDLE_BUTTON_UP){
00047 mouseInput.setBtnsUp(mouseMap.mouseM, true);
00048 mouseInput.setBtnsDown(mouseMap.mouseM, false);
00049 }
00050
00051 if(mouse.usButtonFlags & RI_MOUSE_RIGHT_BUTTON_DOWN)
00052 mouseInput.setBtnsDown(mouseMap.mouseR, true);
00053 if(mouse.usButtonFlags & RI_MOUSE_RIGHT_BUTTON_UP){
00054 mouseInput.setBtnsUp(mouseMap.mouseR, true);
00055 mouseInput.setBtnsDown(mouseMap.mouseR, false);
00056 }
00057
00058 if(mouse.usButtonFlags & RI_MOUSE_BUTTON_4_DOWN)
00059 mouseInput.setBtnsDown(mouseMap.mouse4, true);
00060 if(mouse.usButtonFlags & RI_MOUSE_BUTTON_4_UP){
00061 mouseInput.setBtnsUp(mouseMap.mouse4, true);
00062 mouseInput.setBtnsDown(mouseMap.mouse4, false);
00063 }
00064
00065 if(mouse.usButtonFlags & RI_MOUSE_BUTTON_5_DOWN)
00066 mouseInput.setBtnsDown(mouseMap.mouse5, true);
00067 if(mouse.usButtonFlags & RI_MOUSE_BUTTON_5_UP){
00068 mouseInput.setBtnsUp(mouseMap.mouse5, true);
00069 mouseInput.setBtnsDown(mouseMap.mouse5, false);
00070 }
00071
00072 if(mouse.usButtonFlags & RI_MOUSE_WHEEL)
00073 mouseInput.addDz(int((short)mouse.usButtonData));
00074
00075 mouseInput.setChanged(true);
00076 }
00077
00078 void InputWindow::rawKeyboardHandler(const RAWKEYBOARD& key, KeyboardDevice& keyInput){
00079 const bool up = key.Message == WM_KEYUP;
00080 if(up){
00081 keyInput.setKeysUp(key.VKey, true);
00082 keyInput.setChanged(true);
00083 }else{
00084 keyInput.setChanged(keyInput.getKeysDown(key.VKey) == false);
00085 }
00086 keyInput.setKeysDown(key.VKey, !up);
00087 }
00088
00089 NAMESPACE_END