[Sugar-devel] [PATCH v2 Terminal] Prevent Sugar capture <Ctrl>z and <Ctrl>q send them to vte SL #3222 OLPC #11836 Used the same approach than the solution for the Escape capture when the activity is fullscreen mode. Refactored the method to allow this keystrokes.

Manuel Quiñones manuq at laptop.org
Thu May 10 10:05:42 EDT 2012


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



More information about the Sugar-devel mailing list