void UIYabause::keyPressEvent( QKeyEvent* e ) { if (emulateMouse && mouseCaptured && e->key() == Qt::Key_Escape) mouseCaptured = false; else PerKeyDown( e->key() ); }
int PERLinuxJoyHandleEvents(void) { struct js_event evt; if (hJOY == -1) return -1; while (read(hJOY, &evt, sizeof(struct js_event)) > 0) { if (evt.value != 0) { PerKeyDown(PACKEVENT(evt)); } else { PerKeyUp(PACKEVENT(evt)); PerKeyUp(0x10000 | PACKEVENT(evt)); } } // execute yabause if ( YabauseExec() != 0 ) { return -1; } // return success return 0; }
void UIYabause::mousePressEvent( QMouseEvent* e ) { if (emulateMouse && !mouseCaptured) { this->setCursor(Qt::BlankCursor); mouseCaptured = true; } else PerKeyDown( (1 << 31) | e->button() ); }
void Java_org_yabause_android_YabauseRunnable_press( JNIEnv* env, jobject obj, jint key ) { PerKeyDown(key); }
int PERSDLJoyHandleEvents(void) { int joyId; int i; int j; SDL_Joystick* joy; Sint16 cur; Uint8 buttonState; Uint8 newHatState; Uint8 oldHatState; int hatValue; // update joysticks states SDL_JoystickUpdate(); // check each joysticks for ( joyId = 0; joyId < SDL_PERCORE_JOYSTICKS_INITIALIZED; joyId++ ) { joy = SDL_PERCORE_JOYSTICKS[ joyId ].mJoystick; if ( !joy ) { continue; } // check axis for ( i = 0; i < SDL_JoystickNumAxes( joy ); i++ ) { cur = SDL_JoystickGetAxis( joy, i ); PerAxisValue((joyId << 18) | SDL_MEDIUM_AXIS_VALUE | i, (u8)(((int)cur+32768) >> 8)); if ( cur < -SDL_MEDIUM_AXIS_VALUE ) { PerKeyUp( (joyId << 18) | SDL_MAX_AXIS_VALUE | i ); PerKeyDown( (joyId << 18) | SDL_MIN_AXIS_VALUE | i ); } else if ( cur > SDL_MEDIUM_AXIS_VALUE ) { PerKeyUp( (joyId << 18) | SDL_MIN_AXIS_VALUE | i ); PerKeyDown( (joyId << 18) | SDL_MAX_AXIS_VALUE | i ); } else { PerKeyUp( (joyId << 18) | SDL_MIN_AXIS_VALUE | i ); PerKeyUp( (joyId << 18) | SDL_MAX_AXIS_VALUE | i ); } } // check buttons for ( i = 0; i < SDL_JoystickNumButtons( joy ); i++ ) { buttonState = SDL_JoystickGetButton( joy, i ); if ( buttonState == SDL_BUTTON_PRESSED ) { PerKeyDown( (joyId << 18) | (i +1) ); } else if ( buttonState == SDL_BUTTON_RELEASED ) { PerKeyUp( (joyId << 18) | (i +1) ); } } // check hats for ( i = 0; i < SDL_JoystickNumHats( joy ); i++ ) { newHatState = SDL_JoystickGetHat( joy, i ); oldHatState = SDL_PERCORE_JOYSTICKS[ joyId ].mHatStatus[ i ]; for ( j = 0 ; j < SDL_HAT_VALUES_NUM; j++ ) { hatValue = SDL_HAT_VALUES[ j ]; if ( oldHatState & hatValue && ~newHatState & hatValue ) { PerKeyUp( (joyId << 18) | SDL_HAT_VALUE | (hatValue << 4) | i ); } } for ( j = 0 ; j < SDL_HAT_VALUES_NUM; j++ ) { hatValue = SDL_HAT_VALUES[ j ]; if ( ~oldHatState & hatValue && newHatState & hatValue ) { PerKeyDown( (joyId << 18) | SDL_HAT_VALUE | (hatValue << 4) | i); } } SDL_PERCORE_JOYSTICKS[ joyId ].mHatStatus[ i ] = newHatState; } } // execute yabause if ( YabauseExec() != 0 ) { return -1; } // return success return 0; }
static int PERLIBRETROHandleEvents(void) { unsigned i = 0; for(i = 0; i < players; i++) { int analog_left_x = 0; int analog_left_y = 0; switch(pad_type[i]) { case RETRO_DEVICE_ANALOG: analog_left_x = input_state_cb(i, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_LEFT, RETRO_DEVICE_ID_ANALOG_X); PerAxisValue((i << 8) + PERANALOG_AXIS1, (u8)((analog_left_x + 0x8000) >> 8)); analog_left_y = input_state_cb(i, RETRO_DEVICE_ANALOG, RETRO_DEVICE_INDEX_ANALOG_LEFT, RETRO_DEVICE_ID_ANALOG_Y); PerAxisValue((i << 8) + PERANALOG_AXIS2, (u8)((analog_left_y + 0x8000) >> 8)); case RETRO_DEVICE_JOYPAD: if (input_state_cb(i, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_UP)) PerKeyDown((i << 8) + PERPAD_UP); else PerKeyUp((i << 8) + PERPAD_UP); if (input_state_cb(i, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_DOWN)) PerKeyDown((i << 8) + PERPAD_DOWN); else PerKeyUp((i << 8) + PERPAD_DOWN); if (input_state_cb(i, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_LEFT)) PerKeyDown((i << 8) + PERPAD_LEFT); else PerKeyUp((i << 8) + PERPAD_LEFT); if (input_state_cb(i, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_RIGHT)) PerKeyDown((i << 8) + PERPAD_RIGHT); else PerKeyUp((i << 8) + PERPAD_RIGHT); if (input_state_cb(i, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_Y)) PerKeyDown((i << 8) + PERPAD_X); else PerKeyUp((i << 8) + PERPAD_X); if (input_state_cb(i, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_B)) PerKeyDown((i << 8) + PERPAD_A); else PerKeyUp((i << 8) + PERPAD_A); if (input_state_cb(i, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_A)) PerKeyDown((i << 8) + PERPAD_B); else PerKeyUp((i << 8) + PERPAD_B); if (input_state_cb(i, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_X)) PerKeyDown((i << 8) + PERPAD_Y); else PerKeyUp((i << 8) + PERPAD_Y); if (input_state_cb(i, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L)) PerKeyDown((i << 8) + PERPAD_C); else PerKeyUp((i << 8) + PERPAD_C); if (input_state_cb(i, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R)) PerKeyDown((i << 8) + PERPAD_Z); else PerKeyUp((i << 8) + PERPAD_Z); if (input_state_cb(i, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_START)) PerKeyDown((i << 8) + PERPAD_START); else PerKeyUp((i << 8) + PERPAD_START); if (input_state_cb(i, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L2)) PerKeyDown((i << 8) + PERPAD_LEFT_TRIGGER); else PerKeyUp((i << 8) + PERPAD_LEFT_TRIGGER); if (input_state_cb(i, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R2)) PerKeyDown((i << 8) + PERPAD_RIGHT_TRIGGER); else PerKeyUp((i << 8) + PERPAD_RIGHT_TRIGGER); break; default: break; } } if ( YabauseExec() != 0 ) return -1; return 0; }
void PollKeys(void) { u32 i; DWORD i2; DWORD size=8; DIDEVICEOBJECTDATA didod[8]; HRESULT hr; for (i = 0; i < numpads; i++) { if (paddevice[i].lpDIDevice == NULL) continue; hr = IDirectInputDevice8_Poll(paddevice[i].lpDIDevice); if (FAILED(hr)) { if (hr == DIERR_INPUTLOST || hr == DIERR_NOTACQUIRED) { // Make sure device is acquired while(IDirectInputDevice8_Acquire(paddevice[i].lpDIDevice) == DIERR_INPUTLOST) {} continue; } } size = 8; // Poll events if (FAILED(IDirectInputDevice8_GetDeviceData(paddevice[i].lpDIDevice, sizeof(DIDEVICEOBJECTDATA), didod, &size, 0))) { if (hr == DIERR_INPUTLOST || hr == DIERR_NOTACQUIRED) { // Make sure device is acquired while(IDirectInputDevice8_Acquire(paddevice[i].lpDIDevice) == DIERR_INPUTLOST) {} continue; } } if (size == 0) continue; switch (paddevice[i].type) { case TYPE_KEYBOARD: // This probably could be optimized for (i2 = 0; i2 < size; i2++) { if (didod[i2].dwData & 0x80) PerKeyDown(didod[i2].dwOfs); else PerKeyUp(didod[i2].dwOfs); } break; case TYPE_JOYSTICK: { // This probably could be optimized for (i2 = 0; i2 < size; i2++) { // X Axis if (didod[i2].dwOfs == DIJOFS_X) { if (didod[i2].dwData < 0x3FFF) { PerKeyDown(PAD_DIR_AXISLEFT); PerKeyUp(PAD_DIR_AXISRIGHT); } else if (didod[i2].dwData > 0xBFFF) { PerKeyDown(PAD_DIR_AXISRIGHT); PerKeyUp(PAD_DIR_AXISLEFT); } else { PerKeyUp(PAD_DIR_AXISLEFT); PerKeyUp(PAD_DIR_AXISRIGHT); } } // Y Axis else if (didod[i2].dwOfs == DIJOFS_Y) { if (didod[i2].dwData < 0x3FFF) { PerKeyDown(PAD_DIR_AXISUP); PerKeyUp(PAD_DIR_AXISDOWN); } else if (didod[i2].dwData > 0xBFFF) { PerKeyDown(PAD_DIR_AXISDOWN); PerKeyUp(PAD_DIR_AXISUP); } else { PerKeyUp(PAD_DIR_AXISUP); PerKeyUp(PAD_DIR_AXISDOWN); } } else if (didod[i2].dwOfs == DIJOFS_POV(0)) { // POV Center if (LOWORD(didod[i2].dwData) == 0xFFFF) { PerKeyUp(PAD_DIR_POVUP); PerKeyUp(PAD_DIR_POVRIGHT); PerKeyUp(PAD_DIR_POVDOWN); PerKeyUp(PAD_DIR_POVLEFT); } // POV Up else if (didod[i2].dwData < 4500) { PerKeyDown(PAD_DIR_POVUP); PerKeyUp(PAD_DIR_POVRIGHT); PerKeyUp(PAD_DIR_POVLEFT); } // POV Up-right else if (didod[i2].dwData < 9000) { PerKeyDown(PAD_DIR_POVUP); PerKeyDown(PAD_DIR_POVRIGHT); } // POV Right else if (didod[i2].dwData < 13500) { PerKeyDown(PAD_DIR_POVRIGHT); PerKeyUp(PAD_DIR_POVDOWN); PerKeyUp(PAD_DIR_POVUP); } // POV Right-down else if (didod[i2].dwData < 18000) { PerKeyDown(PAD_DIR_POVRIGHT); PerKeyDown(PAD_DIR_POVDOWN); } // POV Down else if (didod[i2].dwData < 22500) { PerKeyDown(PAD_DIR_POVDOWN); PerKeyUp(PAD_DIR_POVLEFT); PerKeyUp(PAD_DIR_POVRIGHT); } // POV Down-left else if (didod[i2].dwData < 27000) { PerKeyDown(PAD_DIR_POVDOWN); PerKeyDown(PAD_DIR_POVLEFT); } // POV Left else if (didod[i2].dwData < 31500) { PerKeyDown(PAD_DIR_POVLEFT); PerKeyUp(PAD_DIR_POVUP); PerKeyUp(PAD_DIR_POVDOWN); } // POV Left-up else if (didod[i2].dwData < 36000) { PerKeyDown(PAD_DIR_POVLEFT); PerKeyDown(PAD_DIR_POVUP); } } else if (didod[i2].dwOfs >= DIJOFS_BUTTON(0) && didod[i2].dwOfs <= DIJOFS_BUTTON(127)) { if (didod[i2].dwData & 0x80) PerKeyDown(didod[i2].dwOfs); else PerKeyUp(didod[i2].dwOfs); } } break; } case TYPE_MOUSE: for (i2 = 0; i2 < size; i2++) { if (didod[i2].dwOfs == DIMOFS_X) // X Axis PerMouseMove((PerMouse_struct *)pad[i], (s32)didod[i2].dwData, 0); else if (didod[i2].dwOfs == DIMOFS_Y) // Y Axis PerMouseMove((PerMouse_struct *)pad[i], 0, 0-(s32)didod[i2].dwData); else if (didod[i2].dwOfs >= DIMOFS_BUTTON0 && didod[i2].dwOfs <= DIMOFS_BUTTON7) { // Mouse Buttons if (didod[i2].dwData & 0x80) PerKeyDown(didod[i2].dwOfs-DIMOFS_BUTTON0); else PerKeyUp(didod[i2].dwOfs-DIMOFS_BUTTON0); } } break; default: break; } } }
void UIYabause::mousePressEvent( QMouseEvent* e ) { PerKeyDown( (1 << 31) | e->button() ); }
void UIYabause::keyPressEvent( QKeyEvent* e ) { PerKeyDown( e->key() ); }