diff --git a/osu.Android/OsuGameAndroid.cs b/osu.Android/OsuGameAndroid.cs
index dea70e6b27..e4b934a387 100644
--- a/osu.Android/OsuGameAndroid.cs
+++ b/osu.Android/OsuGameAndroid.cs
@@ -11,6 +11,7 @@ using osu.Framework.Input.Handlers;
using osu.Framework.Platform;
using osu.Game;
using osu.Game.Overlays.Settings;
+using osu.Game.Overlays.Settings.Sections.Input;
using osu.Game.Updater;
using osu.Game.Utils;
@@ -97,6 +98,9 @@ namespace osu.Android
case AndroidJoystickHandler jh:
return new AndroidJoystickSettings(jh);
+ case AndroidTouchHandler:
+ return new TouchSettings(handler);
+
default:
return base.CreateSettingsSubsectionFor(handler);
}
diff --git a/osu.Game/Configuration/OsuConfigManager.cs b/osu.Game/Configuration/OsuConfigManager.cs
index 5d2d782063..339817985e 100644
--- a/osu.Game/Configuration/OsuConfigManager.cs
+++ b/osu.Game/Configuration/OsuConfigManager.cs
@@ -330,6 +330,10 @@ namespace osu.Game.Configuration
ShowHealthDisplayWhenCantFail,
FadePlayfieldWhenHealthLow,
+
+ ///
+ /// Disables mouse buttons clicks and touchscreen taps during gameplay.
+ ///
MouseDisableButtons,
MouseDisableWheel,
ConfineMouseMode,
diff --git a/osu.Game/Localisation/TouchSettingsStrings.cs b/osu.Game/Localisation/TouchSettingsStrings.cs
new file mode 100644
index 0000000000..785b333100
--- /dev/null
+++ b/osu.Game/Localisation/TouchSettingsStrings.cs
@@ -0,0 +1,24 @@
+// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence.
+// See the LICENCE file in the repository root for full licence text.
+
+using osu.Framework.Localisation;
+
+namespace osu.Game.Localisation
+{
+ public static class TouchSettingsStrings
+ {
+ private const string prefix = @"osu.Game.Resources.Localisation.TouchSettings";
+
+ ///
+ /// "Touch"
+ ///
+ public static LocalisableString Touch => new TranslatableString(getKey(@"touch"), @"Touch");
+
+ ///
+ /// "Disable taps during gameplay"
+ ///
+ public static LocalisableString DisableTapsDuringGameplay => new TranslatableString(getKey(@"disable_taps_during_gameplay"), @"Disable taps during gameplay");
+
+ private static string getKey(string key) => $@"{prefix}:{key}";
+ }
+}
\ No newline at end of file
diff --git a/osu.Game/Overlays/Settings/Sections/Input/TouchSettings.cs b/osu.Game/Overlays/Settings/Sections/Input/TouchSettings.cs
index 8d1b12d5b2..b1b1b59429 100644
--- a/osu.Game/Overlays/Settings/Sections/Input/TouchSettings.cs
+++ b/osu.Game/Overlays/Settings/Sections/Input/TouchSettings.cs
@@ -3,38 +3,48 @@
using System.Collections.Generic;
using System.Linq;
+using osu.Framework;
using osu.Framework.Allocation;
-using osu.Framework.Graphics;
-using osu.Framework.Input.Handlers.Touch;
+using osu.Framework.Input.Handlers;
using osu.Framework.Localisation;
+using osu.Game.Configuration;
using osu.Game.Localisation;
namespace osu.Game.Overlays.Settings.Sections.Input
{
+ ///
+ /// Touch input settings subsection common to all touch handlers (even on different platforms).
+ ///
public partial class TouchSettings : SettingsSubsection
{
- private readonly TouchHandler handler;
+ private readonly InputHandler handler;
- public TouchSettings(TouchHandler handler)
+ protected override LocalisableString Header => TouchSettingsStrings.Touch;
+
+ public TouchSettings(InputHandler handler)
{
this.handler = handler;
}
[BackgroundDependencyLoader]
- private void load()
+ private void load(OsuConfigManager osuConfig)
{
- Children = new Drawable[]
+ if (!RuntimeInfo.IsMobile) // don't allow disabling the only input method (touch) on mobile.
{
- new SettingsCheckbox
+ Add(new SettingsCheckbox
{
LabelText = CommonStrings.Enabled,
Current = handler.Enabled
- },
- };
+ });
+ }
+
+ Add(new SettingsCheckbox
+ {
+ LabelText = TouchSettingsStrings.DisableTapsDuringGameplay,
+ Current = osuConfig.GetBindable(OsuSetting.MouseDisableButtons)
+ });
}
public override IEnumerable FilterTerms => base.FilterTerms.Concat(new LocalisableString[] { @"touchscreen" });
-
- protected override LocalisableString Header => handler.Description;
}
}