Problem:
Aus verschiedenen Gründen will man bestimmte Tasten deaktivieren oder mit einer anderen Taste tauschen.
Als Beispiel wird hier immer gern die linke Windows-Taste genannt und als Grund ein Spiel, dass beim drücken der Windows-Taste minimiert wird.
Zum Verständnis:
Beim drücken einer Taste wird unter Windows ein ScanCode erzeugt und als Nachricht ans Betriebssystem übergeben.
Wir wollen nun dass beim drücken einer bestimmten Taste eben diese Nachricht den Empfänger nicht erreicht oder er einen anderen Code in der Nachricht erhält.
Windows hat für solche Zwecke einen Key (
Scancode Map) in der Registry vorgesehen.
Entspricht der Code der Nachricht einem Code in dieser Map so wird zunächst eine Anweisung ausgeführt und anschließend die Nachricht weiterverarbeitet.
Lösung:
Da es sich hier um einen Pro-Tip handelt, verzichte ich auf die Erklärung was eine Registry ist und wie man dort etwas ändern kann bzw. was eine falsche Änderung für Risiken mit sich bringt.
Wir öffnen in der Registry unter
HKLM\System\CurrentControlSet\Control\Keyboard Layout den Key
Scancode Map sollte er nicht vorhanden sein einfach als Datentyp
REG_BINARY erstellen.
Jetzt müssen wir erst verstehen welche Aufbau der ScanCode hat den wir abfangen möchten. Hierbei handelt es sich um HEX Daten. Diese sind wie folgt aufgebaut:
Code:
Byte 0 bis 4 enthalten den Header:Versionsinfo
Byte 4 bis 8 enthalten den Header:Flags
Byte 8 bis 12 enthalten den Header:Anzahl der Mappings
ab Byte 12 sind die Mappings in einer Größe von jeweils 4 Bytes enthalten.
Am Ende kommen noch 4 Bytes als Ende-Markierung.
Die ersten beiden Einträge (die ersten 8 Bytes) sind bisher immer auf 0 gesetzt und sollten nicht geändert werden.
Der dritte Eintrag enthält die Anzahl der Scancodes + die Ende-Markierung!
Ab Byte 12 können wir nun so viele ScanCodes mitgeben wie wir möchten. Wir müssen nur die Anzahl entsprechend anpassen.
Der ScanCode besteht also aus 4 Stellen und wird von hinten gelesen.
Die ersten beiden Stellen stehen für die gedrückte Taste, die zweiten beiden Stellen für die neue Taste (wenn wir die Taste deaktivieren möchten einfach hier
0000 eingeben.
Zurück zum Beispiel, wir wollten die linke Windows-Taste deaktivieren:
Der HEX-Code für den Registry-Key muss also
0000000000000000020000005BE0000000000000 lauten.
Wollen wir die Windows-Taste aber lieber umbelegen,
meinetwegen auf die Taste Rollen muss der Code so aussehen:
0000000000000000020000005BE0460000000000
Eine Liste mit dem ScanCode der Tasten gibt's direkt von Microsoft hier:
http://download.microsoft.com/download/ ... ancode.doc