- nicer output when typing

This commit is contained in:
Marian Ohligs 2011-08-25 14:05:11 +02:00
parent faccbf8a59
commit 6c126e96f0

View file

@ -55,8 +55,8 @@ static const unsigned char kbdus[128] = { 0, 27, '1', '2', '3', '4', '5', '6', '
'\\', 'z', 'x', 'c', 'v', 'b', 'n', /* 49 */
'm', ',', '.', '/', 0, /* Right shift */
'*', 0, /* Alt */
' ', /* Space bar */
0, /* Caps lock */
' ', /* 57 - Space bar */
0, /* 58 - Caps lock */
0, /* 59 - F1 key ... > */
0, 0, 0, 0, 0, 0, 0, 0, 0, /* < ... F10 */
0, /* 69 - Num lock */
@ -111,16 +111,22 @@ static void keyboard_handler(struct state *r)
* held. If shift is held using the larger lookup table,
* you would add 128 to the scancode when you look for it
*/
kputchar(kbdus[scancode]);
if (kb_buffer.size <= kb_buffer.maxsize && kb_buffer.buffer != NULL) {
if (scancode == 14 && kb_buffer.size != 0) {
kb_buffer.size--;
if (scancode == 14) {
if (kb_buffer.size != 0) {
kb_buffer.size--;
kputchar(kbdus[scancode]);
kputchar(kbdus[57]);
kputchar(kbdus[scancode]);
}
}
else {
kputchar(kbdus[scancode]);
memcpy(kb_buffer.buffer + kb_buffer.size, &kbdus[scancode], 1);
kb_buffer.size++;
}
if (scancode == 28 || scancode == 15 || kb_buffer.size >= kb_buffer.maxsize) {
kputchar(kbdus[scancode]);
wakeup_task(kb_buffer.tid);
reschedule();
}