Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[linux] 手柄用不了 #54

Closed
pugaizai opened this issue Jan 12, 2023 · 17 comments
Closed

[linux] 手柄用不了 #54

pugaizai opened this issue Jan 12, 2023 · 17 comments

Comments

@pugaizai
Copy link
Contributor

xbox手柄在我的fedora37上游戏工作一切正常,但是在这个软件里却用不了。

@xfangfang
Copy link
Owner

@NEOVALI 可以将手柄连上电脑,从命令行运行以查看应用log。
在应用运行期间尝试插拔手柄。

如果一切正常的话,将有如下类型的log:

06:02:54.774[INFO] glfw: joystick 0 disconnected
06:02:58.644[INFO] glfw: joystick 0 connected
06:02:58.644[INFO] glfw: joystick 0 is gamepad: "X360 Controller"
06:03:17.811[INFO] glfw: joystick 1 connected
06:03:17.811[INFO] glfw: joystick 1 is gamepad: "PS4 Controller"
06:03:23.199[INFO] glfw: joystick 1 disconnected

反馈问题时应该附加你使用的wiliwili的具体版本和其他一切你认为可以帮助到开发者的信息。

@pugaizai
Copy link
Contributor Author

[five@fedora wiliwili-Linux-b6fe1d8-x86_64]$ flatpak run cn.xfangfang.wiliwili 
12:54:23.793[INFO] ProgramConfig::setProgramConfig:
12:54:23.793[INFO] client: 
12:54:23.793[INFO] cookie: DedeUserID:0
12:54:23.794[INFO] setting: {"app_lang":"zh-Hans"}
12:54:23.794[INFO] Load config from: /home/five/.var/app/cn.xfangfang.wiliwili/config/wiliwili/wiliwili_config.json
12:54:23.794[INFO] Set app locale: zh-Hans
12:54:23.801[INFO] Using platform GLFW
12:54:23.875[INFO] glfw: GL Vendor: AMD
12:54:23.875[INFO] glfw: GL Renderer: AMD Radeon RX 580 2048SP (polaris10, LLVM 14.0.6, DRM 3.48, 6.0.18-300.fc37.x86_64)
12:54:23.875[INFO] glfw: GL Version: 4.6 (Core Profile) Mesa 22.3.2 (git-a09d5e2747)
12:54:23.875[INFO] glfw: GLFW Version: 3.4.0
12:54:23.881[INFO] windows size changed: 1920 height: 1011
12:54:23.881[INFO] framebuffer size changed: fwidth: 1920 fheight: 1011
12:54:23.881[INFO] scale factor: 1.0
12:54:23.881[INFO] Window size changed to 1920x1011, content size: 1280.0x674.0 factor: 1.5
12:54:23.881[WARNING] Cannot find custom font, (Searched at: /home/five/.var/app/cn.xfangfang.wiliwili/config/wiliwili/font.ttf)
12:54:23.881[INFO] Using internal font: /app/share/wiliwili/resources/font/switch_font.ttf
12:54:23.885[INFO] Load custom icon: /app/share/wiliwili/resources/font/keymap_xbox.ttf
12:54:23.885[INFO] createWindow done
12:54:23.897[INFO] windows size changed: 1920 height: 1080
12:54:23.897[INFO] framebuffer size changed: fwidth: 1920 fheight: 1011
12:54:23.897[INFO] scale factor: 1.0
12:54:23.897[INFO] Window size changed to 1920x1011, content size: 1280.0x674.0 factor: 1.5
12:54:23.897[INFO] windows size changed: 1920 height: 1080
12:54:23.897[INFO] framebuffer size changed: fwidth: 1920 fheight: 1080
12:54:23.897[INFO] scale factor: 1.0
12:54:23.897[INFO] Window size changed to 1920x1080, content size: 1280.0x720.0 factor: 1.5
12:54:23.998[INFO] WindowSizeChangedEvent trigger
12:54:24.000[INFO] WindowSizeChangedEvent trigger
12:54:24.020[INFO] max_thread_num: 4
12:54:31.433[INFO] App is up to date
12:54:37.607[INFO] glfw: joystick 0 disconnected
12:54:41.791[INFO] glfw: joystick 0 connected

系统 fedora 37
桌面 GNOME 43
软件版本 是从github action下载的最新的flatpak构建

可能是因为我的不是微软官方的xbox手柄吧

@pugaizai pugaizai closed this as not planned Won't fix, can't repro, duplicate, stale Jan 13, 2023
@xfangfang
Copy link
Owner

xfangfang commented Jan 13, 2023

@NEOVALI 我推送了一个提交,更新了手柄识别库,同时也支持自定义手柄按键。

如果还是无法使用手柄可以尝试自定义按键:
方法是找到应用的安装目录,resources/gamepad下有一个txt文件,可以向其中添加手柄的自定义控制信息。

关于如何添加可以查看:https://github.com/gabomdq/SDL_GameControllerDB/
大概方法就是找到手柄的GUID,然后在这个文件里找个xbox手柄的键位来修改尝试。
如果不知道如何获取到手柄的GUID,可以通过应用的log来查看

另外一个问题是,请问你的手柄可以被这个网站识别吗?https://gamepad-tester.com


更新,方便操作自定义手柄数据的位置 从安装目录更改到应用配置目录下的 gamecontrollerdb.txt 文件

@pugaizai pugaizai reopened this Jan 13, 2023
@pugaizai
Copy link
Contributor Author

pugaizai commented Jan 13, 2023

@xfangfang

https://github.com/gabomdq/SDL_GameControllerDB/

这个库里面没有我的手柄

更新,方便操作自定义手柄数据的位置 从安装目录更改到应用配置目录下的 gamecontrollerdb.txt 文件

我尝试过,但是还是用不了
然后我尝试修改环境变量:
export SDL_GAMECONTROLLERCONFIG="03009b31ac0500001c06000011010000,Gamesir-T4 1.25,a:b0,b:b1,x:b3,y:b4,back:b10,guide:b15,start:b11,leftshoulder:b6,rightshoulder:b7,leftstick:b13,rightstick:b14,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,-leftx:-a0,+leftx:+a0,-lefty:-a1,+lefty:+a1,-rightx:-a2,+rightx:+a2,righty:a3,lefttrigger:+a5,righttrigger:b9,platform:Linux,"
Steam 识别到了我之后的布局改动,但是wiliwili还是无法用手柄。

另外一个问题是,请问你的手柄可以被这个网站识别吗?https://gamepad-tester.com/

可以被识别。

我想我是不是应该换个手柄了,这个手柄我50块钱买的还是有点不行啊。。

@xfangfang
Copy link
Owner

xfangfang commented Jan 13, 2023

@xfangfang

https://github.com/gabomdq/SDL_GameControllerDB/

这个库里面没有我的手柄

更新,方便操作自定义手柄数据的位置 从安装目录更改到应用配置目录下的 gamecontrollerdb.txt 文件

我尝试过,但是还是用不了

然后我尝试修改环境变量:

export SDL_GAMECONTROLLERCONFIG="03009b31ac0500001c06000011010000,Gamesir-T4 1.25,a:b0,b:b1,x:b3,y:b4,back:b10,guide:b15,start:b11,leftshoulder:b6,rightshoulder:b7,leftstick:b13,rightstick:b14,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,-leftx:-a0,+leftx:+a0,-lefty:-a1,+lefty:+a1,-rightx:-a2,+rightx:+a2,righty:a3,lefttrigger:+a5,righttrigger:b9,platform:Linux,"

Steam 识别到了我之后的布局改动,但是wiliwili还是无法用手柄。

另外一个问题是,请问你的手柄可以被这个网站识别吗?https://gamepad-tester.com/

可以被识别。

我想我是不是应该换个手柄了,这个手柄我50块钱买的还是有点不行啊。。

感谢回复,我感觉大概率可以支持

如果可以的话,可以尝试一下这个流程:

  1. 下载安装最新的wiliwili
  2. 在 应用设置/实用工具/其他 中选择打开应用配置目录
  3. 将您上面用到的数据那一条配置写入这个目录下 gamecontrollerdb.txt 文件中(默认是没有的需要自己手动新建)

重启应用,然后看看能不能正常使用。

(如果正常加载了这个自定义文件,应用log中会有提示)


抱歉,我用手机看的,看漏了你说的已经尝试过了。
可以发下log看看

@pugaizai
Copy link
Contributor Author

[five@fedora ~]$ flatpak run cn.xfangfang.wiliwili 
23:58:33.604[INFO] wiliwili v0.5.0-91-g36f5d7f
23:58:33.605[INFO] client: 
23:58:33.605[INFO] cookie: DedeUserID:0
23:58:33.605[INFO] setting: {"app_lang":"zh-Hans"}
23:58:33.605[INFO] Load config from: /home/five/.var/app/cn.xfangfang.wiliwili/config/wiliwili/wiliwili_config.json
23:58:33.605[INFO] Set app locale: zh-Hans
23:58:33.616[INFO] Using platform GLFW
23:58:33.715[INFO] glfw: GL Vendor: AMD
23:58:33.715[INFO] glfw: GL Renderer: AMD Radeon RX 580 2048SP (polaris10, LLVM 14.0.6, DRM 3.48, 6.0.18-300.fc37.x86_64)
23:58:33.715[INFO] glfw: GL Version: 4.6 (Core Profile) Mesa 22.3.2 (git-a09d5e2747)
23:58:33.715[INFO] glfw: GLFW Version: 3.4.0
23:58:33.723[INFO] windows size changed: 1920 height: 1011
23:58:33.723[INFO] framebuffer size changed: fwidth: 1920 fheight: 1011
23:58:33.723[INFO] scale factor: 1.0
23:58:33.723[INFO] Window size changed to 1920x1011, content size: 1280.0x674.0 factor: 1.5
23:58:33.723[INFO] Load custom gamepad db: /home/five/.var/app/cn.xfangfang.wiliwili/config/wiliwili/gamecontrollerdb.txt
23:58:33.723[INFO] glfw: joystick 0 GUID 03000000de280000ff11000001000000
23:58:33.723[INFO] glfw: joystick 0 connected
23:58:33.723[INFO] glfw: joystick 0 is gamepad: "Steam Virtual Gamepad"
23:58:33.723[INFO] glfw: joystick 1 GUID 03000000ac0500001c06000011010000
23:58:33.723[WARNING] Cannot find custom font, (Searched at: /home/five/.var/app/cn.xfangfang.wiliwili/config/wiliwili/font.ttf)
23:58:33.723[INFO] Using internal font: /app/share/wiliwili/resources/font/switch_font.ttf
23:58:33.727[INFO] Load keymap icon: /app/share/wiliwili/resources/font/keymap_xbox.ttf
23:58:33.727[INFO] createWindow done
23:58:33.739[INFO] windows size changed: 1920 height: 1011
23:58:33.739[INFO] framebuffer size changed: fwidth: 1920 fheight: 1011
23:58:33.739[INFO] scale factor: 1.0
23:58:33.739[INFO] Window size changed to 1920x1011, content size: 1280.0x674.0 factor: 1.5
23:58:33.747[INFO] windows size changed: 1920 height: 1080
23:58:33.747[INFO] framebuffer size changed: fwidth: 1920 fheight: 1080
23:58:33.747[INFO] scale factor: 1.0
23:58:33.747[INFO] Window size changed to 1920x1080, content size: 1280.0x720.0 factor: 1.5
23:58:33.835[INFO] WindowSizeChangedEvent trigger
23:58:33.857[INFO] WindowSizeChangedEvent trigger
23:58:33.858[INFO] WindowSizeChangedEvent trigger
23:58:33.874[INFO] max_thread_num: 4
23:58:36.317[INFO] App is up to date
23:58:40.282[INFO] glfw: joystick 1 disconnected #尝试拔插手柄
23:58:40.296[INFO] glfw: joystick 0 disconnected
23:58:43.215[INFO] glfw: joystick 0 connected
23:58:44.420[INFO] glfw: joystick 1 connected
23:58:44.420[INFO] glfw: joystick 1 is gamepad: "Steam Virtual Gamepad"

@xfangfang
Copy link
Owner

应用中识别到的手柄guid为:03000000ac0500001c06000011010000

但是我注意到前面你写的配置的guid是:
03009b31ac0500001c06000011010000

可以修改成应用识别的guid试试?

@pugaizai
Copy link
Contributor Author

pugaizai commented Jan 13, 2023

@xfangfang 修改了gamecontrollerdb.txt之后还是无法在wiliwili使用手柄

但是我注意到前面你写的配置的guid是:
03009b31ac0500001c06000011010000

这个是https://github.com/gabomdq/SDL_GameControllerDB/ 里面提到的SDL2 Gamepad Mapper识别的

我感觉还是别为了我这数据库里都没有型号的手柄发愁了。。。

@xfangfang
Copy link
Owner

会不会你在同时开着steam导致莫名其妙占用问题呢?

说到steam,我看到steam virtual gamepad貌似被正确识别了,所以应用应该可以由steam来控制才对呀。

这不是一个复杂的问题,因为我手头也没有多余的手柄来测试,应该是这个流程中的哪个环节出了问题,可以再多试试。

如果不行的话,我就暂时解决不了了

@pugaizai
Copy link
Contributor Author

说到steam,我看到steam virtual gamepad貌似被正确识别了,所以应用应该可以由steam来控制才对呀。

可能在steam deck上是如此,但是可惜我用的fedora linux

搞不定,不折腾了我投降了。

@pugaizai pugaizai closed this as not planned Won't fix, can't repro, duplicate, stale Jan 13, 2023
@yigekuyou
Copy link

我的Xbox Wireless Controller - Carbon Black (2020) 也无法识别,打上了xone和xpadneo,蓝牙连接,也是gamecontrollerdb.txt没有的uuid,是不是db数据少的锅

@xfangfang
Copy link
Owner

@yigekuyou 可以按上面说的流程试试自定义

@yigekuyou
Copy link

我觉得我失败了
系统:openSUSE Tumbleweed x86_64
Kernel: 6.1.7-1-default
显示:kde wayland
wilwil:obs构建:https://build.opensuse.org/package/show/home:lighthomo/wiliwili
steam识别正常,网站识别正常
image
image

❯ /usr/bin/wiliwili
21:26:22.328[INFO] wiliwili
21:26:22.329[INFO] Set app locale: zh-Hans
21:26:22.337[INFO] Using platform GLFW
21:26:22.461[INFO] glfw: GL Vendor: NVIDIA Corporation
21:26:22.461[INFO] glfw: GL Renderer: NVIDIA GeForce GTX 1060/PCIe/SSE2
21:26:22.461[INFO] glfw: GL Version: 3.2.0 NVIDIA 525.85.05
21:26:22.461[INFO] glfw: GLFW Version: 3.4.0
21:26:22.462[INFO] windows size changed: 1920 height: 1080
21:26:22.462[INFO] framebuffer size changed: fwidth: 1920 fheight: 1080
21:26:22.462[INFO] scale factor: 1.0
21:26:22.462[INFO] Window size changed to 1920x1080, content size: 1280.0x720.0 factor: 1.5
21:26:22.462[INFO] Load custom gamepad db: /home/light/.config/wiliwili/gamecontrollerdb.txt
21:26:23.377[INFO] glfw: joystick 0 GUID 110000000200000007000000b1010000
21:26:23.377[INFO] glfw: joystick 1 GUID 030000002c1a0000240e000010010000
21:26:23.377[INFO] glfw: joystick 2 GUID 050000005e0400008e02000030110000
21:26:23.377[INFO] glfw: joystick 3 GUID 190000005354204c4953334c56303200
21:26:23.377[WARNING] Cannot find custom font, (Searched at: /home/light/.config/wiliwili/font.ttf)
21:26:23.377[INFO] Using internal font: /usr/share/wiliwili/resources/font/switch_font.ttf
21:26:23.387[INFO] Load keymap icon: /usr/share/wiliwili/resources/font/keymap_xbox.ttf
21:26:23.387[INFO] createWindow done
21:26:23.417[INFO] Write config to: /home/light/.config/wiliwili/wiliwili_config.json
21:26:23.418[INFO] windows size changed: 1920 height: 1080
21:26:23.418[INFO] framebuffer size changed: fwidth: 1920 fheight: 1046
21:26:23.418[INFO] scale factor: 1.0
21:26:23.418[INFO] Window size changed to 1920x1046, content size: 1280.0x697.0 factor: 1.5
21:26:23.419[INFO] windows size changed: 1920 height: 1080
21:26:23.419[INFO] framebuffer size changed: fwidth: 1920 fheight: 1080
21:26:23.419[INFO] scale factor: 1.0
21:26:23.419[INFO] Window size changed to 1920x1080, content size: 1280.0x720.0 factor: 1.5
21:26:23.424[INFO] WindowSizeChangedEvent trigger
21:26:23.532[INFO] WindowSizeChangedEvent trigger
21:26:23.834[INFO] max_thread_num: 4
21:26:31.329[INFO] glfw: joystick 2 disconnected
21:26:33.758[INFO] glfw: joystick 2 connected
21:26:34.707[INFO] App is up to date
21:26:37.934[ERROR] MineHistory::onError: 用户未登录21:26:38.289[ERROR] getUserInfo: error msg: 账号未登录; error code: -101
21:26:38.323[ERROR] getUserDynamicStat: error msg: ; error code: -6
21:26:38.667[ERROR] getUserRelationStat: error msg: 请求错误; error code: -400
21:26:39.879[INFO] Exiting...
gameconnecterdb是抄的steam的
gamecontrollerdb.txt
03000000de280000ff11000001000000,Steam Virtual Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux
03000000de280000fc11000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux
050000005e040000130b000013050000,Xbox Series X Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux
,platform:Linux

@yigekuyou
Copy link

无论是否使用wayland构建选项都没用

@xfangfang
Copy link
Owner

@yigekuyou

wayland构建选项并不是wiliwili提供的,我不知道哪里会用到你设置的那个选项。

有一个通用的问题是,我发现你配置的手柄guid和应用log显示的id貌似不同,或许需要改成相同的内容?

因为我的手柄都是插上就能用的,所以我也不是很了解究竟是哪里出了问题,如果有能力的话还烦请看看源码调试调试。

dev分支的代码可以在linux上正常使用sdl,不过如果我记得没错的话sdl实现我没有写加载自定义gamepad db,所以如果可以的话可以实现一下看看。

关于这个问题我在没有对应设备的情况下是没有办法调试的,这个只能靠大家了

@yigekuyou
Copy link

正如您所说,解决了

@xfangfang
Copy link
Owner

@yigekuyou 感谢反馈,说明自定义手柄数据那里实现的没有问题。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants