diff --git a/src/module/module_sdl2.c b/src/module/module_sdl2.c
index 4de7b6df06d3d9bf6d84bd479ace1cbc1234ecff..490a0feda7841041ec8152dbdef648e1bac4e08b 100644
--- a/src/module/module_sdl2.c
+++ b/src/module/module_sdl2.c
@@ -338,10 +338,8 @@ loop:
         state = SDL_GetKeyboardState(NULL);
         ctrl = state[SDL_SCANCODE_LCTRL] || state[SDL_SCANCODE_RCTRL];
 
-        if (ctrl && event.key.keysym.sym == SDLK_SPACE) {
-            const char *cmd_pause[] = { "cycle", "pause", NULL };
-            mpv_command_async((mpv_handle *) sdl2->mpv, 0, cmd_pause);
-        }
+        if (ctrl && event.key.keysym.sym == SDLK_SPACE)
+            lkt_queue_send(sdl2->queue, lkt_event_play_toggle, LKT_PLAY_TOGGLE);
 
         else if (event.key.keysym.sym == SDLK_n && ctrl)
             lkt_queue_send(sdl2->queue, lkt_event_play_next, NULL);
diff --git a/src/module/mpv.c b/src/module/mpv.c
index b714f5cfb07c93fc6e38fbb2060d8a422a3444f3..4d92ecc08dab27b3c8d56010765f829f5c399006 100644
--- a/src/module/mpv.c
+++ b/src/module/mpv.c
@@ -166,12 +166,12 @@ loop:
     switch (event->event_id) {
     case MPV_EVENT_PAUSE:
         *state = STATE_PAUSE;
-        lkt_queue_send(queue, lkt_event_play_toggle, LKT_PLAY_TOGGLE);
+        lkt_queue_send(queue, lkt_event_play_toggle, LKT_PLAY_PAUSE);
         break;
 
     case MPV_EVENT_UNPAUSE:
         *state = STATE_PLAY;
-        lkt_queue_send(queue, lkt_event_play_toggle, LKT_PLAY_TOGGLE);
+        lkt_queue_send(queue, lkt_event_play_toggle, LKT_PLAY_PLAY);
         break;
 
     case MPV_EVENT_SHUTDOWN:
diff --git a/src/net/listen.c b/src/net/listen.c
index 380cebe9dc8eab8262ada15a31a1b6cbd6ee0dbe..a1f1653d79bf314a012edfb45f886fc39610f03c 100644
--- a/src/net/listen.c
+++ b/src/net/listen.c
@@ -744,9 +744,12 @@ redo:
 
     case lkt_event_play_toggle:
         switch ((size_t) evt.attr) {
-        /* FIXME: Don't toggle with the PLAY/PAUSE commands */
         case __LKT_PLAY_PAUSE:
+            database_queue_set_paused(srv->db, 1); /* Set to pause */
+            break;
         case __LKT_PLAY_PLAY:
+            database_queue_set_paused(srv->db, 0); /* Set to play */
+            break;
         case __LKT_PLAY_TOGGLE:
             database_queue_toggle_pause(srv->db);
             break;