// === CONSTANTS ===
#define KB_BUFFER_SIZE 1024
+// === IMPORTS ===
+void Threads_Dump();
+
// === PROTOTYPES ===
int KB_Install(char **Arguments);
void KB_IRQHandler();
{
Uint8 scancode;
Uint32 ch;
- int keyNum;
+ // int keyNum;
//if( inportb(0x64) & 0x20 ) return;
// Translate
ch = gpKB_Map[giKB_KeyLayer][scancode];
- keyNum = giKB_KeyLayer * 256 + scancode;
+ //keyNum = giKB_KeyLayer * 256 + scancode;
// Check for unknown key
if(!ch && !gbKB_KeyUp)
Warning("UNK %i %x", giKB_KeyLayer, scancode);
if (gbKB_KeyUp)
{
gbKB_KeyUp = 0;
- gbaKB_States[ keyNum ] = 0; // Unset key state flag
+ gbaKB_States[ ch ] = 0; // Unset key state flag
if( !gbaKB_States[KEY_LSHIFT] && !gbaKB_States[KEY_RSHIFT] )
gbKB_ShiftState = 0;
}
// Set the bit relating to the key
- gbaKB_States[keyNum] = 1;
+ gbaKB_States[ch] = 1;
if(ch == KEY_LSHIFT || ch == KEY_RSHIFT)
gbKB_ShiftState = 1;
// Ignore Non-Printable Characters
if(ch == 0 || ch & 0x80) return;
-
+
+ // --- Check for Kernel Magic Combos
+ if(gbaKB_States[KEY_LCTRL] && gbaKB_States[KEY_LALT])
+ {
+ switch(ch)
+ {
+ case 'd': __asm__ __volatile__ ("xchg %bx, %bx"); break;
+ case 'p': Threads_Dump(); break;
+ }
+ }
+
// Is shift pressed
if(gbKB_ShiftState ^ gbKB_CapsState)
{
}
}
- // --- Check for Kernel Magic Combos
- if(gbaKB_States[KEY_LSHIFT] && gbaKB_States[KEY_RSHIFT])
- {
- switch(ch)
- {
- case 'D': __asm__ __volatile__ ("xchg %bx, %bx"); break;
- }
- }
-
if(gKB_Callback) gKB_Callback(ch);
}