Index: uspace/lib/drv/Makefile
===================================================================
--- uspace/lib/drv/Makefile	(revision e7079cfccf40b3535b85a699063f3ecc42490440)
+++ uspace/lib/drv/Makefile	(revision 4e78236243e90824326687be4b2be23bcc3def81)
@@ -40,5 +40,6 @@
 	generic/remote_usb.c \
 	generic/remote_pci.c \
-	generic/remote_usbhc.c
+	generic/remote_usbhc.c \
+	generic/remote_usbhid.c
 
 include $(USPACE_PREFIX)/Makefile.common
Index: uspace/lib/drv/generic/dev_iface.c
===================================================================
--- uspace/lib/drv/generic/dev_iface.c	(revision e7079cfccf40b3535b85a699063f3ecc42490440)
+++ uspace/lib/drv/generic/dev_iface.c	(revision 4e78236243e90824326687be4b2be23bcc3def81)
@@ -46,4 +46,6 @@
 #include "remote_pci.h"
 
+#include <stdio.h>
+
 static iface_dipatch_table_t remote_ifaces = {
 	.ifaces = {
@@ -59,5 +61,10 @@
 remote_iface_t *get_remote_iface(int idx)
 {
+	printf("get_remote_iface(): idx: %d\n", idx);
 	assert(is_valid_iface_idx(idx));
+	printf("remote iface: %p\n", remote_ifaces.ifaces[idx]);
+	
+	printf("remote_usbhid_iface ptr: %p\n", &remote_usbhid_iface);
+	
 	return remote_ifaces.ifaces[idx];
 }
@@ -66,4 +73,6 @@
 get_remote_method(remote_iface_t *rem_iface, sysarg_t iface_method_idx)
 {
+	printf("remote iface: %p\n", rem_iface);
+	printf("Method count: %d\n", rem_iface->method_count);
 	if (iface_method_idx >= rem_iface->method_count) {
 		return NULL;
Index: uspace/lib/drv/generic/driver.c
===================================================================
--- uspace/lib/drv/generic/driver.c	(revision e7079cfccf40b3535b85a699063f3ecc42490440)
+++ uspace/lib/drv/generic/driver.c	(revision 4e78236243e90824326687be4b2be23bcc3def81)
@@ -397,4 +397,5 @@
 			 * handling ("remote interface").
 			 */
+			printf("iface_idx: %d\n", iface_idx);
 			remote_iface_t *rem_iface = get_remote_iface(iface_idx);
 			assert(rem_iface != NULL);
Index: uspace/lib/drv/generic/remote_usbhid.c
===================================================================
--- uspace/lib/drv/generic/remote_usbhid.c	(revision e7079cfccf40b3535b85a699063f3ecc42490440)
+++ uspace/lib/drv/generic/remote_usbhid.c	(revision 4e78236243e90824326687be4b2be23bcc3def81)
@@ -36,4 +36,5 @@
 #include <errno.h>
 #include <assert.h>
+#include <stdio.h>
 
 #include "usbhid_iface.h"
@@ -58,5 +59,5 @@
 };
 
-usbhc_iface_t *usb_iface = (usbhc_iface_t *) iface;
+//usbhc_iface_t *usb_iface = (usbhc_iface_t *) iface;
 
 
@@ -75,12 +76,14 @@
 
 	size_t len = hid_iface->get_event_length(fun);
-	if (len == 0) {
-		len = EEMPTY;
-	}
-	if (len < 0) {
-		async_answer_0(callid, len);
-	} else {
-		async_answer_1(callid, EOK, len);
-	}
+//	if (len == 0) {
+//		len = EEMPTY;
+//	}
+	async_answer_1(callid, EOK, len);
+	
+//	if (len < 0) {
+//		async_answer_0(callid, len);
+//	} else {
+//		async_answer_1(callid, EOK, len);
+//	}
 }
 
Index: uspace/lib/drv/include/remote_usbhid.h
===================================================================
--- uspace/lib/drv/include/remote_usbhid.h	(revision e7079cfccf40b3535b85a699063f3ecc42490440)
+++ uspace/lib/drv/include/remote_usbhid.h	(revision 4e78236243e90824326687be4b2be23bcc3def81)
@@ -36,5 +36,5 @@
 #define LIBDRV_REMOTE_USBHID_H_
 
-remote_iface_t remote_usbhid_iface;
+extern remote_iface_t remote_usbhid_iface;
 
 #endif
Index: uspace/lib/usbhid/src/hidiface.c
===================================================================
--- uspace/lib/usbhid/src/hidiface.c	(revision e7079cfccf40b3535b85a699063f3ecc42490440)
+++ uspace/lib/usbhid/src/hidiface.c	(revision 4e78236243e90824326687be4b2be23bcc3def81)
@@ -86,4 +86,8 @@
 		return EINVAL;
 	}
+	
+//	if (size == 0) {
+//		return EOK;
+//	}
 
 	size_t buffer_size =  size;
