---
title: "pointerInteropFilter"
description: "A special PointerInputModifier that provides access to the underlying [MotionEvent]s originally
dispatched to Compose. Prefer [pointerInput] and use this only for interoperation with existing
code that consumes [MotionEvent]s.

While the main intent of this Modifier is to allow arbitrary code to access the original
[MotionEvent] dispatched to Compose, for completeness, analogs are provided to allow arbitrary
code to interact with the system as if it were an Android View.

This includes 2 APIs,
1. [onTouchEvent] has a Boolean return type which is akin to the return type of  [View.onTouchEvent]. If the provided [onTouchEvent] returns true, it will continue to receive  the event stream (unless the event stream has been intercepted) and if it returns false, it  will not.
2. [requestDisallowInterceptTouchEvent] is a lambda that you can optionally provide so that you  can later call it (yes, in this case, you call the lambda that you provided) which is akin to  calling [ViewParent.requestDisallowInterceptTouchEvent]. When this is called, any associated  ancestors in the tree that abide by the contract will act accordingly and will not intercept  the even stream."
type: "modifier"
---

<div class='type'>Compose Modifier</div>

<a id='references'></a>
<div class='sourceset sourceset-android'>Android</div>


```kotlin
fun Modifier.pointerInteropFilter(
    requestDisallowInterceptTouchEvent: (RequestDisallowInterceptTouchEvent)? = null,
    onTouchEvent: (MotionEvent) -> Boolean,
): Modifier
```


A special PointerInputModifier that provides access to the underlying `MotionEvent`s originally
dispatched to Compose. Prefer `pointerInput` and use this only for interoperation with existing
code that consumes `MotionEvent`s.

While the main intent of this Modifier is to allow arbitrary code to access the original
`MotionEvent` dispatched to Compose, for completeness, analogs are provided to allow arbitrary
code to interact with the system as if it were an Android View.

This includes 2 APIs,
1. `onTouchEvent` has a Boolean return type which is akin to the return type of  `View.onTouchEvent`. If the provided `onTouchEvent` returns true, it will continue to receive  the event stream (unless the event stream has been intercepted) and if it returns false, it  will not.
2. `requestDisallowInterceptTouchEvent` is a lambda that you can optionally provide so that you  can later call it (yes, in this case, you call the lambda that you provided) which is akin to  calling `ViewParent.requestDisallowInterceptTouchEvent`. When this is called, any associated  ancestors in the tree that abide by the contract will act accordingly and will not intercept  the even stream.



