Index: uspace/lib/usb/src/hidparser.c
===================================================================
--- uspace/lib/usb/src/hidparser.c	(revision d972534030c0c8c8ff0b6e219a0562629b820016)
+++ uspace/lib/usb/src/hidparser.c	(revision 37b1651de7d2b2fb0e5e2ee69dd1cfbdc338bfe1)
@@ -144,9 +144,9 @@
 int usb_hid_boot_keyboard_output_report(uint8_t leds, uint8_t *data, size_t size)
 {
-	if(size < 2){
+	if (size < 1){
 		return -1;
 	}
 
-	data[1] = leds;
+	data[0] = leds;
 	return EOK;
 }
Index: uspace/lib/usb/src/request.c
===================================================================
--- uspace/lib/usb/src/request.c	(revision d972534030c0c8c8ff0b6e219a0562629b820016)
+++ uspace/lib/usb/src/request.c	(revision 37b1651de7d2b2fb0e5e2ee69dd1cfbdc338bfe1)
@@ -36,4 +36,5 @@
 #include <errno.h>
 #include <assert.h>
+#include <usb/debug.h>
 
 #define MAX_DATA_LENGTH ((size_t)(0xFFFF))
@@ -209,5 +210,5 @@
  */
 int usb_request_get_descriptor(usb_endpoint_pipe_t *pipe,
-    usb_request_type_t request_type,
+    usb_request_type_t request_type, usb_request_recipient_t recipient,
     uint8_t descriptor_type, uint8_t descriptor_index,
     uint16_t language,
@@ -224,5 +225,5 @@
 
 	return usb_control_request_get(pipe,
-	    request_type, USB_REQUEST_RECIPIENT_DEVICE,
+	    request_type, recipient,
 	    USB_DEVREQ_GET_DESCRIPTOR,
 	    wValue, language,
@@ -242,5 +243,5 @@
  */
 int usb_request_get_descriptor_alloc(usb_endpoint_pipe_t * pipe,
-    usb_request_type_t request_type,
+    usb_request_type_t request_type, usb_request_recipient_t recipient,
     uint8_t descriptor_type, uint8_t descriptor_index,
     uint16_t language,
@@ -258,5 +259,5 @@
 	uint8_t tmp_buffer[1];
 	size_t bytes_transfered;
-	rc = usb_request_get_descriptor(pipe, request_type,
+	rc = usb_request_get_descriptor(pipe, request_type, recipient,
 	    descriptor_type, descriptor_index, language,
 	    &tmp_buffer, 1, &bytes_transfered);
@@ -283,5 +284,5 @@
 	}
 
-	rc = usb_request_get_descriptor(pipe, request_type,
+	rc = usb_request_get_descriptor(pipe, request_type, recipient,
 	    descriptor_type, descriptor_index, language,
 	    buffer, size, &bytes_transfered);
@@ -320,6 +321,6 @@
 	usb_standard_device_descriptor_t descriptor_tmp;
 	int rc = usb_request_get_descriptor(pipe,
-	    USB_REQUEST_TYPE_STANDARD, USB_DESCTYPE_DEVICE,
-	    0, 0,
+	    USB_REQUEST_TYPE_STANDARD, USB_REQUEST_RECIPIENT_DEVICE, 
+	    USB_DESCTYPE_DEVICE, 0, 0,
 	    &descriptor_tmp, sizeof(descriptor_tmp),
 	    &actually_transferred);
@@ -366,6 +367,6 @@
 	usb_standard_configuration_descriptor_t descriptor_tmp;
 	int rc = usb_request_get_descriptor(pipe,
-	    USB_REQUEST_TYPE_STANDARD, USB_DESCTYPE_CONFIGURATION,
-	    index, 0,
+	    USB_REQUEST_TYPE_STANDARD, USB_REQUEST_RECIPIENT_DEVICE,
+	    USB_DESCTYPE_CONFIGURATION, index, 0,
 	    &descriptor_tmp, sizeof(descriptor_tmp),
 	    &actually_transferred);
@@ -406,6 +407,6 @@
 
 	return usb_request_get_descriptor(pipe,
-	    USB_REQUEST_TYPE_STANDARD, USB_DESCTYPE_CONFIGURATION,
-	    index, 0,
+	    USB_REQUEST_TYPE_STANDARD, USB_REQUEST_RECIPIENT_DEVICE,
+	    USB_DESCTYPE_CONFIGURATION, index, 0,
 	    descriptor, descriptor_size, actual_size);
 }
@@ -452,5 +453,6 @@
 	size_t string_descriptor_size = 0;
 	rc = usb_request_get_descriptor_alloc(pipe,
-	    USB_REQUEST_TYPE_STANDARD, USB_DESCTYPE_STRING, 0, 0,
+	    USB_REQUEST_TYPE_STANDARD, USB_REQUEST_RECIPIENT_DEVICE,
+	    USB_DESCTYPE_STRING, 0, 0,
 	    (void **) &string_descriptor, &string_descriptor_size);
 	if (rc != EOK) {
@@ -531,6 +533,6 @@
 	size_t string_size;
 	rc = usb_request_get_descriptor_alloc(pipe,
-	    USB_REQUEST_TYPE_STANDARD, USB_DESCTYPE_STRING,
-	    index, uint16_host2usb(lang),
+	    USB_REQUEST_TYPE_STANDARD, USB_REQUEST_RECIPIENT_DEVICE,
+	    USB_DESCTYPE_STRING, index, uint16_host2usb(lang),
 	    (void **) &string, &string_size);
 	if (rc != EOK) {
