daemon3000/InputManager

How to disable Keyboard Input

Closed this issue · 1 comments

I'm sorry if this has already been answered - I did look through the wiki multiple times, but couldn't find any notes about this.

So, I have an Input Manager with KeyBoard, Windows+Mac+Linux gamepad; I also have an Input Adapter where I have set windows gamepad only for player1.

When unity starts, I get a log message that Keyboard+mouse is being used; now it does switch to joystick if I use it, and then jumps back to keyboard the moment I move the mouse.

So, question is: can I completely disable this switch and have it stick to joystick.

PS: I did try unchecking realtime device hoping that as I have joystick setup, it will stick to that; instead it sticks to keyboard instead.

Thanks in advance.

If you don't want the input device to change don't use the InputAdapter script. Instead use a simple script like the following:

using UnityEngine;
using TeamUtility.IO;

public class SelectInputTypeOnStart : MonoBehaviour
{
	public enum InputType
	{
		KeyboardAndMouse,
		Joystick
	}

	[SerializeField]
	private InputType m_defaultInputType = InputType.Joystick;

	[SerializeField]
	private string m_keyboardConfiguration = "KeyboardAndMouse";

	[SerializeField]
	private string m_windowsJoystickConfiguration = "Windows_Gamepad";

	[SerializeField]
	private string m_osxJoystickConfiguration = "OSX_Gamepad";

	[SerializeField]
	private string m_linuxJoystickConfiguration = "Linux_Gamepad";

	private void Start()
	{
		SetInputType(m_defaultInputType, PlayerID.One);
	}

	public void SetInputType(InputType inputType, PlayerID playerID)
	{
		string inputConfigName = GetInputConfiguration(inputType);
		InputManager.SetInputConfiguration(inputConfigName, playerID);
	}

	private string GetInputConfiguration(InputType inputType)
	{
		if(inputType == InputType.KeyboardAndMouse)
		{
			return m_keyboardConfiguration;
		}
		else
		{
			switch(Application.platform)
			{
			case RuntimePlatform.WindowsPlayer:
			case RuntimePlatform.WindowsEditor:
				return m_windowsJoystickConfiguration;
			case RuntimePlatform.OSXPlayer:
			case RuntimePlatform.OSXEditor:
				return m_osxJoystickConfiguration;
			case RuntimePlatform.LinuxPlayer:
				return m_linuxJoystickConfiguration;
			default:
				Debug.LogWarning("Unsupported XBOX 360 Controller driver. The default Windows driver configuration has been chosen.");
				return m_windowsJoystickConfiguration;
			}
		}
	}
}

SelectInputTypeOnStart.SetInputType is public so if you have a menu where the player can choose the input device call this method from one of your UI scripts.