Multiple renderers in same renderwindow - get event only from the one that was interacted with

My issue:
I want to react on the event that a user interacted with a specific vtkRenderer in a vtkRenderWindow with multiple renderers, each with a separate viewport.

For that purpose, I am observing the vtkCommand::EndEvent of each of the renderers. As the situation presents itself to me currently, it seems that any interaction with one of the renderers will trigger an EndEvent for all renderers in that RenderWindow.

Is there some other event that I should subscribe to, that will give me only an event for the renderer that was actually interacted with?

My test code:

#include <vtkActor.h>
#include <vtkCommand.h>
#include <vtkNew.h>
#include <vtkPolyDataMapper.h>
#include <vtkProperty.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
#include <vtkSphereSource.h>

#include <map>

class RenObserver
{
public:
	void addRen(vtkRenderer* ren, int id)
	{
		ren->AddObserver(vtkCommand::EndEvent, this, &RenObserver::endEventTest);
		m_rendererID.emplace(ren, id);
	}
	void endEventTest(vtkObject* caller, long unsigned int /*eventId*/, void* /*callData*/)
	{
		std::cout << "EndEvent, r=" << m_rendererID[dynamic_cast<vtkRenderer*>(caller)] << std::endl;
	}
private:
	std::map<vtkRenderer*, int> m_rendererID;
};

int main(int, char*[])
{
	vtkNew<vtkRenderWindow> renderWindow;
	vtkNew<vtkRenderWindowInteractor> interactor;
	interactor->SetRenderWindow(renderWindow);
	renderWindow->SetSize(300, 300);
	renderWindow->SetWindowName("MultiViewPort");
	RenObserver obs;
	const int RenderCount = 3;
	for (int i=0; i<RenderCount; ++i)
	{
		vtkNew<vtkRenderer> renderer;
		double perc = static_cast<double>(i) / RenderCount;
		renderer->SetBackground(perc, perc, perc);
		renderer->SetViewport(perc, 0, static_cast<double>(i + 1) / RenderCount, 1);
		vtkNew<vtkSphereSource> sphereSource;
		vtkNew<vtkPolyDataMapper> mapper;
		mapper->SetInputConnection(sphereSource->GetOutputPort());
		vtkNew<vtkActor> actor;
		actor->SetMapper(mapper);
		actor->GetProperty()->SetColor(1-perc, 1-perc, 1-perc);
		renderer->AddActor(actor);
		obs.addRen(renderer, i);
		renderWindow->AddRenderer(renderer);
	}
	interactor->Initialize();
	renderWindow->Render();
	interactor->Start();
	return EXIT_SUCCESS;
}

Each time I interact with one of the renderers (that is, click (and drag) the mouse, etc.), the program’s output is:

EndEvent, r=0
EndEvent, r=1
EndEvent, r=2

So from these events I cannot tell with which renderer the user has interacted. There is one event per renderer, and the events always come in the same order, no matter which of the renderers actually was interacted with…

(Completely rewrote my original post, as I have more insight now.)