Index: uspace/srv/console/Makefile
===================================================================
--- uspace/srv/console/Makefile	(revision c145bc2fc737a941e2d7e0c94b3479d3c11bb93d)
+++ uspace/srv/console/Makefile	(revision e795203e174ecc5e901f6b8f8833f9bd4364e51b)
@@ -35,5 +35,5 @@
 include $(LIBC_PREFIX)/Makefile.toolchain
 
-CFLAGS += -I. -I../kbd/include -I../fb
+CFLAGS += -I. -I../fb
 
 LIBS = $(LIBC_PREFIX)/libc.a
@@ -47,5 +47,5 @@
 	console.c \
 	screenbuffer.c \
-	../kbd/generic/keybuffer.c \
+	keybuffer.c \
 	gcons.c
 
Index: uspace/srv/console/console.c
===================================================================
--- uspace/srv/console/console.c	(revision c145bc2fc737a941e2d7e0c94b3479d3c11bb93d)
+++ uspace/srv/console/console.c	(revision e795203e174ecc5e901f6b8f8833f9bd4364e51b)
@@ -36,5 +36,5 @@
 #include <fb.h>
 #include <ipc/ipc.h>
-#include <kbd.h>
+#include <ipc/kbd.h>
 #include <io/keycode.h>
 #include <ipc/fb.h>
Index: uspace/srv/console/keybuffer.c
===================================================================
--- uspace/srv/console/keybuffer.c	(revision e795203e174ecc5e901f6b8f8833f9bd4364e51b)
+++ uspace/srv/console/keybuffer.c	(revision e795203e174ecc5e901f6b8f8833f9bd4364e51b)
@@ -0,0 +1,132 @@
+/*
+ * Copyright (c) 2006 Josef Cejka
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ * - The name of the author may not be used to endorse or promote products
+ *   derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/** @addtogroup kbdgen
+ * @brief HelenOS generic uspace keyboard handler.
+ * @ingroup kbd
+ * @{
+ */
+/** @file
+ */
+
+#include <keybuffer.h>
+#include <futex.h>
+
+atomic_t keybuffer_futex = FUTEX_INITIALIZER;
+
+/** Clear key buffer.
+ */
+void keybuffer_free(keybuffer_t *keybuffer)
+{
+	futex_down(&keybuffer_futex);
+	keybuffer->head = 0;
+	keybuffer->tail = 0;
+	keybuffer->items = 0;
+	futex_up(&keybuffer_futex);
+}
+
+/** Key buffer initialization.
+ *
+ */
+void keybuffer_init(keybuffer_t *keybuffer)
+{
+	keybuffer_free(keybuffer);
+}
+
+/** Get free space in buffer.
+ *
+ * This function is useful for processing some scancodes that are translated
+ * to more than one character.
+ *
+ * @return empty buffer space
+ *
+ */
+size_t keybuffer_available(keybuffer_t *keybuffer)
+{
+	return KEYBUFFER_SIZE - keybuffer->items;
+}
+
+/**
+ *
+ * @return nonzero, if buffer is not empty.
+ *
+ */
+bool keybuffer_empty(keybuffer_t *keybuffer)
+{
+	return (keybuffer->items == 0);
+}
+
+/** Push key event to key buffer.
+ *
+ * If the buffer is full, the event is ignored.
+ *
+ * @param keybuffer The keybuffer.
+ * @param ev        The event to push.
+ *
+ */
+void keybuffer_push(keybuffer_t *keybuffer, const console_event_t *ev)
+{
+	futex_down(&keybuffer_futex);
+	
+	if (keybuffer->items < KEYBUFFER_SIZE) {
+		keybuffer->fifo[keybuffer->tail] = *ev;
+		keybuffer->tail = (keybuffer->tail + 1) % KEYBUFFER_SIZE;
+		keybuffer->items++;
+	}
+	
+	futex_up(&keybuffer_futex);
+}
+
+/** Pop event from buffer.
+ *
+ * @param edst Pointer to where the event should be saved.
+ *
+ * @return True if an event was popped.
+ *
+ */
+bool keybuffer_pop(keybuffer_t *keybuffer, console_event_t *edst)
+{
+	futex_down(&keybuffer_futex);
+	
+	if (keybuffer->items > 0) {
+		keybuffer->items--;
+		*edst = (keybuffer->fifo[keybuffer->head]);
+		keybuffer->head = (keybuffer->head + 1) % KEYBUFFER_SIZE;
+		futex_up(&keybuffer_futex);
+		
+		return true;
+	}
+	
+	futex_up(&keybuffer_futex);
+	
+	return false;
+}
+
+/**
+ * @}
+ */
Index: uspace/srv/console/keybuffer.h
===================================================================
--- uspace/srv/console/keybuffer.h	(revision e795203e174ecc5e901f6b8f8833f9bd4364e51b)
+++ uspace/srv/console/keybuffer.h	(revision e795203e174ecc5e901f6b8f8833f9bd4364e51b)
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2006 Josef Cejka
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ * - The name of the author may not be used to endorse or promote products
+ *   derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/** @addtogroup kbdgen
+ * @brief HelenOS generic uspace keyboard handler.
+ * @ingroup kbd
+ * @{
+ */
+/** @file
+ */
+
+#ifndef __KEYBUFFER_H__
+#define __KEYBUFFER_H__
+
+#include <sys/types.h>
+#include <io/console.h>
+#include <bool.h>
+
+/** Size of buffer for pressed keys */
+#define KEYBUFFER_SIZE  128
+
+typedef struct {
+	console_event_t fifo[KEYBUFFER_SIZE];
+	unsigned long head;
+	unsigned long tail;
+	unsigned long items;
+} keybuffer_t;
+
+extern void keybuffer_free(keybuffer_t *);
+extern void keybuffer_init(keybuffer_t *);
+extern size_t keybuffer_available(keybuffer_t *);
+extern bool keybuffer_empty(keybuffer_t *);
+extern void keybuffer_push(keybuffer_t *, const console_event_t *);
+extern bool keybuffer_pop(keybuffer_t *, console_event_t *);
+
+#endif
+
+/**
+ * @}
+ */
Index: uspace/srv/kbd/Makefile
===================================================================
--- uspace/srv/kbd/Makefile	(revision c145bc2fc737a941e2d7e0c94b3479d3c11bb93d)
+++ uspace/srv/kbd/Makefile	(revision e795203e174ecc5e901f6b8f8833f9bd4364e51b)
@@ -46,6 +46,5 @@
 	generic/kbd.c \
 	genarch/gsp.c \
-	genarch/stroke.c \
-	generic/keybuffer.c
+	genarch/stroke.c
 
 ARCH_SOURCES =
Index: uspace/srv/kbd/generic/kbd.c
===================================================================
--- uspace/srv/kbd/generic/kbd.c	(revision c145bc2fc737a941e2d7e0c94b3479d3c11bb93d)
+++ uspace/srv/kbd/generic/kbd.c	(revision e795203e174ecc5e901f6b8f8833f9bd4364e51b)
@@ -38,4 +38,5 @@
 #include <ipc/ipc.h>
 #include <ipc/services.h>
+#include <ipc/kbd.h>
 #include <sysinfo.h>
 #include <stdio.h>
@@ -51,5 +52,4 @@
 
 #include <kbd.h>
-#include <keybuffer.h>
 #include <kbd_port.h>
 #include <kbd_ctl.h>
@@ -60,5 +60,4 @@
 int cons_connected = 0;
 int phone2cons = -1;
-keybuffer_t keybuffer;
 
 /** Currently active modifiers. */
@@ -242,7 +241,4 @@
 	layout[active_layout]->reset();
 	
-	/* Initialize key buffer */
-	keybuffer_init(&keybuffer);
-	
 	async_set_client_connection(console_connection);
 
Index: uspace/srv/kbd/generic/keybuffer.c
===================================================================
--- uspace/srv/kbd/generic/keybuffer.c	(revision c145bc2fc737a941e2d7e0c94b3479d3c11bb93d)
+++ 	(revision )
@@ -1,132 +1,0 @@
-/*
- * Copyright (c) 2006 Josef Cejka
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- *   notice, this list of conditions and the following disclaimer in the
- *   documentation and/or other materials provided with the distribution.
- * - The name of the author may not be used to endorse or promote products
- *   derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/** @addtogroup kbdgen
- * @brief HelenOS generic uspace keyboard handler.
- * @ingroup kbd
- * @{
- */
-/** @file
- */
-
-#include <keybuffer.h>
-#include <futex.h>
-
-atomic_t keybuffer_futex = FUTEX_INITIALIZER;
-
-/** Clear key buffer.
- */
-void keybuffer_free(keybuffer_t *keybuffer)
-{
-	futex_down(&keybuffer_futex);
-	keybuffer->head = 0;
-	keybuffer->tail = 0;
-	keybuffer->items = 0;
-	futex_up(&keybuffer_futex);
-}
-
-/** Key buffer initialization.
- *
- */
-void keybuffer_init(keybuffer_t *keybuffer)
-{
-	keybuffer_free(keybuffer);
-}
-
-/** Get free space in buffer.
- *
- * This function is useful for processing some scancodes that are translated
- * to more than one character.
- *
- * @return empty buffer space
- *
- */
-size_t keybuffer_available(keybuffer_t *keybuffer)
-{
-	return KEYBUFFER_SIZE - keybuffer->items;
-}
-
-/**
- *
- * @return nonzero, if buffer is not empty.
- *
- */
-bool keybuffer_empty(keybuffer_t *keybuffer)
-{
-	return (keybuffer->items == 0);
-}
-
-/** Push key event to key buffer.
- *
- * If the buffer is full, the event is ignored.
- *
- * @param keybuffer The keybuffer.
- * @param ev        The event to push.
- *
- */
-void keybuffer_push(keybuffer_t *keybuffer, const console_event_t *ev)
-{
-	futex_down(&keybuffer_futex);
-	
-	if (keybuffer->items < KEYBUFFER_SIZE) {
-		keybuffer->fifo[keybuffer->tail] = *ev;
-		keybuffer->tail = (keybuffer->tail + 1) % KEYBUFFER_SIZE;
-		keybuffer->items++;
-	}
-	
-	futex_up(&keybuffer_futex);
-}
-
-/** Pop event from buffer.
- *
- * @param edst Pointer to where the event should be saved.
- *
- * @return True if an event was popped.
- *
- */
-bool keybuffer_pop(keybuffer_t *keybuffer, console_event_t *edst)
-{
-	futex_down(&keybuffer_futex);
-	
-	if (keybuffer->items > 0) {
-		keybuffer->items--;
-		*edst = (keybuffer->fifo[keybuffer->head]);
-		keybuffer->head = (keybuffer->head + 1) % KEYBUFFER_SIZE;
-		futex_up(&keybuffer_futex);
-		
-		return true;
-	}
-	
-	futex_up(&keybuffer_futex);
-	
-	return false;
-}
-
-/**
- * @}
- */
Index: uspace/srv/kbd/include/kbd.h
===================================================================
--- uspace/srv/kbd/include/kbd.h	(revision c145bc2fc737a941e2d7e0c94b3479d3c11bb93d)
+++ uspace/srv/kbd/include/kbd.h	(revision e795203e174ecc5e901f6b8f8833f9bd4364e51b)
@@ -38,18 +38,4 @@
 #define KBD_KBD_H_
 
-#include <keybuffer.h>
-#include <ipc/ipc.h>
-
-#define KBD_EVENT      1024
-#define KBD_MS_LEFT    1025
-#define KBD_MS_RIGHT   1026
-#define KBD_MS_MIDDLE  1027
-#define KBD_MS_MOVE    1028
-
-typedef enum {
-	KBD_YIELD = IPC_FIRST_USER_METHOD,
-	KBD_RECLAIM
-} kbd_request_t;
-
 extern int cir_service;
 extern int cir_phone;
Index: uspace/srv/kbd/include/keybuffer.h
===================================================================
--- uspace/srv/kbd/include/keybuffer.h	(revision c145bc2fc737a941e2d7e0c94b3479d3c11bb93d)
+++ 	(revision )
@@ -1,65 +1,0 @@
-/*
- * Copyright (c) 2006 Josef Cejka
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- *   notice, this list of conditions and the following disclaimer in the
- *   documentation and/or other materials provided with the distribution.
- * - The name of the author may not be used to endorse or promote products
- *   derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/** @addtogroup kbdgen
- * @brief HelenOS generic uspace keyboard handler.
- * @ingroup kbd
- * @{
- */
-/** @file
- */
-
-#ifndef __KEYBUFFER_H__
-#define __KEYBUFFER_H__
-
-#include <sys/types.h>
-#include <io/console.h>
-#include <bool.h>
-
-/** Size of buffer for pressed keys */
-#define KEYBUFFER_SIZE  128
-
-typedef struct {
-	console_event_t fifo[KEYBUFFER_SIZE];
-	unsigned long head;
-	unsigned long tail;
-	unsigned long items;
-} keybuffer_t;
-
-extern void keybuffer_free(keybuffer_t *);
-extern void keybuffer_init(keybuffer_t *);
-extern size_t keybuffer_available(keybuffer_t *);
-extern bool keybuffer_empty(keybuffer_t *);
-extern void keybuffer_push(keybuffer_t *, const console_event_t *);
-extern bool keybuffer_pop(keybuffer_t *, console_event_t *);
-
-#endif
-
-/**
- * @}
- */
