From 3cf618019676b877c83975bbbc636033cdcbda37 Mon Sep 17 00:00:00 2001 From: Marian Ohligs Date: Tue, 24 May 2011 00:56:21 +0200 Subject: [PATCH] fix some strange behavior with backspace --- arch/x86/kernel/kb.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/arch/x86/kernel/kb.c b/arch/x86/kernel/kb.c index 7307852e..70911518 100644 --- a/arch/x86/kernel/kb.c +++ b/arch/x86/kernel/kb.c @@ -110,8 +110,13 @@ static void keyboard_handler(struct state *r) */ kputchar(kbdus[scancode]); if (kb_buffer.size <= kb_buffer.maxsize && kb_buffer.buffer != NULL) { - memcpy(kb_buffer.buffer + kb_buffer.size, &kbdus[scancode], 1); - kb_buffer.size++; + if (scancode == 14) { + kb_buffer.size--; + } + else { + memcpy(kb_buffer.buffer + kb_buffer.size, &kbdus[scancode], 1); + kb_buffer.size++; + } if (scancode == 28 || scancode == 15 || kb_buffer.size >= kb_buffer.maxsize) { wakeup_task(kb_buffer.tid); reschedule();