diff --git a/osu-framework b/osu-framework index 7131c54ea0..9a1de5dc43 160000 --- a/osu-framework +++ b/osu-framework @@ -1 +1 @@ -Subproject commit 7131c54ea0a76ea03565ca93680487930c1c158a +Subproject commit 9a1de5dc43158db5b4fe24ea74bc3109cb46c05f diff --git a/osu.Game/OsuGame.cs b/osu.Game/OsuGame.cs index 6bcd89b878..7e5b913d10 100644 --- a/osu.Game/OsuGame.cs +++ b/osu.Game/OsuGame.cs @@ -77,8 +77,10 @@ namespace osu.Game public void ToggleDirect() => direct.ToggleVisibility(); [BackgroundDependencyLoader] - private void load() + private void load(FrameworkConfigManager frameworkConfig) { + this.frameworkConfig = frameworkConfig; + if (!Host.IsPrimaryInstance) { Logger.Log(@"osu! does not support multiple running instances.", LoggingTarget.Runtime, LogLevel.Error); @@ -259,6 +261,19 @@ namespace osu.Game { switch (args.Key) { + case Key.R: + if (state.Keyboard.AltPressed) + { + var sensitivity = frameworkConfig.GetBindable(FrameworkSetting.CursorSensitivity); + + sensitivity.Disabled = false; + sensitivity.Value = 1; + sensitivity.Disabled = true; + + frameworkConfig.Set(FrameworkSetting.ActiveInputHandlers, string.Empty); + return true; + } + break; case Key.T: Toolbar.ToggleVisibility(); return true; @@ -284,6 +299,7 @@ namespace osu.Game private Container overlayContent; private OsuScreen currentScreen; + private FrameworkConfigManager frameworkConfig; private void screenChanged(Screen newScreen) { diff --git a/osu.Game/Overlays/OnScreenDisplay.cs b/osu.Game/Overlays/OnScreenDisplay.cs index d262826fd2..cdb60ba704 100644 --- a/osu.Game/Overlays/OnScreenDisplay.cs +++ b/osu.Game/Overlays/OnScreenDisplay.cs @@ -125,6 +125,14 @@ namespace osu.Game.Overlays trackSetting(frameworkConfig.GetBindable(FrameworkSetting.Width), v => displayResolution()); trackSetting(frameworkConfig.GetBindable(FrameworkSetting.Height), v => displayResolution()); + trackSetting(frameworkConfig.GetBindable(FrameworkSetting.CursorSensitivity), v => display(v, "Cursor Sensitivity", v.ToString(@"0.##x"), "Ctrl+Alt+R to reset")); + trackSetting(frameworkConfig.GetBindable(FrameworkSetting.ActiveInputHandlers), + delegate (string v) + { + bool raw = v.Contains("Raw"); + display(raw, "Raw Input", raw ? "enabled" : "disabled", "Ctrl+Alt+R to reset"); + }); + trackSetting(frameworkConfig.GetBindable(FrameworkSetting.WindowMode), v => display(v, "Screen Mode", v.ToString(), "Alt+Enter")); } diff --git a/osu.Game/Overlays/Settings/Sections/Input/MouseSettings.cs b/osu.Game/Overlays/Settings/Sections/Input/MouseSettings.cs index 311fa072c6..5ebac37cc8 100644 --- a/osu.Game/Overlays/Settings/Sections/Input/MouseSettings.cs +++ b/osu.Game/Overlays/Settings/Sections/Input/MouseSettings.cs @@ -21,9 +21,6 @@ namespace osu.Game.Overlays.Settings.Sections.Input [BackgroundDependencyLoader] private void load(OsuConfigManager osuConfig, FrameworkConfigManager config) { - activeInputHandlers = config.GetBindable(FrameworkSetting.ActiveInputHandlers); - rawInputToggle.Value = activeInputHandlers.Value.Contains("Raw"); - Children = new Drawable[] { new SettingsCheckbox @@ -62,11 +59,17 @@ namespace osu.Game.Overlays.Settings.Sections.Input activeInputHandlers.Value = enabled ? activeInputHandlers.Value.Replace(standard_mouse_handler, raw_mouse_handler) : activeInputHandlers.Value.Replace(raw_mouse_handler, standard_mouse_handler); - - sensitivity.Bindable.Disabled = !enabled; }; - rawInputToggle.TriggerChange(); + activeInputHandlers = config.GetBindable(FrameworkSetting.ActiveInputHandlers); + activeInputHandlers.ValueChanged += handlers => + { + bool raw = handlers.Contains("Raw"); + rawInputToggle.Value = raw; + sensitivity.Bindable.Disabled = !raw; + }; + + activeInputHandlers.TriggerChange(); } private class SensitivitySetting : SettingsSlider