diff options
author | Tomeu Vizoso <tomeu@sugarlabs.org> | 2009-08-25 12:54:49 (GMT) |
---|---|---|
committer | Tomeu Vizoso <tomeu@sugarlabs.org> | 2009-08-25 12:54:49 (GMT) |
commit | 814eaf8255416f7db3267467a43dada205a94209 (patch) | |
tree | d235ed4eb8f6c181db3955386227ad982450ef6c /src/jarabe/view/keyhandler.py | |
parent | 56eace735feaf05e9ed52b6e2d19732e618194f7 (diff) |
Start new activity instance when Alt key is hold pressed #1129
Diffstat (limited to 'src/jarabe/view/keyhandler.py')
-rw-r--r-- | src/jarabe/view/keyhandler.py | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/src/jarabe/view/keyhandler.py b/src/jarabe/view/keyhandler.py index f81d24b..26a7f26 100644 --- a/src/jarabe/view/keyhandler.py +++ b/src/jarabe/view/keyhandler.py @@ -35,6 +35,7 @@ from jarabe.view.tabbinghandler import TabbingHandler from jarabe.model.shell import ShellModel from jarabe import config from jarabe.journal import journalactivity +from jarabe.desktop import homewindow _VOLUME_STEP = sound.VOLUME_STEP _VOLUME_MAX = 100 @@ -63,6 +64,8 @@ _actions_table = { 'XF86Search' : 'open_search', '<alt><shift>o' : 'open_search', '<alt><shift>s' : 'say_text', + 'Alt_L' : 'disable_resume_mode', + 'Alt_R' : 'disable_resume_mode', } SPEECH_DBUS_SERVICE = 'org.laptop.Speech' @@ -198,10 +201,17 @@ class KeyHandler(object): def handle_open_search(self, event_time): journalactivity.get_journal().focus_search() + def handle_disable_resume_mode(self, event_time): + # TODO: KeyHandler should be a singleton and interested parties + # would listen to it. That way it wouldn't need to reference half + # of the shell classes. + home_box = homewindow.get_instance().get_home_box() + home_box.set_resume_mode(False) + def _key_pressed_cb(self, grabber, keycode, state, event_time): key = grabber.get_key(keycode, state) logging.debug('_key_pressed_cb: %i %i %s', keycode, state, key) - if key: + if key is not None: self._key_pressed = key self._keycode_pressed = keycode self._keystate_pressed = state @@ -232,7 +242,23 @@ class KeyHandler(object): return False + def _is_resume_mode_keycode(self, keycode): + """See if the physical key pressed matches one of the keys that modify + the resume mode of the favorites view. + """ + keymap = gtk.gdk.keymap_get_default() + entries = keymap.get_entries_for_keycode(keycode) + for entry in entries: + if gtk.gdk.keyval_name(entry[0]) in ['Alt_L', 'Alt_R']: + return True + return False + def _key_released_cb(self, grabber, keycode, state, event_time): + logging.debug('_key_released_cb: %i %i' % (keycode, state)) + if self._is_resume_mode_keycode(keycode): + home_box = homewindow.get_instance().get_home_box() + home_box.set_resume_mode(True) + if self._tabbing_handler.is_tabbing(): # We stop tabbing and switch to the new window as soon as the # modifier key is raised again. |