private static void HandleScanCode(byte aScanCode, bool aReleased) { Global.mDebugger.Send("KeyboardManager.HandleScanCode"); byte key = aScanCode; if (mScanMap.ScanCodeMatchesKey(key, ConsoleKeyEx.CapsLock) && !aReleased) { // caps lock CapsLock = !CapsLock; UpdateLeds(); } else if (mScanMap.ScanCodeMatchesKey(key, ConsoleKeyEx.NumLock) && !aReleased) { // num lock NumLock = !NumLock; UpdateLeds(); } else if (mScanMap.ScanCodeMatchesKey(key, ConsoleKeyEx.ScrollLock) && !aReleased) { // scroll lock ScrollLock = !ScrollLock; UpdateLeds(); } else if (mScanMap.ScanCodeMatchesKey(key, ConsoleKeyEx.LCtrl) || mScanMap.ScanCodeMatchesKey(key, ConsoleKeyEx.RCtrl)) { ControlPressed = !aReleased; } else if (mScanMap.ScanCodeMatchesKey(key, ConsoleKeyEx.LShift) || mScanMap.ScanCodeMatchesKey(key, ConsoleKeyEx.RShift)) { ShiftPressed = !aReleased; } else if (mScanMap.ScanCodeMatchesKey(key, ConsoleKeyEx.LAlt) || mScanMap.ScanCodeMatchesKey(key, ConsoleKeyEx.RAlt)) { AltPressed = !aReleased; } else { if (ControlPressed && AltPressed && mScanMap.ScanCodeMatchesKey(key, ConsoleKeyEx.Delete)) { //Global.Console.WriteLine("Detected Ctrl-Alt-Delete! Rebooting System..."); CustomConsole.WriteLineInfo("Detected Ctrl-Alt-Delete! Rebooting System..."); Power.Reboot(); } if (!aReleased) { KeyEvent keyInfo; if (GetKey(key, out keyInfo)) { Enqueue(keyInfo); } } } }
/// <summary> /// Handle scan code. Used to update LEDs, /// </summary> /// <param name="aScanCode">A scan code.</param> /// <param name="aReleased">Key released.</param> /// <exception cref="IOException">An I/O error occurred.</exception> private static void HandleScanCode(byte aScanCode, bool aReleased) { Global.mDebugger.Send("KeyboardManager.HandleScanCode"); byte key = aScanCode; if (mScanMap.ScanCodeMatchesKey(key, ConsoleKeyEx.CapsLock) && !aReleased) { // caps lock CapsLock = !CapsLock; UpdateLeds(); } else if (mScanMap.ScanCodeMatchesKey(key, ConsoleKeyEx.NumLock) && !aReleased) { // num lock NumLock = !NumLock; UpdateLeds(); } else if (mScanMap.ScanCodeMatchesKey(key, ConsoleKeyEx.ScrollLock) && !aReleased) { // scroll lock ScrollLock = !ScrollLock; UpdateLeds(); } else if (mScanMap.ScanCodeMatchesKey(key, ConsoleKeyEx.LCtrl) || mScanMap.ScanCodeMatchesKey(key, ConsoleKeyEx.RCtrl)) { ControlPressed = !aReleased; } else if (mScanMap.ScanCodeMatchesKey(key, ConsoleKeyEx.LShift) || mScanMap.ScanCodeMatchesKey(key, ConsoleKeyEx.RShift)) { ShiftPressed = !aReleased; } else if (mScanMap.ScanCodeMatchesKey(key, ConsoleKeyEx.LAlt) || mScanMap.ScanCodeMatchesKey(key, ConsoleKeyEx.RAlt)) { AltPressed = !aReleased; } else { if (!aReleased) { KeyEvent keyInfo; if (GetKey(key, out keyInfo)) { Enqueue(keyInfo); } } } }