• Main Page
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

src/window/header/InputWindow.inl

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         // mouseL
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         // mouseM
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         // mouseR
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         // mouse4
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         // mouse5
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         // mouse wheel
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

Generated on Fri Jun 18 2010 17:48:40 for Cannonball by  doxygen 1.7.0