Browse Source
Merge pull request #12702 from german77/android-input
Merge pull request #12702 from german77/android-input
input_common: Add android input enginepull/15/merge
committed by
GitHub
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 136 additions and 0 deletions
-
2src/input_common/CMakeLists.txt
-
48src/input_common/drivers/android.cpp
-
54src/input_common/drivers/android.h
-
3src/input_common/input_mapping.cpp
-
22src/input_common/main.cpp
-
7src/input_common/main.h
@ -0,0 +1,48 @@ |
|||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
|||
// SPDX-License-Identifier: GPL-3.0-or-later
|
|||
|
|||
#include "input_common/drivers/android.h"
|
|||
|
|||
namespace InputCommon { |
|||
|
|||
Android::Android(std::string input_engine_) : InputEngine(std::move(input_engine_)) {} |
|||
|
|||
void Android::RegisterController(std::size_t controller_number) { |
|||
PreSetController(GetIdentifier(controller_number)); |
|||
} |
|||
|
|||
void Android::SetButtonState(std::size_t controller_number, int button_id, bool value) { |
|||
const auto identifier = GetIdentifier(controller_number); |
|||
SetButton(identifier, button_id, value); |
|||
} |
|||
|
|||
void Android::SetAxisState(std::size_t controller_number, int axis_id, float value) { |
|||
const auto identifier = GetIdentifier(controller_number); |
|||
SetAxis(identifier, axis_id, value); |
|||
} |
|||
|
|||
void Android::SetMotionState(std::size_t controller_number, u64 delta_timestamp, float gyro_x, |
|||
float gyro_y, float gyro_z, float accel_x, float accel_y, |
|||
float accel_z) { |
|||
const auto identifier = GetIdentifier(controller_number); |
|||
const BasicMotion motion_data{ |
|||
.gyro_x = gyro_x, |
|||
.gyro_y = gyro_y, |
|||
.gyro_z = gyro_z, |
|||
.accel_x = accel_x, |
|||
.accel_y = accel_y, |
|||
.accel_z = accel_z, |
|||
.delta_timestamp = delta_timestamp, |
|||
}; |
|||
SetMotion(identifier, 0, motion_data); |
|||
} |
|||
|
|||
PadIdentifier Android::GetIdentifier(std::size_t controller_number) const { |
|||
return { |
|||
.guid = Common::UUID{}, |
|||
.port = controller_number, |
|||
.pad = 0, |
|||
}; |
|||
} |
|||
|
|||
} // namespace InputCommon
|
|||
@ -0,0 +1,54 @@ |
|||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project |
|||
// SPDX-License-Identifier: GPL-3.0-or-later |
|||
|
|||
#pragma once |
|||
|
|||
#include "input_common/input_engine.h" |
|||
|
|||
namespace InputCommon { |
|||
|
|||
/** |
|||
* A virtual controller that is always assigned to the game input |
|||
*/ |
|||
class Android final : public InputEngine { |
|||
public: |
|||
explicit Android(std::string input_engine_); |
|||
|
|||
/** |
|||
* Registers controller number to accept new inputs |
|||
* @param controller_number the controller number that will take this action |
|||
*/ |
|||
void RegisterController(std::size_t controller_number); |
|||
|
|||
/** |
|||
* Sets the status of all buttons bound with the key to pressed |
|||
* @param controller_number the controller number that will take this action |
|||
* @param button_id the id of the button |
|||
* @param value indicates if the button is pressed or not |
|||
*/ |
|||
void SetButtonState(std::size_t controller_number, int button_id, bool value); |
|||
|
|||
/** |
|||
* Sets the status of a analog input to a specific player index |
|||
* @param controller_number the controller number that will take this action |
|||
* @param axis_id the id of the axis to move |
|||
* @param value the analog position of the axis |
|||
*/ |
|||
void SetAxisState(std::size_t controller_number, int axis_id, float value); |
|||
|
|||
/** |
|||
* Sets the status of the motion sensor to a specific player index |
|||
* @param controller_number the controller number that will take this action |
|||
* @param delta_timestamp time passed since last reading |
|||
* @param gyro_x,gyro_y,gyro_z the gyro sensor readings |
|||
* @param accel_x,accel_y,accel_z the accelerometer reading |
|||
*/ |
|||
void SetMotionState(std::size_t controller_number, u64 delta_timestamp, float gyro_x, |
|||
float gyro_y, float gyro_z, float accel_x, float accel_y, float accel_z); |
|||
|
|||
private: |
|||
/// Returns the correct identifier corresponding to the player index |
|||
PadIdentifier GetIdentifier(std::size_t controller_number) const; |
|||
}; |
|||
|
|||
} // namespace InputCommon |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue