UW-Forum

Forum von UW-Operator.de
Aktuelle Zeit: Donnerstag 18. April 2024, 19:48

Alle Zeiten sind UTC+02:00




Ein neues Thema erstellen  Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
Ungelesener BeitragVerfasst: Montag 8. Februar 2016, 14:36 
Offline
Benutzeravatar

Registriert: Samstag 10. Dezember 2011, 17:19
Beiträge: 282
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

_________________
In diesem Sinne...

Ulrich Wiedholz
UW-Operator.de


Diesen Beitrag melden
Nach oben
Ungelesener BeitragVerfasst: Samstag 11. November 2017, 10:14 
Offline

Registriert: Samstag 11. November 2017, 02:33
Beiträge: 9
Thank you ever so for you article.Thanks Again. Really Great. Peetz

_________________
Sero


Diesen Beitrag melden
Nach oben
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 2 Beiträge ] 

Alle Zeiten sind UTC+02:00


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst neue Themen in diesem Forum erstellen.
Du darfst Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  

© 2006-2020 Ulrich Wiedholz / UW-Operator.de
Disclaimer | Impressum | Datenschutz

Zusätzlich für das Forum:
Nutzungsbedingungen | Datenschutzerklärung

Powered by phpBB® Forum Software © phpBB Limited
Deutsche Übersetzung durch phpBB.de