=== modified file 'uspace/srv/hid/input/Makefile'
--- uspace/srv/hid/input/Makefile	2012-08-16 19:14:03 +0000
+++ uspace/srv/hid/input/Makefile	2012-12-09 19:01:11 +0000
@@ -34,6 +34,7 @@
 	layout/cz.c \
 	layout/us_qwerty.c \
 	layout/us_dvorak.c \
+	layout/ar.c \
 	port/adb.c \
 	port/adb_mouse.c \
 	port/chardev.c \

=== modified file 'uspace/srv/hid/input/input.c'
--- uspace/srv/hid/input/input.c	2012-12-02 22:29:34 +0000
+++ uspace/srv/hid/input/input.c	2012-12-09 19:06:49 +0000
@@ -61,12 +61,13 @@
 #include "mouse_proto.h"
 #include "input.h"
 
-#define NUM_LAYOUTS  3
+#define NUM_LAYOUTS  4
 
 static layout_ops_t *layout[NUM_LAYOUTS] = {
 	&us_qwerty_ops,
 	&us_dvorak_ops,
-	&cz_ops
+	&cz_ops,
+	&ar_ops
 };
 
 static void kbd_devs_yield(void);
@@ -162,6 +163,17 @@
 		return;
 	}
 	
+	// ... //
+	
+	if (type == KEY_PRESS && (kdev->mods & KM_LCTRL) &&
+	    key == KC_F4) {
+		layout_destroy(kdev->active_layout);
+		kdev->active_layout = layout_create(layout[3]);
+		return;
+	}
+	
+	// ... //
+	
 	ev.type = type;
 	ev.key = key;
 	ev.mods = kdev->mods;

=== modified file 'uspace/srv/hid/input/layout.h'
--- uspace/srv/hid/input/layout.h	2012-08-16 19:14:03 +0000
+++ uspace/srv/hid/input/layout.h	2012-12-09 19:08:25 +0000
@@ -59,6 +59,7 @@
 extern layout_ops_t us_qwerty_ops;
 extern layout_ops_t us_dvorak_ops;
 extern layout_ops_t cz_ops;
+extern layout_ops_t ar_ops;
 
 extern layout_t *layout_create(layout_ops_t *);
 extern void layout_destroy(layout_t *);

