--- drivers/macintosh/adbhid.c~	2005-12-09 19:19:36.000000000 +0100
+++ drivers/macintosh/adbhid.c	2005-12-10 11:54:32.000000000 +0100
@@ -285,17 +285,28 @@
 {
 	struct adbhid *ahid = adbhid[id];
 	int up_flag;
+	static int caps_lock_down = 0;
+
+	if (keycode == ADB_KEY_CAPSLOCK) {
+		caps_lock_down = 0x80;
+	} else if (keycode == 0xff) {
+		keycode = ADB_KEY_CAPSLOCK | caps_lock_down;
+		caps_lock_down = 0x0;
+	}
 
 	up_flag = (keycode & 0x80);
 	keycode &= 0x7f;
 
 	switch (keycode) {
 	case ADB_KEY_CAPSLOCK: /* Generate down/up events for CapsLock everytime. */
+		break;
+/*
 		input_regs(ahid->input, regs);
 		input_report_key(ahid->input, KEY_CAPSLOCK, 1);
 		input_report_key(ahid->input, KEY_CAPSLOCK, 0);
 		input_sync(ahid->input);
 		return;
+*/
 #ifdef CONFIG_PPC_PMAC
 	case ADB_KEY_POWER_OLD: /* Power key on PBook 3400 needs remapping */
 		switch(pmac_call_feature(PMAC_FTR_GET_MB_INFO,
