* The keyboard driver will now send a "key up" event for the emergency keys

afterwards; ie. the alt key is no longer stuck after visiting KDL.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34087 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler 2009-11-17 11:41:11 +00:00
parent cf17d2695d
commit 82df777b3d

View File

@ -153,8 +153,22 @@ keyboard_handle_int(ps2_dev *dev)
emergencyKeyStatus &= EMERGENCY_SYS_REQ;
} else if (emergencyKeyStatus > EMERGENCY_SYS_REQ
&& debug_emergency_key_pressed(kUnshiftedKeymap[scancode])) {
static const int kKeys[] = {LEFT_ALT_KEY, RIGHT_ALT_KEY, SYS_REQ_KEY};
int i;
// we probably have lost some keys, so reset our key states
emergencyKeyStatus = 0;
// send key ups for alt-sysreq
keyInfo.timestamp = system_time();
keyInfo.is_keydown = false;
for (i = 0; i < sizeof(kKeys) / sizeof(kKeys[0]); i++) {
keyInfo.scancode = kKeys[i];
if (packet_buffer_write(sKeyBuffer, (uint8 *)&keyInfo,
sizeof(keyInfo)) != 0)
release_sem_etc(sKeyboardSem, 1, B_DO_NOT_RESCHEDULE);
}
return B_HANDLED_INTERRUPT;
}