Used the same approach than the solution for the Escape capture when the activity is fullscreen mode. Refactored the method to allow this keystrokes.
This fixes http://dev.laptop.org/ticket/11836 and http://bugs.sugarlabs.org/ticket/3222 . Signed-off-by: Manuel Quiñones <ma...@laptop.org> Reviewed-by: James Cameron <qu...@laptop.org> Tested-by: James Cameron <qu...@laptop.org> --- terminal.py | 23 +++++++++++++++++++---- 1 files changed, 19 insertions(+), 4 deletions(-) diff --git a/terminal.py b/terminal.py index 6de7500..2488b5b 100644 --- a/terminal.py +++ b/terminal.py @@ -380,15 +380,30 @@ class TerminalActivity(activity.Activity): vt.fork_command("/bin/su", ('/bin/su', '-')) def __key_press_cb(self, window, event): - # Escape keypresses are routed directly to the vte and then dropped. - # This hack prevents Sugar from hijacking them and canceling - # fullscreen mode. - if gtk.gdk.keyval_name(event.keyval) == 'Escape': + """Route some keypresses directly to the vte and then drom them. + + This prevents Sugar from hijacking events that are useful in + the vte. + + """ + + def event_to_vt(event): current_page = self._notebook.get_current_page() vt = self._notebook.get_nth_page(current_page).vt vt.event(event) + + key_name = gtk.gdk.keyval_name(event.keyval) + + # Escape is used in Sugar to cancel fullscreen mode. + if key_name == 'Escape': + event_to_vt(event) return True + elif event.get_state() & gtk.gdk.CONTROL_MASK: + if key_name in ['z', 'q']: + event_to_vt(event) + return True + return False def read_file(self, file_path): -- 1.7.7.6 _______________________________________________ Sugar-devel mailing list Sugar-devel@lists.sugarlabs.org http://lists.sugarlabs.org/listinfo/sugar-devel