蓝牙连接Switch pro手柄后软件闪退
版本:QKeyMapper_v1.3.7_x64_Qt6 系统:Windows 11
问题描述:
- pro手柄如果使用蓝牙连接的话则会导致软件闪退
-
如下图,如果是有线连接至windows(蓝牙未连接)则不会闪退并可以完成映射
-
如下图,使用xbox手柄蓝牙连接则没有问题
-
另外用八位堂的lite 2手柄软件无法识别
我手头没有那么多手柄,无法都进行测试
- Switch pro手柄蓝牙连接的问题,我只能找一个其他支持蓝牙连接的手柄测试是否正常,如果无法再现的话暂时无法定位问题原因。
- 同样八位堂的lite 2手柄也是这样,如果SDL2对DInput手柄检测不完全兼容的话可能也无法正常支持。只能试验一下无法显示的手柄是否能够正常使用。下拉列表只是为了显示手柄名称,不显示的手柄也有可能可以在映射软件中检测到手柄按键。
在Win10 x64系统上使用最新版本 v1.3.7 Build 20241006测试冰原狼模拟的Switch pro手柄蓝牙连接能够正常连接和进行手柄按键映射,没发现异常。推测有可能是Win11系统上对SDL2库的兼容性没有Win10上好。
https://github.com/user-attachments/assets/87658bb0-b938-4e92-99d4-457990599507
如果愿意复现提供log文件的话也可以用附件 QKeyMapper_v1.3.7_x64_Qt6_Build_20241006_logout.zip 打开了log记录文件的版本进行再现并提供可执行文件同路径下生成的 "log.txt" 文件,可以简单分析一下问题原因,但是SDL2库兼容性导致的崩溃的话应该无法修正。 QKeyMapper_v1.3.7_x64_Qt6_Build_20241006_logout.zip
- 下面附件为连接pro手柄闪退log文件(删除了部分枚举进程的log) log_连接pro手柄闪退.txt
报错是 [doLoadInterception] interception_create_context() Failed!!!
- 另外八位堂lite2手柄从log上看是监测到了按键的,但是映射并不成功(并没有产生效果)
[2024-10-09 09:55:24.540][D] [pressedRealKeysList] KEY_DOWN : Current Pressed RealKeys -> QList("Joy-Key11(LT)", "Joy-DPad-Up", "Joy-DPad-Down", "Joy-DPad-Left", "Joy-DPad-Right", "Mouse-L") [2024-10-09 09:55:24.541][D] [pressedRealKeysListRemoveMultiInput] KEY_DOWN : Current Pressed RealKeys(without MultiInput) -> QList("Joy-Key11(LT)", "Joy-DPad-Up", "Joy-DPad-Down", "Joy-DPad-Left", "Joy-DPad-Right", "Mouse-L") [2024-10-09 09:55:24.673][D] Real "Mouse-L" Button Up, extraInfo(0x00000000)
而 joytokey 的映射就是成功的
- 下面附件为连接pro手柄闪退log文件(删除了部分枚举进程的log)
[doLoadInterception] interception_create_context() Failed!!! 这条log不安装多设备驱动程序启动时候就会输出,不是问题原因。 log_连接pro手柄闪退.txt 文件中似乎只记录了程序启动前两秒的log信息,如果是程序启动时候就直接退出的话,有可能是 "struct QJoystickDevice *__cdecl SDL_Joysticks::getJoystick(int) Cannot find joystick with id: 0" 这条log相关的问题。看起来SDL2库对这个蓝牙手柄可能无法正常支持,不太好解决,没有设备不好定位SDL2库无法正常检测手柄时发送了什么样的异常参数导致程序崩溃。
- 另外八位堂lite2手柄从log上看是监测到了按键的,但是映射并不成功(并没有产生效果)
没有实际设备不太好验证问题原因,但是理论上能够检测到按键的话,正常应该能够映射,暂时没遇到过能检测到按键但是不能映射的情况。
试了,8位堂 lite2 手柄可以正常使用
Pro 手柄闪退的问题没有变化
log_连接pro手柄闪退.txt 文件中似乎只记录了程序启动前两秒的log信息,如果是程序启动时候就直接退出的话
确实是刚启动就闪退,两种方式我都试过:
- 先连接手柄(游戏可正常使用),打开软件,软件就闪退;
- 先打开软件(连接其他手柄正常使用),连接Pro手柄,软件就闪退。
log_连接pro手柄闪退.txt 文件中似乎只记录了程序启动前两秒的log信息,如果是程序启动时候就直接退出的话
确实是刚启动就闪退,两种方式我都试过:
- 先连接手柄(游戏可正常使用),打开软件,软件就闪退;
- 先打开软件(连接其他手柄正常使用),连接Pro手柄,软件就闪退。
那Switch Pro手柄的蓝牙连接估计兼容性不太好,就当不能用吧。就算改也顶多只能改成软件不退出,用肯定是用不了的。
那这个issue关闭吧,可能是win11的问题吧,Xbox手柄没问题就好了