Announcement

Collapse
No announcement yet.

Ability to change the controller order

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Ability to change the controller order

    I haven't found anything regarding this, so I assume it's not implemented.

    Having the ability to set the controller slot for each virtual controllers would be helpful, as Windows will otherwise decide it in the order by which the controllers are connected. It's especially difficult with wireless controllers. So I could for example plug two controllers in whichever order, then decide the order in reWASD.

    If it happens to already exist, please let me know.

  • #2
    Hello,

    Thank you for your suggestion. Windows OS does not have the concept of gamepad order, each game or API can enumerate gamepads differently no matter what order controllers are connected in.

    Your idea is to set a certain controller, like as the default, so games or apps could see this controller only ignoring the rest ones. Do I get it right?
    Don't worry! Be Happy!

    Comment


    • #3
      Windows sets the order as the controllers are connected. For example, the Xinput protocol supports 4 controllers, each has it's own slot: Xinput 0 (X0), Xinput 1 (X1), Xinput 2 (X2) and Xinput 3 (X3). Depending of the game, those values might often represent Player 1, 2, 3, 4.

      The problem is that the controllers often aren't in the desired order, ex: X1 will be P1 and X0 will be P2, etc. Because of the nature of Windows, it doesn't necessarily know if a controller should be X0, 1, 2 or 3. Outside of most emulators, I haven't seen a game that allows changing the Player for each controllers.

      It's not too bad with USB since the controllers can usually be kept plugged in, however Bluetooth is where it gets annoying. Unless the controllers are paired in the order desired one after the other and are kept turned on, chances are the order might get screwed up. I sometimes turn on my controllers one after the other to make sure they're in the right order, yet the second controller ends up being P1 and the first controller is P2. Having to turn off all the controllers and turning them on in the right order is often painful. Sometimes Windows will change the slot of a controller that got disconnected then reconnected, ex: X0 became X2 somehow.

      It'd be great if reWASD could allow setting the controller slot for each virtual controllers, ex: physical X2 could be set as virtual X0, etc. Thus the order by which the controllers were connected wouldn't matter anymore, it would just work, hopefully.


      I hope this isn't too confusing.

      Comment


      • #4
        Hello!

        We will think what is possible to do here, thank you!

        The main problem here is that the game itself may work with controllers directly, and doesn't rely on the order Windows has.
        Also, Xinput is only about Xbox controllers, but it won't work for any other ones.

        Frankly speaking, at the moment, we are not sure if there is anything we could do.

        Comment


        • #5
          I believe X360ce allows the ability to reassign the order, however the software has been pretty unstable in my experience, so I never could properly use it.



          Well cheers to you guys, reWASD is the peak of awesomeness of controller software.
          And Happy New Year.

          Comment


          • #6
            Will check it too

            Happy New Year! :satisfied:

            Comment


            • #7
              I'll add that Steam Input allows the user to change controller slots/order, on the fly even. It's a godsend for co-op games where each player has their own preferred hardware and configs but they need to switch characters briefly, maybe for the better player to help the other past a difficult section. Between Steam Input and x360ce it certainly seems like it's should be possible for reWASD to do something similar.

              Comment


              • #8
                X360ce patches XInput DLLs in the game folder and provides hooks for each game which may cause compatibility problems and explains why it may be unstable. Also many games may access controllers directly and not use XInput at all (or use also alternative access methods) and may build order of controllers using own criteria depending on the game engine.

                Afterall, it will not work with Windows Store games at all.

                This is the main reason why we create virtual controllers and not trying to interfere with the game process and modify it in any way.
                Each game builds the list of controllers in its own way and this cannot be changed generally — you have to accept it unless you also want to live with dirty hacks or game patches. This is not what we are currently planning to do.

                With Steam, it is a different story too. Steam has direct access to XInput and many games are developed for Steam Input directly. Steam can even affect buttons' prompts dynamically based on the controller type, not only order of controllers. This cannot be done in reWASD because we are not Steam and games are not being developed with reWASD in mind. This is the whole point of Steam Input and reWASD can never match it in this aspect, at least now.

                Comment


                • #9
                  The latest version of X360ce is able to provide hooks system-wide, without the need to patch games individually. It allows hooking from slot 1 to 4. But it isn't stable execution-wise.

                  My solution: For games that don't support Xinput but only Dinput, I use Xinput plus on them (it worked on every older games I have). Thus all the games I play with a controller work with Xinput.

                  I don't want to seem like I don't care, but Windows Store applications leave alot to be desired compared to native applications.

                  As for Steam, it can hook up Xinput on any non-steam games, no need for Steam input implementation in-game. Thus the option for rearranging controllers is available and works like a charm, even on a non-steam game. Of course dynamic button prompts are not going to be available, but it's to be expected. Games don't have to support reWASD since all they care about is if there's an Xinput device present*. Like you said, it does not interfere with the game process, it all goes to the virtual controllers, which is driver based, I suppose. Then all that's left is that the games can see a "Xinput compatible controller" and they'll be happy* (*: assuming Xinput hooking on Dinput-only games is applied).

                  I'm not developing reWASD, I don't have insights on how it exactly works at it's core, but seeing what it can currently do, I doubt such feature would be impossible, tricky perhaps, but not impossible.

                  Comment


                  • #10
                    Originally Posted by reWASDer View Post
                    Steam can even affect buttons' prompts dynamically based on the controller type, not only order of controllers. This cannot be done in reWASD because we are not Steam and games are not being developed with reWASD in mind. This is the whole point of Steam Input and reWASD can never match it in this aspect, at least now.
                    Just to clear this up, I was referring to Steam Input -- the controller profiling software -- and not the Steam Input API (SIAPI) -- the interface that allows developers to let Steam Input communicate directly to their game. The dynamic button prompts is a feature of the API. Controller order is a feature of the basic Steam Input. Steam Input has an option to change XInput controller order on the fly. This only works when a controller is bound to XInput bindings and does not work with SIAPI integrated titles. It was a featured added late in Steam Input's life for the exact issue that OP runs into -- the virtual controllers created don't line up with the users' intended ordering of the physical controllers (i.e. the person intending to be player 1 is in slot 2).

                    Now I have no idea how Valve created this feature nor do I know if reWASD has the correct foundation set up to accommodate such a feature. I'm simply correcting some misinformation about Valve's software and features.
                    Last edited by CriticalComposer; 03.01.2021, 04:41.

                    Comment


                    • #11
                      System wide hooking still interferes with the game process. It is the same as antivirus injecting own code into other processes. So it must be done carefully as it can be easily detected by antimalware or anticheat programs. We are not saying it is impossible, but it may cause more problems then it will solve. That is why such feature is not currently planned, maybe some time in the future. We'll keep an eye on it.

                      If Steam has this one, it will be even more mess if both reWASD and Steam will be re-ordering the controller. Sounds like Pandora's Box for us at the moment.

                      Still, we will consider adding this feature and will do some research to be sure.

                      Comment

                      Working...
                      X