[Bug] Input configuration issues #57
Open
opened 2024-10-25 09:14:01 +00:00 by TheEarthrise
·
18 comments
No Branch/Tag Specified
master
feature/turbo-mode
feature/native_aot
xeyes
metal
feature/ava/ams-mod-pretty-name
feature/ava/amoled-theme
new-metal
refactor/ava/headless-in-avalonia
Canary-1.2.447
Canary-1.2.446
1.2.86
Canary-1.2.445
Canary-1.2.444
Canary-1.2.443
Canary-1.2.442
Canary-1.2.441
Canary-1.2.440
Canary-1.2.439
Canary-1.2.438
Canary-1.2.437
Canary-1.2.436
Canary-1.2.435
Canary-1.2.434
Canary-1.2.433
Canary-1.2.432
Canary-1.2.431
Canary-1.2.430
Canary-1.2.429
Canary-1.2.428
Canary-1.2.427
Canary-1.2.426
Canary-1.2.425
Canary-1.2.424
Canary-1.2.423
Canary-1.2.422
Canary-1.2.421
Canary-1.2.420
Canary-1.2.419
Canary-1.2.418
Canary-1.2.417
Canary-1.2.416
Canary-1.2.415
Canary-1.2.414
Canary-1.2.413
Canary-1.2.412
Canary-1.2.411
Canary-1.2.410
Canary-1.2.409
Canary-1.2.408
Canary-1.2.407
Canary-1.2.406
Canary-1.2.405
Canary-1.2.404
Canary-1.2.403
Canary-1.2.402
Canary-1.2.401
Canary-1.2.400
Canary-1.2.399
Canary-1.2.398
Canary-1.2.397
Canary-1.2.396
1.2.82
Canary-1.2.395
Canary-1.2.394
Canary-1.2.393
Canary-1.2.392
Canary-1.2.391
Canary-1.2.390
Canary-1.2.389
Canary-1.2.388
Canary-1.2.387
Canary-1.2.386
Canary-1.2.385
Canary-1.2.384
Canary-1.2.383
Canary-1.2.382
Canary-1.2.381
Canary-1.2.380
Canary-1.2.379
Canary-1.2.378
Canary-1.2.377
Canary-1.2.376
Canary-1.2.375
Canary-1.2.374
Canary-1.2.373
Canary-1.2.372
Canary-1.2.371
Canary-1.2.370
Canary-1.2.369
Canary-1.2.368
Canary-1.2.367
Canary-1.2.366
Canary-1.2.365
Canary-1.2.364
Canary-1.2.363
Canary-1.2.362
Canary-1.2.361
Canary-1.2.360
Canary-1.2.359
Canary-1.2.358
Canary-1.2.357
Canary-1.2.356
Canary-1.2.355
Canary-1.2.354
Canary-1.2.353
Canary-1.2.352
Canary-1.2.351
Canary-1.2.350
Canary-1.2.349
Canary-1.2.348
Canary-1.2.347
Canary-1.2.346
Canary-1.2.345
Canary-1.2.344
Canary-1.2.343
Canary-1.2.342
Canary-1.2.341
Canary-1.2.340
Canary-1.2.339
Canary-1.2.338
Canary-1.2.337
Canary-1.2.336
Canary-1.2.335
Canary-1.2.334
Canary-1.2.333
Canary-1.2.332
Canary-1.2.331
Canary-1.2.330
Canary-1.2.329
Canary-1.2.328
Canary-1.2.327
Canary-1.2.326
Canary-1.2.325
Canary-1.2.324
Canary-1.2.323
Canary-1.2.322
Canary-1.2.321
Canary-1.2.320
Canary-1.2.319
Canary-1.2.318
Canary-1.2.317
Canary-1.2.316
Canary-1.2.315
Canary-1.2.314
Canary-1.2.313
Canary-1.2.312
Canary-1.2.311
Canary-1.2.310
Canary-1.2.309
Canary-1.2.308
Canary-1.2.307
Canary-1.2.306
Canary-1.2.305
Canary-1.2.304
Canary-1.2.303
Canary-1.2.302
Canary-1.2.301
Canary-1.2.300
Canary-1.2.299
Canary-1.2.297
Canary-1.2.296
Canary-1.2.295
Canary-1.2.294
Canary-1.2.293
Canary-1.2.292
Canary-1.2.291
Canary-1.2.290
Canary-1.2.289
Canary-1.2.288
Canary-1.2.287
Canary-1.2.286
Canary-1.2.285
1.2.81
Canary-1.2.284
Canary-1.2.283
Canary-1.2.282
Canary-1.2.281
Canary-1.2.280
Canary-1.2.279
Canary-1.2.278
Canary-1.2.277
Canary-1.2.276
Canary-1.2.275
Canary-1.2.274
Canary-1.2.273
Canary-1.2.272
Canary-1.2.271
Canary-1.2.270
Canary-1.2.269
Canary-1.2.268
1.2.80
Canary-1.2.267
Canary-1.2.266
Canary-1.2.265
Canary-1.2.264
Canary-1.2.263
Canary-1.2.262
Canary-1.2.261
Canary-1.2.260
Canary-1.2.259
Canary-1.2.258
Canary-1.2.257
Canary-1.2.256
Canary-1.2.255
Canary-1.2.254
Canary-1.2.253
Canary-1.2.252
Canary-1.2.251
Canary-1.2.250
Canary-1.2.249
Canary-1.2.248
Canary-1.2.247
Canary-1.2.246
Canary-1.2.245
Canary-1.2.244
Canary-1.2.243
Canary-1.2.242
Canary-1.2.241
Canary-1.2.240
Canary-1.2.239
Canary-1.2.238
Canary-1.2.237
Canary-1.2.236
Canary-1.2.235
Canary-1.2.234
Canary-1.2.233
Canary-1.2.232
Canary-1.2.231
Canary-1.2.230
Canary-1.2.229
Canary-1.2.228
Canary-1.2.227
Canary-1.2.226
Canary-1.2.225
Canary-1.2.224
Canary-1.2.223
Canary-1.2.222
Canary-1.2.221
Canary-1.2.220
Canary-1.2.219
Canary-1.2.218
Canary-1.2.217
Canary-1.2.216
Canary-1.2.215
Canary-1.2.214
Canary-1.2.213
Canary-1.2.212
Canary-1.2.211
Canary-1.2.210
Canary-1.2.209
Canary-1.2.208
Canary-1.2.207
Canary-1.2.206
Canary-1.2.205
Canary-1.2.204
Canary-1.2.203
Canary-1.2.202
Canary-1.2.201
Canary-1.2.200
Canary-1.2.199
Canary-1.2.198
Canary-1.2.197
Canary-1.2.196
Canary-1.2.195
Canary-1.2.194
Canary-1.2.193
Canary-1.2.192
Canary-1.2.191
Canary-1.2.190
Canary-1.2.189
Canary-1.2.188
Canary-1.2.187
Canary-1.2.186
Canary-1.2.185
Canary-1.2.184
Canary-1.2.183
Canary-1.2.182
Canary-1.2.180
Canary-1.2.179
Canary-1.2.178
Canary-1.2.177
Canary-1.2.176
Canary-1.2.175
Canary-1.2.174
Canary-1.2.173
Canary-1.2.172
Canary-1.2.171
Canary-1.2.170
Canary-1.2.169
Canary-1.2.168
Canary-1.2.167
Canary-1.2.166
Canary-1.2.165
Canary-1.2.164
Canary-1.2.163
Canary-1.2.162
Canary-1.2.161
Canary-1.2.160
Canary-1.2.159
Canary-1.2.158
Canary-1.2.157
Canary-1.2.156
Canary-1.2.155
Canary-1.2.146
Canary-1.2.145
Canary-1.2.144
Canary-1.2.143
Canary-1.2.142
Canary-1.2.141
Canary-1.2.140
Canary-1.2.139
Canary-1.2.138
Canary-1.2.137
Canary-1.2.136
Canary-1.2.135
Canary-1.2.134
Canary-1.2.133
Canary-1.2.132
Canary-1.2.131
Canary-1.2.130
Canary-1.2.129
Canary-1.2.128
Canary-1.2.127
Canary-1.2.126
Canary-1.2.125
Canary-1.2.124
Canary-1.2.123
Canary-1.2.122
Canary-1.2.121
Canary-1.2.120
Canary-1.2.119
Canary-1.2.118
Canary-1.2.117
Canary-1.2.116
Canary-1.2.115
Canary-1.2.114
Canary-1.2.113
Canary-1.2.112
Canary-1.2.111
Canary-1.2.110
Canary-1.2.109
Canary-1.2.108
Canary-1.2.107
Canary-1.2.106
Canary-1.2.105
Canary-1.2.104
Canary-1.2.103
Canary-1.2.102
Canary-1.2.101
Canary-1.2.100
Canary-1.2.99
Canary-1.2.98
Canary-1.2.97
1.2.79
1.2.78
Canary-1.2.96
Canary-1.2.95
Canary-1.2.94
Canary-1.2.93
Canary-1.2.92
Canary-1.2.91
Canary-1.2.90
Canary-1.2.89
Canary-1.2.88
Canary-1.2.87
Canary-1.2.86
Canary-1.2.85
Canary-1.2.84
Canary-1.2.83
Canary-1.2.82
Canary-1.2.81
Canary-1.2.80
Canary-1.2.79
Canary-1.2.78
Canary-1.2.77
Canary-1.2.76
Canary-1.2.75
Canary-1.2.74
Canary-1.2.73
Canary-1.2.72
Canary-1.2.71
Canary-1.2.70
Canary-1.2.69
Canary-1.2.68
Canary-1.2.67
Canary-1.2.66
Canary-1.2.65
Canary-1.2.64
Canary-1.2.63
Canary-1.2.62
Canary-1.2.61
Canary-1.2.59
Canary-1.2.58
Canary-1.2.57
Canary-1.2.56
Canary-1.2.55
Canary-1.2.54
Canary-1.2.53
Canary-1.2.52
Canary-1.2.51
Canary-1.2.50
Canary-1.2.49
Canary-1.2.48
Canary-1.2.47
1.2.76
Canary-1.2.46
1.2.75
1.2.74
1.2.73
Canary-1.2.45
Canary-1.2.44
Canary-1.2.43
Canary-1.2.42
Canary-1.2.41
Canary-1.2.40
Canary-1.2.38
Canary-1.2.37
Canary-1.2.36
Canary-1.2.35
Canary-1.2.34
Canary-1.2.33
Canary-1.2.32
Canary-1.2.31
Canary-1.2.30
Canary-1.2.29
Canary-1.2.28
Canary-1.2.27
Canary-1.2.26
Canary-1.2.25
Canary-1.2.24
Canary-1.2.23
Canary-1.2.22
Canary-1.2.21
Canary-1.2.20
Canary-1.2.19
Canary-1.2.18
Canary-1.2.17
Canary-1.2.16
Canary-1.2.15
Canary-1.2.14
Canary-1.2.13
Canary-1.2.12
Canary-1.2.11
Canary-1.2.10
Canary-1.2.9
Canary-1.2.8
Canary-1.2.7
Canary-1.2.5
Canary-1.2.4
Canary-1.2.3
Canary-1.2.2
1.2.72
1.2.71
1.2.70
1.2.69
1.2.68
1.2.67
1.2.65
1.2.64
1.2.59
1.2.57
1.2.56
1.2.50
1.2.49
1.2.45
1.2.44
1.2.43
1.2.42
1.2.41
1.2.40
1.2.39
1.2.38
1.2.37
1.2.36
1.2.35
1.2.34
1.2.33
1.2.32
1.2.31
1.2.30
1.2.29
1.2.28
1.2.26
1.2.25
1.2.24
1.2.22
1.2.21
1.2.20
1.2.19
1.2.18
Labels
Clear labels
audio
Affects Audio playback during emulation
blocked on external progress
This cannot move forward without work on an external project or service.
bug
Something isn't working
cpu
An issue with ARMeilleure, the JIT, or Hypervisor
documentation
Improvements or additions to documentation
duplicate
This issue or pull request already exists
enhancement
New feature or request
good first issue
Good first issues to work on for new contributors
gpu
Affects GPU emulation
graphics-backend:metal
Affects the Metal Graphics backend
graphics-backend:opengl
Affects the OpenGL Graphics backend
graphics-backend:vulkan
Affects the Vulkan Graphics backend
gui
Affects the Avalonia UI or translations.
help wanted
Extra attention is needed
horizon
Affects the Horizon OS HLE components.
infra
Updates to dependencies
invalid
This doesn't seem right
kernel
Affects the kernel HLE components.
ldn
Affects the LDN functionality
linux
Linux only issue
macOS
macOS only issue
not planned but open to a PR
I do not intend on working on this myself, but I would not be opposed to an implementation.
question
Further information is requested
windows
Windows only issue
wontfix
This will not be worked on
Milestone
No items
No Milestone
Projects
Clear projects
No project
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: MeloNX/Ryujinx-ryubing#57
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Description of the issue
The input configuration has many issues since the UI was changed to Avalonia. I'll try to list them here.
The current configuration of an input device is not shown in the GUI if you switch the player via the drop-down. You always see the default configuration, not the configuration that is actually saved to the config file.
This was resolved via #122
Every gamepad needs it's own profile, even if they are the same. If you have e.g. two XBOX One S gamepads and want to use them with two players, you need to create two profiles to be able to load the config. This is because the config is bound to a device "ID" in the saved profile. With GTK (or any other emulator) you could create one profile for e. g. an X-Input gamepad and apply it to any other X-Input device, no matter the vendor. Right now, you have to create new profiles for every device that has a different ID. The ID is changing per device type and per device count. This means if you had e.g. four XBOX One S gamepads connected, you would need to create a separate profile for each of them, even though your key configuration is the same every time. If you look in the saved profiles, you'll see something like this:
1st profle: "id": "0-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" (1st XBOX One S gamepad)
2nd profile: "id": "1-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" (2nd XBOX One S gamepad)
3rd profile: "id": "2-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" (3rd XBOX One S gamepad)
4th profile: "id": "3-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" (4th XBOX One S gamepad)
5th profile: "id": "0-yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy" (1st XBOX One Elite gamepad)
x/y is some device id that seem to differ only if the device is not of the same type, like e. g. a XBOX One Elite gamepad has not the same ID as a XBOX One S gamepad.
This was resolved via #708
If a gamepad disconnects while playing (e. g. battery empty or the gamepad goes to sleep), it is sometimes impossible to reconnect it without the need to close the emulator. If you just turn the gamepad back on, the emulator won't detect it. This seems to be random and I have to figure out how to safely reproduce it.
Reproduction steps
Switch to e. g. player 2, set some custom keys, save the configuration, switch to player 1 and then back to player 2. Your customized settings are not shown, even though they are written to the config file correctly.
Connect two gamepads of the same type at the same time. Assign one to player 1 and one to player 2. Create a custom key-profile for the gamepad assigned to player 1 and then try to apply it to the gamepad connected to player 2. The configuration will not load, since the gamepad ID saved to the profile is not identical to the gamepad you selected for player 2. The same applies to different gamepads with the same key layout, e. g. you can not apply a profile created for a XBOX One S gamepad to a XBOX One Elite gamepad, since the saved IDs are not matching.
Hey
have the same issue with the user interface in input settings.
Player 1 and profile drop down menu are not applicable.
But if I right click then I can select it.
But with detours (mouse wheel, keyboard, etc.).
Teested in version 1.2.72 and 1.2.41.
I hope it will be fixed later.
Thanks for the good work
Same for me.
This problem seems like a old one in original ryujinx and yuzu, their profile management is so bad that almost can't work as well as steam or other platforms.
Please take a look here, is the performance issue fixed by this pull request?
https://github.com/Ryubing/Ryujinx/pull/708
Hey, the first problem mentioned was kinda resolved by PR #122 , though there remains a small bug with the slider values. If you have set them to something else and then swap the players, it will show the wrong standard values with the correct slider position.
Before swapping players:

After swapping players:

The second and really annoying problem descibed here (the one with the profiles) remains unchanged.
@TheEarthrise Maybe I'm reproducing the bug incorrectly, but it looks like the sliders work fine in the current version of Canary. If a change has occurred, a dialog box appears before switching to another player
https://github.com/user-attachments/assets/f2146a0c-0565-4101-9967-b923a96e7dc6
Your second problem, if I understood correctly, is that if you apply a profile, then the gamepad itself changes along with the profile. If I understood everything correctly, then this problem can be fixed, and the profile can be applied without changing the gamepad
https://github.com/user-attachments/assets/99759a09-972e-40ad-a724-ef556ecb8c57
Hey,
here is a video about the issue with the config files:
https://github.com/user-attachments/assets/4fedf6e7-3f81-4800-9682-c3dbefd90f99
The profiles you save are somewhat bound to a specific device, connected to a specific "slot" (NOT player!). In this video I have three devices connected, two XBOX One S gamepads and one XBOX Elite gamepad. I need so save profiles for ech gamepad, since if loaded for another gamepad, the selected gamepad is changed to the one the profile was created with. At the end, none of the saved profiles is working for the disconnected and then reconnected gamepad.
Here are some timestamps, but I recommend to watch the whole thing.
1:21 - Notice the very odd behaviour at changing the name! While the name is selected, I first pressed arrow right, to get to the end of the name, but the cursor ends up on the left. Then I pressed backspace to delete the "1", which is then oddly replaced by a "0" and the cursor ends up to be in front if it.
1:42 - Disconnect of 1st XBOX One S Gamepad
2:24 - Disconnect of 2nd XBOX One S Gamepad
2:45 - Connect of 1st XBOX One S Gamepad
2:50 - 1st saved profile for XBOX One S Gamepad is not working
3:05 - 2nd saved profile for XBOX One S Gamepad is not working as well
While testing, I noticed another issue: you can not delete a profile, if you have not selected a gamepad. Here is a video as well:
https://github.com/user-attachments/assets/02333601-2d35-4830-8fda-a0b44c4ceac1
As for the slider thing: I need to re-check this, since I can not reproduce it which the PC I am at right now.
@TheEarthrise I made a new commit today, I made a change to the profile system. Now they are not tied to the gamepad. If this option is acceptable, I will leave it in the pull request
https://github.com/Ryubing/Ryujinx/pull/708#issuecomment-2676469138
In the first video I have already fixed most of the problems, please check the assembly that was done automatically in the pull request https://github.com/Ryubing/Ryujinx/pull/708
@Goodfeat I tried your changes and they kinda work, though I don't get the point of the "unlink" button. If I create a profile with e.g. my XBOX Elite gamepad, I indeed can apply the saved profile to an XBOX One S gamepad as well. If I have not connected the Elite gamepad while applying the profile to the One S gamepad, I get the "Waiting for controller connection..." message.
Both screenshots are made right after clicking the "load profile" button:
Elite gamepad still connected, selected input device is XBOX One S Gamepad:

Elite gamepad disconnected, selected input device is XBOX One S Gamepad:

In both cases, if I click "Apply", the settings are saved to the configuration file with the correct device ID. What is the purpose of the unlink button?
This setting allows you to save the state when the gamepad is not needed in the slot. You just need to save the state disabled. And this notification shows that the gamepad is paired and waiting for it to be connected.
There is a bug on the second screenshot, I have not fixed it yet. In theory, this message should only appear if you have disconnected the gamepad
That message seems kinda connected to the saved profile, since it only appears on the One S gamepad, if I load the profile created with the Elite gamepad, while the Eilte gamepad is not connected.
Inside each preset there is data about the gamepad, I either need to remove it from the preset, or I need to remove the data about the device identifier. Due to the fact that data about another device is read from the preset, but it is disabled, an unplanned message is obtained, which in fact does nothing
I see two possibilities:
Since the device IDs are written to the configuration file, I wonder why we also need them in the profiles? Maybe, at some point, the plan was to do something with the profiles, other than just load custom gamepad configurations. Unfortunately, the entire GUI has been neglected, so if there was such a plan, it was never finished.
Another idea would be not to write the gamepad configuration itself to the configuration file, but the last selected profiles per player, and then load the gamepad configuration from there. In this case, you would need the device ID in the profiles.
Anyway, being able to apply a profile to any gamepad, no matter which gamepad it was created with, is a big plus! Thank you so much!
That's exactly what they're for, so that presets can be applied with a gamepad. But then the whole point of presets is lost, since presets should be applied to any gamepad.
By the way, I found a way to ignore device IDs in presets, now it works as intended
But it would be better to remove the IDs from the preset files themselves
Yeah, as far as I'm concerned, I agree with that.
I made another commit that fixes the bug related to the device ID, you can update the emulator file by downloading it from the same link.
Regarding your third point about devices being disabled when switching, this is most likely not going to be fixed anytime soon. The problem is in the SDL.dll library and how it queries devices.