Struct InputEventListener
Wraps around mechanisms for listening in on the InputEvent stream made available through onEvent.
Namespace: UnityEngine.InputSystem.LowLevel
Syntax
public struct InputEventListener : IObservable<InputEventPtr>
Remarks
This struct can be used to add (Addition(InputEventListener, Action<InputEventPtr, InputDevice>)) or remove (Subtraction(InputEventListener, Action<InputEventPtr, InputDevice>)) callbacks directly to/from the event pipeline.
Alternatively, it can be used as an IObservable to Subscribe(IObserver<InputEventPtr>) observers to
the event stream. See Observable for extension methods to set up various observer
mechanisms.
InputSystem.onEvent
    .ForDevice(Mouse.current)
    .Call(evt =>
        {
            foreach (var control in evt.EnumerateChangedControls())
                Debug.Log($"Control {control} on mouse has changed value");
        });
Methods
Subscribe(IObserver<InputEventPtr>)
Subscribe an observer to the event pump.
Declaration
public IDisposable Subscribe(IObserver<InputEventPtr> observer)
Parameters
| Type | Name | Description | 
|---|---|---|
| IObserver<InputEventPtr> | observer | Observer to be notified for each event.  | 
Returns
| Type | Description | 
|---|---|
| IDisposable | A handle to dispose of the subscription.  | 
Remarks
The easiest way to subscribe is via the extension methods in Observable.
// Subscribe.
var subscription = InputSystem.onEvent.Call(e => Debug.Log("Event"));
// Unsubscribe.
subscription.Dispose();
Operators
Addition(InputEventListener, Action<InputEventPtr, InputDevice>)
Add a delegate to be called for each InputEvent that is processed by the Input System.
Declaration
public static InputEventListener operator +(InputEventListener _, Action<InputEventPtr, InputDevice> callback)
Parameters
| Type | Name | Description | 
|---|---|---|
| InputEventListener | _ | |
| Action<InputEventPtr, InputDevice> | callback | A callback to call for each event.  | 
Returns
| Type | Description | 
|---|---|
| InputEventListener | The same listener instance.  | 
Remarks
InputSystem.onEvent +=
    (eventPtr, device) =>
    {
        Debug.Log($"Event for {device}");
    };
See Also
Subtraction(InputEventListener, Action<InputEventPtr, InputDevice>)
Remove a delegate from InputEvent.
Declaration
public static InputEventListener operator -(InputEventListener _, Action<InputEventPtr, InputDevice> callback)
Parameters
| Type | Name | Description | 
|---|---|---|
| InputEventListener | _ | |
| Action<InputEventPtr, InputDevice> | callback | A callback that was previously installed on onEvent.  | 
Returns
| Type | Description | 
|---|---|
| InputEventListener | The same listener instance.  | 
Remarks
InputSystem.onEvent -= myDelegate;