X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FModules%2FInput%2FKeyboard%2Fmain.c;h=31d155f3d71fa43092d2d3c47e7f79b86ca526da;hb=91cb22a5f21eeca8f84456c1febf79f84a65d30d;hp=f49d8ea56311f92ba06ad349748332f356d2311b;hpb=11dbd684e9a3d907d43d71a3145205f1a86992fb;p=tpg%2Facess2.git diff --git a/KernelLand/Modules/Input/Keyboard/main.c b/KernelLand/Modules/Input/Keyboard/main.c index f49d8ea5..31d155f3 100644 --- a/KernelLand/Modules/Input/Keyboard/main.c +++ b/KernelLand/Modules/Input/Keyboard/main.c @@ -17,16 +17,10 @@ #include "keymap_int.h" #include "layout_kbdus.h" #include +#include #define USE_KERNEL_MAGIC 1 -// === IMPORTS === -#if USE_KERNEL_MAGIC -extern void Threads_ToggleTrace(int TID); -extern void Threads_Dump(void); -extern void Heap_Stats(void); -#endif - // === PROTOTYPES === int Keyboard_Install(char **Arguments); int Keyboard_Cleanup(void); @@ -164,6 +158,15 @@ void Keyboard_HandleKey(tKeyboard *Source, Uint32 HIDKeySym) Uint32 flag; Uint8 layer; + if( !Source ) { + Log_Error("Keyboard", "Passed NULL handle"); + return ; + } + if( !Source->Node ) { + Log_Error("Keyboard", "Passed handle with NULL node"); + return ; + } + bPressed = !(HIDKeySym & (1 << 31)); HIDKeySym &= 0x7FFFFFFF; @@ -289,5 +292,19 @@ void Keyboard_HandleKey(tKeyboard *Source, Uint32 HIDKeySym) } #endif + #if defined(ARCHDIR_is_x86) || defined(ARCHDIR_is_x86_64) + if(bPressed + && Source->KeyStates[KEYSYM_LEFTCTRL/8] & (1 << (KEYSYM_LEFTCTRL&7)) + && Source->KeyStates[KEYSYM_LEFTALT/8] & (1 << (KEYSYM_LEFTALT &7)) ) + { + if( HIDKeySym == KEYSYM_DELETE ) + { + // Trigger triple fault + __asm__ __volatile__ ("lgdt (%esp) ; int $0x0"); + for(;;); + } + } + #endif + }