Adding meumart's Citra SDL Joystick support. Citra PR #3116

This commit is contained in:
muemart 2017-12-06 05:26:29 +01:00 committed by noah katz
parent 1a3b3e9100
commit eaff98dbb3
7 changed files with 620 additions and 287 deletions

View file

@ -4,7 +4,13 @@
#pragma once
#include <memory>
#include <string>
#include <vector>
namespace Common {
class ParamPackage;
}
namespace InputCommon {
@ -31,4 +37,30 @@ std::string GenerateKeyboardParam(int key_code);
std::string GenerateAnalogParamFromKeys(int key_up, int key_down, int key_left, int key_right,
int key_modifier, float modifier_scale);
namespace Polling {
enum class DeviceType { Button, Analog };
/**
* A class that can be used to get inputs from an input device like controllers without having to
* poll the device's status yourself
*/
class DevicePoller {
public:
virtual ~DevicePoller() = default;
/// Setup and start polling for inputs, should be called before GetNextInput
virtual void Start() = 0;
/// Stop polling
virtual void Stop() = 0;
/**
* Every call to this function returns the next input recorded since calling Start
* @return A ParamPackage of the recorded input, which can be used to create an InputDevice.
* If there has been no input, the package is empty
*/
virtual Common::ParamPackage GetNextInput() = 0;
};
// Get all DevicePoller from all backends for a specific device type
std::vector<std::unique_ptr<DevicePoller>> GetPollers(DeviceType type);
} // namespace Polling
} // namespace InputCommon