Ejemplo n.º 1
0
int BGI_getch()
{
  static int lastKey = -1;
  int c;

  if(lastKey != -1)
  {
    c = lastKey;
    lastKey = -1;
    SendMessage(window.wnd, WM_KEYPROCESSED, 0, 0);
    return translateKeyCode(c);
  }

  IPC_waitEvent(sharedObjects.keyboardEvent);

  if(sharedStruct->keyCode > 0)
  {
    lastKey = sharedStruct->keyCode;
    return 0;
  }

  c = sharedStruct->keyLetter;
  SendMessage(window.wnd, WM_KEYPROCESSED, 0, 0);
  return c;
}
Ejemplo n.º 2
0
  bool processEvent(const SDL_Event &evt) {
    if (not canvas) {
      return false;
    }

    switch (evt.type) {
    case SDL_MOUSEMOTION:
      return canvas->InputMouseMoved(evt.motion.x, evt.motion.y, evt.motion.xrel, evt.motion.yrel);

    case SDL_MOUSEWHEEL:
      return canvas->InputMouseWheel(evt.wheel.y);

    case SDL_MOUSEBUTTONDOWN:
    case SDL_MOUSEBUTTONUP: {
      int button;
      switch (evt.button.button) {
      case SDL_BUTTON_LEFT:
        button = 0;
        break;
      case SDL_BUTTON_RIGHT:
        button = 1;
        break;
      case SDL_BUTTON_MIDDLE:
        button = 2;
        break;
      }
      return canvas->InputMouseButton(button, evt.type == SDL_MOUSEBUTTONDOWN);
    }

    /*case ALLEGRO_EVENT_KEY_CHAR:
      {
        return canvas->InputCharacter(event.keyboard.unichar);
      }*/

    case SDL_KEYDOWN:
    case SDL_KEYUP: {
      bool down = (evt.type == SDL_KEYDOWN);

      if (evt.key.keysym.sym and down and
          evt.key.keysym.sym >= ' ' and evt.key.keysym.sym <= '~') {
        return canvas->InputCharacter(evt.key.keysym.sym);
      }

      unsigned char key = translateKeyCode(evt.key.keysym.sym);
      return canvas->InputKey(key, down);
    }
    }

    return false;
  }
Ejemplo n.º 3
0
Archivo: main.c Proyecto: pixma/ecs
void main(){
	char  cChoiceMenu;	
	lcdBegin();
	SplashScreenWindow();
	InitUartComm();
	delay( 1000 );
	key_init();
	ecs_MainMenu();	
	while( 1 )
	{		
		//pooling for the keypads to let the user to select the choice from the options shown...	
		cChoiceMenu = translateKeyCode( get_key() );
		
		if( cChoiceMenu == '3' ){
				//Sync Data operation mode....
				syncScreenActivity();
				clearLcdScreen();
				ecs_MainMenu();
		}
		else if( cChoiceMenu == '7' )
		{
			//Settings like date settings only...
			SettingActivity();
			clearLcdScreen();
			ecs_MainMenu();
		}
		else if( cChoiceMenu == 'B')
		{
			//Data Entry Mode operation....
			dataEntrySession();
			clearLcdScreen();
			ecs_MainMenu();
		}
		else
		{
			//catch the unallocated button as invalid and indicate the user about it...
		}				
	}
	
}
Ejemplo n.º 4
0
Archivo: x11_init.c Proyecto: jku/glfw
// Create key code translation tables
//
static void createKeyTables(void)
{
    int scancode, key;

    memset(_glfw.x11.publicKeys, -1, sizeof(_glfw.x11.publicKeys));

    if (_glfw.x11.xkb.available)
    {
        // Use XKB to determine physical key locations independently of the current
        // keyboard layout

        char name[XkbKeyNameLength + 1];
        XkbDescPtr desc = XkbGetMap(_glfw.x11.display, 0, XkbUseCoreKbd);
        XkbGetNames(_glfw.x11.display, XkbKeyNamesMask, desc);

        // Find the X11 key code -> GLFW key code mapping
        for (scancode = desc->min_key_code;  scancode <= desc->max_key_code;  scancode++)
        {
            memcpy(name, desc->names->keys[scancode].name, XkbKeyNameLength);
            name[XkbKeyNameLength] = '\0';

            // Map the key name to a GLFW key code. Note: We only map printable
            // keys here, and we use the US keyboard layout. The rest of the
            // keys (function keys) are mapped using traditional KeySym
            // translations.
            if (strcmp(name, "TLDE") == 0) key = GLFW_KEY_GRAVE_ACCENT;
            else if (strcmp(name, "AE01") == 0) key = GLFW_KEY_1;
            else if (strcmp(name, "AE02") == 0) key = GLFW_KEY_2;
            else if (strcmp(name, "AE03") == 0) key = GLFW_KEY_3;
            else if (strcmp(name, "AE04") == 0) key = GLFW_KEY_4;
            else if (strcmp(name, "AE05") == 0) key = GLFW_KEY_5;
            else if (strcmp(name, "AE06") == 0) key = GLFW_KEY_6;
            else if (strcmp(name, "AE07") == 0) key = GLFW_KEY_7;
            else if (strcmp(name, "AE08") == 0) key = GLFW_KEY_8;
            else if (strcmp(name, "AE09") == 0) key = GLFW_KEY_9;
            else if (strcmp(name, "AE10") == 0) key = GLFW_KEY_0;
            else if (strcmp(name, "AE11") == 0) key = GLFW_KEY_MINUS;
            else if (strcmp(name, "AE12") == 0) key = GLFW_KEY_EQUAL;
            else if (strcmp(name, "AD01") == 0) key = GLFW_KEY_Q;
            else if (strcmp(name, "AD02") == 0) key = GLFW_KEY_W;
            else if (strcmp(name, "AD03") == 0) key = GLFW_KEY_E;
            else if (strcmp(name, "AD04") == 0) key = GLFW_KEY_R;
            else if (strcmp(name, "AD05") == 0) key = GLFW_KEY_T;
            else if (strcmp(name, "AD06") == 0) key = GLFW_KEY_Y;
            else if (strcmp(name, "AD07") == 0) key = GLFW_KEY_U;
            else if (strcmp(name, "AD08") == 0) key = GLFW_KEY_I;
            else if (strcmp(name, "AD09") == 0) key = GLFW_KEY_O;
            else if (strcmp(name, "AD10") == 0) key = GLFW_KEY_P;
            else if (strcmp(name, "AD11") == 0) key = GLFW_KEY_LEFT_BRACKET;
            else if (strcmp(name, "AD12") == 0) key = GLFW_KEY_RIGHT_BRACKET;
            else if (strcmp(name, "AC01") == 0) key = GLFW_KEY_A;
            else if (strcmp(name, "AC02") == 0) key = GLFW_KEY_S;
            else if (strcmp(name, "AC03") == 0) key = GLFW_KEY_D;
            else if (strcmp(name, "AC04") == 0) key = GLFW_KEY_F;
            else if (strcmp(name, "AC05") == 0) key = GLFW_KEY_G;
            else if (strcmp(name, "AC06") == 0) key = GLFW_KEY_H;
            else if (strcmp(name, "AC07") == 0) key = GLFW_KEY_J;
            else if (strcmp(name, "AC08") == 0) key = GLFW_KEY_K;
            else if (strcmp(name, "AC09") == 0) key = GLFW_KEY_L;
            else if (strcmp(name, "AC10") == 0) key = GLFW_KEY_SEMICOLON;
            else if (strcmp(name, "AC11") == 0) key = GLFW_KEY_APOSTROPHE;
            else if (strcmp(name, "AB01") == 0) key = GLFW_KEY_Z;
            else if (strcmp(name, "AB02") == 0) key = GLFW_KEY_X;
            else if (strcmp(name, "AB03") == 0) key = GLFW_KEY_C;
            else if (strcmp(name, "AB04") == 0) key = GLFW_KEY_V;
            else if (strcmp(name, "AB05") == 0) key = GLFW_KEY_B;
            else if (strcmp(name, "AB06") == 0) key = GLFW_KEY_N;
            else if (strcmp(name, "AB07") == 0) key = GLFW_KEY_M;
            else if (strcmp(name, "AB08") == 0) key = GLFW_KEY_COMMA;
            else if (strcmp(name, "AB09") == 0) key = GLFW_KEY_PERIOD;
            else if (strcmp(name, "AB10") == 0) key = GLFW_KEY_SLASH;
            else if (strcmp(name, "BKSL") == 0) key = GLFW_KEY_BACKSLASH;
            else if (strcmp(name, "LSGT") == 0) key = GLFW_KEY_WORLD_1;
            else key = GLFW_KEY_UNKNOWN;

            if ((scancode >= 0) && (scancode < 256))
                _glfw.x11.publicKeys[scancode] = key;
        }

        XkbFreeNames(desc, XkbKeyNamesMask, True);
        XkbFreeClientMap(desc, 0, True);
    }

    // Translate the un-translated key codes using traditional X11 KeySym
    // lookups
    for (scancode = 0;  scancode < 256;  scancode++)
    {
        if (_glfw.x11.publicKeys[scancode] < 0)
            _glfw.x11.publicKeys[scancode] = translateKeyCode(scancode);
    }
}
Ejemplo n.º 5
0
bool
DecafSDL::run(const std::string &gamePath)
{
   auto shouldQuit = false;

   // Setup some basic window stuff
   auto window = mGraphicsDriver->getWindow();

   setWindowIcon(window);

   if (config::display::mode == config::display::Fullscreen) {
      SDL_SetWindowFullscreen(window, SDL_WINDOW_FULLSCREEN_DESKTOP);
   }

   // Setup OpenGL graphics driver
   auto graphicsDriver = mGraphicsDriver->getDecafDriver();
   decaf::setGraphicsDriver(graphicsDriver);

   auto debugUiRenderer = mGraphicsDriver->getDecafDebugUiRenderer();
   decaf::setDebugUiRenderer(debugUiRenderer);

   // Set input provider
   decaf::setInputDriver(this);
   decaf::addEventListener(this);
   openInputDevices();

   // Set sound driver
   decaf::setSoundDriver(mSoundDriver);

   decaf::setClipboardTextCallbacks(
      [](void *context) -> const char * {
         return SDL_GetClipboardText();
      },
      [](void *context, const char *text) {
         SDL_SetClipboardText(text);
      });

   // Initialise emulator
   if (!decaf::initialise(gamePath)) {
      return false;
   }

   // Start emulator
   decaf::start();

   while (!shouldQuit && !decaf::hasExited()) {
      if (mVpad0Controller) {
         SDL_GameControllerUpdate();
      }

      SDL_Event event;

      while (SDL_PollEvent(&event)) {
         switch (event.type) {
         case SDL_WINDOWEVENT:
            if (event.window.event == SDL_WINDOWEVENT_CLOSE) {
               shouldQuit = true;
            }

            break;
         case SDL_MOUSEBUTTONDOWN:
            decaf::injectMouseButtonInput(translateMouseButton(event.button.button), decaf::input::MouseAction::Press);
            break;
         case SDL_MOUSEBUTTONUP:
            decaf::injectMouseButtonInput(translateMouseButton(event.button.button), decaf::input::MouseAction::Release);
            break;
         case SDL_MOUSEWHEEL:
            decaf::injectScrollInput(static_cast<float>(event.wheel.x), static_cast<float>(event.wheel.y));
            break;
         case SDL_MOUSEMOTION:
            decaf::injectMousePos(static_cast<float>(event.motion.x), static_cast<float>(event.motion.y));
            break;
         case SDL_KEYDOWN:
            decaf::injectKeyInput(translateKeyCode(event.key.keysym), decaf::input::KeyboardAction::Press);
            break;
         case SDL_KEYUP:
            if (event.key.keysym.sym == SDLK_TAB) {
               mToggleDRC = !mToggleDRC;
            }

            if (event.key.keysym.sym == SDLK_ESCAPE) {
               shouldQuit = true;
            }

            decaf::injectKeyInput(translateKeyCode(event.key.keysym), decaf::input::KeyboardAction::Release);
            break;
         case SDL_TEXTINPUT:
            decaf::injectTextInput(event.text.text);
            break;
         case SDL_QUIT:
            shouldQuit = true;
            break;
         }
      }

      Viewport tvViewport, drcViewport;
      calculateScreenViewports(tvViewport, drcViewport);
      mGraphicsDriver->renderFrame(tvViewport, drcViewport);
   }

   // Shut down decaf
   decaf::shutdown();

   // Shut down graphics
   mGraphicsDriver->shutdown();

   return true;
}
Ejemplo n.º 6
0
void
QtHaikuWindow::DispatchMessage(BMessage *msg, BHandler *handler)
{
	switch(msg->what) {
		case B_UNMAPPED_KEY_DOWN:
		case B_KEY_DOWN:
			{
				uint32 modifier = msg->FindInt32("modifiers");
				uint32 key = msg->FindInt32("key");
				
				QString text;
				
				const char* bytes;;
				if(msg->FindString("bytes", &bytes) == B_OK)
					text = QString::fromUtf8(bytes);
				
				Qt::KeyboardModifiers modifiers;
		        if (modifier & B_SHIFT_KEY)
		            modifiers |= Qt::ShiftModifier;
		
		        if (modifier & B_CONTROL_KEY)
		            modifiers |= Qt::AltModifier;
		
		        if (modifier & B_COMMAND_KEY)
		            modifiers |= Qt::ControlModifier;
		
				QWindowSystemInterface::handleWindowActivated(fQWindow->window());
		
		        QWindowSystemInterface::handleKeyEvent(0,
                                        QEvent::KeyPress,
                                        translateKeyCode(key),
                                        modifiers,
                                        text,
                                        false);

				break;	
			}
		case B_UNMAPPED_KEY_UP:
		case B_KEY_UP:
			{
				uint32 modifier = msg->FindInt32("modifiers");
				uint32 key = msg->FindInt32("key");
				
				QString text;
				
				const char* bytes;;
				if(msg->FindString("bytes", &bytes) == B_OK)
					text = QString::fromUtf8(bytes);
				
				Qt::KeyboardModifiers modifiers;
		        if (modifier & B_SHIFT_KEY)
		            modifiers |= Qt::ShiftModifier;
		
		        if (modifier & B_CONTROL_KEY)
		            modifiers |= Qt::AltModifier;
		
		        if (modifier & B_COMMAND_KEY)
		            modifiers |= Qt::ControlModifier;
		
		        QWindowSystemInterface::handleKeyEvent(0,
                                        QEvent::KeyRelease,
                                        translateKeyCode(key),
                                        modifiers,
                                        text,
                                        false);
				
				break;
			}	
	default:
		break;
	}			
	BWindow::DispatchMessage(msg, handler);
}