diff --git a/Demos/Device/ClassDriver/Keyboard/Keyboard.c b/Demos/Device/ClassDriver/Keyboard/Keyboard.c
index 2918f5a67aab799a84697645ac92d902b30d18c3..002d24ac967a4ace6811d7a3e29a003a05fb66ad 100644
--- a/Demos/Device/ClassDriver/Keyboard/Keyboard.c
+++ b/Demos/Device/ClassDriver/Keyboard/Keyboard.c
@@ -144,7 +144,6 @@ bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDIn
 	uint8_t JoyStatus_LCL    = Joystick_GetStatus();
 	uint8_t ButtonStatus_LCL = Buttons_GetStatus();
 
-	static uint8_t PrevUsedKeyCodes;
 	uint8_t UsedKeyCodes = 0;
 	
 	if (JoyStatus_LCL & JOY_UP)
@@ -162,15 +161,6 @@ bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDIn
 	  
 	if (ButtonStatus_LCL & BUTTONS_BUTTON1)
 	  KeyboardReport->KeyCode[UsedKeyCodes++] = 0x09; // F
-	
-	/* The host will ignore the device if we add a new keycode to the report while another keycode is currently
-	 * being sent (i.e. the user has pressed another key while a key is already being pressed) - we need to intersperse
-	 * the two reports with a zeroed report to force the host to accept the additional keys */
-	if (UsedKeyCodes != PrevUsedKeyCodes)
-	{
-		memset(KeyboardReport, sizeof(USB_KeyboardReport_Data_t), 0x00);
-		PrevUsedKeyCodes = UsedKeyCodes;
-	}
 
 	*ReportSize = sizeof(USB_KeyboardReport_Data_t);
 	return false;
diff --git a/Demos/Device/LowLevel/Keyboard/Keyboard.c b/Demos/Device/LowLevel/Keyboard/Keyboard.c
index 33a6d840ad7cb6acd4e01f5c0ed0df23306f1350..4e7921f70812b902b036eaf0e4c138c21e03c724 100644
--- a/Demos/Device/LowLevel/Keyboard/Keyboard.c
+++ b/Demos/Device/LowLevel/Keyboard/Keyboard.c
@@ -258,11 +258,11 @@ void EVENT_USB_Device_StartOfFrame(void)
  */
 void CreateKeyboardReport(USB_KeyboardReport_Data_t* ReportData)
 {
-	static uint8_t PrevUsedKeyCodes;
-	uint8_t UsedKeyCodes      = 0;
 	uint8_t JoyStatus_LCL     = Joystick_GetStatus();
 	uint8_t ButtonStatus_LCL  = Buttons_GetStatus();
 
+	uint8_t UsedKeyCodes      = 0;
+
 	/* Clear the report contents */
 	memset(ReportData, 0, sizeof(USB_KeyboardReport_Data_t));
 	
@@ -281,15 +281,6 @@ void CreateKeyboardReport(USB_KeyboardReport_Data_t* ReportData)
 	  
 	if (ButtonStatus_LCL & BUTTONS_BUTTON1)
 	  ReportData->KeyCode[UsedKeyCodes++] = 0x09; // F
-	
-	/* The host will ignore the device if we add a new keycode to the report while another keycode is currently
-	 * being sent (i.e. the user has pressed another key while a key is already being pressed) - we need to intersperse
-	 * the two reports with a zeroed report to force the host to accept the additional keys */
-	if (UsedKeyCodes != PrevUsedKeyCodes)
-	{
-		memset(ReportData, 0, sizeof(USB_KeyboardReport_Data_t));
-		PrevUsedKeyCodes = UsedKeyCodes;
-	}
 }
 
 /** Processes a received LED report, and updates the board LEDs states to match.
diff --git a/LUFA/ManPages/ChangeLog.txt b/LUFA/ManPages/ChangeLog.txt
index c6ed0ee43c9208c5b5f3415a34bc97b51a35ba7c..28c2a292db3c4df55a5331fabbd75806d4fc46b2 100644
--- a/LUFA/ManPages/ChangeLog.txt
+++ b/LUFA/ManPages/ChangeLog.txt
@@ -8,7 +8,12 @@
   *
   *  \section Sec_ChangeLogXXXXXX Version XXXXXX
   *
-  *  <b>There is no changelog information for this version.</b>
+  *  <b>New:</b>
+  *  - Added activity LED indicators to the AVRISP project to indicate when the device is busy processing a command
+  *
+  *  <b>Changed:</b>
+  *  - Removed code in the Keyboard demos to send zeroed reports between two reports with differing numbers of keycodes
+  *    as this relied on non-standard OS driver behaviour to repeat key groups
   *
   *  \section Sec_ChangeLog091122 Version 091122
   *