> ## Documentation Index
> Fetch the complete documentation index at: https://docs.supernote.com/llms.txt
> Use this file to discover all available pages before exploring further.

# registerEventListener

> Register a plugin event listener.

```ts theme={null}
registerEventListener(
 event: string,
 registerType: number,
 penUpListener: PluginEventListener
): PluginEventSubscription;
```

**Parameters**

| Parameter       | Type                  | Description                                                                                                                                                                                                                      |
| --------------- | --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `event`         | `string`              | Event type (currently only `event_pen_up` is supported)                                                                                                                                                                          |
| `registerType`  | `number`              | Registration priority: `0` always first, `1` normal order, `2` always last. When multiple plugins register the same event, plugins are ordered by registration, and the priority affects placement (0 first, 2 last).            |
| `penUpListener` | `PluginEventListener` | Event callback object that implements `onMsg(msg)`.<br />The `msg` structure depends on the `event` type.<br />When `event` is `event_pen_up`, `msg` is an array of [`Element`](/en/api-reference/supernote-plugin/types/trail). |

**Returns**

* `PluginEventSubscription`: subscription object. Calling `remove()` unregisters the event and removes the local subscription.

## Example

```ts wrap theme={null}
import { PluginManager, type Element } from 'sn-plugin-lib';

/**
 * Example: register a pen-up event listener.
 * The `msg` of `event_pen_up` is `Element[]`.
 */
export async function exampleRegisterEventListener() {
 const sub = PluginManager.registerEventListener('event_pen_up', 1, {
 onMsg(msg) {
 const elements = msg as Element[];
 console.log('pen_up elements length:', elements.length);
 console.log('first element uuid:', elements[0]?.uuid);
 },
 });
 return sub;
}
```
