[Sugar-devel] [PATCH v2 Terminal] Prevent Sugar capture <Ctrl>z and <Ctrl>q send them to vte SL #3222 OLPC #11836

Manuel Quiñones manuq at laptop.org
Thu May 10 16:21:50 EDT 2012


The latest is the one, sorry for the mistake.

/me thinks this proccess is too error-prone.

2012/5/10 Manuel Quiñones <manuq at laptop.org>:
> 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 <manuq at laptop.org>
> Reviewed-by: James Cameron <quozl at laptop.org>
> Tested-by: James Cameron <quozl at laptop.org>
> ---
>  terminal.py |   23 +++++++++++++++++++----
>  1 files changed, 19 insertions(+), 4 deletions(-)
>
> diff --git a/terminal.py b/terminal.py
> index 6de7500..ee46fdc 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 drop 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
>



-- 
.. manuq ..


More information about the Sugar-devel mailing list