using System;
namespace Ryujinx.Input.HLE
{
public class InputManager : IDisposable
public IGamepadDriver KeyboardDriver { get; private set; }
public IGamepadDriver GamepadDriver { get; private set; }
public IGamepadDriver MouseDriver { get; private set; }
public InputManager(IGamepadDriver keyboardDriver, IGamepadDriver gamepadDriver)
KeyboardDriver = keyboardDriver;
GamepadDriver = gamepadDriver;
}
public void SetMouseDriver(IGamepadDriver mouseDriver)
MouseDriver?.Dispose();
MouseDriver = mouseDriver;
public NpadManager CreateNpadManager()
return new NpadManager(KeyboardDriver, GamepadDriver);
public TouchScreenManager CreateTouchScreenManager()
if (MouseDriver == null)
throw new InvalidOperationException("Mouse Driver has not been initialized.");
return new TouchScreenManager(MouseDriver.GetGamepad("0") as IMouse);
protected virtual void Dispose(bool disposing)
if (disposing)
KeyboardDriver?.Dispose();
GamepadDriver?.Dispose();
public void Dispose()
Dispose(true);