@tool extends Sprite2D class_name InputItem @export var input_action: String: set(value): input_action = value _on_input_action_set() @export var detail_rate: float: set(value): detail_rate = value modulate.a = value func _ready() -> void: if not Engine.is_editor_hint(): SignalManager.input_device_change.connect(_on_input_device_change) func _on_input_device_change() -> void: _on_input_action_set() func _on_input_action_set(): var actions = InputMap.get_actions() for action in actions: if not action == input_action: continue var events = InputMap.action_get_events(action) for event in events: if event is InputEventJoypadButton: if not Global.controller_type == Enum.EControllerType.Joypad: continue match event.button_index: JOY_BUTTON_A: frame = 1 JOY_BUTTON_B: frame = 2 JOY_BUTTON_X: frame = 3 JOY_BUTTON_Y: frame = 4 JOY_BUTTON_LEFT_STICK: frame = 5 JOY_BUTTON_RIGHT_STICK: frame = 6 JOY_BUTTON_LEFT_SHOULDER: frame = 7 JOY_BUTTON_RIGHT_SHOULDER: frame = 8 JOY_BUTTON_BACK: frame = 9 JOY_BUTTON_START: frame = 10 JOY_BUTTON_GUIDE: frame = 11 _: continue return elif event is InputEventKey: if not Global.controller_type == Enum.EControllerType.Keyboard: continue match event.physical_keycode: KEY_F1: frame = 12 KEY_F2: frame = 13 KEY_F3: frame = 14 KEY_F4: frame = 15 KEY_F5: frame = 16 KEY_F6: frame = 17 KEY_F7: frame = 18 KEY_F8: frame = 19 KEY_F9: frame = 20 KEY_F10: frame = 21 KEY_F11: frame = 22 KEY_F12: frame = 23 KEY_QUOTELEFT: frame = 24 KEY_1: frame = 25 KEY_2: frame = 26 KEY_3: frame = 27 KEY_4: frame = 28 KEY_5: frame = 29 KEY_6: frame = 30 KEY_7: frame = 31 KEY_8: frame = 32 KEY_9: frame = 33 KEY_0: frame = 34 KEY_TAB: frame = 36 KEY_Q: frame = 37 KEY_W: frame = 38 KEY_E: frame = 39 KEY_R: frame = 40 KEY_T: frame = 41 KEY_Y: frame = 42 KEY_U: frame = 43 KEY_I: frame = 44 KEY_O: frame = 45 KEY_P: frame = 46 KEY_CAPSLOCK: frame = 48 KEY_A: frame = 49 KEY_S: frame = 50 KEY_D: frame = 51 KEY_F: frame = 52 KEY_G: frame = 53 KEY_H: frame = 54 KEY_J: frame = 55 KEY_K: frame = 56 KEY_L: frame = 57 KEY_SHIFT: frame = 60 KEY_Z: frame = 61 KEY_X: frame = 62 KEY_C: frame = 63 KEY_V: frame = 64 KEY_B: frame = 65 KEY_N: frame = 66 KEY_M: frame = 67 KEY_CTRL: frame = 72 KEY_ALT: frame = 73 KEY_SPACE: frame = 74 KEY_UP: frame = 75 KEY_DOWN: frame = 76 KEY_LEFT: frame = 77 KEY_RIGHT: frame = 78 KEY_ESCAPE: frame = 79 KEY_ENTER: frame = 80 _: continue return else: break frame = 0