diff --git a/src/conio/win32cio.c b/src/conio/win32cio.c
index 69fc70dd3269c337cc75f7580d8858e52f201abf..73a1a4f03fff1e12d92a883071373f63f469c896 100644
--- a/src/conio/win32cio.c
+++ b/src/conio/win32cio.c
@@ -110,7 +110,7 @@ int win32_kbhit(void)
 				if(input.Event.MouseEvent.dwEventFlags==MOUSE_MOVED) {
 					ciomouse_gotevent(CIOLIB_MOUSE_MOVE,input.Event.MouseEvent.dwMousePosition.X+1,input.Event.MouseEvent.dwMousePosition.Y+1);
 				}
-				if(!input.Event.MouseEvent.dwEventFlags) {
+				if(last_state != input.Event.MouseEvent.dwButtonState) {
 					switch(input.Event.MouseEvent.dwButtonState ^ last_state) {
 						case FROM_LEFT_1ST_BUTTON_PRESSED:
 							if(input.Event.MouseEvent.dwButtonState & FROM_LEFT_1ST_BUTTON_PRESSED)
@@ -202,7 +202,7 @@ int win32_getch(void)
 						if(input.Event.MouseEvent.dwEventFlags==MOUSE_MOVED) {
 							ciomouse_gotevent(CIOLIB_MOUSE_MOVE,input.Event.MouseEvent.dwMousePosition.X+1,input.Event.MouseEvent.dwMousePosition.Y+1);
 						}
-						if(!input.Event.MouseEvent.dwEventFlags) {
+						if(last_state != input.Event.MouseEvent.dwButtonState) {
 							switch(input.Event.MouseEvent.dwButtonState ^ last_state) {
 								case FROM_LEFT_1ST_BUTTON_PRESSED:
 									if(input.Event.MouseEvent.dwButtonState & FROM_LEFT_1ST_BUTTON_PRESSED)