Display your controller inputs in a highly customizable display, PS4, Xbox and Switch buttons available, works with most controllers. To remove the background for your stream use the Chroma Key options in your streaming software and crop any unnecessary edges.

Press ? in control menu to see controls (right click to show menu when hidden) or read that information below:

- Close menu with cross
- Reopen with right click + m
- Select which object to recolor (then recolor with color picker above). NOTE buttons are always written as if they are playstation buttons
- Select the appearance of your input display
- Decide whether your displayed buttons have an unpressed display, FALSE means they will be invisible until pressed
STREAM I/R (input/release)
- Your inputs are displayed one after another as text, this appears by default in the bottom left of the screen. Changing this setting will change how these are output (press and release, press only or hidden). NOTE the stream can be manipulated when edit mode is enabled if S is held on the keyboard
- Decide whether your Input Stream will align left, center or right of its window
- Enable to use a custom font
- To set your custom font, open the save file location and go up one folder
- Paste your font here and name it 'font'
- Enable to make the background of the window transparent
- Ensure the background color A (Alpha) is set to 0
- Enable to hide the window bar and edges
- Enable to force the window to never drop behind other windows
- Left and Right checkboxes when ticked will stop the stick from hiding when no inputs are detected, aka the active state will always be visible
- L and R Deadzone are the deadzones for your left and right analogue sticks, settings this higher means your stick will only activate when it is pushed further
- L and R Multiplier adjusts the distance the stick will move when it is pushed in a direction, setting this higher means your stick will move further when pushed
- The speed at which animated buttons will play (this will only apply to your custom buttons as all others are not animated)
- Changing the text in the boxes below will change the text of its corresponding button press in the stream (for example, putting JUMP in the box labeled CROSS will output 'JUMP pressed' if other Stream settings are default) NOTE buttons are always written as if they are playstations buttons by default
- Disable a button output by having "-" alone in its custom name box
- Press a button below followed by a physical input (keyboard only) to change the trigger for the pressed button to that new input
- Your Input Stream will recognise this change
- Press Default to reset all rebound buttons to their original state
- Mouse over a button to see its current bind
- Using the name entered in the text field, save the current layout of your buttons, stream, button names etc. this is loaded using 'Load layout' NOTE this feature is disabled in the HTML version
- Load the layout selected from the drop down NOTE this feature is disabled in the HTML version
- Manipulate the objects on screen when true
- While true
- - Hold a controller button (Move the corresponding object to the mouse position)
- - Hold a controller button + left mouse button (Rotate the corresponding object)
- - Hold a controller button + right mouse button (Scale the corresponding object)
- - Manipulate stream  while S is held on keyboard
- - Move control menu while M is held on keyboard NOTE cannot be manipulated except for position
- While 'Edit layout' is true, objects will be adjusted by steps of the number set (for instance, if set to 20, objects will be moved 20 pixels)
- To delete your layouts, open this and delete the desired file
- Open the save file location and go up one folder, then open the custom folder
- Place PNG images within the last folder of each and they will be imported to be used as buttons in Input Display
- If you place more than 1 PNG in a folder, they will be loaded into the same button and be animated in alphabetical order
- You can adjust the speed of your animated buttons by changing the Anim Speed option
- An 'Example Custom Folder' is available on the Input Display Itch.io page :)
- Open the save file location and go up one folder
- Place the font you want the input stream to use here and rename it Font
- The font will be loaded when the application is started

Some features (Saving and Loading and Custom buttons) are available only in the downloadable version.

Custom Costume:

FAQ (In no particular order):

Why arn't my inputs received when the window is minimized?
Don't minimize the window, this is a limitation of Godot (the game engine this is made with).

My controller isn't working, or sometimes is not detected
Not all controllers will work

Can you support my controller?
No, i am unable to support every controller.

Can you add X feature?
I am no longer adding new features.

Why are my stick inputs not being received?
You may have scrolled on the L or R Deadzone or Multiplier scroll bars, their default values are 0.1, 0.1, 1, 1 in order.

Is this a virus?

Can i get controller icons output on the Input Stream?
Yes, change the font to this and search for symbols to copy paste

How do i change X?
Read the instructions above or in app.

Remember to Rate (Top right of Itch.io page)

Check out more of my stuff: Moonspod

Updated 16 days ago
PlatformsWindows, Linux, HTML5
Release date Jun 18, 2020
Rated 4.9 out of 5 stars
(13 total ratings)
Made withGodot
TagsButtons, Controller, display, gamepad, input, ps4, stream, twitch, viewer, xbox
Average sessionA few seconds
InputsKeyboard, Xbox controller, Playstation controller, Joy-Con, Gamepad (any)
AccessibilityConfigurable controls


Download NowName your own price

Click download now to get access to the following files:

InputDisplayWIN1.0.5.zip 15 MB
InputDisplayLINUX1.0.5.zip 15 MB
InputDisplayWIN1.0.4.zip 15 MB
InputDisplayLINUX1.0.4.zip 15 MB
InputDisplayLINUX1.0.3.zip 15 MB
InputDisplayWIN1.0.2.zip 15 MB
InputDisplayLINUX1.0.2.zip 15 MB
InputDisplayWIN1.0.1.zip 14 MB
InputDisplayLINUX1.0.1.zip 15 MB
InputDisplayWIN1.0.0.zip 14 MB
InputDisplayLINUX1.0.0.zip 15 MB
Example Custom Folder 470 kB

Development log

View all posts


Log in with itch.io to leave a comment.


Even at half speed for the tutorial i couldn't decern what what was happening, potentially great product with a clear tech mind behind it but i was out after half an hour and i could not get my left stick to move down for my fightstick lay out,  i might be wrong and even stupid but i could not get the left stick into position as wanted.

This is great and all, until the window isn't the active window and it no longer works, which kind of defeats the purpose. Not sure if this is a global problem or just a problem with my PS5 controller?

dont minimize the window and it should detect it.

Oh I'm not minimizing the window,  just the second Input Display is not the active window it won't work, so switching to a game with ID up on my alt moniter (or in obs), it won't track my inputs.

sorry, then im afraid you would be best using one of the other input detection apps, i've checked with my controller and it seems fine, some controllers it has trouble with. Here are some other options:

Gamepad viewer
Input Overlay

Hi, discovered this tool recently and shocked at how simple/effective it is! My only gripe: moving the mouse to set positions is terrible for precision - I'd love to open a little text box and type in co-ordinates instead. Hope to see this worked into the next build :)

I'm using the Linux build and it super low resolution, to the point that some of the skins are HUGE buttons that overlap. It's almost like it thinks my screen is only 480p when its actually 1080p

(2 edits)

you can resize buttons in edit mode, some of them do overlap because they are larger images when you switch to their costumes

despite updating to 1.0.5 I still don't get stick animations and I'm not sure if its because of ds4 windows (tested with and without) or if its something wrong with my drivers (I hope not) got any ideas

did the deadzone settings get changed, it can happen if you scroll on the slider

its not the dead zones I checked those every time I scroll past because it keeps lowering and I have to use ds4 (duel shock 4) because I need custom deads

I uploaded a version just now (still 1.0.5 on download list), if it doesn't detect it I'm afraid I've no solution.

does the size of the canvas matter when making custom lay outs

and can you make multiple?

the size of your images is how big they are when imported, you can always scale them in edit mode to be a workable size in the app. Currently only one custom layout, you can swap the folder in and out and reload but I may add a custom layouts later 

Super cool tool! I'm struggling to use it with Steam though. I have a Switch Pro Controller I use wirelessly and the input display works up until I click into a game or Big Picture Mode, basically whenever steam steals the input. Any way around this? I have tried using it wired, but I get the sporadic inputs that have been reported before with a wired pro controller

Odd, i had a test with my controller and see it receiving fine in big picture mode, maybe its specifically switch pro controllers. Do you keep your Input Display open on a second monitor unminimized?

Yup I keep it open on another monitor and it works up until I click into game. I've had issues with the switch pro controller working with emulators where I've had to open them through steam to get the controller to work. Not sure if something in Steam steals the input somehow

Sorry I'm not really sure how to fix this.

is their ways to just remove buttons entirely for controllers with less buttons like a snes controller

Edit mode > Select the button on Color Target > Change color so its transparent (The A slider)

or just move it off screen

Hey amazing app, was wondering if there was a way to just keep it pinned on top of other programs?

Added :) find it in 1.0.5 onward (set 'Always top' to true). Your old saves might not work with the new version.

Wow that was fast, thank you. What about a way to adjust the button size as well?

You can do that in edit mode, click the '?' Top left of the control panel for instructions

Super useful and amazing tool! And seeing you active on the comments recently, i might ask for something: Could you please support DirectInput? Logitech F310 has 2 different modes and only the XInput mode that works.

Id be able to see if i could figure something out if i had the controller, sadly i only have access to 3 Xinput controllers that are fairly similar, im sure Godot supports DirectInput judging by stuff i see online, i uploaded a version of input display that will spew out every input the game engine receives, can you see if it detects your button presses on that controller with DirectInput on and let me know what it outputs in input display? https://moonspod.itch.io/input-display-debug-output (password is debug)

Sorry it took me so long to read your reply, i tested it, here's my video testing it

DirectInput Test

I made a change just now, it is in 1.0.5, if my suspicions right then it may fix it, if not I'm afraid I've no solution. Hopefully it just works though!

So for the current 1.0.5 change, when i open the app with xinput mode, it detects. When i change it to DirectInput mode without closing the app, it will detects the DirectInput input. But when i close the app, and re-open it while in DirectInput mode, it won't read any input (no hightlight on the controller UI nor any text appear), and in this state, even when i change to xinput mode, it doesn't read anything. I need to close it, then re open it in xinput mode in order for it to work.
This also happen when i unplug & re-plug the controller. If the software were being launched during the xinput mode, it'll always read the input. The input won't be read if i launch the software during directinput mode, even if i unplug & re-plug the controller with xinput mode.
And these behavior above is the same in 1.0.4 (i checked it)
I know this won't be a priority for you, you don't have the device on your own to test it, and you might have other stuff to do in life. Don't worry, i won't push you, you did amazing by just providing this tool to everyone who needs it. You're an amazing developer✨

Alright so I wanna use this for a very silly thing, but there's a few issues in the way. 

See the thing is I'm using a Hyperkin Bluetooth N64 controller, which doesn't have clickable sticks, but I've set steam up to map L3 and R3 to different buttons on it. The issue with the program here is that you cannot set L3 and R3 to be separate inputs from the sticks (honestly I dont even know if L3/R3 is even show by the program).

The other issue is that for whatever reason, trying to rebind buttons makes them get stuck to multiple inputs. This happened with another input display tool, where D-Up and C-Up would highlight each other. D-Left and Z as well.

Now, I know repro N64 controls are maybe a little outside of the scope of the project, but being able to remap L3/R3 and figure out whatever is causing different buttons to be counted as the same would be nice.

(FWIW I've tried several input readers now and it's inconsistent whether a program has these issues or not. Some combine inputs, some don't read certain buttons at all. Only Steam and emulators so far have been able to treat the inputs completely correctly)

Im not sure i understand, are you able to record a video or show screenshots showing the problem? I don't think ill be able to do much about it unfortunately but can always take a look. 

PART2: L3 and R3 are bound to the Left Stick and Right Stick Rebind Inputs buttons, (bottom right of that section) you can rebind them so they aren't triggered to some obscure keyboard button like F12, this rebinds the press in, however the sticks themselves cannot be rebound if that is what you mean? I figured there wouldn't be a need to.

PART3: When you rebind these buttons, do they have the same name as each other? When you rebind them do you unbind other inputs to other keys so they are no longer triggered, its not something like that causing the multiple inputs detected?

Is there anyway to get rid of the inputs showing up everytime you press something. For example when i press Dpad down, a text that says "Dpad down pressed" will appear and it does that for every button. Is there a way to get rid of that?

yes, disable stream i/r

holy crap thank you SO MUCH for this, this is just about the only input display program i could find that has wiimote support (through the custom option) without needing an arduino board or something

oh awesome, glad it's working for you! :D

is there going to be mac support for this

if you have mac, would you be able to test out this and let me know if it seems to be working, if it receives inputs and you can save/load your input layout ill upload it properly here! :> https://moonspod.itch.io/temp-proj (page password: inputdisplay)

(1 edit)

alright, i tried to open the app in the zip file, and it says "'Input Display' is damaged and can't be opened. You should move it to the Trash"

but thanks for trying to add mac support!

i changed a few things, replacing the old download, you could give that a go, if it doesnt work im afraid i dont know what to do sorry <3

it didnt work, but thanks for trying tho!

can I have some help with the tool? its not reading stick inputs but it used to

do you know what version you used originally or the date you downloaded it. Nothing should have changed to stop it working

(1 edit)

I'm using version 1.0.4 or rather the latest one on itch and to test it myself I redownloaded it two days ago roughly so the 25th

Do you remember what version or the date you downloaded it when i was last working?

I do actually it was the 21st of march this year you can see it working in my stream VOD "half assing breath of the wild modded VOD" but the stream after that it fails and I have been trying for a while to fix it myself it stops working on stream on the 8th of april in my VOD "Kiryu doing sick backflips the sequal"

Thats weird, i didnt change anything between that time, iv made public the past versions if you want to try those, they are listed in the same place as the newest versions download. If none are working it may be something on your end.

My antivirus isn't liking this file, can you confirm that it's safe and that it doesn't start to mine bitcoins in the background or smth?

it is only what it is, not a bitcoin miner or anything nefarious 

Hey I just found this and its really great. One thing that would be awesome though is if the analog stick lighting up was reserved for when you were clicking in LS or RS rather than when its moving. This way its clear if you're doing both at the same time, or just one or the other.

I went through the trouble of making an Series controller style preset if anyone else wants to use it:



The most amazing thing i discovered today. Works just flawlessly.

the version on this web page works fine, but the exe sends itself really fast random inputs when my controller's plugged in. i've tried both exes and i'm not sure what's wrong with my switch pro controller :/

good tool

can u do a video showing what it looks like with the fast random inputs? does it happen without you pressing anything?

yeah it's uhh

if you're not busy, can you try running this and let me know if it still does the input spam? its the HTML version but for desktop~  https://moonspod.itch.io/input-display-test/download/6I_NRUK0vGNkISB1_iW7R2UEy6Q...

just woke up, downloaded this, and it did the same thing :(


aah i really dont know why this is happening, it sucks, try one last thing, grasping at straws, there is another download for an fps locked version https://moonspod.itch.io/input-display-test/download/VhOznDZIN3XO8bceLF47pSxPATd...

if this doesnt work, which i doubt it will, i wont be able to help sadly, sorry

Has anyone else had a problem with their analog stick (my left one specifically) staying highlighted when not in use as if it is? I do not have show inactive stick checked, and it resets until i touch the stick again whenever i move the inputdisplay window.

have you tried setting the deadzone for that stick higher? 


yo thanks silly mistake by me i accidentally turned it to 0. Appreciate it!

(4 edits)

I have a dual pc, screen mirror setup, so obs is on the laptop to stream while i game on my main, that being said, is there a way to remove everything, like a see through/minimized mode so i can see it but placed in the corner on my main pc without the background?  i know obs has plugins for url links to remote display overlay, but yours is the only one that displays inputs which is golden.  thank you so much for this amazing software and your time, youre a hero. 

(1 edit)

Unfortunately the window needs to not be minimized in order for it to update, I've looked for a workaround but couldn't find any. 

I can make the window go transparent, would this work? I'll also add a button for making the window borderless so it has a clean edge. Transparent window does hit performance apparently though I'm not noticing any difference, also, if the window were to be captured by OBS while transparent, it must be done so with Game Capture with Allow Transparency enabled, else the background will appear black in OBS.


Cool, I'll get this up today :)


i am so sorry, if there is  something im missing please let me know. Everything is perfect except 1 thing, I made the program smaller and cut it so it doesnt have black edges, its see through, i see the input history and buttons, everythings perfect. Except when i hit borderless, i cant move it. I was going to put it in the left corner, in my head, the flush finish you did take away the options menu and leave just the input box buttons and input history. So i said ill just put in on the right side and have the options off screen, but i cant move the program once borderless is on and have no way to turn borderless once its set in the right hand corner with the options cut. I did just think of using a second monitor as extended, have it partially show on the 2nd one and then click transparent, so ill try that *UPDATE, I tried it, and i cant, as soon as i turn off extended, it forces the program fully back into the screen . This would work if I kept a 2nd monitor on and extended, but i dont have 2 monitors, I extended my laptop on obs as to it being mirrored and captured as a temporary workaround.  I understand its meant for obs and im using it outside of its purposeful realm, and thank you for helping me with that, its all greatly appreciated. i will donate for your time with me, let alone the program itself.

(1 edit)

You can move the options list when edit mode is on by holding m i believe, you can move it to the left side of the window, put the window where you like it, enable borderless and hide the menu by pressing the cross, right click returns it. If im understanding the problem you are having correct that should help?

*EDIT: i realise that would mean when you right click to return the menu it will be offscreen again, ill update so the menu appears where your mouse is when you right click while holding m instead of to a set position.  Also ill change how stretching the window works so the black bars won't show at the edges.

Hello! I was wondering if it's possible to edit the 'STREAM I/R' section so it resembles more like the input history of a fighting game training mode, instead of seeing 'dpad right released', 'square pressed' and so on? You'd instead see the arrow and button icons scrolling down, and also see diagonal inputs as well when 2 directions are held?

Thanks either way.

I've had a mess around to see if I can figure something out, the way I'm doing things currently diagonals are awkward and don't really work properly, if I ever remake this I'll keep this stuff in mind.

As for input stream visuals, while alt codes don't seem to work, if you enable custom font while using this websites font, then copy paste the symbols into the appropriate input name, you can sort of get this effect of button prompts? (you can use custom font by opening the save file location, going up one folder, pasting your font there and renaming font).

Hello! I'm having trouble creating a custom controller stick.
I'm not sure how to set the stick's image outer movement range (not the deadzones), and while I have the same image in the 'pressed' and 'unpressed' folders, the image won't show up.

Is there something I may be doing wrong?

I'm not sure which area you mean with the first part of the question, are you asking for a way to increase/decrease the distance the stick travels when it's moved? I've checked and the images should be importing correctly for pressed and unpressed sticks, both left and right (although the naming of those folders actually means stick and under stick) if you are changing the image with the application open it wont update, you'll need to close and reopen whenever an image is changed.

Sorry for being unclear!
Yeah, customizable travel distance for the stick(s) is what I had in mind.
Also thank you, restarting the software did the trick!

Awesome! I'll add customizable travel distance for sticks in a new version later, it will mean the save file may not be compatible with the new version. :))

Thank you so much for considering it!

I've found something else in the meantime, and wanted to ask if that's intended, or if my computer is acting up...
The graphic for the stick (only the stick, not the base in the 'unpressed' folder' vanishes in these scenarios:

  • tabbing out of / minimizing the application;
  • pressing the stick's button (briefly, when releasing the button);
  • the corresponding deadzone slider is greater than 0 and the stick isn't moved outside of the deadzone range

Here's a reference video of the above.
Feel free to tell me if/when you want it to be deleted!

I think its a quirk of the engine that they reset when you tab back in, ill add an option to always show the stick while its idle. Its intended that it shows then hides when the stick is clicked in to show there was an input and that it hides also when outside the dead zone. But yea, adding that now is easy enough :) did you have any other ideas that might be easy for me to quickly add?

Love what's being done here, but my controller's sticks aren't being registered as inputs. Using a Mayflash Gamecube Adapter. Any possibility that the sav file could be directly writable and I could input those manually?

There is a workaround to this that I have found, which is to use x360ce to map the controller to a normal Xbox 360 controller. A direct solution would be appreciated, but this will work in place of that!

you can edit the .sav with notepad if you choose 'open with', it should be readable for the most part, some bits will be the 'no symbol' symbol, unfortunately i don't know how to add more controllers, it supports whatever controllers Godot engine supports, definitely xinput and dualshock

(1 edit)

Renaming the "circle" input makes the log write the name twice when pressed both in the downloaded and browser version
So "CIRCLE pressed CIRCLE released" becomes "TESTTEST pressed TEST released"
Luckily I have little use of the log but it's a silly bug to not have been squashed

the silly bug has been squashed, new version available ~!

Hello I'm looking to hire someone to write the code for changing a frame/image when a particular button is hit like this.
I have the frames/images I want to attach to all the buttons.

this is actually doable with this, you can rebind the buttons to be whatever they need to be attached too and use the custom controller appearance, placing your images in the folders as needed, there is a video showing where and how this works on the itchio page (not the right hand bar but page body) if this isn't good enough you can email me on the email in my itch profile :))

Hi! I'm having an issue where my inputs from the keyboard aren't displayed while the Input Display window is unfocused, while controller inputs are displayed. Is there a way I can make it work somehow,  or is the program controller-specific?

unfortunately i cant find a way to get gamepad inputs while unfocused for some games aaand it sounds like keyboard inputs are lost completely while unfocused which i was unaware of :((

have to rebind the shoulder buttons even with layout saved, this works great otherwise but that's kind of a dealbreaker ngl

so, it looks like as it is currently it will save and load rebound keyboard buttons but rebinds to another controller button won't be loaded correctly, if i can figure out how to get it to work for controller binds, ill update, sorry ~

Hey, this should be fixed as far as i can test. Your layout saves from the previous version may not be compatible with the latest version however.

This looks awesome, and I have a question about licensing. Is this available under a FOSS license?

Looks great! Unfortunately cant seem to find a way to send inputs to this unless its the focused window? Could be as I'm using vjoy rather than standard controller. Any ideas

sometimes the game will stop inputs being received by Input Display, i've only had it twice do that though. I haven't tested other controllers than the one that i have which is official x360 sorry :x

How do you make the background transparent and how do you make the thing work while playing games?

To make the background transparent, capture the window with your streaming software, if you're using OBS add the filter Chromakey, else add Chromakey however it is done for you, set the key colour the same as the background of your Input Display. It should run and capture get inputs while not focused as long as it is not minimized


This is really handy! I've tried out a bunch of different input display tools, but the button layouts were always just a tiny bit off. This is the first option I've found that gives you complete control over button placement/size/orientation. Not sure if I'll ever be able to go back! 

It might just be me being dumb, but is there a way to have the program automatically load a specific save file on startup? It's a minor complaint, but having to manually load my profile each time is just a tiny bit inconvenient. Sorry if this is just me overlooking something obvious!

It would also be nice if you could change the highlight color of the active buttons separate from the button colors themselves. Having black buttons that light up green when active, for example. And being able to resize the application window would be handy too, though these last two would just be icing on the cake.

But nitpicks aside, this is absolutely fantastic. Thanks for your hard work! <3

(1 edit) (+1)

Quickly enabled the resizing just now, not sure why i turned it off to begin with, might do automatic load later, changing highlight colour is a bit more complicated because of how im changing their colours to begin with.


Hell yeah, thanks! And I wouldn't worry about the highlight color if it's too much of a pain. The default already has pretty good contrast to begin with, so readability is perfectly fine. 


Autoload should be in on non HTML versions :))


Hey, this is a really cool tool. I've been wanting a input display tool that showed input history.


So I've been playing with it more. I was wondering if it's possible to remove inputs that aren't being used? I like this tool a lot for fighting game streams(especially since this is the first input display tool that actually tracks history), so being able to get rid of the analog sticks would be awesome. But I did find a work around. Just moving them into a corner and cropping that section out in OBS.

(1 edit) (+1)

yea! you can shrink their size to 0 when editing your layout or change their alpha channel on the recolor option to 0. :)) updated today to add text alignment and ability to disable unwanted inputs from input stream