锁定控制器提示(陀螺仪友好)

锁定控制器提示(陀螺仪友好)

当游戏检测到鼠标输入时,让控制器按键提示保持显示在屏幕上。为Steam Input陀螺仪瞄准(陀螺仪 -> 鼠标)而制作,在RDR2中,每次移动陀螺仪时,通常会在控制器和键盘/鼠标提示之间闪烁。

功能

  • 鼠标锁定:鼠标/陀螺仪输入永远不会将提示切换为键盘。 按下真实的键盘按键仍会像原版一样切换提示。
  • 完全锁定(默认):鼠标和键盘都不会切换提示。控制器提示 无论如何都会保持在屏幕上。如果 Steam Input 将某些按钮映射为按键,这会很方便。
  • 游戏中按 F9 可在鼠标锁定和完全锁定之间切换。 (两声高音 = 完全锁定,两声低音 = 鼠标锁定)
  • 游戏中按 F8 可开启/关闭该模组(高音 = 开启,低音 = 关闭)。
  • 鼠标/陀螺仪移动本身不受影响——只是停止了提示切换。
  • 额外好处:控制器振动继续工作。原版 RDR2 一旦认为你在使用 键盘/鼠标就会关闭震动;使用该模组后,当你使用陀螺仪/鼠标时它仍会保持开启 (在完全锁定下使用键盘时也是如此)。
  • 如果你的游戏版本不匹配,则不会修补任何内容(而是记录错误)。

要求

  • Red Dead Redemption 2 PC,游戏版本 1.0.1491.50(在该版本上测试通过)。
  • 一个 ASI 加载器,例如 Script Hook RDR2(Alexander Blade)自带的 dinput8.dll ASI 加载器,或 Ultimate ASI Loader。 本模组本身并不需要 Script Hook RDR2。

安装

  1. 如果你还没有 ASI 加载器,请先安装一个。
  2. 将 ForcePadPrompts.asi 和 ForcePadPrompts.ini 复制到游戏文件夹 (包含 RDR2.exe 的文件夹)。
  3. 启动游戏并加载故事模式。

卸载

从游戏文件夹中删除 ForcePadPrompts.asi、ForcePadPrompts.ini 和 ForcePadPrompts.log。

配置(ForcePadPrompts.ini)

StartInFullLock=0 0 = 以鼠标锁定启动,1 = 以完全锁定启动 ToggleKey=119 开/关键(十进制虚拟键码,119 = F8) ModeKey=120 模式切换键(120 = F9,121 = F10,...) BeepOnToggle=1 0 = 不发出提示音

虚拟键码列表: https://learn.microsoft.com/windows/win32/inputdev/virtual-key-codes (将十六进制值转换为十进制,例如 0x77 = 119)

故障排除

  • 检查游戏文件夹中的 ForcePadPrompts.log。在正常工作的安装中,它会显示 "patched kbm-event"、"patched source-update"、"patched last-key" 和 "gamepad prompts locked"。
  • "pattern not found / not unique - unsupported game version":游戏已 更新,模组自行禁用了。未更改任何内容。请等待更新。
  • 完全没有日志文件:ASI 加载器没有加载 .asi 文件。请检查你的 ASI 加载器是否已安装。
  • 提示仍会因键盘而切换:你处于鼠标锁定状态。按 F9 (两声高音)切换到完全锁定。

兼容性

  • 仅限故事模式。请勿在 Red Dead Online 中使用模组。
  • 可与其他 ASI 模组、Script Hook RDR2、LML、ReShade 一起使用。
  • 不会改动磁盘上的任何游戏文件。它在游戏运行时修补内存中的 三条指令。

工作原理(供好奇者参考)

RDR2 在其输入管理器中保留了一个“最后输入来源”值。只要该值不是“gamepad”, 提示就会显示键盘/鼠标图标。该模组绕过了三个将键盘/鼠标来源 写入其中的位置,并丢弃这些写入 (在鼠标锁定下仅丢弃鼠标,在完全锁定下丢弃鼠标 + 键盘)。修补位置通过 字节模式查找,并在进行任何更改之前验证其唯一性。

致谢

  • Alexander Blade - Script Hook RDR2 / ASI 加载器。
  • alloc8or 的 RDR3 native DB - 原生名称和哈希。
  • 使用 Claude Code(Anthropic,Claude Opus 5.5)作为 AI 辅助 项目构建:逆向工程、代码和测试均在 AI 帮助下编写, 并由作者在游戏中进行测试。

许可证

MIT - 见 LICENSE.txt。源代码包含在源代码归档中。