前置 Mod
详情
媒体键修复
问题
Skyrim 启动时会对键盘和鼠标进行独占访问,导致媒体键、Windows 键或任何其他不由 DirectInput 处理的按键都被忽略。这让用户的生活更麻烦,要调节音量就需要 ALT+TAB 或使用覆盖层。
解决方案
此 mod 修改 DirectInput 标志,使游戏不再以独占访问启动。但这会带来另一个问题:死键(用于变音符号)会被忽略,因此一些使用带重音符号键盘布局(例如 US-international)的用户无法在控制台中输入单引号或双引号。此 mod 也修复了这个副作用,但必须在 .INI 中启用该选项(DisableDeadKeys)。有关 DirectInput 独占/非独占访问的更多详细信息,请见此处。
游戏在后台时不会接收按键(每个游戏都应该如此),并且在前台获得焦点时也会正常工作。
需求
Address Library for SKSE Plugins
配置
MediaKeysFix.ini 有以下选项:
--
[General]
;; Disable Windows key. Set to true to disable windows key.
DisableWindowsKey = true
;; Disable dead keys. When Skyrim doesn't have exclusive access to keyboard, dead keys stops working.
;; Users with keyboards layout like US-International or any other that uses dead keys may experience
;; difficulties to type characters like quotes in console. A way to fix this is effectively disable
;; dead keys in game.
;; Set to true to disable dead keys.
DisableDeadKeys = false
;; Allow background access. STRONGLY RECOMMENDED TO BE SET = false, only useful for DEBUGGING.
;; If background access is granted, the device can be acquired at any time,
;; even when the associated window is not the active window.
;; The game will receive input even if not active window!!
;; Set to true to allow background (replaces DISCL_FOREGROUND with DISCL_BACKGROUND)
BackgroundAccess = false
--
以上为默认值。如果你想让 Windows 键正常工作,请将选项 "DisableWindowsKey " 设为 false。如果你遇到死键问题,例如在 US-international 键盘中输入引号,请将选项 "DisableDeadKeys" 设为 true,这会让游戏不再忽略通常用于变音符号的按键。如果你希望游戏按预期运行,请不要使用 "BackgroundAccess",它仅用于调试。
一些用户报告说,当配置为 DisableWindowsKey=false 时,此 mod 修复了与 Alt+Shift(用于 Windows 语言切换)相关的问题。
兼容性
兼容 1.5.97、1.6.1170、1.6.1179 和 1.7.104。
行为
无论是否启用后台访问,此 mod 都会始终让 Skyrim 以 DISCL_NONEXCLUSIVE 运行。默认是 FOREGROUND,这意味着游戏在前台时会接收键盘输入。DisableDeadKeys 选项用于修复一个 bug,如果你使用带死键的键盘,也许你会想启用该选项。
按此 mod 的原本用途使用(禁用 BackgroundAccess),游戏会继续完全忽略 Windows 的鼠标配置(来自设置/控制面板)。
鼠标应该没有问题,游戏始终将鼠标设备设置为 DISCL_FOREGROUND 和 DISCL_EXCLUSIVE。此 mod 只更改键盘的 dwFlags。
源代码
https://github.com/epinter/MediaKeysFix
鸣谢
Bethesda 制作了这款游戏。
SKSE 团队制作了 Skyrim Script Extender。
CommonLibSSE-NG 作者制作了该库。
所有开源自己作品的开发者,我从阅读其他 mod 的代码中学到了很多。
meh321 制作了 Address Library。

