// Copyright (c) 2007-2017 ppy Pty Ltd . // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE using System.Linq; using osu.Framework.Allocation; using osu.Framework.Configuration; using osu.Framework.Input; using osu.Game.Configuration; using osu.Game.Screens.Play; using OpenTK.Input; using KeyboardState = osu.Framework.Input.KeyboardState; using MouseState = osu.Framework.Input.MouseState; namespace osu.Game.Modes.Osu { public class OsuKeyConversionInputManager : KeyConversionInputManager { private bool leftViaKeyboard; private bool rightViaKeyboard; private Bindable mouseDisabled; [BackgroundDependencyLoader] private void load(OsuConfigManager config) { mouseDisabled = config.GetBindable(OsuConfig.MouseDisableButtons); } protected override void TransformState(InputState state) { base.TransformState(state); var mouse = state.Mouse as MouseState; var keyboard = state.Keyboard as KeyboardState; if (keyboard != null) { leftViaKeyboard = keyboard.Keys.Contains(Key.Z); rightViaKeyboard = keyboard.Keys.Contains(Key.X); } if (mouse != null) { if (mouseDisabled.Value) { mouse.PressedButtons.Remove(MouseButton.Left); mouse.PressedButtons.Remove(MouseButton.Right); } if (leftViaKeyboard) mouse.PressedButtons.Add(MouseButton.Left); if (rightViaKeyboard) mouse.PressedButtons.Add(MouseButton.Right); } } } }