This is implemented by a callout to the widget's existing handler for
key_up and key_down events, and letting the key_* event propagate into
an appropriate place where it's handled as the user's input. Reusing
that handler makes it possible to work in a generic manner, so the code
has no builtin knowledge of the type or layout of the class it's
operating on. The same code is used for project listing, change listing,
single change history view and a diff view as well.