void GamepadComponent::Update() { //If the gamepad index is 0 and the amount of controllers connected is greater than 0 //set the controller index to that number if (m_gamepadIndex == 0 && System::InputManager.ConnectedGamepads() > System::InputManager.m_usedGamepads) { System::InputManager.m_usedGamepads++; m_gamepadIndex = System::InputManager.m_usedGamepads; System::InputManager.m_gamepadStatus[m_gamepadIndex] = true; } //If a gamepad has been disconnected and its id matches the internal id, disenable it to fetch information if (System::InputManager.m_gamepadStatus[m_gamepadIndex] && m_gamepadIndex > 0) { System::InputManager.m_usedGamepads--; m_gamepadIndex = 0; } //Check commands //buttons auto buttonIterator = m_command.begin(); while (buttonIterator != m_command.end()) { ExecuteButtonCommand(buttonIterator->second.first, buttonIterator->second.second); buttonIterator++; } //axis auto joystickIterator = m_joystickCommand.begin(); while (joystickIterator != m_joystickCommand.end()) { joystickIterator++; } }
int HandleJoystickEvent(struct js_event *jse) { if ( jse->type == JS_EVENT_INIT) { return 0; } if (jse->type == JS_EVENT_AXIS) { switch (jse->number) { case 0: RAW_Stick1_AxisX = jse->value; break; case 1: RAW_Stick1_AxisY = jse->value; break; case 2: RAW_Stick2_AxisX = jse->value; break; case 3: RAW_Stick2_AxisY = jse->value; break; case 4: RAW_Stick3_AxisX = jse->value; break; case 5: RAW_Stick3_AxisY = jse->value; break; default: break; } Calibrated_Stick1_AxisX=RAW_Stick1_AxisX; Calibrated_Stick1_AxisY=RAW_Stick1_AxisY; CalibrateJoystickPos(&Calibrated_Stick1_AxisX,&Calibrated_Stick1_AxisY,255); printf("Joystick Stick 1 %d,%d\n",Calibrated_Stick1_AxisX,Calibrated_Stick1_AxisY); Calibrated_Stick2_AxisX=RAW_Stick2_AxisX; Calibrated_Stick2_AxisY=RAW_Stick2_AxisY; CalibrateJoystickPos(&Calibrated_Stick2_AxisX,&Calibrated_Stick2_AxisY,255); printf("Joystick Stick 2 %d,%d\n",Calibrated_Stick2_AxisX,Calibrated_Stick2_AxisY); Calibrated_Stick3_AxisX=RAW_Stick3_AxisX; Calibrated_Stick3_AxisY=RAW_Stick3_AxisY; CalibrateJoystickPos(&Calibrated_Stick3_AxisX,&Calibrated_Stick3_AxisY,255); printf("Joystick Stick 3 %d,%d\n",Calibrated_Stick3_AxisX,Calibrated_Stick3_AxisY); char inptstr[512]={0}; if ( (Calibrated_Stick1_AxisX!=0 ) || ( Calibrated_Stick1_AxisY!=0 ) ) { sprintf(inptstr , (char *) "JOYSTICK INPUT(%u,%u)",Calibrated_Stick1_AxisX,Calibrated_Stick1_AxisY); IssueCommand(inptstr,0,0,(char *)"GUI"); } if ( (Calibrated_Stick2_AxisX!=0 ) || ( Calibrated_Stick2_AxisY!=0 ) ) { //Stick 2 not used yet :) //sprintf(inptstr , (char *) "JOYSTICK INPUT(%u,%u)",Calibrated_Stick1_AxisX,Calibrated_Stick1_AxisY); //IssueCommand(inptstr,0,0,(char *)"GUI"); } } else if (jse->type == JS_EVENT_BUTTON) { if (jse->number < 10) { switch (jse->value) { case 0: // case 1: wjse->button[jse.number] = jse.value; break; default: break; } } if(jse->value) { ExecuteButtonCommand(jse->number); } } return 1; }