Argument for: Simplifies some of the logic in `DOMListener` if mouse and keyboard handling are separate. Argument against: There is much in common between the two cases (can be addressed by subclassing). See https://github.com/jupyter-widgets/ipywidgets/pull/1727#pullrequestreview-69144328