From 52cdd25b95027678e1aaa2d29ce899cdfcc95e9c Mon Sep 17 00:00:00 2001 From: Manuel Kaufmann Date: Wed, 08 Aug 2012 13:52:13 +0000 Subject: Hack to allow SHIFT and ALT GR mask When SHIFT or ALT GR are pressed the characters on the keyboard change to show the correct symbols that are going to be typed. Signed-off-by: Manuel Kaufmann --- diff --git a/keyboard.py b/keyboard.py index 90cbf98..3a05248 100644 --- a/keyboard.py +++ b/keyboard.py @@ -506,14 +506,28 @@ class KeyboardWidget(KeyboardData, Gtk.DrawingArea): # Hack to get the current modifier state - which will not be represented by the event. # state = Gdk.device_get_core_pointer().get_state(self.get_window())[1] - if self.active_group != event.group or self.active_state != event.state: + # This is a NEW HACK for the Gtk3 version of Typing Turtle. I + # didn't find the way to translate the old hack into a new one + state = event.state + if event.hardware_keycode in (50, 62): + if event.type == Gdk.EventType.KEY_PRESS: + state |= Gdk.ModifierType.SHIFT_MASK + else: + state ^= Gdk.ModifierType.SHIFT_MASK + if event.hardware_keycode == 92: + if event.type == Gdk.EventType.KEY_PRESS: + state |= Gdk.ModifierType.MOD5_MASK + else: + state ^= Gdk.ModifierType.MOD5_MASK + + if self.active_group != event.group or self.active_state != state: self.active_group = event.group - self.active_state = event.state + self.active_state = state self.queue_draw() if event.string: - sig = self.format_key_sig(event.hardware_keycode, event.state, event.group) + sig = self.format_key_sig(event.hardware_keycode, state, event.group) if not self.letter_map.has_key(sig): self.letter_map[sig] = event.string self.queue_draw() -- cgit v0.9.1