From c65a7fb340686c3c99726d862db9bf2d48c4a297 Mon Sep 17 00:00:00 2001 From: Grant Sanderson Date: Wed, 6 Jan 2021 12:47:13 -0800 Subject: [PATCH] Add Window.is_key_pressed method --- manimlib/window.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/manimlib/window.py b/manimlib/window.py index 63759307..7d7503d9 100644 --- a/manimlib/window.py +++ b/manimlib/window.py @@ -21,6 +21,8 @@ class Window(PygletWindow): if "position" in kwargs: self.position = kwargs["position"] + self.pressed_keys = set() + mglw.activate_context(window=self) self.timer = Timer() self.config = mglw.WindowConfig(ctx=self.ctx, wnd=self, timer=self.timer) @@ -58,14 +60,16 @@ class Window(PygletWindow): offset = self.pixel_coords_to_space_coords(x_offset, y_offset, relative=True) self.scene.on_mouse_scroll(point, offset) - def on_key_release(self, symbol, modifiers): - super().on_key_release(symbol, modifiers) - self.scene.on_key_release(symbol, modifiers) - def on_key_press(self, symbol, modifiers): + self.pressed_keys.add(symbol) # Modifiers? super().on_key_press(symbol, modifiers) self.scene.on_key_press(symbol, modifiers) + def on_key_release(self, symbol, modifiers): + self.pressed_keys.difference_update({symbol}) # Modifiers? + super().on_key_release(symbol, modifiers) + self.scene.on_key_release(symbol, modifiers) + def on_resize(self, width: int, height: int): super().on_resize(width, height) self.scene.on_resize(width, height) @@ -81,3 +85,6 @@ class Window(PygletWindow): def on_close(self): super().on_close() self.scene.on_close() + + def is_key_pressed(self, symbol): + return (symbol in self.pressed_keys)