Index: genarch/src/i8042/i8042.c
===================================================================
--- genarch/src/i8042/i8042.c	(revision 2f249e795e901d688daf785204dd2c8dac6a4b8f)
+++ genarch/src/i8042/i8042.c	(revision f260256376448c046ff04aba6b7053dd023221c2)
@@ -325,10 +325,12 @@
 	__u8 x;
 
+	while ((i8042_status_read() & i8042_BUFFER_FULL_MASK)) {
+		x = i8042_data_read();
+		if (x & KEY_RELEASE)
+			key_released(x ^ KEY_RELEASE);
+		else
+			key_pressed(x);
+	}
 	trap_virtual_eoi();
-	x = i8042_data_read();
-	if (x & KEY_RELEASE)
-		key_released(x ^ KEY_RELEASE);
-	else
-		key_pressed(x);
 }
 
@@ -542,5 +544,5 @@
 	while(!(ch = active_read_buff_read())) {
 		__u8 x;
-		while (!((x=i8042_status_read() & i8042_BUFFER_FULL_MASK)))
+		while (!(i8042_status_read() & i8042_BUFFER_FULL_MASK))
 			;
 		x = i8042_data_read();
