Index: kernel/genarch/src/kbrd/kbrd.c
===================================================================
--- kernel/genarch/src/kbrd/kbrd.c	(revision 6eef3c4403b57fc01e6b79237e6cc0a6a6a7d016)
+++ kernel/genarch/src/kbrd/kbrd.c	(revision 9df6b0f517e1ff178f1a72197b03101a00f3d6f0)
@@ -56,4 +56,5 @@
 #include <arch.h>
 #include <macros.h>
+#include <str.h>
 
 #define IGNORE_CODE  0x7f
@@ -65,5 +66,6 @@
 
 static indev_operations_t kbrd_raw_ops = {
-	.poll = NULL
+	.poll = NULL,
+	.signal = NULL
 };
 
@@ -104,4 +106,5 @@
 	bool shift;
 	bool capslock;
+	wchar_t ch;
 	
 	spinlock_lock(&instance->keylock);
@@ -127,7 +130,19 @@
 		
 		if (shift)
-			indev_push_character(instance->sink, sc_secondary_map[sc]);
+			ch = sc_secondary_map[sc];
 		else
-			indev_push_character(instance->sink, sc_primary_map[sc]);
+			ch = sc_primary_map[sc];
+		
+		switch (ch) {
+		case U_PAGE_UP:
+			indev_signal(instance->sink, INDEV_SIGNAL_SCROLL_UP);
+			break;
+		case U_PAGE_DOWN:
+			indev_signal(instance->sink, INDEV_SIGNAL_SCROLL_DOWN);
+			break;
+		default:
+			indev_push_character(instance->sink, ch);
+		}
+		
 		break;
 	}
