Index: uspace/lib/usbhid/include/usb/hid/iface.h
===================================================================
--- uspace/lib/usbhid/include/usb/hid/iface.h	(revision ef90ffb36a666fc9c6a9a42b1148e05fdc9c271e)
+++ uspace/lib/usbhid/include/usb/hid/iface.h	(revision e7079cfccf40b3535b85a699063f3ecc42490440)
@@ -38,6 +38,6 @@
 #include <sys/types.h>
 
-int usbhid_dev_get_event_length(int);
-int usbhid_dev_get_event(int, uint16_t *, uint16_t *, size_t, size_t *,
+int usbhid_dev_get_event_length(int, size_t *);
+int usbhid_dev_get_event(int, int32_t *, size_t, size_t *,
     unsigned int);
 
Index: uspace/lib/usbhid/src/hidiface.c
===================================================================
--- uspace/lib/usbhid/src/hidiface.c	(revision ef90ffb36a666fc9c6a9a42b1148e05fdc9c271e)
+++ uspace/lib/usbhid/src/hidiface.c	(revision e7079cfccf40b3535b85a699063f3ecc42490440)
@@ -46,5 +46,5 @@
  * @return Number of usages returned or negative error code.
  */
-int usbhid_dev_get_event_length(int dev_phone)
+int usbhid_dev_get_event_length(int dev_phone, size_t *size)
 {
 	if (dev_phone < 0) {
@@ -56,8 +56,8 @@
 	    IPC_M_USBHID_GET_EVENT_LENGTH, &len);
 	if (rc == EOK) {
-		return (int) len;
-	} else {
-		return rc;
+		*size = (size_t) len;
 	}
+	
+	return rc;
 }
 
@@ -74,18 +74,18 @@
  * @return Error code.
  */
-int usbhid_dev_get_event(int dev_phone, uint16_t *usage_pages, uint16_t *usages,
-    size_t usage_count, size_t *actual_usage_count, unsigned int flags)
+int usbhid_dev_get_event(int dev_phone, int32_t *buf, 
+    size_t size, size_t *actual_size, unsigned int flags)
 {
 	if (dev_phone < 0) {
 		return EINVAL;
 	}
-	if ((usage_pages == NULL) || (usages == NULL)) {
+	if ((buf == NULL)) {
 		return ENOMEM;
 	}
-	if (usage_count == 0) {
+	if (size == 0) {
 		return EINVAL;
 	}
 
-	size_t buffer_size = sizeof(uint16_t) * usage_count * 2;
+	size_t buffer_size =  size;
 	uint16_t *buffer = malloc(buffer_size);
 	if (buffer == NULL) {
@@ -128,13 +128,12 @@
 	}
 
-	size_t actual_size = IPC_GET_ARG2(data_request_call);
-	size_t items = actual_size / 2;
+	size_t act_size = IPC_GET_ARG2(data_request_call);
 
 	/* Copy the individual items. */
-	memcpy(usage_pages, buffer, items * sizeof(uint16_t));
-	memcpy(usages, buffer + items, items * sizeof(uint16_t));
+	memcpy(buf, buffer, act_size);
+//	memcpy(usages, buffer + items, items * sizeof(int32_t));
 
-	if (actual_usage_count != NULL) {
-		*actual_usage_count = items;
+	if (actual_size != NULL) {
+		*actual_size = act_size;
 	}
 
