SystemKeyboardInput::SystemKeyboardInput(Root &r, Input::Keyboard &k):
InputMethod(r),
- keyboard(k),
- modifier_state(0)
+ keyboard(k)
{
keyboard.signal_button_press.connect(sigc::mem_fun(this, &SystemKeyboardInput::key_press));
keyboard.signal_button_release.connect(sigc::mem_fun(this, &SystemKeyboardInput::key_release));
case Input::KEY_RIGHT: return root.navigate(NAV_RIGHT);
case Input::KEY_UP: return root.navigate(NAV_UP);
case Input::KEY_DOWN: return root.navigate(NAV_DOWN);
- case Input::KEY_TAB: return root.navigate(NAV_NEXT);
+ case Input::KEY_TAB: return root.navigate((modifier_state&MOD_SHIFT) ? NAV_PREVIOUS : NAV_NEXT);
case Input::KEY_SPACE: return root.navigate(NAV_ACTIVATE);
case Input::KEY_ENTER: return root.navigate(NAV_ACCEPT);
case Input::KEY_ESC: return root.navigate(NAV_CANCEL);