diff --git a/src/hu_stuff.c b/src/hu_stuff.c
index a1019e9ab7706431371d94bae609d982eb61a4fa..cd6e18b82356a0780ba5c92c909cba10ee26ccf1 100644
--- a/src/hu_stuff.c
+++ b/src/hu_stuff.c
@@ -1287,7 +1287,7 @@ boolean HU_Responder(event_t *ev)
 		c = (INT32)ev->data1;
 
 		// pasting. pasting is cool. chat is a bit limited, though :(
-		if (((c == 'v' || c == 'V') && ctrldown && ev->type == ev_textinput) && !CHAT_MUTE)
+		if (((c == 'v' || c == 'V') && ctrldown && ev->type == ev_keydown) && !CHAT_MUTE)
 		{
 			const char *paste = I_ClipboardPaste();
 			size_t chatlen;
diff --git a/src/sdl/i_video.c b/src/sdl/i_video.c
index 95c8c553ab313ed812f7a330c7f60889f232dbaf..2b4ecf2a5210b7a041ce52591577e71df8da98be 100644
--- a/src/sdl/i_video.c
+++ b/src/sdl/i_video.c
@@ -333,7 +333,7 @@ static INT32 Impl_SDL_Scancode_To_Keycode(SDL_Scancode code, Uint32 type)
 	}
 
 	// Do send keyup events to avoid stuck movement keys
-	if (type != SDL_KEYUP)
+	if (type != SDL_KEYUP && (!ctrldown))
 	{
 		// Lactozilla: console input
 		if (CON_AcceptInput())