diff --git a/lazy_player/__init__.py b/lazy_player/__init__.py
index 6781809..e6a3895 100644
--- a/lazy_player/__init__.py
+++ b/lazy_player/__init__.py
@@ -166,13 +166,25 @@ class MainWindow(Gtk.ApplicationWindow):
                 string_obj = cast(Gtk.StringObject, selected_item)
                 self.file_info_label.set_text(string_obj.get_string())
 
+    def _toggle_play_pause(self) -> None:
+        """Toggle between play and pause states"""
+        _, state, _ = self.pipeline.get_state(0)
+        if state == Gst.State.PLAYING:
+            self.pipeline.set_state(Gst.State.PAUSED)
+        else:
+            self.pipeline.set_state(Gst.State.PLAYING)
+
     def _on_video_key_pressed(
         self,
         keyval: int,
         keycode: int,
         state: Gdk.ModifierType,
     ) -> bool:
-        if keyval == Gdk.keyval_from_name("Escape"):
+        if keyval == Gdk.keyval_from_name("space"):
+            self._toggle_play_pause()
+            return True
+
+        elif keyval == Gdk.keyval_from_name("Escape"):
             self.pipeline.set_state(Gst.State.NULL)
             self.stack.set_visible_child_name("menu")
             self.list_view.grab_focus()