Struct InputEventListener
Wraps around mechanisms for listening in on the InputEvent stream made available through onEvent.
Implements
Namespace: UnityEngine.InputSystem.LowLevel
Assembly: Unity.InputSystem.dll
Syntax
public struct InputEventListener : IObservable<InputEventPtr>
  Remarks
This struct can be used to add (operator +(InputEventListener, Action<InputEventPtr, InputDevice>)) or remove (operator -(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();
See Also
Operators
operator +(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}");
    };
Exceptions
| Type | Condition | 
|---|---|
| ArgumentNullException | 
  | 
      
See Also
operator -(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;
Exceptions
| Type | Condition | 
|---|---|
| ArgumentNullException | 
  |