// === CONSTANTS ===
#define KB_BUFFER_SIZE 1024
+#define USE_KERNEL_MAGIC 1
// === IMPORTS ===
void Threads_Dump();
*/
int KB_Install(char **Arguments)
{
+ Uint8 temp;
+
+ // Attempt to get around a strange bug in Bochs/Qemu by toggling
+ // the controller on and off
+ temp = inb(0x61);
+ outb(0x61, temp | 0x80);
+ outb(0x61, temp & 0x7F);
+
IRQ_AddHandler(1, KB_IRQHandler);
DevFS_AddDevice( &gKB_DevInfo );
//Log("KB_Install: Installed");
- return 1;
+ return MODULE_ERR_OK;
}
/**
//if( inportb(0x64) & 0x20 ) return;
scancode = inb(0x60); // Read from the keyboard's data buffer
+ Log_Debug("KB", "scancode = %02x");
- Log("KB_IRQHandler: scancode = 0x%02x", scancode);
+ //Log("KB_IRQHandler: scancode = 0x%02x", scancode);
// Ignore ACKs
if(scancode == 0xFA) {
// --- Check for Kernel Magic Combos
#if USE_KERNEL_MAGIC
- if(ch == KEY_LCTRL) gbKB_MagicState |= 1;
- if(ch == KEY_LALT) gbKB_MagicState |= 2;
+ if(ch == KEY_LCTRL) {
+ gbKB_MagicState |= 1;
+ Log_Log("KB", "Kernel Magic LCTRL Down\n");
+ }
+ if(ch == KEY_LALT) {
+ gbKB_MagicState |= 2;
+ Log_Log("KB", "Kernel Magic LALT Down\n");
+ }
if(gbKB_MagicState == 3)
{
switch(ch)