diff options
author | Robert Deaton <rdeaton@udel.edu> | 2012-04-10 00:51:30 (GMT) |
---|---|---|
committer | Robert Deaton <rdeaton@udel.edu> | 2012-04-10 00:51:30 (GMT) |
commit | 44544562360aa77eea381b92afff9e3eb9eeda8e (patch) | |
tree | 53c412bc8cba68bf90aa7f8b96f86e4d5b14d5be | |
parent | db3f934e9aea80f9effc98ba68516d69e7856a81 (diff) |
A fix for a timing error with keys and modifier keys.
Signed-off-by: Robert Deaton <rdeaton@udel.edu>
-rw-r--r-- | sugargame/event.py | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/sugargame/event.py b/sugargame/event.py index cd8f925..d3d4881 100644 --- a/sugargame/event.py +++ b/sugargame/event.py @@ -82,6 +82,7 @@ class Translator(object): self.__held = set() self.__held_time_left = {} self.__held_last_time = {} + self.__held_last_value = {} self.__tick_id = None def hook_pygame(self): @@ -115,24 +116,26 @@ class Translator(object): pygame.event.post(pygame.event.Event(pygame.QUIT)) def _keydown_cb(self, widget, event): - key = event.keyval + key = event.hardware_keycode + keyval = event.keyval if key in self.__held: return True else: if self.__repeat[0] is not None: self.__held_last_time[key] = pygame.time.get_ticks() self.__held_time_left[key] = self.__repeat[0] + self.__held_last_value[key] = keyval self.__held.add(key) - return self._keyevent(widget, event, pygame.KEYDOWN) def _keyup_cb(self, widget, event): - key = event.keyval + key = event.hardware_keycode if self.__repeat[0] is not None: if key in self.__held: # This is possibly false if set_repeat() is called with a key held del self.__held_time_left[key] del self.__held_last_time[key] + del self.__held_last_value[key] self.__held.discard(key) return self._keyevent(widget, event, pygame.KEYUP) @@ -229,7 +232,7 @@ class Translator(object): self.__held_time_left[key] -= delta if self.__held_time_left[key] <= 0: self.__held_time_left[key] = self.__repeat[1] - self._keyevent(None, _MockEvent(key), pygame.KEYDOWN) + self._keyevent(None, _MockEvent(self.__held_last_value[key]), pygame.KEYDOWN) return True |