How can I set/change the CommandMap in a SimpleFocusListWalker? 'up' and 'down' keystrokes are associated with changing the focus by default.
I'd like to modify these to something else.
Is this possible?
One easy and effective solution is to override the keypress method of ListBox and substitute the keys:
import urwid
class MyBox(urwid.ListBox):
def keypress(self, size, key):
if key in {'up', 'down'}:
print('use (shift) tab to move cursor.')
return
key_map = {
"shift tab": "up",
"tab": "down",
}
super().keypress(size, key_map[key])
button_list = [urwid.Button(str(k)) for k in range(10)]
urwid.MainLoop(MyBox(button_list)).run()
Using the built in keypress method is preferable, as it has niceties like skipping urwid.Divider() widgets and won't allow to focus to go out of bounds.