def METHOD_NAME(
    self,
    source: QWidget,
    ev: QEvent,
) -> None:
    '''
    Qt global event filter: return `False` to pass through and `True`
    to filter event out.
    https://doc.qt.io/qt-5/qobject.html#eventFilter
    https://doc.qt.io/qtforpython/overviews/eventsandfilters.html#event-filters
    '''
    etype = ev.type()
    # TODO: turn this on and see what we can filter by default (such
    # as mouseWheelEvent).
    # print(f'ev: {ev}')
    if etype not in self._event_types:
        return False
    # XXX: we unpack here because apparently doing it
    # after pop from the mem chan isn't showing the same
    # event object? no clue wtf is going on there, likely
    # something to do with Qt internals and calling the
    # parent handler?
    if etype in {QEvent.KeyPress, QEvent.KeyRelease}:
        msg = KeyboardMsg(
            event=ev,
            etype=etype,
            key=ev.key(),
            mods=ev.modifiers(),
            txt=ev.text(),
        )
        # TODO: is there a global setting for this?
        if ev.isAutoRepeat() and self._filter_auto_repeats:
            ev.ignore()
            # filter out this event and stop it's processing
            # https://doc.qt.io/qt-5/qobject.html#installEventFilter
            return True
        # NOTE: the event object instance coming out
        # the other side is mutated since Qt resumes event
        # processing **before** running a ``trio`` guest mode
        # tick, thus special handling or copying must be done.
    elif etype in MOUSE_EVENTS:
        # print('f mouse event: {ev}')
        msg = MouseMsg(
            event=ev,
            etype=etype,
            button=ev.button(),
        )
    else:
        msg = ev
    # send event-msg to async handler
    self._send_chan.send_nowait(msg)
    # **do not** filter out this event
    # and instead forward to the source widget
    # https://doc.qt.io/qt-5/qobject.html#installEventFilter
    return False