Hallo zusammen,
ich versuche momentan, eine Art Mini-WinCompose in AutoIt zu schreiben, da bei meiner Arbeit aus Sicherheitsgründen zwar AutoIt-Skript erlaubt sind, unbekannte Programme aber nicht ohne vorherige Prüfung freigegeben werden.
Folgenden Code habe ich dafür bisher geschrieben:
#include <Misc.au3>
; Only run this script once
If _Singleton("Compose", 1) = 0 Then
Exit
EndIf
HotKeySet("{CAPSLOCK}", "ComposeFunction")
While 1
Sleep(100)
Wend
Func ComposeFunction()
HotKeySet('"', "UmlautsFunction")
HotKeySet("s", "Compose_s")
EndFunc
Func UmlautsFunction()
HotKeySet('"') ; Unset umlauts prefix hotkey
HotKeySet("s") ; Unset ß hotkey
HotKeySet("a", "SendComposeUmlauts")
HotKeySet("o", "SendComposeUmlauts")
HotKeySet("u", "SendComposeUmlauts")
HotKeySet("A", "SendComposeUmlauts")
HotKeySet("O", "SendComposeUmlauts")
HotKeySet("U", "SendComposeUmlauts")
EndFunc
Func SendComposeUmlauts()
; Remove hotkeys
HotKeySet("a")
HotKeySet("o")
HotKeySet("u")
HotKeySet("A")
HotKeySet("O")
HotKeySet("U")
Select ; The last hotkey pressed
Case @HotKeyPressed == "a"
Send("ä", 1)
Case @HotKeyPressed == "o"
Send("ö", 1)
Case @HotKeyPressed == "u"
Send("ü", 1)
Case @HotKeyPressed == "A"
Send("Ä", 1)
Case @HotKeyPressed == "O"
Send("Ö", 1)
Case @HotKeyPressed == "U"
Send("Ü", 1)
EndSelect
EndFunc
Func Compose_s()
HotKeySet('"') ; Unset umlaut hotkeys
HotKeySet("s") ; Unset ß hotkey
Send("ß", 1)
EndFunc
Alles anzeigen
Meistens funktioniert das auch recht gut. Allerdings komme ich immer mal wieder in Szenarien, wo ich entweder per [Feststelltaste]+["]+[a] zuerst wie geplant das "ä" erzeuge, anschließend meine [s]-Taste allerdings zu einem "ß" führt - und zwar solange, bis ich nochmal per [Feststelltaste]+[s] selbst ein "ß" getippt habe.
Zum anderen bleibt scheinbar manchmal die Feststelltaste "hängen" und nach dem Schreiben von Umlauten werden sämtliche Tasten als Großbuchstaben abgeschickt.
Da ich noch Anfänger bei AutoIt bin, kann ich mir das erste Problem noch halbwegs damit erklären, dass die Feststelltaste die Compose-Sequenz initialisiert und dann nicht richtig entfernt/vervollständigt wird. Beim zweiten Problem bin ich allerdings komplett ratlos, zumal der Fehler auch nicht immer auftritt, sondern nur immer mal wieder. Wird da vielleicht die Umschalttaste manchmal wirklich ans System weitergeleitet und nur manchmal abgefangen? Und wenn ja, wie kann ich sicherstellen, dass die Umschalltaste jedes Mal abgefangen und zmdst. nach dem Senden der Tasten wieder deaktiviert wird?
Danke für eure Hilfe