Tastenkombination CTRL + ^ auswerten
-
Hallo,
vorab schonmal ein schönes WE an alle Leser dieses Thema's.
Mein Problem: Ich möchte die Tastenkombination CTRL + ^ auswerten.
Mein Stand: CTRL + W usw. kann ich auswerten mit (beispielsweise):
if ((GetKeyState(VK_CONTROL) & 0x8000) && (GetKeyState('W') & 0x8000)) { Key= 0; Edit1->Text= "CTRL + W gedrückt."; }
Meine Versuchsreihe habe ich durchgeführt mit:
if ((GetKeyState(VK_CONTROL) & 0x8000) && (GetKeyState('^') & 0x8000)) { Key= 0; Edit1->Text= "CTRL + ^ gedrückt."; }
Beim 2. GetKeyState habe ich auch versucht mit 0x5E abzufragen, geht jedoch auch nicht.
(1) Wie muss ich die Abfrage gestalten, damit auf die Tastenkombination CTRL + ^ reagiert wird?
MfG
Edit: Ok, hab jetzt schon herausgefunden, dass der ASCII-Zeichensatz nur für die Tastaturzeichen 0-9 und A-Z anwendbar ist. Die anderen Tasten haben andere Hex-Werte. Über die Board-Suche nach GetKeyState habe ich herausgefunden, dass diese Hex-Werte in der winuser.h zu finden sind. Dort stehen die Tastenbezeichnungen und die zugehörigen Hex-Werte für die sog. VirtualKeys. Wenn ich jetzt noch wüsste, wie die Taste ^ dort heißt, wär mein Problem evtl. gelöst...
-
Hallo
Wenn du die Taste hier nicht findest dann starte dein Programm, drück die ^ Taste und las dir mit dem Debugger den Hex-code ausgeben. Den kannst du dann hart in dein Programm einbauen. Ist dann aber fest an ein Tastaturlayout gebunden.
bis bald
akari
-
GetAsyncKeyState() mit dem Befehl kann man finde ich am besten abfragen was gerade geschiet denn du frägst nach zB Strg(=VK_CONTROL),Umschalt(=VK_SHIFT) oder Alt(=VK_MENU) und das letzte druckbare Zeichen frägst du dann einfach über GetAsyncKeyState(char([Gesamte_Tastenkombination])) aus und der Rückgabewert der funktion sollte bei erfolgreicher anwendung immer kleiner 0 sein.
-
Guten Morgen,
im msdn habe ich leider die Taste nicht gefunden. Ich habe mir ein kleines Freeware-Tool gezogen (http://www.tortools.de/), das die Scan-Codes der gedrückten Tasten anzeigt.
Dann habe den entsprechenden Hex-Wert in der winuser.h unter den Definitionen der Virtual Keys gesucht. Dort fand ich in Zeile 558 die Bezeichnung VK_OEM_5. Diese benutzte ich nun in meiner Abfrage und es funktioniert:if ((GetKeyState(VK_CONTROL) & 0x8000) && (GetKeyState(VK_OEM_5) & 0x8000)) { Key= 0; Edit1->Text= "CTRL + ^ gedrückt."; }
Allerdings muss bei gedrückten Tasten CTRL + ^ immer noch eine weitere Taste gedrückt werden (zB ein Buchstabe), damit das Zeichen ^ ausgelöst wird.
Danke für Eure Antworten
MfG