Input Overlay

Input Overlay v5.0.4

AlkHacNar

New Member
hey, I created a new preset for my NES USB controller, but the cct tool and don't recognise the inputs. In OBS, in the settings of Input Overlay, it gets recognised as "0 Retrolink SNES Controller - Game Controller". Maybe it's a false recognishen of the controller? Could you help? I can provide as much info as you want. If it runs, you can even put it in you preset zip if you want^^
nevermind, I forgot to whitelist my app and my bindings were wrong :D now it works like a charm. I packed it is someone needs a NES controller
 

Attachments

  • NES.7z
    46.1 KB · Views: 46

AlkHacNar

New Member
nevermind, I forgot to whitelist my app and my bindings were wrong :D now it works like a charm. I packed it is someone needs a NES controller
here the updates version, the firstone had a smal grafic bug, which I edited
 

Attachments

  • NES.7z
    46.2 KB · Views: 72

kittyblaze

New Member
If i wanted to change the input color from yellow to green how would i do that? (sorry if this is already answered somewhere i couldn't find it XD)
 

Aphelion-

New Member
Anyone has tutorial creating joystick preset? I want to make one as the current preset has too small trigger button on screen and hard to see its press as I play racing games
 

kingraph

New Member
FYI, something changed where I can't get the program to recognize all the buttons on my sega controller now. For some reason my x,y,z registers as the same a,b,c. Both in the cct program and obs. However, I confirmed on my Windows game controller settings that all the buttons were indeed different.
 

kingraph

New Member
@universallp , this plugin is AWESOME, thank you so much for your work.

I'm having one issue that I am hoping you can help me with. I am making an overlay for a Sega Genesis/Mega Drive controller (I will also make one for Super Nintendo) as I will be streaming retro games. I have successfully made the overlay and got all the buttons to work. However, the dpad registers as an analog stick. So while I have that working, I would love to have the dpad light up (like buttons) OR work like the joystick. I don't know how to change or "trick" the app to do this. As you can see the analog function isn't the best option:
View attachment 85927
This was what I had done before
 

BeardedOddity

New Member
Random Question Is anyone Currently working on a Steam deck button input layout. I'm interested in using deck inputs for my personal use I'm willing to try creating the layout myself but wanted to know if anyone is thinking ahead of me :)
 

Tonic

New Member
I use a dvorak keyboard layout, so I tried to make my own overlay since I couldn't find another one. I ran into some issues while making it. I selected the template and then inputted which key corresponds to each key, and it works in the editor, but not in overlay. In the editor, the button where "q" is on qwerty activates the q button on the overlay. But, in obs it doesn't activate. It only activates the keyboard element when the corresponding key is pressed. So, I would have to press the "q" key to activate the q element. I have a video of this happening if I haven't explained well.

Video:
https://www.youtube.com/watch?v=HsufMXNmpSs

This is the DVORAK layout
View attachment 98104
update: I got it. The keycoder was reading for qwerty, so I just coded in my keys for where they would be on qwerty.
 

univrsal

Member
When I launch obs the overlay displays my inputs for a couple seconds before it freezes and is stuck displaying whatever I inputs were going on at that moment and I'm not sure what to do,I've tried different versions of the plugin and different versions of obs,I tried changing the settings,I tried changing my controler's input mode,not sure what else to do. I'm using an 8bitdo pro 2 controller.
The first issue is related to the keycoding. While creating the config.json, I was configuring the overlay using the gamepad button element and when I got to B7, it turns out it uses the same keycode (0x0) as B1, somehow, someway. However, when I actually play the game, the game recognizes it as a different input. So does Windows 10 within the "Set up USB game controllers" settings.
  1. What options do I have to fix this?
The second issue is I have no clue how I am going program the turntable because using the gamepad button element, it doesn't generate a keycode when I spin it.
  1. Is there a way to see keycodes being generated by button presses within Windows somehow?
  2. Are there any other options to solve this issue?
I don't know anything about how those turntables work, but you can try downloading the gamepad tester (sdl2.gampead.test.zip) from this issue and then press the buttons and look at what the console outputs. If the console shows the different buttons as 0x0 the problem is related to the SDL2 library, which is what the plugin uses to handle gamepad input. SDL is very robust and should be able to handle almost all devices, so it might be a configuration that I have to change for it to work, but I have no clue where I'd do that.

Also the tool in the video you mentioned is located here at the bottom:
It works inside the browser. You could technically even add it as a browser source.

The third issue is I would like some sort of motion input display for the turntable and I'm not really sure how to achieve that using this plugin, if at all achievable.
  1. Any recommendations?
It's not possible without adding a new element to the source code.
Problem #4 is OBS doesn't see my "gamepad id" so not sure where I can get that information from or what I should do with that. Any information is helpful.

Best
Rob
Also probably an issue with SDL2, unless the gamepad tester sees the device.
If i wanted to change the input color from yellow to green how would i do that? (sorry if this is already answered somewhere i couldn't find it XD)
Edit the overlay texture with something like GIMP/Paint.net/Photopea.com and shift the color.
Anyone has tutorial creating joystick preset? I want to make one as the current preset has too small trigger button on screen and hard to see its press as I play racing games
https://www.youtube.com/watch?v=BdJ8OM353qM covers every element type
FYI, something changed where I can't get the program to recognize all the buttons on my sega controller now. For some reason my x,y,z registers as the same a,b,c. Both in the cct program and obs. However, I confirmed on my Windows game controller settings that all the buttons were indeed different.
Try and see if the gamepad tester (sdl2.gampead.test.zip) recognizes them, if not then it might be an issue with SDL2 (Same issue as my second answer further up).
 
Last edited:

ryu_highabusa

New Member
Another weird question: Is it possible to use the gamepad or arcade stick layouts with a keyboard? Like, I have my custom layout already made and working but my controllers are packed up somewhere. Is it possible to asjust the json file in such a manner? Can I just change the "dpad" to a "wasd" or something?
 

ryu_highabusa

New Member
Another weird question: Is it possible to use the gamepad or arcade stick layouts with a keyboard? Like, I have my custom layout already made and working but my controllers are packed up somewhere. Is it possible to adjust the json file in such a manner? Can I simply change the "dpad" to a "wasd" or something? I think I can change the buttons to the appropriate keyboard 0xVALUE but what about the d-pad?
My interim workaround.
hHS0WbU.png
 
Last edited:

Nightwolf23

New Member
Hi, love the work here! I have a somewhat unique use case I'm trying to make work, that comes with questions/issues in two parts. Basically I would like to use the input-history as a basis to display pop-up text descriptions of the inputs I'm doing on my flight sim joystick and throttle controllers. First, do you filter the available controllers or is there a limitation on what SDL can interface with? Neither the joystick or throttle show up in the Input Overlay source, only my XBox controller. Second, I've been digging through the code on github and messing with the sample HTML that displays keyboard history. Do you currently even send SDL events over the websocket? console.log()ing every websocket message (in the on_data() function) doesn't show anything pressing buttons on my xbox controller or joysticks, but does log every keyboard and mouse action. I see a function in the websocket server code to dispatch SDL events but it doesn't seem to be sending them. I know that the sample HTML provided is only designed for keyboard inputs but I'm happy to adapt it myself as long as it can receive button presses from my controllers.

Thanks!

Edit: Just saw that there's a TODO in the gamepad hook helper about also registering joysticks and not just game controllers. That would be a welcome addition!
 
Last edited:

univrsal

Member
Hi, love the work here! I have a somewhat unique use case I'm trying to make work, that comes with questions/issues in two parts. Basically I would like to use the input-history as a basis to display pop-up text descriptions of the inputs I'm doing on my flight sim joystick and throttle controllers. First, do you filter the available controllers or is there a limitation on what SDL can interface with? Neither the joystick or throttle show up in the Input Overlay source, only my XBox controller. Second, I've been digging through the code on github and messing with the sample HTML that displays keyboard history. Do you currently even send SDL events over the websocket? console.log()ing every websocket message (in the on_data() function) doesn't show anything pressing buttons on my xbox controller or joysticks, but does log every keyboard and mouse action. I see a function in the websocket server code to dispatch SDL events but it doesn't seem to be sending them. I know that the sample HTML provided is only designed for keyboard inputs but I'm happy to adapt it myself as long as it can receive button presses from my controllers.

Thanks!

Edit: Just saw that there's a TODO in the gamepad hook helper about also registering joysticks and not just game controllers. That would be a welcome addition!
The browser source has access to gamepads (and probably joysticks) so you don't really need input overlay unless you have a two pc streaming setup. See https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API/Using_the_Gamepad_API


This is an example page that renders input overlay gamepad presets and uses the gamepad API to retrieve inputs.
 

Nightwolf23

New Member
The browser source has access to gamepads (and probably joysticks) so you don't really need input overlay unless you have a two pc streaming setup. See https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API/Using_the_Gamepad_API


This is an example page that renders input overlay gamepad presets and uses the gamepad API to retrieve inputs.
Ok I wasn't sure if that would work with the OBS browser host, I'll try that then, thanks.
 

Nightwolf23

New Member
The browser source has access to gamepads (and probably joysticks) so you don't really need input overlay unless you have a two pc streaming setup. See https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API/Using_the_Gamepad_API

So from the testing I've been able to do the Gamepad API is quite limited and not standardized. It seems like both in chrome and in the OBS browser source, it's limited to 4 controllers in a seemingly indeterminate order as well as limited in the number of buttons it can expose (32 buttons and 8 axes it seems like. I'm also having issues getting the browser source to believe it's in a secure context which is required to do anything other than listen for connection and disconnection events. I'm not sure if these limitations are present in SDL2 either but it means that one of my controllers isn't showing up and the one that does only has a portion of its buttons recognized.
 

Valla

New Member
Hello!
First thanks a bunch for this plugin!
Ive got a dual PC setup so Id like to send though the inputs so I dont have to send a whole NDI for the overlay.
Ive had some trouble getting the websocket server running

When I try to start the server I receive:
error: Failed to connect to server
info: network stopped
What could be the cause here?
Ive tried on 5.0.4 and 5.0.2 to see if it was a version issue.

Server is enabled in input overlay and logging enabled but I cant see anything logged either.

Im new to websocket servers so do I need the websocket plugin enabled also? Or is that separate?
I have tried with both.

Not sure what Im missing here.

Thanks for the help!
Hayden
 

univrsal

Member
Could be multiple things. Are you using the right IP address? Is the websocket server actually started (The obs websocket is something different and not needed for the plugin)? Did you follow the instructions in the video on the resource page? I also need a full obs studio log.
 

Valla

New Member
Could be multiple things. Are you using the right IP address? Is the websocket server actually started (The obs websocket is something different and not needed for the plugin)? Did you follow the instructions in the video on the resource page? I also need a full obs studio log.
Im connecting from my gaming rigs 192.168.1.39 to my steaming PCs 192.168.1.38 so that should be fine. cmd Pinging each-other works fine.
I disabled firewalls to confirm that its not a port issue.
Trying to start using: io_client -a ws://192.168.1.38 -k -m -n gaming_pc
WAIT
I DID IT!
dwadawdaddawda
Yoooo thats sick!

As I didnt see the port in your example I thought it might default to your 16899 but I figured wrong!
Brilliant, love it!
Really appreciate the help and all the work you've put in!
Hope you enjoy the day :)
 

layarion

Member
I created a version of the mouse and qwerty keyboard that displays nothing when no buttons are pressed. so unused buttons are not taking up screenspace.

the green screen masking feature of OBS wasn't working that great for me so i made these.
 

Attachments

  • mouse invisible.png
    mouse invisible.png
    29.4 KB · Views: 49
  • qwerty invisible.png
    qwerty invisible.png
    61.7 KB · Views: 51

Valla

New Member
I created a version of the mouse and qwerty keyboard that displays nothing when no buttons are pressed. so unused buttons are not taking up screenspace.

the green screen masking feature of OBS wasn't working that great for me so i made these.
Thats kinda sick I might give it a go, Thanks for the idea, and for sharing!
I think itd need a new feature to have the whole keyboard dissipate after a set time not used but that would be nice
But there may there be a way to have it dissipate with Obs detecting no inputs or overlay changes. I'll look into it.
 
Top