タイトル:コントローラーが時々操作不能になるの対処法
本篇博文附带日语翻译。日本語訳付き(間違えたところがあったら教えてください)。
TL;DR: 用手柄游玩FFXIV的时候,如果发生硬件变动(包括新增和删除设备),将会导致手柄短暂失去响应。这是游戏本身的问题,但我们可以通过避免设备变动的发生来规避它。
まとめ:コントローラーでFFXIV遊んでいるとき、デバイスが検知もしく削除された場合、コントローラーが数秒間操作不能になる。これはゲーム自体の問題ではあるが、デバイスの検知・削除を避けることで、この問題を回避することができる。
症状
在Windows用手柄游玩的时候,偶尔会有几秒钟无法操作,此时会重复之前输入的指令。Windowsにてパッドでプレイしているとき、たまに数秒程度操作が受け付けられなくなり、直前の入力内容が繰り返されます。
- 不管按哪个按钮都没有反应。 どのボタンを押しても反応しなくなる。
- 如果正在移动(左摇杆)的话,就算松开摇杆角色也会继续移动(无法控制)。移動(左レバー操作)をしていると、上記と同じでレバーを離しても移動し続ける(操作不能)。
- 如果正在移动视角(右摇杆)的话,就算松开摇杆视角也会继续移动(无法控制)。視点移動(右レバー操作)しているとレバーを離しても、1~2秒間視点が動き続ける(操作不能)。
解决方案 / 対処法
执行PowerShell脚本以监控是什么硬件发生了变动。PowerShellスクリプトを実行して、検知・削除されたデバイスを特定する。
脚本内容如下。スクリプトの内容は以下通り。
# Device Manager
# 0 Other Devices
# 1 Error Devices (Yellow Bang)
# 2 Camera Number
function GetDevStatus {
$Device_other = @()
$Device_yellowbang = @()
$CameraNum=0
$All_List = Get-WmiObject -Class Win32_PNPEntity
foreach ($i in $All_List) {
if ($Null -ne $i.Name -and $Null -eq $i.PNPClass) {
$Device_other += ($i.Name)
}
if ($i.Status -eq "Error") {
$Device_yellowbang += ($i.Name)
}
if ($i.PNPClass -eq "Camera"){
$CameraNum+=1
}
}
return $Device_other, $Device_yellowbang,$CameraNum
}
function CatchChange {
Write-Host("************Listening Device Change************")
$device=Get-WmiObject -Class Win32_PNPEntity
$device_num=$device.Length
while ($device_num -eq((Get-WmiObject -Class Win32_PNPEntity).Length)){
}
if ($device_num -gt((Get-WmiObject -Class Win32_PNPEntity).Length)){
Write-Host("Remove Device")
}
else{
Write-Host("Add Device")
}
$device_Change=Get-WmiObject -Class Win32_PNPEntity
$device_Compare=Compare-Object $device $device_Change
Write-Host($device_Compare.InputObject.Name)
}
# CatchChange
$a = GetDevStatus
if ($Null -eq $a) {
Write-Host("No Error")
}
else {
Write-Host("************Other Devices************")
$a[0]
Write-Host("")
Write-Host("************YellowBang Devices************")
$a[1]
Write-Host("")
Write-Host("************Camera Num************")
$a[2]
}
while ($True){
CatchChange
}
请把这个脚本保存为 script.ps1 并右键使用PowerShell运行。script.ps1 として保存して、右クリック「PowerShell で実行」してください。
这样一来,应该可以看到如下界面。回到FFXIV接着玩,发生症状之后应该就能看到脚本监控到了设备变动。Add Device和Remove Device的下面就是我们需要注意的设备。そうすると、Windows PowerShellのウィンドウが出てくる。しばらくFFXIVを遊んで、操作不能になったらさっきのウィンドウをチェック。「Add Device」と「Remove Device」の下のデバイスに注目。

我这里造成问题的设备是「HID-compliant vendor-defined device HID-compliant mouse」(蓝牙鼠标)。在这之前也有出现过「surface pen」。因为鼠标放置一段时间的话就会自动关掉电源,所以会产生设备的变动。自分のところは「HID-compliant vendor-defined device HID-compliant mouse」だった(ワイヤレスマウス)。他に「surface pen」もあった。ワイヤレスマウスをしばらく放置したので、電源が自動的に切れただろう。
知道了问题所在,把蓝牙鼠标的电源关掉,把手写笔收起来之后问题就解决了。解決策として、ワイヤレスマウスの電源を切った。それ以降問題がなくなった。
在禁用了「Microsoft Device Association Root Enumerator」之后问题并没有解决,所以写了这篇文章。「Microsoft Device Association Root Enumerator」を無効にすることで治らなかったので、この文章を書いた。
具体的处理方法根据设备不同也会不同,如果是外接设备的话关掉应该就可以了。如果有问题的话可以在评论里告诉我设备名称。具体的な対処法は特定されたデバイスによるが、外部デバイスだと電源を切ったらOKだと思う。何か問題があったらコメントお願いします。
参考
https://jp.finalfantasyxiv.com/lodestone/character/2800076/blog/2761167/
