[Sugar-devel] [PATCH 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 09:54:53 EDT 2012
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..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
More information about the Sugar-devel
mailing list