Da ich im anderen Thread mein Problem nicht richtig rüberbringen konnte, versuche ich es hier besser zu machen.
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 .