diff --git a/addons/controller_icons/ControllerIcons.gd b/addons/controller_icons/ControllerIcons.gd
new file mode 100644
index 0000000..1f1dc44
--- /dev/null
+++ b/addons/controller_icons/ControllerIcons.gd
@@ -0,0 +1,704 @@
+@tool
+extends Node
+
+signal input_type_changed(input_type: InputType, controller: int)
+
+enum InputType {
+ KEYBOARD_MOUSE, ## The input is from the keyboard and/or mouse.
+ CONTROLLER ## The input is from a controller.
+}
+
+enum PathType {
+ INPUT_ACTION, ## The path is an input action.
+ JOYPAD_PATH, ## The path is a generic joypad path.
+ SPECIFIC_PATH ## The path is a specific path.
+}
+
+var _cached_icons := {}
+var _custom_input_actions := {}
+
+var _cached_callables_lock := Mutex.new()
+var _cached_callables : Array[Callable] = []
+
+var _last_input_type : InputType
+var _last_controller : int
+var _settings : ControllerSettings
+var _base_extension := "png"
+
+# Custom mouse velocity calculation, because Godot
+# doesn't implement it on some OSes apparently
+const _MOUSE_VELOCITY_DELTA := 0.1
+var _t : float
+var _mouse_velocity : int
+
+var Mapper = preload("res://addons/controller_icons/Mapper.gd").new()
+
+# Default actions will be the builtin editor actions when
+# the script is at editor ("tool") level. To pickup more
+# actions available, these have to be queried manually
+var _builtin_keys := [
+ "input/ui_accept", "input/ui_cancel", "input/ui_copy",
+ "input/ui_cut", "input/ui_down", "input/ui_end",
+ "input/ui_filedialog_refresh", "input/ui_filedialog_show_hidden",
+ "input/ui_filedialog_up_one_level", "input/ui_focus_next",
+ "input/ui_focus_prev", "input/ui_graph_delete",
+ "input/ui_graph_duplicate", "input/ui_home",
+ "input/ui_left", "input/ui_menu", "input/ui_page_down",
+ "input/ui_page_up", "input/ui_paste", "input/ui_redo",
+ "input/ui_right", "input/ui_select", "input/ui_swap_input_direction",
+ "input/ui_text_add_selection_for_next_occurrence",
+ "input/ui_text_backspace", "input/ui_text_backspace_all_to_left",
+ "input/ui_text_backspace_all_to_left.macos",
+ "input/ui_text_backspace_word", "input/ui_text_backspace_word.macos",
+ "input/ui_text_caret_add_above", "input/ui_text_caret_add_above.macos",
+ "input/ui_text_caret_add_below", "input/ui_text_caret_add_below.macos",
+ "input/ui_text_caret_document_end", "input/ui_text_caret_document_end.macos",
+ "input/ui_text_caret_document_start", "input/ui_text_caret_document_start.macos",
+ "input/ui_text_caret_down", "input/ui_text_caret_left",
+ "input/ui_text_caret_line_end", "input/ui_text_caret_line_end.macos",
+ "input/ui_text_caret_line_start", "input/ui_text_caret_line_start.macos",
+ "input/ui_text_caret_page_down", "input/ui_text_caret_page_up",
+ "input/ui_text_caret_right", "input/ui_text_caret_up",
+ "input/ui_text_caret_word_left", "input/ui_text_caret_word_left.macos",
+ "input/ui_text_caret_word_right", "input/ui_text_caret_word_right.macos",
+ "input/ui_text_clear_carets_and_selection", "input/ui_text_completion_accept",
+ "input/ui_text_completion_query", "input/ui_text_completion_replace",
+ "input/ui_text_dedent", "input/ui_text_delete",
+ "input/ui_text_delete_all_to_right", "input/ui_text_delete_all_to_right.macos",
+ "input/ui_text_delete_word", "input/ui_text_delete_word.macos",
+ "input/ui_text_indent", "input/ui_text_newline", "input/ui_text_newline_above",
+ "input/ui_text_newline_blank", "input/ui_text_scroll_down",
+ "input/ui_text_scroll_down.macos", "input/ui_text_scroll_up",
+ "input/ui_text_scroll_up.macos", "input/ui_text_select_all",
+ "input/ui_text_select_word_under_caret", "input/ui_text_select_word_under_caret.macos",
+ "input/ui_text_submit", "input/ui_text_toggle_insert_mode", "input/ui_undo",
+ "input/ui_up",
+]
+
+func _set_last_input_type(__last_input_type, __last_controller):
+ _last_input_type = __last_input_type
+ _last_controller = __last_controller
+ emit_signal("input_type_changed", _last_input_type, _last_controller)
+
+func _enter_tree():
+ process_mode = Node.PROCESS_MODE_ALWAYS
+ if Engine.is_editor_hint():
+ _parse_input_actions()
+
+func _exit_tree():
+ Mapper = null
+
+func _parse_input_actions():
+ _custom_input_actions.clear()
+
+ for key in _builtin_keys:
+ var data : Dictionary = ProjectSettings.get_setting(key)
+ if not data.is_empty() and data.has("events") and data["events"] is Array:
+ _add_custom_input_action((key as String).trim_prefix("input/"), data)
+
+ # A script running at editor ("tool") level only has
+ # the default mappings. The way to get around this is
+ # manually parsing the project file and adding the
+ # new input actions to lookup.
+ var proj_file := ConfigFile.new()
+ if proj_file.load("res://project.godot"):
+ printerr("Failed to open \"project.godot\"! Custom input actions will not work on editor view!")
+ return
+ if proj_file.has_section("input"):
+ for input_action in proj_file.get_section_keys("input"):
+ var data : Dictionary = proj_file.get_value("input", input_action)
+ _add_custom_input_action(input_action, data)
+
+func _ready():
+ Input.joy_connection_changed.connect(_on_joy_connection_changed)
+ _settings = load("res://addons/controller_icons/settings.tres")
+ if not _settings:
+ _settings = ControllerSettings.new()
+ if _settings.custom_mapper:
+ Mapper = _settings.custom_mapper.new()
+ if _settings.custom_file_extension and not _settings.custom_file_extension.is_empty():
+ _base_extension = _settings.custom_file_extension
+ # Wait a frame to give a chance for the app to initialize
+ await get_tree().process_frame
+ # Set input type to what's likely being used currently
+ if Input.get_connected_joypads().is_empty():
+ _set_last_input_type(InputType.KEYBOARD_MOUSE, -1)
+ else:
+ _set_last_input_type(InputType.CONTROLLER, Input.get_connected_joypads().front())
+
+func _on_joy_connection_changed(device, connected):
+ if connected:
+ _set_last_input_type(InputType.CONTROLLER, device)
+ else:
+ if Input.get_connected_joypads().is_empty():
+ _set_last_input_type(InputType.KEYBOARD_MOUSE, -1)
+ else:
+ _set_last_input_type(InputType.CONTROLLER, Input.get_connected_joypads().front())
+
+func _input(event: InputEvent):
+ var input_type = _last_input_type
+ var controller = _last_controller
+ match event.get_class():
+ "InputEventKey", "InputEventMouseButton":
+ input_type = InputType.KEYBOARD_MOUSE
+ "InputEventMouseMotion":
+ if _settings.allow_mouse_remap and _test_mouse_velocity(event.relative):
+ input_type = InputType.KEYBOARD_MOUSE
+ "InputEventJoypadButton":
+ input_type = InputType.CONTROLLER
+ controller = event.device
+ "InputEventJoypadMotion":
+ if abs(event.axis_value) > _settings.joypad_deadzone:
+ input_type = InputType.CONTROLLER
+ controller = event.device
+ if input_type != _last_input_type or controller != _last_controller:
+ _set_last_input_type(input_type, controller)
+
+func _test_mouse_velocity(relative_vec: Vector2):
+ if _t > _MOUSE_VELOCITY_DELTA:
+ _t = 0
+ _mouse_velocity = 0
+
+ # We do a component sum instead of a length, to save on a
+ # sqrt operation, and because length_squared is negatively
+ # affected by low value vectors (<10).
+ # It is also good enough for this system, so reliability
+ # is sacrificed in favor of speed.
+ _mouse_velocity += abs(relative_vec.x) + abs(relative_vec.y)
+ return _mouse_velocity / _MOUSE_VELOCITY_DELTA > _settings.mouse_min_movement
+
+func _process(delta: float) -> void:
+ _t += delta
+
+ if not _cached_callables.is_empty() and _cached_callables_lock.try_lock():
+ # UPGRADE: In Godot 4.2, for-loop variables can be
+ # statically typed:
+ # for f: Callable in _cached_callables:
+ for f in _cached_callables:
+ if f.is_valid(): f.call()
+ _cached_callables.clear()
+ _cached_callables_lock.unlock()
+
+func _add_custom_input_action(input_action: String, data: Dictionary):
+ _custom_input_actions[input_action] = data["events"]
+
+func refresh():
+ # All it takes is to signal icons to refresh paths
+ emit_signal("input_type_changed", _last_input_type, _last_controller)
+
+func get_joypad_type(controller: int = _last_controller) -> ControllerSettings.Devices:
+ return Mapper._get_joypad_type(controller, _settings.joypad_fallback, ControllerSettings.Devices.NONE)
+
+func get_last_input_type() -> InputType:
+ return _last_input_type
+
+func parse_path(path: String, input_type = _last_input_type, last_controller = _last_controller, forced_controller_icon_style = ControllerSettings.Devices.NONE) -> Texture:
+ if typeof(input_type) == TYPE_NIL:
+ return null
+ var root_paths := _expand_path(path, input_type, last_controller, forced_controller_icon_style)
+ for root_path in root_paths:
+ if _load_icon(root_path):
+ continue
+ return _cached_icons[root_path]
+ return null
+
+func parse_event_modifiers(event: InputEvent) -> Array[Texture]:
+ if not event or not event is InputEventWithModifiers:
+ return []
+
+ var icons : Array[Texture] = []
+ var modifiers : Array[String] = []
+ if event.command_or_control_autoremap:
+ match OS.get_name():
+ "macOS":
+ modifiers.push_back("key/command")
+ _:
+ modifiers.push_back("key/ctrl")
+ if event.ctrl_pressed and not event.command_or_control_autoremap:
+ modifiers.push_back("key/ctrl")
+ if event.shift_pressed:
+ modifiers.push_back("key/shift")
+ if event.alt_pressed:
+ modifiers.push_back("key/alt")
+ if event.meta_pressed and not event.command_or_control_autoremap:
+ match OS.get_name():
+ "macOS":
+ modifiers.push_back("key/command")
+ _:
+ modifiers.push_back("key/win")
+
+ for modifier in modifiers:
+ for icon_path in _expand_path(modifier, InputType.KEYBOARD_MOUSE, -1):
+ if _load_icon(icon_path) == OK:
+ icons.push_back(_cached_icons[icon_path])
+ break
+
+ return icons
+
+func parse_path_to_tts(path: String, input_type: int = _last_input_type, controller: int = _last_controller) -> String:
+ if input_type == null:
+ return ""
+ var tts = _convert_path_to_asset_file(path, input_type, controller)
+ return _convert_asset_file_to_tts(tts.get_basename().get_file())
+
+func parse_event(event: InputEvent) -> Texture:
+ var path = _convert_event_to_path(event)
+ if path.is_empty():
+ return null
+
+ var base_paths := [
+ _settings.custom_asset_dir,
+ "res://addons/controller_icons/assets"
+ ]
+ for base_path in base_paths:
+ base_path = base_path.simplify_path()
+ if base_path.is_empty():
+ continue
+ base_path = base_path.path_join( "%s.%s" % [path, _base_extension] )
+ if _load_icon(base_path):
+ continue
+ return _cached_icons[base_path]
+ return null
+
+func get_path_type(path: String) -> PathType:
+ if _custom_input_actions.has(path) or InputMap.has_action(path):
+ return PathType.INPUT_ACTION
+ elif path.get_slice("/", 0) == "joypad":
+ return PathType.JOYPAD_PATH
+ else:
+ return PathType.SPECIFIC_PATH
+
+func get_matching_event(path: String, input_type: InputType = _last_input_type, controller: int = _last_controller) -> InputEvent:
+ var events : Array
+ if _custom_input_actions.has(path):
+ events = _custom_input_actions[path]
+ else:
+ events = InputMap.action_get_events(path)
+
+ var fallbacks = []
+ for event in events:
+ if not is_instance_valid(event): continue
+
+ match event.get_class():
+ "InputEventKey", "InputEventMouse", "InputEventMouseMotion", "InputEventMouseButton":
+ if input_type == InputType.KEYBOARD_MOUSE:
+ return event
+ "InputEventJoypadButton", "InputEventJoypadMotion":
+ if input_type == InputType.CONTROLLER:
+ # Use the first device specific mapping if there is one.
+ if event.device == controller:
+ return event
+ # Otherwise, we create a fallback prioritizing events with 'ALL_DEVICE'
+ if event.device < 0: # All-device event
+ fallbacks.push_front(event)
+ else:
+ fallbacks.push_back(event)
+
+ return fallbacks[0] if not fallbacks.is_empty() else null
+
+func _expand_path(path: String, input_type: int, controller: int, forced_controller_icon_style = ControllerSettings.Devices.NONE) -> Array:
+ var paths := []
+ var base_paths := [
+ _settings.custom_asset_dir + "/",
+ "res://addons/controller_icons/assets/"
+ ]
+ for base_path in base_paths:
+ if base_path.is_empty():
+ continue
+ base_path += _convert_path_to_asset_file(path, input_type, controller, forced_controller_icon_style)
+
+ paths.push_back(base_path + "." + _base_extension)
+ return paths
+
+func _convert_path_to_asset_file(path: String, input_type: int, controller: int, forced_controller_icon_style = ControllerSettings.Devices.NONE) -> String:
+ match get_path_type(path):
+ PathType.INPUT_ACTION:
+ var event := get_matching_event(path, input_type, controller)
+ if event:
+ return _convert_event_to_path(event, controller, forced_controller_icon_style)
+ return path
+ PathType.JOYPAD_PATH:
+ return Mapper._convert_joypad_path(path, controller, _settings.joypad_fallback, forced_controller_icon_style)
+ PathType.SPECIFIC_PATH, _:
+ return path
+
+func _convert_asset_file_to_tts(path: String) -> String:
+ match path:
+ "shift_alt":
+ return "shift"
+ "esc":
+ return "escape"
+ "backspace_alt":
+ return "backspace"
+ "enter_alt":
+ return "enter"
+ "enter_tall":
+ return "keypad enter"
+ "arrow_left":
+ return "left arrow"
+ "arrow_right":
+ return "right arrow"
+ "del":
+ return "delete"
+ "arrow_up":
+ return "up arrow"
+ "arrow_down":
+ return "down arrow"
+ "shift_alt":
+ return "shift"
+ "ctrl":
+ return "control"
+ "kp_add":
+ return "keypad plus"
+ "mark_left":
+ return "left mark"
+ "mark_right":
+ return "right mark"
+ "bracket_left":
+ return "left bracket"
+ "bracket_right":
+ return "right bracket"
+ "tilda":
+ return "tilde"
+ "lb":
+ return "left bumper"
+ "rb":
+ return "right bumper"
+ "lt":
+ return "left trigger"
+ "rt":
+ return "right trigger"
+ "l_stick_click":
+ return "left stick click"
+ "r_stick_click":
+ return "right stick click"
+ "l_stick":
+ return "left stick"
+ "r_stick":
+ return "right stick"
+ _:
+ return path
+
+func _convert_event_to_path(event: InputEvent, controller: int = _last_controller, forced_controller_icon_style = ControllerSettings.Devices.NONE):
+ if event is InputEventKey:
+ # If this is a physical key, convert to localized scancode
+ if event.keycode == 0:
+ return _convert_key_to_path(DisplayServer.keyboard_get_keycode_from_physical(event.physical_keycode))
+ return _convert_key_to_path(event.keycode)
+ elif event is InputEventMouseButton:
+ return _convert_mouse_button_to_path(event.button_index)
+ elif event is InputEventJoypadButton:
+ return _convert_joypad_button_to_path(event.button_index, controller, forced_controller_icon_style)
+ elif event is InputEventJoypadMotion:
+ return _convert_joypad_motion_to_path(event.axis, controller, forced_controller_icon_style)
+
+func _convert_key_to_path(scancode: int):
+ match scancode:
+ KEY_ESCAPE:
+ return "key/esc"
+ KEY_TAB:
+ return "key/tab"
+ KEY_BACKSPACE:
+ return "key/backspace_alt"
+ KEY_ENTER:
+ return "key/enter_alt"
+ KEY_KP_ENTER:
+ return "key/enter_tall"
+ KEY_INSERT:
+ return "key/insert"
+ KEY_DELETE:
+ return "key/del"
+ KEY_PRINT:
+ return "key/print_screen"
+ KEY_HOME:
+ return "key/home"
+ KEY_END:
+ return "key/end"
+ KEY_LEFT:
+ return "key/arrow_left"
+ KEY_UP:
+ return "key/arrow_up"
+ KEY_RIGHT:
+ return "key/arrow_right"
+ KEY_DOWN:
+ return "key/arrow_down"
+ KEY_PAGEUP:
+ return "key/page_up"
+ KEY_PAGEDOWN:
+ return "key/page_down"
+ KEY_SHIFT:
+ return "key/shift_alt"
+ KEY_CTRL:
+ return "key/ctrl"
+ KEY_META:
+ match OS.get_name():
+ "macOS":
+ return "key/command"
+ _:
+ return "key/meta"
+ KEY_ALT:
+ return "key/alt"
+ KEY_CAPSLOCK:
+ return "key/caps_lock"
+ KEY_NUMLOCK:
+ return "key/num_lock"
+ KEY_F1:
+ return "key/f1"
+ KEY_F2:
+ return "key/f2"
+ KEY_F3:
+ return "key/f3"
+ KEY_F4:
+ return "key/f4"
+ KEY_F5:
+ return "key/f5"
+ KEY_F6:
+ return "key/f6"
+ KEY_F7:
+ return "key/f7"
+ KEY_F8:
+ return "key/f8"
+ KEY_F9:
+ return "key/f9"
+ KEY_F10:
+ return "key/f10"
+ KEY_F11:
+ return "key/f11"
+ KEY_F12:
+ return "key/f12"
+ KEY_KP_MULTIPLY, KEY_ASTERISK:
+ return "key/asterisk"
+ KEY_KP_SUBTRACT, KEY_MINUS:
+ return "key/minus"
+ KEY_KP_ADD:
+ return "key/plus_tall"
+ KEY_KP_0:
+ return "key/0"
+ KEY_KP_1:
+ return "key/1"
+ KEY_KP_2:
+ return "key/2"
+ KEY_KP_3:
+ return "key/3"
+ KEY_KP_4:
+ return "key/4"
+ KEY_KP_5:
+ return "key/5"
+ KEY_KP_6:
+ return "key/6"
+ KEY_KP_7:
+ return "key/7"
+ KEY_KP_8:
+ return "key/8"
+ KEY_KP_9:
+ return "key/9"
+ KEY_UNKNOWN:
+ return ""
+ KEY_SPACE:
+ return "key/space"
+ KEY_QUOTEDBL:
+ return "key/quote"
+ KEY_PLUS:
+ return "key/plus"
+ KEY_0:
+ return "key/0"
+ KEY_1:
+ return "key/1"
+ KEY_2:
+ return "key/2"
+ KEY_3:
+ return "key/3"
+ KEY_4:
+ return "key/4"
+ KEY_5:
+ return "key/5"
+ KEY_6:
+ return "key/6"
+ KEY_7:
+ return "key/7"
+ KEY_8:
+ return "key/8"
+ KEY_9:
+ return "key/9"
+ KEY_SEMICOLON:
+ return "key/semicolon"
+ KEY_LESS:
+ return "key/mark_left"
+ KEY_GREATER:
+ return "key/mark_right"
+ KEY_QUESTION:
+ return "key/question"
+ KEY_A:
+ return "key/a"
+ KEY_B:
+ return "key/b"
+ KEY_C:
+ return "key/c"
+ KEY_D:
+ return "key/d"
+ KEY_E:
+ return "key/e"
+ KEY_F:
+ return "key/f"
+ KEY_G:
+ return "key/g"
+ KEY_H:
+ return "key/h"
+ KEY_I:
+ return "key/i"
+ KEY_J:
+ return "key/j"
+ KEY_K:
+ return "key/k"
+ KEY_L:
+ return "key/l"
+ KEY_M:
+ return "key/m"
+ KEY_N:
+ return "key/n"
+ KEY_O:
+ return "key/o"
+ KEY_P:
+ return "key/p"
+ KEY_Q:
+ return "key/q"
+ KEY_R:
+ return "key/r"
+ KEY_S:
+ return "key/s"
+ KEY_T:
+ return "key/t"
+ KEY_U:
+ return "key/u"
+ KEY_V:
+ return "key/v"
+ KEY_W:
+ return "key/w"
+ KEY_X:
+ return "key/x"
+ KEY_Y:
+ return "key/y"
+ KEY_Z:
+ return "key/z"
+ KEY_BRACKETLEFT:
+ return "key/bracket_left"
+ KEY_BACKSLASH:
+ return "key/slash"
+ KEY_SLASH:
+ return "key/forward_slash"
+ KEY_BRACKETRIGHT:
+ return "key/bracket_right"
+ KEY_ASCIITILDE:
+ return "key/tilda"
+ KEY_QUOTELEFT:
+ return "key/backtick"
+ KEY_APOSTROPHE:
+ return "key/apostrophe"
+ KEY_COMMA:
+ return "key/comma"
+ KEY_EQUAL:
+ return "key/equals"
+ KEY_PERIOD, KEY_KP_PERIOD:
+ return "key/period"
+ _:
+ return ""
+
+func _convert_mouse_button_to_path(button_index: int):
+ match button_index:
+ MOUSE_BUTTON_LEFT:
+ return "mouse/left"
+ MOUSE_BUTTON_RIGHT:
+ return "mouse/right"
+ MOUSE_BUTTON_MIDDLE:
+ return "mouse/middle"
+ MOUSE_BUTTON_WHEEL_UP:
+ return "mouse/wheel_up"
+ MOUSE_BUTTON_WHEEL_DOWN:
+ return "mouse/wheel_down"
+ MOUSE_BUTTON_XBUTTON1:
+ return "mouse/side_down"
+ MOUSE_BUTTON_XBUTTON2:
+ return "mouse/side_up"
+ _:
+ return "mouse/sample"
+
+func _convert_joypad_button_to_path(button_index: int, controller: int, forced_controller_icon_style = ControllerSettings.Devices.NONE):
+ var path
+ match button_index:
+ JOY_BUTTON_A:
+ path = "joypad/a"
+ JOY_BUTTON_B:
+ path = "joypad/b"
+ JOY_BUTTON_X:
+ path = "joypad/x"
+ JOY_BUTTON_Y:
+ path = "joypad/y"
+ JOY_BUTTON_LEFT_SHOULDER:
+ path = "joypad/lb"
+ JOY_BUTTON_RIGHT_SHOULDER:
+ path = "joypad/rb"
+ JOY_BUTTON_LEFT_STICK:
+ path = "joypad/l_stick_click"
+ JOY_BUTTON_RIGHT_STICK:
+ path = "joypad/r_stick_click"
+ JOY_BUTTON_BACK:
+ path = "joypad/select"
+ JOY_BUTTON_START:
+ path = "joypad/start"
+ JOY_BUTTON_DPAD_UP:
+ path = "joypad/dpad_up"
+ JOY_BUTTON_DPAD_DOWN:
+ path = "joypad/dpad_down"
+ JOY_BUTTON_DPAD_LEFT:
+ path = "joypad/dpad_left"
+ JOY_BUTTON_DPAD_RIGHT:
+ path = "joypad/dpad_right"
+ JOY_BUTTON_GUIDE:
+ path = "joypad/home"
+ JOY_BUTTON_MISC1:
+ path = "joypad/share"
+ _:
+ return ""
+ return Mapper._convert_joypad_path(path, controller, _settings.joypad_fallback, forced_controller_icon_style)
+
+func _convert_joypad_motion_to_path(axis: int, controller: int, forced_controller_icon_style = ControllerSettings.Devices.NONE):
+ var path : String
+ match axis:
+ JOY_AXIS_LEFT_X, JOY_AXIS_LEFT_Y:
+ path = "joypad/l_stick"
+ JOY_AXIS_RIGHT_X, JOY_AXIS_RIGHT_Y:
+ path = "joypad/r_stick"
+ JOY_AXIS_TRIGGER_LEFT:
+ path = "joypad/lt"
+ JOY_AXIS_TRIGGER_RIGHT:
+ path = "joypad/rt"
+ _:
+ return ""
+ return Mapper._convert_joypad_path(path, controller, _settings.joypad_fallback, forced_controller_icon_style)
+
+func _load_icon(path: String) -> int:
+ if _cached_icons.has(path): return OK
+ var tex = null
+ if path.begins_with("res://"):
+ if ResourceLoader.exists(path):
+ tex = load(path)
+ if not tex:
+ return ERR_FILE_CORRUPT
+ else:
+ return ERR_FILE_NOT_FOUND
+ else:
+ if not FileAccess.file_exists(path):
+ return ERR_FILE_NOT_FOUND
+ var img := Image.new()
+ var err = img.load(path)
+ if err != OK:
+ return err
+ tex = ImageTexture.new()
+ tex.create_from_image(img)
+ _cached_icons[path] = tex
+ return OK
+
+func _defer_texture_load(f: Callable) -> void:
+ _cached_callables_lock.lock()
+ _cached_callables.push_back(f)
+ _cached_callables_lock.unlock()
diff --git a/addons/controller_icons/ControllerIcons.gd.uid b/addons/controller_icons/ControllerIcons.gd.uid
new file mode 100644
index 0000000..5a31e18
--- /dev/null
+++ b/addons/controller_icons/ControllerIcons.gd.uid
@@ -0,0 +1 @@
+uid://b7ho1rjcpht1d
diff --git a/addons/controller_icons/ControllerSettings.gd b/addons/controller_icons/ControllerSettings.gd
new file mode 100644
index 0000000..7c50dcf
--- /dev/null
+++ b/addons/controller_icons/ControllerSettings.gd
@@ -0,0 +1,56 @@
+@tool
+extends Resource
+class_name ControllerSettings
+
+enum Devices {
+ NONE = -1,
+ LUNA,
+ OUYA,
+ PS3,
+ PS4,
+ PS5,
+ STADIA,
+ STEAM,
+ SWITCH,
+ JOYCON,
+ XBOX360,
+ XBOXONE,
+ XBOXSERIES,
+ STEAM_DECK
+}
+
+## General addon settings
+@export_subgroup("General")
+
+## Controller type to fallback to if automatic
+## controller detection fails
+@export var joypad_fallback : Devices = Devices.XBOX360
+
+## Controller deadzone for triggering an icon remap when input
+## is analogic (movement sticks or triggers)
+@export_range(0.0, 1.0) var joypad_deadzone : float = 0.5
+
+## Allow mouse movement to trigger an icon remap
+@export var allow_mouse_remap : bool = true
+
+## Minimum mouse "instantaneous" movement for
+## triggering an icon remap
+@export_range(0, 10000) var mouse_min_movement : int = 200
+
+## Settings related to advanced custom assets usage and remapping
+@export_subgroup("Custom assets")
+
+## Custom asset lookup folder for custom icons
+@export_dir var custom_asset_dir : String = ""
+
+## Custom generic joystick mapper script
+@export var custom_mapper : Script
+
+## Custom icon file extension
+@export var custom_file_extension : String = ""
+
+## Custom settings related to any text rendering required on prompts
+@export_subgroup("Text Rendering")
+
+## Custom LabelSettings. If unset, uses engine default settings.
+@export var custom_label_settings : LabelSettings
diff --git a/addons/controller_icons/ControllerSettings.gd.uid b/addons/controller_icons/ControllerSettings.gd.uid
new file mode 100644
index 0000000..71d6437
--- /dev/null
+++ b/addons/controller_icons/ControllerSettings.gd.uid
@@ -0,0 +1 @@
+uid://bb3hjxisuwh6d
diff --git a/addons/controller_icons/LICENSE b/addons/controller_icons/LICENSE
new file mode 100644
index 0000000..f85a9fe
--- /dev/null
+++ b/addons/controller_icons/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2023 Ricardo Subtil
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
\ No newline at end of file
diff --git a/addons/controller_icons/Mapper.gd b/addons/controller_icons/Mapper.gd
new file mode 100644
index 0000000..611a9c5
--- /dev/null
+++ b/addons/controller_icons/Mapper.gd
@@ -0,0 +1,301 @@
+extends RefCounted
+class_name ControllerMapper
+
+func _convert_joypad_path(path: String, device: int, fallback: ControllerSettings.Devices, force_controller_icon_style = ControllerSettings.Devices.NONE) -> String:
+ match _get_joypad_type(device, fallback, force_controller_icon_style):
+ ControllerSettings.Devices.LUNA:
+ return _convert_joypad_to_luna(path)
+ ControllerSettings.Devices.PS3:
+ return _convert_joypad_to_ps3(path)
+ ControllerSettings.Devices.PS4:
+ return _convert_joypad_to_ps4(path)
+ ControllerSettings.Devices.PS5:
+ return _convert_joypad_to_ps5(path)
+ ControllerSettings.Devices.STADIA:
+ return _convert_joypad_to_stadia(path)
+ ControllerSettings.Devices.STEAM:
+ return _convert_joypad_to_steam(path)
+ ControllerSettings.Devices.SWITCH:
+ return _convert_joypad_to_switch(path)
+ ControllerSettings.Devices.JOYCON:
+ return _convert_joypad_to_joycon(path)
+ ControllerSettings.Devices.XBOX360:
+ return _convert_joypad_to_xbox360(path)
+ ControllerSettings.Devices.XBOXONE:
+ return _convert_joypad_to_xboxone(path)
+ ControllerSettings.Devices.XBOXSERIES:
+ return _convert_joypad_to_xboxseries(path)
+ ControllerSettings.Devices.STEAM_DECK:
+ return _convert_joypad_to_steamdeck(path)
+ ControllerSettings.Devices.OUYA:
+ return _convert_joypad_to_ouya(path)
+ _:
+ return ""
+
+func _get_joypad_type(device, fallback, force_controller_icon_style):
+ if force_controller_icon_style != ControllerSettings.Devices.NONE:
+ return force_controller_icon_style
+ var available = Input.get_connected_joypads()
+ if available.is_empty():
+ return fallback
+ # If the requested joypad is not on the connected joypad list, try using the last known connected joypad
+ if not device in available:
+ device = ControllerIcons._last_controller
+ # If that fails too, then use whatever joypad we have connected right now
+ if not device in available:
+ device = available.front()
+
+ var controller_name = Input.get_joy_name(device)
+ if "Luna Controller" in controller_name:
+ return ControllerSettings.Devices.LUNA
+ elif "PS3 Controller" in controller_name:
+ return ControllerSettings.Devices.PS3
+ elif "PS4 Controller" in controller_name or \
+ "DUALSHOCK 4" in controller_name:
+ return ControllerSettings.Devices.PS4
+ elif "PS5 Controller" in controller_name or \
+ "DualSense" in controller_name:
+ return ControllerSettings.Devices.PS5
+ elif "Stadia Controller" in controller_name:
+ return ControllerSettings.Devices.STADIA
+ elif "Steam Controller" in controller_name:
+ return ControllerSettings.Devices.STEAM
+ elif "Switch Controller" in controller_name or \
+ "Switch Pro Controller" in controller_name:
+ return ControllerSettings.Devices.SWITCH
+ elif "Joy-Con" in controller_name:
+ return ControllerSettings.Devices.JOYCON
+ elif "Xbox 360 Controller" in controller_name:
+ return ControllerSettings.Devices.XBOX360
+ elif "Xbox One" in controller_name or \
+ "X-Box One" in controller_name or \
+ "Xbox Wireless Controller" in controller_name:
+ return ControllerSettings.Devices.XBOXONE
+ elif "Xbox Series" in controller_name:
+ return ControllerSettings.Devices.XBOXSERIES
+ elif "Steam Deck" in controller_name or \
+ "Steam Virtual Gamepad" in controller_name:
+ return ControllerSettings.Devices.STEAM_DECK
+ elif "OUYA Controller" in controller_name:
+ return ControllerSettings.Devices.OUYA
+ else:
+ return fallback
+
+func _convert_joypad_to_luna(path: String):
+ path = path.replace("joypad", "luna")
+ match path.substr(path.find("/") + 1):
+ "select":
+ return path.replace("/select", "/circle")
+ "start":
+ return path.replace("/start", "/menu")
+ "share":
+ return path.replace("/share", "/microphone")
+ _:
+ return path
+
+func _convert_joypad_to_playstation(path: String):
+ match path.substr(path.find("/") + 1):
+ "a":
+ return path.replace("/a", "/cross")
+ "b":
+ return path.replace("/b", "/circle")
+ "x":
+ return path.replace("/x", "/square")
+ "y":
+ return path.replace("/y", "/triangle")
+ "lb":
+ return path.replace("/lb", "/l1")
+ "rb":
+ return path.replace("/rb", "/r1")
+ "lt":
+ return path.replace("/lt", "/l2")
+ "rt":
+ return path.replace("/rt", "/r2")
+ _:
+ return path
+
+func _convert_joypad_to_ps3(path: String):
+ return _convert_joypad_to_playstation(path.replace("joypad", "ps3"))
+
+func _convert_joypad_to_ps4(path: String):
+ path = _convert_joypad_to_playstation(path.replace("joypad", "ps4"))
+ match path.substr(path.find("/") + 1):
+ "select":
+ return path.replace("/select", "/share")
+ "start":
+ return path.replace("/start", "/options")
+ "share":
+ return path.replace("/share", "/")
+ _:
+ return path
+
+func _convert_joypad_to_ps5(path: String):
+ path = _convert_joypad_to_playstation(path.replace("joypad", "ps5"))
+ match path.substr(path.find("/") + 1):
+ "select":
+ return path.replace("/select", "/share")
+ "start":
+ return path.replace("/start", "/options")
+ "home":
+ return path.replace("/home", "/assistant")
+ "share":
+ return path.replace("/share", "/microphone")
+ _:
+ return path
+
+func _convert_joypad_to_stadia(path: String):
+ path = path.replace("joypad", "stadia")
+ match path.substr(path.find("/") + 1):
+ "lb":
+ return path.replace("/lb", "/l1")
+ "rb":
+ return path.replace("/rb", "/r1")
+ "lt":
+ return path.replace("/lt", "/l2")
+ "rt":
+ return path.replace("/rt", "/r2")
+ "select":
+ return path.replace("/select", "/dots")
+ "start":
+ return path.replace("/start", "/menu")
+ "share":
+ return path.replace("/share", "/select")
+ _:
+ return path
+
+func _convert_joypad_to_steam(path: String):
+ path = path.replace("joypad", "steam")
+ match path.substr(path.find("/") + 1):
+ "r_stick_click":
+ return path.replace("/r_stick_click", "/right_track_center")
+ "select":
+ return path.replace("/select", "/back")
+ "home":
+ return path.replace("/home", "/system")
+ "dpad":
+ return path.replace("/dpad", "/left_track")
+ "dpad_up":
+ return path.replace("/dpad_up", "/left_track_up")
+ "dpad_down":
+ return path.replace("/dpad_down", "/left_track_down")
+ "dpad_left":
+ return path.replace("/dpad_left", "/left_track_left")
+ "dpad_right":
+ return path.replace("/dpad_right", "/left_track_right")
+ "l_stick":
+ return path.replace("/l_stick", "/stick")
+ "r_stick":
+ return path.replace("/r_stick", "/right_track")
+ _:
+ return path
+
+func _convert_joypad_to_switch(path: String):
+ path = path.replace("joypad", "switch")
+ match path.substr(path.find("/") + 1):
+ "a":
+ return path.replace("/a", "/b")
+ "b":
+ return path.replace("/b", "/a")
+ "x":
+ return path.replace("/x", "/y")
+ "y":
+ return path.replace("/y", "/x")
+ "lb":
+ return path.replace("/lb", "/l")
+ "rb":
+ return path.replace("/rb", "/r")
+ "lt":
+ return path.replace("/lt", "/zl")
+ "rt":
+ return path.replace("/rt", "/zr")
+ "select":
+ return path.replace("/select", "/minus")
+ "start":
+ return path.replace("/start", "/plus")
+ "share":
+ return path.replace("/share", "/square")
+ _:
+ return path
+
+func _convert_joypad_to_joycon(path: String):
+ path = _convert_joypad_to_switch(path)
+ match path.substr(path.find("/") + 1):
+ "dpad_up":
+ return path.replace("/dpad_up", "/up")
+ "dpad_down":
+ return path.replace("/dpad_down", "/down")
+ "dpad_left":
+ return path.replace("/dpad_left", "/left")
+ "dpad_right":
+ return path.replace("/dpad_right", "/right")
+ _:
+ return path
+
+func _convert_joypad_to_xbox360(path: String):
+ path = path.replace("joypad", "xbox360")
+ match path.substr(path.find("/") + 1):
+ "select":
+ return path.replace("/select", "/back")
+ _:
+ return path
+
+func _convert_joypad_to_xbox_modern(path: String):
+ match path.substr(path.find("/") + 1):
+ "select":
+ return path.replace("/select", "/view")
+ "start":
+ return path.replace("/start", "/menu")
+ _:
+ return path
+
+func _convert_joypad_to_xboxone(path: String):
+ return _convert_joypad_to_xbox_modern(path.replace("joypad", "xboxone"))
+
+func _convert_joypad_to_xboxseries(path: String):
+ return _convert_joypad_to_xbox_modern(path.replace("joypad", "xboxseries"))
+
+func _convert_joypad_to_steamdeck(path: String):
+ path = path.replace("joypad", "steamdeck")
+ match path.substr(path.find("/") + 1):
+ "lb":
+ return path.replace("/lb", "/l1")
+ "rb":
+ return path.replace("/rb", "/r1")
+ "lt":
+ return path.replace("/lt", "/l2")
+ "rt":
+ return path.replace("/rt", "/r2")
+ "select":
+ return path.replace("/select", "/inventory")
+ "start":
+ return path.replace("/start", "/menu")
+ "home":
+ return path.replace("/home", "/steam")
+ "share":
+ return path.replace("/share", "/dots")
+ _:
+ return path
+
+func _convert_joypad_to_ouya(path: String):
+ path = path.replace("joypad", "ouya")
+ match path.substr(path.find("/") + 1):
+ "a":
+ return path.replace("/a", "/o")
+ "x":
+ return path.replace("/x", "/u")
+ "b":
+ return path.replace("/b", "/a")
+ "lb":
+ return path.replace("/lb", "/l1")
+ "rb":
+ return path.replace("/rb", "/r1")
+ "lt":
+ return path.replace("/lt", "/l2")
+ "rt":
+ return path.replace("/rt", "/r2")
+ "start":
+ return path.replace("/start", "/menu")
+ "share":
+ return path.replace("/share", "/microphone")
+ _:
+ return path
diff --git a/addons/controller_icons/Mapper.gd.uid b/addons/controller_icons/Mapper.gd.uid
new file mode 100644
index 0000000..d099d0f
--- /dev/null
+++ b/addons/controller_icons/Mapper.gd.uid
@@ -0,0 +1 @@
+uid://b1b43sl3ihyuu
diff --git a/addons/controller_icons/assets/disconnected.png b/addons/controller_icons/assets/disconnected.png
new file mode 100644
index 0000000..6c93def
Binary files /dev/null and b/addons/controller_icons/assets/disconnected.png differ
diff --git a/addons/controller_icons/assets/disconnected.png.import b/addons/controller_icons/assets/disconnected.png.import
new file mode 100644
index 0000000..b535f29
--- /dev/null
+++ b/addons/controller_icons/assets/disconnected.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b5j0idk4yjkkj"
+path="res://.godot/imported/disconnected.png-459773ea7f2a3f5eca9fe5104acb9105.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/disconnected.png"
+dest_files=["res://.godot/imported/disconnected.png-459773ea7f2a3f5eca9fe5104acb9105.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/0.png b/addons/controller_icons/assets/key/0.png
new file mode 100644
index 0000000..ab5408e
Binary files /dev/null and b/addons/controller_icons/assets/key/0.png differ
diff --git a/addons/controller_icons/assets/key/0.png.import b/addons/controller_icons/assets/key/0.png.import
new file mode 100644
index 0000000..0b8d5ad
--- /dev/null
+++ b/addons/controller_icons/assets/key/0.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dhwug5n7wvn8b"
+path="res://.godot/imported/0.png-5e4ef89ebfb88cf2281fb8519eae8326.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/0.png"
+dest_files=["res://.godot/imported/0.png-5e4ef89ebfb88cf2281fb8519eae8326.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/1.png b/addons/controller_icons/assets/key/1.png
new file mode 100644
index 0000000..d88cfd0
Binary files /dev/null and b/addons/controller_icons/assets/key/1.png differ
diff --git a/addons/controller_icons/assets/key/1.png.import b/addons/controller_icons/assets/key/1.png.import
new file mode 100644
index 0000000..21b7e29
--- /dev/null
+++ b/addons/controller_icons/assets/key/1.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cyvt6g1pkcqfo"
+path="res://.godot/imported/1.png-5e93042ff4733b49c5848a419f211dc0.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/1.png"
+dest_files=["res://.godot/imported/1.png-5e93042ff4733b49c5848a419f211dc0.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/2.png b/addons/controller_icons/assets/key/2.png
new file mode 100644
index 0000000..257a0a8
Binary files /dev/null and b/addons/controller_icons/assets/key/2.png differ
diff --git a/addons/controller_icons/assets/key/2.png.import b/addons/controller_icons/assets/key/2.png.import
new file mode 100644
index 0000000..bf4693f
--- /dev/null
+++ b/addons/controller_icons/assets/key/2.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cp0j8cw8o6wvu"
+path="res://.godot/imported/2.png-cc45af4ba1a14d5c701d7eaf772cb60e.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/2.png"
+dest_files=["res://.godot/imported/2.png-cc45af4ba1a14d5c701d7eaf772cb60e.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/3.png b/addons/controller_icons/assets/key/3.png
new file mode 100644
index 0000000..37f01a2
Binary files /dev/null and b/addons/controller_icons/assets/key/3.png differ
diff --git a/addons/controller_icons/assets/key/3.png.import b/addons/controller_icons/assets/key/3.png.import
new file mode 100644
index 0000000..2fdce8b
--- /dev/null
+++ b/addons/controller_icons/assets/key/3.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://tljp3e67878n"
+path="res://.godot/imported/3.png-a28e3d1bcdb601b911e3d5e9aaaece29.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/3.png"
+dest_files=["res://.godot/imported/3.png-a28e3d1bcdb601b911e3d5e9aaaece29.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/4.png b/addons/controller_icons/assets/key/4.png
new file mode 100644
index 0000000..f2ec50e
Binary files /dev/null and b/addons/controller_icons/assets/key/4.png differ
diff --git a/addons/controller_icons/assets/key/4.png.import b/addons/controller_icons/assets/key/4.png.import
new file mode 100644
index 0000000..55d2994
--- /dev/null
+++ b/addons/controller_icons/assets/key/4.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dvv0nf2te2dy8"
+path="res://.godot/imported/4.png-d6e77f4e27328a413d34506751d7e7d8.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/4.png"
+dest_files=["res://.godot/imported/4.png-d6e77f4e27328a413d34506751d7e7d8.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/5.png b/addons/controller_icons/assets/key/5.png
new file mode 100644
index 0000000..4996f90
Binary files /dev/null and b/addons/controller_icons/assets/key/5.png differ
diff --git a/addons/controller_icons/assets/key/5.png.import b/addons/controller_icons/assets/key/5.png.import
new file mode 100644
index 0000000..3f1e5de
--- /dev/null
+++ b/addons/controller_icons/assets/key/5.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://co1b5kuqpipbi"
+path="res://.godot/imported/5.png-e3a211f712f0ba23f0383e633d91b292.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/5.png"
+dest_files=["res://.godot/imported/5.png-e3a211f712f0ba23f0383e633d91b292.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/6.png b/addons/controller_icons/assets/key/6.png
new file mode 100644
index 0000000..7ebf62d
Binary files /dev/null and b/addons/controller_icons/assets/key/6.png differ
diff --git a/addons/controller_icons/assets/key/6.png.import b/addons/controller_icons/assets/key/6.png.import
new file mode 100644
index 0000000..0a22f4c
--- /dev/null
+++ b/addons/controller_icons/assets/key/6.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b2mcylnx72rnc"
+path="res://.godot/imported/6.png-c94a4fdfe4780a6cd266a954fce863aa.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/6.png"
+dest_files=["res://.godot/imported/6.png-c94a4fdfe4780a6cd266a954fce863aa.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/7.png b/addons/controller_icons/assets/key/7.png
new file mode 100644
index 0000000..bae81b4
Binary files /dev/null and b/addons/controller_icons/assets/key/7.png differ
diff --git a/addons/controller_icons/assets/key/7.png.import b/addons/controller_icons/assets/key/7.png.import
new file mode 100644
index 0000000..2927a18
--- /dev/null
+++ b/addons/controller_icons/assets/key/7.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://346orodxqrwr"
+path="res://.godot/imported/7.png-2aed855c8db8718bbf613d3fe15e397f.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/7.png"
+dest_files=["res://.godot/imported/7.png-2aed855c8db8718bbf613d3fe15e397f.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/8.png b/addons/controller_icons/assets/key/8.png
new file mode 100644
index 0000000..4cbf159
Binary files /dev/null and b/addons/controller_icons/assets/key/8.png differ
diff --git a/addons/controller_icons/assets/key/8.png.import b/addons/controller_icons/assets/key/8.png.import
new file mode 100644
index 0000000..2344e0b
--- /dev/null
+++ b/addons/controller_icons/assets/key/8.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bb0namehypd0v"
+path="res://.godot/imported/8.png-7347a4f63d0d4bf8e342c042e8a47b6a.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/8.png"
+dest_files=["res://.godot/imported/8.png-7347a4f63d0d4bf8e342c042e8a47b6a.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/9.png b/addons/controller_icons/assets/key/9.png
new file mode 100644
index 0000000..8da9b01
Binary files /dev/null and b/addons/controller_icons/assets/key/9.png differ
diff --git a/addons/controller_icons/assets/key/9.png.import b/addons/controller_icons/assets/key/9.png.import
new file mode 100644
index 0000000..4229944
--- /dev/null
+++ b/addons/controller_icons/assets/key/9.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b7hs1r61dhf8f"
+path="res://.godot/imported/9.png-92a5ba8724ec75cb0650a7e43ee7de1a.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/9.png"
+dest_files=["res://.godot/imported/9.png-92a5ba8724ec75cb0650a7e43ee7de1a.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/a.png b/addons/controller_icons/assets/key/a.png
new file mode 100644
index 0000000..ba2b1dd
Binary files /dev/null and b/addons/controller_icons/assets/key/a.png differ
diff --git a/addons/controller_icons/assets/key/a.png.import b/addons/controller_icons/assets/key/a.png.import
new file mode 100644
index 0000000..4743886
--- /dev/null
+++ b/addons/controller_icons/assets/key/a.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bptg6u6b4y5no"
+path="res://.godot/imported/a.png-02614b596e2702a221a87d93abcfaa61.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/a.png"
+dest_files=["res://.godot/imported/a.png-02614b596e2702a221a87d93abcfaa61.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/alt.png b/addons/controller_icons/assets/key/alt.png
new file mode 100644
index 0000000..9c0ceb6
Binary files /dev/null and b/addons/controller_icons/assets/key/alt.png differ
diff --git a/addons/controller_icons/assets/key/alt.png.import b/addons/controller_icons/assets/key/alt.png.import
new file mode 100644
index 0000000..47c6ffc
--- /dev/null
+++ b/addons/controller_icons/assets/key/alt.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cpld7e28w4q1e"
+path="res://.godot/imported/alt.png-2955b920d549ecae6d20f5b9d8b28316.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/alt.png"
+dest_files=["res://.godot/imported/alt.png-2955b920d549ecae6d20f5b9d8b28316.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/apostrophe.png b/addons/controller_icons/assets/key/apostrophe.png
new file mode 100644
index 0000000..0dc0827
Binary files /dev/null and b/addons/controller_icons/assets/key/apostrophe.png differ
diff --git a/addons/controller_icons/assets/key/apostrophe.png.import b/addons/controller_icons/assets/key/apostrophe.png.import
new file mode 100644
index 0000000..9f7444a
--- /dev/null
+++ b/addons/controller_icons/assets/key/apostrophe.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://8hets451bgxx"
+path="res://.godot/imported/apostrophe.png-8f8272980f0f51de5195fea6a914a748.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/apostrophe.png"
+dest_files=["res://.godot/imported/apostrophe.png-8f8272980f0f51de5195fea6a914a748.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/arrow_down.png b/addons/controller_icons/assets/key/arrow_down.png
new file mode 100644
index 0000000..9edcf58
Binary files /dev/null and b/addons/controller_icons/assets/key/arrow_down.png differ
diff --git a/addons/controller_icons/assets/key/arrow_down.png.import b/addons/controller_icons/assets/key/arrow_down.png.import
new file mode 100644
index 0000000..fc433f4
--- /dev/null
+++ b/addons/controller_icons/assets/key/arrow_down.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cge2w6yy0r2cx"
+path="res://.godot/imported/arrow_down.png-5893b4e3a78dea022e4220c8b377b562.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/arrow_down.png"
+dest_files=["res://.godot/imported/arrow_down.png-5893b4e3a78dea022e4220c8b377b562.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/arrow_left.png b/addons/controller_icons/assets/key/arrow_left.png
new file mode 100644
index 0000000..3425005
Binary files /dev/null and b/addons/controller_icons/assets/key/arrow_left.png differ
diff --git a/addons/controller_icons/assets/key/arrow_left.png.import b/addons/controller_icons/assets/key/arrow_left.png.import
new file mode 100644
index 0000000..a8f5d28
--- /dev/null
+++ b/addons/controller_icons/assets/key/arrow_left.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://puc614rf26im"
+path="res://.godot/imported/arrow_left.png-47644a17d01cec89c19b183ed0ee3e4f.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/arrow_left.png"
+dest_files=["res://.godot/imported/arrow_left.png-47644a17d01cec89c19b183ed0ee3e4f.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/arrow_right.png b/addons/controller_icons/assets/key/arrow_right.png
new file mode 100644
index 0000000..929cb35
Binary files /dev/null and b/addons/controller_icons/assets/key/arrow_right.png differ
diff --git a/addons/controller_icons/assets/key/arrow_right.png.import b/addons/controller_icons/assets/key/arrow_right.png.import
new file mode 100644
index 0000000..b0242b9
--- /dev/null
+++ b/addons/controller_icons/assets/key/arrow_right.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bbjc54bmpv3f8"
+path="res://.godot/imported/arrow_right.png-d9645066e53f8382133c3d6066489082.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/arrow_right.png"
+dest_files=["res://.godot/imported/arrow_right.png-d9645066e53f8382133c3d6066489082.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=0
diff --git a/addons/controller_icons/assets/key/arrow_up.png b/addons/controller_icons/assets/key/arrow_up.png
new file mode 100644
index 0000000..025a68d
Binary files /dev/null and b/addons/controller_icons/assets/key/arrow_up.png differ
diff --git a/addons/controller_icons/assets/key/arrow_up.png.import b/addons/controller_icons/assets/key/arrow_up.png.import
new file mode 100644
index 0000000..8ae6199
--- /dev/null
+++ b/addons/controller_icons/assets/key/arrow_up.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://d04bqc5v3befo"
+path="res://.godot/imported/arrow_up.png-332906f7ec320f7aacf747e92daffc49.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/arrow_up.png"
+dest_files=["res://.godot/imported/arrow_up.png-332906f7ec320f7aacf747e92daffc49.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/asterisk.png b/addons/controller_icons/assets/key/asterisk.png
new file mode 100644
index 0000000..abcdd9f
Binary files /dev/null and b/addons/controller_icons/assets/key/asterisk.png differ
diff --git a/addons/controller_icons/assets/key/asterisk.png.import b/addons/controller_icons/assets/key/asterisk.png.import
new file mode 100644
index 0000000..25f5dd0
--- /dev/null
+++ b/addons/controller_icons/assets/key/asterisk.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://crg486276l0ie"
+path="res://.godot/imported/asterisk.png-f83bdb0b06735716dc152cef5ad1a65a.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/asterisk.png"
+dest_files=["res://.godot/imported/asterisk.png-f83bdb0b06735716dc152cef5ad1a65a.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/b.png b/addons/controller_icons/assets/key/b.png
new file mode 100644
index 0000000..bb6b3bb
Binary files /dev/null and b/addons/controller_icons/assets/key/b.png differ
diff --git a/addons/controller_icons/assets/key/b.png.import b/addons/controller_icons/assets/key/b.png.import
new file mode 100644
index 0000000..b1b0eae
--- /dev/null
+++ b/addons/controller_icons/assets/key/b.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://canr2drixxw4k"
+path="res://.godot/imported/b.png-85e60076ce4df311fd6ce062c3953570.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/b.png"
+dest_files=["res://.godot/imported/b.png-85e60076ce4df311fd6ce062c3953570.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/backspace.png b/addons/controller_icons/assets/key/backspace.png
new file mode 100644
index 0000000..bd2b56d
Binary files /dev/null and b/addons/controller_icons/assets/key/backspace.png differ
diff --git a/addons/controller_icons/assets/key/backspace.png.import b/addons/controller_icons/assets/key/backspace.png.import
new file mode 100644
index 0000000..41134fb
--- /dev/null
+++ b/addons/controller_icons/assets/key/backspace.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://fm4t6x1nefje"
+path="res://.godot/imported/backspace.png-ca81128ca83f7830c8e33092a92b27bf.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/backspace.png"
+dest_files=["res://.godot/imported/backspace.png-ca81128ca83f7830c8e33092a92b27bf.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/backspace_alt.png b/addons/controller_icons/assets/key/backspace_alt.png
new file mode 100644
index 0000000..be1a758
Binary files /dev/null and b/addons/controller_icons/assets/key/backspace_alt.png differ
diff --git a/addons/controller_icons/assets/key/backspace_alt.png.import b/addons/controller_icons/assets/key/backspace_alt.png.import
new file mode 100644
index 0000000..dcbccba
--- /dev/null
+++ b/addons/controller_icons/assets/key/backspace_alt.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://rhv2hov7acmp"
+path="res://.godot/imported/backspace_alt.png-bc1abf5cd15987380ececb7b4192e96e.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/backspace_alt.png"
+dest_files=["res://.godot/imported/backspace_alt.png-bc1abf5cd15987380ececb7b4192e96e.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/backtick.png b/addons/controller_icons/assets/key/backtick.png
new file mode 100644
index 0000000..f656b50
Binary files /dev/null and b/addons/controller_icons/assets/key/backtick.png differ
diff --git a/addons/controller_icons/assets/key/backtick.png.import b/addons/controller_icons/assets/key/backtick.png.import
new file mode 100644
index 0000000..0e22e66
--- /dev/null
+++ b/addons/controller_icons/assets/key/backtick.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dlknwm7g0tm3s"
+path="res://.godot/imported/backtick.png-7eaa9a9989e965a67c1aedce73c9bf10.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/backtick.png"
+dest_files=["res://.godot/imported/backtick.png-7eaa9a9989e965a67c1aedce73c9bf10.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/bracket_left.png b/addons/controller_icons/assets/key/bracket_left.png
new file mode 100644
index 0000000..8734b86
Binary files /dev/null and b/addons/controller_icons/assets/key/bracket_left.png differ
diff --git a/addons/controller_icons/assets/key/bracket_left.png.import b/addons/controller_icons/assets/key/bracket_left.png.import
new file mode 100644
index 0000000..49c9c85
--- /dev/null
+++ b/addons/controller_icons/assets/key/bracket_left.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cnk0mxv25m1bg"
+path="res://.godot/imported/bracket_left.png-578afec4dd6c472e6a94a57c46997f4d.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/bracket_left.png"
+dest_files=["res://.godot/imported/bracket_left.png-578afec4dd6c472e6a94a57c46997f4d.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/bracket_right.png b/addons/controller_icons/assets/key/bracket_right.png
new file mode 100644
index 0000000..c56aef4
Binary files /dev/null and b/addons/controller_icons/assets/key/bracket_right.png differ
diff --git a/addons/controller_icons/assets/key/bracket_right.png.import b/addons/controller_icons/assets/key/bracket_right.png.import
new file mode 100644
index 0000000..65dd5c6
--- /dev/null
+++ b/addons/controller_icons/assets/key/bracket_right.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cg2bqitp08keh"
+path="res://.godot/imported/bracket_right.png-ba5f88773753e95ae7dc9570a2aff676.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/bracket_right.png"
+dest_files=["res://.godot/imported/bracket_right.png-ba5f88773753e95ae7dc9570a2aff676.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/c.png b/addons/controller_icons/assets/key/c.png
new file mode 100644
index 0000000..005e4ca
Binary files /dev/null and b/addons/controller_icons/assets/key/c.png differ
diff --git a/addons/controller_icons/assets/key/c.png.import b/addons/controller_icons/assets/key/c.png.import
new file mode 100644
index 0000000..e59874d
--- /dev/null
+++ b/addons/controller_icons/assets/key/c.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dvki5kbcq7qow"
+path="res://.godot/imported/c.png-60bc13862a491d6dad69b4db7006689e.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/c.png"
+dest_files=["res://.godot/imported/c.png-60bc13862a491d6dad69b4db7006689e.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/caps_lock.png b/addons/controller_icons/assets/key/caps_lock.png
new file mode 100644
index 0000000..de5adb8
Binary files /dev/null and b/addons/controller_icons/assets/key/caps_lock.png differ
diff --git a/addons/controller_icons/assets/key/caps_lock.png.import b/addons/controller_icons/assets/key/caps_lock.png.import
new file mode 100644
index 0000000..1a8e378
--- /dev/null
+++ b/addons/controller_icons/assets/key/caps_lock.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bmu1dyma2ia1w"
+path="res://.godot/imported/caps_lock.png-68be22558ed98886d7f0c42175a4f042.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/caps_lock.png"
+dest_files=["res://.godot/imported/caps_lock.png-68be22558ed98886d7f0c42175a4f042.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/comma.png b/addons/controller_icons/assets/key/comma.png
new file mode 100644
index 0000000..18be905
Binary files /dev/null and b/addons/controller_icons/assets/key/comma.png differ
diff --git a/addons/controller_icons/assets/key/comma.png.import b/addons/controller_icons/assets/key/comma.png.import
new file mode 100644
index 0000000..e4e880c
--- /dev/null
+++ b/addons/controller_icons/assets/key/comma.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cvdspc7muffjb"
+path="res://.godot/imported/comma.png-c6a5b4ddb60c3aa4cfc77e26999940ed.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/comma.png"
+dest_files=["res://.godot/imported/comma.png-c6a5b4ddb60c3aa4cfc77e26999940ed.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/command.png b/addons/controller_icons/assets/key/command.png
new file mode 100644
index 0000000..22dfd60
Binary files /dev/null and b/addons/controller_icons/assets/key/command.png differ
diff --git a/addons/controller_icons/assets/key/command.png.import b/addons/controller_icons/assets/key/command.png.import
new file mode 100644
index 0000000..faeb0f0
--- /dev/null
+++ b/addons/controller_icons/assets/key/command.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c75c1nu5vft30"
+path="res://.godot/imported/command.png-64157e5f681303ae47d5fdbb6501706d.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/command.png"
+dest_files=["res://.godot/imported/command.png-64157e5f681303ae47d5fdbb6501706d.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/ctrl.png b/addons/controller_icons/assets/key/ctrl.png
new file mode 100644
index 0000000..12456bd
Binary files /dev/null and b/addons/controller_icons/assets/key/ctrl.png differ
diff --git a/addons/controller_icons/assets/key/ctrl.png.import b/addons/controller_icons/assets/key/ctrl.png.import
new file mode 100644
index 0000000..ad95959
--- /dev/null
+++ b/addons/controller_icons/assets/key/ctrl.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dxcfr4bhfw4lq"
+path="res://.godot/imported/ctrl.png-482169e05fd7989d866aa04e18ed3455.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/ctrl.png"
+dest_files=["res://.godot/imported/ctrl.png-482169e05fd7989d866aa04e18ed3455.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/d.png b/addons/controller_icons/assets/key/d.png
new file mode 100644
index 0000000..cfd36f2
Binary files /dev/null and b/addons/controller_icons/assets/key/d.png differ
diff --git a/addons/controller_icons/assets/key/d.png.import b/addons/controller_icons/assets/key/d.png.import
new file mode 100644
index 0000000..c245d50
--- /dev/null
+++ b/addons/controller_icons/assets/key/d.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dlwamiuq1f5t6"
+path="res://.godot/imported/d.png-b7721e67decc380fd57e07ee56e53953.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/d.png"
+dest_files=["res://.godot/imported/d.png-b7721e67decc380fd57e07ee56e53953.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/del.png b/addons/controller_icons/assets/key/del.png
new file mode 100644
index 0000000..87bd830
Binary files /dev/null and b/addons/controller_icons/assets/key/del.png differ
diff --git a/addons/controller_icons/assets/key/del.png.import b/addons/controller_icons/assets/key/del.png.import
new file mode 100644
index 0000000..c9db56d
--- /dev/null
+++ b/addons/controller_icons/assets/key/del.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dp71lwv4vjptf"
+path="res://.godot/imported/del.png-8ab1be2a4136e8f1ae7ec54f3a75f012.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/del.png"
+dest_files=["res://.godot/imported/del.png-8ab1be2a4136e8f1ae7ec54f3a75f012.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/e.png b/addons/controller_icons/assets/key/e.png
new file mode 100644
index 0000000..34b7be1
Binary files /dev/null and b/addons/controller_icons/assets/key/e.png differ
diff --git a/addons/controller_icons/assets/key/e.png.import b/addons/controller_icons/assets/key/e.png.import
new file mode 100644
index 0000000..45b1dbd
--- /dev/null
+++ b/addons/controller_icons/assets/key/e.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://xe4n818le3p8"
+path="res://.godot/imported/e.png-7ec0ba2ffb631b8cc6de42153f818779.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/e.png"
+dest_files=["res://.godot/imported/e.png-7ec0ba2ffb631b8cc6de42153f818779.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/end.png b/addons/controller_icons/assets/key/end.png
new file mode 100644
index 0000000..2d6211c
Binary files /dev/null and b/addons/controller_icons/assets/key/end.png differ
diff --git a/addons/controller_icons/assets/key/end.png.import b/addons/controller_icons/assets/key/end.png.import
new file mode 100644
index 0000000..229803b
--- /dev/null
+++ b/addons/controller_icons/assets/key/end.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dd57lxd8nftr4"
+path="res://.godot/imported/end.png-19998f1c73319c0913db009ea41299f1.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/end.png"
+dest_files=["res://.godot/imported/end.png-19998f1c73319c0913db009ea41299f1.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/enter.png b/addons/controller_icons/assets/key/enter.png
new file mode 100644
index 0000000..1f144f5
Binary files /dev/null and b/addons/controller_icons/assets/key/enter.png differ
diff --git a/addons/controller_icons/assets/key/enter.png.import b/addons/controller_icons/assets/key/enter.png.import
new file mode 100644
index 0000000..3f497ea
--- /dev/null
+++ b/addons/controller_icons/assets/key/enter.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dtgju2qbvxhqp"
+path="res://.godot/imported/enter.png-d374047b990a0250a56e873b383a8b15.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/enter.png"
+dest_files=["res://.godot/imported/enter.png-d374047b990a0250a56e873b383a8b15.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/enter_alt.png b/addons/controller_icons/assets/key/enter_alt.png
new file mode 100644
index 0000000..5493293
Binary files /dev/null and b/addons/controller_icons/assets/key/enter_alt.png differ
diff --git a/addons/controller_icons/assets/key/enter_alt.png.import b/addons/controller_icons/assets/key/enter_alt.png.import
new file mode 100644
index 0000000..505b66f
--- /dev/null
+++ b/addons/controller_icons/assets/key/enter_alt.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bp58drjdgvxsi"
+path="res://.godot/imported/enter_alt.png-15ea435f9aa8699e8752649d5707d3f9.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/enter_alt.png"
+dest_files=["res://.godot/imported/enter_alt.png-15ea435f9aa8699e8752649d5707d3f9.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/enter_tall.png b/addons/controller_icons/assets/key/enter_tall.png
new file mode 100644
index 0000000..de3abde
Binary files /dev/null and b/addons/controller_icons/assets/key/enter_tall.png differ
diff --git a/addons/controller_icons/assets/key/enter_tall.png.import b/addons/controller_icons/assets/key/enter_tall.png.import
new file mode 100644
index 0000000..e6824c2
--- /dev/null
+++ b/addons/controller_icons/assets/key/enter_tall.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c5bw0xq3n6elx"
+path="res://.godot/imported/enter_tall.png-9ea4821e424a6eb74b209466a47a0362.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/enter_tall.png"
+dest_files=["res://.godot/imported/enter_tall.png-9ea4821e424a6eb74b209466a47a0362.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/equals.png b/addons/controller_icons/assets/key/equals.png
new file mode 100644
index 0000000..5e9ed38
Binary files /dev/null and b/addons/controller_icons/assets/key/equals.png differ
diff --git a/addons/controller_icons/assets/key/equals.png.import b/addons/controller_icons/assets/key/equals.png.import
new file mode 100644
index 0000000..687d734
--- /dev/null
+++ b/addons/controller_icons/assets/key/equals.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://mkessp4iud6i"
+path="res://.godot/imported/equals.png-a0481e5eb9f7e8a2bd77af0d53ce5458.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/equals.png"
+dest_files=["res://.godot/imported/equals.png-a0481e5eb9f7e8a2bd77af0d53ce5458.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/esc.png b/addons/controller_icons/assets/key/esc.png
new file mode 100644
index 0000000..c363cdc
Binary files /dev/null and b/addons/controller_icons/assets/key/esc.png differ
diff --git a/addons/controller_icons/assets/key/esc.png.import b/addons/controller_icons/assets/key/esc.png.import
new file mode 100644
index 0000000..b7657b9
--- /dev/null
+++ b/addons/controller_icons/assets/key/esc.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cnghdqiitl0fu"
+path="res://.godot/imported/esc.png-4b899d8648d525a54c45ed98a86ba3b4.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/esc.png"
+dest_files=["res://.godot/imported/esc.png-4b899d8648d525a54c45ed98a86ba3b4.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/f.png b/addons/controller_icons/assets/key/f.png
new file mode 100644
index 0000000..0781a72
Binary files /dev/null and b/addons/controller_icons/assets/key/f.png differ
diff --git a/addons/controller_icons/assets/key/f.png.import b/addons/controller_icons/assets/key/f.png.import
new file mode 100644
index 0000000..fad380d
--- /dev/null
+++ b/addons/controller_icons/assets/key/f.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://broeuieppu0ni"
+path="res://.godot/imported/f.png-4d9e36eeb537558291e4f3b623effc03.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/f.png"
+dest_files=["res://.godot/imported/f.png-4d9e36eeb537558291e4f3b623effc03.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/f1.png b/addons/controller_icons/assets/key/f1.png
new file mode 100644
index 0000000..fc5865a
Binary files /dev/null and b/addons/controller_icons/assets/key/f1.png differ
diff --git a/addons/controller_icons/assets/key/f1.png.import b/addons/controller_icons/assets/key/f1.png.import
new file mode 100644
index 0000000..d1a2755
--- /dev/null
+++ b/addons/controller_icons/assets/key/f1.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b8no45t86rrn6"
+path="res://.godot/imported/f1.png-8f613f4af184fa81387a386622247ed5.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/f1.png"
+dest_files=["res://.godot/imported/f1.png-8f613f4af184fa81387a386622247ed5.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/f10.png b/addons/controller_icons/assets/key/f10.png
new file mode 100644
index 0000000..17339fe
Binary files /dev/null and b/addons/controller_icons/assets/key/f10.png differ
diff --git a/addons/controller_icons/assets/key/f10.png.import b/addons/controller_icons/assets/key/f10.png.import
new file mode 100644
index 0000000..cee2a48
--- /dev/null
+++ b/addons/controller_icons/assets/key/f10.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b76mxxjlj888w"
+path="res://.godot/imported/f10.png-b1122098f3284856b04da935979c6ee0.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/f10.png"
+dest_files=["res://.godot/imported/f10.png-b1122098f3284856b04da935979c6ee0.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/f11.png b/addons/controller_icons/assets/key/f11.png
new file mode 100644
index 0000000..18001d0
Binary files /dev/null and b/addons/controller_icons/assets/key/f11.png differ
diff --git a/addons/controller_icons/assets/key/f11.png.import b/addons/controller_icons/assets/key/f11.png.import
new file mode 100644
index 0000000..ecd54c0
--- /dev/null
+++ b/addons/controller_icons/assets/key/f11.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ddrasm5hfo84n"
+path="res://.godot/imported/f11.png-4f8e9e1e7a5b11b030ecefea00294062.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/f11.png"
+dest_files=["res://.godot/imported/f11.png-4f8e9e1e7a5b11b030ecefea00294062.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/f12.png b/addons/controller_icons/assets/key/f12.png
new file mode 100644
index 0000000..a18bb74
Binary files /dev/null and b/addons/controller_icons/assets/key/f12.png differ
diff --git a/addons/controller_icons/assets/key/f12.png.import b/addons/controller_icons/assets/key/f12.png.import
new file mode 100644
index 0000000..08145a2
--- /dev/null
+++ b/addons/controller_icons/assets/key/f12.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://x4212bmj350w"
+path="res://.godot/imported/f12.png-bcb2c9ea989874bc6203645641457c2a.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/f12.png"
+dest_files=["res://.godot/imported/f12.png-bcb2c9ea989874bc6203645641457c2a.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/f2.png b/addons/controller_icons/assets/key/f2.png
new file mode 100644
index 0000000..ffceae5
Binary files /dev/null and b/addons/controller_icons/assets/key/f2.png differ
diff --git a/addons/controller_icons/assets/key/f2.png.import b/addons/controller_icons/assets/key/f2.png.import
new file mode 100644
index 0000000..1e68efa
--- /dev/null
+++ b/addons/controller_icons/assets/key/f2.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cebpb6c42ooem"
+path="res://.godot/imported/f2.png-853f8d196971146dfe734d15d6a82681.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/f2.png"
+dest_files=["res://.godot/imported/f2.png-853f8d196971146dfe734d15d6a82681.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/f3.png b/addons/controller_icons/assets/key/f3.png
new file mode 100644
index 0000000..c49d840
Binary files /dev/null and b/addons/controller_icons/assets/key/f3.png differ
diff --git a/addons/controller_icons/assets/key/f3.png.import b/addons/controller_icons/assets/key/f3.png.import
new file mode 100644
index 0000000..5c7e36c
--- /dev/null
+++ b/addons/controller_icons/assets/key/f3.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://utdnqoybksrx"
+path="res://.godot/imported/f3.png-affa1c0616438ee1071023d1606aafe9.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/f3.png"
+dest_files=["res://.godot/imported/f3.png-affa1c0616438ee1071023d1606aafe9.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/f4.png b/addons/controller_icons/assets/key/f4.png
new file mode 100644
index 0000000..c09acb2
Binary files /dev/null and b/addons/controller_icons/assets/key/f4.png differ
diff --git a/addons/controller_icons/assets/key/f4.png.import b/addons/controller_icons/assets/key/f4.png.import
new file mode 100644
index 0000000..3090390
--- /dev/null
+++ b/addons/controller_icons/assets/key/f4.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://buv6pfavbw8ev"
+path="res://.godot/imported/f4.png-59ce134d8791cdbcd742e6d39d376ba1.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/f4.png"
+dest_files=["res://.godot/imported/f4.png-59ce134d8791cdbcd742e6d39d376ba1.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/f5.png b/addons/controller_icons/assets/key/f5.png
new file mode 100644
index 0000000..c304fd0
Binary files /dev/null and b/addons/controller_icons/assets/key/f5.png differ
diff --git a/addons/controller_icons/assets/key/f5.png.import b/addons/controller_icons/assets/key/f5.png.import
new file mode 100644
index 0000000..34aaaec
--- /dev/null
+++ b/addons/controller_icons/assets/key/f5.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c4sj5uyseavix"
+path="res://.godot/imported/f5.png-8883dd1dee9b3466e722aa195bfbde96.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/f5.png"
+dest_files=["res://.godot/imported/f5.png-8883dd1dee9b3466e722aa195bfbde96.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/f6.png b/addons/controller_icons/assets/key/f6.png
new file mode 100644
index 0000000..bc3f31c
Binary files /dev/null and b/addons/controller_icons/assets/key/f6.png differ
diff --git a/addons/controller_icons/assets/key/f6.png.import b/addons/controller_icons/assets/key/f6.png.import
new file mode 100644
index 0000000..09afaa2
--- /dev/null
+++ b/addons/controller_icons/assets/key/f6.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://des6ow7uojf1t"
+path="res://.godot/imported/f6.png-8151a1ab4564149919426cd89b55aef6.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/f6.png"
+dest_files=["res://.godot/imported/f6.png-8151a1ab4564149919426cd89b55aef6.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/f7.png b/addons/controller_icons/assets/key/f7.png
new file mode 100644
index 0000000..2c28dc0
Binary files /dev/null and b/addons/controller_icons/assets/key/f7.png differ
diff --git a/addons/controller_icons/assets/key/f7.png.import b/addons/controller_icons/assets/key/f7.png.import
new file mode 100644
index 0000000..286e724
--- /dev/null
+++ b/addons/controller_icons/assets/key/f7.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dvrmkpuh2nx0m"
+path="res://.godot/imported/f7.png-03adff059dfd886a088628e7d7209813.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/f7.png"
+dest_files=["res://.godot/imported/f7.png-03adff059dfd886a088628e7d7209813.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/f8.png b/addons/controller_icons/assets/key/f8.png
new file mode 100644
index 0000000..6c09529
Binary files /dev/null and b/addons/controller_icons/assets/key/f8.png differ
diff --git a/addons/controller_icons/assets/key/f8.png.import b/addons/controller_icons/assets/key/f8.png.import
new file mode 100644
index 0000000..4692fee
--- /dev/null
+++ b/addons/controller_icons/assets/key/f8.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://32dhrb00iift"
+path="res://.godot/imported/f8.png-563ec719a0666065208473a70115781f.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/f8.png"
+dest_files=["res://.godot/imported/f8.png-563ec719a0666065208473a70115781f.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/f9.png b/addons/controller_icons/assets/key/f9.png
new file mode 100644
index 0000000..0b67e2b
Binary files /dev/null and b/addons/controller_icons/assets/key/f9.png differ
diff --git a/addons/controller_icons/assets/key/f9.png.import b/addons/controller_icons/assets/key/f9.png.import
new file mode 100644
index 0000000..c4e5588
--- /dev/null
+++ b/addons/controller_icons/assets/key/f9.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://csk17ja7f6bm0"
+path="res://.godot/imported/f9.png-943e76712f8473b1183d5a8d345f1913.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/f9.png"
+dest_files=["res://.godot/imported/f9.png-943e76712f8473b1183d5a8d345f1913.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/forward_slash.png b/addons/controller_icons/assets/key/forward_slash.png
new file mode 100644
index 0000000..3e7d6fb
Binary files /dev/null and b/addons/controller_icons/assets/key/forward_slash.png differ
diff --git a/addons/controller_icons/assets/key/forward_slash.png.import b/addons/controller_icons/assets/key/forward_slash.png.import
new file mode 100644
index 0000000..56274ac
--- /dev/null
+++ b/addons/controller_icons/assets/key/forward_slash.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://d31fqst2pxdni"
+path="res://.godot/imported/forward_slash.png-bdc3946991216f01ca3e8ccb138c731b.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/forward_slash.png"
+dest_files=["res://.godot/imported/forward_slash.png-bdc3946991216f01ca3e8ccb138c731b.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/g.png b/addons/controller_icons/assets/key/g.png
new file mode 100644
index 0000000..79ffcd2
Binary files /dev/null and b/addons/controller_icons/assets/key/g.png differ
diff --git a/addons/controller_icons/assets/key/g.png.import b/addons/controller_icons/assets/key/g.png.import
new file mode 100644
index 0000000..1c87ac4
--- /dev/null
+++ b/addons/controller_icons/assets/key/g.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://xlplkwxxoohb"
+path="res://.godot/imported/g.png-14572568f63a7b23681641a02c662d04.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/g.png"
+dest_files=["res://.godot/imported/g.png-14572568f63a7b23681641a02c662d04.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/h.png b/addons/controller_icons/assets/key/h.png
new file mode 100644
index 0000000..00a4fe4
Binary files /dev/null and b/addons/controller_icons/assets/key/h.png differ
diff --git a/addons/controller_icons/assets/key/h.png.import b/addons/controller_icons/assets/key/h.png.import
new file mode 100644
index 0000000..26f41d1
--- /dev/null
+++ b/addons/controller_icons/assets/key/h.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://d3q6bvxmx7d2y"
+path="res://.godot/imported/h.png-cbfda01b136945b4d87b24e91d9912d6.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/h.png"
+dest_files=["res://.godot/imported/h.png-cbfda01b136945b4d87b24e91d9912d6.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/home.png b/addons/controller_icons/assets/key/home.png
new file mode 100644
index 0000000..10ba170
Binary files /dev/null and b/addons/controller_icons/assets/key/home.png differ
diff --git a/addons/controller_icons/assets/key/home.png.import b/addons/controller_icons/assets/key/home.png.import
new file mode 100644
index 0000000..2efb5c6
--- /dev/null
+++ b/addons/controller_icons/assets/key/home.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bs3duwxywhkf4"
+path="res://.godot/imported/home.png-f1a63dcfd71b977a2003e8d0d2c3ba4d.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/home.png"
+dest_files=["res://.godot/imported/home.png-f1a63dcfd71b977a2003e8d0d2c3ba4d.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/i.png b/addons/controller_icons/assets/key/i.png
new file mode 100644
index 0000000..de8f252
Binary files /dev/null and b/addons/controller_icons/assets/key/i.png differ
diff --git a/addons/controller_icons/assets/key/i.png.import b/addons/controller_icons/assets/key/i.png.import
new file mode 100644
index 0000000..1da26e8
--- /dev/null
+++ b/addons/controller_icons/assets/key/i.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cqd0jlt3rtk1"
+path="res://.godot/imported/i.png-7ea3745b1b8fbcbe2692879f2fe4be85.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/i.png"
+dest_files=["res://.godot/imported/i.png-7ea3745b1b8fbcbe2692879f2fe4be85.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/insert.png b/addons/controller_icons/assets/key/insert.png
new file mode 100644
index 0000000..d0ae4d5
Binary files /dev/null and b/addons/controller_icons/assets/key/insert.png differ
diff --git a/addons/controller_icons/assets/key/insert.png.import b/addons/controller_icons/assets/key/insert.png.import
new file mode 100644
index 0000000..44b57b4
--- /dev/null
+++ b/addons/controller_icons/assets/key/insert.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://rsb32fggq73q"
+path="res://.godot/imported/insert.png-c636ec6f7ebb7021fe33df113831b3af.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/insert.png"
+dest_files=["res://.godot/imported/insert.png-c636ec6f7ebb7021fe33df113831b3af.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/j.png b/addons/controller_icons/assets/key/j.png
new file mode 100644
index 0000000..947b5eb
Binary files /dev/null and b/addons/controller_icons/assets/key/j.png differ
diff --git a/addons/controller_icons/assets/key/j.png.import b/addons/controller_icons/assets/key/j.png.import
new file mode 100644
index 0000000..b7ebac7
--- /dev/null
+++ b/addons/controller_icons/assets/key/j.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://btxmq4pjv74u2"
+path="res://.godot/imported/j.png-78fde95f9bb9cd69a6d1e8138358ce33.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/j.png"
+dest_files=["res://.godot/imported/j.png-78fde95f9bb9cd69a6d1e8138358ce33.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/k.png b/addons/controller_icons/assets/key/k.png
new file mode 100644
index 0000000..2ca24bd
Binary files /dev/null and b/addons/controller_icons/assets/key/k.png differ
diff --git a/addons/controller_icons/assets/key/k.png.import b/addons/controller_icons/assets/key/k.png.import
new file mode 100644
index 0000000..be4f0f6
--- /dev/null
+++ b/addons/controller_icons/assets/key/k.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bwrnqsbonca4k"
+path="res://.godot/imported/k.png-bfe3441a49bc1e9efad9a20088127d99.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/k.png"
+dest_files=["res://.godot/imported/k.png-bfe3441a49bc1e9efad9a20088127d99.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/l.png b/addons/controller_icons/assets/key/l.png
new file mode 100644
index 0000000..725c878
Binary files /dev/null and b/addons/controller_icons/assets/key/l.png differ
diff --git a/addons/controller_icons/assets/key/l.png.import b/addons/controller_icons/assets/key/l.png.import
new file mode 100644
index 0000000..d4a9123
--- /dev/null
+++ b/addons/controller_icons/assets/key/l.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://br8kxbo504vtr"
+path="res://.godot/imported/l.png-e5c72a0134479c7f082bb92ed54e319c.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/l.png"
+dest_files=["res://.godot/imported/l.png-e5c72a0134479c7f082bb92ed54e319c.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/m.png b/addons/controller_icons/assets/key/m.png
new file mode 100644
index 0000000..4477153
Binary files /dev/null and b/addons/controller_icons/assets/key/m.png differ
diff --git a/addons/controller_icons/assets/key/m.png.import b/addons/controller_icons/assets/key/m.png.import
new file mode 100644
index 0000000..f5df837
--- /dev/null
+++ b/addons/controller_icons/assets/key/m.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://w0ybnkclhpu5"
+path="res://.godot/imported/m.png-87b633c83926fbc3c83ab6d55dda9b7c.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/m.png"
+dest_files=["res://.godot/imported/m.png-87b633c83926fbc3c83ab6d55dda9b7c.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/mark_left.png b/addons/controller_icons/assets/key/mark_left.png
new file mode 100644
index 0000000..a5e48ce
Binary files /dev/null and b/addons/controller_icons/assets/key/mark_left.png differ
diff --git a/addons/controller_icons/assets/key/mark_left.png.import b/addons/controller_icons/assets/key/mark_left.png.import
new file mode 100644
index 0000000..853372d
--- /dev/null
+++ b/addons/controller_icons/assets/key/mark_left.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://de3wkpkd80oiq"
+path="res://.godot/imported/mark_left.png-26150e1291ba06a3d79018bd042eae02.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/mark_left.png"
+dest_files=["res://.godot/imported/mark_left.png-26150e1291ba06a3d79018bd042eae02.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/mark_right.png b/addons/controller_icons/assets/key/mark_right.png
new file mode 100644
index 0000000..d418e77
Binary files /dev/null and b/addons/controller_icons/assets/key/mark_right.png differ
diff --git a/addons/controller_icons/assets/key/mark_right.png.import b/addons/controller_icons/assets/key/mark_right.png.import
new file mode 100644
index 0000000..c00e748
--- /dev/null
+++ b/addons/controller_icons/assets/key/mark_right.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cs8g8q67x4f6e"
+path="res://.godot/imported/mark_right.png-af2191a926d5a5d9ee64916803ae839e.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/mark_right.png"
+dest_files=["res://.godot/imported/mark_right.png-af2191a926d5a5d9ee64916803ae839e.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/minus.png b/addons/controller_icons/assets/key/minus.png
new file mode 100644
index 0000000..1e6dcf7
Binary files /dev/null and b/addons/controller_icons/assets/key/minus.png differ
diff --git a/addons/controller_icons/assets/key/minus.png.import b/addons/controller_icons/assets/key/minus.png.import
new file mode 100644
index 0000000..5521274
--- /dev/null
+++ b/addons/controller_icons/assets/key/minus.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c8m15mffx0x8y"
+path="res://.godot/imported/minus.png-e9b3cb97f54fc23d867874d64c5aebe3.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/minus.png"
+dest_files=["res://.godot/imported/minus.png-e9b3cb97f54fc23d867874d64c5aebe3.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/n.png b/addons/controller_icons/assets/key/n.png
new file mode 100644
index 0000000..689e2f6
Binary files /dev/null and b/addons/controller_icons/assets/key/n.png differ
diff --git a/addons/controller_icons/assets/key/n.png.import b/addons/controller_icons/assets/key/n.png.import
new file mode 100644
index 0000000..eb32115
--- /dev/null
+++ b/addons/controller_icons/assets/key/n.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://qm08rt7v0jmi"
+path="res://.godot/imported/n.png-2b143bdd3bfea413b560d4f610f909c9.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/n.png"
+dest_files=["res://.godot/imported/n.png-2b143bdd3bfea413b560d4f610f909c9.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/num_lock.png b/addons/controller_icons/assets/key/num_lock.png
new file mode 100644
index 0000000..2808f91
Binary files /dev/null and b/addons/controller_icons/assets/key/num_lock.png differ
diff --git a/addons/controller_icons/assets/key/num_lock.png.import b/addons/controller_icons/assets/key/num_lock.png.import
new file mode 100644
index 0000000..ae2bb43
--- /dev/null
+++ b/addons/controller_icons/assets/key/num_lock.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bap23yu4qfl3y"
+path="res://.godot/imported/num_lock.png-e2af79f4edd04e9ecf785f370befb814.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/num_lock.png"
+dest_files=["res://.godot/imported/num_lock.png-e2af79f4edd04e9ecf785f370befb814.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/o.png b/addons/controller_icons/assets/key/o.png
new file mode 100644
index 0000000..b703ceb
Binary files /dev/null and b/addons/controller_icons/assets/key/o.png differ
diff --git a/addons/controller_icons/assets/key/o.png.import b/addons/controller_icons/assets/key/o.png.import
new file mode 100644
index 0000000..54a8f6a
--- /dev/null
+++ b/addons/controller_icons/assets/key/o.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ra467stypt61"
+path="res://.godot/imported/o.png-ebca633629770ba1e7a8ef37bcc47d6e.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/o.png"
+dest_files=["res://.godot/imported/o.png-ebca633629770ba1e7a8ef37bcc47d6e.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/p.png b/addons/controller_icons/assets/key/p.png
new file mode 100644
index 0000000..13e8393
Binary files /dev/null and b/addons/controller_icons/assets/key/p.png differ
diff --git a/addons/controller_icons/assets/key/p.png.import b/addons/controller_icons/assets/key/p.png.import
new file mode 100644
index 0000000..2e4da8c
--- /dev/null
+++ b/addons/controller_icons/assets/key/p.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c8t6nj5nejist"
+path="res://.godot/imported/p.png-fe6d5088b82cf26ee9105323c97e8ec0.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/p.png"
+dest_files=["res://.godot/imported/p.png-fe6d5088b82cf26ee9105323c97e8ec0.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/page_down.png b/addons/controller_icons/assets/key/page_down.png
new file mode 100644
index 0000000..ace123f
Binary files /dev/null and b/addons/controller_icons/assets/key/page_down.png differ
diff --git a/addons/controller_icons/assets/key/page_down.png.import b/addons/controller_icons/assets/key/page_down.png.import
new file mode 100644
index 0000000..0b0c7c6
--- /dev/null
+++ b/addons/controller_icons/assets/key/page_down.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://botm3vxwit80t"
+path="res://.godot/imported/page_down.png-cf932ce22919c18cd1203d44da339505.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/page_down.png"
+dest_files=["res://.godot/imported/page_down.png-cf932ce22919c18cd1203d44da339505.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/page_up.png b/addons/controller_icons/assets/key/page_up.png
new file mode 100644
index 0000000..da15112
Binary files /dev/null and b/addons/controller_icons/assets/key/page_up.png differ
diff --git a/addons/controller_icons/assets/key/page_up.png.import b/addons/controller_icons/assets/key/page_up.png.import
new file mode 100644
index 0000000..20903e6
--- /dev/null
+++ b/addons/controller_icons/assets/key/page_up.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cj2ilh60ajvub"
+path="res://.godot/imported/page_up.png-24127511132eb2a47c0eda7f032beade.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/page_up.png"
+dest_files=["res://.godot/imported/page_up.png-24127511132eb2a47c0eda7f032beade.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/period.png b/addons/controller_icons/assets/key/period.png
new file mode 100644
index 0000000..d3e69fa
Binary files /dev/null and b/addons/controller_icons/assets/key/period.png differ
diff --git a/addons/controller_icons/assets/key/period.png.import b/addons/controller_icons/assets/key/period.png.import
new file mode 100644
index 0000000..c02d9d2
--- /dev/null
+++ b/addons/controller_icons/assets/key/period.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cf4h5grqhfkd8"
+path="res://.godot/imported/period.png-a4d8f2843696679bb3e87882c95b0d90.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/period.png"
+dest_files=["res://.godot/imported/period.png-a4d8f2843696679bb3e87882c95b0d90.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/plus.png b/addons/controller_icons/assets/key/plus.png
new file mode 100644
index 0000000..ebc1035
Binary files /dev/null and b/addons/controller_icons/assets/key/plus.png differ
diff --git a/addons/controller_icons/assets/key/plus.png.import b/addons/controller_icons/assets/key/plus.png.import
new file mode 100644
index 0000000..67fa31c
--- /dev/null
+++ b/addons/controller_icons/assets/key/plus.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bxaaydvnqqa8f"
+path="res://.godot/imported/plus.png-af02dd6f0e49f31f9b9ba7915608f44c.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/plus.png"
+dest_files=["res://.godot/imported/plus.png-af02dd6f0e49f31f9b9ba7915608f44c.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/plus_tall.png b/addons/controller_icons/assets/key/plus_tall.png
new file mode 100644
index 0000000..3049116
Binary files /dev/null and b/addons/controller_icons/assets/key/plus_tall.png differ
diff --git a/addons/controller_icons/assets/key/plus_tall.png.import b/addons/controller_icons/assets/key/plus_tall.png.import
new file mode 100644
index 0000000..45ad64b
--- /dev/null
+++ b/addons/controller_icons/assets/key/plus_tall.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b26nqf60p0su0"
+path="res://.godot/imported/plus_tall.png-6963791cb2dd22492727106e4908d21c.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/plus_tall.png"
+dest_files=["res://.godot/imported/plus_tall.png-6963791cb2dd22492727106e4908d21c.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/print_screen.png b/addons/controller_icons/assets/key/print_screen.png
new file mode 100644
index 0000000..88ad617
Binary files /dev/null and b/addons/controller_icons/assets/key/print_screen.png differ
diff --git a/addons/controller_icons/assets/key/print_screen.png.import b/addons/controller_icons/assets/key/print_screen.png.import
new file mode 100644
index 0000000..398c741
--- /dev/null
+++ b/addons/controller_icons/assets/key/print_screen.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://evou4c7efg2q"
+path="res://.godot/imported/print_screen.png-a5f3288be910635fd592c6f24c4f0a0f.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/print_screen.png"
+dest_files=["res://.godot/imported/print_screen.png-a5f3288be910635fd592c6f24c4f0a0f.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/q.png b/addons/controller_icons/assets/key/q.png
new file mode 100644
index 0000000..fe8add9
Binary files /dev/null and b/addons/controller_icons/assets/key/q.png differ
diff --git a/addons/controller_icons/assets/key/q.png.import b/addons/controller_icons/assets/key/q.png.import
new file mode 100644
index 0000000..2c321f5
--- /dev/null
+++ b/addons/controller_icons/assets/key/q.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dim5mk7g4q043"
+path="res://.godot/imported/q.png-6ef53dece2e535e76ac4b6715c53b010.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/q.png"
+dest_files=["res://.godot/imported/q.png-6ef53dece2e535e76ac4b6715c53b010.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/question.png b/addons/controller_icons/assets/key/question.png
new file mode 100644
index 0000000..d32683c
Binary files /dev/null and b/addons/controller_icons/assets/key/question.png differ
diff --git a/addons/controller_icons/assets/key/question.png.import b/addons/controller_icons/assets/key/question.png.import
new file mode 100644
index 0000000..68144e3
--- /dev/null
+++ b/addons/controller_icons/assets/key/question.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cvltbdf4w1x4p"
+path="res://.godot/imported/question.png-047f35398fc0d584a0c0d57bc94857a9.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/question.png"
+dest_files=["res://.godot/imported/question.png-047f35398fc0d584a0c0d57bc94857a9.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/quote.png b/addons/controller_icons/assets/key/quote.png
new file mode 100644
index 0000000..108d665
Binary files /dev/null and b/addons/controller_icons/assets/key/quote.png differ
diff --git a/addons/controller_icons/assets/key/quote.png.import b/addons/controller_icons/assets/key/quote.png.import
new file mode 100644
index 0000000..529a8a5
--- /dev/null
+++ b/addons/controller_icons/assets/key/quote.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b1e76upgh2mi"
+path="res://.godot/imported/quote.png-01e82721231020d3c3b0ef2f3b74577b.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/quote.png"
+dest_files=["res://.godot/imported/quote.png-01e82721231020d3c3b0ef2f3b74577b.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/r.png b/addons/controller_icons/assets/key/r.png
new file mode 100644
index 0000000..5ac2461
Binary files /dev/null and b/addons/controller_icons/assets/key/r.png differ
diff --git a/addons/controller_icons/assets/key/r.png.import b/addons/controller_icons/assets/key/r.png.import
new file mode 100644
index 0000000..80571bb
--- /dev/null
+++ b/addons/controller_icons/assets/key/r.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://xrv28lvm1ix6"
+path="res://.godot/imported/r.png-c853d4227496df13556499c7e96ba025.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/r.png"
+dest_files=["res://.godot/imported/r.png-c853d4227496df13556499c7e96ba025.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/s.png b/addons/controller_icons/assets/key/s.png
new file mode 100644
index 0000000..1fb8919
Binary files /dev/null and b/addons/controller_icons/assets/key/s.png differ
diff --git a/addons/controller_icons/assets/key/s.png.import b/addons/controller_icons/assets/key/s.png.import
new file mode 100644
index 0000000..bcbc472
--- /dev/null
+++ b/addons/controller_icons/assets/key/s.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://db6nbed6w2fis"
+path="res://.godot/imported/s.png-8ba01e8981caec742feea41c5c9382ab.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/s.png"
+dest_files=["res://.godot/imported/s.png-8ba01e8981caec742feea41c5c9382ab.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/semicolon.png b/addons/controller_icons/assets/key/semicolon.png
new file mode 100644
index 0000000..800d299
Binary files /dev/null and b/addons/controller_icons/assets/key/semicolon.png differ
diff --git a/addons/controller_icons/assets/key/semicolon.png.import b/addons/controller_icons/assets/key/semicolon.png.import
new file mode 100644
index 0000000..1543c72
--- /dev/null
+++ b/addons/controller_icons/assets/key/semicolon.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cq1nvhcewu5nc"
+path="res://.godot/imported/semicolon.png-c1c48dd478b2bf5ae5d9bae57cdf3d69.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/semicolon.png"
+dest_files=["res://.godot/imported/semicolon.png-c1c48dd478b2bf5ae5d9bae57cdf3d69.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/shift.png b/addons/controller_icons/assets/key/shift.png
new file mode 100644
index 0000000..05ba791
Binary files /dev/null and b/addons/controller_icons/assets/key/shift.png differ
diff --git a/addons/controller_icons/assets/key/shift.png.import b/addons/controller_icons/assets/key/shift.png.import
new file mode 100644
index 0000000..bcf656f
--- /dev/null
+++ b/addons/controller_icons/assets/key/shift.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bvan6ddb77ca3"
+path="res://.godot/imported/shift.png-a03a9bd92c17d4fc5b370f1755f396ce.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/shift.png"
+dest_files=["res://.godot/imported/shift.png-a03a9bd92c17d4fc5b370f1755f396ce.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/shift_alt.png b/addons/controller_icons/assets/key/shift_alt.png
new file mode 100644
index 0000000..e57fb5f
Binary files /dev/null and b/addons/controller_icons/assets/key/shift_alt.png differ
diff --git a/addons/controller_icons/assets/key/shift_alt.png.import b/addons/controller_icons/assets/key/shift_alt.png.import
new file mode 100644
index 0000000..093f2b2
--- /dev/null
+++ b/addons/controller_icons/assets/key/shift_alt.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dq0fide2iu37s"
+path="res://.godot/imported/shift_alt.png-e1013b0ce4d0764e12cc0d349786ce1b.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/shift_alt.png"
+dest_files=["res://.godot/imported/shift_alt.png-e1013b0ce4d0764e12cc0d349786ce1b.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/slash.png b/addons/controller_icons/assets/key/slash.png
new file mode 100644
index 0000000..38b411b
Binary files /dev/null and b/addons/controller_icons/assets/key/slash.png differ
diff --git a/addons/controller_icons/assets/key/slash.png.import b/addons/controller_icons/assets/key/slash.png.import
new file mode 100644
index 0000000..7c52e6a
--- /dev/null
+++ b/addons/controller_icons/assets/key/slash.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dk6lqe2d0ej6e"
+path="res://.godot/imported/slash.png-25cb40c1517be132337b6087293cb938.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/slash.png"
+dest_files=["res://.godot/imported/slash.png-25cb40c1517be132337b6087293cb938.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/space.png b/addons/controller_icons/assets/key/space.png
new file mode 100644
index 0000000..2298b4f
Binary files /dev/null and b/addons/controller_icons/assets/key/space.png differ
diff --git a/addons/controller_icons/assets/key/space.png.import b/addons/controller_icons/assets/key/space.png.import
new file mode 100644
index 0000000..1a55698
--- /dev/null
+++ b/addons/controller_icons/assets/key/space.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://coqj2fcsaxvcn"
+path="res://.godot/imported/space.png-da09457f968fc22d338589204e66e20a.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/space.png"
+dest_files=["res://.godot/imported/space.png-da09457f968fc22d338589204e66e20a.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/t.png b/addons/controller_icons/assets/key/t.png
new file mode 100644
index 0000000..9ba1250
Binary files /dev/null and b/addons/controller_icons/assets/key/t.png differ
diff --git a/addons/controller_icons/assets/key/t.png.import b/addons/controller_icons/assets/key/t.png.import
new file mode 100644
index 0000000..8d85b30
--- /dev/null
+++ b/addons/controller_icons/assets/key/t.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dky25m6echo0u"
+path="res://.godot/imported/t.png-70d394cdcf8270daedd4789ad431faf2.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/t.png"
+dest_files=["res://.godot/imported/t.png-70d394cdcf8270daedd4789ad431faf2.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/tab.png b/addons/controller_icons/assets/key/tab.png
new file mode 100644
index 0000000..3fea857
Binary files /dev/null and b/addons/controller_icons/assets/key/tab.png differ
diff --git a/addons/controller_icons/assets/key/tab.png.import b/addons/controller_icons/assets/key/tab.png.import
new file mode 100644
index 0000000..21e2453
--- /dev/null
+++ b/addons/controller_icons/assets/key/tab.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ebn2rv8q28py"
+path="res://.godot/imported/tab.png-22eec37122d05e9322480e85af4a45fc.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/tab.png"
+dest_files=["res://.godot/imported/tab.png-22eec37122d05e9322480e85af4a45fc.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/tilda.png b/addons/controller_icons/assets/key/tilda.png
new file mode 100644
index 0000000..2f8db91
Binary files /dev/null and b/addons/controller_icons/assets/key/tilda.png differ
diff --git a/addons/controller_icons/assets/key/tilda.png.import b/addons/controller_icons/assets/key/tilda.png.import
new file mode 100644
index 0000000..72ad1d8
--- /dev/null
+++ b/addons/controller_icons/assets/key/tilda.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dnvawqvdd4jb4"
+path="res://.godot/imported/tilda.png-54e1d4f4a3a498075fe0e8a403e57cbc.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/tilda.png"
+dest_files=["res://.godot/imported/tilda.png-54e1d4f4a3a498075fe0e8a403e57cbc.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/u.png b/addons/controller_icons/assets/key/u.png
new file mode 100644
index 0000000..79f9138
Binary files /dev/null and b/addons/controller_icons/assets/key/u.png differ
diff --git a/addons/controller_icons/assets/key/u.png.import b/addons/controller_icons/assets/key/u.png.import
new file mode 100644
index 0000000..bcc5e9f
--- /dev/null
+++ b/addons/controller_icons/assets/key/u.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dnbttdim7vc"
+path="res://.godot/imported/u.png-3564c3693205b4e84d15f34f8fa09789.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/u.png"
+dest_files=["res://.godot/imported/u.png-3564c3693205b4e84d15f34f8fa09789.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/v.png b/addons/controller_icons/assets/key/v.png
new file mode 100644
index 0000000..c0f0599
Binary files /dev/null and b/addons/controller_icons/assets/key/v.png differ
diff --git a/addons/controller_icons/assets/key/v.png.import b/addons/controller_icons/assets/key/v.png.import
new file mode 100644
index 0000000..5b58dd3
--- /dev/null
+++ b/addons/controller_icons/assets/key/v.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dolof3o252oex"
+path="res://.godot/imported/v.png-a2d45ee9b83f5d8e486139cae4520f4a.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/v.png"
+dest_files=["res://.godot/imported/v.png-a2d45ee9b83f5d8e486139cae4520f4a.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/w.png b/addons/controller_icons/assets/key/w.png
new file mode 100644
index 0000000..06278ee
Binary files /dev/null and b/addons/controller_icons/assets/key/w.png differ
diff --git a/addons/controller_icons/assets/key/w.png.import b/addons/controller_icons/assets/key/w.png.import
new file mode 100644
index 0000000..9cc6f41
--- /dev/null
+++ b/addons/controller_icons/assets/key/w.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://casmdw1resubx"
+path="res://.godot/imported/w.png-ed3cd4592010c75b8d884d9d08803a21.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/w.png"
+dest_files=["res://.godot/imported/w.png-ed3cd4592010c75b8d884d9d08803a21.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/win.png b/addons/controller_icons/assets/key/win.png
new file mode 100644
index 0000000..58576cb
Binary files /dev/null and b/addons/controller_icons/assets/key/win.png differ
diff --git a/addons/controller_icons/assets/key/win.png.import b/addons/controller_icons/assets/key/win.png.import
new file mode 100644
index 0000000..ee12f73
--- /dev/null
+++ b/addons/controller_icons/assets/key/win.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://d2cj2f4jlkxwn"
+path="res://.godot/imported/win.png-7991b99458c774d8f357ef921343498f.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/win.png"
+dest_files=["res://.godot/imported/win.png-7991b99458c774d8f357ef921343498f.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/x.png b/addons/controller_icons/assets/key/x.png
new file mode 100644
index 0000000..95192f0
Binary files /dev/null and b/addons/controller_icons/assets/key/x.png differ
diff --git a/addons/controller_icons/assets/key/x.png.import b/addons/controller_icons/assets/key/x.png.import
new file mode 100644
index 0000000..bd40df6
--- /dev/null
+++ b/addons/controller_icons/assets/key/x.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://nil8w83cyn1m"
+path="res://.godot/imported/x.png-f920649f251a4dcf50f6adb4b7dca48a.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/x.png"
+dest_files=["res://.godot/imported/x.png-f920649f251a4dcf50f6adb4b7dca48a.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/y.png b/addons/controller_icons/assets/key/y.png
new file mode 100644
index 0000000..b94e455
Binary files /dev/null and b/addons/controller_icons/assets/key/y.png differ
diff --git a/addons/controller_icons/assets/key/y.png.import b/addons/controller_icons/assets/key/y.png.import
new file mode 100644
index 0000000..4f9aa4f
--- /dev/null
+++ b/addons/controller_icons/assets/key/y.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://0547xmgu17np"
+path="res://.godot/imported/y.png-64308a7952fca02f2ced96ef86b055d8.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/y.png"
+dest_files=["res://.godot/imported/y.png-64308a7952fca02f2ced96ef86b055d8.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/key/z.png b/addons/controller_icons/assets/key/z.png
new file mode 100644
index 0000000..e9a1299
Binary files /dev/null and b/addons/controller_icons/assets/key/z.png differ
diff --git a/addons/controller_icons/assets/key/z.png.import b/addons/controller_icons/assets/key/z.png.import
new file mode 100644
index 0000000..a0a49fc
--- /dev/null
+++ b/addons/controller_icons/assets/key/z.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dvu4qvrwgslv3"
+path="res://.godot/imported/z.png-db05dce79d25a20ba57100ebae2f198b.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/key/z.png"
+dest_files=["res://.godot/imported/z.png-db05dce79d25a20ba57100ebae2f198b.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/luna/a.png b/addons/controller_icons/assets/luna/a.png
new file mode 100644
index 0000000..3ce778c
Binary files /dev/null and b/addons/controller_icons/assets/luna/a.png differ
diff --git a/addons/controller_icons/assets/luna/a.png.import b/addons/controller_icons/assets/luna/a.png.import
new file mode 100644
index 0000000..e91658d
--- /dev/null
+++ b/addons/controller_icons/assets/luna/a.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://rn6k4m7fogon"
+path="res://.godot/imported/a.png-59a62f9f6a6a0a2af64c8d88e34a5401.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/luna/a.png"
+dest_files=["res://.godot/imported/a.png-59a62f9f6a6a0a2af64c8d88e34a5401.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/luna/b.png b/addons/controller_icons/assets/luna/b.png
new file mode 100644
index 0000000..e13fd62
Binary files /dev/null and b/addons/controller_icons/assets/luna/b.png differ
diff --git a/addons/controller_icons/assets/luna/b.png.import b/addons/controller_icons/assets/luna/b.png.import
new file mode 100644
index 0000000..240977c
--- /dev/null
+++ b/addons/controller_icons/assets/luna/b.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://brx8jkm3n4sud"
+path="res://.godot/imported/b.png-1ae64f3087efcc70a69cd9d33882dce4.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/luna/b.png"
+dest_files=["res://.godot/imported/b.png-1ae64f3087efcc70a69cd9d33882dce4.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/luna/circle.png b/addons/controller_icons/assets/luna/circle.png
new file mode 100644
index 0000000..2d49de2
Binary files /dev/null and b/addons/controller_icons/assets/luna/circle.png differ
diff --git a/addons/controller_icons/assets/luna/circle.png.import b/addons/controller_icons/assets/luna/circle.png.import
new file mode 100644
index 0000000..e56e2fd
--- /dev/null
+++ b/addons/controller_icons/assets/luna/circle.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b0kbg1368mrbb"
+path="res://.godot/imported/circle.png-c33dba2bdcfb9b825b3c51fddde35778.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/luna/circle.png"
+dest_files=["res://.godot/imported/circle.png-c33dba2bdcfb9b825b3c51fddde35778.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/luna/diagram.png b/addons/controller_icons/assets/luna/diagram.png
new file mode 100644
index 0000000..ec8d42c
Binary files /dev/null and b/addons/controller_icons/assets/luna/diagram.png differ
diff --git a/addons/controller_icons/assets/luna/diagram.png.import b/addons/controller_icons/assets/luna/diagram.png.import
new file mode 100644
index 0000000..657c11f
--- /dev/null
+++ b/addons/controller_icons/assets/luna/diagram.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://46o74d1r5fhf"
+path="res://.godot/imported/diagram.png-0e19e89b9a714f35a947bce58d788325.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/luna/diagram.png"
+dest_files=["res://.godot/imported/diagram.png-0e19e89b9a714f35a947bce58d788325.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/luna/diagram_simple.png b/addons/controller_icons/assets/luna/diagram_simple.png
new file mode 100644
index 0000000..5bf82ad
Binary files /dev/null and b/addons/controller_icons/assets/luna/diagram_simple.png differ
diff --git a/addons/controller_icons/assets/luna/diagram_simple.png.import b/addons/controller_icons/assets/luna/diagram_simple.png.import
new file mode 100644
index 0000000..b10244b
--- /dev/null
+++ b/addons/controller_icons/assets/luna/diagram_simple.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b0rrslb07wjrf"
+path="res://.godot/imported/diagram_simple.png-28acd78142da16060c36b59ae19d78b7.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/luna/diagram_simple.png"
+dest_files=["res://.godot/imported/diagram_simple.png-28acd78142da16060c36b59ae19d78b7.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/luna/dpad.png b/addons/controller_icons/assets/luna/dpad.png
new file mode 100644
index 0000000..2d0f990
Binary files /dev/null and b/addons/controller_icons/assets/luna/dpad.png differ
diff --git a/addons/controller_icons/assets/luna/dpad.png.import b/addons/controller_icons/assets/luna/dpad.png.import
new file mode 100644
index 0000000..2c6b109
--- /dev/null
+++ b/addons/controller_icons/assets/luna/dpad.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://douyjf06vdy2t"
+path="res://.godot/imported/dpad.png-df663e7793bdd6d418baae05c51fec49.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/luna/dpad.png"
+dest_files=["res://.godot/imported/dpad.png-df663e7793bdd6d418baae05c51fec49.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/luna/dpad_down.png b/addons/controller_icons/assets/luna/dpad_down.png
new file mode 100644
index 0000000..900d17b
Binary files /dev/null and b/addons/controller_icons/assets/luna/dpad_down.png differ
diff --git a/addons/controller_icons/assets/luna/dpad_down.png.import b/addons/controller_icons/assets/luna/dpad_down.png.import
new file mode 100644
index 0000000..6d147ca
--- /dev/null
+++ b/addons/controller_icons/assets/luna/dpad_down.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c4tfv24rxbu8i"
+path="res://.godot/imported/dpad_down.png-bca02bdbaf756f49c333f91ba05b8203.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/luna/dpad_down.png"
+dest_files=["res://.godot/imported/dpad_down.png-bca02bdbaf756f49c333f91ba05b8203.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/luna/dpad_left.png b/addons/controller_icons/assets/luna/dpad_left.png
new file mode 100644
index 0000000..e5cd082
Binary files /dev/null and b/addons/controller_icons/assets/luna/dpad_left.png differ
diff --git a/addons/controller_icons/assets/luna/dpad_left.png.import b/addons/controller_icons/assets/luna/dpad_left.png.import
new file mode 100644
index 0000000..f2e98a0
--- /dev/null
+++ b/addons/controller_icons/assets/luna/dpad_left.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://yapt6fyi0fpt"
+path="res://.godot/imported/dpad_left.png-ef7fb1018db88ffdeb70ff1032f2d674.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/luna/dpad_left.png"
+dest_files=["res://.godot/imported/dpad_left.png-ef7fb1018db88ffdeb70ff1032f2d674.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/luna/dpad_right.png b/addons/controller_icons/assets/luna/dpad_right.png
new file mode 100644
index 0000000..2d9b2fe
Binary files /dev/null and b/addons/controller_icons/assets/luna/dpad_right.png differ
diff --git a/addons/controller_icons/assets/luna/dpad_right.png.import b/addons/controller_icons/assets/luna/dpad_right.png.import
new file mode 100644
index 0000000..66f01f5
--- /dev/null
+++ b/addons/controller_icons/assets/luna/dpad_right.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dt0av1cfibdbv"
+path="res://.godot/imported/dpad_right.png-5d9e7fd5de979dd6e72fc6c6e218ff23.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/luna/dpad_right.png"
+dest_files=["res://.godot/imported/dpad_right.png-5d9e7fd5de979dd6e72fc6c6e218ff23.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/luna/dpad_up.png b/addons/controller_icons/assets/luna/dpad_up.png
new file mode 100644
index 0000000..595314f
Binary files /dev/null and b/addons/controller_icons/assets/luna/dpad_up.png differ
diff --git a/addons/controller_icons/assets/luna/dpad_up.png.import b/addons/controller_icons/assets/luna/dpad_up.png.import
new file mode 100644
index 0000000..857e418
--- /dev/null
+++ b/addons/controller_icons/assets/luna/dpad_up.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cqcmbtn5d8pn2"
+path="res://.godot/imported/dpad_up.png-ef55bb167760eab1071a8262962d899b.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/luna/dpad_up.png"
+dest_files=["res://.godot/imported/dpad_up.png-ef55bb167760eab1071a8262962d899b.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/luna/l_stick.png b/addons/controller_icons/assets/luna/l_stick.png
new file mode 100644
index 0000000..de49dc6
Binary files /dev/null and b/addons/controller_icons/assets/luna/l_stick.png differ
diff --git a/addons/controller_icons/assets/luna/l_stick.png.import b/addons/controller_icons/assets/luna/l_stick.png.import
new file mode 100644
index 0000000..c0144e8
--- /dev/null
+++ b/addons/controller_icons/assets/luna/l_stick.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b6l2bryk8cqfx"
+path="res://.godot/imported/l_stick.png-ef7c5449283b14a6866a7fe5533de180.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/luna/l_stick.png"
+dest_files=["res://.godot/imported/l_stick.png-ef7c5449283b14a6866a7fe5533de180.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/luna/l_stick_click.png b/addons/controller_icons/assets/luna/l_stick_click.png
new file mode 100644
index 0000000..ad0428f
Binary files /dev/null and b/addons/controller_icons/assets/luna/l_stick_click.png differ
diff --git a/addons/controller_icons/assets/luna/l_stick_click.png.import b/addons/controller_icons/assets/luna/l_stick_click.png.import
new file mode 100644
index 0000000..a48bd32
--- /dev/null
+++ b/addons/controller_icons/assets/luna/l_stick_click.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cj7sy2o7eq8xs"
+path="res://.godot/imported/l_stick_click.png-1e75c4b6afaefad25cb373de42d4831b.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/luna/l_stick_click.png"
+dest_files=["res://.godot/imported/l_stick_click.png-1e75c4b6afaefad25cb373de42d4831b.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/luna/lb.png b/addons/controller_icons/assets/luna/lb.png
new file mode 100644
index 0000000..f6c414b
Binary files /dev/null and b/addons/controller_icons/assets/luna/lb.png differ
diff --git a/addons/controller_icons/assets/luna/lb.png.import b/addons/controller_icons/assets/luna/lb.png.import
new file mode 100644
index 0000000..9a84c46
--- /dev/null
+++ b/addons/controller_icons/assets/luna/lb.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bupy3dxhyn86p"
+path="res://.godot/imported/lb.png-3c96db6e020bba08a50a0ebd9fe8e731.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/luna/lb.png"
+dest_files=["res://.godot/imported/lb.png-3c96db6e020bba08a50a0ebd9fe8e731.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/luna/lt.png b/addons/controller_icons/assets/luna/lt.png
new file mode 100644
index 0000000..e9681c9
Binary files /dev/null and b/addons/controller_icons/assets/luna/lt.png differ
diff --git a/addons/controller_icons/assets/luna/lt.png.import b/addons/controller_icons/assets/luna/lt.png.import
new file mode 100644
index 0000000..212ae8f
--- /dev/null
+++ b/addons/controller_icons/assets/luna/lt.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://nxnpwylabu3e"
+path="res://.godot/imported/lt.png-2cdb294c39e41ed6afc2addf04863726.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/luna/lt.png"
+dest_files=["res://.godot/imported/lt.png-2cdb294c39e41ed6afc2addf04863726.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/luna/menu.png b/addons/controller_icons/assets/luna/menu.png
new file mode 100644
index 0000000..4a96c7e
Binary files /dev/null and b/addons/controller_icons/assets/luna/menu.png differ
diff --git a/addons/controller_icons/assets/luna/menu.png.import b/addons/controller_icons/assets/luna/menu.png.import
new file mode 100644
index 0000000..12302af
--- /dev/null
+++ b/addons/controller_icons/assets/luna/menu.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://7udxwl7mxb8d"
+path="res://.godot/imported/menu.png-f8eed2754c94df5e0b92317c9d3eaf7f.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/luna/menu.png"
+dest_files=["res://.godot/imported/menu.png-f8eed2754c94df5e0b92317c9d3eaf7f.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/luna/microphone.png b/addons/controller_icons/assets/luna/microphone.png
new file mode 100644
index 0000000..862ed7a
Binary files /dev/null and b/addons/controller_icons/assets/luna/microphone.png differ
diff --git a/addons/controller_icons/assets/luna/microphone.png.import b/addons/controller_icons/assets/luna/microphone.png.import
new file mode 100644
index 0000000..938db13
--- /dev/null
+++ b/addons/controller_icons/assets/luna/microphone.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://wwhe5v7m720e"
+path="res://.godot/imported/microphone.png-7c6c78023d41c0eecbcde19029281402.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/luna/microphone.png"
+dest_files=["res://.godot/imported/microphone.png-7c6c78023d41c0eecbcde19029281402.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/luna/r_stick.png b/addons/controller_icons/assets/luna/r_stick.png
new file mode 100644
index 0000000..866be1c
Binary files /dev/null and b/addons/controller_icons/assets/luna/r_stick.png differ
diff --git a/addons/controller_icons/assets/luna/r_stick.png.import b/addons/controller_icons/assets/luna/r_stick.png.import
new file mode 100644
index 0000000..441fb37
--- /dev/null
+++ b/addons/controller_icons/assets/luna/r_stick.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cuhjgyoq808np"
+path="res://.godot/imported/r_stick.png-7f23b2a2644811f3d84785a06ee547d4.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/luna/r_stick.png"
+dest_files=["res://.godot/imported/r_stick.png-7f23b2a2644811f3d84785a06ee547d4.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/luna/r_stick_click.png b/addons/controller_icons/assets/luna/r_stick_click.png
new file mode 100644
index 0000000..de08508
Binary files /dev/null and b/addons/controller_icons/assets/luna/r_stick_click.png differ
diff --git a/addons/controller_icons/assets/luna/r_stick_click.png.import b/addons/controller_icons/assets/luna/r_stick_click.png.import
new file mode 100644
index 0000000..13d50e9
--- /dev/null
+++ b/addons/controller_icons/assets/luna/r_stick_click.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dppg3hs5a8wcy"
+path="res://.godot/imported/r_stick_click.png-25280c4007322abd67a417283b7ee38f.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/luna/r_stick_click.png"
+dest_files=["res://.godot/imported/r_stick_click.png-25280c4007322abd67a417283b7ee38f.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/luna/rb.png b/addons/controller_icons/assets/luna/rb.png
new file mode 100644
index 0000000..5dcfc6d
Binary files /dev/null and b/addons/controller_icons/assets/luna/rb.png differ
diff --git a/addons/controller_icons/assets/luna/rb.png.import b/addons/controller_icons/assets/luna/rb.png.import
new file mode 100644
index 0000000..337839d
--- /dev/null
+++ b/addons/controller_icons/assets/luna/rb.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cidn3sefbrnnf"
+path="res://.godot/imported/rb.png-c7ea937fbeb3328ee9e0f2779a5f7450.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/luna/rb.png"
+dest_files=["res://.godot/imported/rb.png-c7ea937fbeb3328ee9e0f2779a5f7450.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/luna/rt.png b/addons/controller_icons/assets/luna/rt.png
new file mode 100644
index 0000000..7bf27f4
Binary files /dev/null and b/addons/controller_icons/assets/luna/rt.png differ
diff --git a/addons/controller_icons/assets/luna/rt.png.import b/addons/controller_icons/assets/luna/rt.png.import
new file mode 100644
index 0000000..1c72acd
--- /dev/null
+++ b/addons/controller_icons/assets/luna/rt.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cagq7na0dq2hc"
+path="res://.godot/imported/rt.png-317167a9c4de6aeaf4313c55cae3cb71.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/luna/rt.png"
+dest_files=["res://.godot/imported/rt.png-317167a9c4de6aeaf4313c55cae3cb71.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/luna/x.png b/addons/controller_icons/assets/luna/x.png
new file mode 100644
index 0000000..0a98483
Binary files /dev/null and b/addons/controller_icons/assets/luna/x.png differ
diff --git a/addons/controller_icons/assets/luna/x.png.import b/addons/controller_icons/assets/luna/x.png.import
new file mode 100644
index 0000000..30708ec
--- /dev/null
+++ b/addons/controller_icons/assets/luna/x.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bdaab4yfsklp5"
+path="res://.godot/imported/x.png-f47dc752ce8b528de61a09789677ef87.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/luna/x.png"
+dest_files=["res://.godot/imported/x.png-f47dc752ce8b528de61a09789677ef87.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/luna/y.png b/addons/controller_icons/assets/luna/y.png
new file mode 100644
index 0000000..1d4a18c
Binary files /dev/null and b/addons/controller_icons/assets/luna/y.png differ
diff --git a/addons/controller_icons/assets/luna/y.png.import b/addons/controller_icons/assets/luna/y.png.import
new file mode 100644
index 0000000..e6a3b6e
--- /dev/null
+++ b/addons/controller_icons/assets/luna/y.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c1i21xnegic87"
+path="res://.godot/imported/y.png-b4f0d57293966dde5b58789c67559fd2.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/luna/y.png"
+dest_files=["res://.godot/imported/y.png-b4f0d57293966dde5b58789c67559fd2.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/mouse/left.png b/addons/controller_icons/assets/mouse/left.png
new file mode 100644
index 0000000..1b1eb86
Binary files /dev/null and b/addons/controller_icons/assets/mouse/left.png differ
diff --git a/addons/controller_icons/assets/mouse/left.png.import b/addons/controller_icons/assets/mouse/left.png.import
new file mode 100644
index 0000000..fa68c59
--- /dev/null
+++ b/addons/controller_icons/assets/mouse/left.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b8vuy7l8npt6w"
+path="res://.godot/imported/left.png-13d9369d03c3b5ebc7aad51d61ba4b7c.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/mouse/left.png"
+dest_files=["res://.godot/imported/left.png-13d9369d03c3b5ebc7aad51d61ba4b7c.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/mouse/middle.png b/addons/controller_icons/assets/mouse/middle.png
new file mode 100644
index 0000000..0fd0a2e
Binary files /dev/null and b/addons/controller_icons/assets/mouse/middle.png differ
diff --git a/addons/controller_icons/assets/mouse/middle.png.import b/addons/controller_icons/assets/mouse/middle.png.import
new file mode 100644
index 0000000..015ec21
--- /dev/null
+++ b/addons/controller_icons/assets/mouse/middle.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://e146nr3hsy0p"
+path="res://.godot/imported/middle.png-01f248dbdab856ae6ed2ee6cdb5ed595.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/mouse/middle.png"
+dest_files=["res://.godot/imported/middle.png-01f248dbdab856ae6ed2ee6cdb5ed595.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/mouse/right.png b/addons/controller_icons/assets/mouse/right.png
new file mode 100644
index 0000000..cc24f92
Binary files /dev/null and b/addons/controller_icons/assets/mouse/right.png differ
diff --git a/addons/controller_icons/assets/mouse/right.png.import b/addons/controller_icons/assets/mouse/right.png.import
new file mode 100644
index 0000000..252cbfc
--- /dev/null
+++ b/addons/controller_icons/assets/mouse/right.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cy7e67qj2flir"
+path="res://.godot/imported/right.png-360abc8e1cd731233672b90162b87e4d.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/mouse/right.png"
+dest_files=["res://.godot/imported/right.png-360abc8e1cd731233672b90162b87e4d.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/mouse/side_down.png b/addons/controller_icons/assets/mouse/side_down.png
new file mode 100644
index 0000000..0978cb4
Binary files /dev/null and b/addons/controller_icons/assets/mouse/side_down.png differ
diff --git a/addons/controller_icons/assets/mouse/side_down.png.import b/addons/controller_icons/assets/mouse/side_down.png.import
new file mode 100644
index 0000000..aa0f76e
--- /dev/null
+++ b/addons/controller_icons/assets/mouse/side_down.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cwfrvijjk8day"
+path="res://.godot/imported/side_down.png-d0f917f031f1fa83082f5a03dd4d47e1.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/mouse/side_down.png"
+dest_files=["res://.godot/imported/side_down.png-d0f917f031f1fa83082f5a03dd4d47e1.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/mouse/side_up.png b/addons/controller_icons/assets/mouse/side_up.png
new file mode 100644
index 0000000..28c1b58
Binary files /dev/null and b/addons/controller_icons/assets/mouse/side_up.png differ
diff --git a/addons/controller_icons/assets/mouse/side_up.png.import b/addons/controller_icons/assets/mouse/side_up.png.import
new file mode 100644
index 0000000..6c32d43
--- /dev/null
+++ b/addons/controller_icons/assets/mouse/side_up.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bgaiucyxx3egf"
+path="res://.godot/imported/side_up.png-5968fb429ff2d3f3520b5fee858a6bf8.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/mouse/side_up.png"
+dest_files=["res://.godot/imported/side_up.png-5968fb429ff2d3f3520b5fee858a6bf8.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/mouse/simple.png b/addons/controller_icons/assets/mouse/simple.png
new file mode 100644
index 0000000..774bc62
Binary files /dev/null and b/addons/controller_icons/assets/mouse/simple.png differ
diff --git a/addons/controller_icons/assets/mouse/simple.png.import b/addons/controller_icons/assets/mouse/simple.png.import
new file mode 100644
index 0000000..211803c
--- /dev/null
+++ b/addons/controller_icons/assets/mouse/simple.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://u3k75sn1tb83"
+path="res://.godot/imported/simple.png-25602dc17ea731070ac19eb5e687d6b0.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/mouse/simple.png"
+dest_files=["res://.godot/imported/simple.png-25602dc17ea731070ac19eb5e687d6b0.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/mouse/wheel_down.png b/addons/controller_icons/assets/mouse/wheel_down.png
new file mode 100644
index 0000000..e0b3529
Binary files /dev/null and b/addons/controller_icons/assets/mouse/wheel_down.png differ
diff --git a/addons/controller_icons/assets/mouse/wheel_down.png.import b/addons/controller_icons/assets/mouse/wheel_down.png.import
new file mode 100644
index 0000000..29ca7ed
--- /dev/null
+++ b/addons/controller_icons/assets/mouse/wheel_down.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cquw4xas0kw4b"
+path="res://.godot/imported/wheel_down.png-41403fb0624313a3521aa5396d2e7472.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/mouse/wheel_down.png"
+dest_files=["res://.godot/imported/wheel_down.png-41403fb0624313a3521aa5396d2e7472.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/mouse/wheel_up.png b/addons/controller_icons/assets/mouse/wheel_up.png
new file mode 100644
index 0000000..274c1b5
Binary files /dev/null and b/addons/controller_icons/assets/mouse/wheel_up.png differ
diff --git a/addons/controller_icons/assets/mouse/wheel_up.png.import b/addons/controller_icons/assets/mouse/wheel_up.png.import
new file mode 100644
index 0000000..782375b
--- /dev/null
+++ b/addons/controller_icons/assets/mouse/wheel_up.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dwqk1mmy6tyay"
+path="res://.godot/imported/wheel_up.png-90da1a0b587bd0dc8cda13989793b735.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/mouse/wheel_up.png"
+dest_files=["res://.godot/imported/wheel_up.png-90da1a0b587bd0dc8cda13989793b735.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ouya/a.png b/addons/controller_icons/assets/ouya/a.png
new file mode 100644
index 0000000..5fcbb44
Binary files /dev/null and b/addons/controller_icons/assets/ouya/a.png differ
diff --git a/addons/controller_icons/assets/ouya/a.png.import b/addons/controller_icons/assets/ouya/a.png.import
new file mode 100644
index 0000000..4d5e3a0
--- /dev/null
+++ b/addons/controller_icons/assets/ouya/a.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cvbc2l1ygkits"
+path="res://.godot/imported/a.png-29eecb9631be3f2d922f22d192491112.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ouya/a.png"
+dest_files=["res://.godot/imported/a.png-29eecb9631be3f2d922f22d192491112.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ouya/dpad.png b/addons/controller_icons/assets/ouya/dpad.png
new file mode 100644
index 0000000..0ced97a
Binary files /dev/null and b/addons/controller_icons/assets/ouya/dpad.png differ
diff --git a/addons/controller_icons/assets/ouya/dpad.png.import b/addons/controller_icons/assets/ouya/dpad.png.import
new file mode 100644
index 0000000..2f57d81
--- /dev/null
+++ b/addons/controller_icons/assets/ouya/dpad.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c87mvk8pxwqx0"
+path="res://.godot/imported/dpad.png-9426474647bb17cbcfecf0960a2689ca.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ouya/dpad.png"
+dest_files=["res://.godot/imported/dpad.png-9426474647bb17cbcfecf0960a2689ca.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ouya/dpad_down.png b/addons/controller_icons/assets/ouya/dpad_down.png
new file mode 100644
index 0000000..6b295ac
Binary files /dev/null and b/addons/controller_icons/assets/ouya/dpad_down.png differ
diff --git a/addons/controller_icons/assets/ouya/dpad_down.png.import b/addons/controller_icons/assets/ouya/dpad_down.png.import
new file mode 100644
index 0000000..856fd78
--- /dev/null
+++ b/addons/controller_icons/assets/ouya/dpad_down.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bpvuswm1t7mgh"
+path="res://.godot/imported/dpad_down.png-13b277973726f4697773238d58a2206f.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ouya/dpad_down.png"
+dest_files=["res://.godot/imported/dpad_down.png-13b277973726f4697773238d58a2206f.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ouya/dpad_left.png b/addons/controller_icons/assets/ouya/dpad_left.png
new file mode 100644
index 0000000..533e42a
Binary files /dev/null and b/addons/controller_icons/assets/ouya/dpad_left.png differ
diff --git a/addons/controller_icons/assets/ouya/dpad_left.png.import b/addons/controller_icons/assets/ouya/dpad_left.png.import
new file mode 100644
index 0000000..3048642
--- /dev/null
+++ b/addons/controller_icons/assets/ouya/dpad_left.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b3w86u8upcybs"
+path="res://.godot/imported/dpad_left.png-d6da2405f928bc1bf7410a880edba283.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ouya/dpad_left.png"
+dest_files=["res://.godot/imported/dpad_left.png-d6da2405f928bc1bf7410a880edba283.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ouya/dpad_right.png b/addons/controller_icons/assets/ouya/dpad_right.png
new file mode 100644
index 0000000..1b3d9ae
Binary files /dev/null and b/addons/controller_icons/assets/ouya/dpad_right.png differ
diff --git a/addons/controller_icons/assets/ouya/dpad_right.png.import b/addons/controller_icons/assets/ouya/dpad_right.png.import
new file mode 100644
index 0000000..066cfd5
--- /dev/null
+++ b/addons/controller_icons/assets/ouya/dpad_right.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c1f1hf2gs8jek"
+path="res://.godot/imported/dpad_right.png-44405ca2fe5d8a219ba0eba3426bec59.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ouya/dpad_right.png"
+dest_files=["res://.godot/imported/dpad_right.png-44405ca2fe5d8a219ba0eba3426bec59.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ouya/dpad_up.png b/addons/controller_icons/assets/ouya/dpad_up.png
new file mode 100644
index 0000000..70ea26e
Binary files /dev/null and b/addons/controller_icons/assets/ouya/dpad_up.png differ
diff --git a/addons/controller_icons/assets/ouya/dpad_up.png.import b/addons/controller_icons/assets/ouya/dpad_up.png.import
new file mode 100644
index 0000000..b528d3f
--- /dev/null
+++ b/addons/controller_icons/assets/ouya/dpad_up.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://lrrqo1v6mlnw"
+path="res://.godot/imported/dpad_up.png-0d780dfe823faac5787681ba448e07f0.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ouya/dpad_up.png"
+dest_files=["res://.godot/imported/dpad_up.png-0d780dfe823faac5787681ba448e07f0.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ouya/l1.png b/addons/controller_icons/assets/ouya/l1.png
new file mode 100644
index 0000000..2b20073
Binary files /dev/null and b/addons/controller_icons/assets/ouya/l1.png differ
diff --git a/addons/controller_icons/assets/ouya/l1.png.import b/addons/controller_icons/assets/ouya/l1.png.import
new file mode 100644
index 0000000..f6a1518
--- /dev/null
+++ b/addons/controller_icons/assets/ouya/l1.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://oll7c7kiudqg"
+path="res://.godot/imported/l1.png-40be426ff0b63ac71a387da3194167e8.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ouya/l1.png"
+dest_files=["res://.godot/imported/l1.png-40be426ff0b63ac71a387da3194167e8.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ouya/l2.png b/addons/controller_icons/assets/ouya/l2.png
new file mode 100644
index 0000000..6234c1e
Binary files /dev/null and b/addons/controller_icons/assets/ouya/l2.png differ
diff --git a/addons/controller_icons/assets/ouya/l2.png.import b/addons/controller_icons/assets/ouya/l2.png.import
new file mode 100644
index 0000000..fe9769b
--- /dev/null
+++ b/addons/controller_icons/assets/ouya/l2.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ckthgirocj4ye"
+path="res://.godot/imported/l2.png-4ccae94ce7c12e37b2621a33b6e321e6.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ouya/l2.png"
+dest_files=["res://.godot/imported/l2.png-4ccae94ce7c12e37b2621a33b6e321e6.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ouya/l_stick.png b/addons/controller_icons/assets/ouya/l_stick.png
new file mode 100644
index 0000000..631dad6
Binary files /dev/null and b/addons/controller_icons/assets/ouya/l_stick.png differ
diff --git a/addons/controller_icons/assets/ouya/l_stick.png.import b/addons/controller_icons/assets/ouya/l_stick.png.import
new file mode 100644
index 0000000..8440744
--- /dev/null
+++ b/addons/controller_icons/assets/ouya/l_stick.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ddebrfwlw0rx4"
+path="res://.godot/imported/l_stick.png-501fa1ab3b082e67f566728cbecc7708.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ouya/l_stick.png"
+dest_files=["res://.godot/imported/l_stick.png-501fa1ab3b082e67f566728cbecc7708.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ouya/menu.png b/addons/controller_icons/assets/ouya/menu.png
new file mode 100644
index 0000000..b2eef11
Binary files /dev/null and b/addons/controller_icons/assets/ouya/menu.png differ
diff --git a/addons/controller_icons/assets/ouya/menu.png.import b/addons/controller_icons/assets/ouya/menu.png.import
new file mode 100644
index 0000000..4579254
--- /dev/null
+++ b/addons/controller_icons/assets/ouya/menu.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ddqchjo615p6p"
+path="res://.godot/imported/menu.png-c3e217d08a17c9c3997312859256b788.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ouya/menu.png"
+dest_files=["res://.godot/imported/menu.png-c3e217d08a17c9c3997312859256b788.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ouya/o.png b/addons/controller_icons/assets/ouya/o.png
new file mode 100644
index 0000000..e96a62c
Binary files /dev/null and b/addons/controller_icons/assets/ouya/o.png differ
diff --git a/addons/controller_icons/assets/ouya/o.png.import b/addons/controller_icons/assets/ouya/o.png.import
new file mode 100644
index 0000000..4466836
--- /dev/null
+++ b/addons/controller_icons/assets/ouya/o.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://btb2inju0rhw4"
+path="res://.godot/imported/o.png-5860511e81509fe5f2c91ae353e00a58.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ouya/o.png"
+dest_files=["res://.godot/imported/o.png-5860511e81509fe5f2c91ae353e00a58.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ouya/r1.png b/addons/controller_icons/assets/ouya/r1.png
new file mode 100644
index 0000000..5e8f924
Binary files /dev/null and b/addons/controller_icons/assets/ouya/r1.png differ
diff --git a/addons/controller_icons/assets/ouya/r1.png.import b/addons/controller_icons/assets/ouya/r1.png.import
new file mode 100644
index 0000000..4a36e27
--- /dev/null
+++ b/addons/controller_icons/assets/ouya/r1.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bwchef4k1lkhv"
+path="res://.godot/imported/r1.png-2f981ba18f14037d054db9e0a74904f5.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ouya/r1.png"
+dest_files=["res://.godot/imported/r1.png-2f981ba18f14037d054db9e0a74904f5.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ouya/r2.png b/addons/controller_icons/assets/ouya/r2.png
new file mode 100644
index 0000000..55db1c7
Binary files /dev/null and b/addons/controller_icons/assets/ouya/r2.png differ
diff --git a/addons/controller_icons/assets/ouya/r2.png.import b/addons/controller_icons/assets/ouya/r2.png.import
new file mode 100644
index 0000000..e7e1ae3
--- /dev/null
+++ b/addons/controller_icons/assets/ouya/r2.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ckuwwjnc4n0ty"
+path="res://.godot/imported/r2.png-5547939bd008bff4345aab8e7d1e50fc.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ouya/r2.png"
+dest_files=["res://.godot/imported/r2.png-5547939bd008bff4345aab8e7d1e50fc.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ouya/r_stick.png b/addons/controller_icons/assets/ouya/r_stick.png
new file mode 100644
index 0000000..c46c748
Binary files /dev/null and b/addons/controller_icons/assets/ouya/r_stick.png differ
diff --git a/addons/controller_icons/assets/ouya/r_stick.png.import b/addons/controller_icons/assets/ouya/r_stick.png.import
new file mode 100644
index 0000000..71dfe63
--- /dev/null
+++ b/addons/controller_icons/assets/ouya/r_stick.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://x6qlfu7hm2av"
+path="res://.godot/imported/r_stick.png-b68d71869af9e2ee20718829995adcc3.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ouya/r_stick.png"
+dest_files=["res://.godot/imported/r_stick.png-b68d71869af9e2ee20718829995adcc3.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ouya/touch.png b/addons/controller_icons/assets/ouya/touch.png
new file mode 100644
index 0000000..2df0e46
Binary files /dev/null and b/addons/controller_icons/assets/ouya/touch.png differ
diff --git a/addons/controller_icons/assets/ouya/touch.png.import b/addons/controller_icons/assets/ouya/touch.png.import
new file mode 100644
index 0000000..af47f5a
--- /dev/null
+++ b/addons/controller_icons/assets/ouya/touch.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://crrpiy63ykx14"
+path="res://.godot/imported/touch.png-1ba3e7ec2b35a2d00655a24d0089caad.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ouya/touch.png"
+dest_files=["res://.godot/imported/touch.png-1ba3e7ec2b35a2d00655a24d0089caad.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ouya/u.png b/addons/controller_icons/assets/ouya/u.png
new file mode 100644
index 0000000..c90ca2d
Binary files /dev/null and b/addons/controller_icons/assets/ouya/u.png differ
diff --git a/addons/controller_icons/assets/ouya/u.png.import b/addons/controller_icons/assets/ouya/u.png.import
new file mode 100644
index 0000000..94d4dbe
--- /dev/null
+++ b/addons/controller_icons/assets/ouya/u.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bxom1daxf3rkv"
+path="res://.godot/imported/u.png-599d0e95eb0d2f2937ff55a5a246fb0f.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ouya/u.png"
+dest_files=["res://.godot/imported/u.png-599d0e95eb0d2f2937ff55a5a246fb0f.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ouya/y.png b/addons/controller_icons/assets/ouya/y.png
new file mode 100644
index 0000000..c0a08e0
Binary files /dev/null and b/addons/controller_icons/assets/ouya/y.png differ
diff --git a/addons/controller_icons/assets/ouya/y.png.import b/addons/controller_icons/assets/ouya/y.png.import
new file mode 100644
index 0000000..38eacbb
--- /dev/null
+++ b/addons/controller_icons/assets/ouya/y.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dfu8cthd37ls6"
+path="res://.godot/imported/y.png-5d0ac3a56f44813490c7f2c4bfb2a86b.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ouya/y.png"
+dest_files=["res://.godot/imported/y.png-5d0ac3a56f44813490c7f2c4bfb2a86b.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/positional/east.png b/addons/controller_icons/assets/positional/east.png
new file mode 100644
index 0000000..8a821aa
Binary files /dev/null and b/addons/controller_icons/assets/positional/east.png differ
diff --git a/addons/controller_icons/assets/positional/east.png.import b/addons/controller_icons/assets/positional/east.png.import
new file mode 100644
index 0000000..761c553
--- /dev/null
+++ b/addons/controller_icons/assets/positional/east.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ct4njsaxkgfd8"
+path="res://.godot/imported/east.png-468aa650c9556f22433824736c3d70c7.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/positional/east.png"
+dest_files=["res://.godot/imported/east.png-468aa650c9556f22433824736c3d70c7.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/positional/north.png b/addons/controller_icons/assets/positional/north.png
new file mode 100644
index 0000000..888a343
Binary files /dev/null and b/addons/controller_icons/assets/positional/north.png differ
diff --git a/addons/controller_icons/assets/positional/north.png.import b/addons/controller_icons/assets/positional/north.png.import
new file mode 100644
index 0000000..4bed8c7
--- /dev/null
+++ b/addons/controller_icons/assets/positional/north.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://78i5io3k54qf"
+path="res://.godot/imported/north.png-8eae94f078419a6dd29488ecb0e91781.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/positional/north.png"
+dest_files=["res://.godot/imported/north.png-8eae94f078419a6dd29488ecb0e91781.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/positional/south.png b/addons/controller_icons/assets/positional/south.png
new file mode 100644
index 0000000..78da86f
Binary files /dev/null and b/addons/controller_icons/assets/positional/south.png differ
diff --git a/addons/controller_icons/assets/positional/south.png.import b/addons/controller_icons/assets/positional/south.png.import
new file mode 100644
index 0000000..3bd143f
--- /dev/null
+++ b/addons/controller_icons/assets/positional/south.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b7cyrhxkp7lqv"
+path="res://.godot/imported/south.png-641e4a1035caae19816e0982ab1fa092.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/positional/south.png"
+dest_files=["res://.godot/imported/south.png-641e4a1035caae19816e0982ab1fa092.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/positional/west.png b/addons/controller_icons/assets/positional/west.png
new file mode 100644
index 0000000..ccf72ae
Binary files /dev/null and b/addons/controller_icons/assets/positional/west.png differ
diff --git a/addons/controller_icons/assets/positional/west.png.import b/addons/controller_icons/assets/positional/west.png.import
new file mode 100644
index 0000000..f20a23d
--- /dev/null
+++ b/addons/controller_icons/assets/positional/west.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bpm66ufy22rft"
+path="res://.godot/imported/west.png-721f52ab7a924c9ea30a0b9420becae2.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/positional/west.png"
+dest_files=["res://.godot/imported/west.png-721f52ab7a924c9ea30a0b9420becae2.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps3/circle.png b/addons/controller_icons/assets/ps3/circle.png
new file mode 100644
index 0000000..10dd9b0
Binary files /dev/null and b/addons/controller_icons/assets/ps3/circle.png differ
diff --git a/addons/controller_icons/assets/ps3/circle.png.import b/addons/controller_icons/assets/ps3/circle.png.import
new file mode 100644
index 0000000..df1d618
--- /dev/null
+++ b/addons/controller_icons/assets/ps3/circle.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dse7uwpu8ckqc"
+path="res://.godot/imported/circle.png-70d1c7377e6d97fdb685a6b0754f3f42.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps3/circle.png"
+dest_files=["res://.godot/imported/circle.png-70d1c7377e6d97fdb685a6b0754f3f42.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps3/cross.png b/addons/controller_icons/assets/ps3/cross.png
new file mode 100644
index 0000000..73a42a7
Binary files /dev/null and b/addons/controller_icons/assets/ps3/cross.png differ
diff --git a/addons/controller_icons/assets/ps3/cross.png.import b/addons/controller_icons/assets/ps3/cross.png.import
new file mode 100644
index 0000000..04e353a
--- /dev/null
+++ b/addons/controller_icons/assets/ps3/cross.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://d2ucqffimqhnr"
+path="res://.godot/imported/cross.png-e329bed17ebc98e605153471fea82b80.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps3/cross.png"
+dest_files=["res://.godot/imported/cross.png-e329bed17ebc98e605153471fea82b80.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps3/dpad.png b/addons/controller_icons/assets/ps3/dpad.png
new file mode 100644
index 0000000..5a31103
Binary files /dev/null and b/addons/controller_icons/assets/ps3/dpad.png differ
diff --git a/addons/controller_icons/assets/ps3/dpad.png.import b/addons/controller_icons/assets/ps3/dpad.png.import
new file mode 100644
index 0000000..45bb64c
--- /dev/null
+++ b/addons/controller_icons/assets/ps3/dpad.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ckjwmngj4kbho"
+path="res://.godot/imported/dpad.png-4637fef7b5db266765dab22db8f811fd.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps3/dpad.png"
+dest_files=["res://.godot/imported/dpad.png-4637fef7b5db266765dab22db8f811fd.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps3/dpad_down.png b/addons/controller_icons/assets/ps3/dpad_down.png
new file mode 100644
index 0000000..dddcc0d
Binary files /dev/null and b/addons/controller_icons/assets/ps3/dpad_down.png differ
diff --git a/addons/controller_icons/assets/ps3/dpad_down.png.import b/addons/controller_icons/assets/ps3/dpad_down.png.import
new file mode 100644
index 0000000..ce7909a
--- /dev/null
+++ b/addons/controller_icons/assets/ps3/dpad_down.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cq5syvstyqo2a"
+path="res://.godot/imported/dpad_down.png-3aa92d8def03f8a78bef46eb393c9ccb.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps3/dpad_down.png"
+dest_files=["res://.godot/imported/dpad_down.png-3aa92d8def03f8a78bef46eb393c9ccb.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps3/dpad_left.png b/addons/controller_icons/assets/ps3/dpad_left.png
new file mode 100644
index 0000000..78beb63
Binary files /dev/null and b/addons/controller_icons/assets/ps3/dpad_left.png differ
diff --git a/addons/controller_icons/assets/ps3/dpad_left.png.import b/addons/controller_icons/assets/ps3/dpad_left.png.import
new file mode 100644
index 0000000..0c63630
--- /dev/null
+++ b/addons/controller_icons/assets/ps3/dpad_left.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bttmu8c1tn2rv"
+path="res://.godot/imported/dpad_left.png-1720ec3d2d90c298cf2b0d3b3eb8b92b.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps3/dpad_left.png"
+dest_files=["res://.godot/imported/dpad_left.png-1720ec3d2d90c298cf2b0d3b3eb8b92b.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps3/dpad_right.png b/addons/controller_icons/assets/ps3/dpad_right.png
new file mode 100644
index 0000000..94a6590
Binary files /dev/null and b/addons/controller_icons/assets/ps3/dpad_right.png differ
diff --git a/addons/controller_icons/assets/ps3/dpad_right.png.import b/addons/controller_icons/assets/ps3/dpad_right.png.import
new file mode 100644
index 0000000..5f03c24
--- /dev/null
+++ b/addons/controller_icons/assets/ps3/dpad_right.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cxqto8qkeu0f4"
+path="res://.godot/imported/dpad_right.png-7b72f2c4cc3545b46da3d768493a81ae.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps3/dpad_right.png"
+dest_files=["res://.godot/imported/dpad_right.png-7b72f2c4cc3545b46da3d768493a81ae.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps3/dpad_up.png b/addons/controller_icons/assets/ps3/dpad_up.png
new file mode 100644
index 0000000..5bc8705
Binary files /dev/null and b/addons/controller_icons/assets/ps3/dpad_up.png differ
diff --git a/addons/controller_icons/assets/ps3/dpad_up.png.import b/addons/controller_icons/assets/ps3/dpad_up.png.import
new file mode 100644
index 0000000..705ed6c
--- /dev/null
+++ b/addons/controller_icons/assets/ps3/dpad_up.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://crpwirpuob7pc"
+path="res://.godot/imported/dpad_up.png-021888c99c1636514946a171fb55ea78.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps3/dpad_up.png"
+dest_files=["res://.godot/imported/dpad_up.png-021888c99c1636514946a171fb55ea78.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps3/l1.png b/addons/controller_icons/assets/ps3/l1.png
new file mode 100644
index 0000000..8a1d87c
Binary files /dev/null and b/addons/controller_icons/assets/ps3/l1.png differ
diff --git a/addons/controller_icons/assets/ps3/l1.png.import b/addons/controller_icons/assets/ps3/l1.png.import
new file mode 100644
index 0000000..d13354a
--- /dev/null
+++ b/addons/controller_icons/assets/ps3/l1.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dap2udggtn0ap"
+path="res://.godot/imported/l1.png-dfeafeae6ba7ae1b62c84a1f737135c8.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps3/l1.png"
+dest_files=["res://.godot/imported/l1.png-dfeafeae6ba7ae1b62c84a1f737135c8.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps3/l2.png b/addons/controller_icons/assets/ps3/l2.png
new file mode 100644
index 0000000..3b938d1
Binary files /dev/null and b/addons/controller_icons/assets/ps3/l2.png differ
diff --git a/addons/controller_icons/assets/ps3/l2.png.import b/addons/controller_icons/assets/ps3/l2.png.import
new file mode 100644
index 0000000..9787930
--- /dev/null
+++ b/addons/controller_icons/assets/ps3/l2.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://byqc7vuhgliui"
+path="res://.godot/imported/l2.png-49cf84f948da7cf4a5ca5167681ae3d5.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps3/l2.png"
+dest_files=["res://.godot/imported/l2.png-49cf84f948da7cf4a5ca5167681ae3d5.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps3/l_stick.png b/addons/controller_icons/assets/ps3/l_stick.png
new file mode 100644
index 0000000..101b99c
Binary files /dev/null and b/addons/controller_icons/assets/ps3/l_stick.png differ
diff --git a/addons/controller_icons/assets/ps3/l_stick.png.import b/addons/controller_icons/assets/ps3/l_stick.png.import
new file mode 100644
index 0000000..605211f
--- /dev/null
+++ b/addons/controller_icons/assets/ps3/l_stick.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cccbypburqcvq"
+path="res://.godot/imported/l_stick.png-4d7ce55783c67f70a2df08cb2beff743.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps3/l_stick.png"
+dest_files=["res://.godot/imported/l_stick.png-4d7ce55783c67f70a2df08cb2beff743.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps3/l_stick_click.png b/addons/controller_icons/assets/ps3/l_stick_click.png
new file mode 100644
index 0000000..43b55a5
Binary files /dev/null and b/addons/controller_icons/assets/ps3/l_stick_click.png differ
diff --git a/addons/controller_icons/assets/ps3/l_stick_click.png.import b/addons/controller_icons/assets/ps3/l_stick_click.png.import
new file mode 100644
index 0000000..5559c42
--- /dev/null
+++ b/addons/controller_icons/assets/ps3/l_stick_click.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dd8k51h8nwcg0"
+path="res://.godot/imported/l_stick_click.png-3323df54acb88d23cb5dcf1d89369e9f.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps3/l_stick_click.png"
+dest_files=["res://.godot/imported/l_stick_click.png-3323df54acb88d23cb5dcf1d89369e9f.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps3/r1.png b/addons/controller_icons/assets/ps3/r1.png
new file mode 100644
index 0000000..722e405
Binary files /dev/null and b/addons/controller_icons/assets/ps3/r1.png differ
diff --git a/addons/controller_icons/assets/ps3/r1.png.import b/addons/controller_icons/assets/ps3/r1.png.import
new file mode 100644
index 0000000..99274ac
--- /dev/null
+++ b/addons/controller_icons/assets/ps3/r1.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c4kphw2308ie8"
+path="res://.godot/imported/r1.png-336215df5c25fad438a516b20a7e7b24.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps3/r1.png"
+dest_files=["res://.godot/imported/r1.png-336215df5c25fad438a516b20a7e7b24.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps3/r2.png b/addons/controller_icons/assets/ps3/r2.png
new file mode 100644
index 0000000..f05529f
Binary files /dev/null and b/addons/controller_icons/assets/ps3/r2.png differ
diff --git a/addons/controller_icons/assets/ps3/r2.png.import b/addons/controller_icons/assets/ps3/r2.png.import
new file mode 100644
index 0000000..48a2122
--- /dev/null
+++ b/addons/controller_icons/assets/ps3/r2.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://d3jlrd2rc72r4"
+path="res://.godot/imported/r2.png-9cd8110714aedc5d2a3dfc1ffdff8c02.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps3/r2.png"
+dest_files=["res://.godot/imported/r2.png-9cd8110714aedc5d2a3dfc1ffdff8c02.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps3/r_stick.png b/addons/controller_icons/assets/ps3/r_stick.png
new file mode 100644
index 0000000..374f589
Binary files /dev/null and b/addons/controller_icons/assets/ps3/r_stick.png differ
diff --git a/addons/controller_icons/assets/ps3/r_stick.png.import b/addons/controller_icons/assets/ps3/r_stick.png.import
new file mode 100644
index 0000000..d31864b
--- /dev/null
+++ b/addons/controller_icons/assets/ps3/r_stick.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bcbpy0rj57gkm"
+path="res://.godot/imported/r_stick.png-f749816036286088f35537738f770504.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps3/r_stick.png"
+dest_files=["res://.godot/imported/r_stick.png-f749816036286088f35537738f770504.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps3/r_stick_click.png b/addons/controller_icons/assets/ps3/r_stick_click.png
new file mode 100644
index 0000000..1af48a7
Binary files /dev/null and b/addons/controller_icons/assets/ps3/r_stick_click.png differ
diff --git a/addons/controller_icons/assets/ps3/r_stick_click.png.import b/addons/controller_icons/assets/ps3/r_stick_click.png.import
new file mode 100644
index 0000000..460ebfc
--- /dev/null
+++ b/addons/controller_icons/assets/ps3/r_stick_click.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://fxtf3vikkqnu"
+path="res://.godot/imported/r_stick_click.png-cde2b6f7baf1c09e35614699e80663da.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps3/r_stick_click.png"
+dest_files=["res://.godot/imported/r_stick_click.png-cde2b6f7baf1c09e35614699e80663da.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps3/select.png b/addons/controller_icons/assets/ps3/select.png
new file mode 100644
index 0000000..b493aff
Binary files /dev/null and b/addons/controller_icons/assets/ps3/select.png differ
diff --git a/addons/controller_icons/assets/ps3/select.png.import b/addons/controller_icons/assets/ps3/select.png.import
new file mode 100644
index 0000000..e79fae8
--- /dev/null
+++ b/addons/controller_icons/assets/ps3/select.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c1pnhjot6jh88"
+path="res://.godot/imported/select.png-522047772d3761e1a6d393174fcc2cdc.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps3/select.png"
+dest_files=["res://.godot/imported/select.png-522047772d3761e1a6d393174fcc2cdc.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps3/square.png b/addons/controller_icons/assets/ps3/square.png
new file mode 100644
index 0000000..3ad1286
Binary files /dev/null and b/addons/controller_icons/assets/ps3/square.png differ
diff --git a/addons/controller_icons/assets/ps3/square.png.import b/addons/controller_icons/assets/ps3/square.png.import
new file mode 100644
index 0000000..5e4a3c0
--- /dev/null
+++ b/addons/controller_icons/assets/ps3/square.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b2tvg7auwno7l"
+path="res://.godot/imported/square.png-acfb3df3c257e4d05e07c07b6c83dfc5.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps3/square.png"
+dest_files=["res://.godot/imported/square.png-acfb3df3c257e4d05e07c07b6c83dfc5.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps3/start.png b/addons/controller_icons/assets/ps3/start.png
new file mode 100644
index 0000000..3822fd8
Binary files /dev/null and b/addons/controller_icons/assets/ps3/start.png differ
diff --git a/addons/controller_icons/assets/ps3/start.png.import b/addons/controller_icons/assets/ps3/start.png.import
new file mode 100644
index 0000000..2f7d958
--- /dev/null
+++ b/addons/controller_icons/assets/ps3/start.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dx4t1kuqepf8f"
+path="res://.godot/imported/start.png-5eb6d70080bded8525bed5b22e1fd045.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps3/start.png"
+dest_files=["res://.godot/imported/start.png-5eb6d70080bded8525bed5b22e1fd045.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps3/triangle.png b/addons/controller_icons/assets/ps3/triangle.png
new file mode 100644
index 0000000..9dcdbba
Binary files /dev/null and b/addons/controller_icons/assets/ps3/triangle.png differ
diff --git a/addons/controller_icons/assets/ps3/triangle.png.import b/addons/controller_icons/assets/ps3/triangle.png.import
new file mode 100644
index 0000000..6ec573c
--- /dev/null
+++ b/addons/controller_icons/assets/ps3/triangle.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bq378yldukdlh"
+path="res://.godot/imported/triangle.png-636bd5a4c11993247c97be299c04f5ef.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps3/triangle.png"
+dest_files=["res://.godot/imported/triangle.png-636bd5a4c11993247c97be299c04f5ef.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps4/circle.png b/addons/controller_icons/assets/ps4/circle.png
new file mode 100644
index 0000000..10dd9b0
Binary files /dev/null and b/addons/controller_icons/assets/ps4/circle.png differ
diff --git a/addons/controller_icons/assets/ps4/circle.png.import b/addons/controller_icons/assets/ps4/circle.png.import
new file mode 100644
index 0000000..7074055
--- /dev/null
+++ b/addons/controller_icons/assets/ps4/circle.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bdnj53115obj6"
+path="res://.godot/imported/circle.png-01df92401a316edc4ce14b20766177ab.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps4/circle.png"
+dest_files=["res://.godot/imported/circle.png-01df92401a316edc4ce14b20766177ab.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps4/cross.png b/addons/controller_icons/assets/ps4/cross.png
new file mode 100644
index 0000000..73a42a7
Binary files /dev/null and b/addons/controller_icons/assets/ps4/cross.png differ
diff --git a/addons/controller_icons/assets/ps4/cross.png.import b/addons/controller_icons/assets/ps4/cross.png.import
new file mode 100644
index 0000000..4cf76f0
--- /dev/null
+++ b/addons/controller_icons/assets/ps4/cross.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bnvbg64nsbaf4"
+path="res://.godot/imported/cross.png-e713dddd604d213d7729201a660a0525.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps4/cross.png"
+dest_files=["res://.godot/imported/cross.png-e713dddd604d213d7729201a660a0525.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps4/diagram.png b/addons/controller_icons/assets/ps4/diagram.png
new file mode 100644
index 0000000..9af791a
Binary files /dev/null and b/addons/controller_icons/assets/ps4/diagram.png differ
diff --git a/addons/controller_icons/assets/ps4/diagram.png.import b/addons/controller_icons/assets/ps4/diagram.png.import
new file mode 100644
index 0000000..dc26947
--- /dev/null
+++ b/addons/controller_icons/assets/ps4/diagram.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cpmt0ar1hehq3"
+path="res://.godot/imported/diagram.png-0ae298bc80cd0126f885be209e23a765.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps4/diagram.png"
+dest_files=["res://.godot/imported/diagram.png-0ae298bc80cd0126f885be209e23a765.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps4/diagram_simple.png b/addons/controller_icons/assets/ps4/diagram_simple.png
new file mode 100644
index 0000000..d703c4d
Binary files /dev/null and b/addons/controller_icons/assets/ps4/diagram_simple.png differ
diff --git a/addons/controller_icons/assets/ps4/diagram_simple.png.import b/addons/controller_icons/assets/ps4/diagram_simple.png.import
new file mode 100644
index 0000000..97e8b54
--- /dev/null
+++ b/addons/controller_icons/assets/ps4/diagram_simple.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dpmkvhixf4p61"
+path="res://.godot/imported/diagram_simple.png-5fdad32ea7c3ffc2b56944758c7cd03e.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps4/diagram_simple.png"
+dest_files=["res://.godot/imported/diagram_simple.png-5fdad32ea7c3ffc2b56944758c7cd03e.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps4/dpad.png b/addons/controller_icons/assets/ps4/dpad.png
new file mode 100644
index 0000000..5a31103
Binary files /dev/null and b/addons/controller_icons/assets/ps4/dpad.png differ
diff --git a/addons/controller_icons/assets/ps4/dpad.png.import b/addons/controller_icons/assets/ps4/dpad.png.import
new file mode 100644
index 0000000..766b555
--- /dev/null
+++ b/addons/controller_icons/assets/ps4/dpad.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dv7bykspkb5hd"
+path="res://.godot/imported/dpad.png-dd021d29d27d6122ce9bfcfb1bbb021b.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps4/dpad.png"
+dest_files=["res://.godot/imported/dpad.png-dd021d29d27d6122ce9bfcfb1bbb021b.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps4/dpad_down.png b/addons/controller_icons/assets/ps4/dpad_down.png
new file mode 100644
index 0000000..dddcc0d
Binary files /dev/null and b/addons/controller_icons/assets/ps4/dpad_down.png differ
diff --git a/addons/controller_icons/assets/ps4/dpad_down.png.import b/addons/controller_icons/assets/ps4/dpad_down.png.import
new file mode 100644
index 0000000..8085673
--- /dev/null
+++ b/addons/controller_icons/assets/ps4/dpad_down.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bmdsp6d1d1abc"
+path="res://.godot/imported/dpad_down.png-59c0669558772f9d842bb5f97d6efb92.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps4/dpad_down.png"
+dest_files=["res://.godot/imported/dpad_down.png-59c0669558772f9d842bb5f97d6efb92.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps4/dpad_left.png b/addons/controller_icons/assets/ps4/dpad_left.png
new file mode 100644
index 0000000..78beb63
Binary files /dev/null and b/addons/controller_icons/assets/ps4/dpad_left.png differ
diff --git a/addons/controller_icons/assets/ps4/dpad_left.png.import b/addons/controller_icons/assets/ps4/dpad_left.png.import
new file mode 100644
index 0000000..26a8122
--- /dev/null
+++ b/addons/controller_icons/assets/ps4/dpad_left.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dyqy2t346i7n4"
+path="res://.godot/imported/dpad_left.png-0293ca67b8114377516161a62ab1783a.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps4/dpad_left.png"
+dest_files=["res://.godot/imported/dpad_left.png-0293ca67b8114377516161a62ab1783a.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps4/dpad_right.png b/addons/controller_icons/assets/ps4/dpad_right.png
new file mode 100644
index 0000000..94a6590
Binary files /dev/null and b/addons/controller_icons/assets/ps4/dpad_right.png differ
diff --git a/addons/controller_icons/assets/ps4/dpad_right.png.import b/addons/controller_icons/assets/ps4/dpad_right.png.import
new file mode 100644
index 0000000..5a735d0
--- /dev/null
+++ b/addons/controller_icons/assets/ps4/dpad_right.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bl5rce50vbnn7"
+path="res://.godot/imported/dpad_right.png-deac173b424649225684e25625f0bea1.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps4/dpad_right.png"
+dest_files=["res://.godot/imported/dpad_right.png-deac173b424649225684e25625f0bea1.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps4/dpad_up.png b/addons/controller_icons/assets/ps4/dpad_up.png
new file mode 100644
index 0000000..5bc8705
Binary files /dev/null and b/addons/controller_icons/assets/ps4/dpad_up.png differ
diff --git a/addons/controller_icons/assets/ps4/dpad_up.png.import b/addons/controller_icons/assets/ps4/dpad_up.png.import
new file mode 100644
index 0000000..3b056c5
--- /dev/null
+++ b/addons/controller_icons/assets/ps4/dpad_up.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://crf0mhukst7cs"
+path="res://.godot/imported/dpad_up.png-29b188f1af23baff02984fc1f7680ac3.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps4/dpad_up.png"
+dest_files=["res://.godot/imported/dpad_up.png-29b188f1af23baff02984fc1f7680ac3.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps4/l1.png b/addons/controller_icons/assets/ps4/l1.png
new file mode 100644
index 0000000..6be5fcb
Binary files /dev/null and b/addons/controller_icons/assets/ps4/l1.png differ
diff --git a/addons/controller_icons/assets/ps4/l1.png.import b/addons/controller_icons/assets/ps4/l1.png.import
new file mode 100644
index 0000000..bc998e6
--- /dev/null
+++ b/addons/controller_icons/assets/ps4/l1.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bx646jls6fotu"
+path="res://.godot/imported/l1.png-95ac4b86b63cb6d6063d04c34423e038.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps4/l1.png"
+dest_files=["res://.godot/imported/l1.png-95ac4b86b63cb6d6063d04c34423e038.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps4/l2.png b/addons/controller_icons/assets/ps4/l2.png
new file mode 100644
index 0000000..7abdfef
Binary files /dev/null and b/addons/controller_icons/assets/ps4/l2.png differ
diff --git a/addons/controller_icons/assets/ps4/l2.png.import b/addons/controller_icons/assets/ps4/l2.png.import
new file mode 100644
index 0000000..af676dc
--- /dev/null
+++ b/addons/controller_icons/assets/ps4/l2.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c6430g8j7ft6t"
+path="res://.godot/imported/l2.png-4dcb2ad01f6cbc33aa48ee09f5756380.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps4/l2.png"
+dest_files=["res://.godot/imported/l2.png-4dcb2ad01f6cbc33aa48ee09f5756380.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps4/l_stick.png b/addons/controller_icons/assets/ps4/l_stick.png
new file mode 100644
index 0000000..61b6330
Binary files /dev/null and b/addons/controller_icons/assets/ps4/l_stick.png differ
diff --git a/addons/controller_icons/assets/ps4/l_stick.png.import b/addons/controller_icons/assets/ps4/l_stick.png.import
new file mode 100644
index 0000000..44eff72
--- /dev/null
+++ b/addons/controller_icons/assets/ps4/l_stick.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b8y3vc8sn5lvu"
+path="res://.godot/imported/l_stick.png-fc48bbb457eb14f55412c04cde7dc518.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps4/l_stick.png"
+dest_files=["res://.godot/imported/l_stick.png-fc48bbb457eb14f55412c04cde7dc518.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps4/l_stick_click.png b/addons/controller_icons/assets/ps4/l_stick_click.png
new file mode 100644
index 0000000..ad0428f
Binary files /dev/null and b/addons/controller_icons/assets/ps4/l_stick_click.png differ
diff --git a/addons/controller_icons/assets/ps4/l_stick_click.png.import b/addons/controller_icons/assets/ps4/l_stick_click.png.import
new file mode 100644
index 0000000..1fe733a
--- /dev/null
+++ b/addons/controller_icons/assets/ps4/l_stick_click.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dyste7anvays1"
+path="res://.godot/imported/l_stick_click.png-9e3d30c01f3f7fbbd1bf8d68e875e502.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps4/l_stick_click.png"
+dest_files=["res://.godot/imported/l_stick_click.png-9e3d30c01f3f7fbbd1bf8d68e875e502.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps4/options.png b/addons/controller_icons/assets/ps4/options.png
new file mode 100644
index 0000000..21820ed
Binary files /dev/null and b/addons/controller_icons/assets/ps4/options.png differ
diff --git a/addons/controller_icons/assets/ps4/options.png.import b/addons/controller_icons/assets/ps4/options.png.import
new file mode 100644
index 0000000..3e1aa91
--- /dev/null
+++ b/addons/controller_icons/assets/ps4/options.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cfbt1pwpnjvva"
+path="res://.godot/imported/options.png-c3fb31c3e90305771b4ea74b6c139e3e.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps4/options.png"
+dest_files=["res://.godot/imported/options.png-c3fb31c3e90305771b4ea74b6c139e3e.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps4/r1.png b/addons/controller_icons/assets/ps4/r1.png
new file mode 100644
index 0000000..b296a5e
Binary files /dev/null and b/addons/controller_icons/assets/ps4/r1.png differ
diff --git a/addons/controller_icons/assets/ps4/r1.png.import b/addons/controller_icons/assets/ps4/r1.png.import
new file mode 100644
index 0000000..9e7bcfd
--- /dev/null
+++ b/addons/controller_icons/assets/ps4/r1.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bs7lcrl1jinbj"
+path="res://.godot/imported/r1.png-b2cc33e4d5182caa83ca9d0b07abef24.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps4/r1.png"
+dest_files=["res://.godot/imported/r1.png-b2cc33e4d5182caa83ca9d0b07abef24.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps4/r2.png b/addons/controller_icons/assets/ps4/r2.png
new file mode 100644
index 0000000..0303819
Binary files /dev/null and b/addons/controller_icons/assets/ps4/r2.png differ
diff --git a/addons/controller_icons/assets/ps4/r2.png.import b/addons/controller_icons/assets/ps4/r2.png.import
new file mode 100644
index 0000000..bcbf632
--- /dev/null
+++ b/addons/controller_icons/assets/ps4/r2.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dogjufp4vxrnq"
+path="res://.godot/imported/r2.png-0f2740d264d9152a0d962dc06d3c7e12.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps4/r2.png"
+dest_files=["res://.godot/imported/r2.png-0f2740d264d9152a0d962dc06d3c7e12.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps4/r_stick.png b/addons/controller_icons/assets/ps4/r_stick.png
new file mode 100644
index 0000000..91d66f4
Binary files /dev/null and b/addons/controller_icons/assets/ps4/r_stick.png differ
diff --git a/addons/controller_icons/assets/ps4/r_stick.png.import b/addons/controller_icons/assets/ps4/r_stick.png.import
new file mode 100644
index 0000000..aee587d
--- /dev/null
+++ b/addons/controller_icons/assets/ps4/r_stick.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://lvpdaaqg50mi"
+path="res://.godot/imported/r_stick.png-335f2cba5a6bd621c084beb16d4cb930.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps4/r_stick.png"
+dest_files=["res://.godot/imported/r_stick.png-335f2cba5a6bd621c084beb16d4cb930.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps4/r_stick_click.png b/addons/controller_icons/assets/ps4/r_stick_click.png
new file mode 100644
index 0000000..de08508
Binary files /dev/null and b/addons/controller_icons/assets/ps4/r_stick_click.png differ
diff --git a/addons/controller_icons/assets/ps4/r_stick_click.png.import b/addons/controller_icons/assets/ps4/r_stick_click.png.import
new file mode 100644
index 0000000..c72e258
--- /dev/null
+++ b/addons/controller_icons/assets/ps4/r_stick_click.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://nk2eyp23eiup"
+path="res://.godot/imported/r_stick_click.png-d648f8e76cb1035ebd104fecb0d0c268.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps4/r_stick_click.png"
+dest_files=["res://.godot/imported/r_stick_click.png-d648f8e76cb1035ebd104fecb0d0c268.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps4/share.png b/addons/controller_icons/assets/ps4/share.png
new file mode 100644
index 0000000..9a1c4ab
Binary files /dev/null and b/addons/controller_icons/assets/ps4/share.png differ
diff --git a/addons/controller_icons/assets/ps4/share.png.import b/addons/controller_icons/assets/ps4/share.png.import
new file mode 100644
index 0000000..6e8b616
--- /dev/null
+++ b/addons/controller_icons/assets/ps4/share.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://btjpw3784tqwk"
+path="res://.godot/imported/share.png-8f5440356f77d78ad3f3982e23b727b9.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps4/share.png"
+dest_files=["res://.godot/imported/share.png-8f5440356f77d78ad3f3982e23b727b9.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps4/square.png b/addons/controller_icons/assets/ps4/square.png
new file mode 100644
index 0000000..3ad1286
Binary files /dev/null and b/addons/controller_icons/assets/ps4/square.png differ
diff --git a/addons/controller_icons/assets/ps4/square.png.import b/addons/controller_icons/assets/ps4/square.png.import
new file mode 100644
index 0000000..395d114
--- /dev/null
+++ b/addons/controller_icons/assets/ps4/square.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://77f8q5t0w3gy"
+path="res://.godot/imported/square.png-ee72c07940fd3321db35ceefeb290300.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps4/square.png"
+dest_files=["res://.godot/imported/square.png-ee72c07940fd3321db35ceefeb290300.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps4/touch_pad.png b/addons/controller_icons/assets/ps4/touch_pad.png
new file mode 100644
index 0000000..2c8e730
Binary files /dev/null and b/addons/controller_icons/assets/ps4/touch_pad.png differ
diff --git a/addons/controller_icons/assets/ps4/touch_pad.png.import b/addons/controller_icons/assets/ps4/touch_pad.png.import
new file mode 100644
index 0000000..83f858a
--- /dev/null
+++ b/addons/controller_icons/assets/ps4/touch_pad.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bk8ykwla3kyee"
+path="res://.godot/imported/touch_pad.png-7bbb4179df1c702619f3e56dc6165c73.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps4/touch_pad.png"
+dest_files=["res://.godot/imported/touch_pad.png-7bbb4179df1c702619f3e56dc6165c73.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps4/triangle.png b/addons/controller_icons/assets/ps4/triangle.png
new file mode 100644
index 0000000..9dcdbba
Binary files /dev/null and b/addons/controller_icons/assets/ps4/triangle.png differ
diff --git a/addons/controller_icons/assets/ps4/triangle.png.import b/addons/controller_icons/assets/ps4/triangle.png.import
new file mode 100644
index 0000000..862e350
--- /dev/null
+++ b/addons/controller_icons/assets/ps4/triangle.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://xklewd7k0tim"
+path="res://.godot/imported/triangle.png-da43fcba8230ca87ef19d28e68d91ddc.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps4/triangle.png"
+dest_files=["res://.godot/imported/triangle.png-da43fcba8230ca87ef19d28e68d91ddc.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps5/circle.png b/addons/controller_icons/assets/ps5/circle.png
new file mode 100644
index 0000000..05a89a9
Binary files /dev/null and b/addons/controller_icons/assets/ps5/circle.png differ
diff --git a/addons/controller_icons/assets/ps5/circle.png.import b/addons/controller_icons/assets/ps5/circle.png.import
new file mode 100644
index 0000000..154d90a
--- /dev/null
+++ b/addons/controller_icons/assets/ps5/circle.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bri4438gvie1f"
+path="res://.godot/imported/circle.png-899c1a608c9238361ba9359dc8352237.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps5/circle.png"
+dest_files=["res://.godot/imported/circle.png-899c1a608c9238361ba9359dc8352237.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps5/cross.png b/addons/controller_icons/assets/ps5/cross.png
new file mode 100644
index 0000000..395a898
Binary files /dev/null and b/addons/controller_icons/assets/ps5/cross.png differ
diff --git a/addons/controller_icons/assets/ps5/cross.png.import b/addons/controller_icons/assets/ps5/cross.png.import
new file mode 100644
index 0000000..9f789ab
--- /dev/null
+++ b/addons/controller_icons/assets/ps5/cross.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://belyhno2tge45"
+path="res://.godot/imported/cross.png-b283effc447d98ff8075473f129fd229.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps5/cross.png"
+dest_files=["res://.godot/imported/cross.png-b283effc447d98ff8075473f129fd229.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps5/diagram.png b/addons/controller_icons/assets/ps5/diagram.png
new file mode 100644
index 0000000..d452d34
Binary files /dev/null and b/addons/controller_icons/assets/ps5/diagram.png differ
diff --git a/addons/controller_icons/assets/ps5/diagram.png.import b/addons/controller_icons/assets/ps5/diagram.png.import
new file mode 100644
index 0000000..27a2f22
--- /dev/null
+++ b/addons/controller_icons/assets/ps5/diagram.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://e46bxi0x8sk2"
+path="res://.godot/imported/diagram.png-21a10cf2a3943fa6401b25cac8533abe.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps5/diagram.png"
+dest_files=["res://.godot/imported/diagram.png-21a10cf2a3943fa6401b25cac8533abe.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps5/diagram_simple.png b/addons/controller_icons/assets/ps5/diagram_simple.png
new file mode 100644
index 0000000..99d85c9
Binary files /dev/null and b/addons/controller_icons/assets/ps5/diagram_simple.png differ
diff --git a/addons/controller_icons/assets/ps5/diagram_simple.png.import b/addons/controller_icons/assets/ps5/diagram_simple.png.import
new file mode 100644
index 0000000..413e652
--- /dev/null
+++ b/addons/controller_icons/assets/ps5/diagram_simple.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dackqyp4i6pej"
+path="res://.godot/imported/diagram_simple.png-1787b04a8e001e271d295cd5be2dbc04.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps5/diagram_simple.png"
+dest_files=["res://.godot/imported/diagram_simple.png-1787b04a8e001e271d295cd5be2dbc04.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps5/dpad.png b/addons/controller_icons/assets/ps5/dpad.png
new file mode 100644
index 0000000..49e6405
Binary files /dev/null and b/addons/controller_icons/assets/ps5/dpad.png differ
diff --git a/addons/controller_icons/assets/ps5/dpad.png.import b/addons/controller_icons/assets/ps5/dpad.png.import
new file mode 100644
index 0000000..4df92b6
--- /dev/null
+++ b/addons/controller_icons/assets/ps5/dpad.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://beffl6nv8eoce"
+path="res://.godot/imported/dpad.png-00aec67b45feaa97b1794d743c936d5f.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps5/dpad.png"
+dest_files=["res://.godot/imported/dpad.png-00aec67b45feaa97b1794d743c936d5f.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps5/dpad_down.png b/addons/controller_icons/assets/ps5/dpad_down.png
new file mode 100644
index 0000000..a8f893a
Binary files /dev/null and b/addons/controller_icons/assets/ps5/dpad_down.png differ
diff --git a/addons/controller_icons/assets/ps5/dpad_down.png.import b/addons/controller_icons/assets/ps5/dpad_down.png.import
new file mode 100644
index 0000000..95f2d24
--- /dev/null
+++ b/addons/controller_icons/assets/ps5/dpad_down.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cfatmi6wvlpfo"
+path="res://.godot/imported/dpad_down.png-3feaef9a314dd6ae52a31ef8569ba2bc.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps5/dpad_down.png"
+dest_files=["res://.godot/imported/dpad_down.png-3feaef9a314dd6ae52a31ef8569ba2bc.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps5/dpad_left.png b/addons/controller_icons/assets/ps5/dpad_left.png
new file mode 100644
index 0000000..2bdc048
Binary files /dev/null and b/addons/controller_icons/assets/ps5/dpad_left.png differ
diff --git a/addons/controller_icons/assets/ps5/dpad_left.png.import b/addons/controller_icons/assets/ps5/dpad_left.png.import
new file mode 100644
index 0000000..988ea21
--- /dev/null
+++ b/addons/controller_icons/assets/ps5/dpad_left.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ckx3ofvrb3luj"
+path="res://.godot/imported/dpad_left.png-64bf99650504668c7743f369e8d66e99.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps5/dpad_left.png"
+dest_files=["res://.godot/imported/dpad_left.png-64bf99650504668c7743f369e8d66e99.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps5/dpad_right.png b/addons/controller_icons/assets/ps5/dpad_right.png
new file mode 100644
index 0000000..b7cd568
Binary files /dev/null and b/addons/controller_icons/assets/ps5/dpad_right.png differ
diff --git a/addons/controller_icons/assets/ps5/dpad_right.png.import b/addons/controller_icons/assets/ps5/dpad_right.png.import
new file mode 100644
index 0000000..b39ed06
--- /dev/null
+++ b/addons/controller_icons/assets/ps5/dpad_right.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bha2mk6ybhqq1"
+path="res://.godot/imported/dpad_right.png-ac99de9134bc8dac8efce489d7997a23.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps5/dpad_right.png"
+dest_files=["res://.godot/imported/dpad_right.png-ac99de9134bc8dac8efce489d7997a23.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps5/dpad_up.png b/addons/controller_icons/assets/ps5/dpad_up.png
new file mode 100644
index 0000000..99180d2
Binary files /dev/null and b/addons/controller_icons/assets/ps5/dpad_up.png differ
diff --git a/addons/controller_icons/assets/ps5/dpad_up.png.import b/addons/controller_icons/assets/ps5/dpad_up.png.import
new file mode 100644
index 0000000..b39cf34
--- /dev/null
+++ b/addons/controller_icons/assets/ps5/dpad_up.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://chj3vtwuwu2fa"
+path="res://.godot/imported/dpad_up.png-bea6ace373247dd17fb25f7f3e0f6b07.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps5/dpad_up.png"
+dest_files=["res://.godot/imported/dpad_up.png-bea6ace373247dd17fb25f7f3e0f6b07.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps5/l1.png b/addons/controller_icons/assets/ps5/l1.png
new file mode 100644
index 0000000..07e505a
Binary files /dev/null and b/addons/controller_icons/assets/ps5/l1.png differ
diff --git a/addons/controller_icons/assets/ps5/l1.png.import b/addons/controller_icons/assets/ps5/l1.png.import
new file mode 100644
index 0000000..1fe6e42
--- /dev/null
+++ b/addons/controller_icons/assets/ps5/l1.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cptsbtql4gq7f"
+path="res://.godot/imported/l1.png-1dbab572c17a5f38e671c2db53d5037e.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps5/l1.png"
+dest_files=["res://.godot/imported/l1.png-1dbab572c17a5f38e671c2db53d5037e.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps5/l2.png b/addons/controller_icons/assets/ps5/l2.png
new file mode 100644
index 0000000..05f3dd2
Binary files /dev/null and b/addons/controller_icons/assets/ps5/l2.png differ
diff --git a/addons/controller_icons/assets/ps5/l2.png.import b/addons/controller_icons/assets/ps5/l2.png.import
new file mode 100644
index 0000000..0d91976
--- /dev/null
+++ b/addons/controller_icons/assets/ps5/l2.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dr554tkwtvx7d"
+path="res://.godot/imported/l2.png-e8cc4c0283c6b3b54d63e008d0690aa6.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps5/l2.png"
+dest_files=["res://.godot/imported/l2.png-e8cc4c0283c6b3b54d63e008d0690aa6.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps5/l_stick.png b/addons/controller_icons/assets/ps5/l_stick.png
new file mode 100644
index 0000000..0245ff8
Binary files /dev/null and b/addons/controller_icons/assets/ps5/l_stick.png differ
diff --git a/addons/controller_icons/assets/ps5/l_stick.png.import b/addons/controller_icons/assets/ps5/l_stick.png.import
new file mode 100644
index 0000000..eba2cf3
--- /dev/null
+++ b/addons/controller_icons/assets/ps5/l_stick.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dwkmm5mtpc46o"
+path="res://.godot/imported/l_stick.png-fba628dc0742fc567477799a16835c0f.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps5/l_stick.png"
+dest_files=["res://.godot/imported/l_stick.png-fba628dc0742fc567477799a16835c0f.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps5/l_stick_click.png b/addons/controller_icons/assets/ps5/l_stick_click.png
new file mode 100644
index 0000000..66e5271
Binary files /dev/null and b/addons/controller_icons/assets/ps5/l_stick_click.png differ
diff --git a/addons/controller_icons/assets/ps5/l_stick_click.png.import b/addons/controller_icons/assets/ps5/l_stick_click.png.import
new file mode 100644
index 0000000..7c7ea1f
--- /dev/null
+++ b/addons/controller_icons/assets/ps5/l_stick_click.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://2ehovw43mq41"
+path="res://.godot/imported/l_stick_click.png-ca560b0370da6348af3fa4a6dd2b76f5.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps5/l_stick_click.png"
+dest_files=["res://.godot/imported/l_stick_click.png-ca560b0370da6348af3fa4a6dd2b76f5.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps5/microphone.png b/addons/controller_icons/assets/ps5/microphone.png
new file mode 100644
index 0000000..bb0f331
Binary files /dev/null and b/addons/controller_icons/assets/ps5/microphone.png differ
diff --git a/addons/controller_icons/assets/ps5/microphone.png.import b/addons/controller_icons/assets/ps5/microphone.png.import
new file mode 100644
index 0000000..467b2be
--- /dev/null
+++ b/addons/controller_icons/assets/ps5/microphone.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://pjngcu888j2h"
+path="res://.godot/imported/microphone.png-52a21a21c13dc3691829948c71961c62.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps5/microphone.png"
+dest_files=["res://.godot/imported/microphone.png-52a21a21c13dc3691829948c71961c62.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps5/options.png b/addons/controller_icons/assets/ps5/options.png
new file mode 100644
index 0000000..3e56fe2
Binary files /dev/null and b/addons/controller_icons/assets/ps5/options.png differ
diff --git a/addons/controller_icons/assets/ps5/options.png.import b/addons/controller_icons/assets/ps5/options.png.import
new file mode 100644
index 0000000..9e5fd7a
--- /dev/null
+++ b/addons/controller_icons/assets/ps5/options.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dihbnhx3krnjw"
+path="res://.godot/imported/options.png-da4d32b86bae8f981620c1bbef1482ca.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps5/options.png"
+dest_files=["res://.godot/imported/options.png-da4d32b86bae8f981620c1bbef1482ca.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps5/options_alt.png b/addons/controller_icons/assets/ps5/options_alt.png
new file mode 100644
index 0000000..ca28364
Binary files /dev/null and b/addons/controller_icons/assets/ps5/options_alt.png differ
diff --git a/addons/controller_icons/assets/ps5/options_alt.png.import b/addons/controller_icons/assets/ps5/options_alt.png.import
new file mode 100644
index 0000000..8cc672c
--- /dev/null
+++ b/addons/controller_icons/assets/ps5/options_alt.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cfn54dcp6oime"
+path="res://.godot/imported/options_alt.png-c593663a8f76955c80b23e8f042168ca.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps5/options_alt.png"
+dest_files=["res://.godot/imported/options_alt.png-c593663a8f76955c80b23e8f042168ca.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps5/r1.png b/addons/controller_icons/assets/ps5/r1.png
new file mode 100644
index 0000000..2cff97a
Binary files /dev/null and b/addons/controller_icons/assets/ps5/r1.png differ
diff --git a/addons/controller_icons/assets/ps5/r1.png.import b/addons/controller_icons/assets/ps5/r1.png.import
new file mode 100644
index 0000000..270848a
--- /dev/null
+++ b/addons/controller_icons/assets/ps5/r1.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dshu7ejne3fv3"
+path="res://.godot/imported/r1.png-fa610c0190f3f0984090193cb99c26c3.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps5/r1.png"
+dest_files=["res://.godot/imported/r1.png-fa610c0190f3f0984090193cb99c26c3.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps5/r2.png b/addons/controller_icons/assets/ps5/r2.png
new file mode 100644
index 0000000..a13f17f
Binary files /dev/null and b/addons/controller_icons/assets/ps5/r2.png differ
diff --git a/addons/controller_icons/assets/ps5/r2.png.import b/addons/controller_icons/assets/ps5/r2.png.import
new file mode 100644
index 0000000..d729ca3
--- /dev/null
+++ b/addons/controller_icons/assets/ps5/r2.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dwxe8qbcua1to"
+path="res://.godot/imported/r2.png-b8eac74642614e99f555e46a0181e4d0.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps5/r2.png"
+dest_files=["res://.godot/imported/r2.png-b8eac74642614e99f555e46a0181e4d0.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps5/r_stick.png b/addons/controller_icons/assets/ps5/r_stick.png
new file mode 100644
index 0000000..85c1556
Binary files /dev/null and b/addons/controller_icons/assets/ps5/r_stick.png differ
diff --git a/addons/controller_icons/assets/ps5/r_stick.png.import b/addons/controller_icons/assets/ps5/r_stick.png.import
new file mode 100644
index 0000000..0aba277
--- /dev/null
+++ b/addons/controller_icons/assets/ps5/r_stick.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c4orcrdsy1akr"
+path="res://.godot/imported/r_stick.png-307bf90c96a761c29568ba8c2317686c.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps5/r_stick.png"
+dest_files=["res://.godot/imported/r_stick.png-307bf90c96a761c29568ba8c2317686c.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps5/r_stick_click.png b/addons/controller_icons/assets/ps5/r_stick_click.png
new file mode 100644
index 0000000..eecd4e8
Binary files /dev/null and b/addons/controller_icons/assets/ps5/r_stick_click.png differ
diff --git a/addons/controller_icons/assets/ps5/r_stick_click.png.import b/addons/controller_icons/assets/ps5/r_stick_click.png.import
new file mode 100644
index 0000000..8be1aa1
--- /dev/null
+++ b/addons/controller_icons/assets/ps5/r_stick_click.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dpvd1a8tomykb"
+path="res://.godot/imported/r_stick_click.png-971e79762425c58c9da5a80737fe31cc.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps5/r_stick_click.png"
+dest_files=["res://.godot/imported/r_stick_click.png-971e79762425c58c9da5a80737fe31cc.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps5/share.png b/addons/controller_icons/assets/ps5/share.png
new file mode 100644
index 0000000..d96e698
Binary files /dev/null and b/addons/controller_icons/assets/ps5/share.png differ
diff --git a/addons/controller_icons/assets/ps5/share.png.import b/addons/controller_icons/assets/ps5/share.png.import
new file mode 100644
index 0000000..fdc4c83
--- /dev/null
+++ b/addons/controller_icons/assets/ps5/share.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cagxvtko4awd8"
+path="res://.godot/imported/share.png-a33890317e3226e9b99cebbbfe855141.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps5/share.png"
+dest_files=["res://.godot/imported/share.png-a33890317e3226e9b99cebbbfe855141.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps5/share_alt.png b/addons/controller_icons/assets/ps5/share_alt.png
new file mode 100644
index 0000000..10941aa
Binary files /dev/null and b/addons/controller_icons/assets/ps5/share_alt.png differ
diff --git a/addons/controller_icons/assets/ps5/share_alt.png.import b/addons/controller_icons/assets/ps5/share_alt.png.import
new file mode 100644
index 0000000..a11ffcf
--- /dev/null
+++ b/addons/controller_icons/assets/ps5/share_alt.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bl176l6frbhu"
+path="res://.godot/imported/share_alt.png-15dd25ceafbe1a81af5420db0b8177fb.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps5/share_alt.png"
+dest_files=["res://.godot/imported/share_alt.png-15dd25ceafbe1a81af5420db0b8177fb.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps5/square.png b/addons/controller_icons/assets/ps5/square.png
new file mode 100644
index 0000000..20f6065
Binary files /dev/null and b/addons/controller_icons/assets/ps5/square.png differ
diff --git a/addons/controller_icons/assets/ps5/square.png.import b/addons/controller_icons/assets/ps5/square.png.import
new file mode 100644
index 0000000..5be29e5
--- /dev/null
+++ b/addons/controller_icons/assets/ps5/square.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bb8qjwcmyrtk4"
+path="res://.godot/imported/square.png-3f9dd349449b9b92bc9a0b5deebb6dc4.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps5/square.png"
+dest_files=["res://.godot/imported/square.png-3f9dd349449b9b92bc9a0b5deebb6dc4.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps5/touch_pad.png b/addons/controller_icons/assets/ps5/touch_pad.png
new file mode 100644
index 0000000..1a77d0c
Binary files /dev/null and b/addons/controller_icons/assets/ps5/touch_pad.png differ
diff --git a/addons/controller_icons/assets/ps5/touch_pad.png.import b/addons/controller_icons/assets/ps5/touch_pad.png.import
new file mode 100644
index 0000000..30d3dae
--- /dev/null
+++ b/addons/controller_icons/assets/ps5/touch_pad.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://drx7nm004x5i3"
+path="res://.godot/imported/touch_pad.png-1ef4d501193c49e180986793017fe36a.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps5/touch_pad.png"
+dest_files=["res://.godot/imported/touch_pad.png-1ef4d501193c49e180986793017fe36a.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/ps5/triangle.png b/addons/controller_icons/assets/ps5/triangle.png
new file mode 100644
index 0000000..4950d17
Binary files /dev/null and b/addons/controller_icons/assets/ps5/triangle.png differ
diff --git a/addons/controller_icons/assets/ps5/triangle.png.import b/addons/controller_icons/assets/ps5/triangle.png.import
new file mode 100644
index 0000000..6d02bf0
--- /dev/null
+++ b/addons/controller_icons/assets/ps5/triangle.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c05iqfpx578f2"
+path="res://.godot/imported/triangle.png-c318942d066e6716a1f2a4c38ef81b3e.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/ps5/triangle.png"
+dest_files=["res://.godot/imported/triangle.png-c318942d066e6716a1f2a4c38ef81b3e.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/stadia/a.png b/addons/controller_icons/assets/stadia/a.png
new file mode 100644
index 0000000..7a0e6e1
Binary files /dev/null and b/addons/controller_icons/assets/stadia/a.png differ
diff --git a/addons/controller_icons/assets/stadia/a.png.import b/addons/controller_icons/assets/stadia/a.png.import
new file mode 100644
index 0000000..f0c2709
--- /dev/null
+++ b/addons/controller_icons/assets/stadia/a.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bv4qgyj7ctpdi"
+path="res://.godot/imported/a.png-f39af9db7ec42a6167445f21d52dd49e.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/stadia/a.png"
+dest_files=["res://.godot/imported/a.png-f39af9db7ec42a6167445f21d52dd49e.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/stadia/assistant.png b/addons/controller_icons/assets/stadia/assistant.png
new file mode 100644
index 0000000..78ad612
Binary files /dev/null and b/addons/controller_icons/assets/stadia/assistant.png differ
diff --git a/addons/controller_icons/assets/stadia/assistant.png.import b/addons/controller_icons/assets/stadia/assistant.png.import
new file mode 100644
index 0000000..219471a
--- /dev/null
+++ b/addons/controller_icons/assets/stadia/assistant.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://eb1e5xeb87ty"
+path="res://.godot/imported/assistant.png-2a4e3627b05fcf62f61e45e5dfad1445.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/stadia/assistant.png"
+dest_files=["res://.godot/imported/assistant.png-2a4e3627b05fcf62f61e45e5dfad1445.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/stadia/b.png b/addons/controller_icons/assets/stadia/b.png
new file mode 100644
index 0000000..bd71b2d
Binary files /dev/null and b/addons/controller_icons/assets/stadia/b.png differ
diff --git a/addons/controller_icons/assets/stadia/b.png.import b/addons/controller_icons/assets/stadia/b.png.import
new file mode 100644
index 0000000..54e1af2
--- /dev/null
+++ b/addons/controller_icons/assets/stadia/b.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://sxuvnex00hi1"
+path="res://.godot/imported/b.png-a0cbab91a3c959de17829d12080654c4.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/stadia/b.png"
+dest_files=["res://.godot/imported/b.png-a0cbab91a3c959de17829d12080654c4.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/stadia/dots.png b/addons/controller_icons/assets/stadia/dots.png
new file mode 100644
index 0000000..cba1e78
Binary files /dev/null and b/addons/controller_icons/assets/stadia/dots.png differ
diff --git a/addons/controller_icons/assets/stadia/dots.png.import b/addons/controller_icons/assets/stadia/dots.png.import
new file mode 100644
index 0000000..5d3cd2c
--- /dev/null
+++ b/addons/controller_icons/assets/stadia/dots.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bnyru0b0n5iqs"
+path="res://.godot/imported/dots.png-b263d2845e2a883a9e404681ffe43345.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/stadia/dots.png"
+dest_files=["res://.godot/imported/dots.png-b263d2845e2a883a9e404681ffe43345.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/stadia/dpad.png b/addons/controller_icons/assets/stadia/dpad.png
new file mode 100644
index 0000000..4c8663a
Binary files /dev/null and b/addons/controller_icons/assets/stadia/dpad.png differ
diff --git a/addons/controller_icons/assets/stadia/dpad.png.import b/addons/controller_icons/assets/stadia/dpad.png.import
new file mode 100644
index 0000000..512580c
--- /dev/null
+++ b/addons/controller_icons/assets/stadia/dpad.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bddbmt3fx4djh"
+path="res://.godot/imported/dpad.png-58485bb8e8b0aa997156eb8f8ff9fbb0.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/stadia/dpad.png"
+dest_files=["res://.godot/imported/dpad.png-58485bb8e8b0aa997156eb8f8ff9fbb0.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/stadia/dpad_down.png b/addons/controller_icons/assets/stadia/dpad_down.png
new file mode 100644
index 0000000..ca2ad56
Binary files /dev/null and b/addons/controller_icons/assets/stadia/dpad_down.png differ
diff --git a/addons/controller_icons/assets/stadia/dpad_down.png.import b/addons/controller_icons/assets/stadia/dpad_down.png.import
new file mode 100644
index 0000000..3790ff9
--- /dev/null
+++ b/addons/controller_icons/assets/stadia/dpad_down.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cf1yr1jpwoqd4"
+path="res://.godot/imported/dpad_down.png-0e0070ab4a731afd3204175e1539f822.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/stadia/dpad_down.png"
+dest_files=["res://.godot/imported/dpad_down.png-0e0070ab4a731afd3204175e1539f822.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/stadia/dpad_left.png b/addons/controller_icons/assets/stadia/dpad_left.png
new file mode 100644
index 0000000..90ab042
Binary files /dev/null and b/addons/controller_icons/assets/stadia/dpad_left.png differ
diff --git a/addons/controller_icons/assets/stadia/dpad_left.png.import b/addons/controller_icons/assets/stadia/dpad_left.png.import
new file mode 100644
index 0000000..c5e477f
--- /dev/null
+++ b/addons/controller_icons/assets/stadia/dpad_left.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cq7w3jth676di"
+path="res://.godot/imported/dpad_left.png-6f793e4e26f3c710bdbc49c5329c5eff.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/stadia/dpad_left.png"
+dest_files=["res://.godot/imported/dpad_left.png-6f793e4e26f3c710bdbc49c5329c5eff.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/stadia/dpad_right.png b/addons/controller_icons/assets/stadia/dpad_right.png
new file mode 100644
index 0000000..23a5445
Binary files /dev/null and b/addons/controller_icons/assets/stadia/dpad_right.png differ
diff --git a/addons/controller_icons/assets/stadia/dpad_right.png.import b/addons/controller_icons/assets/stadia/dpad_right.png.import
new file mode 100644
index 0000000..5cdf65d
--- /dev/null
+++ b/addons/controller_icons/assets/stadia/dpad_right.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://7ssgv6rjgy3h"
+path="res://.godot/imported/dpad_right.png-a38451b01e6223d51bc488908900e4a4.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/stadia/dpad_right.png"
+dest_files=["res://.godot/imported/dpad_right.png-a38451b01e6223d51bc488908900e4a4.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/stadia/dpad_up.png b/addons/controller_icons/assets/stadia/dpad_up.png
new file mode 100644
index 0000000..df9553c
Binary files /dev/null and b/addons/controller_icons/assets/stadia/dpad_up.png differ
diff --git a/addons/controller_icons/assets/stadia/dpad_up.png.import b/addons/controller_icons/assets/stadia/dpad_up.png.import
new file mode 100644
index 0000000..14ba7a4
--- /dev/null
+++ b/addons/controller_icons/assets/stadia/dpad_up.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dw8p3es1mkcqp"
+path="res://.godot/imported/dpad_up.png-61f0cbde467cee63157b87d1351e499d.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/stadia/dpad_up.png"
+dest_files=["res://.godot/imported/dpad_up.png-61f0cbde467cee63157b87d1351e499d.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/stadia/l1.png b/addons/controller_icons/assets/stadia/l1.png
new file mode 100644
index 0000000..ad8b15e
Binary files /dev/null and b/addons/controller_icons/assets/stadia/l1.png differ
diff --git a/addons/controller_icons/assets/stadia/l1.png.import b/addons/controller_icons/assets/stadia/l1.png.import
new file mode 100644
index 0000000..506df86
--- /dev/null
+++ b/addons/controller_icons/assets/stadia/l1.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://0juhj61jiqig"
+path="res://.godot/imported/l1.png-40772d284cfbbb0f5e00a0d2807ad772.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/stadia/l1.png"
+dest_files=["res://.godot/imported/l1.png-40772d284cfbbb0f5e00a0d2807ad772.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/stadia/l2.png b/addons/controller_icons/assets/stadia/l2.png
new file mode 100644
index 0000000..cfb2441
Binary files /dev/null and b/addons/controller_icons/assets/stadia/l2.png differ
diff --git a/addons/controller_icons/assets/stadia/l2.png.import b/addons/controller_icons/assets/stadia/l2.png.import
new file mode 100644
index 0000000..883f9d3
--- /dev/null
+++ b/addons/controller_icons/assets/stadia/l2.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b3mxt82tfc0qr"
+path="res://.godot/imported/l2.png-65410a5b5bf71ded0383e7be48e96124.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/stadia/l2.png"
+dest_files=["res://.godot/imported/l2.png-65410a5b5bf71ded0383e7be48e96124.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/stadia/l_stick.png b/addons/controller_icons/assets/stadia/l_stick.png
new file mode 100644
index 0000000..de49dc6
Binary files /dev/null and b/addons/controller_icons/assets/stadia/l_stick.png differ
diff --git a/addons/controller_icons/assets/stadia/l_stick.png.import b/addons/controller_icons/assets/stadia/l_stick.png.import
new file mode 100644
index 0000000..e8ce30d
--- /dev/null
+++ b/addons/controller_icons/assets/stadia/l_stick.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bkig588ldv8l1"
+path="res://.godot/imported/l_stick.png-c7374b4ac7c738d8b0635b5617f8b92d.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/stadia/l_stick.png"
+dest_files=["res://.godot/imported/l_stick.png-c7374b4ac7c738d8b0635b5617f8b92d.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/stadia/menu.png b/addons/controller_icons/assets/stadia/menu.png
new file mode 100644
index 0000000..173efdf
Binary files /dev/null and b/addons/controller_icons/assets/stadia/menu.png differ
diff --git a/addons/controller_icons/assets/stadia/menu.png.import b/addons/controller_icons/assets/stadia/menu.png.import
new file mode 100644
index 0000000..e9da9b7
--- /dev/null
+++ b/addons/controller_icons/assets/stadia/menu.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://clsidc7meysf1"
+path="res://.godot/imported/menu.png-53cbf3eec3a419b76e5e61ce64721148.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/stadia/menu.png"
+dest_files=["res://.godot/imported/menu.png-53cbf3eec3a419b76e5e61ce64721148.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/stadia/r1.png b/addons/controller_icons/assets/stadia/r1.png
new file mode 100644
index 0000000..747c8fa
Binary files /dev/null and b/addons/controller_icons/assets/stadia/r1.png differ
diff --git a/addons/controller_icons/assets/stadia/r1.png.import b/addons/controller_icons/assets/stadia/r1.png.import
new file mode 100644
index 0000000..a2dc723
--- /dev/null
+++ b/addons/controller_icons/assets/stadia/r1.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ckfju5othymuc"
+path="res://.godot/imported/r1.png-61ddcf999e521e50e31454c7421b13c5.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/stadia/r1.png"
+dest_files=["res://.godot/imported/r1.png-61ddcf999e521e50e31454c7421b13c5.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/stadia/r2.png b/addons/controller_icons/assets/stadia/r2.png
new file mode 100644
index 0000000..a1a5b35
Binary files /dev/null and b/addons/controller_icons/assets/stadia/r2.png differ
diff --git a/addons/controller_icons/assets/stadia/r2.png.import b/addons/controller_icons/assets/stadia/r2.png.import
new file mode 100644
index 0000000..e37e4ed
--- /dev/null
+++ b/addons/controller_icons/assets/stadia/r2.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bcwlmbqr5byql"
+path="res://.godot/imported/r2.png-264029ef902dd23d9d2aedc9076396d3.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/stadia/r2.png"
+dest_files=["res://.godot/imported/r2.png-264029ef902dd23d9d2aedc9076396d3.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/stadia/r_stick.png b/addons/controller_icons/assets/stadia/r_stick.png
new file mode 100644
index 0000000..866be1c
Binary files /dev/null and b/addons/controller_icons/assets/stadia/r_stick.png differ
diff --git a/addons/controller_icons/assets/stadia/r_stick.png.import b/addons/controller_icons/assets/stadia/r_stick.png.import
new file mode 100644
index 0000000..6f8001a
--- /dev/null
+++ b/addons/controller_icons/assets/stadia/r_stick.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://rob68as0a0nx"
+path="res://.godot/imported/r_stick.png-6b5f1cef528e226a07bca3b5db7cee23.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/stadia/r_stick.png"
+dest_files=["res://.godot/imported/r_stick.png-6b5f1cef528e226a07bca3b5db7cee23.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/stadia/select.png b/addons/controller_icons/assets/stadia/select.png
new file mode 100644
index 0000000..38df6c3
Binary files /dev/null and b/addons/controller_icons/assets/stadia/select.png differ
diff --git a/addons/controller_icons/assets/stadia/select.png.import b/addons/controller_icons/assets/stadia/select.png.import
new file mode 100644
index 0000000..0cc3ba2
--- /dev/null
+++ b/addons/controller_icons/assets/stadia/select.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ii5p47rg6nu4"
+path="res://.godot/imported/select.png-5f6095f9bd8662055bec7c1bae674ec9.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/stadia/select.png"
+dest_files=["res://.godot/imported/select.png-5f6095f9bd8662055bec7c1bae674ec9.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/stadia/x.png b/addons/controller_icons/assets/stadia/x.png
new file mode 100644
index 0000000..eb1ef40
Binary files /dev/null and b/addons/controller_icons/assets/stadia/x.png differ
diff --git a/addons/controller_icons/assets/stadia/x.png.import b/addons/controller_icons/assets/stadia/x.png.import
new file mode 100644
index 0000000..133da18
--- /dev/null
+++ b/addons/controller_icons/assets/stadia/x.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://4j3otk7ktg5s"
+path="res://.godot/imported/x.png-f6ec30ea08344e55ef23af72fbc1fb31.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/stadia/x.png"
+dest_files=["res://.godot/imported/x.png-f6ec30ea08344e55ef23af72fbc1fb31.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/stadia/y.png b/addons/controller_icons/assets/stadia/y.png
new file mode 100644
index 0000000..dbcf567
Binary files /dev/null and b/addons/controller_icons/assets/stadia/y.png differ
diff --git a/addons/controller_icons/assets/stadia/y.png.import b/addons/controller_icons/assets/stadia/y.png.import
new file mode 100644
index 0000000..e401213
--- /dev/null
+++ b/addons/controller_icons/assets/stadia/y.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bcbp6ptwubct6"
+path="res://.godot/imported/y.png-dd7e8e12e20316029c271244b0ca0229.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/stadia/y.png"
+dest_files=["res://.godot/imported/y.png-dd7e8e12e20316029c271244b0ca0229.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steam/a.png b/addons/controller_icons/assets/steam/a.png
new file mode 100644
index 0000000..60c214f
Binary files /dev/null and b/addons/controller_icons/assets/steam/a.png differ
diff --git a/addons/controller_icons/assets/steam/a.png.import b/addons/controller_icons/assets/steam/a.png.import
new file mode 100644
index 0000000..24d2894
--- /dev/null
+++ b/addons/controller_icons/assets/steam/a.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cajx1v8mvjdv7"
+path="res://.godot/imported/a.png-291a1f58c8f457602e861970d6116395.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steam/a.png"
+dest_files=["res://.godot/imported/a.png-291a1f58c8f457602e861970d6116395.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steam/b.png b/addons/controller_icons/assets/steam/b.png
new file mode 100644
index 0000000..a1ba1a0
Binary files /dev/null and b/addons/controller_icons/assets/steam/b.png differ
diff --git a/addons/controller_icons/assets/steam/b.png.import b/addons/controller_icons/assets/steam/b.png.import
new file mode 100644
index 0000000..d5d454b
--- /dev/null
+++ b/addons/controller_icons/assets/steam/b.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://csbpy7me5gb6u"
+path="res://.godot/imported/b.png-60ef9dcdf26e65601a22afc1fe68bbde.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steam/b.png"
+dest_files=["res://.godot/imported/b.png-60ef9dcdf26e65601a22afc1fe68bbde.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steam/back.png b/addons/controller_icons/assets/steam/back.png
new file mode 100644
index 0000000..147eca2
Binary files /dev/null and b/addons/controller_icons/assets/steam/back.png differ
diff --git a/addons/controller_icons/assets/steam/back.png.import b/addons/controller_icons/assets/steam/back.png.import
new file mode 100644
index 0000000..4910e70
--- /dev/null
+++ b/addons/controller_icons/assets/steam/back.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://kphomjfyki6u"
+path="res://.godot/imported/back.png-aa3128aa827340fec92b81bdf0d61ea4.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steam/back.png"
+dest_files=["res://.godot/imported/back.png-aa3128aa827340fec92b81bdf0d61ea4.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steam/gyro.png b/addons/controller_icons/assets/steam/gyro.png
new file mode 100644
index 0000000..6e62084
Binary files /dev/null and b/addons/controller_icons/assets/steam/gyro.png differ
diff --git a/addons/controller_icons/assets/steam/gyro.png.import b/addons/controller_icons/assets/steam/gyro.png.import
new file mode 100644
index 0000000..f07a86f
--- /dev/null
+++ b/addons/controller_icons/assets/steam/gyro.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bt4f535r5jbiq"
+path="res://.godot/imported/gyro.png-036a1df6f9221b801ce960258264e36b.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steam/gyro.png"
+dest_files=["res://.godot/imported/gyro.png-036a1df6f9221b801ce960258264e36b.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steam/lb.png b/addons/controller_icons/assets/steam/lb.png
new file mode 100644
index 0000000..867ad60
Binary files /dev/null and b/addons/controller_icons/assets/steam/lb.png differ
diff --git a/addons/controller_icons/assets/steam/lb.png.import b/addons/controller_icons/assets/steam/lb.png.import
new file mode 100644
index 0000000..3294c7d
--- /dev/null
+++ b/addons/controller_icons/assets/steam/lb.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://digmlx17iy336"
+path="res://.godot/imported/lb.png-ebcecead80d2eaa8e8dd39203374482c.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steam/lb.png"
+dest_files=["res://.godot/imported/lb.png-ebcecead80d2eaa8e8dd39203374482c.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steam/left_grip.png b/addons/controller_icons/assets/steam/left_grip.png
new file mode 100644
index 0000000..b9417c0
Binary files /dev/null and b/addons/controller_icons/assets/steam/left_grip.png differ
diff --git a/addons/controller_icons/assets/steam/left_grip.png.import b/addons/controller_icons/assets/steam/left_grip.png.import
new file mode 100644
index 0000000..f2f0bbc
--- /dev/null
+++ b/addons/controller_icons/assets/steam/left_grip.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ctjkl1pjr5p4r"
+path="res://.godot/imported/left_grip.png-7632e6b4dc516d33c14edaaca9a800f6.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steam/left_grip.png"
+dest_files=["res://.godot/imported/left_grip.png-7632e6b4dc516d33c14edaaca9a800f6.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steam/left_track.png b/addons/controller_icons/assets/steam/left_track.png
new file mode 100644
index 0000000..59f9ae1
Binary files /dev/null and b/addons/controller_icons/assets/steam/left_track.png differ
diff --git a/addons/controller_icons/assets/steam/left_track.png.import b/addons/controller_icons/assets/steam/left_track.png.import
new file mode 100644
index 0000000..189ab46
--- /dev/null
+++ b/addons/controller_icons/assets/steam/left_track.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dtll2c2c8oit8"
+path="res://.godot/imported/left_track.png-17f05d6fcb42e2752708554a7e0bac57.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steam/left_track.png"
+dest_files=["res://.godot/imported/left_track.png-17f05d6fcb42e2752708554a7e0bac57.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steam/left_track_center.png b/addons/controller_icons/assets/steam/left_track_center.png
new file mode 100644
index 0000000..37fc0f9
Binary files /dev/null and b/addons/controller_icons/assets/steam/left_track_center.png differ
diff --git a/addons/controller_icons/assets/steam/left_track_center.png.import b/addons/controller_icons/assets/steam/left_track_center.png.import
new file mode 100644
index 0000000..4ab0d54
--- /dev/null
+++ b/addons/controller_icons/assets/steam/left_track_center.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://chis8pjw070yd"
+path="res://.godot/imported/left_track_center.png-f881a55ee2c591d91924bfeb7df3151e.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steam/left_track_center.png"
+dest_files=["res://.godot/imported/left_track_center.png-f881a55ee2c591d91924bfeb7df3151e.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steam/left_track_down.png b/addons/controller_icons/assets/steam/left_track_down.png
new file mode 100644
index 0000000..92c62ea
Binary files /dev/null and b/addons/controller_icons/assets/steam/left_track_down.png differ
diff --git a/addons/controller_icons/assets/steam/left_track_down.png.import b/addons/controller_icons/assets/steam/left_track_down.png.import
new file mode 100644
index 0000000..8ec1a1b
--- /dev/null
+++ b/addons/controller_icons/assets/steam/left_track_down.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bnx2r5xyltcke"
+path="res://.godot/imported/left_track_down.png-23a43b41ab965600405a2c0ec8054bca.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steam/left_track_down.png"
+dest_files=["res://.godot/imported/left_track_down.png-23a43b41ab965600405a2c0ec8054bca.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steam/left_track_left.png b/addons/controller_icons/assets/steam/left_track_left.png
new file mode 100644
index 0000000..23981de
Binary files /dev/null and b/addons/controller_icons/assets/steam/left_track_left.png differ
diff --git a/addons/controller_icons/assets/steam/left_track_left.png.import b/addons/controller_icons/assets/steam/left_track_left.png.import
new file mode 100644
index 0000000..2be2992
--- /dev/null
+++ b/addons/controller_icons/assets/steam/left_track_left.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://clcdu5delmmh5"
+path="res://.godot/imported/left_track_left.png-8654431bd0ad63399af945958e0c4b5c.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steam/left_track_left.png"
+dest_files=["res://.godot/imported/left_track_left.png-8654431bd0ad63399af945958e0c4b5c.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steam/left_track_right.png b/addons/controller_icons/assets/steam/left_track_right.png
new file mode 100644
index 0000000..8b936ff
Binary files /dev/null and b/addons/controller_icons/assets/steam/left_track_right.png differ
diff --git a/addons/controller_icons/assets/steam/left_track_right.png.import b/addons/controller_icons/assets/steam/left_track_right.png.import
new file mode 100644
index 0000000..5ac49a0
--- /dev/null
+++ b/addons/controller_icons/assets/steam/left_track_right.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://uowibbyy0t2e"
+path="res://.godot/imported/left_track_right.png-56a1c44260f8d7e4060f6cf701cca3e6.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steam/left_track_right.png"
+dest_files=["res://.godot/imported/left_track_right.png-56a1c44260f8d7e4060f6cf701cca3e6.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steam/left_track_up.png b/addons/controller_icons/assets/steam/left_track_up.png
new file mode 100644
index 0000000..419ce70
Binary files /dev/null and b/addons/controller_icons/assets/steam/left_track_up.png differ
diff --git a/addons/controller_icons/assets/steam/left_track_up.png.import b/addons/controller_icons/assets/steam/left_track_up.png.import
new file mode 100644
index 0000000..0889fb5
--- /dev/null
+++ b/addons/controller_icons/assets/steam/left_track_up.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b4funxqwsp5lt"
+path="res://.godot/imported/left_track_up.png-d036ca12f4dcdd984614588b9f0c50f4.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steam/left_track_up.png"
+dest_files=["res://.godot/imported/left_track_up.png-d036ca12f4dcdd984614588b9f0c50f4.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steam/lt.png b/addons/controller_icons/assets/steam/lt.png
new file mode 100644
index 0000000..1890ea2
Binary files /dev/null and b/addons/controller_icons/assets/steam/lt.png differ
diff --git a/addons/controller_icons/assets/steam/lt.png.import b/addons/controller_icons/assets/steam/lt.png.import
new file mode 100644
index 0000000..a1860c0
--- /dev/null
+++ b/addons/controller_icons/assets/steam/lt.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b0s7pjaudi66e"
+path="res://.godot/imported/lt.png-44277066c93d3aa2a3b16029f6b6db5f.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steam/lt.png"
+dest_files=["res://.godot/imported/lt.png-44277066c93d3aa2a3b16029f6b6db5f.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steam/rb.png b/addons/controller_icons/assets/steam/rb.png
new file mode 100644
index 0000000..4304c0f
Binary files /dev/null and b/addons/controller_icons/assets/steam/rb.png differ
diff --git a/addons/controller_icons/assets/steam/rb.png.import b/addons/controller_icons/assets/steam/rb.png.import
new file mode 100644
index 0000000..cec865c
--- /dev/null
+++ b/addons/controller_icons/assets/steam/rb.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bp82rm756ep6u"
+path="res://.godot/imported/rb.png-2fa5a7ab003444f3f1819759316dcd20.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steam/rb.png"
+dest_files=["res://.godot/imported/rb.png-2fa5a7ab003444f3f1819759316dcd20.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steam/right_grip.png b/addons/controller_icons/assets/steam/right_grip.png
new file mode 100644
index 0000000..6545b07
Binary files /dev/null and b/addons/controller_icons/assets/steam/right_grip.png differ
diff --git a/addons/controller_icons/assets/steam/right_grip.png.import b/addons/controller_icons/assets/steam/right_grip.png.import
new file mode 100644
index 0000000..8462965
--- /dev/null
+++ b/addons/controller_icons/assets/steam/right_grip.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://0k2r7ob05w33"
+path="res://.godot/imported/right_grip.png-0799ccf7f9bc8a783cac8c357f38758d.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steam/right_grip.png"
+dest_files=["res://.godot/imported/right_grip.png-0799ccf7f9bc8a783cac8c357f38758d.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steam/right_track.png b/addons/controller_icons/assets/steam/right_track.png
new file mode 100644
index 0000000..baefb36
Binary files /dev/null and b/addons/controller_icons/assets/steam/right_track.png differ
diff --git a/addons/controller_icons/assets/steam/right_track.png.import b/addons/controller_icons/assets/steam/right_track.png.import
new file mode 100644
index 0000000..584885e
--- /dev/null
+++ b/addons/controller_icons/assets/steam/right_track.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://6dq10ds5mlgs"
+path="res://.godot/imported/right_track.png-95cc6adb3c1b4f9db74ec053b4999cf2.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steam/right_track.png"
+dest_files=["res://.godot/imported/right_track.png-95cc6adb3c1b4f9db74ec053b4999cf2.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steam/right_track_center.png b/addons/controller_icons/assets/steam/right_track_center.png
new file mode 100644
index 0000000..b6b9e2f
Binary files /dev/null and b/addons/controller_icons/assets/steam/right_track_center.png differ
diff --git a/addons/controller_icons/assets/steam/right_track_center.png.import b/addons/controller_icons/assets/steam/right_track_center.png.import
new file mode 100644
index 0000000..61e3292
--- /dev/null
+++ b/addons/controller_icons/assets/steam/right_track_center.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dta545ndu8if6"
+path="res://.godot/imported/right_track_center.png-58ac8f72d98a03da1da39e477e6e7c1f.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steam/right_track_center.png"
+dest_files=["res://.godot/imported/right_track_center.png-58ac8f72d98a03da1da39e477e6e7c1f.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steam/right_track_down.png b/addons/controller_icons/assets/steam/right_track_down.png
new file mode 100644
index 0000000..7ee27fa
Binary files /dev/null and b/addons/controller_icons/assets/steam/right_track_down.png differ
diff --git a/addons/controller_icons/assets/steam/right_track_down.png.import b/addons/controller_icons/assets/steam/right_track_down.png.import
new file mode 100644
index 0000000..6d3cd36
--- /dev/null
+++ b/addons/controller_icons/assets/steam/right_track_down.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c7h7ncsju5ggy"
+path="res://.godot/imported/right_track_down.png-4130a302dfc93d303747d47da81d7f3a.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steam/right_track_down.png"
+dest_files=["res://.godot/imported/right_track_down.png-4130a302dfc93d303747d47da81d7f3a.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steam/right_track_left.png b/addons/controller_icons/assets/steam/right_track_left.png
new file mode 100644
index 0000000..0867fac
Binary files /dev/null and b/addons/controller_icons/assets/steam/right_track_left.png differ
diff --git a/addons/controller_icons/assets/steam/right_track_left.png.import b/addons/controller_icons/assets/steam/right_track_left.png.import
new file mode 100644
index 0000000..90ae183
--- /dev/null
+++ b/addons/controller_icons/assets/steam/right_track_left.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cxgrqodjwdqxw"
+path="res://.godot/imported/right_track_left.png-7ff9caa711a7d830d6c0e9dcdbbc6e16.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steam/right_track_left.png"
+dest_files=["res://.godot/imported/right_track_left.png-7ff9caa711a7d830d6c0e9dcdbbc6e16.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steam/right_track_right.png b/addons/controller_icons/assets/steam/right_track_right.png
new file mode 100644
index 0000000..704e8ae
Binary files /dev/null and b/addons/controller_icons/assets/steam/right_track_right.png differ
diff --git a/addons/controller_icons/assets/steam/right_track_right.png.import b/addons/controller_icons/assets/steam/right_track_right.png.import
new file mode 100644
index 0000000..23c68b5
--- /dev/null
+++ b/addons/controller_icons/assets/steam/right_track_right.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b0lx11bnneyts"
+path="res://.godot/imported/right_track_right.png-6862b78d914de9a352e198d09c79f9ee.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steam/right_track_right.png"
+dest_files=["res://.godot/imported/right_track_right.png-6862b78d914de9a352e198d09c79f9ee.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steam/right_track_up.png b/addons/controller_icons/assets/steam/right_track_up.png
new file mode 100644
index 0000000..b6fed1e
Binary files /dev/null and b/addons/controller_icons/assets/steam/right_track_up.png differ
diff --git a/addons/controller_icons/assets/steam/right_track_up.png.import b/addons/controller_icons/assets/steam/right_track_up.png.import
new file mode 100644
index 0000000..b5eecb8
--- /dev/null
+++ b/addons/controller_icons/assets/steam/right_track_up.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://30crryk2c330"
+path="res://.godot/imported/right_track_up.png-a63f64921def263a77365aade11ebe0e.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steam/right_track_up.png"
+dest_files=["res://.godot/imported/right_track_up.png-a63f64921def263a77365aade11ebe0e.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steam/rt.png b/addons/controller_icons/assets/steam/rt.png
new file mode 100644
index 0000000..ee4d7de
Binary files /dev/null and b/addons/controller_icons/assets/steam/rt.png differ
diff --git a/addons/controller_icons/assets/steam/rt.png.import b/addons/controller_icons/assets/steam/rt.png.import
new file mode 100644
index 0000000..383fc5e
--- /dev/null
+++ b/addons/controller_icons/assets/steam/rt.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b1uyj0ms44f7a"
+path="res://.godot/imported/rt.png-8456a9d9c814b2bb104bbf016d2f7055.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steam/rt.png"
+dest_files=["res://.godot/imported/rt.png-8456a9d9c814b2bb104bbf016d2f7055.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steam/start.png b/addons/controller_icons/assets/steam/start.png
new file mode 100644
index 0000000..a088743
Binary files /dev/null and b/addons/controller_icons/assets/steam/start.png differ
diff --git a/addons/controller_icons/assets/steam/start.png.import b/addons/controller_icons/assets/steam/start.png.import
new file mode 100644
index 0000000..43e37c1
--- /dev/null
+++ b/addons/controller_icons/assets/steam/start.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cq6gu6ntaoy72"
+path="res://.godot/imported/start.png-4e7d6471e6786617e56feb859488c243.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steam/start.png"
+dest_files=["res://.godot/imported/start.png-4e7d6471e6786617e56feb859488c243.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steam/stick.png b/addons/controller_icons/assets/steam/stick.png
new file mode 100644
index 0000000..182e661
Binary files /dev/null and b/addons/controller_icons/assets/steam/stick.png differ
diff --git a/addons/controller_icons/assets/steam/stick.png.import b/addons/controller_icons/assets/steam/stick.png.import
new file mode 100644
index 0000000..f9a200d
--- /dev/null
+++ b/addons/controller_icons/assets/steam/stick.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dbu6uiegjwfk0"
+path="res://.godot/imported/stick.png-17e9bd91c5d9ae40a3c941ea3acd764a.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steam/stick.png"
+dest_files=["res://.godot/imported/stick.png-17e9bd91c5d9ae40a3c941ea3acd764a.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steam/system.png b/addons/controller_icons/assets/steam/system.png
new file mode 100644
index 0000000..52e02ba
Binary files /dev/null and b/addons/controller_icons/assets/steam/system.png differ
diff --git a/addons/controller_icons/assets/steam/system.png.import b/addons/controller_icons/assets/steam/system.png.import
new file mode 100644
index 0000000..68fcabe
--- /dev/null
+++ b/addons/controller_icons/assets/steam/system.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cktlmub0jxllb"
+path="res://.godot/imported/system.png-bec343c70122880763d1f63339dd840d.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steam/system.png"
+dest_files=["res://.godot/imported/system.png-bec343c70122880763d1f63339dd840d.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steam/tilt_pitch.png b/addons/controller_icons/assets/steam/tilt_pitch.png
new file mode 100644
index 0000000..3b4b312
Binary files /dev/null and b/addons/controller_icons/assets/steam/tilt_pitch.png differ
diff --git a/addons/controller_icons/assets/steam/tilt_pitch.png.import b/addons/controller_icons/assets/steam/tilt_pitch.png.import
new file mode 100644
index 0000000..9387da0
--- /dev/null
+++ b/addons/controller_icons/assets/steam/tilt_pitch.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cv6n77eif3i54"
+path="res://.godot/imported/tilt_pitch.png-52a2dbe5ce0955cb0ff9dd622e114796.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steam/tilt_pitch.png"
+dest_files=["res://.godot/imported/tilt_pitch.png-52a2dbe5ce0955cb0ff9dd622e114796.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steam/tilt_roll.png b/addons/controller_icons/assets/steam/tilt_roll.png
new file mode 100644
index 0000000..f452d1b
Binary files /dev/null and b/addons/controller_icons/assets/steam/tilt_roll.png differ
diff --git a/addons/controller_icons/assets/steam/tilt_roll.png.import b/addons/controller_icons/assets/steam/tilt_roll.png.import
new file mode 100644
index 0000000..8a41b41
--- /dev/null
+++ b/addons/controller_icons/assets/steam/tilt_roll.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c5jepr1r4ux60"
+path="res://.godot/imported/tilt_roll.png-8c1f5b0ec6a270dd46dec3045007bf83.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steam/tilt_roll.png"
+dest_files=["res://.godot/imported/tilt_roll.png-8c1f5b0ec6a270dd46dec3045007bf83.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steam/tilt_yaw.png b/addons/controller_icons/assets/steam/tilt_yaw.png
new file mode 100644
index 0000000..7d40a29
Binary files /dev/null and b/addons/controller_icons/assets/steam/tilt_yaw.png differ
diff --git a/addons/controller_icons/assets/steam/tilt_yaw.png.import b/addons/controller_icons/assets/steam/tilt_yaw.png.import
new file mode 100644
index 0000000..41e9c6e
--- /dev/null
+++ b/addons/controller_icons/assets/steam/tilt_yaw.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cr34wwbk1o65k"
+path="res://.godot/imported/tilt_yaw.png-49f6b72eb854329b5fd5a72dafa4ff48.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steam/tilt_yaw.png"
+dest_files=["res://.godot/imported/tilt_yaw.png-49f6b72eb854329b5fd5a72dafa4ff48.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steam/x.png b/addons/controller_icons/assets/steam/x.png
new file mode 100644
index 0000000..a8e9df1
Binary files /dev/null and b/addons/controller_icons/assets/steam/x.png differ
diff --git a/addons/controller_icons/assets/steam/x.png.import b/addons/controller_icons/assets/steam/x.png.import
new file mode 100644
index 0000000..e8d2c95
--- /dev/null
+++ b/addons/controller_icons/assets/steam/x.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b1c54vo541jof"
+path="res://.godot/imported/x.png-65afc159d12dab8e4f940e8f4090bba5.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steam/x.png"
+dest_files=["res://.godot/imported/x.png-65afc159d12dab8e4f940e8f4090bba5.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steam/y.png b/addons/controller_icons/assets/steam/y.png
new file mode 100644
index 0000000..16c2fc7
Binary files /dev/null and b/addons/controller_icons/assets/steam/y.png differ
diff --git a/addons/controller_icons/assets/steam/y.png.import b/addons/controller_icons/assets/steam/y.png.import
new file mode 100644
index 0000000..73d5223
--- /dev/null
+++ b/addons/controller_icons/assets/steam/y.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://br3am8umaitfn"
+path="res://.godot/imported/y.png-639b49c4b58a0c38b43d864b4dc01ea7.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steam/y.png"
+dest_files=["res://.godot/imported/y.png-639b49c4b58a0c38b43d864b4dc01ea7.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steamdeck/a.png b/addons/controller_icons/assets/steamdeck/a.png
new file mode 100644
index 0000000..36e4867
Binary files /dev/null and b/addons/controller_icons/assets/steamdeck/a.png differ
diff --git a/addons/controller_icons/assets/steamdeck/a.png.import b/addons/controller_icons/assets/steamdeck/a.png.import
new file mode 100644
index 0000000..2153179
--- /dev/null
+++ b/addons/controller_icons/assets/steamdeck/a.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://poaovfu3n5rj"
+path="res://.godot/imported/a.png-2f73dad70aca5a9b5fac65559366eb25.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steamdeck/a.png"
+dest_files=["res://.godot/imported/a.png-2f73dad70aca5a9b5fac65559366eb25.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steamdeck/b.png b/addons/controller_icons/assets/steamdeck/b.png
new file mode 100644
index 0000000..aa94303
Binary files /dev/null and b/addons/controller_icons/assets/steamdeck/b.png differ
diff --git a/addons/controller_icons/assets/steamdeck/b.png.import b/addons/controller_icons/assets/steamdeck/b.png.import
new file mode 100644
index 0000000..03c1779
--- /dev/null
+++ b/addons/controller_icons/assets/steamdeck/b.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cbrsrgvgujiul"
+path="res://.godot/imported/b.png-3c47dd47fd7d251b208246d9fb5dea18.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steamdeck/b.png"
+dest_files=["res://.godot/imported/b.png-3c47dd47fd7d251b208246d9fb5dea18.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steamdeck/dots.png b/addons/controller_icons/assets/steamdeck/dots.png
new file mode 100644
index 0000000..fb04073
Binary files /dev/null and b/addons/controller_icons/assets/steamdeck/dots.png differ
diff --git a/addons/controller_icons/assets/steamdeck/dots.png.import b/addons/controller_icons/assets/steamdeck/dots.png.import
new file mode 100644
index 0000000..3ab08b0
--- /dev/null
+++ b/addons/controller_icons/assets/steamdeck/dots.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://drfc61g2mgowu"
+path="res://.godot/imported/dots.png-5aab7f77e51edbb5da9af6d242a7a1a8.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steamdeck/dots.png"
+dest_files=["res://.godot/imported/dots.png-5aab7f77e51edbb5da9af6d242a7a1a8.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steamdeck/dpad.png b/addons/controller_icons/assets/steamdeck/dpad.png
new file mode 100644
index 0000000..e79effa
Binary files /dev/null and b/addons/controller_icons/assets/steamdeck/dpad.png differ
diff --git a/addons/controller_icons/assets/steamdeck/dpad.png.import b/addons/controller_icons/assets/steamdeck/dpad.png.import
new file mode 100644
index 0000000..8d34fb6
--- /dev/null
+++ b/addons/controller_icons/assets/steamdeck/dpad.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dm4e2w2a8r1l4"
+path="res://.godot/imported/dpad.png-d91578cac829c1bcc2a8d54711ef3af1.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steamdeck/dpad.png"
+dest_files=["res://.godot/imported/dpad.png-d91578cac829c1bcc2a8d54711ef3af1.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steamdeck/dpad_down.png b/addons/controller_icons/assets/steamdeck/dpad_down.png
new file mode 100644
index 0000000..f6976e4
Binary files /dev/null and b/addons/controller_icons/assets/steamdeck/dpad_down.png differ
diff --git a/addons/controller_icons/assets/steamdeck/dpad_down.png.import b/addons/controller_icons/assets/steamdeck/dpad_down.png.import
new file mode 100644
index 0000000..bb604d2
--- /dev/null
+++ b/addons/controller_icons/assets/steamdeck/dpad_down.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cynouax7vxg20"
+path="res://.godot/imported/dpad_down.png-5cf905f451a185208b146c90cbae918d.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steamdeck/dpad_down.png"
+dest_files=["res://.godot/imported/dpad_down.png-5cf905f451a185208b146c90cbae918d.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steamdeck/dpad_left.png b/addons/controller_icons/assets/steamdeck/dpad_left.png
new file mode 100644
index 0000000..80b5647
Binary files /dev/null and b/addons/controller_icons/assets/steamdeck/dpad_left.png differ
diff --git a/addons/controller_icons/assets/steamdeck/dpad_left.png.import b/addons/controller_icons/assets/steamdeck/dpad_left.png.import
new file mode 100644
index 0000000..a033136
--- /dev/null
+++ b/addons/controller_icons/assets/steamdeck/dpad_left.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dkkrtakt17c56"
+path="res://.godot/imported/dpad_left.png-32c007ed76ab3f913ca919c3845014b1.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steamdeck/dpad_left.png"
+dest_files=["res://.godot/imported/dpad_left.png-32c007ed76ab3f913ca919c3845014b1.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steamdeck/dpad_right.png b/addons/controller_icons/assets/steamdeck/dpad_right.png
new file mode 100644
index 0000000..37953ea
Binary files /dev/null and b/addons/controller_icons/assets/steamdeck/dpad_right.png differ
diff --git a/addons/controller_icons/assets/steamdeck/dpad_right.png.import b/addons/controller_icons/assets/steamdeck/dpad_right.png.import
new file mode 100644
index 0000000..6399714
--- /dev/null
+++ b/addons/controller_icons/assets/steamdeck/dpad_right.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ccjjrpx72dn2r"
+path="res://.godot/imported/dpad_right.png-828c1fa323dfa47ac18628cf2c8ec764.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steamdeck/dpad_right.png"
+dest_files=["res://.godot/imported/dpad_right.png-828c1fa323dfa47ac18628cf2c8ec764.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steamdeck/dpad_up.png b/addons/controller_icons/assets/steamdeck/dpad_up.png
new file mode 100644
index 0000000..6fa4a6b
Binary files /dev/null and b/addons/controller_icons/assets/steamdeck/dpad_up.png differ
diff --git a/addons/controller_icons/assets/steamdeck/dpad_up.png.import b/addons/controller_icons/assets/steamdeck/dpad_up.png.import
new file mode 100644
index 0000000..724730c
--- /dev/null
+++ b/addons/controller_icons/assets/steamdeck/dpad_up.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bw0h2x4m0g7b8"
+path="res://.godot/imported/dpad_up.png-fa8e0d391699c07f5447f418411e4aaf.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steamdeck/dpad_up.png"
+dest_files=["res://.godot/imported/dpad_up.png-fa8e0d391699c07f5447f418411e4aaf.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steamdeck/gyro.png b/addons/controller_icons/assets/steamdeck/gyro.png
new file mode 100644
index 0000000..4db3d2e
Binary files /dev/null and b/addons/controller_icons/assets/steamdeck/gyro.png differ
diff --git a/addons/controller_icons/assets/steamdeck/gyro.png.import b/addons/controller_icons/assets/steamdeck/gyro.png.import
new file mode 100644
index 0000000..b735aa0
--- /dev/null
+++ b/addons/controller_icons/assets/steamdeck/gyro.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://brtnyias3061u"
+path="res://.godot/imported/gyro.png-069596f609be7f7b726934d7d8c01f58.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steamdeck/gyro.png"
+dest_files=["res://.godot/imported/gyro.png-069596f609be7f7b726934d7d8c01f58.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steamdeck/inventory.png b/addons/controller_icons/assets/steamdeck/inventory.png
new file mode 100644
index 0000000..c6e297b
Binary files /dev/null and b/addons/controller_icons/assets/steamdeck/inventory.png differ
diff --git a/addons/controller_icons/assets/steamdeck/inventory.png.import b/addons/controller_icons/assets/steamdeck/inventory.png.import
new file mode 100644
index 0000000..b9bca7e
--- /dev/null
+++ b/addons/controller_icons/assets/steamdeck/inventory.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ds5yo8kn81uem"
+path="res://.godot/imported/inventory.png-2e96b194d1562d723597b2d307313c1b.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steamdeck/inventory.png"
+dest_files=["res://.godot/imported/inventory.png-2e96b194d1562d723597b2d307313c1b.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steamdeck/l1.png b/addons/controller_icons/assets/steamdeck/l1.png
new file mode 100644
index 0000000..25e2562
Binary files /dev/null and b/addons/controller_icons/assets/steamdeck/l1.png differ
diff --git a/addons/controller_icons/assets/steamdeck/l1.png.import b/addons/controller_icons/assets/steamdeck/l1.png.import
new file mode 100644
index 0000000..ea39c31
--- /dev/null
+++ b/addons/controller_icons/assets/steamdeck/l1.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dichmao6k03i6"
+path="res://.godot/imported/l1.png-cd4c173e49cfddf9d9538a804894a5b9.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steamdeck/l1.png"
+dest_files=["res://.godot/imported/l1.png-cd4c173e49cfddf9d9538a804894a5b9.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steamdeck/l2.png b/addons/controller_icons/assets/steamdeck/l2.png
new file mode 100644
index 0000000..399ffb4
Binary files /dev/null and b/addons/controller_icons/assets/steamdeck/l2.png differ
diff --git a/addons/controller_icons/assets/steamdeck/l2.png.import b/addons/controller_icons/assets/steamdeck/l2.png.import
new file mode 100644
index 0000000..419dfb1
--- /dev/null
+++ b/addons/controller_icons/assets/steamdeck/l2.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bd1ipt1urb7xw"
+path="res://.godot/imported/l2.png-c7dea6858612a3a7e6b18684a3fc641c.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steamdeck/l2.png"
+dest_files=["res://.godot/imported/l2.png-c7dea6858612a3a7e6b18684a3fc641c.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steamdeck/l4.png b/addons/controller_icons/assets/steamdeck/l4.png
new file mode 100644
index 0000000..3a2b4be
Binary files /dev/null and b/addons/controller_icons/assets/steamdeck/l4.png differ
diff --git a/addons/controller_icons/assets/steamdeck/l4.png.import b/addons/controller_icons/assets/steamdeck/l4.png.import
new file mode 100644
index 0000000..20f9fc9
--- /dev/null
+++ b/addons/controller_icons/assets/steamdeck/l4.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bn4k3f2g4pwet"
+path="res://.godot/imported/l4.png-53e1f2dd49fd7211ca90847235d09280.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steamdeck/l4.png"
+dest_files=["res://.godot/imported/l4.png-53e1f2dd49fd7211ca90847235d09280.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steamdeck/l5.png b/addons/controller_icons/assets/steamdeck/l5.png
new file mode 100644
index 0000000..507fc01
Binary files /dev/null and b/addons/controller_icons/assets/steamdeck/l5.png differ
diff --git a/addons/controller_icons/assets/steamdeck/l5.png.import b/addons/controller_icons/assets/steamdeck/l5.png.import
new file mode 100644
index 0000000..f8827c7
--- /dev/null
+++ b/addons/controller_icons/assets/steamdeck/l5.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://w6iao807c7k0"
+path="res://.godot/imported/l5.png-c7872767816e4050da362fd348778e96.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steamdeck/l5.png"
+dest_files=["res://.godot/imported/l5.png-c7872767816e4050da362fd348778e96.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steamdeck/l_stick.png b/addons/controller_icons/assets/steamdeck/l_stick.png
new file mode 100644
index 0000000..e006d0a
Binary files /dev/null and b/addons/controller_icons/assets/steamdeck/l_stick.png differ
diff --git a/addons/controller_icons/assets/steamdeck/l_stick.png.import b/addons/controller_icons/assets/steamdeck/l_stick.png.import
new file mode 100644
index 0000000..6bb0ec2
--- /dev/null
+++ b/addons/controller_icons/assets/steamdeck/l_stick.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b322wp72ljvjx"
+path="res://.godot/imported/l_stick.png-b82870d1d471bcee24379dc170fff1d5.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steamdeck/l_stick.png"
+dest_files=["res://.godot/imported/l_stick.png-b82870d1d471bcee24379dc170fff1d5.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steamdeck/l_stick_click.png b/addons/controller_icons/assets/steamdeck/l_stick_click.png
new file mode 100644
index 0000000..d7e2029
Binary files /dev/null and b/addons/controller_icons/assets/steamdeck/l_stick_click.png differ
diff --git a/addons/controller_icons/assets/steamdeck/l_stick_click.png.import b/addons/controller_icons/assets/steamdeck/l_stick_click.png.import
new file mode 100644
index 0000000..05393b6
--- /dev/null
+++ b/addons/controller_icons/assets/steamdeck/l_stick_click.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://lholv28i3ycm"
+path="res://.godot/imported/l_stick_click.png-4b0e50bec61ff1c33620527a89d6ea79.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steamdeck/l_stick_click.png"
+dest_files=["res://.godot/imported/l_stick_click.png-4b0e50bec61ff1c33620527a89d6ea79.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steamdeck/left_track.png b/addons/controller_icons/assets/steamdeck/left_track.png
new file mode 100644
index 0000000..d1596fa
Binary files /dev/null and b/addons/controller_icons/assets/steamdeck/left_track.png differ
diff --git a/addons/controller_icons/assets/steamdeck/left_track.png.import b/addons/controller_icons/assets/steamdeck/left_track.png.import
new file mode 100644
index 0000000..8db7979
--- /dev/null
+++ b/addons/controller_icons/assets/steamdeck/left_track.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dhq248yp0aa52"
+path="res://.godot/imported/left_track.png-a3f6b83f0eb656760c4e50b38378b0d2.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steamdeck/left_track.png"
+dest_files=["res://.godot/imported/left_track.png-a3f6b83f0eb656760c4e50b38378b0d2.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steamdeck/menu.png b/addons/controller_icons/assets/steamdeck/menu.png
new file mode 100644
index 0000000..39c5d17
Binary files /dev/null and b/addons/controller_icons/assets/steamdeck/menu.png differ
diff --git a/addons/controller_icons/assets/steamdeck/menu.png.import b/addons/controller_icons/assets/steamdeck/menu.png.import
new file mode 100644
index 0000000..a48c584
--- /dev/null
+++ b/addons/controller_icons/assets/steamdeck/menu.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://tmna4yvo038t"
+path="res://.godot/imported/menu.png-15b5ed82914c030a3d664fc292ecda62.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steamdeck/menu.png"
+dest_files=["res://.godot/imported/menu.png-15b5ed82914c030a3d664fc292ecda62.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steamdeck/minus.png b/addons/controller_icons/assets/steamdeck/minus.png
new file mode 100644
index 0000000..1347872
Binary files /dev/null and b/addons/controller_icons/assets/steamdeck/minus.png differ
diff --git a/addons/controller_icons/assets/steamdeck/minus.png.import b/addons/controller_icons/assets/steamdeck/minus.png.import
new file mode 100644
index 0000000..0a05036
--- /dev/null
+++ b/addons/controller_icons/assets/steamdeck/minus.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b64ckrex6trq0"
+path="res://.godot/imported/minus.png-6b6a5c0a0c6b9d79b43a9ba17509b6c2.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steamdeck/minus.png"
+dest_files=["res://.godot/imported/minus.png-6b6a5c0a0c6b9d79b43a9ba17509b6c2.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steamdeck/plus.png b/addons/controller_icons/assets/steamdeck/plus.png
new file mode 100644
index 0000000..394d5bb
Binary files /dev/null and b/addons/controller_icons/assets/steamdeck/plus.png differ
diff --git a/addons/controller_icons/assets/steamdeck/plus.png.import b/addons/controller_icons/assets/steamdeck/plus.png.import
new file mode 100644
index 0000000..98b7478
--- /dev/null
+++ b/addons/controller_icons/assets/steamdeck/plus.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dg1tbg6cnlkit"
+path="res://.godot/imported/plus.png-c4d8729eb667b48905d0e19119750025.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steamdeck/plus.png"
+dest_files=["res://.godot/imported/plus.png-c4d8729eb667b48905d0e19119750025.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steamdeck/power.png b/addons/controller_icons/assets/steamdeck/power.png
new file mode 100644
index 0000000..13bfec5
Binary files /dev/null and b/addons/controller_icons/assets/steamdeck/power.png differ
diff --git a/addons/controller_icons/assets/steamdeck/power.png.import b/addons/controller_icons/assets/steamdeck/power.png.import
new file mode 100644
index 0000000..86a3cf9
--- /dev/null
+++ b/addons/controller_icons/assets/steamdeck/power.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bck8srkobqvi3"
+path="res://.godot/imported/power.png-0830cc8bf011276d1ca084df938e9bfe.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steamdeck/power.png"
+dest_files=["res://.godot/imported/power.png-0830cc8bf011276d1ca084df938e9bfe.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steamdeck/r1.png b/addons/controller_icons/assets/steamdeck/r1.png
new file mode 100644
index 0000000..4d7ce77
Binary files /dev/null and b/addons/controller_icons/assets/steamdeck/r1.png differ
diff --git a/addons/controller_icons/assets/steamdeck/r1.png.import b/addons/controller_icons/assets/steamdeck/r1.png.import
new file mode 100644
index 0000000..211eb8a
--- /dev/null
+++ b/addons/controller_icons/assets/steamdeck/r1.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://druiq1x5t40vi"
+path="res://.godot/imported/r1.png-e7ea343bd2a09ffc81d7115c3dec0af9.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steamdeck/r1.png"
+dest_files=["res://.godot/imported/r1.png-e7ea343bd2a09ffc81d7115c3dec0af9.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steamdeck/r2.png b/addons/controller_icons/assets/steamdeck/r2.png
new file mode 100644
index 0000000..bb4787a
Binary files /dev/null and b/addons/controller_icons/assets/steamdeck/r2.png differ
diff --git a/addons/controller_icons/assets/steamdeck/r2.png.import b/addons/controller_icons/assets/steamdeck/r2.png.import
new file mode 100644
index 0000000..981c5b9
--- /dev/null
+++ b/addons/controller_icons/assets/steamdeck/r2.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://0h2bsoykgxw7"
+path="res://.godot/imported/r2.png-9fb695385a2811dece0b0d347dbebc92.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steamdeck/r2.png"
+dest_files=["res://.godot/imported/r2.png-9fb695385a2811dece0b0d347dbebc92.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steamdeck/r4.png b/addons/controller_icons/assets/steamdeck/r4.png
new file mode 100644
index 0000000..07f6110
Binary files /dev/null and b/addons/controller_icons/assets/steamdeck/r4.png differ
diff --git a/addons/controller_icons/assets/steamdeck/r4.png.import b/addons/controller_icons/assets/steamdeck/r4.png.import
new file mode 100644
index 0000000..456aec6
--- /dev/null
+++ b/addons/controller_icons/assets/steamdeck/r4.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://43513ycpgkfk"
+path="res://.godot/imported/r4.png-9218f4075b2a63414563818f0c8ce0a1.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steamdeck/r4.png"
+dest_files=["res://.godot/imported/r4.png-9218f4075b2a63414563818f0c8ce0a1.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steamdeck/r5.png b/addons/controller_icons/assets/steamdeck/r5.png
new file mode 100644
index 0000000..d5659cb
Binary files /dev/null and b/addons/controller_icons/assets/steamdeck/r5.png differ
diff --git a/addons/controller_icons/assets/steamdeck/r5.png.import b/addons/controller_icons/assets/steamdeck/r5.png.import
new file mode 100644
index 0000000..76a8645
--- /dev/null
+++ b/addons/controller_icons/assets/steamdeck/r5.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cxcwenhrruil7"
+path="res://.godot/imported/r5.png-3e555104eee0b287d143d58b74f3713b.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steamdeck/r5.png"
+dest_files=["res://.godot/imported/r5.png-3e555104eee0b287d143d58b74f3713b.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steamdeck/r_stick.png b/addons/controller_icons/assets/steamdeck/r_stick.png
new file mode 100644
index 0000000..a2fc9db
Binary files /dev/null and b/addons/controller_icons/assets/steamdeck/r_stick.png differ
diff --git a/addons/controller_icons/assets/steamdeck/r_stick.png.import b/addons/controller_icons/assets/steamdeck/r_stick.png.import
new file mode 100644
index 0000000..e032a67
--- /dev/null
+++ b/addons/controller_icons/assets/steamdeck/r_stick.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://fwbk65op52yk"
+path="res://.godot/imported/r_stick.png-1c05d894dc78be25f4a49ccf8bd0d050.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steamdeck/r_stick.png"
+dest_files=["res://.godot/imported/r_stick.png-1c05d894dc78be25f4a49ccf8bd0d050.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steamdeck/r_stick_click.png b/addons/controller_icons/assets/steamdeck/r_stick_click.png
new file mode 100644
index 0000000..2236e57
Binary files /dev/null and b/addons/controller_icons/assets/steamdeck/r_stick_click.png differ
diff --git a/addons/controller_icons/assets/steamdeck/r_stick_click.png.import b/addons/controller_icons/assets/steamdeck/r_stick_click.png.import
new file mode 100644
index 0000000..4ef87f3
--- /dev/null
+++ b/addons/controller_icons/assets/steamdeck/r_stick_click.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ba04a0ql4pg6s"
+path="res://.godot/imported/r_stick_click.png-65cb2bed7b9da43cbe790342cd7869f7.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steamdeck/r_stick_click.png"
+dest_files=["res://.godot/imported/r_stick_click.png-65cb2bed7b9da43cbe790342cd7869f7.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steamdeck/right_track.png b/addons/controller_icons/assets/steamdeck/right_track.png
new file mode 100644
index 0000000..0628aba
Binary files /dev/null and b/addons/controller_icons/assets/steamdeck/right_track.png differ
diff --git a/addons/controller_icons/assets/steamdeck/right_track.png.import b/addons/controller_icons/assets/steamdeck/right_track.png.import
new file mode 100644
index 0000000..215f8dd
--- /dev/null
+++ b/addons/controller_icons/assets/steamdeck/right_track.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dpobf2qdnwicd"
+path="res://.godot/imported/right_track.png-b11cdb4f73a4064c5e82947c3a833f04.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steamdeck/right_track.png"
+dest_files=["res://.godot/imported/right_track.png-b11cdb4f73a4064c5e82947c3a833f04.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steamdeck/square.png b/addons/controller_icons/assets/steamdeck/square.png
new file mode 100644
index 0000000..d87ae38
Binary files /dev/null and b/addons/controller_icons/assets/steamdeck/square.png differ
diff --git a/addons/controller_icons/assets/steamdeck/square.png.import b/addons/controller_icons/assets/steamdeck/square.png.import
new file mode 100644
index 0000000..7991fa4
--- /dev/null
+++ b/addons/controller_icons/assets/steamdeck/square.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b33u6kf0emyhw"
+path="res://.godot/imported/square.png-aa97e4ebdd5168be792d22b9d19b86fb.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steamdeck/square.png"
+dest_files=["res://.godot/imported/square.png-aa97e4ebdd5168be792d22b9d19b86fb.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steamdeck/steam.png b/addons/controller_icons/assets/steamdeck/steam.png
new file mode 100644
index 0000000..af63f7f
Binary files /dev/null and b/addons/controller_icons/assets/steamdeck/steam.png differ
diff --git a/addons/controller_icons/assets/steamdeck/steam.png.import b/addons/controller_icons/assets/steamdeck/steam.png.import
new file mode 100644
index 0000000..257c71c
--- /dev/null
+++ b/addons/controller_icons/assets/steamdeck/steam.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dterkny3mjiu3"
+path="res://.godot/imported/steam.png-cb3e0e8febfbcab936503086b0f14183.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steamdeck/steam.png"
+dest_files=["res://.godot/imported/steam.png-cb3e0e8febfbcab936503086b0f14183.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steamdeck/x.png b/addons/controller_icons/assets/steamdeck/x.png
new file mode 100644
index 0000000..606739b
Binary files /dev/null and b/addons/controller_icons/assets/steamdeck/x.png differ
diff --git a/addons/controller_icons/assets/steamdeck/x.png.import b/addons/controller_icons/assets/steamdeck/x.png.import
new file mode 100644
index 0000000..d48ed8d
--- /dev/null
+++ b/addons/controller_icons/assets/steamdeck/x.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bv6ggn8weqf6r"
+path="res://.godot/imported/x.png-7c5b0135e3b23190b7a1d19198c8d796.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steamdeck/x.png"
+dest_files=["res://.godot/imported/x.png-7c5b0135e3b23190b7a1d19198c8d796.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/steamdeck/y.png b/addons/controller_icons/assets/steamdeck/y.png
new file mode 100644
index 0000000..4a0423f
Binary files /dev/null and b/addons/controller_icons/assets/steamdeck/y.png differ
diff --git a/addons/controller_icons/assets/steamdeck/y.png.import b/addons/controller_icons/assets/steamdeck/y.png.import
new file mode 100644
index 0000000..531cc49
--- /dev/null
+++ b/addons/controller_icons/assets/steamdeck/y.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ccoqqcubm3xnx"
+path="res://.godot/imported/y.png-ef1586ba97c51e445fce86a950a27af1.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/steamdeck/y.png"
+dest_files=["res://.godot/imported/y.png-ef1586ba97c51e445fce86a950a27af1.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/switch/a.png b/addons/controller_icons/assets/switch/a.png
new file mode 100644
index 0000000..df756ef
Binary files /dev/null and b/addons/controller_icons/assets/switch/a.png differ
diff --git a/addons/controller_icons/assets/switch/a.png.import b/addons/controller_icons/assets/switch/a.png.import
new file mode 100644
index 0000000..e6f2178
--- /dev/null
+++ b/addons/controller_icons/assets/switch/a.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bahjel775ngf"
+path="res://.godot/imported/a.png-fc163e1211ed8de66a60ec99285d248f.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/switch/a.png"
+dest_files=["res://.godot/imported/a.png-fc163e1211ed8de66a60ec99285d248f.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/switch/b.png b/addons/controller_icons/assets/switch/b.png
new file mode 100644
index 0000000..ea7e743
Binary files /dev/null and b/addons/controller_icons/assets/switch/b.png differ
diff --git a/addons/controller_icons/assets/switch/b.png.import b/addons/controller_icons/assets/switch/b.png.import
new file mode 100644
index 0000000..a0a4754
--- /dev/null
+++ b/addons/controller_icons/assets/switch/b.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bt7tcdk3d020l"
+path="res://.godot/imported/b.png-c6f0b440af26e7f51533807a83f12c3e.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/switch/b.png"
+dest_files=["res://.godot/imported/b.png-c6f0b440af26e7f51533807a83f12c3e.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/switch/controller_left.png b/addons/controller_icons/assets/switch/controller_left.png
new file mode 100644
index 0000000..f90a244
Binary files /dev/null and b/addons/controller_icons/assets/switch/controller_left.png differ
diff --git a/addons/controller_icons/assets/switch/controller_left.png.import b/addons/controller_icons/assets/switch/controller_left.png.import
new file mode 100644
index 0000000..f0c16ea
--- /dev/null
+++ b/addons/controller_icons/assets/switch/controller_left.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://1mmspbd2eh0p"
+path="res://.godot/imported/controller_left.png-ce1b649371fd1088c46c4a7d0d9ebeab.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/switch/controller_left.png"
+dest_files=["res://.godot/imported/controller_left.png-ce1b649371fd1088c46c4a7d0d9ebeab.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/switch/controller_right.png b/addons/controller_icons/assets/switch/controller_right.png
new file mode 100644
index 0000000..873da7e
Binary files /dev/null and b/addons/controller_icons/assets/switch/controller_right.png differ
diff --git a/addons/controller_icons/assets/switch/controller_right.png.import b/addons/controller_icons/assets/switch/controller_right.png.import
new file mode 100644
index 0000000..613bdd5
--- /dev/null
+++ b/addons/controller_icons/assets/switch/controller_right.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://tkexjj22svc"
+path="res://.godot/imported/controller_right.png-1809d0ffa0e37e642089b8a03caeec7e.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/switch/controller_right.png"
+dest_files=["res://.godot/imported/controller_right.png-1809d0ffa0e37e642089b8a03caeec7e.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/switch/controllers.png b/addons/controller_icons/assets/switch/controllers.png
new file mode 100644
index 0000000..b6ee54d
Binary files /dev/null and b/addons/controller_icons/assets/switch/controllers.png differ
diff --git a/addons/controller_icons/assets/switch/controllers.png.import b/addons/controller_icons/assets/switch/controllers.png.import
new file mode 100644
index 0000000..6193e31
--- /dev/null
+++ b/addons/controller_icons/assets/switch/controllers.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cy1dluupdemuv"
+path="res://.godot/imported/controllers.png-7712b49e533d621799a7a9a3bbf3ae1a.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/switch/controllers.png"
+dest_files=["res://.godot/imported/controllers.png-7712b49e533d621799a7a9a3bbf3ae1a.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/switch/controllers_separate.png b/addons/controller_icons/assets/switch/controllers_separate.png
new file mode 100644
index 0000000..0c019da
Binary files /dev/null and b/addons/controller_icons/assets/switch/controllers_separate.png differ
diff --git a/addons/controller_icons/assets/switch/controllers_separate.png.import b/addons/controller_icons/assets/switch/controllers_separate.png.import
new file mode 100644
index 0000000..2948701
--- /dev/null
+++ b/addons/controller_icons/assets/switch/controllers_separate.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bluvevys04kfi"
+path="res://.godot/imported/controllers_separate.png-1060f3b60202e8596c5e2b6cb4ab7773.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/switch/controllers_separate.png"
+dest_files=["res://.godot/imported/controllers_separate.png-1060f3b60202e8596c5e2b6cb4ab7773.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/switch/down.png b/addons/controller_icons/assets/switch/down.png
new file mode 100644
index 0000000..7b7b2b2
Binary files /dev/null and b/addons/controller_icons/assets/switch/down.png differ
diff --git a/addons/controller_icons/assets/switch/down.png.import b/addons/controller_icons/assets/switch/down.png.import
new file mode 100644
index 0000000..b5fbe49
--- /dev/null
+++ b/addons/controller_icons/assets/switch/down.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://br2bweafcdeyx"
+path="res://.godot/imported/down.png-a90d78a51af3fbb8a21316a6086e4112.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/switch/down.png"
+dest_files=["res://.godot/imported/down.png-a90d78a51af3fbb8a21316a6086e4112.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/switch/dpad.png b/addons/controller_icons/assets/switch/dpad.png
new file mode 100644
index 0000000..12f01eb
Binary files /dev/null and b/addons/controller_icons/assets/switch/dpad.png differ
diff --git a/addons/controller_icons/assets/switch/dpad.png.import b/addons/controller_icons/assets/switch/dpad.png.import
new file mode 100644
index 0000000..1ca63ac
--- /dev/null
+++ b/addons/controller_icons/assets/switch/dpad.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c42ruyvdah1bg"
+path="res://.godot/imported/dpad.png-a9f4cd306092d2081b92f100afab13ce.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/switch/dpad.png"
+dest_files=["res://.godot/imported/dpad.png-a9f4cd306092d2081b92f100afab13ce.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/switch/dpad_down.png b/addons/controller_icons/assets/switch/dpad_down.png
new file mode 100644
index 0000000..37f6d5b
Binary files /dev/null and b/addons/controller_icons/assets/switch/dpad_down.png differ
diff --git a/addons/controller_icons/assets/switch/dpad_down.png.import b/addons/controller_icons/assets/switch/dpad_down.png.import
new file mode 100644
index 0000000..a8773b0
--- /dev/null
+++ b/addons/controller_icons/assets/switch/dpad_down.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://daup2v6e8kpa5"
+path="res://.godot/imported/dpad_down.png-d2e040caf2a8553667e08295ebb08db5.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/switch/dpad_down.png"
+dest_files=["res://.godot/imported/dpad_down.png-d2e040caf2a8553667e08295ebb08db5.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/switch/dpad_left.png b/addons/controller_icons/assets/switch/dpad_left.png
new file mode 100644
index 0000000..8efd7a4
Binary files /dev/null and b/addons/controller_icons/assets/switch/dpad_left.png differ
diff --git a/addons/controller_icons/assets/switch/dpad_left.png.import b/addons/controller_icons/assets/switch/dpad_left.png.import
new file mode 100644
index 0000000..00453ab
--- /dev/null
+++ b/addons/controller_icons/assets/switch/dpad_left.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b8828wfao1bpj"
+path="res://.godot/imported/dpad_left.png-e63de4ccf41738e35d2777f505c2be2d.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/switch/dpad_left.png"
+dest_files=["res://.godot/imported/dpad_left.png-e63de4ccf41738e35d2777f505c2be2d.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/switch/dpad_right.png b/addons/controller_icons/assets/switch/dpad_right.png
new file mode 100644
index 0000000..8b5411d
Binary files /dev/null and b/addons/controller_icons/assets/switch/dpad_right.png differ
diff --git a/addons/controller_icons/assets/switch/dpad_right.png.import b/addons/controller_icons/assets/switch/dpad_right.png.import
new file mode 100644
index 0000000..671e31b
--- /dev/null
+++ b/addons/controller_icons/assets/switch/dpad_right.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dlmdkgq67fcis"
+path="res://.godot/imported/dpad_right.png-3007471fdc53a106f529d115b546b760.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/switch/dpad_right.png"
+dest_files=["res://.godot/imported/dpad_right.png-3007471fdc53a106f529d115b546b760.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/switch/dpad_up.png b/addons/controller_icons/assets/switch/dpad_up.png
new file mode 100644
index 0000000..700a8ba
Binary files /dev/null and b/addons/controller_icons/assets/switch/dpad_up.png differ
diff --git a/addons/controller_icons/assets/switch/dpad_up.png.import b/addons/controller_icons/assets/switch/dpad_up.png.import
new file mode 100644
index 0000000..71db15e
--- /dev/null
+++ b/addons/controller_icons/assets/switch/dpad_up.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cskxuv3f6lf61"
+path="res://.godot/imported/dpad_up.png-4c4285851ec1cd038443f47583df3666.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/switch/dpad_up.png"
+dest_files=["res://.godot/imported/dpad_up.png-4c4285851ec1cd038443f47583df3666.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/switch/home.png b/addons/controller_icons/assets/switch/home.png
new file mode 100644
index 0000000..9b6733c
Binary files /dev/null and b/addons/controller_icons/assets/switch/home.png differ
diff --git a/addons/controller_icons/assets/switch/home.png.import b/addons/controller_icons/assets/switch/home.png.import
new file mode 100644
index 0000000..bd04f9d
--- /dev/null
+++ b/addons/controller_icons/assets/switch/home.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://r710p2bjr6ul"
+path="res://.godot/imported/home.png-5064b33e1525213704fd7e54a238d89e.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/switch/home.png"
+dest_files=["res://.godot/imported/home.png-5064b33e1525213704fd7e54a238d89e.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/switch/l.png b/addons/controller_icons/assets/switch/l.png
new file mode 100644
index 0000000..ddfa3b9
Binary files /dev/null and b/addons/controller_icons/assets/switch/l.png differ
diff --git a/addons/controller_icons/assets/switch/l.png.import b/addons/controller_icons/assets/switch/l.png.import
new file mode 100644
index 0000000..5abec21
--- /dev/null
+++ b/addons/controller_icons/assets/switch/l.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cwqvqq3urrj7o"
+path="res://.godot/imported/l.png-e3d1358307fb6c1e5f233a556e232e14.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/switch/l.png"
+dest_files=["res://.godot/imported/l.png-e3d1358307fb6c1e5f233a556e232e14.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/switch/l_stick.png b/addons/controller_icons/assets/switch/l_stick.png
new file mode 100644
index 0000000..d861ca5
Binary files /dev/null and b/addons/controller_icons/assets/switch/l_stick.png differ
diff --git a/addons/controller_icons/assets/switch/l_stick.png.import b/addons/controller_icons/assets/switch/l_stick.png.import
new file mode 100644
index 0000000..cfdaefa
--- /dev/null
+++ b/addons/controller_icons/assets/switch/l_stick.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b4hjauro4m0qy"
+path="res://.godot/imported/l_stick.png-ca22952e4f56ee820836a9a2a4efa9a5.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/switch/l_stick.png"
+dest_files=["res://.godot/imported/l_stick.png-ca22952e4f56ee820836a9a2a4efa9a5.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/switch/left.png b/addons/controller_icons/assets/switch/left.png
new file mode 100644
index 0000000..fd58439
Binary files /dev/null and b/addons/controller_icons/assets/switch/left.png differ
diff --git a/addons/controller_icons/assets/switch/left.png.import b/addons/controller_icons/assets/switch/left.png.import
new file mode 100644
index 0000000..6d84e7c
--- /dev/null
+++ b/addons/controller_icons/assets/switch/left.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b4m2fe1kt7frh"
+path="res://.godot/imported/left.png-c1516db77a1bd37214295e4fa38ff2d8.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/switch/left.png"
+dest_files=["res://.godot/imported/left.png-c1516db77a1bd37214295e4fa38ff2d8.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/switch/minus.png b/addons/controller_icons/assets/switch/minus.png
new file mode 100644
index 0000000..d32608e
Binary files /dev/null and b/addons/controller_icons/assets/switch/minus.png differ
diff --git a/addons/controller_icons/assets/switch/minus.png.import b/addons/controller_icons/assets/switch/minus.png.import
new file mode 100644
index 0000000..c7b0d56
--- /dev/null
+++ b/addons/controller_icons/assets/switch/minus.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://3y7roswe12hw"
+path="res://.godot/imported/minus.png-51777051e1934ff00687c799a7c1a259.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/switch/minus.png"
+dest_files=["res://.godot/imported/minus.png-51777051e1934ff00687c799a7c1a259.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/switch/plus.png b/addons/controller_icons/assets/switch/plus.png
new file mode 100644
index 0000000..f1b0dc4
Binary files /dev/null and b/addons/controller_icons/assets/switch/plus.png differ
diff --git a/addons/controller_icons/assets/switch/plus.png.import b/addons/controller_icons/assets/switch/plus.png.import
new file mode 100644
index 0000000..0e45e2c
--- /dev/null
+++ b/addons/controller_icons/assets/switch/plus.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cyfb3pxcb7wwp"
+path="res://.godot/imported/plus.png-4390752258f8416f7d20ed3058b9a73d.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/switch/plus.png"
+dest_files=["res://.godot/imported/plus.png-4390752258f8416f7d20ed3058b9a73d.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/switch/r.png b/addons/controller_icons/assets/switch/r.png
new file mode 100644
index 0000000..01f137a
Binary files /dev/null and b/addons/controller_icons/assets/switch/r.png differ
diff --git a/addons/controller_icons/assets/switch/r.png.import b/addons/controller_icons/assets/switch/r.png.import
new file mode 100644
index 0000000..d72048c
--- /dev/null
+++ b/addons/controller_icons/assets/switch/r.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bol28l20uvyth"
+path="res://.godot/imported/r.png-5ff5051242ce222b42f687a41d922ea1.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/switch/r.png"
+dest_files=["res://.godot/imported/r.png-5ff5051242ce222b42f687a41d922ea1.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/switch/r_stick.png b/addons/controller_icons/assets/switch/r_stick.png
new file mode 100644
index 0000000..f2c605b
Binary files /dev/null and b/addons/controller_icons/assets/switch/r_stick.png differ
diff --git a/addons/controller_icons/assets/switch/r_stick.png.import b/addons/controller_icons/assets/switch/r_stick.png.import
new file mode 100644
index 0000000..800b4af
--- /dev/null
+++ b/addons/controller_icons/assets/switch/r_stick.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://d4kfa5jikbh6e"
+path="res://.godot/imported/r_stick.png-8336fb8720a1ed38bfe5dd6386d21f1b.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/switch/r_stick.png"
+dest_files=["res://.godot/imported/r_stick.png-8336fb8720a1ed38bfe5dd6386d21f1b.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/switch/right.png b/addons/controller_icons/assets/switch/right.png
new file mode 100644
index 0000000..f524c6c
Binary files /dev/null and b/addons/controller_icons/assets/switch/right.png differ
diff --git a/addons/controller_icons/assets/switch/right.png.import b/addons/controller_icons/assets/switch/right.png.import
new file mode 100644
index 0000000..55d26ec
--- /dev/null
+++ b/addons/controller_icons/assets/switch/right.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://clv4i78euervw"
+path="res://.godot/imported/right.png-4a1a0df486de8574bd3643a98f0f445e.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/switch/right.png"
+dest_files=["res://.godot/imported/right.png-4a1a0df486de8574bd3643a98f0f445e.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/switch/square.png b/addons/controller_icons/assets/switch/square.png
new file mode 100644
index 0000000..d0fd432
Binary files /dev/null and b/addons/controller_icons/assets/switch/square.png differ
diff --git a/addons/controller_icons/assets/switch/square.png.import b/addons/controller_icons/assets/switch/square.png.import
new file mode 100644
index 0000000..7007fd9
--- /dev/null
+++ b/addons/controller_icons/assets/switch/square.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b68npgglyuic1"
+path="res://.godot/imported/square.png-120b0a09bb5b62e1b7896639e6416c45.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/switch/square.png"
+dest_files=["res://.godot/imported/square.png-120b0a09bb5b62e1b7896639e6416c45.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/switch/up.png b/addons/controller_icons/assets/switch/up.png
new file mode 100644
index 0000000..352f890
Binary files /dev/null and b/addons/controller_icons/assets/switch/up.png differ
diff --git a/addons/controller_icons/assets/switch/up.png.import b/addons/controller_icons/assets/switch/up.png.import
new file mode 100644
index 0000000..7f2ad0a
--- /dev/null
+++ b/addons/controller_icons/assets/switch/up.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b54pfsyyoekci"
+path="res://.godot/imported/up.png-935181649d7a0f7c750c95b1b3828c64.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/switch/up.png"
+dest_files=["res://.godot/imported/up.png-935181649d7a0f7c750c95b1b3828c64.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/switch/x.png b/addons/controller_icons/assets/switch/x.png
new file mode 100644
index 0000000..bdf86ba
Binary files /dev/null and b/addons/controller_icons/assets/switch/x.png differ
diff --git a/addons/controller_icons/assets/switch/x.png.import b/addons/controller_icons/assets/switch/x.png.import
new file mode 100644
index 0000000..85889b4
--- /dev/null
+++ b/addons/controller_icons/assets/switch/x.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b50wnctwb7d4y"
+path="res://.godot/imported/x.png-c0b79e607f24c770e5e6082d203a8f2c.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/switch/x.png"
+dest_files=["res://.godot/imported/x.png-c0b79e607f24c770e5e6082d203a8f2c.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/switch/y.png b/addons/controller_icons/assets/switch/y.png
new file mode 100644
index 0000000..46ac216
Binary files /dev/null and b/addons/controller_icons/assets/switch/y.png differ
diff --git a/addons/controller_icons/assets/switch/y.png.import b/addons/controller_icons/assets/switch/y.png.import
new file mode 100644
index 0000000..df2db6f
--- /dev/null
+++ b/addons/controller_icons/assets/switch/y.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://buc72djpve48f"
+path="res://.godot/imported/y.png-93b1223c824009cc6b4dc6d04216c5d5.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/switch/y.png"
+dest_files=["res://.godot/imported/y.png-93b1223c824009cc6b4dc6d04216c5d5.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/switch/zl.png b/addons/controller_icons/assets/switch/zl.png
new file mode 100644
index 0000000..6942e1f
Binary files /dev/null and b/addons/controller_icons/assets/switch/zl.png differ
diff --git a/addons/controller_icons/assets/switch/zl.png.import b/addons/controller_icons/assets/switch/zl.png.import
new file mode 100644
index 0000000..e20c89a
--- /dev/null
+++ b/addons/controller_icons/assets/switch/zl.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ck2key5t2ql5n"
+path="res://.godot/imported/zl.png-d3401c26a4f6e21389cc91a045e78bbc.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/switch/zl.png"
+dest_files=["res://.godot/imported/zl.png-d3401c26a4f6e21389cc91a045e78bbc.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/switch/zr.png b/addons/controller_icons/assets/switch/zr.png
new file mode 100644
index 0000000..6aef3cb
Binary files /dev/null and b/addons/controller_icons/assets/switch/zr.png differ
diff --git a/addons/controller_icons/assets/switch/zr.png.import b/addons/controller_icons/assets/switch/zr.png.import
new file mode 100644
index 0000000..925f612
--- /dev/null
+++ b/addons/controller_icons/assets/switch/zr.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c6b1xw0oivd8a"
+path="res://.godot/imported/zr.png-773c45f72efa58594d2c296f7bcf98ad.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/switch/zr.png"
+dest_files=["res://.godot/imported/zr.png-773c45f72efa58594d2c296f7bcf98ad.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xbox360/a.png b/addons/controller_icons/assets/xbox360/a.png
new file mode 100644
index 0000000..cd716d1
Binary files /dev/null and b/addons/controller_icons/assets/xbox360/a.png differ
diff --git a/addons/controller_icons/assets/xbox360/a.png.import b/addons/controller_icons/assets/xbox360/a.png.import
new file mode 100644
index 0000000..124e5b2
--- /dev/null
+++ b/addons/controller_icons/assets/xbox360/a.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://d284wkmo0vqfk"
+path="res://.godot/imported/a.png-35cb6a74789d7796b5f5833c3c67ffde.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xbox360/a.png"
+dest_files=["res://.godot/imported/a.png-35cb6a74789d7796b5f5833c3c67ffde.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xbox360/b.png b/addons/controller_icons/assets/xbox360/b.png
new file mode 100644
index 0000000..73bcb6e
Binary files /dev/null and b/addons/controller_icons/assets/xbox360/b.png differ
diff --git a/addons/controller_icons/assets/xbox360/b.png.import b/addons/controller_icons/assets/xbox360/b.png.import
new file mode 100644
index 0000000..c3ca877
--- /dev/null
+++ b/addons/controller_icons/assets/xbox360/b.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bufx8lu1tny4o"
+path="res://.godot/imported/b.png-80e4c32ae4527fdcb995a9e786adbdbf.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xbox360/b.png"
+dest_files=["res://.godot/imported/b.png-80e4c32ae4527fdcb995a9e786adbdbf.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xbox360/back.png b/addons/controller_icons/assets/xbox360/back.png
new file mode 100644
index 0000000..bfb10db
Binary files /dev/null and b/addons/controller_icons/assets/xbox360/back.png differ
diff --git a/addons/controller_icons/assets/xbox360/back.png.import b/addons/controller_icons/assets/xbox360/back.png.import
new file mode 100644
index 0000000..b518f36
--- /dev/null
+++ b/addons/controller_icons/assets/xbox360/back.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cdjnpcxgnxrxb"
+path="res://.godot/imported/back.png-ce88a25195b2a2fbe762bda6ff222b5b.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xbox360/back.png"
+dest_files=["res://.godot/imported/back.png-ce88a25195b2a2fbe762bda6ff222b5b.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xbox360/back_alt.png b/addons/controller_icons/assets/xbox360/back_alt.png
new file mode 100644
index 0000000..900705b
Binary files /dev/null and b/addons/controller_icons/assets/xbox360/back_alt.png differ
diff --git a/addons/controller_icons/assets/xbox360/back_alt.png.import b/addons/controller_icons/assets/xbox360/back_alt.png.import
new file mode 100644
index 0000000..60382b4
--- /dev/null
+++ b/addons/controller_icons/assets/xbox360/back_alt.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://de4v68g8x5ygf"
+path="res://.godot/imported/back_alt.png-a7a979f712d8115fc34a8ae66d914049.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xbox360/back_alt.png"
+dest_files=["res://.godot/imported/back_alt.png-a7a979f712d8115fc34a8ae66d914049.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xbox360/dpad.png b/addons/controller_icons/assets/xbox360/dpad.png
new file mode 100644
index 0000000..93e90de
Binary files /dev/null and b/addons/controller_icons/assets/xbox360/dpad.png differ
diff --git a/addons/controller_icons/assets/xbox360/dpad.png.import b/addons/controller_icons/assets/xbox360/dpad.png.import
new file mode 100644
index 0000000..216156c
--- /dev/null
+++ b/addons/controller_icons/assets/xbox360/dpad.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cuds8v7pvi4tj"
+path="res://.godot/imported/dpad.png-4b640d96766e8faba6142c2eff13caea.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xbox360/dpad.png"
+dest_files=["res://.godot/imported/dpad.png-4b640d96766e8faba6142c2eff13caea.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xbox360/dpad_down.png b/addons/controller_icons/assets/xbox360/dpad_down.png
new file mode 100644
index 0000000..944d59b
Binary files /dev/null and b/addons/controller_icons/assets/xbox360/dpad_down.png differ
diff --git a/addons/controller_icons/assets/xbox360/dpad_down.png.import b/addons/controller_icons/assets/xbox360/dpad_down.png.import
new file mode 100644
index 0000000..80495b7
--- /dev/null
+++ b/addons/controller_icons/assets/xbox360/dpad_down.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dt4m6u4nau82r"
+path="res://.godot/imported/dpad_down.png-fdbc136940849193face1912c9965e6f.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xbox360/dpad_down.png"
+dest_files=["res://.godot/imported/dpad_down.png-fdbc136940849193face1912c9965e6f.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xbox360/dpad_left.png b/addons/controller_icons/assets/xbox360/dpad_left.png
new file mode 100644
index 0000000..6091cf2
Binary files /dev/null and b/addons/controller_icons/assets/xbox360/dpad_left.png differ
diff --git a/addons/controller_icons/assets/xbox360/dpad_left.png.import b/addons/controller_icons/assets/xbox360/dpad_left.png.import
new file mode 100644
index 0000000..8fc9d52
--- /dev/null
+++ b/addons/controller_icons/assets/xbox360/dpad_left.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://7r70kxgen0mv"
+path="res://.godot/imported/dpad_left.png-34112701ebe2a783358ffaf13cae755e.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xbox360/dpad_left.png"
+dest_files=["res://.godot/imported/dpad_left.png-34112701ebe2a783358ffaf13cae755e.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xbox360/dpad_right.png b/addons/controller_icons/assets/xbox360/dpad_right.png
new file mode 100644
index 0000000..d099719
Binary files /dev/null and b/addons/controller_icons/assets/xbox360/dpad_right.png differ
diff --git a/addons/controller_icons/assets/xbox360/dpad_right.png.import b/addons/controller_icons/assets/xbox360/dpad_right.png.import
new file mode 100644
index 0000000..ad04a8a
--- /dev/null
+++ b/addons/controller_icons/assets/xbox360/dpad_right.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://7qkn2dva6jv"
+path="res://.godot/imported/dpad_right.png-208422152fd0c75c3b1e040c016ba742.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xbox360/dpad_right.png"
+dest_files=["res://.godot/imported/dpad_right.png-208422152fd0c75c3b1e040c016ba742.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xbox360/dpad_up.png b/addons/controller_icons/assets/xbox360/dpad_up.png
new file mode 100644
index 0000000..8939669
Binary files /dev/null and b/addons/controller_icons/assets/xbox360/dpad_up.png differ
diff --git a/addons/controller_icons/assets/xbox360/dpad_up.png.import b/addons/controller_icons/assets/xbox360/dpad_up.png.import
new file mode 100644
index 0000000..f07dfba
--- /dev/null
+++ b/addons/controller_icons/assets/xbox360/dpad_up.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bh66fibu352gl"
+path="res://.godot/imported/dpad_up.png-f534a7e9efd4b904c87b93f717d8ec4f.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xbox360/dpad_up.png"
+dest_files=["res://.godot/imported/dpad_up.png-f534a7e9efd4b904c87b93f717d8ec4f.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xbox360/l_stick.png b/addons/controller_icons/assets/xbox360/l_stick.png
new file mode 100644
index 0000000..8139be2
Binary files /dev/null and b/addons/controller_icons/assets/xbox360/l_stick.png differ
diff --git a/addons/controller_icons/assets/xbox360/l_stick.png.import b/addons/controller_icons/assets/xbox360/l_stick.png.import
new file mode 100644
index 0000000..6e4c6f9
--- /dev/null
+++ b/addons/controller_icons/assets/xbox360/l_stick.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://fxgoiilpipsd"
+path="res://.godot/imported/l_stick.png-b5ed993555606d8da48a1c310a3cbd0d.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xbox360/l_stick.png"
+dest_files=["res://.godot/imported/l_stick.png-b5ed993555606d8da48a1c310a3cbd0d.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xbox360/l_stick_click.png b/addons/controller_icons/assets/xbox360/l_stick_click.png
new file mode 100644
index 0000000..21a4ee7
Binary files /dev/null and b/addons/controller_icons/assets/xbox360/l_stick_click.png differ
diff --git a/addons/controller_icons/assets/xbox360/l_stick_click.png.import b/addons/controller_icons/assets/xbox360/l_stick_click.png.import
new file mode 100644
index 0000000..fdd210f
--- /dev/null
+++ b/addons/controller_icons/assets/xbox360/l_stick_click.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://mh6if65g6eob"
+path="res://.godot/imported/l_stick_click.png-2ae341247067b8165d18d20822dfa07d.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xbox360/l_stick_click.png"
+dest_files=["res://.godot/imported/l_stick_click.png-2ae341247067b8165d18d20822dfa07d.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xbox360/lb.png b/addons/controller_icons/assets/xbox360/lb.png
new file mode 100644
index 0000000..d83f418
Binary files /dev/null and b/addons/controller_icons/assets/xbox360/lb.png differ
diff --git a/addons/controller_icons/assets/xbox360/lb.png.import b/addons/controller_icons/assets/xbox360/lb.png.import
new file mode 100644
index 0000000..f176076
--- /dev/null
+++ b/addons/controller_icons/assets/xbox360/lb.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bamrmda3in3qq"
+path="res://.godot/imported/lb.png-976dbb55daa9f796254f583420e70b4e.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xbox360/lb.png"
+dest_files=["res://.godot/imported/lb.png-976dbb55daa9f796254f583420e70b4e.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xbox360/lt.png b/addons/controller_icons/assets/xbox360/lt.png
new file mode 100644
index 0000000..84fc6f8
Binary files /dev/null and b/addons/controller_icons/assets/xbox360/lt.png differ
diff --git a/addons/controller_icons/assets/xbox360/lt.png.import b/addons/controller_icons/assets/xbox360/lt.png.import
new file mode 100644
index 0000000..82bb897
--- /dev/null
+++ b/addons/controller_icons/assets/xbox360/lt.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dhhjoq01cc2oh"
+path="res://.godot/imported/lt.png-5d538474526e2412135a268d6c53dd5b.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xbox360/lt.png"
+dest_files=["res://.godot/imported/lt.png-5d538474526e2412135a268d6c53dd5b.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xbox360/r_stick.png b/addons/controller_icons/assets/xbox360/r_stick.png
new file mode 100644
index 0000000..dde08c0
Binary files /dev/null and b/addons/controller_icons/assets/xbox360/r_stick.png differ
diff --git a/addons/controller_icons/assets/xbox360/r_stick.png.import b/addons/controller_icons/assets/xbox360/r_stick.png.import
new file mode 100644
index 0000000..aae0f27
--- /dev/null
+++ b/addons/controller_icons/assets/xbox360/r_stick.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://d6jwqg6mq8dk"
+path="res://.godot/imported/r_stick.png-2a7b966ef19b6a873dd423ca70dafc2c.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xbox360/r_stick.png"
+dest_files=["res://.godot/imported/r_stick.png-2a7b966ef19b6a873dd423ca70dafc2c.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xbox360/r_stick_click.png b/addons/controller_icons/assets/xbox360/r_stick_click.png
new file mode 100644
index 0000000..bb321d2
Binary files /dev/null and b/addons/controller_icons/assets/xbox360/r_stick_click.png differ
diff --git a/addons/controller_icons/assets/xbox360/r_stick_click.png.import b/addons/controller_icons/assets/xbox360/r_stick_click.png.import
new file mode 100644
index 0000000..ed9c58c
--- /dev/null
+++ b/addons/controller_icons/assets/xbox360/r_stick_click.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://db7d0vqnfyuin"
+path="res://.godot/imported/r_stick_click.png-89d0df3f4f9a91691c03fb1afca8b3ae.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xbox360/r_stick_click.png"
+dest_files=["res://.godot/imported/r_stick_click.png-89d0df3f4f9a91691c03fb1afca8b3ae.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xbox360/rb.png b/addons/controller_icons/assets/xbox360/rb.png
new file mode 100644
index 0000000..7735e4c
Binary files /dev/null and b/addons/controller_icons/assets/xbox360/rb.png differ
diff --git a/addons/controller_icons/assets/xbox360/rb.png.import b/addons/controller_icons/assets/xbox360/rb.png.import
new file mode 100644
index 0000000..7538b5f
--- /dev/null
+++ b/addons/controller_icons/assets/xbox360/rb.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cw2jo5xbteqdu"
+path="res://.godot/imported/rb.png-1161a3ee4faa1b6a0f9a32ae97dda6fd.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xbox360/rb.png"
+dest_files=["res://.godot/imported/rb.png-1161a3ee4faa1b6a0f9a32ae97dda6fd.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xbox360/rt.png b/addons/controller_icons/assets/xbox360/rt.png
new file mode 100644
index 0000000..1ea785c
Binary files /dev/null and b/addons/controller_icons/assets/xbox360/rt.png differ
diff --git a/addons/controller_icons/assets/xbox360/rt.png.import b/addons/controller_icons/assets/xbox360/rt.png.import
new file mode 100644
index 0000000..1a2bc0b
--- /dev/null
+++ b/addons/controller_icons/assets/xbox360/rt.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://d2qha4gd4x604"
+path="res://.godot/imported/rt.png-75a73c0618bfa934f1c3030385092590.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xbox360/rt.png"
+dest_files=["res://.godot/imported/rt.png-75a73c0618bfa934f1c3030385092590.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xbox360/start.png b/addons/controller_icons/assets/xbox360/start.png
new file mode 100644
index 0000000..4c62434
Binary files /dev/null and b/addons/controller_icons/assets/xbox360/start.png differ
diff --git a/addons/controller_icons/assets/xbox360/start.png.import b/addons/controller_icons/assets/xbox360/start.png.import
new file mode 100644
index 0000000..d5ef975
--- /dev/null
+++ b/addons/controller_icons/assets/xbox360/start.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://coxp4sapp4g8n"
+path="res://.godot/imported/start.png-4da2d3336d3215602b774e12f03ad8d1.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xbox360/start.png"
+dest_files=["res://.godot/imported/start.png-4da2d3336d3215602b774e12f03ad8d1.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xbox360/start_alt.png b/addons/controller_icons/assets/xbox360/start_alt.png
new file mode 100644
index 0000000..7a10fcd
Binary files /dev/null and b/addons/controller_icons/assets/xbox360/start_alt.png differ
diff --git a/addons/controller_icons/assets/xbox360/start_alt.png.import b/addons/controller_icons/assets/xbox360/start_alt.png.import
new file mode 100644
index 0000000..2d90c36
--- /dev/null
+++ b/addons/controller_icons/assets/xbox360/start_alt.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dq0eirc22li66"
+path="res://.godot/imported/start_alt.png-a28c5fa4e3559e75e7db8f34ccfbd03a.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xbox360/start_alt.png"
+dest_files=["res://.godot/imported/start_alt.png-a28c5fa4e3559e75e7db8f34ccfbd03a.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xbox360/x.png b/addons/controller_icons/assets/xbox360/x.png
new file mode 100644
index 0000000..4b8cec1
Binary files /dev/null and b/addons/controller_icons/assets/xbox360/x.png differ
diff --git a/addons/controller_icons/assets/xbox360/x.png.import b/addons/controller_icons/assets/xbox360/x.png.import
new file mode 100644
index 0000000..3f90fab
--- /dev/null
+++ b/addons/controller_icons/assets/xbox360/x.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://jcc3t88rfxh0"
+path="res://.godot/imported/x.png-9b708a5be93b17b1baa7773f17e3502f.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xbox360/x.png"
+dest_files=["res://.godot/imported/x.png-9b708a5be93b17b1baa7773f17e3502f.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xbox360/y.png b/addons/controller_icons/assets/xbox360/y.png
new file mode 100644
index 0000000..e32b04a
Binary files /dev/null and b/addons/controller_icons/assets/xbox360/y.png differ
diff --git a/addons/controller_icons/assets/xbox360/y.png.import b/addons/controller_icons/assets/xbox360/y.png.import
new file mode 100644
index 0000000..71b8193
--- /dev/null
+++ b/addons/controller_icons/assets/xbox360/y.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bva4iswwvta5d"
+path="res://.godot/imported/y.png-570a5281cfcc83b747da0fa451e494b7.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xbox360/y.png"
+dest_files=["res://.godot/imported/y.png-570a5281cfcc83b747da0fa451e494b7.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxone/a.png b/addons/controller_icons/assets/xboxone/a.png
new file mode 100644
index 0000000..28c3b60
Binary files /dev/null and b/addons/controller_icons/assets/xboxone/a.png differ
diff --git a/addons/controller_icons/assets/xboxone/a.png.import b/addons/controller_icons/assets/xboxone/a.png.import
new file mode 100644
index 0000000..b190eb7
--- /dev/null
+++ b/addons/controller_icons/assets/xboxone/a.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dwwgf5g11galy"
+path="res://.godot/imported/a.png-df37d09ebc89d866cdbfffbbf8f73ee9.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxone/a.png"
+dest_files=["res://.godot/imported/a.png-df37d09ebc89d866cdbfffbbf8f73ee9.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxone/b.png b/addons/controller_icons/assets/xboxone/b.png
new file mode 100644
index 0000000..2a4d9b6
Binary files /dev/null and b/addons/controller_icons/assets/xboxone/b.png differ
diff --git a/addons/controller_icons/assets/xboxone/b.png.import b/addons/controller_icons/assets/xboxone/b.png.import
new file mode 100644
index 0000000..dce8c56
--- /dev/null
+++ b/addons/controller_icons/assets/xboxone/b.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://21k6orfpjxk5"
+path="res://.godot/imported/b.png-ba65adfa94f146e55646f29fd6dae977.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxone/b.png"
+dest_files=["res://.godot/imported/b.png-ba65adfa94f146e55646f29fd6dae977.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxone/diagram.png b/addons/controller_icons/assets/xboxone/diagram.png
new file mode 100644
index 0000000..9b79c5d
Binary files /dev/null and b/addons/controller_icons/assets/xboxone/diagram.png differ
diff --git a/addons/controller_icons/assets/xboxone/diagram.png.import b/addons/controller_icons/assets/xboxone/diagram.png.import
new file mode 100644
index 0000000..099e9bf
--- /dev/null
+++ b/addons/controller_icons/assets/xboxone/diagram.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ds7amy38mqxe7"
+path="res://.godot/imported/diagram.png-0f2706ce47fa6085377e14e95b171dea.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxone/diagram.png"
+dest_files=["res://.godot/imported/diagram.png-0f2706ce47fa6085377e14e95b171dea.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxone/diagram_simple.png b/addons/controller_icons/assets/xboxone/diagram_simple.png
new file mode 100644
index 0000000..7e3a1d9
Binary files /dev/null and b/addons/controller_icons/assets/xboxone/diagram_simple.png differ
diff --git a/addons/controller_icons/assets/xboxone/diagram_simple.png.import b/addons/controller_icons/assets/xboxone/diagram_simple.png.import
new file mode 100644
index 0000000..7db281f
--- /dev/null
+++ b/addons/controller_icons/assets/xboxone/diagram_simple.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dtttbuwyio14v"
+path="res://.godot/imported/diagram_simple.png-6f075f06332bedee75e8a5dc798ddf0a.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxone/diagram_simple.png"
+dest_files=["res://.godot/imported/diagram_simple.png-6f075f06332bedee75e8a5dc798ddf0a.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxone/dpad.png b/addons/controller_icons/assets/xboxone/dpad.png
new file mode 100644
index 0000000..9c04c85
Binary files /dev/null and b/addons/controller_icons/assets/xboxone/dpad.png differ
diff --git a/addons/controller_icons/assets/xboxone/dpad.png.import b/addons/controller_icons/assets/xboxone/dpad.png.import
new file mode 100644
index 0000000..c9eebbf
--- /dev/null
+++ b/addons/controller_icons/assets/xboxone/dpad.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b3iafdmclhdit"
+path="res://.godot/imported/dpad.png-19ecbd13049552e45dedb0cb27cf0f1b.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxone/dpad.png"
+dest_files=["res://.godot/imported/dpad.png-19ecbd13049552e45dedb0cb27cf0f1b.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxone/dpad_down.png b/addons/controller_icons/assets/xboxone/dpad_down.png
new file mode 100644
index 0000000..8c1134c
Binary files /dev/null and b/addons/controller_icons/assets/xboxone/dpad_down.png differ
diff --git a/addons/controller_icons/assets/xboxone/dpad_down.png.import b/addons/controller_icons/assets/xboxone/dpad_down.png.import
new file mode 100644
index 0000000..242ab38
--- /dev/null
+++ b/addons/controller_icons/assets/xboxone/dpad_down.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bxseb4ccmfktr"
+path="res://.godot/imported/dpad_down.png-0c9ca40e693b569f2fccd07829ce2ce5.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxone/dpad_down.png"
+dest_files=["res://.godot/imported/dpad_down.png-0c9ca40e693b569f2fccd07829ce2ce5.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxone/dpad_left.png b/addons/controller_icons/assets/xboxone/dpad_left.png
new file mode 100644
index 0000000..45ddb16
Binary files /dev/null and b/addons/controller_icons/assets/xboxone/dpad_left.png differ
diff --git a/addons/controller_icons/assets/xboxone/dpad_left.png.import b/addons/controller_icons/assets/xboxone/dpad_left.png.import
new file mode 100644
index 0000000..1da1b71
--- /dev/null
+++ b/addons/controller_icons/assets/xboxone/dpad_left.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dv1dkaue3ow3r"
+path="res://.godot/imported/dpad_left.png-92254da17371396d0d47d28719f0e609.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxone/dpad_left.png"
+dest_files=["res://.godot/imported/dpad_left.png-92254da17371396d0d47d28719f0e609.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxone/dpad_right.png b/addons/controller_icons/assets/xboxone/dpad_right.png
new file mode 100644
index 0000000..a1fbc2c
Binary files /dev/null and b/addons/controller_icons/assets/xboxone/dpad_right.png differ
diff --git a/addons/controller_icons/assets/xboxone/dpad_right.png.import b/addons/controller_icons/assets/xboxone/dpad_right.png.import
new file mode 100644
index 0000000..42ff3ad
--- /dev/null
+++ b/addons/controller_icons/assets/xboxone/dpad_right.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cepfb3dgv2lhf"
+path="res://.godot/imported/dpad_right.png-df952148b3d372909267f78c1b09e03b.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxone/dpad_right.png"
+dest_files=["res://.godot/imported/dpad_right.png-df952148b3d372909267f78c1b09e03b.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxone/dpad_up.png b/addons/controller_icons/assets/xboxone/dpad_up.png
new file mode 100644
index 0000000..e8eab7d
Binary files /dev/null and b/addons/controller_icons/assets/xboxone/dpad_up.png differ
diff --git a/addons/controller_icons/assets/xboxone/dpad_up.png.import b/addons/controller_icons/assets/xboxone/dpad_up.png.import
new file mode 100644
index 0000000..e123a38
--- /dev/null
+++ b/addons/controller_icons/assets/xboxone/dpad_up.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cxx27mcrkop34"
+path="res://.godot/imported/dpad_up.png-d8fa0f50e9f7bf8b9172cecc962850ac.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxone/dpad_up.png"
+dest_files=["res://.godot/imported/dpad_up.png-d8fa0f50e9f7bf8b9172cecc962850ac.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxone/l_stick.png b/addons/controller_icons/assets/xboxone/l_stick.png
new file mode 100644
index 0000000..9c5ca5c
Binary files /dev/null and b/addons/controller_icons/assets/xboxone/l_stick.png differ
diff --git a/addons/controller_icons/assets/xboxone/l_stick.png.import b/addons/controller_icons/assets/xboxone/l_stick.png.import
new file mode 100644
index 0000000..7415bf8
--- /dev/null
+++ b/addons/controller_icons/assets/xboxone/l_stick.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bfxo2jdawkbxl"
+path="res://.godot/imported/l_stick.png-0d3026b5b0f374950eb21b41723d35cc.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxone/l_stick.png"
+dest_files=["res://.godot/imported/l_stick.png-0d3026b5b0f374950eb21b41723d35cc.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxone/l_stick_click.png b/addons/controller_icons/assets/xboxone/l_stick_click.png
new file mode 100644
index 0000000..ad0428f
Binary files /dev/null and b/addons/controller_icons/assets/xboxone/l_stick_click.png differ
diff --git a/addons/controller_icons/assets/xboxone/l_stick_click.png.import b/addons/controller_icons/assets/xboxone/l_stick_click.png.import
new file mode 100644
index 0000000..1ddf9e1
--- /dev/null
+++ b/addons/controller_icons/assets/xboxone/l_stick_click.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b4wnmpco87lk2"
+path="res://.godot/imported/l_stick_click.png-f6ed1c56bfd385576764a1e11f9f28b4.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxone/l_stick_click.png"
+dest_files=["res://.godot/imported/l_stick_click.png-f6ed1c56bfd385576764a1e11f9f28b4.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxone/lb.png b/addons/controller_icons/assets/xboxone/lb.png
new file mode 100644
index 0000000..f6c414b
Binary files /dev/null and b/addons/controller_icons/assets/xboxone/lb.png differ
diff --git a/addons/controller_icons/assets/xboxone/lb.png.import b/addons/controller_icons/assets/xboxone/lb.png.import
new file mode 100644
index 0000000..c8943a8
--- /dev/null
+++ b/addons/controller_icons/assets/xboxone/lb.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dp2y22fkfbsyu"
+path="res://.godot/imported/lb.png-bd9829412dab8895ecddec9847e04e30.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxone/lb.png"
+dest_files=["res://.godot/imported/lb.png-bd9829412dab8895ecddec9847e04e30.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxone/lt.png b/addons/controller_icons/assets/xboxone/lt.png
new file mode 100644
index 0000000..e9681c9
Binary files /dev/null and b/addons/controller_icons/assets/xboxone/lt.png differ
diff --git a/addons/controller_icons/assets/xboxone/lt.png.import b/addons/controller_icons/assets/xboxone/lt.png.import
new file mode 100644
index 0000000..0f778ec
--- /dev/null
+++ b/addons/controller_icons/assets/xboxone/lt.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://pxfeij36kho8"
+path="res://.godot/imported/lt.png-e5cbcc6dfd86517f8b6df37ab212f728.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxone/lt.png"
+dest_files=["res://.godot/imported/lt.png-e5cbcc6dfd86517f8b6df37ab212f728.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxone/menu.png b/addons/controller_icons/assets/xboxone/menu.png
new file mode 100644
index 0000000..2cbfb08
Binary files /dev/null and b/addons/controller_icons/assets/xboxone/menu.png differ
diff --git a/addons/controller_icons/assets/xboxone/menu.png.import b/addons/controller_icons/assets/xboxone/menu.png.import
new file mode 100644
index 0000000..f55f1eb
--- /dev/null
+++ b/addons/controller_icons/assets/xboxone/menu.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ddoiw1qbo1nqo"
+path="res://.godot/imported/menu.png-90302e9e2a81667c60beb62716dd216f.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxone/menu.png"
+dest_files=["res://.godot/imported/menu.png-90302e9e2a81667c60beb62716dd216f.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxone/r_stick.png b/addons/controller_icons/assets/xboxone/r_stick.png
new file mode 100644
index 0000000..3d83a22
Binary files /dev/null and b/addons/controller_icons/assets/xboxone/r_stick.png differ
diff --git a/addons/controller_icons/assets/xboxone/r_stick.png.import b/addons/controller_icons/assets/xboxone/r_stick.png.import
new file mode 100644
index 0000000..a396b8d
--- /dev/null
+++ b/addons/controller_icons/assets/xboxone/r_stick.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://gxvdjyj5ur2w"
+path="res://.godot/imported/r_stick.png-3aeee5aa9939c501687f510e0be1f354.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxone/r_stick.png"
+dest_files=["res://.godot/imported/r_stick.png-3aeee5aa9939c501687f510e0be1f354.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxone/r_stick_click.png b/addons/controller_icons/assets/xboxone/r_stick_click.png
new file mode 100644
index 0000000..de08508
Binary files /dev/null and b/addons/controller_icons/assets/xboxone/r_stick_click.png differ
diff --git a/addons/controller_icons/assets/xboxone/r_stick_click.png.import b/addons/controller_icons/assets/xboxone/r_stick_click.png.import
new file mode 100644
index 0000000..00c31af
--- /dev/null
+++ b/addons/controller_icons/assets/xboxone/r_stick_click.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dx7no3wmbkt3s"
+path="res://.godot/imported/r_stick_click.png-0bcdf518623b525d9f31b8a5a49e91e4.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxone/r_stick_click.png"
+dest_files=["res://.godot/imported/r_stick_click.png-0bcdf518623b525d9f31b8a5a49e91e4.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxone/rb.png b/addons/controller_icons/assets/xboxone/rb.png
new file mode 100644
index 0000000..5dcfc6d
Binary files /dev/null and b/addons/controller_icons/assets/xboxone/rb.png differ
diff --git a/addons/controller_icons/assets/xboxone/rb.png.import b/addons/controller_icons/assets/xboxone/rb.png.import
new file mode 100644
index 0000000..258b708
--- /dev/null
+++ b/addons/controller_icons/assets/xboxone/rb.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cbor273q2fdp3"
+path="res://.godot/imported/rb.png-c02637559fb689b9cd61df07ff2fefdd.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxone/rb.png"
+dest_files=["res://.godot/imported/rb.png-c02637559fb689b9cd61df07ff2fefdd.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxone/rt.png b/addons/controller_icons/assets/xboxone/rt.png
new file mode 100644
index 0000000..7bf27f4
Binary files /dev/null and b/addons/controller_icons/assets/xboxone/rt.png differ
diff --git a/addons/controller_icons/assets/xboxone/rt.png.import b/addons/controller_icons/assets/xboxone/rt.png.import
new file mode 100644
index 0000000..88663f5
--- /dev/null
+++ b/addons/controller_icons/assets/xboxone/rt.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://nqv3xt52o1e"
+path="res://.godot/imported/rt.png-6a132dc7aae10f49a3d0c4c557cad22e.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxone/rt.png"
+dest_files=["res://.godot/imported/rt.png-6a132dc7aae10f49a3d0c4c557cad22e.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxone/view.png b/addons/controller_icons/assets/xboxone/view.png
new file mode 100644
index 0000000..3756d29
Binary files /dev/null and b/addons/controller_icons/assets/xboxone/view.png differ
diff --git a/addons/controller_icons/assets/xboxone/view.png.import b/addons/controller_icons/assets/xboxone/view.png.import
new file mode 100644
index 0000000..8114bbf
--- /dev/null
+++ b/addons/controller_icons/assets/xboxone/view.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://tgpcpple5h2q"
+path="res://.godot/imported/view.png-ab4efd6aa8e0bf2549b9e03f65032d18.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxone/view.png"
+dest_files=["res://.godot/imported/view.png-ab4efd6aa8e0bf2549b9e03f65032d18.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxone/x.png b/addons/controller_icons/assets/xboxone/x.png
new file mode 100644
index 0000000..a0f0ac1
Binary files /dev/null and b/addons/controller_icons/assets/xboxone/x.png differ
diff --git a/addons/controller_icons/assets/xboxone/x.png.import b/addons/controller_icons/assets/xboxone/x.png.import
new file mode 100644
index 0000000..7ce881c
--- /dev/null
+++ b/addons/controller_icons/assets/xboxone/x.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cna0glvxuuco"
+path="res://.godot/imported/x.png-3a51ef6e3dd538a024aafb793c6f0ecc.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxone/x.png"
+dest_files=["res://.godot/imported/x.png-3a51ef6e3dd538a024aafb793c6f0ecc.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxone/y.png b/addons/controller_icons/assets/xboxone/y.png
new file mode 100644
index 0000000..4e31627
Binary files /dev/null and b/addons/controller_icons/assets/xboxone/y.png differ
diff --git a/addons/controller_icons/assets/xboxone/y.png.import b/addons/controller_icons/assets/xboxone/y.png.import
new file mode 100644
index 0000000..5464371
--- /dev/null
+++ b/addons/controller_icons/assets/xboxone/y.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c3lkr5o5sqj06"
+path="res://.godot/imported/y.png-d67d0b4f521ce9df38869ef9f4c11bdf.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxone/y.png"
+dest_files=["res://.godot/imported/y.png-d67d0b4f521ce9df38869ef9f4c11bdf.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxseries/a.png b/addons/controller_icons/assets/xboxseries/a.png
new file mode 100644
index 0000000..e22bb29
Binary files /dev/null and b/addons/controller_icons/assets/xboxseries/a.png differ
diff --git a/addons/controller_icons/assets/xboxseries/a.png.import b/addons/controller_icons/assets/xboxseries/a.png.import
new file mode 100644
index 0000000..843ce2b
--- /dev/null
+++ b/addons/controller_icons/assets/xboxseries/a.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cn8ot71as8p80"
+path="res://.godot/imported/a.png-bc565aef96969cf9c64e8d7ede25217e.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxseries/a.png"
+dest_files=["res://.godot/imported/a.png-bc565aef96969cf9c64e8d7ede25217e.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxseries/b.png b/addons/controller_icons/assets/xboxseries/b.png
new file mode 100644
index 0000000..9312c26
Binary files /dev/null and b/addons/controller_icons/assets/xboxseries/b.png differ
diff --git a/addons/controller_icons/assets/xboxseries/b.png.import b/addons/controller_icons/assets/xboxseries/b.png.import
new file mode 100644
index 0000000..e4615dc
--- /dev/null
+++ b/addons/controller_icons/assets/xboxseries/b.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dibsukmxabd6a"
+path="res://.godot/imported/b.png-0a4b27ee9783e34ddc4cc390b98123f4.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxseries/b.png"
+dest_files=["res://.godot/imported/b.png-0a4b27ee9783e34ddc4cc390b98123f4.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxseries/diagram.png b/addons/controller_icons/assets/xboxseries/diagram.png
new file mode 100644
index 0000000..ff29b45
Binary files /dev/null and b/addons/controller_icons/assets/xboxseries/diagram.png differ
diff --git a/addons/controller_icons/assets/xboxseries/diagram.png.import b/addons/controller_icons/assets/xboxseries/diagram.png.import
new file mode 100644
index 0000000..0d6927a
--- /dev/null
+++ b/addons/controller_icons/assets/xboxseries/diagram.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://botd0wxjewxqw"
+path="res://.godot/imported/diagram.png-cda8327502f46405c0cc1aef02bdfafa.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxseries/diagram.png"
+dest_files=["res://.godot/imported/diagram.png-cda8327502f46405c0cc1aef02bdfafa.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxseries/diagram_simple.png b/addons/controller_icons/assets/xboxseries/diagram_simple.png
new file mode 100644
index 0000000..bf23d73
Binary files /dev/null and b/addons/controller_icons/assets/xboxseries/diagram_simple.png differ
diff --git a/addons/controller_icons/assets/xboxseries/diagram_simple.png.import b/addons/controller_icons/assets/xboxseries/diagram_simple.png.import
new file mode 100644
index 0000000..052197c
--- /dev/null
+++ b/addons/controller_icons/assets/xboxseries/diagram_simple.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://g85advbc1vrw"
+path="res://.godot/imported/diagram_simple.png-5942ec7e4d666fdc7c53542bb4328581.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxseries/diagram_simple.png"
+dest_files=["res://.godot/imported/diagram_simple.png-5942ec7e4d666fdc7c53542bb4328581.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxseries/dpad.png b/addons/controller_icons/assets/xboxseries/dpad.png
new file mode 100644
index 0000000..d66bd81
Binary files /dev/null and b/addons/controller_icons/assets/xboxseries/dpad.png differ
diff --git a/addons/controller_icons/assets/xboxseries/dpad.png.import b/addons/controller_icons/assets/xboxseries/dpad.png.import
new file mode 100644
index 0000000..dfb95f7
--- /dev/null
+++ b/addons/controller_icons/assets/xboxseries/dpad.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://6fgfguvcu861"
+path="res://.godot/imported/dpad.png-fe09e7551d7ac8f419ce4e7ea4555393.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxseries/dpad.png"
+dest_files=["res://.godot/imported/dpad.png-fe09e7551d7ac8f419ce4e7ea4555393.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxseries/dpad_down.png b/addons/controller_icons/assets/xboxseries/dpad_down.png
new file mode 100644
index 0000000..93478ee
Binary files /dev/null and b/addons/controller_icons/assets/xboxseries/dpad_down.png differ
diff --git a/addons/controller_icons/assets/xboxseries/dpad_down.png.import b/addons/controller_icons/assets/xboxseries/dpad_down.png.import
new file mode 100644
index 0000000..5a557ed
--- /dev/null
+++ b/addons/controller_icons/assets/xboxseries/dpad_down.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bd2rj8doekapn"
+path="res://.godot/imported/dpad_down.png-73c90acd2c18f3d773119570fce2af56.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxseries/dpad_down.png"
+dest_files=["res://.godot/imported/dpad_down.png-73c90acd2c18f3d773119570fce2af56.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxseries/dpad_left.png b/addons/controller_icons/assets/xboxseries/dpad_left.png
new file mode 100644
index 0000000..e1e3dfd
Binary files /dev/null and b/addons/controller_icons/assets/xboxseries/dpad_left.png differ
diff --git a/addons/controller_icons/assets/xboxseries/dpad_left.png.import b/addons/controller_icons/assets/xboxseries/dpad_left.png.import
new file mode 100644
index 0000000..ca993f3
--- /dev/null
+++ b/addons/controller_icons/assets/xboxseries/dpad_left.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://diw08d6ryyymo"
+path="res://.godot/imported/dpad_left.png-af11db941f9b47bf339826c87d74dcdf.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxseries/dpad_left.png"
+dest_files=["res://.godot/imported/dpad_left.png-af11db941f9b47bf339826c87d74dcdf.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxseries/dpad_right.png b/addons/controller_icons/assets/xboxseries/dpad_right.png
new file mode 100644
index 0000000..2cabaef
Binary files /dev/null and b/addons/controller_icons/assets/xboxseries/dpad_right.png differ
diff --git a/addons/controller_icons/assets/xboxseries/dpad_right.png.import b/addons/controller_icons/assets/xboxseries/dpad_right.png.import
new file mode 100644
index 0000000..ff41bea
--- /dev/null
+++ b/addons/controller_icons/assets/xboxseries/dpad_right.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://6jrs4rfwt2ex"
+path="res://.godot/imported/dpad_right.png-52c3a89482849bc7aaf7e05cf8266718.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxseries/dpad_right.png"
+dest_files=["res://.godot/imported/dpad_right.png-52c3a89482849bc7aaf7e05cf8266718.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxseries/dpad_up.png b/addons/controller_icons/assets/xboxseries/dpad_up.png
new file mode 100644
index 0000000..a466bad
Binary files /dev/null and b/addons/controller_icons/assets/xboxseries/dpad_up.png differ
diff --git a/addons/controller_icons/assets/xboxseries/dpad_up.png.import b/addons/controller_icons/assets/xboxseries/dpad_up.png.import
new file mode 100644
index 0000000..0e0ba68
--- /dev/null
+++ b/addons/controller_icons/assets/xboxseries/dpad_up.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cjh6ihpgo3c53"
+path="res://.godot/imported/dpad_up.png-d7e305c753c393073bb2bd7d5238de99.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxseries/dpad_up.png"
+dest_files=["res://.godot/imported/dpad_up.png-d7e305c753c393073bb2bd7d5238de99.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxseries/l_stick.png b/addons/controller_icons/assets/xboxseries/l_stick.png
new file mode 100644
index 0000000..de49dc6
Binary files /dev/null and b/addons/controller_icons/assets/xboxseries/l_stick.png differ
diff --git a/addons/controller_icons/assets/xboxseries/l_stick.png.import b/addons/controller_icons/assets/xboxseries/l_stick.png.import
new file mode 100644
index 0000000..25afc96
--- /dev/null
+++ b/addons/controller_icons/assets/xboxseries/l_stick.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bhat3ss1rwdjb"
+path="res://.godot/imported/l_stick.png-a6fed6ac47ed59f94e2af2105409fe51.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxseries/l_stick.png"
+dest_files=["res://.godot/imported/l_stick.png-a6fed6ac47ed59f94e2af2105409fe51.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxseries/l_stick_click.png b/addons/controller_icons/assets/xboxseries/l_stick_click.png
new file mode 100644
index 0000000..ad0428f
Binary files /dev/null and b/addons/controller_icons/assets/xboxseries/l_stick_click.png differ
diff --git a/addons/controller_icons/assets/xboxseries/l_stick_click.png.import b/addons/controller_icons/assets/xboxseries/l_stick_click.png.import
new file mode 100644
index 0000000..c17c733
--- /dev/null
+++ b/addons/controller_icons/assets/xboxseries/l_stick_click.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bok8g0m4puta8"
+path="res://.godot/imported/l_stick_click.png-30ca75232db7697e2b3808c77ba8b6e7.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxseries/l_stick_click.png"
+dest_files=["res://.godot/imported/l_stick_click.png-30ca75232db7697e2b3808c77ba8b6e7.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxseries/lb.png b/addons/controller_icons/assets/xboxseries/lb.png
new file mode 100644
index 0000000..f6c414b
Binary files /dev/null and b/addons/controller_icons/assets/xboxseries/lb.png differ
diff --git a/addons/controller_icons/assets/xboxseries/lb.png.import b/addons/controller_icons/assets/xboxseries/lb.png.import
new file mode 100644
index 0000000..8896965
--- /dev/null
+++ b/addons/controller_icons/assets/xboxseries/lb.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://daelou54xassi"
+path="res://.godot/imported/lb.png-b6bcbd6efbe8fa69292c8649a6623d1f.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxseries/lb.png"
+dest_files=["res://.godot/imported/lb.png-b6bcbd6efbe8fa69292c8649a6623d1f.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxseries/lt.png b/addons/controller_icons/assets/xboxseries/lt.png
new file mode 100644
index 0000000..526816c
Binary files /dev/null and b/addons/controller_icons/assets/xboxseries/lt.png differ
diff --git a/addons/controller_icons/assets/xboxseries/lt.png.import b/addons/controller_icons/assets/xboxseries/lt.png.import
new file mode 100644
index 0000000..b841eb2
--- /dev/null
+++ b/addons/controller_icons/assets/xboxseries/lt.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bnbmkaqynud4u"
+path="res://.godot/imported/lt.png-3050b62cca663463c11e3bdc7f3a4aa7.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxseries/lt.png"
+dest_files=["res://.godot/imported/lt.png-3050b62cca663463c11e3bdc7f3a4aa7.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxseries/menu.png b/addons/controller_icons/assets/xboxseries/menu.png
new file mode 100644
index 0000000..190780e
Binary files /dev/null and b/addons/controller_icons/assets/xboxseries/menu.png differ
diff --git a/addons/controller_icons/assets/xboxseries/menu.png.import b/addons/controller_icons/assets/xboxseries/menu.png.import
new file mode 100644
index 0000000..5d5f45e
--- /dev/null
+++ b/addons/controller_icons/assets/xboxseries/menu.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://wa2ghqrikdkw"
+path="res://.godot/imported/menu.png-79f99c8816ac6c83883ba4cad7e5b68c.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxseries/menu.png"
+dest_files=["res://.godot/imported/menu.png-79f99c8816ac6c83883ba4cad7e5b68c.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxseries/r_stick.png b/addons/controller_icons/assets/xboxseries/r_stick.png
new file mode 100644
index 0000000..866be1c
Binary files /dev/null and b/addons/controller_icons/assets/xboxseries/r_stick.png differ
diff --git a/addons/controller_icons/assets/xboxseries/r_stick.png.import b/addons/controller_icons/assets/xboxseries/r_stick.png.import
new file mode 100644
index 0000000..20b199b
--- /dev/null
+++ b/addons/controller_icons/assets/xboxseries/r_stick.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://gr6lwufu681b"
+path="res://.godot/imported/r_stick.png-e61fa6910f07053c126f86598fcaaa20.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxseries/r_stick.png"
+dest_files=["res://.godot/imported/r_stick.png-e61fa6910f07053c126f86598fcaaa20.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxseries/r_stick_click.png b/addons/controller_icons/assets/xboxseries/r_stick_click.png
new file mode 100644
index 0000000..de08508
Binary files /dev/null and b/addons/controller_icons/assets/xboxseries/r_stick_click.png differ
diff --git a/addons/controller_icons/assets/xboxseries/r_stick_click.png.import b/addons/controller_icons/assets/xboxseries/r_stick_click.png.import
new file mode 100644
index 0000000..42b013b
--- /dev/null
+++ b/addons/controller_icons/assets/xboxseries/r_stick_click.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://2nwocgbye434"
+path="res://.godot/imported/r_stick_click.png-702c338f12817cfb325db5536410be0e.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxseries/r_stick_click.png"
+dest_files=["res://.godot/imported/r_stick_click.png-702c338f12817cfb325db5536410be0e.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxseries/rb.png b/addons/controller_icons/assets/xboxseries/rb.png
new file mode 100644
index 0000000..5dcfc6d
Binary files /dev/null and b/addons/controller_icons/assets/xboxseries/rb.png differ
diff --git a/addons/controller_icons/assets/xboxseries/rb.png.import b/addons/controller_icons/assets/xboxseries/rb.png.import
new file mode 100644
index 0000000..e356908
--- /dev/null
+++ b/addons/controller_icons/assets/xboxseries/rb.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cr2abv6e5m5k1"
+path="res://.godot/imported/rb.png-a4855ae927f833312b505a249eb91a96.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxseries/rb.png"
+dest_files=["res://.godot/imported/rb.png-a4855ae927f833312b505a249eb91a96.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxseries/rt.png b/addons/controller_icons/assets/xboxseries/rt.png
new file mode 100644
index 0000000..8004286
Binary files /dev/null and b/addons/controller_icons/assets/xboxseries/rt.png differ
diff --git a/addons/controller_icons/assets/xboxseries/rt.png.import b/addons/controller_icons/assets/xboxseries/rt.png.import
new file mode 100644
index 0000000..4e784b1
--- /dev/null
+++ b/addons/controller_icons/assets/xboxseries/rt.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cpogtfphr1txi"
+path="res://.godot/imported/rt.png-25031a1e1e4e0504ac44029211345b06.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxseries/rt.png"
+dest_files=["res://.godot/imported/rt.png-25031a1e1e4e0504ac44029211345b06.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxseries/share.png b/addons/controller_icons/assets/xboxseries/share.png
new file mode 100644
index 0000000..66d9f95
Binary files /dev/null and b/addons/controller_icons/assets/xboxseries/share.png differ
diff --git a/addons/controller_icons/assets/xboxseries/share.png.import b/addons/controller_icons/assets/xboxseries/share.png.import
new file mode 100644
index 0000000..d8f4ea9
--- /dev/null
+++ b/addons/controller_icons/assets/xboxseries/share.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dqnxpbbjc2ovh"
+path="res://.godot/imported/share.png-e1f729c99714825f909dba3cb0e0e669.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxseries/share.png"
+dest_files=["res://.godot/imported/share.png-e1f729c99714825f909dba3cb0e0e669.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxseries/view.png b/addons/controller_icons/assets/xboxseries/view.png
new file mode 100644
index 0000000..066086a
Binary files /dev/null and b/addons/controller_icons/assets/xboxseries/view.png differ
diff --git a/addons/controller_icons/assets/xboxseries/view.png.import b/addons/controller_icons/assets/xboxseries/view.png.import
new file mode 100644
index 0000000..536394f
--- /dev/null
+++ b/addons/controller_icons/assets/xboxseries/view.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bklxch7dnwpf4"
+path="res://.godot/imported/view.png-fcdde74b941c2199eb232715d50c63e7.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxseries/view.png"
+dest_files=["res://.godot/imported/view.png-fcdde74b941c2199eb232715d50c63e7.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxseries/x.png b/addons/controller_icons/assets/xboxseries/x.png
new file mode 100644
index 0000000..e944b3e
Binary files /dev/null and b/addons/controller_icons/assets/xboxseries/x.png differ
diff --git a/addons/controller_icons/assets/xboxseries/x.png.import b/addons/controller_icons/assets/xboxseries/x.png.import
new file mode 100644
index 0000000..38546c8
--- /dev/null
+++ b/addons/controller_icons/assets/xboxseries/x.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c0pojbar77pcl"
+path="res://.godot/imported/x.png-2a06a0fa9f7b5bda854780cb000422eb.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxseries/x.png"
+dest_files=["res://.godot/imported/x.png-2a06a0fa9f7b5bda854780cb000422eb.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/assets/xboxseries/y.png b/addons/controller_icons/assets/xboxseries/y.png
new file mode 100644
index 0000000..cf4a997
Binary files /dev/null and b/addons/controller_icons/assets/xboxseries/y.png differ
diff --git a/addons/controller_icons/assets/xboxseries/y.png.import b/addons/controller_icons/assets/xboxseries/y.png.import
new file mode 100644
index 0000000..64f7d68
--- /dev/null
+++ b/addons/controller_icons/assets/xboxseries/y.png.import
@@ -0,0 +1,40 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c06i3deebkd3k"
+path="res://.godot/imported/y.png-533355212ca9b20e674b9dbd240aa9ad.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/assets/xboxseries/y.png"
+dest_files=["res://.godot/imported/y.png-533355212ca9b20e674b9dbd240aa9ad.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/controller_icons/objects/Button.gd b/addons/controller_icons/objects/Button.gd
new file mode 100644
index 0000000..6cc6dab
--- /dev/null
+++ b/addons/controller_icons/objects/Button.gd
@@ -0,0 +1,49 @@
+@tool
+extends Button
+class_name ControllerButton
+## Controller icon for Button nodes.
+##
+## [b]Deprecated[/b]: Use the new [ControllerIconTexture] texture resource and set it
+## directly in [member Button.icon].
+##
+## @deprecated
+
+func _get_configuration_warnings():
+ return ["This node is deprecated, and will be removed in a future version.\n\nRemove this script and use the new ControllerIconTexture resource\nby setting it directly in Button's icon property."]
+
+@export var path : String = "":
+ set(_path):
+ path = _path
+ if is_inside_tree():
+ if force_type > 0:
+ icon = ControllerIcons.parse_path(path, force_type - 1)
+ else:
+ icon = ControllerIcons.parse_path(path)
+
+@export_enum("Both", "Keyboard/Mouse", "Controller") var show_only : int = 0:
+ set(_show_only):
+ show_only = _show_only
+ _on_input_type_changed(ControllerIcons._last_input_type, ControllerIcons._last_controller)
+
+@export_enum("None", "Keyboard/Mouse", "Controller") var force_type : int = 0:
+ set(_force_type):
+ force_type = _force_type
+ _on_input_type_changed(ControllerIcons._last_input_type, ControllerIcons._last_controller)
+
+func _ready():
+ ControllerIcons.input_type_changed.connect(_on_input_type_changed)
+ self.path = path
+
+func _on_input_type_changed(input_type, controller):
+ if show_only == 0 or \
+ (show_only == 1 and input_type == ControllerIcons.InputType.KEYBOARD_MOUSE) or \
+ (show_only == 2 and input_type == ControllerIcons.InputType.CONTROLLER):
+ self.path = path
+ else:
+ icon = null
+
+func get_tts_string() -> String:
+ if force_type:
+ return ControllerIcons.parse_path_to_tts(path, force_type - 1, ControllerIcons._last_controller)
+ else:
+ return ControllerIcons.parse_path_to_tts(path)
diff --git a/addons/controller_icons/objects/Button.gd.uid b/addons/controller_icons/objects/Button.gd.uid
new file mode 100644
index 0000000..ec47135
--- /dev/null
+++ b/addons/controller_icons/objects/Button.gd.uid
@@ -0,0 +1 @@
+uid://tkvvdpvij3mb
diff --git a/addons/controller_icons/objects/ControllerIconEditorInspector.gd b/addons/controller_icons/objects/ControllerIconEditorInspector.gd
new file mode 100644
index 0000000..8590a9b
--- /dev/null
+++ b/addons/controller_icons/objects/ControllerIconEditorInspector.gd
@@ -0,0 +1,61 @@
+extends EditorInspectorPlugin
+
+var path_selector := preload("res://addons/controller_icons/objects/ControllerIconPathEditorProperty.gd")
+
+var editor_interface : EditorInterface
+
+class ControllerIcons_TexturePreview:
+ var n_root: MarginContainer
+ var n_background: TextureRect
+ var n_texture: TextureRect
+
+ var background: Texture2D
+
+ var texture: Texture2D:
+ set(_texture):
+ texture = _texture
+ n_texture.texture = texture
+
+ func _init(editor_interface: EditorInterface):
+ n_root = MarginContainer.new()
+
+ # UPGRADE: In Godot 4.2, there's no need to have an instance to
+ # EditorInterface, since it's now a static call:
+ # background = EditorInterface.get_base_control().get_theme_icon("Checkerboard", "EditorIcons")
+ background = editor_interface.get_base_control().get_theme_icon("Checkerboard", "EditorIcons")
+ n_background = TextureRect.new()
+ n_background.stretch_mode = TextureRect.STRETCH_TILE
+ n_background.texture = background
+ n_background.texture_repeat = CanvasItem.TEXTURE_REPEAT_ENABLED
+ n_background.custom_minimum_size = Vector2(0, 256)
+ n_root.add_child(n_background)
+
+ n_texture = TextureRect.new()
+ n_texture.texture_filter = CanvasItem.TEXTURE_FILTER_NEAREST_WITH_MIPMAPS
+ n_texture.set_anchors_preset(Control.PRESET_FULL_RECT)
+ n_texture.stretch_mode = TextureRect.STRETCH_KEEP_ASPECT_CENTERED
+ n_texture.expand_mode = TextureRect.EXPAND_IGNORE_SIZE
+ n_root.add_child(n_texture)
+
+ func get_root():
+ return n_root
+
+var preview: ControllerIcons_TexturePreview
+
+func _can_handle(object: Object) -> bool:
+ return object is ControllerIconTexture
+
+func _parse_begin(object: Object) -> void:
+ preview = ControllerIcons_TexturePreview.new(editor_interface)
+ add_custom_control(preview.get_root())
+
+ var icon := object as ControllerIconTexture
+ if icon:
+ preview.texture = icon
+
+func _parse_property(object: Object, type, name: String, hint_type: PropertyHint, hint_string: String, usage_flags: int, wide: bool) -> bool:
+ if name == "path":
+ var path_selector_instance = path_selector.new(editor_interface)
+ add_property_editor(name, path_selector_instance)
+ return true
+ return false
diff --git a/addons/controller_icons/objects/ControllerIconEditorInspector.gd.uid b/addons/controller_icons/objects/ControllerIconEditorInspector.gd.uid
new file mode 100644
index 0000000..fc49698
--- /dev/null
+++ b/addons/controller_icons/objects/ControllerIconEditorInspector.gd.uid
@@ -0,0 +1 @@
+uid://b8e78c65jgy1a
diff --git a/addons/controller_icons/objects/ControllerIconPathEditorProperty.gd b/addons/controller_icons/objects/ControllerIconPathEditorProperty.gd
new file mode 100644
index 0000000..b9d93a2
--- /dev/null
+++ b/addons/controller_icons/objects/ControllerIconPathEditorProperty.gd
@@ -0,0 +1,47 @@
+@tool
+extends EditorProperty
+
+var selector : ConfirmationDialog
+var line_edit : LineEdit
+
+func _init(editor_interface: EditorInterface):
+ add_child(build_tree(editor_interface))
+
+func build_tree(editor_interface: EditorInterface):
+ selector = preload("res://addons/controller_icons/objects/ControllerIconPathSelectorPopup.tscn").instantiate()
+ selector.editor_interface = editor_interface
+ selector.visible = false
+ selector.path_selected.connect(
+ func(path: String):
+ if not path.is_empty():
+ emit_changed(get_edited_property(), path)
+ )
+
+ var root := HBoxContainer.new()
+
+ line_edit = LineEdit.new()
+ line_edit.size_flags_horizontal = Control.SIZE_EXPAND_FILL
+ line_edit.text_changed.connect(func(text):
+ emit_changed(get_edited_property(), text)
+ )
+
+ var button := Button.new()
+ # UPGRADE: In Godot 4.2, there's no need to have an instance to
+ # EditorInterface, since it's now a static call:
+ # button.icon = EditorInterface.get_base_control().get_theme_icon("ListSelect", "EditorIcons")
+ button.icon = editor_interface.get_base_control().get_theme_icon("ListSelect", "EditorIcons")
+ button.tooltip_text = "Select an icon path"
+ button.pressed.connect(func():
+ selector.populate()
+ selector.popup_centered()
+ )
+
+ root.add_child(line_edit)
+ root.add_child(button)
+ root.add_child(selector)
+ return root
+
+func _update_property():
+ var new_text = get_edited_object()[get_edited_property()]
+ if line_edit.text != new_text:
+ line_edit.text = new_text
diff --git a/addons/controller_icons/objects/ControllerIconPathEditorProperty.gd.uid b/addons/controller_icons/objects/ControllerIconPathEditorProperty.gd.uid
new file mode 100644
index 0000000..b5b2972
--- /dev/null
+++ b/addons/controller_icons/objects/ControllerIconPathEditorProperty.gd.uid
@@ -0,0 +1 @@
+uid://od60alednmay
diff --git a/addons/controller_icons/objects/ControllerIconPathSelector.gd b/addons/controller_icons/objects/ControllerIconPathSelector.gd
new file mode 100644
index 0000000..f6caf42
--- /dev/null
+++ b/addons/controller_icons/objects/ControllerIconPathSelector.gd
@@ -0,0 +1,58 @@
+@tool
+extends PanelContainer
+
+signal path_selected(path: String)
+
+@onready var n_tab_container := %TabContainer
+@onready var n_input_action := %"Input Action"
+@onready var n_joypad_path := %"Joypad Path"
+@onready var n_specific_path := %"Specific Path"
+
+var input_action_populated := false
+var joypad_path_populated := false
+var specific_path_populated := false
+
+var editor_interface : EditorInterface
+
+func populate(editor_interface: EditorInterface) -> void:
+ self.editor_interface = editor_interface
+
+ input_action_populated = false
+ joypad_path_populated = false
+ specific_path_populated = false
+
+ n_tab_container.current_tab = 0
+
+func get_icon_path() -> String:
+ return n_tab_container.get_current_tab_control().get_icon_path()
+
+
+func _on_tab_container_tab_selected(tab = null) -> void:
+ match n_tab_container.get_current_tab_control():
+ n_input_action:
+ if not input_action_populated:
+ input_action_populated = true
+ n_input_action.populate(editor_interface)
+ n_joypad_path:
+ if not joypad_path_populated:
+ joypad_path_populated = true
+ n_joypad_path.populate(editor_interface)
+ n_specific_path:
+ if not specific_path_populated:
+ specific_path_populated = true
+ n_specific_path.populate(editor_interface)
+
+ await get_tree().process_frame
+ n_tab_container.get_current_tab_control().grab_focus()
+
+
+func _on_input_action_done() -> void:
+ path_selected.emit(n_input_action.get_icon_path())
+
+
+func _on_joypad_path_done() -> void:
+ path_selected.emit(n_joypad_path.get_icon_path())
+
+
+func _on_specific_path_done() -> void:
+ path_selected.emit(n_specific_path.get_icon_path())
diff --git a/addons/controller_icons/objects/ControllerIconPathSelector.gd.uid b/addons/controller_icons/objects/ControllerIconPathSelector.gd.uid
new file mode 100644
index 0000000..21bf13a
--- /dev/null
+++ b/addons/controller_icons/objects/ControllerIconPathSelector.gd.uid
@@ -0,0 +1 @@
+uid://dnnhtmq37d5mh
diff --git a/addons/controller_icons/objects/ControllerIconPathSelector.tscn b/addons/controller_icons/objects/ControllerIconPathSelector.tscn
new file mode 100644
index 0000000..80593c5
--- /dev/null
+++ b/addons/controller_icons/objects/ControllerIconPathSelector.tscn
@@ -0,0 +1,41 @@
+[gd_scene load_steps=5 format=3 uid="uid://dijn7haax0boi"]
+
+[ext_resource type="Script" path="res://addons/controller_icons/objects/ControllerIconPathSelector.gd" id="1_0ucf4"]
+[ext_resource type="PackedScene" uid="uid://bituity863qe4" path="res://addons/controller_icons/objects/path_selection/input_action.tscn" id="2_wlqmh"]
+[ext_resource type="PackedScene" uid="uid://b3lplrf2w6kh7" path="res://addons/controller_icons/objects/path_selection/joypad_path.tscn" id="3_6ffwr"]
+[ext_resource type="PackedScene" uid="uid://d2ow6e2ba86b6" path="res://addons/controller_icons/objects/path_selection/specific_path.tscn" id="4_3ai5v"]
+
+[node name="ControllerIconPathSelector" type="PanelContainer"]
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+script = ExtResource("1_0ucf4")
+
+[node name="TabContainer" type="TabContainer" parent="."]
+unique_name_in_owner = true
+custom_minimum_size = Vector2(850, 450)
+layout_mode = 2
+size_flags_horizontal = 3
+theme_override_constants/side_margin = 0
+tab_alignment = 1
+
+[node name="Input Action" parent="TabContainer" instance=ExtResource("2_wlqmh")]
+unique_name_in_owner = true
+layout_mode = 2
+
+[node name="Joypad Path" parent="TabContainer" instance=ExtResource("3_6ffwr")]
+unique_name_in_owner = true
+visible = false
+layout_mode = 2
+
+[node name="Specific Path" parent="TabContainer" instance=ExtResource("4_3ai5v")]
+unique_name_in_owner = true
+visible = false
+layout_mode = 2
+
+[connection signal="tab_selected" from="TabContainer" to="." method="_on_tab_container_tab_selected"]
+[connection signal="done" from="TabContainer/Input Action" to="." method="_on_input_action_done"]
+[connection signal="done" from="TabContainer/Joypad Path" to="." method="_on_joypad_path_done"]
+[connection signal="done" from="TabContainer/Specific Path" to="." method="_on_specific_path_done"]
diff --git a/addons/controller_icons/objects/ControllerIconPathSelectorPopup.gd b/addons/controller_icons/objects/ControllerIconPathSelectorPopup.gd
new file mode 100644
index 0000000..eef7549
--- /dev/null
+++ b/addons/controller_icons/objects/ControllerIconPathSelectorPopup.gd
@@ -0,0 +1,20 @@
+@tool
+extends ConfirmationDialog
+
+signal path_selected(path: String)
+
+var editor_interface : EditorInterface
+
+@onready var n_selector := $ControllerIconPathSelector
+
+func populate():
+ n_selector.populate(editor_interface)
+
+
+func _on_controller_icon_path_selector_path_selected(path) -> void:
+ path_selected.emit(path)
+ hide()
+
+
+func _on_confirmed() -> void:
+ path_selected.emit(n_selector.get_icon_path())
diff --git a/addons/controller_icons/objects/ControllerIconPathSelectorPopup.gd.uid b/addons/controller_icons/objects/ControllerIconPathSelectorPopup.gd.uid
new file mode 100644
index 0000000..32fc854
--- /dev/null
+++ b/addons/controller_icons/objects/ControllerIconPathSelectorPopup.gd.uid
@@ -0,0 +1 @@
+uid://pjkgsbj1nc4h
diff --git a/addons/controller_icons/objects/ControllerIconPathSelectorPopup.tscn b/addons/controller_icons/objects/ControllerIconPathSelectorPopup.tscn
new file mode 100644
index 0000000..b330223
--- /dev/null
+++ b/addons/controller_icons/objects/ControllerIconPathSelectorPopup.tscn
@@ -0,0 +1,20 @@
+[gd_scene load_steps=3 format=3 uid="uid://ib8ydhcaklwy"]
+
+[ext_resource type="Script" path="res://addons/controller_icons/objects/ControllerIconPathSelectorPopup.gd" id="1_6s0ph"]
+[ext_resource type="PackedScene" uid="uid://dijn7haax0boi" path="res://addons/controller_icons/objects/ControllerIconPathSelector.tscn" id="2_gfs7t"]
+
+[node name="ControllerIconPathSelectorPopup" type="ConfirmationDialog"]
+title = "Select an icon path"
+position = Vector2i(0, 36)
+size = Vector2i(866, 507)
+visible = true
+script = ExtResource("1_6s0ph")
+
+[node name="ControllerIconPathSelector" parent="." instance=ExtResource("2_gfs7t")]
+offset_left = 8.0
+offset_top = 8.0
+offset_right = -8.0
+offset_bottom = -49.0
+
+[connection signal="confirmed" from="." to="." method="_on_confirmed"]
+[connection signal="path_selected" from="ControllerIconPathSelector" to="." method="_on_controller_icon_path_selector_path_selected"]
diff --git a/addons/controller_icons/objects/ControllerIconTexture.gd b/addons/controller_icons/objects/ControllerIconTexture.gd
new file mode 100644
index 0000000..3ec664e
--- /dev/null
+++ b/addons/controller_icons/objects/ControllerIconTexture.gd
@@ -0,0 +1,435 @@
+@tool
+@icon("res://addons/controller_icons/objects/controller_texture_icon.svg")
+extends Texture2D
+class_name ControllerIconTexture
+## [Texture2D] proxy for displaying controller icons
+##
+## A 2D texture representing a controller icon. The underlying system provides
+## a [Texture2D] that may react to changes in the current input method, and also detect the user's controller type.
+## Specify the [member path] property to setup the desired icon and behavior.[br]
+## [br]
+## For a more technical overview, this resource functions as a proxy for any
+## node that accepts a [Texture2D], redefining draw commands to use an
+## underlying plain [Texture2D], which may be swapped by the remapping system.[br]
+## [br]
+## This resource works out-of-the box with many default nodes, such as [Sprite2D],
+## [Sprite3D], [TextureRect], [RichTextLabel], and others. If you are
+## integrating this resource on a custom node, you will need to connect to the
+## [signal Resource.changed] signal to properly handle changes to the underlying
+## texture. You might also need to force a redraw with methods such as
+## [method CanvasItem.queue_redraw].
+##
+## @tutorial(Online documentation): https://github.com/rsubtil/controller_icons/blob/master/DOCS.md
+
+## A path describing the desired icon. This is a generic path that can be one
+## of three different types:
+## [br][br]
+## [b]- Input Action[/b]: Specify the exact name of an existing input action. The
+## icon will be swapped automatically depending on whether the keyboard/mouse or the
+## controller is being used. When using a controller, it also changes according to
+## the controller type.[br][br]
+## [i]This is the recommended approach, as it will handle all input methods
+## automatically, and supports any input remapping done at runtime[/i].
+## [codeblock]
+## # "Enter" on keyboard, "Cross" on Sony,
+## # "A" on Xbox, "B" on Nintendo
+## path = "ui_accept"
+## [/codeblock]
+## [b]- Joypad Path[/b]: Specify a generic joypad path resembling the layout of a
+## Xbox 360 controller, starting with the [code]joypad/[/code] prefix. The icon will only
+## display controller icons, but it will still change according to the controller type.
+## [codeblock]
+## # "Square" on Sony, "X" on Xbox, "Y" on Nintendo
+## path = "joypad/x"
+## [/codeblock]
+## [b]- Specific Path[/b]: Specify a direct asset path from the addon assets.
+## With this path type, there is no dynamic remapping, and the icon will always
+## remain the same. The path to use is the path to an icon file, minus the base
+## path and extension.
+## [codeblock]
+## # res://addons/controller_icons/assets/steam/gyro.png
+## path = "steam/gyro"
+## [/codeblock]
+@export var path: String = "":
+ set(_path):
+ path = _path
+ _load_texture_path()
+
+enum ShowMode {
+ ANY, ## Icon will be display on any input method.
+ KEYBOARD_MOUSE, ## Icon will be display only when the keyboard/mouse is being used.
+ CONTROLLER ## Icon will be display only when a controller is being used.
+}
+
+## Show the icon only if a specific input method is being used. When hidden,
+## the icon will not occupy have any space (no width and height).
+@export var show_mode: ShowMode = ShowMode.ANY:
+ set(_show_mode):
+ show_mode = _show_mode
+ _load_texture_path()
+
+
+## Forces the icon to show a specific controller style, regardless of the
+## currently used controller type.
+##[br][br]
+## This will override force_device if set to a value other than NONE.
+##[br][br]
+## This is only relevant for paths using input actions, and has no effect on
+## other scenarios.
+
+@export var force_controller_icon_style: ControllerSettings.Devices = ControllerSettings.Devices.NONE:
+ set(_force_controller_icon_style):
+ force_controller_icon_style = _force_controller_icon_style
+ _load_texture_path()
+
+enum ForceType {
+ NONE, ## Icon will swap according to the used input method.
+ KEYBOARD_MOUSE, ## Icon will always show the keyboard/mouse action.
+ CONTROLLER, ## Icon will always show the controller action.
+}
+
+## Forces the icon to show either the keyboard/mouse or controller icon,
+## regardless of the currently used input method.
+##[br][br]
+## This is only relevant for paths using input actions, and has no effect on
+## other scenarios.
+@export var force_type: ForceType = ForceType.NONE:
+ set(_force_type):
+ force_type = _force_type
+ _load_texture_path()
+
+enum ForceDevice {
+ DEVICE_0,
+ DEVICE_1,
+ DEVICE_2,
+ DEVICE_3,
+ DEVICE_4,
+ DEVICE_5,
+ DEVICE_6,
+ DEVICE_7,
+ DEVICE_8,
+ DEVICE_9,
+ DEVICE_10,
+ DEVICE_11,
+ DEVICE_12,
+ DEVICE_13,
+ DEVICE_14,
+ DEVICE_15,
+ ANY # No device will be forced
+}
+
+## Forces the icon to use the textures for the device connected at the specified index.
+## For example, if a PlayStation 5 controller is connected at device_index 0,
+## the icon will always show PlayStation 5 textures.
+@export var force_device: ForceDevice = ForceDevice.ANY:
+ set(_force_device):
+ force_device = _force_device
+ _load_texture_path()
+
+@export_subgroup("Text Rendering")
+## Custom LabelSettings. If set, overrides the addon's global label settings.
+@export var custom_label_settings: LabelSettings:
+ set(_custom_label_settings):
+ custom_label_settings = _custom_label_settings
+ _load_texture_path()
+
+ # Call _textures setter, which handles signal connections for label settings
+ _textures = _textures
+
+
+## Returns a text representation of the displayed icon, useful for TTS
+## (text-to-speech) scenarios.
+## [br][br]
+## This takes into consideration the currently displayed icon, and will thus be
+## different if the icon is from keyboard/mouse or controller. It also takes
+## into consideration the controller type, and will thus use native button
+## names (e.g. [code]A[/code] for Xbox, [code]Cross[/code] for PlayStation, etc).
+func get_tts_string() -> String:
+ if force_type:
+ return ControllerIcons.parse_path_to_tts(path, force_type - 1)
+ else:
+ return ControllerIcons.parse_path_to_tts(path)
+
+func _can_be_shown():
+ match show_mode:
+ 1:
+ return ControllerIcons._last_input_type == ControllerIcons.InputType.KEYBOARD_MOUSE
+ 2:
+ return ControllerIcons._last_input_type == ControllerIcons.InputType.CONTROLLER
+ 0, _:
+ return true
+
+var _textures: Array[Texture2D]:
+ set(__textures):
+ # UPGRADE: In Godot 4.2, for-loop variables can be
+ # statically typed:
+ # for tex:Texture in __textures:
+ for tex in __textures:
+ if tex and tex.is_connected("changed", _reload_resource):
+ tex.disconnect("changed", _reload_resource)
+
+ if _label_settings and _label_settings.is_connected("changed", _on_label_settings_changed):
+ _label_settings.disconnect("changed", _on_label_settings_changed)
+
+ _textures = __textures
+ _label_settings = null
+ if _textures and _textures.size() > 1:
+ _label_settings = custom_label_settings
+ if not _label_settings:
+ _label_settings = ControllerIcons._settings.custom_label_settings
+ if not _label_settings:
+ _label_settings = LabelSettings.new()
+ _label_settings.connect("changed", _on_label_settings_changed)
+ _font = ThemeDB.fallback_font if not _label_settings.font else _label_settings.font
+ _on_label_settings_changed()
+ # UPGRADE: In Godot 4.2, for-loop variables can be
+ # statically typed:
+ # for tex:Texture in __textures:
+ for tex in __textures:
+ if tex:
+ tex.connect("changed", _reload_resource)
+
+var _font: Font
+var _label_settings: LabelSettings
+var _text_size: Vector2
+
+func _on_label_settings_changed():
+ _font = ThemeDB.fallback_font if not _label_settings.font else _label_settings.font
+ _text_size = _font.get_string_size("+", HORIZONTAL_ALIGNMENT_LEFT, -1, _label_settings.font_size)
+ _reload_resource()
+
+func _reload_resource():
+ _dirty = true
+ emit_changed()
+
+func _load_texture_path_impl():
+ var textures: Array[Texture2D] = []
+ if ControllerIcons.is_node_ready() and _can_be_shown():
+ var input_type = ControllerIcons._last_input_type if force_type == ForceType.NONE else force_type - 1
+ if ControllerIcons.get_path_type(path) == ControllerIcons.PathType.INPUT_ACTION:
+ var event := ControllerIcons.get_matching_event(path, input_type)
+ textures.append_array(ControllerIcons.parse_event_modifiers(event))
+ var target_device = force_device if force_device != ForceDevice.ANY else ControllerIcons._last_controller
+ var tex := ControllerIcons.parse_path(path, input_type, target_device, force_controller_icon_style)
+ if tex:
+ textures.append(tex)
+ _textures = textures
+ _reload_resource()
+
+func _load_texture_path():
+ # Ensure loading only occurs on the main thread
+ if OS.get_thread_caller_id() != OS.get_main_thread_id():
+ # In Godot 4.3, call_deferred no longer makes this function
+ # execute on the main thread due to changes in resource loading.
+ # To ensure this, we instead rely on ControllerIcons for this
+ ControllerIcons._defer_texture_load(_load_texture_path_impl)
+ else:
+ _load_texture_path_impl()
+
+func _init():
+ ControllerIcons.input_type_changed.connect(_on_input_type_changed)
+
+func _on_input_type_changed(input_type: int, controller: int):
+ _load_texture_path()
+
+#region "Draw functions"
+const _NULL_SIZE := 2
+
+func _get_width() -> int:
+ if _can_be_shown():
+ var ret := _textures.reduce(func(accum: int, texture: Texture2D):
+ if texture:
+ return accum + texture.get_width()
+ return accum
+ , 0)
+ if _label_settings:
+ ret += max(0, _textures.size() - 1) * _text_size.x
+ # If ret is 0, return a size of 2 to prevent triggering engine checks
+ # for null sizes. The correct size will be set at a later frame.
+ return ret if ret > 0 else _NULL_SIZE
+ return _NULL_SIZE
+
+func _get_height() -> int:
+ if _can_be_shown():
+ var ret := _textures.reduce(func(accum: int, texture: Texture2D):
+ if texture:
+ return max(accum, texture.get_height())
+ return accum
+ , 0)
+ if _label_settings and _textures.size() > 1:
+ ret = max(ret, _text_size.y)
+ # If ret is 0, return a size of 2 to prevent triggering engine checks
+ # for null sizes. The correct size will be set at a later frame.
+ return ret if ret > 0 else _NULL_SIZE
+ return _NULL_SIZE
+
+func _has_alpha() -> bool:
+ return _textures.any(func(texture: Texture2D):
+ return texture.has_alpha()
+ )
+
+func _is_pixel_opaque(x, y) -> bool:
+ # TODO: Not exposed to GDScript; however, since this seems to be used for editor stuff, it's
+ # seemingly fine to just report all pixels as opaque. Otherwise, mouse picking for Sprite2D
+ # stops working.
+ return true
+
+func _draw(to_canvas_item: RID, pos: Vector2, modulate: Color, transpose: bool):
+ var position := pos
+
+ for i in range(_textures.size()):
+ var tex: Texture2D = _textures[i]
+ if !tex: continue
+
+ if i != 0:
+ # Draw text char '+'
+ var font_position := Vector2(
+ position.x,
+ position.y + (get_height() - _text_size.y) / 2.0
+ )
+ _draw_text(to_canvas_item, font_position, "+")
+ position.x += _text_size.x
+
+ tex.draw(to_canvas_item, position, modulate, transpose)
+ position.x += tex.get_width()
+
+func _draw_rect(to_canvas_item: RID, rect: Rect2, tile: bool, modulate: Color, transpose: bool):
+ var position := rect.position
+ var width_ratio := rect.size.x / _get_width()
+ var height_ratio := rect.size.y / _get_height()
+
+ for i in range(_textures.size()):
+ var tex: Texture2D = _textures[i]
+ if !tex: continue
+
+ if i != 0:
+ # Draw text char '+'
+ var font_position := Vector2(
+ position.x + (_text_size.x * width_ratio) / 2 - (_text_size.x / 2),
+ position.y + (rect.size.y - _text_size.y) / 2.0
+ )
+ _draw_text(to_canvas_item, font_position, "+")
+ position.x += _text_size.x * width_ratio
+
+ var size := tex.get_size() * Vector2(width_ratio, height_ratio)
+ tex.draw_rect(to_canvas_item, Rect2(position, size), tile, modulate, transpose)
+ position.x += size.x
+
+func _draw_rect_region(to_canvas_item: RID, rect: Rect2, src_rect: Rect2, modulate: Color, transpose: bool, clip_uv: bool):
+ var position := rect.position
+ var width_ratio := rect.size.x / _get_width()
+ var height_ratio := rect.size.y / _get_height()
+
+ for i in range(_textures.size()):
+ var tex: Texture2D = _textures[i]
+ if !tex: continue
+
+ if i != 0:
+ # Draw text char '+'
+ var font_position := Vector2(
+ position.x + (_text_size.x * width_ratio) / 2 - (_text_size.x / 2),
+ position.y + (rect.size.y - _text_size.y) / 2.0
+ )
+ _draw_text(to_canvas_item, font_position, "+")
+ position.x += _text_size.x * width_ratio
+
+ var size := tex.get_size() * Vector2(width_ratio, height_ratio)
+ var src_rect_ratio := Vector2(
+ tex.get_width() / float(_get_width()),
+ tex.get_height() / float(_get_height())
+ )
+ var tex_src_rect := Rect2(
+ src_rect.position * src_rect_ratio,
+ src_rect.size * src_rect_ratio
+ )
+
+ tex.draw_rect_region(to_canvas_item, Rect2(position, size), tex_src_rect, modulate, transpose, clip_uv)
+ position.x += size.x
+
+func _draw_text(to_canvas_item: RID, font_position: Vector2, text: String):
+ font_position.y += _font.get_ascent(_label_settings.font_size)
+
+ if _label_settings.shadow_color.a > 0:
+ _font.draw_string(to_canvas_item, font_position + _label_settings.shadow_offset, text, HORIZONTAL_ALIGNMENT_LEFT, -1, _label_settings.font_size, _label_settings.shadow_color)
+ if _label_settings.shadow_size > 0:
+ _font.draw_string_outline(to_canvas_item, font_position + _label_settings.shadow_offset, text, HORIZONTAL_ALIGNMENT_LEFT, -1, _label_settings.font_size, _label_settings.shadow_size, _label_settings.shadow_color)
+ if _label_settings.outline_color.a > 0 and _label_settings.outline_size > 0:
+ _font.draw_string_outline(to_canvas_item, font_position, text, HORIZONTAL_ALIGNMENT_LEFT, -1, _label_settings.font_size, _label_settings.outline_size, _label_settings.outline_color)
+ _font.draw_string(to_canvas_item, font_position, text, HORIZONTAL_ALIGNMENT_CENTER, -1, _label_settings.font_size, _label_settings.font_color)
+
+var _helper_viewport: Viewport
+var _is_stitching_texture: bool = false
+func _stitch_texture():
+ if _textures.is_empty():
+ return
+
+ _is_stitching_texture = true
+
+ var font_image: Image
+ if _textures.size() > 1:
+ # Generate a viewport to draw the text
+ _helper_viewport = SubViewport.new()
+ # FIXME: We need a 3px margin for some reason
+ _helper_viewport.size = _text_size + Vector2(3, 0)
+ _helper_viewport.render_target_update_mode = SubViewport.UPDATE_ONCE
+ _helper_viewport.render_target_clear_mode = SubViewport.CLEAR_MODE_ONCE
+ _helper_viewport.transparent_bg = true
+
+ var label := Label.new()
+ label.label_settings = _label_settings
+ label.text = "+"
+ label.position = Vector2.ZERO
+ _helper_viewport.add_child(label)
+
+ ControllerIcons.add_child(_helper_viewport)
+ await RenderingServer.frame_post_draw
+ font_image = _helper_viewport.get_texture().get_image()
+ ControllerIcons.remove_child(_helper_viewport)
+ _helper_viewport.free()
+
+ var position := Vector2i(0, 0)
+ var img: Image
+ for i in range(_textures.size()):
+ if !_textures[i]: continue
+
+ if i != 0:
+ # Draw text char '+'
+ var region := font_image.get_used_rect()
+ var font_position := Vector2i(
+ position.x,
+ position.y + (get_height() - region.size.y) / 2
+ )
+ img.blit_rect(font_image, region, font_position)
+ position.x += ceili(region.size.x)
+
+ var texture_raw := _textures[i].get_image()
+ texture_raw.decompress()
+ if not img:
+ img = Image.create(_get_width(), _get_height(), true, texture_raw.get_format())
+
+ img.blit_rect(texture_raw, Rect2i(0, 0, texture_raw.get_width(), texture_raw.get_height()), position)
+ position.x += texture_raw.get_width()
+
+ _is_stitching_texture = false
+ _dirty = false
+ img.generate_mipmaps()
+ _texture_3d = ImageTexture.create_from_image(img)
+ emit_changed()
+
+# This is necessary for 3D sprites, as the texture is assigned to a material, and not drawn directly.
+# For multi prompts, we need to generate a texture
+var _dirty := true
+var _texture_3d: Texture
+func _get_rid():
+ if _dirty:
+ if not _is_stitching_texture:
+ # FIXME: Function may await, but because this is an internal engine call, we can't do anything about it.
+ # This results in a one-frame white texture being displayed, which is not ideal. Investigate later.
+ _stitch_texture()
+ if _is_stitching_texture:
+ return RID()
+ else:
+ return RID()
+ return _texture_3d.get_rid() if not _textures.is_empty() else RID()
+
+#endregion
diff --git a/addons/controller_icons/objects/ControllerIconTexture.gd.uid b/addons/controller_icons/objects/ControllerIconTexture.gd.uid
new file mode 100644
index 0000000..9412044
--- /dev/null
+++ b/addons/controller_icons/objects/ControllerIconTexture.gd.uid
@@ -0,0 +1 @@
+uid://7hglx6nfu063
diff --git a/addons/controller_icons/objects/Sprite.gd b/addons/controller_icons/objects/Sprite.gd
new file mode 100644
index 0000000..26816bc
--- /dev/null
+++ b/addons/controller_icons/objects/Sprite.gd
@@ -0,0 +1,50 @@
+@tool
+extends Sprite2D
+class_name ControllerSprite2D
+## Controller icon for Sprite2D nodes.
+##
+## [b]Deprecated[/b]: Use the new [ControllerIconTexture] texture resource and set it
+## directly in [member Sprite2D.texture].
+##
+## @deprecated
+
+func _get_configuration_warnings():
+ return ["This node is deprecated, and will be removed in a future version.\n\nRemove this script and use the new ControllerIconTexture resource\nby setting it directly in Sprite2D's texture property."]
+
+@export var path : String = "":
+ set(_path):
+ path = _path
+ if is_inside_tree():
+ if force_type > 0:
+ texture = ControllerIcons.parse_path(path, force_type - 1)
+ else:
+ texture = ControllerIcons.parse_path(path)
+
+@export_enum("Both", "Keyboard/Mouse", "Controller") var show_only : int = 0:
+ set(_show_only):
+ show_only = _show_only
+ _on_input_type_changed(ControllerIcons._last_input_type, ControllerIcons._last_controller)
+
+@export_enum("None", "Keyboard/Mouse", "Controller") var force_type : int = 0:
+ set(_force_type):
+ force_type = _force_type
+ _on_input_type_changed(ControllerIcons._last_input_type, ControllerIcons._last_controller)
+
+func _ready():
+ ControllerIcons.input_type_changed.connect(_on_input_type_changed)
+ self.path = path
+
+func _on_input_type_changed(input_type, controller):
+ if show_only == 0 or \
+ (show_only == 1 and input_type == ControllerIcons.InputType.KEYBOARD_MOUSE) or \
+ (show_only == 2 and input_type == ControllerIcons.InputType.CONTROLLER):
+ visible = true
+ self.path = path
+ else:
+ visible = false
+
+func get_tts_string() -> String:
+ if force_type:
+ return ControllerIcons.parse_path_to_tts(path, force_type - 1)
+ else:
+ return ControllerIcons.parse_path_to_tts(path)
diff --git a/addons/controller_icons/objects/Sprite.gd.uid b/addons/controller_icons/objects/Sprite.gd.uid
new file mode 100644
index 0000000..f28b9a2
--- /dev/null
+++ b/addons/controller_icons/objects/Sprite.gd.uid
@@ -0,0 +1 @@
+uid://c5idgcdv16llg
diff --git a/addons/controller_icons/objects/Sprite3D.gd b/addons/controller_icons/objects/Sprite3D.gd
new file mode 100644
index 0000000..1901d95
--- /dev/null
+++ b/addons/controller_icons/objects/Sprite3D.gd
@@ -0,0 +1,50 @@
+@tool
+extends Sprite3D
+class_name ControllerSprite3D
+## Controller icon for Sprite3D nodes.
+##
+## [b]Deprecated[/b]: Use the new [ControllerIconTexture] texture resource and set it
+## directly in [member Sprite3D.texture].
+##
+## @deprecated
+
+func _get_configuration_warnings():
+ return ["This node is deprecated, and will be removed in a future version.\n\nRemove this script and use the new ControllerIconTexture resource\nby setting it directly in Sprite3D's texture property."]
+
+@export var path : String = "":
+ set(_path):
+ path = _path
+ if is_inside_tree():
+ if force_type > 0:
+ texture = ControllerIcons.parse_path(path, force_type - 1)
+ else:
+ texture = ControllerIcons.parse_path(path)
+
+@export_enum("Both", "Keyboard/Mouse", "Controller") var show_only := 0:
+ set(_show_only):
+ show_only = _show_only
+ _on_input_type_changed(ControllerIcons._last_input_type, ControllerIcons._last_controller)
+
+@export_enum("None", "Keyboard/Mouse", "Controller") var force_type : int = 0:
+ set(_force_type):
+ force_type = _force_type
+ _on_input_type_changed(ControllerIcons._last_input_type, ControllerIcons._last_controller)
+
+func _ready():
+ ControllerIcons.input_type_changed.connect(_on_input_type_changed)
+ self.path = path
+
+func _on_input_type_changed(input_type, controller):
+ if show_only == 0 or \
+ (show_only == 1 and input_type == ControllerIcons.InputType.KEYBOARD_MOUSE) or \
+ (show_only == 2 and input_type == ControllerIcons.InputType.CONTROLLER):
+ visible = true
+ self.path = path
+ else:
+ visible = false
+
+func get_tts_string() -> String:
+ if force_type:
+ return ControllerIcons.parse_path_to_tts(path, force_type - 1)
+ else:
+ return ControllerIcons.parse_path_to_tts(path)
diff --git a/addons/controller_icons/objects/Sprite3D.gd.uid b/addons/controller_icons/objects/Sprite3D.gd.uid
new file mode 100644
index 0000000..fc5e8e7
--- /dev/null
+++ b/addons/controller_icons/objects/Sprite3D.gd.uid
@@ -0,0 +1 @@
+uid://cb0biysjgjml0
diff --git a/addons/controller_icons/objects/TextureRect.gd b/addons/controller_icons/objects/TextureRect.gd
new file mode 100644
index 0000000..6a4397e
--- /dev/null
+++ b/addons/controller_icons/objects/TextureRect.gd
@@ -0,0 +1,66 @@
+@tool
+extends TextureRect
+class_name ControllerTextureRect
+## Controller icon for TextureRect nodes.
+##
+## [b]Deprecated[/b]: Use the new [ControllerIconTexture] texture resource and set it
+## directly in [member TextureRect.texture].
+##
+## @deprecated
+
+func _get_configuration_warnings():
+ return ["This node is deprecated, and will be removed in a future version.\n\nRemove this script and use the new ControllerIconTexture resource\nby setting it directly in TextureRect's texture property."]
+
+
+@export var path : String = "":
+ set(_path):
+ path = _path
+ if is_inside_tree():
+ if force_type > 0:
+ texture = ControllerIcons.parse_path(path, force_type - 1)
+ else:
+ texture = ControllerIcons.parse_path(path)
+
+@export_enum("Both", "Keyboard/Mouse", "Controller") var show_only : int = 0:
+ set(_show_only):
+ show_only = _show_only
+ _on_input_type_changed(ControllerIcons._last_input_type, ControllerIcons._last_controller)
+
+@export_enum("None", "Keyboard/Mouse", "Controller") var force_type : int = 0:
+ set(_force_type):
+ force_type = _force_type
+ _on_input_type_changed(ControllerIcons._last_input_type, ControllerIcons._last_controller)
+
+@export var max_width : int = 40:
+ set(_max_width):
+ max_width = _max_width
+ if is_inside_tree():
+ if max_width < 0:
+ expand_mode = TextureRect.EXPAND_KEEP_SIZE
+ else:
+ expand_mode = TextureRect.EXPAND_IGNORE_SIZE
+ custom_minimum_size.x = max_width
+ if texture:
+ custom_minimum_size.y = texture.get_height() * max_width / texture.get_width()
+ else:
+ custom_minimum_size.y = custom_minimum_size.x
+
+func _ready():
+ ControllerIcons.input_type_changed.connect(_on_input_type_changed)
+ self.path = path
+ self.max_width = max_width
+
+func _on_input_type_changed(input_type, controller):
+ if show_only == 0 or \
+ (show_only == 1 and input_type == ControllerIcons.InputType.KEYBOARD_MOUSE) or \
+ (show_only == 2 and input_type == ControllerIcons.InputType.CONTROLLER):
+ visible = true
+ self.path = path
+ else:
+ visible = false
+
+func get_tts_string() -> String:
+ if force_type:
+ return ControllerIcons.parse_path_to_tts(path, force_type - 1)
+ else:
+ return ControllerIcons.parse_path_to_tts(path)
diff --git a/addons/controller_icons/objects/TextureRect.gd.uid b/addons/controller_icons/objects/TextureRect.gd.uid
new file mode 100644
index 0000000..db5f5d5
--- /dev/null
+++ b/addons/controller_icons/objects/TextureRect.gd.uid
@@ -0,0 +1 @@
+uid://sxykgromtqvc
diff --git a/addons/controller_icons/objects/controller_texture_icon.svg b/addons/controller_icons/objects/controller_texture_icon.svg
new file mode 100644
index 0000000..4dbb02c
--- /dev/null
+++ b/addons/controller_icons/objects/controller_texture_icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/addons/controller_icons/objects/controller_texture_icon.svg.import b/addons/controller_icons/objects/controller_texture_icon.svg.import
new file mode 100644
index 0000000..4e29948
--- /dev/null
+++ b/addons/controller_icons/objects/controller_texture_icon.svg.import
@@ -0,0 +1,44 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://d4cwx85k03lt7"
+path="res://.godot/imported/controller_texture_icon.svg-c7feb059f1c41a49e9f62f5b03706d01.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/controller_icons/objects/controller_texture_icon.svg"
+dest_files=["res://.godot/imported/controller_texture_icon.svg-c7feb059f1c41a49e9f62f5b03706d01.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=true
+editor/convert_colors_with_editor_theme=true
diff --git a/addons/controller_icons/objects/path_selection/InputActionSelector.gd b/addons/controller_icons/objects/path_selection/InputActionSelector.gd
new file mode 100644
index 0000000..5850d94
--- /dev/null
+++ b/addons/controller_icons/objects/path_selection/InputActionSelector.gd
@@ -0,0 +1,122 @@
+@tool
+extends Panel
+
+const GODOT_4_6_VERSION = 0x040600
+
+signal done
+
+@onready var n_name_filter := %NameFilter
+@onready var n_builtin_action_button := %BuiltinActionButton
+@onready var n_tree := %Tree
+
+class ControllerIcons_Item:
+ func _init(tree: Tree, root: TreeItem, path: String, is_default: bool):
+ self.is_default = is_default
+ self.filtered = true
+ tree_item = tree.create_item(root)
+ tree_item.set_text(0, path)
+
+ controller_icon_key = ControllerIconTexture.new()
+ controller_icon_key.path = path
+ controller_icon_key.force_type = 1
+ controller_icon_joy = ControllerIconTexture.new()
+ controller_icon_joy.path = path
+ controller_icon_joy.force_type = 2
+
+ tree_item.set_icon_max_width(1, 48 * controller_icon_key._textures.size())
+ tree_item.set_icon_max_width(2, 48 * controller_icon_key._textures.size())
+ tree_item.set_icon(1, controller_icon_key)
+ tree_item.set_icon(2, controller_icon_joy)
+
+ var is_default : bool
+ var tree_item : TreeItem
+ var controller_icon_key : ControllerIconTexture
+ var controller_icon_joy : ControllerIconTexture
+
+ var show_default : bool:
+ set(_show_default):
+ show_default = _show_default
+ _query_visibility()
+
+ var filtered : bool:
+ set(_filtered):
+ filtered = _filtered
+ _query_visibility()
+
+ func _query_visibility():
+ if is_instance_valid(tree_item):
+ tree_item.visible = show_default and filtered
+
+var root : TreeItem
+var items : Array[ControllerIcons_Item]
+
+func populate(editor_interface: EditorInterface) -> void:
+ # Clear
+ n_tree.clear()
+ ## Using clear() triggers a signal and uses freed nodes.
+ ## Setting the text directly does not.
+ n_name_filter.text = ""
+ items.clear()
+
+ n_name_filter.right_icon = editor_interface.get_base_control().get_theme_icon("Search", "EditorIcons")
+
+ # Setup tree columns
+ n_tree.set_column_title(0, "Action")
+ n_tree.set_column_title(1, "Preview")
+ n_tree.set_column_expand(1, false)
+ n_tree.set_column_expand(2, false)
+
+ # Force ControllerIcons to reload the input map
+ ControllerIcons._parse_input_actions()
+
+ # List with all default input actions
+ var default_actions := ControllerIcons._builtin_keys.map(
+ func(value: String):
+ return value.trim_prefix("input/")
+ )
+
+ # Map with all input actions
+ root = n_tree.create_item()
+ for data in ControllerIcons._custom_input_actions:
+ var child := ControllerIcons_Item.new(n_tree, root, data, data in default_actions)
+ items.push_back(child)
+
+ set_default_actions_visibility(n_builtin_action_button.button_pressed)
+
+func get_icon_path() -> String:
+ var item : TreeItem = n_tree.get_selected()
+ if is_instance_valid(item):
+ return item.get_text(0)
+ return ""
+
+func set_default_actions_visibility(display: bool):
+ # UPGRADE: In Godot 4.2, for-loop variables can be
+ # statically typed:
+ # for item:ControllerIcons_Item in items:
+ for item in items:
+ item.show_default = display or not item.is_default
+
+func grab_focus(hide_focus: bool = false) -> void:
+ # UPGRADE: In Godot 4.6, grab_focus has a new internal arg
+ # n_name_filter.grab_focus(hide_focus)
+ if Engine.get_version_info().hex >= GODOT_4_6_VERSION:
+ n_name_filter.call("grab_focus", hide_focus)
+ else:
+ n_name_filter.grab_focus()
+
+
+func _on_builtin_action_button_toggled(toggled_on: bool) -> void:
+ set_default_actions_visibility(toggled_on)
+
+
+func _on_tree_item_activated() -> void:
+ done.emit()
+
+
+func _on_name_filter_text_changed(new_text: String):
+ # UPGRADE: In Godot 4.2, for-loop variables can be
+ # statically typed:
+ # for item:ControllerIcons_Item in items:
+ for item in items:
+ var filtered := true if new_text.is_empty() else item.tree_item.get_text(0).findn(new_text) != -1
+ item.filtered = filtered
diff --git a/addons/controller_icons/objects/path_selection/InputActionSelector.gd.uid b/addons/controller_icons/objects/path_selection/InputActionSelector.gd.uid
new file mode 100644
index 0000000..6daba07
--- /dev/null
+++ b/addons/controller_icons/objects/path_selection/InputActionSelector.gd.uid
@@ -0,0 +1 @@
+uid://dlq42ffmbugmw
diff --git a/addons/controller_icons/objects/path_selection/JoypadPathSelector.gd b/addons/controller_icons/objects/path_selection/JoypadPathSelector.gd
new file mode 100644
index 0000000..bec7bfb
--- /dev/null
+++ b/addons/controller_icons/objects/path_selection/JoypadPathSelector.gd
@@ -0,0 +1,200 @@
+@tool
+extends Panel
+
+signal done
+
+@onready var n_button_label := %ButtonLabel
+@onready var button_nodes := [
+ %LT, %RT,
+ %LStick, %RStick,
+ %LStickClick, %RStickClick,
+ %LB, %RB, %A, %B, %X, %Y,
+ %Select, %Start,
+ %Home, %Share, %DPAD,
+ %DPADDown, %DPADRight,
+ %DPADLeft, %DPADUp
+]
+
+var _last_pressed_button : Button
+var _last_pressed_timestamp : int
+
+func populate(editor_interface: EditorInterface) -> void:
+ # UPGRADE: In Godot 4.2, for-loop variables can be
+ # statically typed:
+ # for button:Button in button_nodes:
+ for button in button_nodes:
+ button.button_pressed = false
+
+func get_icon_path() -> String:
+ # UPGRADE: In Godot 4.2, for-loop variables can be
+ # statically typed:
+ # for button:Button in button_nodes:
+ for button in button_nodes:
+ if button.button_pressed:
+ return button.icon.path
+ return ""
+
+func grab_focus(hide_focus: bool = false) -> void:
+ pass
+
+func _input(event):
+ if not visible: return
+
+ if event is InputEventJoypadMotion:
+ _input_motion(event)
+ elif event is InputEventJoypadButton:
+ _input_button(event)
+
+func _input_motion(event: InputEventJoypadMotion):
+ if abs(event.axis_value) < 0.5: return
+ match event.axis:
+ JOY_AXIS_LEFT_X, JOY_AXIS_LEFT_Y:
+ _simulate_button_press(%LStick)
+ JOY_AXIS_RIGHT_X, JOY_AXIS_RIGHT_Y:
+ _simulate_button_press(%RStick)
+ JOY_AXIS_TRIGGER_LEFT:
+ _simulate_button_press(%LT)
+ JOY_AXIS_TRIGGER_RIGHT:
+ _simulate_button_press(%RT)
+
+func _input_button(event: InputEventJoypadButton):
+ if not event.pressed: return
+ match event.button_index:
+ JOY_BUTTON_A:
+ _simulate_button_press(%A)
+ JOY_BUTTON_B:
+ _simulate_button_press(%B)
+ JOY_BUTTON_X:
+ _simulate_button_press(%X)
+ JOY_BUTTON_Y:
+ _simulate_button_press(%Y)
+ JOY_BUTTON_LEFT_SHOULDER:
+ _simulate_button_press(%LB)
+ JOY_BUTTON_RIGHT_SHOULDER:
+ _simulate_button_press(%RB)
+ JOY_BUTTON_LEFT_STICK:
+ _simulate_button_press(%LStickClick)
+ JOY_BUTTON_RIGHT_STICK:
+ _simulate_button_press(%RStickClick)
+ JOY_BUTTON_DPAD_DOWN:
+ _simulate_button_press(%DPADDown)
+ JOY_BUTTON_DPAD_RIGHT:
+ _simulate_button_press(%DPADRight)
+ JOY_BUTTON_DPAD_LEFT:
+ _simulate_button_press(%DPADLeft)
+ JOY_BUTTON_DPAD_UP:
+ _simulate_button_press(%DPADUp)
+ JOY_BUTTON_BACK:
+ _simulate_button_press(%Select)
+ JOY_BUTTON_START:
+ _simulate_button_press(%Start)
+ JOY_BUTTON_GUIDE:
+ _simulate_button_press(%Home)
+ JOY_BUTTON_MISC1:
+ _simulate_button_press(%Share)
+
+func _simulate_button_press(button: Button):
+ button.grab_focus()
+ button.button_pressed = true
+ button.set_meta("from_ui", false)
+ button.pressed.emit()
+ button.set_meta("from_ui", true)
+
+func _on_button_pressed():
+ # UPGRADE: In Godot 4.2, for-loop variables can be
+ # statically typed:
+ # for button:Button in button_nodes:
+ for button in button_nodes:
+ if button.has_meta("from_ui") and not button.get_meta("from_ui", true): return
+ if button.button_pressed:
+ if _last_pressed_button == button:
+ if Time.get_ticks_msec() < _last_pressed_timestamp:
+ done.emit()
+ else:
+ _last_pressed_timestamp = Time.get_ticks_msec() + 1000
+ else:
+ _last_pressed_button = button
+ _last_pressed_timestamp = Time.get_ticks_msec() + 1000
+
+func _on_l_stick_pressed():
+ n_button_label.text = "Axis 0/1\n(Left Stick, Joystick 0)\n[joypad/l_stick]"
+
+
+func _on_l_stick_click_pressed():
+ n_button_label.text = "Button 7\n(Left Stick, Sony L3, Xbox L/LS)\n[joypad/l_stick_click]"
+
+
+func _on_r_stick_pressed():
+ n_button_label.text = "Axis 2/3\n(Right Stick, Joystick 1)\n[joypad/r_stick]"
+
+
+func _on_r_stick_click_pressed():
+ n_button_label.text = "Button 8\n(Right Stick, Sony R3, Xbox R/RS)\n[joypad/r_stick_click]"
+
+
+func _on_lb_pressed():
+ n_button_label.text = "Button 9\n(Left Shoulder, Sony L1, Xbox LB)\n[joypad/lb]"
+
+
+func _on_lt_pressed():
+ n_button_label.text = "Axis 4\n(Left Trigger, Sony L2, Xbox LT, Joystick 2 Right)\n[joypad/lt]"
+
+
+func _on_rb_pressed():
+ n_button_label.text = "Button 10\n(Right Shoulder, Sony R1, Xbox RB)\n[joypad/rb]"
+
+
+func _on_rt_pressed():
+ n_button_label.text = "Axis 5\n(Right Trigger, Sony R2, Xbox RT, Joystick 2 Down)\n[joypad/rt]"
+
+
+func _on_a_pressed():
+ n_button_label.text = "Button 0\n(Bottom Action, Sony Cross, Xbox A, Nintendo B)\n[joypad/a]"
+
+
+func _on_b_pressed():
+ n_button_label.text = "Button 1\n(Right Action, Sony Circle, Xbox B, Nintendo A)\n[joypad/b]"
+
+
+func _on_x_pressed():
+ n_button_label.text = "Button 2\n(Left Action, Sony Square, Xbox X, Nintendo Y)\n[joypad/x]"
+
+
+func _on_y_pressed():
+ n_button_label.text = "Button 3\n(Top Action, Sony Triangle, Xbox Y, Nintendo X)\n[joypad/y]"
+
+
+func _on_select_pressed():
+ n_button_label.text = "Button 4\n(Back, Sony Select, Xbox Back, Nintendo -)\n[joypad/select]"
+
+
+func _on_start_pressed():
+ n_button_label.text = "Button 6\n(Start, Xbox Menu, Nintendo +)\n[joypad/start]"
+
+
+func _on_home_pressed():
+ n_button_label.text = "Button 5\n(Guide, Sony PS, Xbox Home)\n[joypad/home]"
+
+
+func _on_share_pressed():
+ n_button_label.text = "Button 15\n(Xbox Share, PS5 Microphone, Nintendo Capture)\n[joypad/share]"
+
+
+func _on_dpad_pressed():
+ n_button_label.text = "Button 11/12/13/14\n(D-pad)\n[joypad/dpad]"
+
+
+func _on_dpad_down_pressed():
+ n_button_label.text = "Button 12\n(D-pad Down)\n[joypad/dpad_down]"
+
+
+func _on_dpad_right_pressed():
+ n_button_label.text = "Button 14\n(D-pad Right)\n[joypad/dpad_right]"
+
+
+func _on_dpad_left_pressed():
+ n_button_label.text = "Button 13\n(D-pad Left)\n[joypad/dpad_left]"
+
+
+func _on_dpad_up_pressed():
+ n_button_label.text = "Button 11\n(D-pad Up)\n[joypad/dpad_up]"
diff --git a/addons/controller_icons/objects/path_selection/JoypadPathSelector.gd.uid b/addons/controller_icons/objects/path_selection/JoypadPathSelector.gd.uid
new file mode 100644
index 0000000..6966761
--- /dev/null
+++ b/addons/controller_icons/objects/path_selection/JoypadPathSelector.gd.uid
@@ -0,0 +1 @@
+uid://bm6jnn8pjufvc
diff --git a/addons/controller_icons/objects/path_selection/SpecificPathSelector.gd b/addons/controller_icons/objects/path_selection/SpecificPathSelector.gd
new file mode 100644
index 0000000..b5f860d
--- /dev/null
+++ b/addons/controller_icons/objects/path_selection/SpecificPathSelector.gd
@@ -0,0 +1,192 @@
+@tool
+extends Panel
+
+const GODOT_4_6_VERSION = 0x040600
+
+signal done
+
+@onready var n_name_filter := %NameFilter
+@onready var n_base_asset_names := %BaseAssetNames
+@onready var n_assets_container := %AssetsContainer
+
+var _last_pressed_icon : ControllerIcons_Icon
+var _last_pressed_timestamp : int
+
+var color_text_enabled : Color
+var color_text_disabled : Color
+
+class ControllerIcons_Icon:
+ static var group := ButtonGroup.new()
+
+ func _init(category: String, path: String):
+ self.category = category
+ self.filtered = true
+ self.path = path.get_slice("/", 1)
+
+ button = Button.new()
+ button.custom_minimum_size = Vector2(100, 100)
+ button.clip_text = true
+ button.text_overrun_behavior = TextServer.OVERRUN_TRIM_ELLIPSIS
+ button.icon_alignment = HORIZONTAL_ALIGNMENT_CENTER
+ button.vertical_icon_alignment = VERTICAL_ALIGNMENT_TOP
+ button.expand_icon = true
+ button.toggle_mode = true
+ button.button_group = group
+ button.text = self.path
+
+ var icon = ControllerIconTexture.new()
+ icon.path = path
+ button.icon = icon
+
+ var button : Button
+ var category : String
+ var path : String
+
+ var selected: bool:
+ set(_selected):
+ selected = _selected
+ _query_visibility()
+
+ var filtered: bool:
+ set(_filtered):
+ filtered = _filtered
+ _query_visibility()
+
+ func _query_visibility():
+ if is_instance_valid(button):
+ button.visible = selected and filtered
+
+var button_nodes := {}
+var asset_names_root : TreeItem
+
+func populate(editor_interface: EditorInterface) -> void:
+ ## Using clear() triggers a signal and uses freed nodes.
+ ## Setting the text directly does not.
+ n_name_filter.text = ""
+ n_base_asset_names.clear()
+ button_nodes.clear()
+ for child in n_assets_container.get_children():
+ n_assets_container.remove_child(child)
+ child.queue_free()
+
+ # UPGRADE: In Godot 4.2, there's no need to have an instance to
+ # EditorInterface, since it's now a static call:
+ # var editor_control := EditorInterface.get_base_control()
+ var editor_control := editor_interface.get_base_control()
+ color_text_enabled = editor_control.get_theme_color("font_color", "Editor")
+ color_text_disabled = editor_control.get_theme_color("disabled_font_color", "Editor")
+ n_name_filter.right_icon = editor_control.get_theme_icon("Search", "EditorIcons")
+
+ asset_names_root = n_base_asset_names.create_item()
+
+ var base_paths := [
+ ControllerIcons._settings.custom_asset_dir,
+ "res://addons/controller_icons/assets"
+ ]
+
+ # UPGRADE: In Godot 4.2, for-loop variables can be
+ # statically typed:
+ # for base_path:String in base_paths:
+ for base_path in base_paths:
+ if base_path.is_empty() or not base_path.begins_with("res://"):
+ continue
+ # Files first
+ handle_files("", base_path)
+ # Directories next
+ for dir in DirAccess.get_directories_at(base_path):
+ handle_files(dir, base_path.path_join(dir))
+
+ var child : TreeItem = asset_names_root.get_next_in_tree()
+ if child:
+ child.select(0)
+
+func handle_files(category: String, base_path: String):
+ for file in DirAccess.get_files_at(base_path):
+ if file.get_extension() == ControllerIcons._base_extension:
+ create_icon(category, base_path.path_join(file))
+
+func create_icon(category: String, path: String):
+ var map_category := "" if category.is_empty() else category
+ if not button_nodes.has(map_category):
+ button_nodes[map_category] = {}
+ var item : TreeItem = n_base_asset_names.create_item(asset_names_root)
+ item.set_text(0, map_category)
+
+ var filename := path.get_file()
+ if button_nodes[map_category].has(filename): return
+
+ var icon_path = ("" if category.is_empty() else category + "/") + path.get_file().get_basename()
+ var icon := ControllerIcons_Icon.new(map_category, icon_path)
+ button_nodes[map_category][filename] = icon
+ n_assets_container.add_child(icon.button)
+ icon.button.pressed.connect(func():
+ if _last_pressed_icon == icon:
+ if Time.get_ticks_msec() < _last_pressed_timestamp:
+ done.emit()
+ else:
+ _last_pressed_timestamp = Time.get_ticks_msec() + 1000
+ else:
+ _last_pressed_icon = icon
+ _last_pressed_timestamp = Time.get_ticks_msec() + 1000
+ )
+
+func get_icon_path() -> String:
+ var button := ControllerIcons_Icon.group.get_pressed_button()
+ if button:
+ return button.icon.path
+ return ""
+
+func grab_focus(hide_focus: bool = false) -> void:
+ # UPGRADE: In Godot 4.6, grab_focus has a new internal arg
+ # n_name_filter.grab_focus(hide_focus)
+ if Engine.get_version_info().hex >= GODOT_4_6_VERSION:
+ n_name_filter.call("grab_focus", hide_focus)
+ else:
+ n_name_filter.grab_focus()
+
+
+func _on_base_asset_names_item_selected():
+ var selected : TreeItem = n_base_asset_names.get_selected()
+ if not selected: return
+
+ var category := selected.get_text(0)
+ if not button_nodes.has(category): return
+
+ # UPGRADE: In Godot 4.2, for-loop variables can be
+ # statically typed:
+ # for key:String in button_nodes.keys():
+ # for icon:ControllerIcon_Icon in button_nodes[key].values():
+ for key in button_nodes.keys():
+ for icon in button_nodes[key].values():
+ icon.selected = key == category
+
+
+func _on_name_filter_text_changed(new_text:String):
+ var any_visible := {}
+ var asset_name := asset_names_root.get_next_in_tree()
+ while asset_name:
+ any_visible[asset_name.get_text(0)] = false
+ asset_name = asset_name.get_next_in_tree()
+
+ var selected_category : TreeItem = n_base_asset_names.get_selected()
+
+ # UPGRADE: In Godot 4.2, for-loop variables can be
+ # statically typed:
+ # for key:String in button_nodes.keys():
+ # for icon:Icon in button_nodes[key].values():
+ for key in button_nodes.keys():
+ for icon in button_nodes[key].values():
+ var filtered : bool = true if new_text.is_empty() else icon.path.findn(new_text) != -1
+ icon.filtered = filtered
+ any_visible[key] = any_visible[key] or filtered
+
+ asset_name = asset_names_root.get_next_in_tree()
+ while asset_name:
+ var category := asset_name.get_text(0)
+ if any_visible.has(category):
+ var selectable : bool = any_visible[category]
+ asset_name.set_selectable(0, selectable)
+ if not selectable:
+ asset_name.deselect(0)
+ asset_name.set_custom_color(0, color_text_enabled if selectable else color_text_disabled)
+ asset_name = asset_name.get_next_in_tree()
diff --git a/addons/controller_icons/objects/path_selection/SpecificPathSelector.gd.uid b/addons/controller_icons/objects/path_selection/SpecificPathSelector.gd.uid
new file mode 100644
index 0000000..d7921cb
--- /dev/null
+++ b/addons/controller_icons/objects/path_selection/SpecificPathSelector.gd.uid
@@ -0,0 +1 @@
+uid://dqigonnuh407r
diff --git a/addons/controller_icons/objects/path_selection/input_action.tscn b/addons/controller_icons/objects/path_selection/input_action.tscn
new file mode 100644
index 0000000..f3b97e9
--- /dev/null
+++ b/addons/controller_icons/objects/path_selection/input_action.tscn
@@ -0,0 +1,59 @@
+[gd_scene load_steps=2 format=3 uid="uid://bituity863qe4"]
+
+[ext_resource type="Script" path="res://addons/controller_icons/objects/path_selection/InputActionSelector.gd" id="1_shxks"]
+
+[node name="Input Action" type="Panel"]
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+script = ExtResource("1_shxks")
+
+[node name="VBoxContainer" type="VBoxContainer" parent="."]
+layout_mode = 1
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+
+[node name="Label" type="Label" parent="VBoxContainer"]
+layout_mode = 2
+text = "The icon will be tied to an input action, swapping between keyboard/mouse and controller automatically."
+horizontal_alignment = 1
+
+[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"]
+layout_mode = 2
+
+[node name="NameFilter" type="LineEdit" parent="VBoxContainer/HBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 3
+placeholder_text = "Filter by name..."
+clear_button_enabled = true
+
+[node name="BuiltinActionButton" type="CheckButton" parent="VBoxContainer/HBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+text = "Show Built-in Actions"
+
+[node name="ScrollContainer" type="ScrollContainer" parent="VBoxContainer"]
+layout_mode = 2
+size_flags_vertical = 3
+
+[node name="Tree" type="Tree" parent="VBoxContainer/ScrollContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 3
+size_flags_vertical = 3
+columns = 3
+column_titles_visible = true
+hide_folding = true
+hide_root = true
+select_mode = 1
+scroll_horizontal_enabled = false
+
+[connection signal="text_changed" from="VBoxContainer/HBoxContainer/NameFilter" to="." method="_on_name_filter_text_changed"]
+[connection signal="toggled" from="VBoxContainer/HBoxContainer/BuiltinActionButton" to="." method="_on_builtin_action_button_toggled"]
+[connection signal="item_activated" from="VBoxContainer/ScrollContainer/Tree" to="." method="_on_tree_item_activated"]
diff --git a/addons/controller_icons/objects/path_selection/joypad_path.tscn b/addons/controller_icons/objects/path_selection/joypad_path.tscn
new file mode 100644
index 0000000..f20b9f7
--- /dev/null
+++ b/addons/controller_icons/objects/path_selection/joypad_path.tscn
@@ -0,0 +1,678 @@
+[gd_scene load_steps=25 format=3 uid="uid://b3lplrf2w6kh7"]
+
+[ext_resource type="Script" path="res://addons/controller_icons/objects/path_selection/JoypadPathSelector.gd" id="1_4ryog"]
+[ext_resource type="Script" path="res://addons/controller_icons/objects/ControllerIconTexture.gd" id="2_yxfq6"]
+
+[sub_resource type="ButtonGroup" id="ButtonGroup_haylq"]
+
+[sub_resource type="Texture2D" id="Texture2D_nls54"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("2_yxfq6")
+_horizontal_repeat = 1
+path = "joypad/l_stick"
+show_only = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_6klsb"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("2_yxfq6")
+_horizontal_repeat = 1
+path = "joypad/l_stick_click"
+show_only = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_bij8j"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("2_yxfq6")
+_horizontal_repeat = 1
+path = "joypad/r_stick"
+show_only = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_2h0w3"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("2_yxfq6")
+_horizontal_repeat = 1
+path = "joypad/r_stick_click"
+show_only = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_kvj2q"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("2_yxfq6")
+_horizontal_repeat = 1
+path = "joypad/lb"
+show_only = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_wtcrq"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("2_yxfq6")
+_horizontal_repeat = 1
+path = "joypad/lt"
+show_only = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_lfpf5"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("2_yxfq6")
+_horizontal_repeat = 1
+path = "joypad/rb"
+show_only = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_b3bsp"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("2_yxfq6")
+_horizontal_repeat = 1
+path = "joypad/rt"
+show_only = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_u40go"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("2_yxfq6")
+_horizontal_repeat = 1
+path = "joypad/a"
+show_only = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_rnqww"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("2_yxfq6")
+_horizontal_repeat = 1
+path = "joypad/b"
+show_only = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_1a2yv"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("2_yxfq6")
+_horizontal_repeat = 1
+path = "joypad/x"
+show_only = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_hktfi"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("2_yxfq6")
+_horizontal_repeat = 1
+path = "joypad/y"
+show_only = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_2ksy6"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("2_yxfq6")
+_horizontal_repeat = 1
+path = "joypad/select"
+show_only = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_08sqi"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("2_yxfq6")
+_horizontal_repeat = 1
+path = "joypad/start"
+show_only = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_tivgf"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("2_yxfq6")
+_horizontal_repeat = 1
+path = "joypad/home"
+show_only = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_87fow"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("2_yxfq6")
+_horizontal_repeat = 1
+path = "joypad/share"
+show_only = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_n4i6p"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("2_yxfq6")
+_horizontal_repeat = 1
+path = "joypad/dpad"
+show_only = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_eoyuo"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("2_yxfq6")
+_horizontal_repeat = 1
+path = "joypad/dpad_down"
+show_only = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_c660e"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("2_yxfq6")
+_horizontal_repeat = 1
+path = "joypad/dpad_right"
+show_only = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_riwus"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("2_yxfq6")
+_horizontal_repeat = 1
+path = "joypad/dpad_left"
+show_only = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_onmvf"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("2_yxfq6")
+_horizontal_repeat = 1
+path = "joypad/dpad_up"
+show_only = 0
+force_type = 0
+
+[node name="Joypad Path" type="Panel"]
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+script = ExtResource("1_4ryog")
+
+[node name="VBoxContainer" type="VBoxContainer" parent="."]
+layout_mode = 1
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+
+[node name="Label" type="Label" parent="VBoxContainer"]
+layout_mode = 2
+text = "The icon will only display a controller icon, changing dynamically according to the connected controller brand."
+horizontal_alignment = 1
+
+[node name="Control" type="Control" parent="VBoxContainer"]
+layout_mode = 2
+size_flags_vertical = 3
+
+[node name="ButtonLabel" type="Label" parent="VBoxContainer/Control"]
+unique_name_in_owner = true
+custom_minimum_size = Vector2(350, 0)
+layout_mode = 1
+anchors_preset = 5
+anchor_left = 0.5
+anchor_right = 0.5
+offset_left = -150.0
+offset_top = 18.0
+offset_right = 150.0
+offset_bottom = 41.0
+grow_horizontal = 2
+text = "Press or click on the desired button..."
+horizontal_alignment = 1
+autowrap_mode = 3
+
+[node name="LStick" type="Button" parent="VBoxContainer/Control"]
+unique_name_in_owner = true
+layout_mode = 1
+anchors_preset = 8
+anchor_left = 0.5
+anchor_top = 0.5
+anchor_right = 0.5
+anchor_bottom = 0.5
+offset_left = -126.0
+offset_top = 47.0
+offset_right = -76.0
+offset_bottom = 97.0
+grow_horizontal = 2
+grow_vertical = 2
+toggle_mode = true
+button_group = SubResource("ButtonGroup_haylq")
+icon = SubResource("Texture2D_nls54")
+expand_icon = true
+
+[node name="LStickClick" type="Button" parent="VBoxContainer/Control"]
+unique_name_in_owner = true
+layout_mode = 1
+anchors_preset = 8
+anchor_left = 0.5
+anchor_top = 0.5
+anchor_right = 0.5
+anchor_bottom = 0.5
+offset_left = -101.0
+offset_top = 97.0
+offset_right = -51.0
+offset_bottom = 147.0
+grow_horizontal = 2
+grow_vertical = 2
+toggle_mode = true
+button_group = SubResource("ButtonGroup_haylq")
+icon = SubResource("Texture2D_6klsb")
+expand_icon = true
+
+[node name="RStick" type="Button" parent="VBoxContainer/Control"]
+unique_name_in_owner = true
+layout_mode = 1
+anchors_preset = 8
+anchor_left = 0.5
+anchor_top = 0.5
+anchor_right = 0.5
+anchor_bottom = 0.5
+offset_left = 74.0
+offset_top = 47.0
+offset_right = 124.0
+offset_bottom = 97.0
+grow_horizontal = 2
+grow_vertical = 2
+toggle_mode = true
+button_group = SubResource("ButtonGroup_haylq")
+icon = SubResource("Texture2D_bij8j")
+expand_icon = true
+
+[node name="RStickClick" type="Button" parent="VBoxContainer/Control"]
+unique_name_in_owner = true
+layout_mode = 1
+anchors_preset = 8
+anchor_left = 0.5
+anchor_top = 0.5
+anchor_right = 0.5
+anchor_bottom = 0.5
+offset_left = 49.0
+offset_top = 97.0
+offset_right = 99.0
+offset_bottom = 147.0
+grow_horizontal = 2
+grow_vertical = 2
+toggle_mode = true
+button_group = SubResource("ButtonGroup_haylq")
+icon = SubResource("Texture2D_2h0w3")
+expand_icon = true
+
+[node name="LB" type="Button" parent="VBoxContainer/Control"]
+unique_name_in_owner = true
+layout_mode = 1
+anchors_preset = 8
+anchor_left = 0.5
+anchor_top = 0.5
+anchor_right = 0.5
+anchor_bottom = 0.5
+offset_left = -276.0
+offset_top = -153.0
+offset_right = -226.0
+offset_bottom = -103.0
+grow_horizontal = 2
+grow_vertical = 2
+toggle_mode = true
+button_group = SubResource("ButtonGroup_haylq")
+icon = SubResource("Texture2D_kvj2q")
+expand_icon = true
+
+[node name="LT" type="Button" parent="VBoxContainer/Control"]
+unique_name_in_owner = true
+layout_mode = 1
+anchors_preset = 8
+anchor_left = 0.5
+anchor_top = 0.5
+anchor_right = 0.5
+anchor_bottom = 0.5
+offset_left = -326.0
+offset_top = -178.0
+offset_right = -276.0
+offset_bottom = -128.0
+grow_horizontal = 2
+grow_vertical = 2
+toggle_mode = true
+button_group = SubResource("ButtonGroup_haylq")
+icon = SubResource("Texture2D_wtcrq")
+expand_icon = true
+
+[node name="RB" type="Button" parent="VBoxContainer/Control"]
+unique_name_in_owner = true
+layout_mode = 1
+anchors_preset = 8
+anchor_left = 0.5
+anchor_top = 0.5
+anchor_right = 0.5
+anchor_bottom = 0.5
+offset_left = 224.0
+offset_top = -153.0
+offset_right = 274.0
+offset_bottom = -103.0
+grow_horizontal = 2
+grow_vertical = 2
+toggle_mode = true
+button_group = SubResource("ButtonGroup_haylq")
+icon = SubResource("Texture2D_lfpf5")
+expand_icon = true
+
+[node name="RT" type="Button" parent="VBoxContainer/Control"]
+unique_name_in_owner = true
+layout_mode = 1
+anchors_preset = 8
+anchor_left = 0.5
+anchor_top = 0.5
+anchor_right = 0.5
+anchor_bottom = 0.5
+offset_left = 274.0
+offset_top = -178.0
+offset_right = 324.0
+offset_bottom = -128.0
+grow_horizontal = 2
+grow_vertical = 2
+toggle_mode = true
+button_group = SubResource("ButtonGroup_haylq")
+icon = SubResource("Texture2D_b3bsp")
+expand_icon = true
+
+[node name="A" type="Button" parent="VBoxContainer/Control"]
+unique_name_in_owner = true
+layout_mode = 1
+anchors_preset = 8
+anchor_left = 0.5
+anchor_top = 0.5
+anchor_right = 0.5
+anchor_bottom = 0.5
+offset_left = 174.0
+offset_top = 22.0
+offset_right = 224.0
+offset_bottom = 72.0
+grow_horizontal = 2
+grow_vertical = 2
+toggle_mode = true
+button_group = SubResource("ButtonGroup_haylq")
+icon = SubResource("Texture2D_u40go")
+expand_icon = true
+
+[node name="B" type="Button" parent="VBoxContainer/Control"]
+unique_name_in_owner = true
+layout_mode = 1
+anchors_preset = 8
+anchor_left = 0.5
+anchor_top = 0.5
+anchor_right = 0.5
+anchor_bottom = 0.5
+offset_left = 224.0
+offset_top = -28.0
+offset_right = 274.0
+offset_bottom = 22.0
+grow_horizontal = 2
+grow_vertical = 2
+toggle_mode = true
+button_group = SubResource("ButtonGroup_haylq")
+icon = SubResource("Texture2D_rnqww")
+expand_icon = true
+
+[node name="X" type="Button" parent="VBoxContainer/Control"]
+unique_name_in_owner = true
+layout_mode = 1
+anchors_preset = 8
+anchor_left = 0.5
+anchor_top = 0.5
+anchor_right = 0.5
+anchor_bottom = 0.5
+offset_left = 124.0
+offset_top = -28.0
+offset_right = 174.0
+offset_bottom = 22.0
+grow_horizontal = 2
+grow_vertical = 2
+toggle_mode = true
+button_group = SubResource("ButtonGroup_haylq")
+icon = SubResource("Texture2D_1a2yv")
+expand_icon = true
+
+[node name="Y" type="Button" parent="VBoxContainer/Control"]
+unique_name_in_owner = true
+layout_mode = 1
+anchors_preset = 8
+anchor_left = 0.5
+anchor_top = 0.5
+anchor_right = 0.5
+anchor_bottom = 0.5
+offset_left = 174.0
+offset_top = -78.0
+offset_right = 224.0
+offset_bottom = -28.0
+grow_horizontal = 2
+grow_vertical = 2
+toggle_mode = true
+button_group = SubResource("ButtonGroup_haylq")
+icon = SubResource("Texture2D_hktfi")
+expand_icon = true
+
+[node name="Select" type="Button" parent="VBoxContainer/Control"]
+unique_name_in_owner = true
+layout_mode = 1
+anchors_preset = 8
+anchor_left = 0.5
+anchor_top = 0.5
+anchor_right = 0.5
+anchor_bottom = 0.5
+offset_left = -76.0
+offset_top = -53.0
+offset_right = -26.0
+offset_bottom = -3.0
+grow_horizontal = 2
+grow_vertical = 2
+toggle_mode = true
+button_group = SubResource("ButtonGroup_haylq")
+icon = SubResource("Texture2D_2ksy6")
+expand_icon = true
+
+[node name="Start" type="Button" parent="VBoxContainer/Control"]
+unique_name_in_owner = true
+layout_mode = 1
+anchors_preset = 8
+anchor_left = 0.5
+anchor_top = 0.5
+anchor_right = 0.5
+anchor_bottom = 0.5
+offset_left = 24.0
+offset_top = -53.0
+offset_right = 74.0
+offset_bottom = -3.0
+grow_horizontal = 2
+grow_vertical = 2
+toggle_mode = true
+button_group = SubResource("ButtonGroup_haylq")
+icon = SubResource("Texture2D_08sqi")
+expand_icon = true
+
+[node name="Home" type="Button" parent="VBoxContainer/Control"]
+unique_name_in_owner = true
+layout_mode = 1
+anchors_preset = 8
+anchor_left = 0.5
+anchor_top = 0.5
+anchor_right = 0.5
+anchor_bottom = 0.5
+offset_left = -26.0
+offset_top = -78.0
+offset_right = 24.0
+offset_bottom = -28.0
+grow_horizontal = 2
+grow_vertical = 2
+toggle_mode = true
+button_group = SubResource("ButtonGroup_haylq")
+icon = SubResource("Texture2D_tivgf")
+expand_icon = true
+
+[node name="Share" type="Button" parent="VBoxContainer/Control"]
+unique_name_in_owner = true
+layout_mode = 1
+anchors_preset = 8
+anchor_left = 0.5
+anchor_top = 0.5
+anchor_right = 0.5
+anchor_bottom = 0.5
+offset_left = -26.0
+offset_top = -28.0
+offset_right = 24.0
+offset_bottom = 22.0
+grow_horizontal = 2
+grow_vertical = 2
+toggle_mode = true
+button_group = SubResource("ButtonGroup_haylq")
+icon = SubResource("Texture2D_87fow")
+expand_icon = true
+
+[node name="DPAD" type="Button" parent="VBoxContainer/Control"]
+unique_name_in_owner = true
+layout_mode = 1
+anchors_preset = 8
+anchor_left = 0.5
+anchor_top = 0.5
+anchor_right = 0.5
+anchor_bottom = 0.5
+offset_left = -226.0
+offset_top = -28.0
+offset_right = -176.0
+offset_bottom = 22.0
+grow_horizontal = 2
+grow_vertical = 2
+toggle_mode = true
+button_group = SubResource("ButtonGroup_haylq")
+icon = SubResource("Texture2D_n4i6p")
+expand_icon = true
+
+[node name="DPADDown" type="Button" parent="VBoxContainer/Control"]
+unique_name_in_owner = true
+layout_mode = 1
+anchors_preset = 8
+anchor_left = 0.5
+anchor_top = 0.5
+anchor_right = 0.5
+anchor_bottom = 0.5
+offset_left = -226.0
+offset_top = 22.0
+offset_right = -176.0
+offset_bottom = 72.0
+grow_horizontal = 2
+grow_vertical = 2
+toggle_mode = true
+button_group = SubResource("ButtonGroup_haylq")
+icon = SubResource("Texture2D_eoyuo")
+expand_icon = true
+
+[node name="DPADRight" type="Button" parent="VBoxContainer/Control"]
+unique_name_in_owner = true
+layout_mode = 1
+anchors_preset = 8
+anchor_left = 0.5
+anchor_top = 0.5
+anchor_right = 0.5
+anchor_bottom = 0.5
+offset_left = -176.0
+offset_top = -28.0
+offset_right = -126.0
+offset_bottom = 22.0
+grow_horizontal = 2
+grow_vertical = 2
+toggle_mode = true
+button_group = SubResource("ButtonGroup_haylq")
+icon = SubResource("Texture2D_c660e")
+expand_icon = true
+
+[node name="DPADLeft" type="Button" parent="VBoxContainer/Control"]
+unique_name_in_owner = true
+layout_mode = 1
+anchors_preset = 8
+anchor_left = 0.5
+anchor_top = 0.5
+anchor_right = 0.5
+anchor_bottom = 0.5
+offset_left = -276.0
+offset_top = -28.0
+offset_right = -226.0
+offset_bottom = 22.0
+grow_horizontal = 2
+grow_vertical = 2
+toggle_mode = true
+button_group = SubResource("ButtonGroup_haylq")
+icon = SubResource("Texture2D_riwus")
+expand_icon = true
+
+[node name="DPADUp" type="Button" parent="VBoxContainer/Control"]
+unique_name_in_owner = true
+layout_mode = 1
+anchors_preset = 8
+anchor_left = 0.5
+anchor_top = 0.5
+anchor_right = 0.5
+anchor_bottom = 0.5
+offset_left = -226.0
+offset_top = -78.0
+offset_right = -176.0
+offset_bottom = -28.0
+grow_horizontal = 2
+grow_vertical = 2
+toggle_mode = true
+button_group = SubResource("ButtonGroup_haylq")
+icon = SubResource("Texture2D_onmvf")
+expand_icon = true
+
+[connection signal="pressed" from="VBoxContainer/Control/LStick" to="." method="_on_l_stick_pressed"]
+[connection signal="pressed" from="VBoxContainer/Control/LStick" to="." method="_on_button_pressed"]
+[connection signal="pressed" from="VBoxContainer/Control/LStickClick" to="." method="_on_l_stick_click_pressed"]
+[connection signal="pressed" from="VBoxContainer/Control/LStickClick" to="." method="_on_button_pressed"]
+[connection signal="pressed" from="VBoxContainer/Control/RStick" to="." method="_on_button_pressed"]
+[connection signal="pressed" from="VBoxContainer/Control/RStick" to="." method="_on_r_stick_pressed"]
+[connection signal="pressed" from="VBoxContainer/Control/RStickClick" to="." method="_on_button_pressed"]
+[connection signal="pressed" from="VBoxContainer/Control/RStickClick" to="." method="_on_r_stick_click_pressed"]
+[connection signal="pressed" from="VBoxContainer/Control/LB" to="." method="_on_button_pressed"]
+[connection signal="pressed" from="VBoxContainer/Control/LB" to="." method="_on_lb_pressed"]
+[connection signal="pressed" from="VBoxContainer/Control/LT" to="." method="_on_button_pressed"]
+[connection signal="pressed" from="VBoxContainer/Control/LT" to="." method="_on_lt_pressed"]
+[connection signal="pressed" from="VBoxContainer/Control/RB" to="." method="_on_button_pressed"]
+[connection signal="pressed" from="VBoxContainer/Control/RB" to="." method="_on_rb_pressed"]
+[connection signal="pressed" from="VBoxContainer/Control/RT" to="." method="_on_button_pressed"]
+[connection signal="pressed" from="VBoxContainer/Control/RT" to="." method="_on_rt_pressed"]
+[connection signal="pressed" from="VBoxContainer/Control/A" to="." method="_on_button_pressed"]
+[connection signal="pressed" from="VBoxContainer/Control/A" to="." method="_on_a_pressed"]
+[connection signal="pressed" from="VBoxContainer/Control/B" to="." method="_on_b_pressed"]
+[connection signal="pressed" from="VBoxContainer/Control/B" to="." method="_on_button_pressed"]
+[connection signal="pressed" from="VBoxContainer/Control/X" to="." method="_on_button_pressed"]
+[connection signal="pressed" from="VBoxContainer/Control/X" to="." method="_on_x_pressed"]
+[connection signal="pressed" from="VBoxContainer/Control/Y" to="." method="_on_y_pressed"]
+[connection signal="pressed" from="VBoxContainer/Control/Y" to="." method="_on_button_pressed"]
+[connection signal="pressed" from="VBoxContainer/Control/Select" to="." method="_on_button_pressed"]
+[connection signal="pressed" from="VBoxContainer/Control/Select" to="." method="_on_select_pressed"]
+[connection signal="pressed" from="VBoxContainer/Control/Start" to="." method="_on_button_pressed"]
+[connection signal="pressed" from="VBoxContainer/Control/Start" to="." method="_on_start_pressed"]
+[connection signal="pressed" from="VBoxContainer/Control/Home" to="." method="_on_button_pressed"]
+[connection signal="pressed" from="VBoxContainer/Control/Home" to="." method="_on_home_pressed"]
+[connection signal="pressed" from="VBoxContainer/Control/Share" to="." method="_on_button_pressed"]
+[connection signal="pressed" from="VBoxContainer/Control/Share" to="." method="_on_share_pressed"]
+[connection signal="pressed" from="VBoxContainer/Control/DPAD" to="." method="_on_dpad_pressed"]
+[connection signal="pressed" from="VBoxContainer/Control/DPAD" to="." method="_on_button_pressed"]
+[connection signal="pressed" from="VBoxContainer/Control/DPADDown" to="." method="_on_button_pressed"]
+[connection signal="pressed" from="VBoxContainer/Control/DPADDown" to="." method="_on_dpad_down_pressed"]
+[connection signal="pressed" from="VBoxContainer/Control/DPADRight" to="." method="_on_button_pressed"]
+[connection signal="pressed" from="VBoxContainer/Control/DPADRight" to="." method="_on_dpad_right_pressed"]
+[connection signal="pressed" from="VBoxContainer/Control/DPADLeft" to="." method="_on_button_pressed"]
+[connection signal="pressed" from="VBoxContainer/Control/DPADLeft" to="." method="_on_dpad_left_pressed"]
+[connection signal="pressed" from="VBoxContainer/Control/DPADUp" to="." method="_on_button_pressed"]
+[connection signal="pressed" from="VBoxContainer/Control/DPADUp" to="." method="_on_dpad_up_pressed"]
diff --git a/addons/controller_icons/objects/path_selection/specific_path.tscn b/addons/controller_icons/objects/path_selection/specific_path.tscn
new file mode 100644
index 0000000..32eb43c
--- /dev/null
+++ b/addons/controller_icons/objects/path_selection/specific_path.tscn
@@ -0,0 +1,67 @@
+[gd_scene load_steps=2 format=3 uid="uid://d2ow6e2ba86b6"]
+
+[ext_resource type="Script" path="res://addons/controller_icons/objects/path_selection/SpecificPathSelector.gd" id="1_iqwfd"]
+
+[node name="Specific Path" type="Panel"]
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+script = ExtResource("1_iqwfd")
+
+[node name="VBoxContainer" type="VBoxContainer" parent="."]
+layout_mode = 1
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+
+[node name="Label" type="Label" parent="VBoxContainer"]
+layout_mode = 2
+text = "The icon will be set to a specific asset, without any dynamic remapping."
+horizontal_alignment = 1
+
+[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"]
+layout_mode = 2
+
+[node name="NameFilter" type="LineEdit" parent="VBoxContainer/HBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 3
+placeholder_text = "Filter by name..."
+clear_button_enabled = true
+
+[node name="HSplitContainer" type="HSplitContainer" parent="VBoxContainer"]
+layout_mode = 2
+size_flags_vertical = 3
+
+[node name="ScrollContainer" type="ScrollContainer" parent="VBoxContainer/HSplitContainer"]
+custom_minimum_size = Vector2(200, 0)
+layout_mode = 2
+size_flags_horizontal = 0
+
+[node name="BaseAssetNames" type="Tree" parent="VBoxContainer/HSplitContainer/ScrollContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 3
+size_flags_vertical = 3
+hide_folding = true
+hide_root = true
+
+[node name="ScrollContainer2" type="ScrollContainer" parent="VBoxContainer/HSplitContainer"]
+custom_minimum_size = Vector2(200, 0)
+layout_mode = 2
+size_flags_horizontal = 3
+follow_focus = true
+horizontal_scroll_mode = 0
+
+[node name="AssetsContainer" type="HFlowContainer" parent="VBoxContainer/HSplitContainer/ScrollContainer2"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 3
+size_flags_vertical = 3
+
+[connection signal="text_changed" from="VBoxContainer/HBoxContainer/NameFilter" to="." method="_on_name_filter_text_changed"]
+[connection signal="item_selected" from="VBoxContainer/HSplitContainer/ScrollContainer/BaseAssetNames" to="." method="_on_base_asset_names_item_selected"]
diff --git a/addons/controller_icons/plugin.cfg b/addons/controller_icons/plugin.cfg
new file mode 100644
index 0000000..8ebe18e
--- /dev/null
+++ b/addons/controller_icons/plugin.cfg
@@ -0,0 +1,7 @@
+[plugin]
+
+name="Controller Icons"
+description="Provides icons for all major controllers and keyboard, with automatic icon remapping."
+author="rsubtil"
+version="3.1.8"
+script="plugin.gd"
diff --git a/addons/controller_icons/plugin.gd b/addons/controller_icons/plugin.gd
new file mode 100644
index 0000000..eee93f1
--- /dev/null
+++ b/addons/controller_icons/plugin.gd
@@ -0,0 +1,19 @@
+@tool
+extends EditorPlugin
+
+var inspector_plugin : EditorInspectorPlugin
+
+func _enable_plugin():
+ add_autoload_singleton("ControllerIcons", "res://addons/controller_icons/ControllerIcons.gd")
+
+func _disable_plugin():
+ remove_autoload_singleton("ControllerIcons")
+
+func _enter_tree():
+ inspector_plugin = preload("res://addons/controller_icons/objects/ControllerIconEditorInspector.gd").new()
+ inspector_plugin.editor_interface = get_editor_interface()
+
+ add_inspector_plugin(inspector_plugin)
+
+func _exit_tree():
+ remove_inspector_plugin(inspector_plugin)
diff --git a/addons/controller_icons/plugin.gd.uid b/addons/controller_icons/plugin.gd.uid
new file mode 100644
index 0000000..9e5600c
--- /dev/null
+++ b/addons/controller_icons/plugin.gd.uid
@@ -0,0 +1 @@
+uid://ocbc43k4gs8
diff --git a/addons/controller_icons/settings.tres b/addons/controller_icons/settings.tres
new file mode 100644
index 0000000..804193e
--- /dev/null
+++ b/addons/controller_icons/settings.tres
@@ -0,0 +1,12 @@
+[gd_resource type="Resource" script_class="ControllerSettings" load_steps=2 format=3 uid="uid://dolsrvh5w47et"]
+
+[ext_resource type="Script" path="res://addons/controller_icons/ControllerSettings.gd" id="1"]
+
+[resource]
+script = ExtResource("1")
+joypad_fallback = 9
+joypad_deadzone = 0.5
+allow_mouse_remap = true
+mouse_min_movement = 200
+custom_asset_dir = ""
+custom_file_extension = ""
diff --git a/demo/IconRemapper.gd b/demo/IconRemapper.gd
new file mode 100644
index 0000000..3a9796d
--- /dev/null
+++ b/demo/IconRemapper.gd
@@ -0,0 +1,102 @@
+extends Control
+
+@onready var nodes := [
+ %A, %B, %X, %Y,
+ %LB, %RB, %LT, %RT,
+ %L_Stick_Click, %R_Stick_Click,
+ %Select, %Start, %DPAD,
+ %DPAD_Up, %DPAD_Down,
+ %DPAD_Left, %DPAD_Right,
+ %Home, %Share,
+ %LStick, %RStick,
+]
+
+var base_names := []
+
+# Called when the node enters the scene tree for the first time.
+func _ready():
+ for child in nodes:
+ base_names.push_back(child.get_child(0).texture.path)
+
+
+func _on_Auto_pressed():
+ for i in range(nodes.size()):
+ nodes[i].get_child(0).texture.path = base_names[i]
+
+
+func _on_Luna_pressed():
+ for i in range(nodes.size()):
+ var control_text = ControllerIcons.Mapper._convert_joypad_to_luna(base_names[i])
+ nodes[i].get_child(0).texture.path = control_text
+
+
+func _on_PS3_pressed():
+ for i in range(nodes.size()):
+ var control_text = ControllerIcons.Mapper._convert_joypad_to_ps3(base_names[i])
+ nodes[i].get_child(0).texture.path = control_text
+
+
+func _on_PS4_pressed():
+ for i in range(nodes.size()):
+ var control_text = ControllerIcons.Mapper._convert_joypad_to_ps4(base_names[i])
+ nodes[i].get_child(0).texture.path = control_text
+
+
+func _on_PS5_pressed():
+ for i in range(nodes.size()):
+ var control_text = ControllerIcons.Mapper._convert_joypad_to_ps5(base_names[i])
+ nodes[i].get_child(0).texture.path = control_text
+
+
+func _on_Stadia_pressed():
+ for i in range(nodes.size()):
+ var control_text = ControllerIcons.Mapper._convert_joypad_to_stadia(base_names[i])
+ nodes[i].get_child(0).texture.path = control_text
+
+
+func _on_Steam_pressed():
+ for i in range(nodes.size()):
+ var control_text = ControllerIcons.Mapper._convert_joypad_to_steam(base_names[i])
+ nodes[i].get_child(0).texture.path = control_text
+
+
+func _on_Switch_pressed():
+ for i in range(nodes.size()):
+ var control_text = ControllerIcons.Mapper._convert_joypad_to_switch(base_names[i])
+ nodes[i].get_child(0).texture.path = control_text
+
+
+func _on_Joycon_pressed():
+ for i in range(nodes.size()):
+ var control_text = ControllerIcons.Mapper._convert_joypad_to_joycon(base_names[i])
+ nodes[i].get_child(0).texture.path = control_text
+
+
+func _on_Xbox360_pressed():
+ for i in range(nodes.size()):
+ var control_text = ControllerIcons.Mapper._convert_joypad_to_xbox360(base_names[i])
+ nodes[i].get_child(0).texture.path = control_text
+
+
+func _on_XboxOne_pressed():
+ for i in range(nodes.size()):
+ var control_text = ControllerIcons.Mapper._convert_joypad_to_xboxone(base_names[i])
+ nodes[i].get_child(0).texture.path = control_text
+
+
+func _on_XboxSeries_pressed():
+ for i in range(nodes.size()):
+ var control_text = ControllerIcons.Mapper._convert_joypad_to_xboxseries(base_names[i])
+ nodes[i].get_child(0).texture.path = control_text
+
+
+func _on_SteamDeck_pressed():
+ for i in range(nodes.size()):
+ var control_text = ControllerIcons.Mapper._convert_joypad_to_steamdeck(base_names[i])
+ nodes[i].get_child(0).texture.path = control_text
+
+
+func _on_ouya_pressed():
+ for i in range(nodes.size()):
+ var control_text = ControllerIcons.Mapper._convert_joypad_to_ouya(base_names[i])
+ nodes[i].get_child(0).texture.path = control_text
diff --git a/demo/IconRemapper.gd.uid b/demo/IconRemapper.gd.uid
new file mode 100644
index 0000000..cf741cc
--- /dev/null
+++ b/demo/IconRemapper.gd.uid
@@ -0,0 +1 @@
+uid://c048itedcqksc
diff --git a/demo/IconRemapper.tscn b/demo/IconRemapper.tscn
new file mode 100644
index 0000000..6114cc6
--- /dev/null
+++ b/demo/IconRemapper.tscn
@@ -0,0 +1,587 @@
+[gd_scene load_steps=24 format=3 uid="uid://cmopiwmgjwjb8"]
+
+[ext_resource type="Script" path="res://demo/IconRemapper.gd" id="2"]
+[ext_resource type="Script" path="res://addons/controller_icons/objects/ControllerIconTexture.gd" id="2_ww1q8"]
+
+[sub_resource type="Texture2D" id="Texture2D_oaqcv"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("2_ww1q8")
+path = "joypad/a"
+show_mode = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_julos"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("2_ww1q8")
+path = "joypad/b"
+show_mode = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_p7fj8"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("2_ww1q8")
+path = "joypad/x"
+show_mode = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_e65pp"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("2_ww1q8")
+path = "joypad/y"
+show_mode = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_drwxf"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("2_ww1q8")
+path = "joypad/lb"
+show_mode = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_lpg8q"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("2_ww1q8")
+path = "joypad/rb"
+show_mode = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_tqj64"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("2_ww1q8")
+path = "joypad/lt"
+show_mode = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_g8v8u"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("2_ww1q8")
+path = "joypad/rt"
+show_mode = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_uqh53"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("2_ww1q8")
+path = "joypad/l_stick_click"
+show_mode = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_jt7n0"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("2_ww1q8")
+path = "joypad/r_stick_click"
+show_mode = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_jmm2v"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("2_ww1q8")
+path = "joypad/select"
+show_mode = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_2w7la"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("2_ww1q8")
+path = "joypad/start"
+show_mode = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_rhnqu"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("2_ww1q8")
+path = "joypad/dpad"
+show_mode = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_vr4j2"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("2_ww1q8")
+path = "joypad/dpad_up"
+show_mode = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_hp6k2"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("2_ww1q8")
+path = "joypad/dpad_down"
+show_mode = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_4trym"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("2_ww1q8")
+path = "joypad/dpad_left"
+show_mode = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_61h51"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("2_ww1q8")
+path = "joypad/dpad_right"
+show_mode = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_adhf2"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("2_ww1q8")
+path = "joypad/home"
+show_mode = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_dl7nm"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("2_ww1q8")
+path = "joypad/share"
+show_mode = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_3ry3e"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("2_ww1q8")
+path = "joypad/l_stick"
+show_mode = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_t68xw"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("2_ww1q8")
+path = "joypad/r_stick"
+show_mode = 0
+force_type = 0
+
+[node name="Control" type="MarginContainer"]
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+size_flags_horizontal = 3
+size_flags_vertical = 3
+theme_override_constants/margin_left = 50
+theme_override_constants/margin_top = 50
+theme_override_constants/margin_right = 50
+theme_override_constants/margin_bottom = 50
+script = ExtResource("2")
+
+[node name="HBoxContainer" type="HBoxContainer" parent="."]
+layout_mode = 2
+size_flags_vertical = 4
+
+[node name="Icons" type="HBoxContainer" parent="HBoxContainer"]
+layout_mode = 2
+size_flags_horizontal = 3
+
+[node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer/Icons"]
+layout_mode = 2
+size_flags_horizontal = 3
+size_flags_vertical = 3
+
+[node name="A" type="HBoxContainer" parent="HBoxContainer/Icons/VBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+
+[node name="ControllerTextureRect" type="TextureRect" parent="HBoxContainer/Icons/VBoxContainer/A"]
+custom_minimum_size = Vector2(40, 40)
+layout_mode = 2
+texture = SubResource("Texture2D_oaqcv")
+expand_mode = 1
+
+[node name="Label" type="Label" parent="HBoxContainer/Icons/VBoxContainer/A"]
+layout_mode = 2
+text = " A"
+
+[node name="B" type="HBoxContainer" parent="HBoxContainer/Icons/VBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+
+[node name="ControllerTextureRect" type="TextureRect" parent="HBoxContainer/Icons/VBoxContainer/B"]
+custom_minimum_size = Vector2(40, 40)
+layout_mode = 2
+texture = SubResource("Texture2D_julos")
+expand_mode = 1
+
+[node name="Label" type="Label" parent="HBoxContainer/Icons/VBoxContainer/B"]
+layout_mode = 2
+text = " B"
+
+[node name="X" type="HBoxContainer" parent="HBoxContainer/Icons/VBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+
+[node name="ControllerTextureRect" type="TextureRect" parent="HBoxContainer/Icons/VBoxContainer/X"]
+custom_minimum_size = Vector2(40, 40)
+layout_mode = 2
+texture = SubResource("Texture2D_p7fj8")
+expand_mode = 1
+
+[node name="Label" type="Label" parent="HBoxContainer/Icons/VBoxContainer/X"]
+layout_mode = 2
+text = " X"
+
+[node name="Y" type="HBoxContainer" parent="HBoxContainer/Icons/VBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+
+[node name="ControllerTextureRect" type="TextureRect" parent="HBoxContainer/Icons/VBoxContainer/Y"]
+custom_minimum_size = Vector2(40, 40)
+layout_mode = 2
+texture = SubResource("Texture2D_e65pp")
+expand_mode = 1
+
+[node name="Label" type="Label" parent="HBoxContainer/Icons/VBoxContainer/Y"]
+layout_mode = 2
+text = " Y"
+
+[node name="LB" type="HBoxContainer" parent="HBoxContainer/Icons/VBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+
+[node name="ControllerTextureRect" type="TextureRect" parent="HBoxContainer/Icons/VBoxContainer/LB"]
+custom_minimum_size = Vector2(40, 40)
+layout_mode = 2
+texture = SubResource("Texture2D_drwxf")
+expand_mode = 1
+
+[node name="Label" type="Label" parent="HBoxContainer/Icons/VBoxContainer/LB"]
+layout_mode = 2
+text = " Left Button"
+
+[node name="RB" type="HBoxContainer" parent="HBoxContainer/Icons/VBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+
+[node name="ControllerTextureRect" type="TextureRect" parent="HBoxContainer/Icons/VBoxContainer/RB"]
+custom_minimum_size = Vector2(40, 40)
+layout_mode = 2
+texture = SubResource("Texture2D_lpg8q")
+expand_mode = 1
+
+[node name="Label" type="Label" parent="HBoxContainer/Icons/VBoxContainer/RB"]
+layout_mode = 2
+text = " Right Button"
+
+[node name="LT" type="HBoxContainer" parent="HBoxContainer/Icons/VBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+
+[node name="ControllerTextureRect" type="TextureRect" parent="HBoxContainer/Icons/VBoxContainer/LT"]
+custom_minimum_size = Vector2(40, 40)
+layout_mode = 2
+texture = SubResource("Texture2D_tqj64")
+expand_mode = 1
+
+[node name="Label" type="Label" parent="HBoxContainer/Icons/VBoxContainer/LT"]
+layout_mode = 2
+text = " Left Trigger"
+
+[node name="RT" type="HBoxContainer" parent="HBoxContainer/Icons/VBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+
+[node name="ControllerTextureRect" type="TextureRect" parent="HBoxContainer/Icons/VBoxContainer/RT"]
+custom_minimum_size = Vector2(40, 40)
+layout_mode = 2
+texture = SubResource("Texture2D_g8v8u")
+expand_mode = 1
+
+[node name="Label" type="Label" parent="HBoxContainer/Icons/VBoxContainer/RT"]
+layout_mode = 2
+text = " Right Trigger"
+
+[node name="L_Stick_Click" type="HBoxContainer" parent="HBoxContainer/Icons/VBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+
+[node name="ControllerTextureRect" type="TextureRect" parent="HBoxContainer/Icons/VBoxContainer/L_Stick_Click"]
+custom_minimum_size = Vector2(40, 40)
+layout_mode = 2
+texture = SubResource("Texture2D_uqh53")
+expand_mode = 1
+
+[node name="Label" type="Label" parent="HBoxContainer/Icons/VBoxContainer/L_Stick_Click"]
+layout_mode = 2
+text = " Left Stick Click"
+
+[node name="R_Stick_Click" type="HBoxContainer" parent="HBoxContainer/Icons/VBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+
+[node name="ControllerTextureRect" type="TextureRect" parent="HBoxContainer/Icons/VBoxContainer/R_Stick_Click"]
+custom_minimum_size = Vector2(40, 40)
+layout_mode = 2
+texture = SubResource("Texture2D_jt7n0")
+expand_mode = 1
+
+[node name="Label" type="Label" parent="HBoxContainer/Icons/VBoxContainer/R_Stick_Click"]
+layout_mode = 2
+text = " Right Stick Click"
+
+[node name="Select" type="HBoxContainer" parent="HBoxContainer/Icons/VBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+
+[node name="ControllerTextureRect" type="TextureRect" parent="HBoxContainer/Icons/VBoxContainer/Select"]
+custom_minimum_size = Vector2(40, 40)
+layout_mode = 2
+texture = SubResource("Texture2D_jmm2v")
+expand_mode = 1
+
+[node name="Label" type="Label" parent="HBoxContainer/Icons/VBoxContainer/Select"]
+layout_mode = 2
+text = " Select"
+
+[node name="VBoxContainer2" type="VBoxContainer" parent="HBoxContainer/Icons"]
+layout_mode = 2
+size_flags_horizontal = 3
+size_flags_vertical = 3
+
+[node name="Start" type="HBoxContainer" parent="HBoxContainer/Icons/VBoxContainer2"]
+unique_name_in_owner = true
+layout_mode = 2
+
+[node name="ControllerTextureRect" type="TextureRect" parent="HBoxContainer/Icons/VBoxContainer2/Start"]
+custom_minimum_size = Vector2(40, 40)
+layout_mode = 2
+texture = SubResource("Texture2D_2w7la")
+expand_mode = 1
+
+[node name="Label" type="Label" parent="HBoxContainer/Icons/VBoxContainer2/Start"]
+layout_mode = 2
+text = " Start"
+
+[node name="DPAD" type="HBoxContainer" parent="HBoxContainer/Icons/VBoxContainer2"]
+unique_name_in_owner = true
+layout_mode = 2
+
+[node name="ControllerTextureRect" type="TextureRect" parent="HBoxContainer/Icons/VBoxContainer2/DPAD"]
+custom_minimum_size = Vector2(40, 40)
+layout_mode = 2
+texture = SubResource("Texture2D_rhnqu")
+expand_mode = 1
+
+[node name="Label" type="Label" parent="HBoxContainer/Icons/VBoxContainer2/DPAD"]
+layout_mode = 2
+text = " DPAD"
+
+[node name="DPAD_Up" type="HBoxContainer" parent="HBoxContainer/Icons/VBoxContainer2"]
+unique_name_in_owner = true
+layout_mode = 2
+
+[node name="ControllerTextureRect" type="TextureRect" parent="HBoxContainer/Icons/VBoxContainer2/DPAD_Up"]
+custom_minimum_size = Vector2(40, 40)
+layout_mode = 2
+texture = SubResource("Texture2D_vr4j2")
+expand_mode = 1
+
+[node name="Label" type="Label" parent="HBoxContainer/Icons/VBoxContainer2/DPAD_Up"]
+layout_mode = 2
+text = " DPAD Up"
+
+[node name="DPAD_Down" type="HBoxContainer" parent="HBoxContainer/Icons/VBoxContainer2"]
+unique_name_in_owner = true
+layout_mode = 2
+
+[node name="ControllerTextureRect" type="TextureRect" parent="HBoxContainer/Icons/VBoxContainer2/DPAD_Down"]
+custom_minimum_size = Vector2(40, 40)
+layout_mode = 2
+texture = SubResource("Texture2D_hp6k2")
+expand_mode = 1
+
+[node name="Label" type="Label" parent="HBoxContainer/Icons/VBoxContainer2/DPAD_Down"]
+layout_mode = 2
+text = " DPAD Down"
+
+[node name="DPAD_Left" type="HBoxContainer" parent="HBoxContainer/Icons/VBoxContainer2"]
+unique_name_in_owner = true
+layout_mode = 2
+
+[node name="ControllerTextureRect" type="TextureRect" parent="HBoxContainer/Icons/VBoxContainer2/DPAD_Left"]
+custom_minimum_size = Vector2(40, 40)
+layout_mode = 2
+texture = SubResource("Texture2D_4trym")
+expand_mode = 1
+
+[node name="Label" type="Label" parent="HBoxContainer/Icons/VBoxContainer2/DPAD_Left"]
+layout_mode = 2
+text = " DPAD Left"
+
+[node name="DPAD_Right" type="HBoxContainer" parent="HBoxContainer/Icons/VBoxContainer2"]
+unique_name_in_owner = true
+layout_mode = 2
+
+[node name="ControllerTextureRect" type="TextureRect" parent="HBoxContainer/Icons/VBoxContainer2/DPAD_Right"]
+custom_minimum_size = Vector2(40, 40)
+layout_mode = 2
+texture = SubResource("Texture2D_61h51")
+expand_mode = 1
+
+[node name="Label" type="Label" parent="HBoxContainer/Icons/VBoxContainer2/DPAD_Right"]
+layout_mode = 2
+text = " DPAD Right"
+
+[node name="Home" type="HBoxContainer" parent="HBoxContainer/Icons/VBoxContainer2"]
+unique_name_in_owner = true
+layout_mode = 2
+
+[node name="ControllerTextureRect" type="TextureRect" parent="HBoxContainer/Icons/VBoxContainer2/Home"]
+custom_minimum_size = Vector2(40, 40)
+layout_mode = 2
+texture = SubResource("Texture2D_adhf2")
+expand_mode = 1
+
+[node name="Label" type="Label" parent="HBoxContainer/Icons/VBoxContainer2/Home"]
+layout_mode = 2
+text = " Home"
+
+[node name="Share" type="HBoxContainer" parent="HBoxContainer/Icons/VBoxContainer2"]
+unique_name_in_owner = true
+layout_mode = 2
+
+[node name="ControllerTextureRect" type="TextureRect" parent="HBoxContainer/Icons/VBoxContainer2/Share"]
+custom_minimum_size = Vector2(40, 40)
+layout_mode = 2
+texture = SubResource("Texture2D_dl7nm")
+expand_mode = 1
+
+[node name="Label" type="Label" parent="HBoxContainer/Icons/VBoxContainer2/Share"]
+layout_mode = 2
+text = " Share"
+
+[node name="LStick" type="HBoxContainer" parent="HBoxContainer/Icons/VBoxContainer2"]
+unique_name_in_owner = true
+layout_mode = 2
+
+[node name="ControllerTextureRect" type="TextureRect" parent="HBoxContainer/Icons/VBoxContainer2/LStick"]
+custom_minimum_size = Vector2(40, 40)
+layout_mode = 2
+texture = SubResource("Texture2D_3ry3e")
+expand_mode = 1
+
+[node name="Label" type="Label" parent="HBoxContainer/Icons/VBoxContainer2/LStick"]
+layout_mode = 2
+text = " Left Stick"
+
+[node name="RStick" type="HBoxContainer" parent="HBoxContainer/Icons/VBoxContainer2"]
+unique_name_in_owner = true
+layout_mode = 2
+
+[node name="ControllerTextureRect" type="TextureRect" parent="HBoxContainer/Icons/VBoxContainer2/RStick"]
+custom_minimum_size = Vector2(40, 40)
+layout_mode = 2
+texture = SubResource("Texture2D_t68xw")
+expand_mode = 1
+
+[node name="Label" type="Label" parent="HBoxContainer/Icons/VBoxContainer2/RStick"]
+layout_mode = 2
+text = " Right Stick"
+
+[node name="Buttons" type="VBoxContainer" parent="HBoxContainer"]
+layout_mode = 2
+size_flags_horizontal = 3
+
+[node name="Auto" type="Button" parent="HBoxContainer/Buttons"]
+layout_mode = 2
+size_flags_vertical = 3
+text = "[ Set to automatic ]"
+
+[node name="Luna" type="Button" parent="HBoxContainer/Buttons"]
+layout_mode = 2
+size_flags_vertical = 3
+text = "Amazon Luna"
+
+[node name="PS3" type="Button" parent="HBoxContainer/Buttons"]
+layout_mode = 2
+size_flags_vertical = 3
+text = "PlayStation 3"
+
+[node name="PS4" type="Button" parent="HBoxContainer/Buttons"]
+layout_mode = 2
+size_flags_vertical = 3
+text = "PlayStation 4"
+
+[node name="PS5" type="Button" parent="HBoxContainer/Buttons"]
+layout_mode = 2
+size_flags_vertical = 3
+text = "PlayStation 5"
+
+[node name="Stadia" type="Button" parent="HBoxContainer/Buttons"]
+layout_mode = 2
+size_flags_vertical = 3
+text = "Google Stadia"
+
+[node name="Steam" type="Button" parent="HBoxContainer/Buttons"]
+layout_mode = 2
+size_flags_vertical = 3
+text = "Steam Controller"
+
+[node name="SteamDeck" type="Button" parent="HBoxContainer/Buttons"]
+layout_mode = 2
+size_flags_vertical = 3
+text = "Steam Deck"
+
+[node name="Switch" type="Button" parent="HBoxContainer/Buttons"]
+layout_mode = 2
+size_flags_vertical = 3
+text = "Nintendo Switch Controller"
+
+[node name="Joycon" type="Button" parent="HBoxContainer/Buttons"]
+layout_mode = 2
+size_flags_vertical = 3
+text = "Nintendo Switch JoyCon"
+
+[node name="OUYA" type="Button" parent="HBoxContainer/Buttons"]
+layout_mode = 2
+size_flags_vertical = 3
+text = "OUYA"
+
+[node name="Xbox360" type="Button" parent="HBoxContainer/Buttons"]
+layout_mode = 2
+size_flags_vertical = 3
+text = "Xbox 360"
+
+[node name="XboxOne" type="Button" parent="HBoxContainer/Buttons"]
+layout_mode = 2
+size_flags_vertical = 3
+text = "Xbox One"
+
+[node name="XboxSeries" type="Button" parent="HBoxContainer/Buttons"]
+layout_mode = 2
+size_flags_vertical = 3
+text = "Xbox Series"
+
+[connection signal="pressed" from="HBoxContainer/Buttons/Auto" to="." method="_on_Auto_pressed"]
+[connection signal="pressed" from="HBoxContainer/Buttons/Luna" to="." method="_on_Luna_pressed"]
+[connection signal="pressed" from="HBoxContainer/Buttons/PS3" to="." method="_on_PS3_pressed"]
+[connection signal="pressed" from="HBoxContainer/Buttons/PS4" to="." method="_on_PS4_pressed"]
+[connection signal="pressed" from="HBoxContainer/Buttons/PS5" to="." method="_on_PS5_pressed"]
+[connection signal="pressed" from="HBoxContainer/Buttons/Stadia" to="." method="_on_Stadia_pressed"]
+[connection signal="pressed" from="HBoxContainer/Buttons/Steam" to="." method="_on_Steam_pressed"]
+[connection signal="pressed" from="HBoxContainer/Buttons/SteamDeck" to="." method="_on_SteamDeck_pressed"]
+[connection signal="pressed" from="HBoxContainer/Buttons/Switch" to="." method="_on_Switch_pressed"]
+[connection signal="pressed" from="HBoxContainer/Buttons/Joycon" to="." method="_on_Joycon_pressed"]
+[connection signal="pressed" from="HBoxContainer/Buttons/OUYA" to="." method="_on_ouya_pressed"]
+[connection signal="pressed" from="HBoxContainer/Buttons/Xbox360" to="." method="_on_Xbox360_pressed"]
+[connection signal="pressed" from="HBoxContainer/Buttons/XboxOne" to="." method="_on_XboxOne_pressed"]
+[connection signal="pressed" from="HBoxContainer/Buttons/XboxSeries" to="." method="_on_XboxSeries_pressed"]
diff --git a/demo/Showcase.tscn b/demo/Showcase.tscn
new file mode 100644
index 0000000..c94c4c9
--- /dev/null
+++ b/demo/Showcase.tscn
@@ -0,0 +1,224 @@
+[gd_scene format=3 uid="uid://8ypaj35qfhyr"]
+
+[ext_resource type="Script" uid="uid://7hglx6nfu063" path="res://addons/controller_icons/objects/ControllerIconTexture.gd" id="1_vfnng"]
+
+[sub_resource type="Texture2D" id="Texture2D_s5m8q"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("1_vfnng")
+path = "ui_accept"
+show_mode = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_m553g"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("1_vfnng")
+path = "joypad/x"
+show_mode = 0
+force_type = 0
+
+[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_htjm2"]
+
+[sub_resource type="Sky" id="Sky_tf27q"]
+sky_material = SubResource("ProceduralSkyMaterial_htjm2")
+
+[sub_resource type="Environment" id="Environment_klhn5"]
+background_mode = 2
+sky = SubResource("Sky_tf27q")
+
+[sub_resource type="Texture2D" id="Texture2D_utrwd"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("1_vfnng")
+path = "joypad/a"
+show_mode = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_8wr4o"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("1_vfnng")
+path = "joypad/x"
+show_mode = 0
+force_type = 0
+
+[sub_resource type="Texture2D" id="Texture2D_82sge"]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("1_vfnng")
+path = "switch/controllers_separate"
+show_mode = 0
+force_type = 0
+
+[node name="Showcase" type="Node" unique_id=295027238]
+
+[node name="RichTextLabel" type="RichTextLabel" parent="." unique_id=349315614]
+offset_left = 150.0
+offset_top = 25.0
+offset_right = 1002.0
+offset_bottom = 111.0
+bbcode_enabled = true
+text = "Controller Icons provides automatic icons for all major controllers, keyboard, and mouse.
+
+It provides a [b]ControllerIconTexture[/b] resource that can be set on any node that accepts a [b]Texture2D[/b], such as:"
+
+[node name="Label" type="Label" parent="." unique_id=1724750574]
+offset_left = 117.0
+offset_top = 151.0
+offset_right = 292.0
+offset_bottom = 174.0
+text = "TextureRect / Sprite2D"
+horizontal_alignment = 1
+
+[node name="TextureRect" type="TextureRect" parent="." unique_id=405427048]
+offset_left = 164.0
+offset_top = 187.0
+offset_right = 235.0
+offset_bottom = 258.0
+texture = SubResource("Texture2D_s5m8q")
+expand_mode = 1
+
+[node name="Label2" type="Label" parent="." unique_id=1009805006]
+offset_left = 357.0
+offset_top = 152.0
+offset_right = 451.0
+offset_bottom = 175.0
+text = "Button"
+horizontal_alignment = 1
+
+[node name="Button" type="Button" parent="." unique_id=2024101150]
+offset_left = 340.0
+offset_top = 191.0
+offset_right = 468.0
+offset_bottom = 239.0
+text = "Attack"
+icon = SubResource("Texture2D_m553g")
+expand_icon = true
+
+[node name="Label3" type="Label" parent="." unique_id=296529233]
+offset_left = 571.0
+offset_top = 151.0
+offset_right = 665.0
+offset_bottom = 174.0
+text = "Sprite3D"
+horizontal_alignment = 1
+
+[node name="SubViewportContainer" type="SubViewportContainer" parent="." unique_id=1188610478]
+offset_left = 546.0
+offset_top = 187.0
+offset_right = 689.0
+offset_bottom = 332.0
+stretch = true
+
+[node name="SubViewport" type="SubViewport" parent="SubViewportContainer" unique_id=1088140940]
+handle_input_locally = false
+size = Vector2i(143, 145)
+render_target_update_mode = 4
+
+[node name="Camera3D" type="Camera3D" parent="SubViewportContainer/SubViewport" unique_id=255731315]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.125, 0.745)
+environment = SubResource("Environment_klhn5")
+
+[node name="Sprite3D" type="Sprite3D" parent="SubViewportContainer/SubViewport" unique_id=942846403]
+texture = SubResource("Texture2D_utrwd")
+
+[node name="Label3D" type="Label3D" parent="SubViewportContainer/SubViewport" unique_id=1104632312]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.573528, 0)
+text = "Jump"
+
+[node name="Label4" type="Label" parent="." unique_id=232674080]
+offset_left = 826.0
+offset_top = 152.0
+offset_right = 934.0
+offset_bottom = 175.0
+text = "RichTextLabel"
+horizontal_alignment = 1
+
+[node name="RichTextLabel2" type="RichTextLabel" parent="." unique_id=755217362]
+offset_left = 775.0
+offset_top = 195.0
+offset_right = 993.0
+offset_bottom = 279.0
+bbcode_enabled = true
+text = "Press [img=40]res://demo/icon_respect.tres[/img] to pay respects"
+
+[node name="RichTextLabel3" type="RichTextLabel" parent="." unique_id=176142651]
+offset_left = 262.0
+offset_top = 389.0
+offset_right = 858.0
+offset_bottom = 421.0
+bbcode_enabled = true
+text = "You'll need to provide a [b]path[/b] indicating which icon to display, which can be:"
+
+[node name="RichTextLabel4" type="RichTextLabel" parent="." unique_id=2109360878]
+offset_left = 47.0
+offset_top = 434.0
+offset_right = 373.0
+offset_bottom = 525.0
+bbcode_enabled = true
+text = "[center]An input action, switching automatically between keyboard/mouse and controller[/center]"
+
+[node name="TextureRect2" type="TextureRect" parent="." unique_id=881988573]
+offset_left = 187.0
+offset_top = 515.0
+offset_right = 258.0
+offset_bottom = 586.0
+texture = SubResource("Texture2D_s5m8q")
+expand_mode = 1
+
+[node name="RichTextLabel5" type="RichTextLabel" parent="." unique_id=1415597120]
+offset_left = 181.0
+offset_top = 596.0
+offset_right = 274.0
+offset_bottom = 624.0
+bbcode_enabled = true
+text = "[i]\"ui_accept\"[/i]"
+
+[node name="RichTextLabel6" type="RichTextLabel" parent="." unique_id=1634196808]
+offset_left = 417.0
+offset_top = 432.0
+offset_right = 777.0
+offset_bottom = 523.0
+bbcode_enabled = true
+text = "[center]A generic joypad path, which shows only controller icons and according to the connected controller type[/center]"
+
+[node name="TextureRect3" type="TextureRect" parent="." unique_id=345677152]
+offset_left = 567.0
+offset_top = 513.0
+offset_right = 638.0
+offset_bottom = 584.0
+texture = SubResource("Texture2D_8wr4o")
+expand_mode = 1
+
+[node name="RichTextLabel7" type="RichTextLabel" parent="." unique_id=1190522777]
+offset_left = 561.0
+offset_top = 594.0
+offset_right = 654.0
+offset_bottom = 622.0
+bbcode_enabled = true
+text = "[i]\"joypad/x\"[/i]"
+
+[node name="RichTextLabel8" type="RichTextLabel" parent="." unique_id=2135033758]
+offset_left = 789.0
+offset_top = 432.0
+offset_right = 1060.0
+offset_bottom = 523.0
+bbcode_enabled = true
+text = "[center]A specific path, which will always display the chosen icon[/center]"
+
+[node name="TextureRect4" type="TextureRect" parent="." unique_id=617366000]
+offset_left = 874.0
+offset_top = 513.0
+offset_right = 945.0
+offset_bottom = 584.0
+texture = SubResource("Texture2D_82sge")
+expand_mode = 1
+
+[node name="RichTextLabel9" type="RichTextLabel" parent="." unique_id=711467859]
+offset_left = 798.0
+offset_top = 594.0
+offset_right = 1031.0
+offset_bottom = 622.0
+bbcode_enabled = true
+text = "[i]\"switch/controllers_separate\"[/i]"
diff --git a/demo/icon_respect.tres b/demo/icon_respect.tres
new file mode 100644
index 0000000..c36b8da
--- /dev/null
+++ b/demo/icon_respect.tres
@@ -0,0 +1,11 @@
+[gd_resource type="Texture2D" script_class="ControllerIconTexture" format=3 uid="uid://5bh1m7kwdsah"]
+
+[ext_resource type="Script" uid="uid://7hglx6nfu063" path="res://addons/controller_icons/objects/ControllerIconTexture.gd" id="1_up1mj"]
+
+[resource]
+resource_local_to_scene = false
+resource_name = ""
+script = ExtResource("1_up1mj")
+path = "key/f"
+show_mode = 0
+force_type = 0
diff --git a/project.godot b/project.godot
index b974062..bbc95a1 100644
--- a/project.godot
+++ b/project.godot
@@ -15,11 +15,19 @@ run/main_scene="uid://bicg07c42wm1t"
config/features=PackedStringArray("4.7", "Forward Plus")
config/icon="res://icon.svg"
+[autoload]
+
+ControllerIcons="*uid://b7ho1rjcpht1d"
+
[display]
window/stretch/mode="canvas_items"
window/stretch/aspect="expand"
+[editor_plugins]
+
+enabled=PackedStringArray("res://addons/controller_icons/plugin.cfg")
+
[input]
ui_accept={