--- linux-source-2.6.24.orig/drivers/hid/hid-input.c	2008-05-01 21:21:19.000000000 +1200
+++ linux-source-2.6.24/drivers/hid/hid-input.c	2008-05-01 22:54:57.000000000 +1200
@@ -512,7 +512,7 @@
 			break;
 
 		case HID_UP_LED:
-
+			if (! (device->quirks & HID_QUIRK_HERC_LED_MAPPING)) {
 			switch (usage->hid & 0xffff) {                        /* HID-Value:                   */
 				case 0x01:  map_led (LED_NUML);     break;    /*   "Num Lock"                 */
 				case 0x02:  map_led (LED_CAPSL);    break;    /*   "Caps Lock"                */
@@ -528,8 +528,31 @@
 
 				default: goto ignore;
 			}
+			} else {
+				/* The herc has an unusal LED mapping going on that is 
+				   otherwise ignored  by the kernel. This could be changed
+				   to use math. */
+				switch (usage->hid & 0xffff) {
+					case 0x24:  map_led (0x00); break;
+					case 0x25:  map_led (0x01); break;
+					case 0x26:  map_led (0x02); break;
+					case 0x27:  map_led (0x03); break;
+					case 0x28:  map_led (0x04); break;
+					case 0x29:  map_led (0x05); break;
+					case 0x2a:  map_led (0x06); break;
+					case 0x2b:  map_led (0x07); break;
+					case 0x2c:  map_led (0x08); break;
+					case 0x2d:  map_led (0x09); break;
+					case 0x2e:  map_led (0x0a); break;
+					case 0x2f:  map_led (0x0b); break;
+					case 0x30:  map_led (0x0c); break;
+					case 0x31:  map_led (0x0d); break;
+					case 0x32:  map_led (0x0e); break;
+					case 0x33:  map_led (0x0f); break;
+					default: goto ignore;
+				}
+			}
 			break;
-
 		case HID_UP_DIGITIZER:
 
 			switch (usage->hid & 0xff) {
--- linux-source-2.6.24.orig/drivers/hid/usbhid/hid-quirks.c	2008-05-01 21:21:19.000000000 +1200
+++ linux-source-2.6.24/drivers/hid/usbhid/hid-quirks.c	2008-05-01 22:46:21.000000000 +1200
@@ -369,6 +369,9 @@
 #define USB_VENDOR_ID_YEALINK		0x6993
 #define USB_DEVICE_ID_YEALINK_P1K_P4K_B2K	0xb001
 
+#define USB_VENDOR_ID_GUILLEMOT			0x06f8
+#define USB_DEVICE_ID_HERC_DJ_CONTROL_MP3	0xd001
+
 /*
  * Alphabetically sorted blacklist by quirk type.
  */
@@ -642,6 +645,7 @@
 	{ USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_63, HID_QUIRK_IGNORE },
 	{ USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_64, HID_QUIRK_IGNORE },
 	{ USB_VENDOR_ID_NATIONAL_SEMICONDUCTOR, USB_DEVICE_ID_N_S_HARMONY, HID_QUIRK_IGNORE },
+	{ USB_VENDOR_ID_GUILLEMOT, USB_DEVICE_ID_HERC_DJ_CONTROL_MP3, HID_QUIRK_HERC_LED_MAPPING },
 
 	{ 0, 0 }
 };
--- linux-source-2.6.24.orig/include/linux/hid.h	2008-05-01 21:21:44.000000000 +1200
+++ linux-source-2.6.24/include/linux/hid.h	2008-05-01 22:47:32.000000000 +1200
@@ -281,6 +281,7 @@
 #define HID_QUIRK_LOGITECH_IGNORE_DOUBLED_WHEEL	0x00400000
 #define HID_QUIRK_LOGITECH_EXPANDED_KEYMAP	0x00800000
 #define HID_QUIRK_IGNORE_HIDINPUT		0x01000000
+#define HID_QUIRK_HERC_LED_MAPPING		0x02000000
 
 /*
  * Separate quirks for runtime report descriptor fixup
