Index: kernel/arch/ia64/src/drivers/ski.c
===================================================================
--- kernel/arch/ia64/src/drivers/ski.c	(revision 8e7afdbcf69dd1225fd11f3444d63f9563bfd98e)
+++ kernel/arch/ia64/src/drivers/ski.c	(revision 4f46695ea4abc4b87b2b395253598990f4ce682a)
@@ -45,9 +45,15 @@
 #include <arch.h>
 
-#define POLL_INTERVAL  10000  /* 10 ms */
-
-#define SKI_INIT_CONSOLE  20
-#define SKI_GETCHAR       21
-#define SKI_PUTCHAR       31
+enum {
+	/** Interval between polling in microseconds */
+	POLL_INTERVAL =  10000,  /* 0.01 s */
+
+	/** Max. number of characters to pull out at a time */
+	POLL_LIMIT    =     30,
+
+	SKI_INIT_CONSOLE  = 20,
+	SKI_GETCHAR       = 21,
+	SKI_PUTCHAR       = 31
+};
 
 static void ski_putchar(outdev_t *, const wchar_t, bool);
@@ -155,14 +161,27 @@
 }
 
-/** Ask keyboard if a key was pressed. */
+/** Ask keyboard if a key was pressed.
+ *
+ * If so, it will repeat and pull up to POLL_LIMIT characters.
+ */
 static void poll_keyboard(ski_instance_t *instance)
 {
+	wchar_t ch;
+	int count;
+
 	if (kbd_disabled)
 		return;
-	
-	wchar_t ch = ski_getchar();
-	
-	if (ch != 0)
+
+	count = POLL_LIMIT;
+
+	while (count > 0) {
+		ch = ski_getchar();
+
+		if (ch == '\0')
+			break;
+
 		indev_push_character(instance->srlnin, ch);
+		--count;
+	}
 }
 
