From 798336f409be5b39a66b2b3bbbbde4bf12205693 Mon Sep 17 00:00:00 2001
From: NotAKid <37721153+NotAKidoS@users.noreply.github.com>
Date: Sun, 15 Mar 2026 19:40:17 -0500
Subject: [PATCH 1/4] [ESCBothMenus] Initial release
---
ESCBothMenus/ESCBothMenus.csproj | 2 +
ESCBothMenus/Main.cs | 52 +++++++++++++++++++++++++
ESCBothMenus/Properties/AssemblyInfo.cs | 32 +++++++++++++++
ESCBothMenus/format.json | 23 +++++++++++
4 files changed, 109 insertions(+)
create mode 100644 ESCBothMenus/ESCBothMenus.csproj
create mode 100644 ESCBothMenus/Main.cs
create mode 100644 ESCBothMenus/Properties/AssemblyInfo.cs
create mode 100644 ESCBothMenus/format.json
diff --git a/ESCBothMenus/ESCBothMenus.csproj b/ESCBothMenus/ESCBothMenus.csproj
new file mode 100644
index 0000000..e94f9dc
--- /dev/null
+++ b/ESCBothMenus/ESCBothMenus.csproj
@@ -0,0 +1,2 @@
+
+
diff --git a/ESCBothMenus/Main.cs b/ESCBothMenus/Main.cs
new file mode 100644
index 0000000..926127d
--- /dev/null
+++ b/ESCBothMenus/Main.cs
@@ -0,0 +1,52 @@
+using System.Reflection;
+using ABI_RC.Core.InteractionSystem;
+using ABI_RC.Systems.InputManagement;
+using ABI_RC.Systems.Movement;
+using HarmonyLib;
+using MelonLoader;
+using UnityEngine;
+
+namespace NAK.ESCBothMenus;
+
+public class ESCBothMenusMod : MelonMod
+{
+ public override void OnInitializeMelon()
+ {
+ HarmonyInstance.Patch(
+ typeof(ViewManager).GetMethod(nameof(ViewManager.Update),
+ BindingFlags.NonPublic | BindingFlags.Instance),
+ prefix: new HarmonyMethod(typeof(ESCBothMenusMod).GetMethod(nameof(OnPreViewManagerUpdate),
+ BindingFlags.NonPublic | BindingFlags.Static))
+ );
+ }
+
+ private static float _timer = -1f;
+ private static bool _main;
+
+ private static void OnPreViewManagerUpdate()
+ {
+ if (CVRInputManager.Instance.mainMenuButton
+ && !BetterBetterCharacterController.Instance.IsSittingOnControlSeat())
+ {
+ if (_timer < 0f) _timer = 0.2f;
+ else _main = true;
+ }
+
+ if (_timer >= 0f && (_timer -= Time.deltaTime) <= 0f)
+ {
+ var vm = ViewManager.Instance;
+ var qm = CVR_MenuManager.Instance;
+
+ if (vm.IsViewShown) vm.UiStateToggle(false);
+ else if (qm.IsViewShown) qm.ToggleQuickMenu(false);
+ else if (_main) vm.UiStateToggle(true);
+ else qm.ToggleQuickMenu(true);
+
+ _timer = -1f;
+ _main = false;
+ }
+
+ // consume so original logic doesn't fire
+ CVRInputManager.Instance.mainMenuButton = false;
+ }
+}
\ No newline at end of file
diff --git a/ESCBothMenus/Properties/AssemblyInfo.cs b/ESCBothMenus/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..03242e7
--- /dev/null
+++ b/ESCBothMenus/Properties/AssemblyInfo.cs
@@ -0,0 +1,32 @@
+using MelonLoader;
+using NAK.ESCBothMenus.Properties;
+using System.Reflection;
+
+[assembly: AssemblyVersion(AssemblyInfoParams.Version)]
+[assembly: AssemblyFileVersion(AssemblyInfoParams.Version)]
+[assembly: AssemblyInformationalVersion(AssemblyInfoParams.Version)]
+[assembly: AssemblyTitle(nameof(NAK.ESCBothMenus))]
+[assembly: AssemblyCompany(AssemblyInfoParams.Author)]
+[assembly: AssemblyProduct(nameof(NAK.ESCBothMenus))]
+
+[assembly: MelonInfo(
+ typeof(NAK.ESCBothMenus.ESCBothMenusMod),
+ nameof(NAK.ESCBothMenus),
+ AssemblyInfoParams.Version,
+ AssemblyInfoParams.Author,
+ downloadLink: "https://github.com/NotAKidoS/NAK_CVR_Mods/tree/main/ESCBothMenus"
+)]
+
+[assembly: MelonGame("ChilloutVR", "ChilloutVR")]
+[assembly: MelonPlatform(MelonPlatformAttribute.CompatiblePlatforms.WINDOWS_X64)]
+[assembly: MelonPlatformDomain(MelonPlatformDomainAttribute.CompatibleDomains.MONO)]
+[assembly: MelonColor(255, 246, 25, 99)] // red-pink
+[assembly: MelonAuthorColor(255, 158, 21, 32)] // red
+[assembly: HarmonyDontPatchAll]
+
+namespace NAK.ESCBothMenus.Properties;
+internal static class AssemblyInfoParams
+{
+ public const string Version = "1.0.0";
+ public const string Author = "NotAKidoS";
+}
\ No newline at end of file
diff --git a/ESCBothMenus/format.json b/ESCBothMenus/format.json
new file mode 100644
index 0000000..4dfdc9d
--- /dev/null
+++ b/ESCBothMenus/format.json
@@ -0,0 +1,23 @@
+{
+ "_id": 219,
+ "name": "ScrollFlight",
+ "modversion": "1.0.5",
+ "gameversion": "2025r181",
+ "loaderversion": "0.7.2",
+ "modtype": "Mod",
+ "author": "NotAKidoS",
+ "description": "Scroll-wheel to adjust flight speed in Desktop. Stole idea from Luc.",
+ "searchtags": [
+ "flight",
+ "scroll",
+ "speed",
+ "modifier"
+ ],
+ "requirements": [
+ "None"
+ ],
+ "downloadlink": "https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r48/ScrollFlight.dll",
+ "sourcelink": "https://github.com/NotAKidoS/NAK_CVR_Mods/tree/main/ScrollFlight/",
+ "changelog": "- Rebuilt for CVR 2025r181",
+ "embedcolor": "#f61963"
+}
\ No newline at end of file
From e54198a26377234265af9c45e3dcdb9dd85d714c Mon Sep 17 00:00:00 2001
From: NotAKid <37721153+NotAKidoS@users.noreply.github.com>
Date: Sun, 15 Mar 2026 19:41:01 -0500
Subject: [PATCH 2/4] only run in vr
---
ESCBothMenus/Main.cs | 3 +++
1 file changed, 3 insertions(+)
diff --git a/ESCBothMenus/Main.cs b/ESCBothMenus/Main.cs
index 926127d..8e9641e 100644
--- a/ESCBothMenus/Main.cs
+++ b/ESCBothMenus/Main.cs
@@ -1,5 +1,6 @@
using System.Reflection;
using ABI_RC.Core.InteractionSystem;
+using ABI_RC.Core.Savior;
using ABI_RC.Systems.InputManagement;
using ABI_RC.Systems.Movement;
using HarmonyLib;
@@ -25,6 +26,8 @@ public class ESCBothMenusMod : MelonMod
private static void OnPreViewManagerUpdate()
{
+ if (MetaPort.Instance.isUsingVr) return;
+
if (CVRInputManager.Instance.mainMenuButton
&& !BetterBetterCharacterController.Instance.IsSittingOnControlSeat())
{
From b4421a2149883dafa885f738499a2de60ac8770c Mon Sep 17 00:00:00 2001
From: NotAKid <37721153+NotAKidoS@users.noreply.github.com>
Date: Sun, 15 Mar 2026 19:46:59 -0500
Subject: [PATCH 3/4] [ESCBothMenus] Added README
---
ESCBothMenus/README.md | 14 ++++++++++++++
1 file changed, 14 insertions(+)
create mode 100644 ESCBothMenus/README.md
diff --git a/ESCBothMenus/README.md b/ESCBothMenus/README.md
new file mode 100644
index 0000000..d7027bc
--- /dev/null
+++ b/ESCBothMenus/README.md
@@ -0,0 +1,14 @@
+# ESCBothMenus
+
+Makes the Quick Menu appear when pressing ESC in Desktop. Pressing twice will open straight to Main Menu.
+
+---
+
+Here is the block of text where I tell you this mod is not affiliated or endorsed by ABI.
+https://documentation.abinteractive.net/official/legal/tos/#7-modding-our-games
+~~~~
+> This mod is an independent creation and is not affiliated with, supported by or approved by Alpha Blend Interactive.
+
+> Use of this mod is done so at the user's own risk and the creator cannot be held responsible for any issues arising from its use.
+
+> To the best of my knowledge, I have adhered to the Modding Guidelines established by Alpha Blend Interactive.
From 41d582146c2eeed5def58605b417a73e42145825 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
Date: Mon, 16 Mar 2026 00:47:24 +0000
Subject: [PATCH 4/4] [NAK_CVR_Mods] Update mod list in README
---
README.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/README.md b/README.md
index d317016..73175b8 100644
--- a/README.md
+++ b/README.md
@@ -11,6 +11,7 @@
| [CustomSpawnPoint](CustomSpawnPoint/README.md) | Replaces the unused Images button in the World Details page with a button to set a custom spawn point. | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r48/CustomSpawnPoint.dll) |
| [DesktopInteractions](DesktopInteractions/README.md) | Adds IK-driven hand gestures to your avatar in Desktop: earpiece grab (GMOD-style) when typing in ChatBox, and binocular cupping when zooming. Both gestures are toggleable in settings. | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r48/DesktopInteractions.dll) |
| [DoubleTapJumpToExitSeat](DoubleTapJumpToExitSeat/README.md) | Replaces seat exit controls with a double-tap of the jump button, avoiding accidental exits from joystick drift or opening the menu. | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r48/DoubleTapJumpToExitSeat.dll) |
+| [ESCBothMenus](ESCBothMenus/README.md) | Makes the Quick Menu appear when pressing ESC in Desktop. Pressing twice will open straight to Main Menu. | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r48/ESCBothMenus.dll) |
| [FuckToes](FuckToes/README.md) | Prevents VRIK from autodetecting toes in Halfbody or Fullbody. | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r48/FuckToes.dll) |
| [PlapPlapForAll](PlapPlapForAll/README.md) | Penetrator SFX mod which adds Noach's PlapPlap prefab to any detected DPS setup on avatars that do not already have it. | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r48/PlapPlapForAll.dll) |
| [PropLoadingHexagon](PropLoadingHexagon/README.md) | https://github.com/NotAKidoS/NAK_CVR_Mods/assets/37721153/a892c765-71c1-47f3-a781-bdb9b60ba117 | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r48/PropLoadingHexagon.dll) |