Beispiel #1
0
void InputManager::HandleEvent( SDL_Event& ev )
{
    if ( ev.type == SDL_MOUSEMOTION )
    {
        HandleMouseMotionEvent( *reinterpret_cast<SDL_MouseMotionEvent*>( &ev ) );
    }
    else if ( ev.type == SDL_MOUSEBUTTONDOWN )
    {
        HandleMouseButtonEvent( *reinterpret_cast<SDL_MouseButtonEvent*>( &ev ), ButtonState::Pressed );
    }
    else if ( ev.type == SDL_MOUSEBUTTONUP )
    {
        HandleMouseButtonEvent( *reinterpret_cast<SDL_MouseButtonEvent*>( &ev ), ButtonState::Released );
    }
    else if ( ev.type == SDL_MOUSEWHEEL )
    {
        HandleMouseWheelEvent( ev.wheel );
    }
    else if ( ev.type == SDL_KEYDOWN )
    {
        HandleKeyboardEvent( ev.key, ButtonState::Pressed );
    }
    else if ( ev.type == SDL_KEYUP )
    {
        HandleKeyboardEvent( ev.key, ButtonState::Released );
    }

    if ( FrameWork::GetGuiManager() && FrameWork::GetGuiManager()->GetFocusedInputArea() )
    {
        HandleInputAreaEvent( ev );
    }
}
nsEventStatus
AccessibleCaretEventHub::HandleEvent(WidgetEvent* aEvent)
{
  nsEventStatus status = nsEventStatus_eIgnore;

  if (!mInitialized) {
    return status;
  }

  MOZ_ASSERT(mRefCnt.get() > 1, "Expect caller holds us as well!");

  switch (aEvent->mClass) {
    case eMouseEventClass:
      status = HandleMouseEvent(aEvent->AsMouseEvent());
      break;

    case eTouchEventClass:
      status = HandleTouchEvent(aEvent->AsTouchEvent());
      break;

    case eKeyboardEventClass:
      status = HandleKeyboardEvent(aEvent->AsKeyboardEvent());
      break;

    default:
      break;
  }

  return status;
}
nsEventStatus
AccessibleCaretEventHub::HandleEvent(WidgetEvent* aEvent)
{
  nsEventStatus status = nsEventStatus_eIgnore;

  if (!mInitialized) {
    return status;
  }

  switch (aEvent->mClass) {
  case eMouseEventClass:
    status = HandleMouseEvent(aEvent->AsMouseEvent());
    break;

  case eWheelEventClass:
    status = HandleWheelEvent(aEvent->AsWheelEvent());
    break;

  case eTouchEventClass:
    status = HandleTouchEvent(aEvent->AsTouchEvent());
    break;

  case eKeyboardEventClass:
    status = HandleKeyboardEvent(aEvent->AsKeyboardEvent());
    break;

  default:
    break;
  }

  return status;
}
Beispiel #4
0
// Handle keyboard events
//-----------------------------------------------------------------------------
CPUTEventHandledCode CPUT_DX11::CPUTHandleKeyboardEvent(CPUTKey key)
{
    // dispatch event to GUI to handle GUI triggers (if any)
    CPUTEventHandledCode handleCode = CPUTGuiControllerDX11::GetController()->HandleKeyboardEvent(key);

    // dispatch event to users HandleMouseEvent() method
    HEAPCHECK;
    handleCode = HandleKeyboardEvent(key);
    HEAPCHECK;

    return handleCode;
}
// Handle keyboard events
//-----------------------------------------------------------------------------
CPUTEventHandledCode CPUT_OGL::CPUTHandleKeyboardEvent(CPUTKey key, CPUTKeyState state)
{
    CPUTEventHandledCode handleCode;
    
    // dispatch event to GUI to handle GUI triggers (if any) #### no GUI for now
    //CPUTEventHandledCode handleCode = CPUTGuiController::GetController()->HandleKeyboardEvent(key);

    // dispatch event to users HandleMouseEvent() method
    HEAPCHECK;
    handleCode = HandleKeyboardEvent(key, state);
    HEAPCHECK;

    return handleCode;
}
void HaikuDirectWindow::DispatchMessage(BMessage *message, BHandler *handler) {
	switch (message->what) {
		case B_MOUSE_DOWN:
		case B_MOUSE_UP:
			HandleMouseButton(message);
			break;

		case B_MOUSE_MOVED:
			HandleMouseMoved(message);
			break;

		case B_MOUSE_WHEEL_CHANGED:
			HandleMouseWheelChanged(message);
			break;

		case B_KEY_DOWN:
		case B_KEY_UP:
			HandleKeyboardEvent(message);
			break;

		case B_MODIFIERS_CHANGED:
			HandleKeyboardModifierEvent(message);
			break;

		case B_WINDOW_RESIZED:
			HandleWindowResized(message);
			break;

		case LOCKGL_MSG:
			view->LockGL();
			break;

		case UNLOCKGL_MSG:
			view->UnlockGL();
			break;

		default:
			BDirectWindow::DispatchMessage(message, handler);
	}
}
int main(int argc, char **argv) {
  const char *optstring = "hd:c:t:FLRUDS:";

  int o;
  int delay = 0;

  int device_type = 1;
  
  char *device = NULL;

  unsigned int set_event = 0;
  unsigned int set_fire = 0, set_left = 0, set_right = 0;
  unsigned int set_up = 0, set_down = 0, set_stop = 0;

  //---------------------------------------------------------------------------
  // Get args

  o = getopt(argc, argv, optstring);

  while (o != -1) {
    switch (o) {

    case 'h':
      usage(argv[0]);
      return 0;

    case 'd':
      debug_level = atoi(optarg);
      fprintf(stderr, "debug_level set to %d\n", debug_level);
      break;

    case 'c':
      device = optarg;
      set_event = 1;
      break;

    case 't':
      device_type = atoi(optarg);
      break;

    case 'F':
      set_fire = 1;
      break;

    case 'U':
      set_up = 1;
      break;

    case 'D':
      set_down = 1;
      break;

    case 'L':
      set_left = 1;
      break;

    case 'R':
      set_right = 1;
      break;

    case 'S':
      set_stop = 1;
      delay = atoi(optarg);
      break;

    }
    o = getopt(argc, argv, optstring);
  }

  //---------------------------------------------------------------------------

  if (missile_usb_initialise() != 0) {
    fprintf(stderr, "missile_usb_initalise failed: %s\n", strerror(errno));
    return -1;
  }
  
  control = missile_usb_create(debug_level, USB_TIMEOUT);
  if (control == NULL) {
    fprintf(stderr, "missile_usb_create() failed\n");
    return -1;
  }
  
  if (missile_usb_finddevice(control, 0, device_type) != 0) {
    fprintf(stderr, "USBMissileLauncher device not found\n");
    return -1;
  }

  if (debug_level)
    fprintf(stderr, "Now we're ready.  Move the thing around, and FIRE!\n");

  //---------------------------------------------------------------------------

  int fd;
  struct input_event ev[64];
  int events;

  if (set_event) {

    if (device == NULL) {
      fprintf(stderr, "No device given\n");
      usage(argv[0]);    
      return 0;
    }
    
    if (IEOpen(device, &fd) < 0) {
      fprintf(stderr, "IEOpen(%s, fd) failed\n", device);
      return -1;
    }

    while (1) {

      if (IERead(fd, ev, &events) < 0) {
	fprintf(stderr, "IERead() failed\n");
	return -1;
      }

      if (HandleKeyboardEvent(ev, events, device_type) < 0) {
	fprintf(stderr, "HandleKeyboardEvent() failed\n");
	return -1;
      }

      usleep(200000);
	
    }
    
  }

  //---------------------------------------------------------------------------

  char msg = 0x00;

  switch (device_type) {
    
  case DEVICE_TYPE_MISSILE_LAUNCHER:
  
    if (set_left)
      msg |= MISSILE_LAUNCHER_CMD_LEFT;
    
    if (set_right)
      msg |= MISSILE_LAUNCHER_CMD_RIGHT;
    
    if (set_up)
      msg |= MISSILE_LAUNCHER_CMD_UP;
    
    if (set_down)
      msg |= MISSILE_LAUNCHER_CMD_DOWN;
    
    if (set_fire)
      msg |= MISSILE_LAUNCHER_CMD_FIRE;

    missile_do(control, msg, device_type);
    
    if (set_stop) {
      usleep(delay * 1000);
      missile_do(control, MISSILE_LAUNCHER_CMD_STOP, device_type);
    }

    break;

  case DEVICE_TYPE_CIRCUS_CANNON:

    if (set_left)
      msg |= CIRCUS_CANNON_CMD_LEFT;
    
    if (set_right)
      msg |= CIRCUS_CANNON_CMD_RIGHT;
    
    if (set_up)
      msg |= CIRCUS_CANNON_CMD_UP;
    
    if (set_down)
      msg |= CIRCUS_CANNON_CMD_DOWN;
    
    if (set_fire)
      msg |= CIRCUS_CANNON_CMD_FIRE;

    missile_do(control, msg, device_type);

    if (set_stop) {
      usleep(delay * 1000);
      missile_do(control, CIRCUS_CANNON_CMD_STOP, device_type);
    }
      
    break;
    
  default:
    printf("Device Type (%d) not implemented, please do it!\n",
	   device_type);
    return -1;
    
  }

  missile_usb_destroy(control);  

  //---------------------------------------------------------------------------

  return 0;
}
Beispiel #8
0
bool LocalEvent::HandleEvents(bool delay)
{
    SDL_Event event;

    ResetModes(MOUSE_MOTION);
    ResetModes(KEY_PRESSED);

    while(SDL_PollEvent(&event))
    {
	switch(event.type)
	{
	    case SDL_ACTIVEEVENT:
		if(event.active.state & SDL_APPACTIVE)
		{
#ifdef WITH_MIXER
		    if(Mixer::isValid())
		    {
			//iconify
			if(0 == event.active.gain)
			{
			    Mixer::Reset();
			    Music::Pause();
			    loop_delay = 100;
			}
			else
			    loop_delay = 1;
		    }
#endif
		}
		break;

	    // keyboard
	    case SDL_KEYDOWN:
	    case SDL_KEYUP:
                HandleKeyboardEvent(event.key);
	    	break;

	    // mouse motion
	    case SDL_MOUSEMOTION:
		HandleMouseMotionEvent(event.motion);
		break;

	    // mouse button
	    case SDL_MOUSEBUTTONDOWN:
	    case SDL_MOUSEBUTTONUP:
		HandleMouseButtonEvent(event.button);
		break;
	
	    // exit
	    case SDL_QUIT:
		Error::Except(__FUNCTION__, "SDL_QUIT");
		return false;

	    default:
		break;
	}

        // need for wheel up/down delay
        if(SDL_BUTTON_WHEELDOWN == event.button.button || SDL_BUTTON_WHEELUP == event.button.button) break;
    }

    // emulate press right
    if((modes & TAP_MODE) && (modes & CLOCK_ON))
    {
	clock.Stop();
	if(clock_delay < clock.Get())
	{
	    ResetModes(CLICK_LEFT);
	    ResetModes(CLOCK_ON);
	    mouse_pr = mouse_cu;
	    SetModes(MOUSE_PRESSED);
	    mouse_button = SDL_BUTTON_RIGHT;
	}
    }

    if(delay) SDL_Delay(loop_delay);

    return true;
}