Added way to enter the kernel debugger in case keyboard is disabled - couldn't
test it, though, as I couldn't reproduce the problem since then. Fixed indentation in ps2_keyboard.c. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16137 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
5da68569d0
commit
c08ce938f3
@ -131,6 +131,10 @@ ps2_dev_handle_int(ps2_dev *dev, uint8 data)
|
||||
|
||||
if ((flags & PS2_FLAG_ENABLED) == 0) {
|
||||
dprintf("not enabled, data dropped\n");
|
||||
// TODO: remove me again; let us drop into the kernel debugger with F12
|
||||
if ((flags & PS2_FLAG_KEYB) != 0 && data == 88)
|
||||
panic("keyboard requested halt.\n");
|
||||
|
||||
return B_HANDLED_INTERRUPT;
|
||||
}
|
||||
|
||||
|
@ -61,52 +61,50 @@ set_leds(led_info *ledInfo)
|
||||
|
||||
int32 keyboard_handle_int(uint8 data)
|
||||
{
|
||||
at_kbd_io keyInfo;
|
||||
uint8 scancode;
|
||||
at_kbd_io keyInfo;
|
||||
uint8 scancode;
|
||||
|
||||
if (atomic_and(&sKeyboardOpenMask, 1) == 0)
|
||||
return B_HANDLED_INTERRUPT;
|
||||
|
||||
// TODO: Handle braindead "pause" key special case
|
||||
|
||||
if (data == EXTENDED_KEY) {
|
||||
sIsExtended = true;
|
||||
TRACE(("Extended key\n"));
|
||||
return B_HANDLED_INTERRUPT;
|
||||
}
|
||||
|
||||
// TODO: Handle braindead "pause" key special case
|
||||
scancode = data;
|
||||
|
||||
if (data == EXTENDED_KEY) {
|
||||
sIsExtended = true;
|
||||
TRACE(("Extended key\n"));
|
||||
return B_HANDLED_INTERRUPT;
|
||||
}
|
||||
TRACE(("scancode: %x\n", scancode));
|
||||
|
||||
scancode = data;
|
||||
// For now, F12 enters the kernel debugger
|
||||
// ToDo: remove me later :-)
|
||||
if (scancode == 88)
|
||||
panic("keyboard requested halt.\n");
|
||||
|
||||
TRACE(("scancode: %x\n", scancode));
|
||||
if (scancode & 0x80) {
|
||||
keyInfo.is_keydown = false;
|
||||
scancode -= 0x80;
|
||||
} else
|
||||
keyInfo.is_keydown = true;
|
||||
|
||||
// For now, F12 enters the kernel debugger
|
||||
// ToDo: remove me later :-)
|
||||
if (scancode == 88)
|
||||
panic("keyboard requested halt.\n");
|
||||
if (sIsExtended) {
|
||||
scancode |= 0x80;
|
||||
sIsExtended = false;
|
||||
}
|
||||
|
||||
if (scancode & 0x80) {
|
||||
keyInfo.is_keydown = false;
|
||||
scancode -= 0x80;
|
||||
} else
|
||||
keyInfo.is_keydown = true;
|
||||
keyInfo.timestamp = system_time();
|
||||
keyInfo.scancode = scancode;
|
||||
|
||||
if (sIsExtended) {
|
||||
scancode |= 0x80;
|
||||
sIsExtended = false;
|
||||
}
|
||||
if (packet_buffer_write(sKeyBuffer, (uint8 *)&keyInfo, sizeof(keyInfo)) == 0) {
|
||||
// If there is no space left in the buffer, we drop this key stroke. We avoid
|
||||
// dropping old key strokes, to not destroy what already was typed.
|
||||
return B_HANDLED_INTERRUPT;
|
||||
}
|
||||
|
||||
keyInfo.timestamp = system_time();
|
||||
keyInfo.scancode = scancode;
|
||||
|
||||
if (packet_buffer_write(sKeyBuffer, (uint8 *)&keyInfo, sizeof(keyInfo)) == 0) {
|
||||
// If there is no space left in the buffer, we drop this key stroke. We avoid
|
||||
// dropping old key strokes, to not destroy what already was typed.
|
||||
return B_HANDLED_INTERRUPT;
|
||||
}
|
||||
|
||||
release_sem_etc(sKeyboardSem, 1, B_DO_NOT_RESCHEDULE);
|
||||
release_sem_etc(sKeyboardSem, 1, B_DO_NOT_RESCHEDULE);
|
||||
|
||||
return B_INVOKE_SCHEDULER;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user