extends Node signal on_capture(descriptor : EventDescriptor) func _capture_mouse_event(ev : InputEventMouseButton) -> EventDescriptor: if not ev.pressed: return null var desc : EventDescriptor = EventDescriptor.new() desc.kind = EventDescriptor.EventMedia.MOUSE desc.mouse_button = ev.button_index return desc func _capture_joy_button_event(ev : InputEventJoypadButton) -> EventDescriptor: if not ev.pressed: return null var desc : EventDescriptor = EventDescriptor.new() desc.kind = EventDescriptor.EventMedia.JOYSTICK desc.joy_button = ev.button_index return desc func _capture_joy_axis_event(ev : InputEventJoypadMotion) -> EventDescriptor: var desc : EventDescriptor = EventDescriptor.new() desc.kind = EventDescriptor.EventMedia.JOYSTICK desc.joy_axis = ev.axis return desc func _capture_keyboard_event(ev : InputEventKey) -> EventDescriptor: if ev.echo or not ev.pressed: return null var desc : EventDescriptor = EventDescriptor.new() desc.kind = EventDescriptor.EventMedia.KEYBOARD desc.key_alt_modifier = ev.alt_pressed desc.key_ctrl_modifier = ev.ctrl_pressed desc.key_shift_modifier = ev.shift_pressed desc.key_meta_modifier = ev.meta_pressed desc.key_code = ev.keycode return desc func _input(event : InputEvent) -> void: # Capture an event, and deactivate. var descriptor : EventDescriptor = null match event.get_class(): "InputEventKey": descriptor = _capture_keyboard_event(event as InputEventKey) "InputEventMouseButton": descriptor = _capture_mouse_event(event as InputEventMouseButton) "InputEventJoypadButton": descriptor = _capture_joy_button_event(event as InputEventJoypadButton) "InputEventJoypadMotion": descriptor = _capture_joy_axis_event(event as InputEventJoypadMotion) _: pass if descriptor != null: on_capture.emit(descriptor)
or share this direct link: