Raptorkillz ???
what does that mean?
like icons that are animated or icons that change when you are using keyboard or controller?

for changing icons just assign a different texture2D to the sprite property of the node you are using. this property is present in certain nodes, like buttons and sprite2D.
for animation you can use an animated sprite2D like you would for a character.

    Raptorkillz you have two ways to do this. You can have the player choose between keyboard or joystick or different controller configurations from a menu.
    The other way, you have the Input signal joy_connection_changed which triggers when a joypad is connected or disconnected.
    https://docs.godotengine.org/en/4.2/classes/class_input.html#class-input
    I would create an autoload to hold a variable for the controller config. Then, your node would read this value and if it's 0 it would display the keyboard icon, and if it's 1 it would display the ps controller icon (x square circle triangle), and 2 could be something like xbox controller (a b x y), 3 could be a generic controller with numbers (1234), etc.

      Jesusemora I found a line of code that works but I need help making it show icons

      extends Control
      
      func _ready():
      	Input.joy_connection_changed.connect(_on_joy_connection_changed)
      	change_label("Keyboard")
      	if Input.get_joy_name(0) != "":
      		change_label(Input.get_joy_name(0))
      	
      func _on_joy_connection_changed(device_id, connected):
      		if connected:
      			change_label(Input.get_joy_name(device_id))
      			print(Input.get_joy_name(device_id))
      		else:
      			print("Keyboard")
      			change_label("Keyboard")
      	
      func change_label(new_text):
      		$Label.text = new_text

        You need a texture rect and set the texture.
        In a similiar way you change the label.

          Raptorkillz how would I do that oh and can you make it work with inputmaps

          Remember you're talking with humans here. Not with ChatGPT.

            Raptorkillz listen, go and learn godot, make smaller projects and learn godot, read the docs, watch tutorials and learn godot. we are here to help you with small and specific problems, not to make the game for you.
            changing a sprite is something very simple that any beginner can do. handling inputs is something advanced. you are asking for both, which implies you have no idea what you are doing, yet from your other posts it seems you are trying to make a perfect 1:1 recreation of a sonic game. you just can't do something like this as your first project, no matter how much help you get from us or some stupid AI.
            if you are truly passionate about making games and want to continue this despite the advice, I recommend that you start small, make gameplay first, not menues. menues are something you do LAST. And don't underestimate the effort that goes into making a game, it's not something you can just hand-wave away, you have to respect it and be realistic, otherwise this whole ordeal will be pointless because you will get tired and abandon the project. I speak from experience, I have worked on many projects of my own, I have worked with another guy in a fan game, I have worked with groups of people, none of those led to anything. the one thing I got out of them was experience, which I'm sharing with you.
            learn to make games before jumping into a big project, otherwise you will come to regret many of your decisions once you have to fix a bug or add more features and the code is impossible to understand.

            Raptorkillz Jesusemora is right. You really should start learning how to program/use Godot. The time spent learning is worth it! Look at all the time you spent searching and posting code. And it is so rewarding when you look back after some days, some weeks, some months and see what you can do now by yourself. But of course it is ok to ask questions if you are stuck!