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


Anmelden zum Antworten