Index: uspace/srv/bd/gxe_bd/Makefile
===================================================================
--- uspace/srv/bd/gxe_bd/Makefile	(revision f9ab5620884e9f2437e4ff904764b61f1b9c6389)
+++ 	(revision )
@@ -1,36 +1,0 @@
-#
-# Copyright (c) 2005 Martin Decky
-# Copyright (c) 2007 Jakub Jermar
-# 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.
-#
-
-USPACE_PREFIX = ../../..
-BINARY = gxe_bd
-
-SOURCES = \
-	gxe_bd.c
-
-include $(USPACE_PREFIX)/Makefile.common
Index: uspace/srv/bd/gxe_bd/gxe_bd.c
===================================================================
--- uspace/srv/bd/gxe_bd/gxe_bd.c	(revision f9ab5620884e9f2437e4ff904764b61f1b9c6389)
+++ 	(revision )
@@ -1,340 +1,0 @@
-/*
- * Copyright (c) 2009 Jiri Svoboda
- * 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 bd
- * @{
- */
-
-/**
- * @file
- * @brief GXemul disk driver
- */
-
-#include <stdio.h>
-#include <ddi.h>
-#include <async.h>
-#include <as.h>
-#include <bd_srv.h>
-#include <fibril_synch.h>
-#include <loc.h>
-#include <sys/types.h>
-#include <errno.h>
-#include <macros.h>
-#include <task.h>
-
-#define NAME       "gxe_bd"
-#define NAMESPACE  "bd"
-
-enum {
-	CTL_READ_START	= 0,
-	CTL_WRITE_START = 1,
-};
-
-enum {
-	STATUS_FAILURE	= 0
-};
-
-enum {
-	MAX_DISKS	= 2
-};
-
-/** GXE disk hardware registers */
-typedef struct {
-	uint32_t offset_lo;
-	uint32_t pad0;
-	uint32_t offset_hi;
-	uint32_t pad1;
-
-	uint32_t disk_id;
-	uint32_t pad2[3];
-
-	uint32_t control;
-	uint32_t pad3[3];
-
-	uint32_t status;
-
-	uint32_t pad4[3];
-	uint8_t pad5[0x3fc0];
-
-	uint8_t buffer[512];
-} gxe_bd_hw_t;
-
-/** GXE block device soft state */
-typedef struct {
-	/** Block device service structure */
-	bd_srvs_t bds;
-	int disk_id;
-} gxe_bd_t;
-
-static const size_t block_size = 512;
-
-static uintptr_t dev_physical = 0x13000000;
-static gxe_bd_hw_t *dev;
-
-static service_id_t service_id[MAX_DISKS];
-
-static fibril_mutex_t dev_lock[MAX_DISKS];
-
-static gxe_bd_t gxe_bd[MAX_DISKS];
-
-static int gxe_bd_init(void);
-static void gxe_bd_connection(ipc_callid_t iid, ipc_call_t *icall, void *);
-static int gxe_bd_read_block(int disk_id, uint64_t ba, void *buf);
-static int gxe_bd_write_block(int disk_id, uint64_t ba, const void *buf);
-
-static int gxe_bd_open(bd_srvs_t *, bd_srv_t *);
-static int gxe_bd_close(bd_srv_t *);
-static int gxe_bd_read_blocks(bd_srv_t *, aoff64_t, size_t, void *, size_t);
-static int gxe_bd_write_blocks(bd_srv_t *, aoff64_t, size_t, const void *, size_t);
-static int gxe_bd_get_block_size(bd_srv_t *, size_t *);
-static int gxe_bd_get_num_blocks(bd_srv_t *, aoff64_t *);
-
-static bd_ops_t gxe_bd_ops = {
-	.open = gxe_bd_open,
-	.close = gxe_bd_close,
-	.read_blocks = gxe_bd_read_blocks,
-	.write_blocks = gxe_bd_write_blocks,
-	.get_block_size = gxe_bd_get_block_size,
-	.get_num_blocks = gxe_bd_get_num_blocks
-};
-
-static gxe_bd_t *bd_srv_gxe(bd_srv_t *bd)
-{
-	return (gxe_bd_t *) bd->srvs->sarg;
-}
-
-int main(int argc, char **argv)
-{
-	printf(NAME ": GXemul disk driver\n");
-
-	if (gxe_bd_init() != EOK)
-		return -1;
-
-	printf(NAME ": Accepting connections\n");
-	task_retval(0);
-	async_manager();
-
-	/* Not reached */
-	return 0;
-}
-
-static int gxe_bd_init(void)
-{
-	async_set_client_connection(gxe_bd_connection);
-	int rc = loc_server_register(NAME);
-	if (rc != EOK) {
-		printf("%s: Unable to register driver.\n", NAME);
-		return rc;
-	}
-	
-	void *vaddr;
-	rc = pio_enable((void *) dev_physical, sizeof(gxe_bd_hw_t), &vaddr);
-	if (rc != EOK) {
-		printf("%s: Could not initialize device I/O space.\n", NAME);
-		return rc;
-	}
-	
-	dev = vaddr;
-	
-	for (unsigned int i = 0; i < MAX_DISKS; i++) {
-		char name[16];
-		
-		bd_srvs_init(&gxe_bd[i].bds);
-		gxe_bd[i].bds.ops = &gxe_bd_ops;
-		gxe_bd[i].bds.sarg = (void *)&gxe_bd[i];
-		
-		snprintf(name, 16, "%s/disk%u", NAMESPACE, i);
-		rc = loc_service_register(name, &service_id[i]);
-		if (rc != EOK) {
-			printf("%s: Unable to register device %s.\n", NAME,
-			    name);
-			return rc;
-		}
-		
-		fibril_mutex_initialize(&dev_lock[i]);
-	}
-	
-	return EOK;
-}
-
-static void gxe_bd_connection(ipc_callid_t iid, ipc_call_t *icall, void *arg)
-{
-	service_id_t dsid;
-	int disk_id, i;
-
-	/* Get the device handle. */
-	dsid = IPC_GET_ARG1(*icall);
-
-	/* Determine which disk device is the client connecting to. */
-	disk_id = -1;
-	for (i = 0; i < MAX_DISKS; i++)
-		if (service_id[i] == dsid)
-			disk_id = i;
-
-	if (disk_id < 0) {
-		async_answer_0(iid, EINVAL);
-		return;
-	}
-
-	bd_conn(iid, icall, &gxe_bd[disk_id].bds);
-}
-
-/** Open device. */
-static int gxe_bd_open(bd_srvs_t *bds, bd_srv_t *bd)
-{
-	return EOK;
-}
-
-/** Close device. */
-static int gxe_bd_close(bd_srv_t *bd)
-{
-	return EOK;
-}
-
-/** Read multiple blocks from the device. */
-static int gxe_bd_read_blocks(bd_srv_t *bd, aoff64_t ba, size_t cnt,
-    void *buf, size_t size)
-{
-	int disk_id = bd_srv_gxe(bd)->disk_id;
-	int rc;
-
-	if (size < cnt * block_size)
-		return EINVAL;
-
-	while (cnt > 0) {
-		rc = gxe_bd_read_block(disk_id, ba, buf);
-		if (rc != EOK)
-			return rc;
-
-		++ba;
-		--cnt;
-		buf += block_size;
-	}
-
-	return EOK;
-}
-
-/** Write multiple blocks to the device. */
-static int gxe_bd_write_blocks(bd_srv_t *bd, aoff64_t ba, size_t cnt,
-    const void *buf, size_t size)
-{
-	int disk_id = bd_srv_gxe(bd)->disk_id;
-	int rc;
-
-	if (size < cnt * block_size)
-		return EINVAL;
-
-	while (cnt > 0) {
-		rc = gxe_bd_write_block(disk_id, ba, buf);
-		if (rc != EOK)
-			return rc;
-
-		++ba;
-		--cnt;
-		buf += block_size;
-	}
-
-	return EOK;
-}
-
-/** Get device block size. */
-static int gxe_bd_get_block_size(bd_srv_t *bd, size_t *rsize)
-{
-	*rsize = block_size;
-	return EOK;
-}
-
-/** Get number of blocks on device. */
-static int gxe_bd_get_num_blocks(bd_srv_t *bd, aoff64_t *rnb)
-{
-	return ENOTSUP;
-}
-
-/** Read a block from the device. */
-static int gxe_bd_read_block(int disk_id, uint64_t ba, void *buf)
-{
-	uint32_t status;
-	uint64_t byte_addr;
-	size_t i;
-	uint32_t w;
-
-	byte_addr = ba * block_size;
-
-	fibril_mutex_lock(&dev_lock[disk_id]);
-	pio_write_32(&dev->offset_lo, (uint32_t) byte_addr);
-	pio_write_32(&dev->offset_hi, byte_addr >> 32);
-	pio_write_32(&dev->disk_id, disk_id);
-	pio_write_32(&dev->control, CTL_READ_START);
-
-	status = pio_read_32(&dev->status);
-	if (status == STATUS_FAILURE) {
-		fibril_mutex_unlock(&dev_lock[disk_id]);
-		return EIO;
-	}
-
-	for (i = 0; i < block_size; i++) {
-		((uint8_t *) buf)[i] = w = pio_read_8(&dev->buffer[i]);
-	}
-
-	fibril_mutex_unlock(&dev_lock[disk_id]);
-	return EOK;
-}
-
-/** Write a block to the device. */
-static int gxe_bd_write_block(int disk_id, uint64_t ba, const void *buf)
-{
-	uint32_t status;
-	uint64_t byte_addr;
-	size_t i;
-
-	byte_addr = ba * block_size;
-
-	fibril_mutex_lock(&dev_lock[disk_id]);
-
-	for (i = 0; i < block_size; i++) {
-		pio_write_8(&dev->buffer[i], ((const uint8_t *) buf)[i]);
-	}
-
-	pio_write_32(&dev->offset_lo, (uint32_t) byte_addr);
-	pio_write_32(&dev->offset_hi, byte_addr >> 32);
-	pio_write_32(&dev->disk_id, disk_id);
-	pio_write_32(&dev->control, CTL_WRITE_START);
-
-	status = pio_read_32(&dev->status);
-	if (status == STATUS_FAILURE) {
-		fibril_mutex_unlock(&dev_lock[disk_id]);
-		return EIO;
-	}
-
-	fibril_mutex_unlock(&dev_lock[disk_id]);
-	return EOK;
-}
-
-/**
- * @}
- */
Index: uspace/srv/hid/input/Makefile
===================================================================
--- uspace/srv/hid/input/Makefile	(revision f9ab5620884e9f2437e4ff904764b61f1b9c6389)
+++ uspace/srv/hid/input/Makefile	(revision cf538e7f8a69e2cbf42fd5283c5ad34ba51d135f)
@@ -38,5 +38,4 @@
 	port/adb_mouse.c \
 	port/chardev.c \
-	port/gxemul.c \
 	port/msim.c \
 	port/niagara.c \
@@ -47,5 +46,4 @@
 	proto/mousedev.c \
 	ctl/apple.c \
-	ctl/gxe_fb.c \
 	ctl/kbdev.c \
 	ctl/pc.c \
Index: uspace/srv/hid/input/ctl/gxe_fb.c
===================================================================
--- uspace/srv/hid/input/ctl/gxe_fb.c	(revision f9ab5620884e9f2437e4ff904764b61f1b9c6389)
+++ 	(revision )
@@ -1,248 +1,0 @@
-/*
- * Copyright (c) 2011 Jiri Svoboda
- * 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 kbd_ctl
- * @ingroup input
- * @{
- */
-/**
- * @file
- * @brief GXEmul framebuffer-mode keyboard controller driver.
- */
-
-#include <io/console.h>
-#include <io/keycode.h>
-#include "../stroke.h"
-#include "../gsp.h"
-#include "../kbd.h"
-#include "../kbd_port.h"
-#include "../kbd_ctl.h"
-
-static void gxe_fb_ctl_parse(sysarg_t);
-static int gxe_fb_ctl_init(kbd_dev_t *);
-static void gxe_fb_ctl_set_ind(kbd_dev_t *, unsigned int);
-
-kbd_ctl_ops_t gxe_fb_ctl = {
-	.parse = gxe_fb_ctl_parse,
-	.init = gxe_fb_ctl_init,
-	.set_ind = gxe_fb_ctl_set_ind
-};
-
-static kbd_dev_t *kbd_dev;
-
-/** Scancode parser */
-static gsp_t sp;
-
-/** Current parser state */
-static int ds;
-
-#include <stdio.h>
-
-static int seq_defs[] = {
-	/* Not shifted */
-
-	0,	KC_BACKTICK,	0x60, GSP_END,
-
-	0,	KC_1,		0x31, GSP_END,
-	0,	KC_2,		0x32, GSP_END,
-	0,	KC_3,		0x33, GSP_END,
-	0,	KC_4,		0x34, GSP_END,
-	0,	KC_5,		0x35, GSP_END,
-	0,	KC_6,		0x36, GSP_END,
-	0,	KC_7,		0x37, GSP_END,
-	0,	KC_8,		0x38, GSP_END,
-	0,	KC_9,		0x39, GSP_END,
-	0,	KC_0,		0x30, GSP_END,
-
-	0,	KC_MINUS,	0x2d, GSP_END,
-	0,	KC_EQUALS,	0x3d, GSP_END,
-	0,	KC_BACKSPACE,	0x08, GSP_END,
-
-	0,	KC_TAB,		0x09, GSP_END,
-
-	0,	KC_Q,		0x71, GSP_END,
-	0,	KC_W,		0x77, GSP_END,
-	0,	KC_E,		0x65, GSP_END,
-	0,	KC_R,		0x72, GSP_END,
-	0,	KC_T,		0x74, GSP_END,
-	0,	KC_Y,		0x79, GSP_END,
-	0,	KC_U,		0x75, GSP_END,
-	0,	KC_I,		0x69, GSP_END,
-	0,	KC_O,		0x6f, GSP_END,
-	0,	KC_P,		0x70, GSP_END,
-
-	0,	KC_LBRACKET,	0x5b, GSP_END,
-	0,	KC_RBRACKET,	0x5d, GSP_END,
-
-	0,	KC_A,		0x61, GSP_END,
-	0,	KC_S,		0x73, GSP_END,
-	0,	KC_D,		0x64, GSP_END,
-	0,	KC_F,		0x66, GSP_END,
-	0,	KC_G,		0x67, GSP_END,
-	0,	KC_H,		0x68, GSP_END,
-	0,	KC_J,		0x6a, GSP_END,
-	0,	KC_K,		0x6b, GSP_END,
-	0,	KC_L,		0x6c, GSP_END,
-
-	0,	KC_SEMICOLON,	0x3b, GSP_END,
-	0,	KC_QUOTE,	0x27, GSP_END,
-	0,	KC_BACKSLASH,	0x5c, GSP_END,
-
-	0,	KC_Z,		0x7a, GSP_END,
-	0,	KC_X,		0x78, GSP_END,
-	0,	KC_C,		0x63, GSP_END,
-	0,	KC_V,		0x76, GSP_END,
-	0,	KC_B,		0x62, GSP_END,
-	0,	KC_N,		0x6e, GSP_END,
-	0,	KC_M,		0x6d, GSP_END,
-
-	0,	KC_COMMA,	0x2c, GSP_END,
-	0,	KC_PERIOD,	0x2e, GSP_END,
-	0,	KC_SLASH,	0x2f, GSP_END,
-
-	/* Shifted */
-
-	KM_SHIFT,	KC_BACKTICK,	0x7e, GSP_END,
-
-	KM_SHIFT,	KC_1,		0x21, GSP_END,
-	KM_SHIFT,	KC_2,		0x40, GSP_END,
-	KM_SHIFT,	KC_3,		0x23, GSP_END,
-	KM_SHIFT,	KC_4,		0x24, GSP_END,
-	KM_SHIFT,	KC_5,		0x25, GSP_END,
-	KM_SHIFT,	KC_6,		0x5e, GSP_END,
-	KM_SHIFT,	KC_7,		0x26, GSP_END,
-	KM_SHIFT,	KC_8,		0x2a, GSP_END,
-	KM_SHIFT,	KC_9,		0x28, GSP_END,
-	KM_SHIFT,	KC_0,		0x29, GSP_END,
-
-	KM_SHIFT,	KC_MINUS,	0x5f, GSP_END,
-	KM_SHIFT,	KC_EQUALS,	0x2b, GSP_END,
-
-	KM_SHIFT,	KC_Q,		0x51, GSP_END,
-	KM_SHIFT,	KC_W,		0x57, GSP_END,
-	KM_SHIFT,	KC_E,		0x45, GSP_END,
-	KM_SHIFT,	KC_R,		0x52, GSP_END,
-	KM_SHIFT,	KC_T,		0x54, GSP_END,
-	KM_SHIFT,	KC_Y,		0x59, GSP_END,
-	KM_SHIFT,	KC_U,		0x55, GSP_END,
-	KM_SHIFT,	KC_I,		0x49, GSP_END,
-	KM_SHIFT,	KC_O,		0x4f, GSP_END,
-	KM_SHIFT,	KC_P,		0x50, GSP_END,
-
-	KM_SHIFT,	KC_LBRACKET,	0x7b, GSP_END,
-	KM_SHIFT,	KC_RBRACKET,	0x7d, GSP_END,
-
-	KM_SHIFT,	KC_A,		0x41, GSP_END,
-	KM_SHIFT,	KC_S,		0x53, GSP_END,
-	KM_SHIFT,	KC_D,		0x44, GSP_END,
-	KM_SHIFT,	KC_F,		0x46, GSP_END,
-	KM_SHIFT,	KC_G,		0x47, GSP_END,
-	KM_SHIFT,	KC_H,		0x48, GSP_END,
-	KM_SHIFT,	KC_J,		0x4a, GSP_END,
-	KM_SHIFT,	KC_K,		0x4b, GSP_END,
-	KM_SHIFT,	KC_L,		0x4c, GSP_END,
-
-	KM_SHIFT,	KC_SEMICOLON,	0x3a, GSP_END,
-	KM_SHIFT,	KC_QUOTE,	0x22, GSP_END,
-	KM_SHIFT,	KC_BACKSLASH,	0x7c, GSP_END,
-
-	KM_SHIFT,	KC_Z,		0x5a, GSP_END,
-	KM_SHIFT,	KC_X,		0x58, GSP_END,
-	KM_SHIFT,	KC_C,		0x43, GSP_END,
-	KM_SHIFT,	KC_V,		0x56, GSP_END,
-	KM_SHIFT,	KC_B,		0x42, GSP_END,
-	KM_SHIFT,	KC_N,		0x4e, GSP_END,
-	KM_SHIFT,	KC_M,		0x4d, GSP_END,
-
-	KM_SHIFT,	KC_COMMA,	0x3c, GSP_END,
-	KM_SHIFT,	KC_PERIOD,	0x3e, GSP_END,
-	KM_SHIFT,	KC_SLASH,	0x3f, GSP_END,
-
-	/* ... */
-
-	0,	KC_SPACE,	0x20, GSP_END,
-	0,	KC_ENTER,	0x0a, GSP_END,
-	0,	KC_ENTER,	0x0d, GSP_END,
-
-	0,	KC_ESCAPE,	0x1b, 0x1b, GSP_END,
-
-	0,	KC_F1,		0x1b, 0x5b, 0x4f, 0x50, GSP_END,
-	0,	KC_F2,		0x1b, 0x5b, 0x4f, 0x51, GSP_END,
-	0,	KC_F3,		0x1b, 0x5b, 0x4f, 0x52, GSP_END,
-	0,	KC_F4,		0x1b, 0x5b, 0x4f, 0x53, GSP_END,
-	0,	KC_F5,		0x1b, 0x5b, 0x31, 0x35, GSP_END,
-	0,	KC_F6,		0x1b, 0x5b, 0x31, 0x37, GSP_END,
-	0,	KC_F7,		0x1b, 0x5b, 0x31, 0x38, GSP_END,
-	0,	KC_F8,		0x1b, 0x5b, 0x31, 0x39, GSP_END,
-	0,	KC_F9,		0x1b, 0x5b, 0x32, 0x38, GSP_END,
-	0,	KC_F10,		0x1b, 0x5b, 0x32, 0x39, GSP_END,
-	0,	KC_F11,		0x1b, 0x5b, 0x32, 0x33, GSP_END,
-	0,	KC_F12,		0x1b, 0x5b, 0x32, 0x34, GSP_END,
-
-	0,	KC_INSERT,	0x1b, 0x5b, 0x32, 0x7e, GSP_END,
-	0,	KC_HOME,	0x1b, 0x5b, 0x48, GSP_END,
-	0,	KC_PAGE_UP,	0x1b, 0x5b, 0x35, 0x7e, GSP_END,
-	0,	KC_DELETE,	0x1b, 0x5b, 0x33, 0x7e, GSP_END,
-	0,	KC_END,		0x1b, 0x5b, 0x46, GSP_END,
-	0,	KC_PAGE_DOWN,	0x1b, 0x5b, 0x36, 0x7e, GSP_END,
-
-	0,	KC_UP,		0x1b, 0x5b, 0x41, GSP_END,
-	0,	KC_LEFT,	0x1b, 0x5b, 0x44, GSP_END,
-	0,	KC_DOWN,	0x1b, 0x5b, 0x42, GSP_END,
-	0,	KC_RIGHT,	0x1b, 0x5b, 0x43, GSP_END,
-
-	0,	0
-};
-
-static int gxe_fb_ctl_init(kbd_dev_t *kdev)
-{
-	kbd_dev = kdev;
-	ds = 0;
-
-	gsp_init(&sp);
-	return gsp_insert_defs(&sp, seq_defs);
-}
-
-static void gxe_fb_ctl_parse(sysarg_t scancode)
-{
-	unsigned mods, key;
-
-	ds = gsp_step(&sp, ds, scancode, &mods, &key);
-	if (key != 0) {
-		stroke_sim(kbd_dev, mods, key);
-	}
-}
-
-static void gxe_fb_ctl_set_ind(kbd_dev_t *kdev, unsigned mods)
-{
-	(void) mods;
-}
-
-/**
- * @}
- */ 
Index: uspace/srv/hid/input/input.c
===================================================================
--- uspace/srv/hid/input/input.c	(revision f9ab5620884e9f2437e4ff904764b61f1b9c6389)
+++ uspace/srv/hid/input/input.c	(revision cf538e7f8a69e2cbf42fd5283c5ad34ba51d135f)
@@ -432,10 +432,4 @@
 	kbd_add_dev(&msim_port, &stty_ctl);
 #endif
-#if (defined(MACHINE_lgxemul) || defined(MACHINE_bgxemul)) && defined(CONFIG_FB)
-	kbd_add_dev(&gxemul_port, &gxe_fb_ctl);
-#endif
-#if defined(MACHINE_lgxemul) || defined(MACHINE_bgxemul) && !defined(CONFIG_FB)
-	kbd_add_dev(&gxemul_port, &stty_ctl);
-#endif
 #if defined(UARCH_ppc32)
 	kbd_add_dev(&adb_port, &apple_ctl);
Index: uspace/srv/hid/input/kbd_ctl.h
===================================================================
--- uspace/srv/hid/input/kbd_ctl.h	(revision f9ab5620884e9f2437e4ff904764b61f1b9c6389)
+++ uspace/srv/hid/input/kbd_ctl.h	(revision cf538e7f8a69e2cbf42fd5283c5ad34ba51d135f)
@@ -49,5 +49,4 @@
 
 extern kbd_ctl_ops_t apple_ctl;
-extern kbd_ctl_ops_t gxe_fb_ctl;
 extern kbd_ctl_ops_t kbdev_ctl;
 extern kbd_ctl_ops_t pc_ctl;
Index: uspace/srv/hid/input/kbd_port.h
===================================================================
--- uspace/srv/hid/input/kbd_port.h	(revision f9ab5620884e9f2437e4ff904764b61f1b9c6389)
+++ uspace/srv/hid/input/kbd_port.h	(revision cf538e7f8a69e2cbf42fd5283c5ad34ba51d135f)
@@ -51,5 +51,4 @@
 extern kbd_port_ops_t adb_port;
 extern kbd_port_ops_t chardev_port;
-extern kbd_port_ops_t gxemul_port;
 extern kbd_port_ops_t msim_port;
 extern kbd_port_ops_t niagara_port;
Index: uspace/srv/hid/input/port/gxemul.c
===================================================================
--- uspace/srv/hid/input/port/gxemul.c	(revision f9ab5620884e9f2437e4ff904764b61f1b9c6389)
+++ 	(revision )
@@ -1,131 +1,0 @@
-/*
- * Copyright (c) 2007 Michal Kebrt
- * Copyright (c) 2011 Jiri Svoboda
- * 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 kbd_port
- * @{
- * @ingroup  kbd
- */
-/** @file
- * @brief GXEmul keyboard port driver.
- */
-
-#include <async.h>
-#include <sysinfo.h>
-#include <ddi.h>
-#include <errno.h>
-#include "../kbd_port.h"
-#include "../kbd.h"
-
-static int gxemul_port_init(kbd_dev_t *);
-static void gxemul_port_yield(void);
-static void gxemul_port_reclaim(void);
-static void gxemul_port_write(uint8_t data);
-
-kbd_port_ops_t gxemul_port = {
-	.init = gxemul_port_init,
-	.yield = gxemul_port_yield,
-	.reclaim = gxemul_port_reclaim,
-	.write = gxemul_port_write
-};
-
-static kbd_dev_t *kbd_dev;
-
-static irq_pio_range_t gxemul_ranges[] = {
-	{
-		.base = 0,
-		.size = 1
-	}
-};
-
-static irq_cmd_t gxemul_cmds[] = {
-	{ 
-		.cmd = CMD_PIO_READ_8, 
-		.addr = (void *) 0, 	/* will be patched in run-time */
-		.dstarg = 2,
-	},
-	{
-		.cmd = CMD_ACCEPT
-	}
-};
-
-static irq_code_t gxemul_kbd = {
-	sizeof(gxemul_ranges) / sizeof(irq_pio_range_t),
-	gxemul_ranges,
-	sizeof(gxemul_cmds) / sizeof(irq_cmd_t),
-	gxemul_cmds
-};
-
-static void gxemul_irq_handler(ipc_callid_t iid, ipc_call_t *call);
-
-/** Initializes keyboard handler. */
-static int gxemul_port_init(kbd_dev_t *kdev)
-{
-	kbd_dev = kdev;
-	
-	sysarg_t addr;
-	if (sysinfo_get_value("kbd.address.physical", &addr) != EOK)
-		return -1;
-	
-	sysarg_t inr;
-	if (sysinfo_get_value("kbd.inr", &inr) != EOK)
-		return -1;
-	
-	async_set_interrupt_received(gxemul_irq_handler);
-	gxemul_ranges[0].base = addr;
-	gxemul_cmds[0].addr = (void *) addr;
-	irq_register(inr, device_assign_devno(), 0, &gxemul_kbd);
-	return 0;
-}
-
-static void gxemul_port_yield(void)
-{
-}
-
-static void gxemul_port_reclaim(void)
-{
-}
-
-static void gxemul_port_write(uint8_t data)
-{
-	(void) data;
-}
-
-/** Process data sent when a key is pressed.
- *
- * @param keybuffer Buffer of pressed keys.
- * @param call      IPC call.
- *
- */
-static void gxemul_irq_handler(ipc_callid_t iid, ipc_call_t *call)
-{
-	kbd_push_data(kbd_dev, IPC_GET_ARG2(*call));
-}
-
-/** @}
- */
