Key-Code der Tasten ermitteln, die beim jeweiligen Keyboard-Layout für "(" gedrückt werden

  • Da ich im anderen Thread mein Problem nicht richtig rüberbringen konnte, versuche ich es hier besser zu machen. 8o

    In einem Script will ich mit _IsPressed() prüfen, ob die Taste(n) für ein "(" Zeichen gedrückt wurde(n). Je nach Keyboard-Layout müssem verschieden Tasten gedrückt werden, um ein "(" zu schreiben. Bei manchen wird nur 1 Taste benötigt (z.B. beim französischen die Taste mit der 5), bei anderen werden 2 Tasten benutzt (z.B. beim deutschen: Shift+8).

    _IsPressed() erwartet einen Key-Code (hex) als Parameter, der geprüft wird. Wie kann man beim jeweiligen Keyboard-Layout die Key-Codes der Tasten ermitteln, die für "(" gedrückt werden müssen?

    Wozu es gebraucht wird

    Mein CallTipViewer zeigt in PSPad (SciTE ist geplant) einen CallTip an, wenn das Caret hinter der runden öffnenden Klammer "(" einer Funktion steht und man den Shortcut Ctrl+Shift+Space drückt. Das sieht dann so aus:

    Das soll erweitert werden, sodass ein CallTip automatisch angezeigt wird, wenn in PSPad ein "(" eingegeben wird. Da PSPad jedoch keine Events zur Verfügung stellt, bleibt nur die Möglichkeit, in meinem CallTipViewer-Script eine systemweite Erkennung zu implementieren. Das mache ich zur Zeit ganz provisorisch mit

    If _IsPressed("10", $hDLL) And _IsPressed("38", $hDLL) Then <= wenn Shift+8 gedrückt wird

    gefolgt von einer Prüfung, ob PSPad den Keyboard-Fokus hat. - Das funktioniert aber nur mit Tastaturlayouts, bei denen Shift+8 das "(" ergeben! Schon bei unseren Nachbarn in Frankreich funktioniert es nicht, wenn sie das FR Layout eingestellt haben. Ebensowenig bei Usern mit englischem, belgischem, kurdischem, ... Layout. Deshalb müssen beim jeweiligen Keyboard-Layout die Key-Codes der Tasten ermittelt werden, die für "(" gedrückt werde .

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.

    Einmal editiert, zuletzt von Professor Bernd (9. Februar 2021 um 00:07)