diff -uF^[a-zA-Z_][a-z 	A-Z0-9_]*([^;]*$ sys/arch/x68k/dev/kbd.c.orig sys/arch/x68k/dev/kbd.c
--- sys/arch/x68k/dev/kbd.c.orig	Fri Dec  3 09:14:06 1999
+++ sys/arch/x68k/dev/kbd.c	Sun May 21 15:47:41 2000
@@ -326,12 +326,18 @@ kbdpoll(dev, events, p)
 kbdintr(arg)
 	void *arg;
 {
-	u_char c, in;
+	u_char c, st;
 	struct kbd_softc *k = arg; /* XXX */
 	struct firm_event *fe;
 	int put;
 
-	c = in = mfp_get_udr();
+	/* clear receiver error if any */
+	st = mfp_get_rsr();
+
+	c = mfp_get_udr();
+
+	if ((st & MFP_RSR_BF) == 0)
+		return 0;	/* intr caused by an err -- no char received */
 
 	/* if not in event mode, deliver straight to ite to process key stroke */
 	if (! k->sc_event_mode) {
