Viewing Issue Advanced Details
ID Category [?] Severity [?] Reproducibility Date Submitted Last Update
08624 Interface Minor Always May 2, 2023, 21:46 May 9, 2023, 12:18
Tester ICEknight View Status Public Platform MAME (Official Binary)
Assigned To Resolution No change required OS Windows 10/11 (64-bit)
Status [?] Closed Driver
Version 0.254 Fixed in Version Build 64-bit
Fixed in Git Commit Github Pull Request #
Summary 08624: UI: "Invalid combination entered" when more than 8 inputs assigned to the same key/button
Description Trying to assign more than 8 inputs to a key/button gives an "Invalid combination entered" error.
Steps To Reproduce -Load any core, for example spectrum.
-Go to Tab menu
-Go to Input Assignments (this system)
-Press right to append inputs on any of the entries, then enter, then the additional input, wait for it to register.
-Press enter, then another additional input.
-Repeat until you get an "Invalid combination entered" message.
Additional Information Some computers require key combinations such as "Shift + letter/number" for different actions, this limitation makes it not possible to assign more than 8 of these functions to unused keys in the PC keyboard.
Github Commit
Flags
Regression Version
Affected Sets / Systems UI
Attached Files
png file icon invalid_combination.png (548,863 bytes) May 2, 2023, 21:46 Uploaded by ICEknight
ICEknight
Relationships
There are no relationship linked to this issue.
Notes
7
User avatar
No.21392
Robbbert
Senior Tester
May 3, 2023, 02:02
Devs can decide if this is an issue.
User avatar
No.21408
cuavas
Administrator
May 9, 2023, 03:23
edited on: May 9, 2023, 03:24
There's a limit of 16 codes per combination, and the "or" operators count towards that. If you keep appending individual keys like that, you end up with a combination that ends with an "or" code before hitting the limit. An "or" code with nothing following it is invalid.

Do you actually have a practical use for this, or are you just trying to increase your reported bug count? The limit of sixteen codes doesn't seem to be an issue in practice, we get no complaints about it.
User avatar
No.21416
ICEknight
Tester
May 9, 2023, 10:06
Looks like you're receiving a complaint about it just now.

Thing is, is there a practical use for such an arbitrary limitation? I can't map all the button combinations I want because somebody decided "16 should be enough".
User avatar
No.21417
ICEknight
Tester
May 9, 2023, 10:07
edited on: May 9, 2023, 10:20
> Do you actually have a practical use for this
At least read the whole report before closing it this time.
In the pictured case of the ZX Spectrum, having to press Shift and another key for certain functions makes it impossible to have a functional delete key and cursors and then have other similar shortcuts mapped at the same time.

> or are you just trying to increase your reported bug count
*facepalms in Spanish*
User avatar
No.21418
cuavas
Administrator
May 9, 2023, 11:16
The original machine didn't have dedicated keys for all those things - you actually did have to press shift. That isn't a convincing argument.
User avatar
No.21419
cuavas
Administrator
May 9, 2023, 11:27
> Thing is, is there a practical use for such an arbitrary limitation?

There are many good reasons to have fixed size structures:
* Locality of data (fewer levels of indirection, fewer cache misses, fewer dynamic allocations, fewer fields for housekeeping data)
* Puts a natural upper limit on the length of an assignment description - if they could grow indefinitely, it would be unwieldy
* Puts a natural upper limit on the execution time cost of reading inputs
* Less points to check for runtime errors and less opportunity for getting into an inconsistent state (no allocation, deallocation and resizing where things can fail or become inconsistent)

It's getting annoying that it seems that every time I check MT, there's at least one "working as designed" report.
User avatar
No.21422
cuavas
Administrator
May 9, 2023, 12:18
edited on: May 9, 2023, 13:31
If you want to make fake inputs, use the input macro plugin (or write your own script/plugin). You'll get more flexibility that way, too.