Tastatur LEDs ansteuern |
|
| System | Win9x, WinNT, Win2000, WinXP, Vista, Win7 |
|---|---|
| Ab Delphi-Version | Delphi 1 |
| Letzte Änderung | 28.09.2010 |
Der Artikel zeigt, wie die Tastatur-LEDs (NUM, ROLLEN, CAPS-LOCK) angesteuert werden können. Diese Methode hat nicht nur Auswirkungen auf die LEDs, sondern auch auf den Status der jeweiligen Tasten.
Windows;
procedure SetLED(Key: Byte; MakeOn: Boolean);
var
KS: TKeyboardState;
begin
GetKeyboardState(KS);
// Wenn Status vom gewünschten abweicht
if ((KS[Key] <> 0) xor MakeOn) then
begin
// Je nach Plattform / Key unterschiedliche Strategien
if (Win32Platform = VER_PLATFORM_WIN32_NT)
or (Key <> VK_NUMLOCK) then
begin
// Tastendruck simulieren
keybd_event(Key, $45, KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(Key, $45, KEYEVENTF_EXTENDEDKEY or
KEYEVENTF_KEYUP, 0);
end
else
begin
// Gewünschten Status per Setkeyboardstate setzen
KS[Key]:= Ord(MakeOn);
SetKeyboardState(KS);
end;
end;
end;
Der Aufruf der Methode könnte z.B. folgendermaßen aussehen:
procedure TForm1.Button1Click(Sender: TObject);
begin
SetLED(VK_CAPITAL, True);
end;
Dem ersten Parameter muss die Byte-Konstante für die entsprechende LED übergeben werden (Virtual Keys). Folgende Werte sind möglich:
- VK_NUMLOCK: NUM-Lock-Taste
- VK_CAPITAL: Feststell-Taste
- VK_SCROLL: Scroll-Taste
Der zweite Parameter legt fest, ob die LED an- oder ausgeschaltet werden soll.Da die LEDs nicht als Lichtorgel ausgelegt wurden, sollten man deren Status nicht zu häufig ändern, da es sonst zu Beschädigungen an der Tastatur kommen kann.
Quellen:
http://support.microsoft.com/kb/q177674/
http://support.microsoft.com/kb/q127190/