Das Windows-Tool AutoHotkey erlaubt es, über in Skripten selbstdefinierte Tastaturkürzel Windows leichter zu bedienen bzw. zu automatisieren. Man kann es sehr gut dazu verwenden, Sonderzeichen aus anderen Sprachen leichter einzugeben.
Startet man das Programm nach der erfolgreichen Installation, so findet man ein passendes Icon in der Taskleiste (weißes H auf grünem Hintergrund). Bei jedem Programmstart wird das Skript AutoHotkey.ahk geladen.
In dieses Skript bauen wir nun die Tastaturkürzel ein. Die Kürzel werden uns erlauben, dass z.B. das Wort Barc9a automatisch in Barça umgewandelt wird, und zwar nicht nur in Teachmaster, sondern in jedem Windows-Programm!
Alle Zeichen von allen Sprachen sind im sogenannten „Unicode-Zeichensatz“ definiert. Der Trick ist, AutoHotkey anzuweisen, dass z.B. die Kombination c9 automatisch in ein ganz bestimmtes Zeichen aus diesem Unicode-Zeichensatz, nämlich ç, umgewandelt wird.
Klicken Sie mit der rechten Maustaste auf das AutoHotkey-Icon und wählen Sie „Edit This Script“ aus. Anschließend fügen Sie unten in das Skript die Funktionen ein, die im nächsten Abschnitt („Notwendige Funktionen“) stehen. Diese sorgen dafür, dass ein Zeichen mit seiner Unicode-Nummer angesprochen werden kann.
Danach können Sie von der Seite Liste von "Hotstrings" für AutoHotkey fertige Listen in das Skript hinzufügen.
Damit AutoHotkey die Änderungen mitbekommt, speichern und schließen Sie das Skript. Anschließend wählen Sie beim AutoHotkey-Icon mit der rechten Maustaste „Reload This Script“ aus.
EncodeInteger( p_value, p_size, p_address, p_offset )
{
loop, %p_size%
DllCall( "RtlFillMemory"
, "uint", p_address+p_offset+A_Index-1
, "uint", 1
, "uchar", ( p_value >> ( 8*( A_Index-1 ) ) ) & 0xFF )
}
SendInputU( p_text )
{
StringLen, len, p_text
INPUT_size = 28
event_count := ( len//4 )*2
VarSetCapacity( events, INPUT_size*event_count, 0 )
loop, % event_count//2
{
StringMid, code, p_text, ( A_Index-1 )*4+1, 4
base := ( ( A_Index-1 )*2 )*INPUT_size+4
EncodeInteger( 1, 4, &events, base-4 )
EncodeInteger( "0x" code, 2, &events, base+2 )
EncodeInteger( 4, 4, &events, base+4 ) ; KEYEVENTF_UNICODE
base += INPUT_size
EncodeInteger( 1, 4, &events, base-4 )
EncodeInteger( "0x" code, 2, &events, base+2 )
EncodeInteger( 2|4, 4, &events, base+4 ) ; KEYEVENTF_KEYUP|KEYEVENTF_UNICODE
}
result := DllCall( "SendInput", "uint", event_count, "uint", &events, "int", INPUT_size )
if ( ErrorLevel or result < event_count )
{
MsgBox, [SendInput] failed: EL = %ErrorLevel% ~ %result% of %event_count%
return, false
}
return, true
}
Quelle: http://www.autohotkey.com/board/topic/6751-sendinput-in-unicode-mode
Klickt man mit der rechten Maustaste auf das Icon von AutoHotkey, so öffnet sich nach einem Klick auf „Edit This Script“ das Windows-Notepad. Möchte man einen anderen Editor einstellen, z.B. Notepad++, so muss folgender Registry-Eintrag geändert werden:
HKEY_CLASSES_ROOT\AutoHotkeyScript\Shell\Edit\Command
Den dortigen Eintrag ändert man wie folgt:
"C:\Program Files (x86)\Notepad++\notepad++.exe" "%1"
Ist Notepad++ an einer anderen Stelle installiert, muss natürlich noch obiges Verzeichnis angepasst werden.
Damit Notepad++ auch bei AutoHotkey Syntax-Highlighting unterstützt, muss die Dateiendung .ahk noch an geeigneter Stelle hinzugefügt werden. Dazu geht man zu Einstellungen → Stile, wählt auf der linken Seite „autoIt“ aus und fügt unten bei „Benutzer-Erw.“ ahk hinzu.