AntiMicroX / antimicrox

Graphical program used to map keyboard buttons and mouse controls to a gamepad. Useful for playing games with no gamepad support.
GNU General Public License v3.0
2.26k stars 138 forks source link

Create easy to edit mapping format for AntiMicroX #832

Open SteveMurgaski opened 10 months ago

SteveMurgaski commented 10 months ago

Is there an existing issue for this?

Is your feature request related to a problem? Please describe.

As a blind computer user, I need to use screen reader software to read the content of the screen aloud for me. The program I use is JAWS for Windows, but I believe that any of the screen reader programs for Windows would have similar issues when trying to access AntiMicroX. The Windows screen reader programs all use keyboard commands to operate because mouses don't work well for those of us who can't see where the mouse pointer is. AntiMicroX seems like it could help me a lot. If I could assign keyboard commands I use regularly to buttons on a gaming controller, I could make much more intuitive interfaces for all sorts of software. But, I need to type keyboard commands to do everything, so I can't use that method to select what key to associate with a button on a controller in the AntiMicroX interface. I need a way of using AntiMicroX that doesn't require using a mouse at all. What I was thinking was, if there were a way to import and export controller key associations in a spreadsheet format, I could edit them without having to use the AntiMicroX interface. I'm attaching a simple example of the sort of spreadsheet I'm thinking of, just in case that helps clarify the idea. I realise the spreadsheet would need to be more complicated than this example in order to capture all the options for things like joystick controls, but I'm hoping you can see how to make something roughly similar which humans could edit manually. Then the profiles could be imported without using a mouse, either by tabbing to a control within the program or by using a command line option when running it. If anyone has other ideas about how to accomplish setting controller associations without using a mouse I'd love to hear them. Sample controller key associations spreadsheet.xlsx

Describe the solution you'd like

An option to import and export controller profiles as human-readable spreadsheet files, in a format such as .csv. The import and export functions would need to be accessible through the AntiMicroX menu system, which can be navigated with a keyboard. (Pressing the alt key in AntiMicroX moves focus to the menus, which can then be navigated with arrow keys and tab keys.) There could also be an option to import and export .csv profiles without using the AntiMicroX interface at all, with command line options.

Describe alternatives you've considered

I've tried using programs other than AntiMicroX to create and edit game controller associations using my screen reader. None of them were accessible with it. (Steam, and REWASD.) I've looked at the .amgp profile files now supported by AntiMicroX using a text editor. In theory it might be possible for me to edit those, but the xml format isn't easy to work with. Something like a spreadsheet format would work much better for me.

Additional context

No response


Upvote & Fund

Fund with Polar

pktiuk commented 10 months ago

Hello, Spreadsheets is a very bad idea, there are multiple formats, and require special programs for editing them.
I think just a plaintext would be much better, because you can edit it with a notepad.
Even if I would create a new, simple format it would requite entirely new syntax and reimplementing parsing this, which would take a lot of time and could be source of new bugs and problems for other users..

Currently AntiMicroX uses text-format and you can edit it using any editor like notepad. Format is a bit convoluted at first glance, but in general it cannot be much simpler.

This is how it looks now:

    <sets>
        <set index="1">
            <trigger index="5">
                <deadZone>2000</deadZone>
                <throttle>positivehalf</throttle>
                <triggerbutton index="2">
                    <toggle>true</toggle>
                    <slots>
                        <slot>
                            <code>0x31</code>
                            <mode>keyboard</mode>
                        </slot>
                    </slots>
                </triggerbutton>
            </trigger>
            <trigger index="6">
                <throttle>positivehalf</throttle>
            </trigger>
            <button index="1">
                <slots>
                    <slot>
                        <code>0x20</code>
                        <mode>keyboard</mode>
                    </slot>
                </slots>
            </button>
            <button index="3">
                <slots>
                    <slot>
                        <code>0x58</code>
                        <mode>keyboard</mode>
                    </slot>
                </slots>
            </button>
            <button index="4">
                <slots>
                    <slot>
                        <code>0x59</code>
                        <mode>keyboard</mode>
                    </slot>
                </slots>
            </button>
        </set>
    </sets>
SteveMurgaski commented 10 months ago

Hello, thanks for getting back to me so quickly. The beauty of AntiMicroX's graphical user interface, as I see it, is that it enables most users to quickly and easily remap their controller keys however they like. My hope is that the same functionality could be available to those of us unable to use the graphical UI. (Such is the dream of accessibility which some of us must chase.) Although I might in time learn to edit xml like the example you gave, it isn't a solution that I could recommend to friends. If the spreadsheet format would be too limited, what about html forms? That could display the xml tags in more human-readable language, and provide users with lots of different ways to select what actions to associate with their controls. HTML can display tables similar to a spreadsheet. HTML does take some work to ensure its accessibility with screen readers, but it generally works well. It's definitely more universal and configurable than .csv files.

pktiuk commented 10 months ago

This html to xml editor could be a simple independent app. It could be even implemented as a simple website used for generating it in web browser without downloading any app.

SteveMurgaski commented 10 months ago

Yes, either way should work well. It could be launched using a button in the AntiMicroX program so it lets users edit their locally saved controller profiles without having to upload them, and automatically save the edited profiles in the path where AntiMicroX can find them.

pktiuk commented 10 months ago

To be clear. I am not going to implement this feature anytime soon, but I will leave this issue open, because another developer may find this idea worth investigating and implementing. (I would also see how demanded is it by other users)