Index: uspace/lib/usb/include/usb/request.h
===================================================================
--- uspace/lib/usb/include/usb/request.h	(revision 3a1aa20125303a64f338d843fa8ecf9271ee30a1)
+++ uspace/lib/usb/include/usb/request.h	(revision 86341e250e53daae8e228df98df953c885145b1f)
@@ -96,7 +96,8 @@
 int usb_request_set_address(usb_endpoint_pipe_t *, usb_address_t);
 int usb_request_get_descriptor(usb_endpoint_pipe_t *, usb_request_type_t,
-    uint8_t, uint8_t, uint16_t, void *, size_t, size_t *);
+    usb_request_recipient_t, uint8_t, uint8_t, uint16_t, void *, size_t, 
+    size_t *);
 int usb_request_get_descriptor_alloc(usb_endpoint_pipe_t *, usb_request_type_t,
-    uint8_t, uint8_t, uint16_t, void **, size_t *);
+    usb_request_recipient_t, uint8_t, uint8_t, uint16_t, void **, size_t *);
 int usb_request_get_device_descriptor(usb_endpoint_pipe_t *,
     usb_standard_device_descriptor_t *);
Index: uspace/lib/usb/src/hidparser.c
===================================================================
--- uspace/lib/usb/src/hidparser.c	(revision 3a1aa20125303a64f338d843fa8ecf9271ee30a1)
+++ uspace/lib/usb/src/hidparser.c	(revision 86341e250e53daae8e228df98df953c885145b1f)
@@ -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 3a1aa20125303a64f338d843fa8ecf9271ee30a1)
+++ uspace/lib/usb/src/request.c	(revision 86341e250e53daae8e228df98df953c885145b1f)
@@ -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) {
