diff options
author | florian <florian@b9310e46-f624-0410-8ea1-cfbb3a30dc96> | 2008-05-06 11:41:19 +0000 |
---|---|---|
committer | florian <florian@b9310e46-f624-0410-8ea1-cfbb3a30dc96> | 2008-05-06 11:41:19 +0000 |
commit | ea758f5173b5a8c16407f334b498eee21a7d1df6 (patch) | |
tree | ac4aa815d30dbcfd139b89efbae37910735e54c2 /windows/autohotkey | |
parent | 154796bb5b276fe4ea11b7a1e878ada8a16024e1 (diff) | |
download | neo-layout-ea758f5173b5a8c16407f334b498eee21a7d1df6.tar.gz neo-layout-ea758f5173b5a8c16407f334b498eee21a7d1df6.tar.bz2 neo-layout-ea758f5173b5a8c16407f334b498eee21a7d1df6.zip |
git-svn-id: https://svn.neo-layout.org@505 b9310e46-f624-0410-8ea1-cfbb3a30dc96
Diffstat (limited to 'windows/autohotkey')
-rw-r--r-- | windows/autohotkey/README.txt | 86 | ||||
-rw-r--r-- | windows/autohotkey/neo20-all-in-one.ahk | 3198 | ||||
-rw-r--r-- | windows/autohotkey/neo20-all-in-one.exe | bin | 0 -> 222462 bytes | |||
-rw-r--r-- | windows/autohotkey/neo20_mod-test.ahk | 2210 |
4 files changed, 5494 insertions, 0 deletions
diff --git a/windows/autohotkey/README.txt b/windows/autohotkey/README.txt new file mode 100644 index 0000000..4b4c207 --- /dev/null +++ b/windows/autohotkey/README.txt @@ -0,0 +1,86 @@ +Version 24.02.2008 + +== Installation == +=== Direkte Installation === +Einfach das Archiv neo20-all-in-one.exe herunterladen und die Datei irgendwo +speichern (am besten auf dem Desktop z.B.). Danach einen Doppelklick auf +diese .exe-Datei und NEO steht in voller Funktionalität zur Verfügung! +Das alles geht ohne Admin-Rechte und ist auf jedem Rechner sofort ausführbar. +Achtung: Da sich NEO in der Entwicklung befindet, kann es vorkommen, dass die +exe-Datei gegenüber der Datei neo20-all-in-one.ahk leicht veraltet sein kann. +Entwickler sollten daher Autohotkey selbst runterladen, wie unten beschrieben. + +Um kurzzeitig zu QWERTZ zu wechseln, kann mit Shift+Pause das Skript pausiert +werden. + +Momentan befindet sich in der Testphase, ob die 6. Ebene über Shift+Mod4 oder +über Mod3+Mod4 angesprochen werden soll (Shift+Mod4 zum Markieren bleibt +erhalten). Die Datei neo20_mod-test.ahk spricht die 6. Ebene über Mod3+Mod4 an, +ist jedoch nicht aktuell. + +=== Autohotkey herunter laden === +Man braucht als erstes das Programm namens »autohotkey« +(http://www.autohotkey.com/download/AutohotkeyInstall.exe). +Um dieses zu installieren benötigt man KEINE Administratorrechte, wenn man das +Programm beispielsweise in das Verzeichnis »Eigene Dateien/NEO« installiert. +Oder in ein anderes Verzeichnis, für das man Schreibrechte hat. + +=== ahk-Dateien === +Danach kann man das ahk-Skript »neo20-all-in-one.ahk« +mit einem Doppelklick starten. Man erhält dann ein Systray-Icon, mit dem man +das Skript vorübergehend deaktivieren (Suspend) oder komplett beenden kann. + +Wenn das Öffnen nicht direkt funktioniert: Öffnen mit -> Autohotkey.exe +auswählen -> Immer mit diesem Programm öffnen. + +=== Automatischer Start === +Bei Bedarf kann man sich eine Verknüpfung mit neo20-all-in-one.ahk in den +Autostart-Ordner legen, dann hat man die Belegung direkt bei der Anmeldung. + +== Wie es funktioniert == +Das Programm kann alle Tastendrucke abfangen und statt dessen andere Tasten +simulieren. Die Zeile + a::send b +fängt z. B. die Taste »a« ab und sendet statt dessen ein »b«. +Die ahk-Dateien lassen sich mit einem Texteditor bearbeiten, man muss +dann nur das Skript neu starten um die Änderungen zu übernehmen. + +== Bekannte Fehler == +Da die Compose-Taste auf rechter Mod3 + Tab liegt, mußte die Tabulator-Taste +umgemappt werden. Dadurch funktioniert leider die ShiftAltTab nicht mehr. +AltTab reagiert hingegen wie gewohnt. + +Bisher reagieren nur die Buchstaben der 1. und 2. Ebene richtig auf +CapsLock (also immer groß schreiben – CapsLock erreicht man unter Neo, wenn +man erst die rechte und dann die linke Mod3-Tasten gleichzeitig drückt). + +== Ziffernblock == +Der Ziffernblock reagiert nicht auf Tastenkombinationen mit Strg, Alt usw. + +Der Ziffernblock auf der 2. Ebene ist wahlweise +- bei AUSgeschaltetem Numlock +- bei EINgeschaltetem Numlock mit Shift +zu erreichen. +Der Ziffernblock auf der 3. Ebene funktioniert bei EINgeschaltetem +Numlock mit Mod3 (Caps/#). +Der Ziffernblock auf der 4. Ebene ist wahlweise +- bei AUSgeschaltetem Numlock mit Mod3 + Shift +- bei EINgeschaltetem Numlock über Mod4 +zu erreichen. +Da die 2. Ebene über Shift ebenfalls bei EINgeschaltetem Numlock +funktioniert ist das Ausschalten des Ziffernblocks nicht unbedingt +nötig. + +== Besonderheiten bei der ahk-Windowsversion von Neo == +Ebene 4 des Ziffernblocks lässt sich außer über Mod3+Shift auch über +Mod4 ansprechen. + +== Warnung == +ACHTUNG! Bei Windows ist folgendes festgelegt: +AltGr + Pos1 = Abmelden +AltGr + Ende = Computer ausschalten +--> diese Kombinationen treten auf bei AUSgeschaltetem Numlock mit Mod4 + +== FAQ == +Bei Problemen erst mal in die FAQ schauen, das meiste ist bekannt. +Hier: https://neo.eigenheimstrasse.de/svn/FAQ.txt diff --git a/windows/autohotkey/neo20-all-in-one.ahk b/windows/autohotkey/neo20-all-in-one.ahk new file mode 100644 index 0000000..8a30849 --- /dev/null +++ b/windows/autohotkey/neo20-all-in-one.ahk @@ -0,0 +1,3198 @@ +/*
+ Titel: NEO 2.0 beta Autohotkey-Treiber
+ $Revision: 490 $
+ $Date: 2008-04-19 22:51:27 +0200 (Sa, 19 Apr 2008) $
+ Autor: Stefan Mayer <stm (at) neo-layout.org>
+ Basiert auf: neo20-all-in-one.ahk vom 29.06.2007
+
+ TODO: - ausgiebig testen...
+ - Menü des Tasksymbols
+ - Bessere Lösung für das leeren von PriorDeadKey finden, damit die Sondertasten
+ nicht mehr abgefangen werden müssen.
+ - Ebene 4 und 5 tauschen (im Programmcode, in der Doku ists schon)
+ - CapsLock auf 1. und 2. Ebene einbauen:
+ Die Buchstaben reagieren richtig auf CapsLock, da hier "sendinput {blind}"
+ verwendet wird. Bei anderen Tasten muss CapsLock in der ersten und zweiten Ebene
+ explizit abgefragt werden.
+ (Lässt sich das elegant in eine Funktion auslagern?)
+ Ideen: - Symbol ändern (Neo-Logo abwarten)
+ - bei Ebene 4 rechte Hand (Numpad) z.B. Numpad5 statt 5 senden
+ CHANGES: - SUBSCRIPT von 0 bis 9 sowie (auf Ziffernblock) + und -
+ • auch bei Ziffernblock auf der 5. Ebene
+ - Kein Parsen über die Zwischenablage mehr
+ - Vista-kompatibel
+ - Compose-Taste
+ • Brüche (auf Zahlenreihe und Hardware-Ziffernblock)
+ • römische Zahlen
+ • Ligaturen und Copyright
+*/
+
+; aus Noras script kopiert:
+#usehook on
+#singleinstance force
+#LTrim
+ ; Quelltext kann eingerückt werden,
+ ; msgbox ist trotzdem linksbündig
+
+SetTitleMatchMode 2
+SendMode InputThenPlay
+
+name = Neo 2.0
+enable = Aktiviere %name%
+disable = Deaktiviere %name%
+
+; Überprüfung auf deutsches Tastaturlayout
+; ----------------------------------------
+
+regread, inputlocale, HKEY_CURRENT_USER, Keyboard Layout\Preload, 1
+regread, inputlocalealias, HKEY_CURRENT_USER
+ , Keyboard Layout\Substitutes, %inputlocale%
+if inputlocalealias <>
+ inputlocale = %inputlocalealias%
+if inputlocale <> 00000407
+{
+ suspend
+ regread, inputlocale, HKEY_LOCAL_MACHINE
+ , SYSTEM\CurrentControlSet\Control\Keyboard Layouts\%inputlocale%
+ , Layout Text
+ msgbox, 48, Warnung!,
+ (
+ Nicht kompatibles Tastaturlayout:
+ `t%inputlocale%
+ `nDas deutsche QWERTZ muss als Standardlayout eingestellt
+ sein, damit %name% wie erwartet funktioniert.
+ `nÄndern Sie die Tastatureinstellung unter
+ `tSystemsteuerung
+ `t-> Regions- und Sprachoptionen
+ `t-> Sprachen
+ `t-> Details... `n
+ )
+ exitapp
+}
+
+; Menü des Systray-Icons
+; ----------------------
+
+menu, tray, nostandard
+menu, tray, add, Öffnen, open
+ menu, helpmenu, add, About, about
+ menu, helpmenu, add, Autohotkey-Hilfe, help
+ menu, helpmenu, add
+ menu, helpmenu, add, http://&autohotkey.com/, autohotkey
+ menu, helpmenu, add, http://www.neo-layout.org/, neo
+ menu, tray, add, Hilfe, :helpmenu
+menu, tray, add
+menu, tray, add, %disable%, togglesuspend
+menu, tray, default, %disable%
+menu, tray, add
+menu, tray, add, Edit, edit
+menu, tray, add, Reload, reload
+menu, tray, add
+menu, tray, add, Nicht im Systray anzeigen, hide
+menu, tray, add, %name% beenden, exitprogram
+menu, tray, tip, %name%
+
+
+/*
+ Variablen initialisieren
+*/
+
+Ebene = 1
+PriorDeadKey := ""
+
+
+/*
+ ------------------------------------------------------
+ Modifier
+ ------------------------------------------------------
+*/
+
+; CapsLock durch Mod3+Mod3
+*#::
+*CapsLock::
+ if GetKeyState("#","P") and GetKeyState("CapsLock","P")
+ {
+ if GetKeyState("CapsLock","T")
+ {
+ setcapslockstate, off
+ }
+ else
+ {
+ setcapslockstate, on
+ }
+ }
+return
+
+; KP_Decimal durch Mod4+Mod4
+*<::
+*SC138::
+ if GetKeyState("<","P") and GetKeyState("SC138","P")
+ {
+ send {numpaddot}
+ }
+ return
+
+/*
+ Ablauf bei toten Tasten:
+ 1. Ebene Aktualisieren
+ 2. Abhängig von der Variablen "Ebene" Zeichen ausgeben und die Variable "PriorDeadKey" setzen
+
+ Ablauf bei "lebenden" (sagt man das?) Tasten:
+ 1. Ebene Aktualisieren
+ 2. Abhängig von den Variablen "Ebene" und "PriorDeadKey" Zeichen ausgeben
+ 3. "PriorDeadKey" mit leerem String überschreiben
+
+ ------------------------------------------------------
+ Reihe 1
+ ------------------------------------------------------
+*/
+
+*^::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ SendUnicodeChar(0x02C6) ; circumflex, tot
+ PriorDeadKey := "c1"
+ }
+ else if Ebene = 2
+ {
+ SendUnicodeChar(0x02C7) ; caron, tot
+ PriorDeadKey := "c2"
+ }
+ else if Ebene = 3
+ {
+ SendUnicodeChar(0x02D8) ; brevis
+ PriorDeadKey := "c3"
+ }
+ else if Ebene = 4
+ {
+ send - ; querstrich, tot
+ PriorDeadKey := "c4"
+ }
+ else if Ebene = 5
+ {
+ SendUnicodeChar(0x00B7) ; Mittenpunkt, tot
+ PriorDeadKey := "c5"
+ }
+ else if Ebene = 6
+ {
+ Send . ; punkt darunter (colon)
+ PriorDeadKey := "c6"
+ }
+return
+
+*1::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c1") ; circumflex 1
+ BSSendUnicodeChar(0x00B9)
+ Else If (PriorDeadKey = "c4") ; toter -
+ BSSendUnicodeChar(0x2081)
+ Else If (CompKey = "r_small_1")
+ Comp3UnicodeChar(0x217A) ; römisch xi
+ Else If (CompKey = "r_capital_1")
+ Comp3UnicodeChar(0x216A) ; römisch XI
+ Else
+ send {blind}1
+ If (PriorDeadKey = "comp")
+ CompKey := "1"
+ Else If (CompKey = "r_small")
+ CompKey := "r_small_1"
+ Else If (CompKey = "r_capital")
+ CompKey := "r_capital_1"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 2
+ {
+ send °
+ CompKey := ""
+ }
+ else if Ebene = 4
+ {
+ SendUnicodeChar(0x2640) ; Piktogramm weiblich
+ CompKey := ""
+ }
+ else if Ebene = 5
+ {
+ SendUnicodeChar(0x2022) ; bullet
+ CompKey := ""
+ }
+ PriorDeadKey := ""
+return
+
+*2::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x00B2)
+ Else If (PriorDeadKey = "c4") ; toter -
+ BSSendUnicodeChar(0x2082)
+ Else If (CompKey = "r_small")
+ CompUnicodeChar(0x2171) ; römisch ii
+ Else If (CompKey = "r_capital")
+ CompUnicodeChar(0x2161) ; römisch II
+ Else If (CompKey = "r_small_1")
+ Comp3UnicodeChar(0x217B) ; römisch xii
+ Else If (CompKey = "r_capital_1")
+ Comp3UnicodeChar(0x216B) ; römisch XII
+ Else
+ send {blind}2
+ If (PriorDeadKey = "comp")
+ CompKey := "2"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 2
+ {
+ SendUnicodeChar(0x2116) ; numero
+ CompKey := ""
+ }
+ else if Ebene = 4
+ {
+ SendUnicodeChar(0x26A5) ; Piktogramm Zwitter
+ CompKey := ""
+ }
+ else if Ebene = 5
+ {
+ SendUnicodeChar(0x2023) ; aufzaehlungspfeil
+ CompKey := ""
+ }
+ PriorDeadKey := ""
+return
+
+*3::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x00B3)
+ Else If (PriorDeadKey = "c4") ; toter -
+ BSSendUnicodeChar(0x2083)
+ Else If (CompKey = "1")
+ CompUnicodeChar(0x2153) ; 1/3
+ Else If (CompKey = "2")
+ CompUnicodeChar(0x2154) ; 2/3
+ Else If (CompKey = "r_small")
+ CompUnicodeChar(0x2172) ; römisch iii
+ Else If (CompKey = "r_capital")
+ CompUnicodeChar(0x2162) ; römisch III
+ Else
+ send {blind}3
+ If (PriorDeadKey = "comp")
+ CompKey := "3"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 2
+ {
+ send §
+ CompKey := ""
+ }
+ else if Ebene = 4
+ {
+ SendUnicodeChar(0x2642) ; Piktogramm männlich
+ CompKey := ""
+ }
+ PriorDeadKey := ""
+return
+
+*4::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x2074)
+ Else If (PriorDeadKey = "c4") ; toter -
+ BSSendUnicodeChar(0x2084)
+ Else If (CompKey = "r_small")
+ CompUnicodeChar(0x2173) ; römisch iv
+ Else If (CompKey = "r_capital")
+ CompUnicodeChar(0x2163) ; römisch IV
+ Else
+ send {blind}4
+ If (PriorDeadKey = "comp")
+ CompKey := "4"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 2
+ {
+ send »
+ CompKey := ""
+ }
+ else if Ebene = 3
+ {
+ send ›
+ CompKey := ""
+ }
+ else if Ebene = 5
+ {
+ Send {PgUp} ; Prev
+ CompKey := ""
+ }
+ else if Ebene = 6
+ {
+ Send +{Prev}
+ CompKey := ""
+ }
+ PriorDeadKey := ""
+return
+
+*5::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x2075)
+ Else If (PriorDeadKey = "c4") ; toter -
+ BSSendUnicodeChar(0x2085)
+ Else If (CompKey = "1")
+ CompUnicodeChar(0x2155) ; 1/5
+ Else If (CompKey = "2")
+ CompUnicodeChar(0x2156) ; 2/5
+ Else If (CompKey = "3")
+ CompUnicodeChar(0x2157) ; 3/5
+ Else If (CompKey = "4")
+ CompUnicodeChar(0x2158) ; 4/5
+ Else If (CompKey = "r_small")
+ CompUnicodeChar(0x2174) ; römisch v
+ Else If (CompKey = "r_capital")
+ CompUnicodeChar(0x2164) ; römisch V
+ Else
+ send {blind}5
+ If (PriorDeadKey = "comp")
+ CompKey := "5"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 2
+ {
+ send «
+ CompKey := ""
+ }
+ else if Ebene = 3
+ {
+ send ‹
+ CompKey := ""
+ }
+ else if Ebene = 6
+ {
+ SendUnicodeChar(0x21D2) ; Implikation
+ CompKey := ""
+ }
+ PriorDeadKey := ""
+return
+
+*6::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x2076)
+ Else If (PriorDeadKey = "c4") ; toter -
+ BSSendUnicodeChar(0x2086)
+ Else If (CompKey = "1")
+ CompUnicodeChar(0x2159) ; 1/6
+ Else If (CompKey = "5")
+ CompUnicodeChar(0x215A) ; 5/6
+ Else If (CompKey = "r_small")
+ CompUnicodeChar(0x2175) ; römisch vi
+ Else If (CompKey = "r_capital")
+ CompUnicodeChar(0x2165) ; römisch VI
+ Else
+ send {blind}6
+ If (PriorDeadKey = "comp")
+ CompKey := "6"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 2
+ {
+ send €
+ CompKey := ""
+ }
+ else if Ebene = 3
+ {
+ send £
+ CompKey := ""
+ }
+ else if Ebene = 4
+ {
+ send ¤
+ CompKey := ""
+ }
+ else if Ebene = 6
+ {
+ SendUnicodeChar(0x21D4) ; Äquivalenz
+ CompKey := ""
+ }
+ PriorDeadKey := ""
+return
+
+*7::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x2077)
+ Else If (PriorDeadKey = "c4") ; toter -
+ BSSendUnicodeChar(0x2087)
+ Else If (CompKey = "r_small")
+ CompUnicodeChar(0x2176) ; römisch vii
+ Else If (CompKey = "r_capital")
+ CompUnicodeChar(0x2166) ; römisch VII
+ Else
+ send {blind}7
+ If (PriorDeadKey = "comp")
+ CompKey := "7"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 2
+ {
+ send $
+ CompKey := ""
+ }
+ else if Ebene = 3
+ {
+ send ¢
+ CompKey := ""
+ }
+ else if Ebene = 4
+ {
+ send ¥CompKey := ""
+ }
+ else if Ebene = 6
+ {
+ Send ¬
+ CompKey := ""
+ }
+ PriorDeadKey := ""
+return
+
+*8::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x2078)
+ Else If (PriorDeadKey = "c4") ; toter -
+ BSSendUnicodeChar(0x2088)
+ Else If (CompKey = "1")
+ CompUnicodeChar(0x215B) ; 1/8
+ Else If (CompKey = "3")
+ CompUnicodeChar(0x215C) ; 3/8
+ Else If (CompKey = "5")
+ CompUnicodeChar(0x215D) ; 5/8
+ Else If (CompKey = "7")
+ CompUnicodeChar(0x215E) ; 7/8
+ Else If (CompKey = "r_small")
+ CompUnicodeChar(0x2177) ; römisch viii
+ Else If (CompKey = "r_capital")
+ CompUnicodeChar(0x2167) ; römisch VIII
+ Else
+ send {blind}8
+ If (PriorDeadKey = "comp")
+ CompKey := "8"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 2
+ {
+ send „
+ CompKey := ""
+ }
+ else if Ebene = 3
+ {
+ send ‚
+ CompKey := ""
+ }
+ else if Ebene = 5
+ {
+ Send /
+ CompKey := ""
+ }
+ else if Ebene = 6
+ {
+ SendUnicodeChar(0x2203) ; Existenzquantor
+ CompKey := ""
+ }
+ PriorDeadKey := ""
+return
+
+*9::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x2079)
+ Else If (PriorDeadKey = "c4") ; toter -
+ BSSendUnicodeChar(0x2089)
+ Else If (CompKey = "r_small")
+ CompUnicodeChar(0x2178) ; römisch ix
+ Else If (CompKey = "r_capital")
+ CompUnicodeChar(0x2168) ; römisch IX
+ Else
+ send {blind}9
+ If (PriorDeadKey = "comp")
+ CompKey := "9"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 2
+ {
+ send “
+ CompKey := ""
+ }
+ else if Ebene = 3
+ {
+ send ‘
+ CompKey := ""
+ }
+ else if Ebene = 5
+ {
+ Send *
+ CompKey := ""
+ }
+ else if Ebene = 6
+ {
+ SendUnicodeChar(0x2200) ; Allquantor
+ CompKey := ""
+ }
+ PriorDeadKey := ""
+return
+
+*0::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x2070)
+ Else If (PriorDeadKey = "c4") ; toter -
+ BSSendUnicodeChar(0x2080)
+ Else If (CompKey = "r_small_1")
+ Comp3UnicodeChar(0x2179) ; römisch x
+ Else If (CompKey = "r_capital_1")
+ Comp3UnicodeChar(0x2169) ; römisch X
+ Else
+ send {blind}0
+ If (PriorDeadKey = "comp")
+ CompKey := "0"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 2
+ {
+ send ”
+ CompKey := ""
+ }
+ else if Ebene = 3
+ {
+ send ’
+ CompKey := ""
+ }
+ else if Ebene = 5
+ {
+ Send -
+ CompKey := ""
+ }
+ else if Ebene = 6
+ {
+ SendUnicodeChar(0x2228) ; logisch oder
+ CompKey := ""
+ }
+ PriorDeadKey := ""
+return
+
+*ß::
+ EbeneAktualisieren()
+ if Ebene = 1
+ send {blind}- ; Bind
+ else if Ebene = 2
+ SendUnicodeChar(0x2013) ; Ged
+ else if Ebene = 3
+ SendUnicodeChar(0x2014)
+ else if Ebene = 4
+ SendUnicodeChar(0x254C)
+ else if Ebene = 5
+ SendUnicodeChar(0x2011)
+ else if Ebene = 6
+ SendUnicodeChar(0x2227) ; logisch und
+ PriorDeadKey := "" CompKey := ""
+return
+
+*´::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ send {´}{space} ; akut, tot
+ PriorDeadKey := "a1"
+ }
+ else if Ebene = 2
+ {
+ send ``{space}
+ PriorDeadKey := "a2"
+ }
+ else if Ebene = 3
+ {
+ send ¸ ; cedilla
+ PriorDeadKey := "a3"
+ }
+ else if Ebene = 4
+ {
+ SendUnicodeChar(0x02DB) ; ogonek
+ PriorDeadKey := "a4"
+ }
+ else if Ebene = 5
+ {
+ SendUnicodeChar(0x02D9) ; punkt oben drüber
+ PriorDeadKey := "a5"
+ }
+ else if Ebene = 6
+ {
+ SendUnicodeChar(0x02DA) ; ring obendrauf
+ PriorDeadKey := "a6"
+ }
+return
+
+
+/*
+ ------------------------------------------------------
+ Reihe 2
+ ------------------------------------------------------
+*/
+
+*q::
+ EbeneAktualisieren()
+ if Ebene = 1
+ sendinput {blind}x
+ else if Ebene = 2
+ sendinput {blind}X
+ else if Ebene = 4
+ SendUnicodeChar(0x03BE) ;xi
+ else if Ebene = 6
+ SendUnicodeChar(0x039E) ; Xi
+ PriorDeadKey := "" CompKey := ""
+return
+
+
+*w::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c6") ; punkt darunter
+ BSSendUnicodeChar(0x1E7F)
+ Else
+ sendinput {blind}v
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "c6") ; punkt darunter
+ BSSendUnicodeChar(0x1E7E)
+ Else
+ sendinput {blind}V
+ }
+ else if Ebene = 3
+ send _
+ else if Ebene = 5
+ Send {Backspace}
+ else if Ebene = 6
+ Send +{Backspace}
+ PriorDeadKey := "" CompKey := ""
+return
+
+
+
+*e::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "t5") ; Schrägstrich
+ BSSendUnicodeChar(0x0142)
+ Else If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x013A)
+ Else If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x013E)
+ Else If (PriorDeadKey = "a3") ; cedilla
+ BSSendUnicodeChar(0x013C)
+ Else If (PriorDeadKey = "c5") ; Mittenpunkt
+ BSSendUnicodeChar(0x0140)
+ Else If (PriorDeadKey = "c6") ; punkt darunter
+ BSSendUnicodeChar(0x1E37)
+ Else
+ sendinput {blind}l
+ If (PriorDeadKey = "comp") ; compose
+ CompKey := "l_small"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x0139)
+ Else If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x013D)
+ Else If (PriorDeadKey = "a3") ; cedilla
+ BSSendUnicodeChar(0x013B)
+ Else If (PriorDeadKey = "t5") ; Schrägstrich
+ BSSendUnicodeChar(0x0141)
+ Else If (PriorDeadKey = "c5") ; Mittenpunkt
+ BSSendUnicodeChar(0x013F)
+ Else If (PriorDeadKey = "c6") ; punkt darunter
+ BSSendUnicodeChar(0x1E36)
+ Else
+ sendinput {blind}L
+ If (PriorDeadKey = "comp") ; compose
+ CompKey := "l_capital"
+ Else CompKey := ""
+ }
+ else if Ebene = 3
+ {
+ send [
+ CompKey := ""
+ }
+ else if Ebene = 4
+ {
+ SendUnicodeChar(0x03BB) ;lambda
+ CompKey := ""
+ }
+ else if Ebene = 5
+ {
+ Sendinput {Blind}{Up}
+ CompKey := ""
+ }
+ else if Ebene = 6
+ {
+ Sendinput {Blind}+{Up}
+ CompKey := ""
+ }
+ PriorDeadKey := ""
+return
+
+
+*r::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x0109)
+ Else If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x010D)
+ Else If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x0107)
+ Else If (PriorDeadKey = "a3") ; cedilla
+ BSSendUnicodeChar(0x00E7)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x010B)
+ Else If ( (CompKey = "o_small") or (CompKey = "o_capital") )
+ Send {bs}©
+ Else
+ sendinput {blind}c
+ If (PriorDeadKey = "comp")
+ CompKey := "c_small"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x0108)
+ Else If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x010C)
+ Else If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x0106)
+ Else If (PriorDeadKey = "a3") ; cedilla
+ BSSendUnicodeChar(0x00E6)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x010A)
+ Else If ( (CompKey = "o_small") or (CompKey = "o_capital") )
+ Send {bs}©
+ Else
+ sendinput {blind}C
+ If (PriorDeadKey = "comp")
+ CompKey = "c_capital"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 3
+ {
+ send ]
+ CompKey := ""
+ }
+ else if Ebene = 4
+ {
+ SendUnicodeChar(0x03C7) ;chi
+ CompKey := ""
+ }
+ else if Ebene = 5
+ {
+ Send {Del}
+ CompKey := ""
+ }
+ else if Ebene = 6
+ {
+ SendUnicodeChar(0x039B) ; Lambda
+ CompKey := ""
+ }
+ PriorDeadKey := ""
+return
+
+*t::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x0175)
+ Else
+ sendinput {blind}w
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x0174)
+ Else
+ sendinput {blind}W
+ }
+ else if Ebene = 3
+ send {^}{space} ; untot
+ else if Ebene = 5
+ Send {Insert}
+ else if Ebene = 6
+ Send +{Insert}
+ PriorDeadKey := "" CompKey := ""
+return
+
+*z::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "a3") ; cedilla
+ BSSendUnicodeChar(0x0137)
+ Else If (PriorDeadKey = "c6") ; punkt darunter
+ BSSendUnicodeChar(0x1E33)
+ Else
+ sendinput {blind}k
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "a3") ; cedilla
+ BSSendUnicodeChar(0x0136)
+ Else If (PriorDeadKey = "c6") ; punkt darunter
+ BSSendUnicodeChar(0x1E32)
+ Else
+ sendinput {blind}K
+ }
+ else if Ebene = 3
+ sendraw !
+ else if Ebene = 4
+ SendUnicodeChar(0x03BA) ;kappa
+ else if Ebene = 5
+ Send ¡
+ PriorDeadKey := "" CompKey := ""
+return
+
+*u::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x0125)
+ Else If (PriorDeadKey = "c4") ; Querstrich
+ BSSendUnicodeChar(0x0127)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x1E23)
+ Else If (PriorDeadKey = "c6") ; punkt darunter
+ BSSendUnicodeChar(0x1E25)
+ Else sendinput {blind}h
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x0124)
+ Else If (PriorDeadKey = "c4") ; Querstrich
+ BSSendUnicodeChar(0x0126)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x1E22)
+ Else If (PriorDeadKey = "c6") ; punkt darunter
+ BSSendUnicodeChar(0x1E24)
+ Else sendinput {blind}H
+ }
+ else if Ebene = 3
+ {
+ If (PriorDeadKey = "c4") ; Querstrich
+ BSSendUnicodeChar(0x2264) ; kleiner gleich
+ Else
+ send {blind}<
+ }
+ else if Ebene = 4
+ SendUnicodeChar(0x03C8) ;psi
+ else if Ebene = 5
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x2077)
+ Else If (PriorDeadKey = "c4") ; toter -
+ BSSendUnicodeChar(0x2087)
+ Else
+ Send 7
+ }
+ else if Ebene = 6
+ SendUnicodeChar(0x03A8) ; Psi
+ PriorDeadKey := "" CompKey := ""
+return
+
+*i::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x011D)
+ Else If (PriorDeadKey = "c3") ; brevis
+ BSSendUnicodeChar(0x011F)
+ Else If (PriorDeadKey = "a3") ; cedilla
+ BSSendUnicodeChar(0x0123)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x0121)
+ Else sendinput {blind}g
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x011C)
+ Else If (PriorDeadKey = "c3") ; brevis
+ BSSendUnicodeChar(0x011E)
+ Else If (PriorDeadKey = "a3") ; cedilla
+ BSSendUnicodeChar(0x0122)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x0120)
+ Else sendinput {blind}G
+ }
+ else if Ebene = 3
+ {
+ If (PriorDeadKey = "c4") ; Querstrich
+ SendUnicodeChar(0x2265) ; größer gleich
+ Else
+ send >
+ }
+ else if Ebene = 4
+ SendUnicodeChar(0x03B3) ;gamma
+ else if Ebene = 5
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x2078)
+ Else If (PriorDeadKey = "c4") ; toter -
+ BSSendUnicodeChar(0x2088)
+ Else
+ Send 8
+ }
+ else if Ebene = 6
+ SendUnicodeChar(0x0393) ; Gamma
+ PriorDeadKey := "" CompKey := ""
+return
+
+*o::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "t5") ; durchgestrichen
+ BSSendUnicodeChar(0x0192)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x1E1F)
+ Else sendinput {blind}f
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "t5") ; durchgestrichen
+ BSSendUnicodeChar(0x0191)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x1E1E)
+ Else sendinput {blind}F
+ }
+ else if Ebene = 3
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x2259) ; entspricht
+ Else If (PriorDeadKey = "t1") ; tilde
+ BSSendUnicodeChar(0x2245) ; ungefähr gleich
+ Else If (PriorDeadKey = "t5") ; Schrägstrich
+ BSSendUnicodeChar(0x2260) ; ungleich
+ Else If (PriorDeadKey = "c4") ; Querstrich
+ BSSendUnicodeChar(0x2261) ; identisch
+ Else If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x225A) ; EQUIANGULAR TO
+ Else If (PriorDeadKey = "a6") ; ring drüber
+ BSSendUnicodeChar(0x2257) ; ring equal to
+ Else
+ send `=
+ }
+ else if Ebene = 4
+ SendUnicodeChar(0x03C6) ;phi
+ else if Ebene = 5
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x2079)
+ Else If (PriorDeadKey = "c4") ; toter -
+ BSSendUnicodeChar(0x2089)
+ Else
+ Send 9
+ }
+ else if Ebene = 6
+ SendUnicodeChar(0x03A6) ; Phi
+ PriorDeadKey := "" CompKey := ""
+return
+
+*p::
+ EbeneAktualisieren()
+ if Ebene = 1
+ sendinput {blind}q
+ else if Ebene = 2
+ sendinput {blind}Q
+ else if Ebene = 3
+ send {&}
+ else if Ebene = 4
+ SendUnicodeChar(0x0278) ; Varphi? (latin letter phi)
+ else if Ebene = 5
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x207A)
+ Else If (PriorDeadKey = "c4") ; toter -
+ BSSendUnicodeChar(0x208A)
+ Else
+ Send {+}
+ }
+ else if Ebene = 6
+ SendUnicodeChar(0x2202) ; "geschweiftes d" (partielle Ableitung)
+ PriorDeadKey := "" CompKey := ""
+return
+
+*ü::
+ EbeneAktualisieren()
+ if Ebene = 1
+ if GetKeyState("CapsLock","T")
+ {
+ SendUnicodeChar(0x1E9E) ; versal-ß
+ }
+ else
+ {
+ send ß
+ }
+ else if Ebene = 2
+ if GetKeyState("CapsLock","T")
+ {
+ send ß
+ }
+ else
+ {
+ SendUnicodeChar(0x1E9E) ; versal-ß
+ }
+ else if Ebene = 3
+ SendUnicodeChar(0x017F) ; langes s
+ else if Ebene = 4
+ SendUnicodeChar(0x03C2) ; varsigma
+ else if Ebene = 5
+ SendUnicodeChar(0x0259) ; schwa
+ else if Ebene = 6
+ SendUnicodeChar(0x018F) ; Schwa
+ PriorDeadKey := "" CompKey := ""
+return
+
+
+*+::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ SendUnicodeChar(0x02DC) ; tilde, tot
+ PriorDeadKey := "t1"
+ }
+ else if Ebene = 2
+ {
+ SendUnicodeChar(0x00AF) ; macron, tot
+ PriorDeadKey := "t2"
+ }
+ else if Ebene = 3
+ {
+ SendUnicodeChar(0x00A8) ; Diaerese
+ PriorDeadKey := "t3"
+ }
+ else if Ebene = 4
+ {
+ send " ;doppelakut
+ PriorDeadKey := "t4"
+ }
+ else if Ebene = 5
+ {
+ SendUnicodeChar(0x002F) ; Schrägstrich, tot
+ PriorDeadKey := "t5"
+ }
+ else if Ebene = 6
+ {
+ SendUnicodeChar(0x02CF) ; komma drunter, tot
+ PriorDeadKey := "t6"
+ }
+return
+
+
+/*
+ ------------------------------------------------------
+ Reihe 3
+ ------------------------------------------------------
+*/
+
+*a::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x00FB)
+ Else If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x00FA)
+ Else If (PriorDeadKey = "a2") ; grave
+ BSSendUnicodeChar(0x00F9)
+ Else If (PriorDeadKey = "t3") ; Diaerese
+ Send, {bs}ü
+ Else If (PriorDeadKey = "t4") ; doppelakut
+ BSSendUnicodeChar(0x0171)
+ Else If (PriorDeadKey = "c3") ; brevis
+ BSSendUnicodeChar(0x016D)
+ Else If (PriorDeadKey = "t2") ; macron
+ BSSendUnicodeChar(0x016B)
+ Else If (PriorDeadKey = "a4") ; ogonek
+ BSSendUnicodeChar(0x0173)
+ Else If (PriorDeadKey = "a6") ; Ring
+ BSSendUnicodeChar(0x016F)
+ Else If (PriorDeadKey = "t1") ; tilde
+ BSSendUnicodeChar(0x0169)
+ Else If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x01D4)
+ Else
+ sendinput {blind}u
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x00DB)
+ Else If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x00DA)
+ Else If (PriorDeadKey = "a2") ; grave
+ BSSendUnicodeChar(0x00D9)
+ Else If (PriorDeadKey = "t3") ; Diaerese
+ Send, {bs}Ü
+ Else If (PriorDeadKey = "a6") ; Ring
+ BSSendUnicodeChar(0x016E)
+ Else If (PriorDeadKey = "c3") ; brevis
+ BSSendUnicodeChar(0x016C)
+ Else If (PriorDeadKey = "t4") ; doppelakut
+ BSSendUnicodeChar(0x0170)
+ Else If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x01D3)
+ Else If (PriorDeadKey = "t2") ; macron
+ BSSendUnicodeChar(0x016A)
+ Else If (PriorDeadKey = "a4") ; ogonek
+ BSSendUnicodeChar(0x0172)
+ Else If (PriorDeadKey = "t1") ; tilde
+ BSSendUnicodeChar(0x0168)
+ Else
+ sendinput {blind}U
+ }
+ else if Ebene = 3
+ send \
+ else if Ebene = 5
+ Send {blind}{Home}
+ else if Ebene = 6
+ Send {blind}+{Home}
+ PriorDeadKey := "" CompKey := ""
+return
+
+*s::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x00EE)
+ Else If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x00ED)
+ Else If (PriorDeadKey = "a2") ; grave
+ BSSendUnicodeChar(0x00EC)
+ Else If (PriorDeadKey = "t3") ; Diaerese
+ Send, {bs}ï
+ Else If (PriorDeadKey = "t2") ; macron
+ BSSendUnicodeChar(0x012B)
+ Else If (PriorDeadKey = "c3") ; brevis
+ BSSendUnicodeChar(0x012D)
+ Else If (PriorDeadKey = "a4") ; ogonek
+ BSSendUnicodeChar(0x012F)
+ Else If (PriorDeadKey = "t1") ; tilde
+ BSSendUnicodeChar(0x0129)
+ Else If (PriorDeadKey = "a5") ; (ohne) punkt darüber
+ BSSendUnicodeChar(0x0131)
+ Else
+ sendinput {blind}i
+ If (PriorDeadKey = "comp") ; compose
+ CompKey := "i_small"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x00CE)
+ Else If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x00CD)
+ Else If (PriorDeadKey = "a2") ; grave
+ BSSendUnicodeChar(0x00CC)
+ Else If (PriorDeadKey = "t3") ; Diaerese
+ Send, {bs}Ï
+ Else If (PriorDeadKey = "t2") ; macron
+ BSSendUnicodeChar(0x012A)
+ Else If (PriorDeadKey = "c3") ; brevis
+ BSSendUnicodeChar(0x012C)
+ Else If (PriorDeadKey = "a4") ; ogonek
+ BSSendUnicodeChar(0x012E)
+ Else If (PriorDeadKey = "t1") ; tilde
+ BSSendUnicodeChar(0x0128)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x0130)
+ Else
+ sendinput {blind}I
+ If (PriorDeadKey = "comp") ; compose
+ CompKey := "i_capital"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 3
+ {
+ send `/
+ CompKey := ""
+ }
+ else if Ebene = 4
+ {
+ SendUnicodeChar(0x03B9) ;iota
+ CompKey := ""
+ }
+ else if Ebene = 5
+ {
+ Sendinput {Blind}{Left}
+ CompKey := ""
+ }
+ else if Ebene = 6
+ {
+ Sendinput {Blind}+{Left}
+ CompKey := ""
+ }
+ PriorDeadKey := ""
+return
+
+*d::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x00E2)
+ Else If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x00E1)
+ Else If (PriorDeadKey = "a2") ; grave
+ BSSendUnicodeChar(0x00E0)
+ Else If (PriorDeadKey = "t3") ; Diaerese
+ send {bs}ä
+ Else If (PriorDeadKey = "a6") ; Ring
+ Send {bs}å
+ Else If (PriorDeadKey = "t1") ; tilde
+ BSSendUnicodeChar(0x00E3)
+ Else If (PriorDeadKey = "a4") ; ogonek
+ BSSendUnicodeChar(0x0105)
+ Else If (PriorDeadKey = "t2") ; macron
+ BSSendUnicodeChar(0x0101)
+ Else If (PriorDeadKey = "c3") ; brevis
+ BSSendUnicodeChar(0x0103)
+ Else
+ sendinput {blind}a
+ If (PriorDeadKey = "comp") ; compose
+ CompKey := "a_small"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x00C2)
+ Else If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x00C1)
+ Else If (PriorDeadKey = "a2") ; grave
+ BSSendUnicodeChar(0x00C0)
+ Else If (PriorDeadKey = "t3") ; Diaerese
+ send {bs}Ä
+ Else If (PriorDeadKey = "t1") ; tilde
+ BSSendUnicodeChar(0x00C3)
+ Else If (PriorDeadKey = "a6") ; Ring
+ Send {bs}Å
+ Else If (PriorDeadKey = "t2") ; macron
+ BSSendUnicodeChar(0x0100)
+ Else If (PriorDeadKey = "c3") ; brevis
+ BSSendUnicodeChar(0x0102)
+ Else If (PriorDeadKey = "a4") ; ogonek
+ BSSendUnicodeChar(0x0104)
+ Else
+ sendinput {blind}A
+ If (PriorDeadKey = "comp") ; compose
+ CompKey := "a_capital"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 3
+ {
+ sendraw {
+ CompKey := ""
+ }
+ else if Ebene = 4
+ {
+ SendUnicodeChar(0x03B1) ;alpha
+ CompKey := ""
+ }
+ else if Ebene = 5
+ {
+ Sendinput {Blind}{Down}
+ CompKey := ""
+ }
+ else if Ebene = 6
+ {
+ Sendinput {Blind}+{Down}
+ CompKey := ""
+ }
+ PriorDeadKey := ""
+return
+
+*f::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x00EA)
+ Else If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x00E9)
+ Else If (PriorDeadKey = "a2") ; grave
+ BSSendUnicodeChar(0x00E8)
+ Else If (PriorDeadKey = "t3") ; Diaerese
+ Send, {bs}ë
+ Else If (PriorDeadKey = "a4") ; ogonek
+ BSSendUnicodeChar(0x0119)
+ Else If (PriorDeadKey = "t2") ; macron
+ BSSendUnicodeChar(0x0113)
+ Else If (PriorDeadKey = "c3") ; brevis
+ BSSendUnicodeChar(0x0115)
+ Else If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x011B)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x0117)
+ Else If (CompKey = "a_small") ; compose
+ {
+ Send {bs}æ
+ CompKey := ""
+ }
+ Else If (CompKey = "o_small") ; compose
+ {
+ Send {bs}œ
+ CompKey := ""
+ }
+ Else
+ sendinput {blind}e
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x00CA)
+ Else If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x00C9)
+ Else If (PriorDeadKey = "a2") ; grave
+ BSSendUnicodeChar(0x00C8)
+ Else If (PriorDeadKey = "t3") ; Diaerese
+ Send, {bs}Ë
+ Else If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x011A)
+ Else If (PriorDeadKey = "t2") ; macron
+ BSSendUnicodeChar(0x0112)
+ Else If (PriorDeadKey = "c3") ; brevis
+ BSSendUnicodeChar(0x0114)
+ Else If (PriorDeadKey = "a4") ; ogonek
+ BSSendUnicodeChar(0x0118)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x0116)
+ Else If (CompKey = "a_capital") ; compose
+ {
+ Send {bs}Æ
+ CompKey := ""
+ }
+ Else If (CompKey = "o_capital") ; compose
+ {
+ Send {bs}Œ
+ CompKey := ""
+ }
+ Else
+ sendinput {blind}E
+ }
+ else if Ebene = 3
+ sendraw }
+ else if Ebene = 4
+ SendUnicodeChar(0x03B5) ;epsilon
+ else if Ebene = 5
+ Sendinput {Blind}{Right}
+ else if Ebene = 6
+ Sendinput {Blind}+{Right}
+ PriorDeadKey := "" CompKey := ""
+return
+
+*g::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x00F4)
+ Else If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x00F3)
+ Else If (PriorDeadKey = "a2") ; grave
+ BSSendUnicodeChar(0x00F2)
+ Else If (PriorDeadKey = "t3") ; Diaerese
+ Send, {bs}ö
+ Else If (PriorDeadKey = "t1") ; tilde
+ BSSendUnicodeChar(0x00F5)
+ Else If (PriorDeadKey = "t4") ; doppelakut
+ BSSendUnicodeChar(0x0151)
+ Else If (PriorDeadKey = "t5") ; Schrägstrich
+ BSSendUnicodeChar(0x00F8)
+ Else If (PriorDeadKey = "t2") ; macron
+ BSSendUnicodeChar(0x014D)
+ Else If (PriorDeadKey = "c3") ; brevis
+ BSSendUnicodeChar(0x014F)
+ Else
+ sendinput {blind}o
+ If (PriorDeadKey = "comp") ; compose
+ CompKey := "o_small"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x00D4)
+ Else If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x00D3)
+ Else If (PriorDeadKey = "a2") ; grave
+ BSSendUnicodeChar(0x00D2)
+ Else If (PriorDeadKey = "t5") ; Schrägstrich
+ BSSendUnicodeChar(0x00D8)
+ Else If (PriorDeadKey = "t1") ; tilde
+ BSSendUnicodeChar(0x00D5)
+ Else If (PriorDeadKey = "t4") ; doppelakut
+ BSSendUnicodeChar(0x0150)
+ Else If (PriorDeadKey = "t3") ; Diaerese
+ send {bs}Ö
+ Else If (PriorDeadKey = "t2") ; macron
+ BSSendUnicodeChar(0x014C)
+ Else If (PriorDeadKey = "c3") ; brevis
+ BSSendUnicodeChar(0x014E)
+ Else
+ sendinput {blind}O
+ If (PriorDeadKey = "comp") ; compose
+ CompKey := "o_capital"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 3
+ {
+ send *
+ CompKey := ""
+ }
+ else if Ebene = 4
+ {
+ SendUnicodeChar(0x03C9) ;omega
+ CompKey := ""
+ }
+ else if Ebene = 5
+ {
+ Send {blind}{End}
+ CompKey := ""
+ }
+ else if Ebene = 6
+ {
+ Send {blind}+{End}
+ CompKey := ""
+ }
+ PriorDeadKey := ""
+return
+
+*h::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x015D)
+ Else If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x015B)
+ Else If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x0161)
+ Else If (PriorDeadKey = "a3") ; cedilla
+ BSSendUnicodeChar(0x015F)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x1E61)
+ Else If (PriorDeadKey = "c6") ; punkt darunter
+ BSSendUnicodeChar(0x1E63)
+ Else
+ sendinput {blind}s
+ If (PriorDeadKey = "comp")
+ CompKey := "s_small"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x015C)
+ Else If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x0160)
+ Else If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x015A)
+ Else If (PriorDeadKey = "a3") ; cedilla
+ BSSendUnicodeChar(0x015E)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x1E60)
+ Else If (PriorDeadKey = "c6") ; punkt darunter
+ BSSendUnicodeChar(0x1E62)
+ Else
+ sendinput {blind}S
+ If (PriorDeadKey = "comp")
+ CompKey := "s_capital"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 3
+ {
+ send ?
+ CompKey := ""
+ }
+ else if Ebene = 4
+ {
+ SendUnicodeChar(0x03C3) ;sigma
+ CompKey := ""
+ }
+ else if Ebene = 5
+ {
+ Send ¿
+ CompKey := ""
+ }
+ else if Ebene = 6
+ {
+ SendUnicodeChar(0x03A3) ; Sigma
+ CompKey := ""
+ }
+ PriorDeadKey := ""
+return
+
+*j::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x0144)
+ Else If (PriorDeadKey = "t1") ; tilde
+ BSSendUnicodeChar(0x00F1)
+ Else If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x0148)
+ Else If (PriorDeadKey = "a3") ; cedilla
+ BSSendUnicodeChar(0x0146)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x1E45)
+ Else
+ sendinput {blind}n
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x0147)
+ Else If (PriorDeadKey = "t1") ; tilde
+ BSSendUnicodeChar(0x00D1)
+ Else If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x0143)
+ Else If (PriorDeadKey = "a3") ; cedilla
+ BSSendUnicodeChar(0x0145)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x1E44)
+ Else
+ sendinput {blind}N
+ }
+ else if Ebene = 3
+ send (
+ else if Ebene = 4
+ SendUnicodeChar(0x03BD) ;nu
+ else if Ebene = 5
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x2074)
+ Else If (PriorDeadKey = "c4") ; toter -
+ BSSendUnicodeChar(0x2084)
+ Else
+ Send 4
+ }
+ PriorDeadKey := "" CompKey := ""
+return
+
+*k::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x0155)
+ Else If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x0159)
+ Else If (PriorDeadKey = "a3") ; cedilla
+ BSSendUnicodeChar(0x0157)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x0E59)
+ Else If (PriorDeadKey = "c6") ; punkt darunter
+ BSSendUnicodeChar(0x1E5B)
+ Else
+ sendinput {blind}r
+ If (PriorDeadKey = "comp")
+ CompKey := "r_small"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x0158)
+ Else If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x0154)
+ Else If (PriorDeadKey = "a3") ; cedilla
+ BSSendUnicodeChar(0x0156)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x1E58)
+ Else If (PriorDeadKey = "c6") ; punkt darunter
+ BSSendUnicodeChar(0x1E5A)
+ Else
+ sendinput {blind}R
+ If (PriorDeadKey = "comp")
+ CompKey := "r_capital"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 3
+ {
+ send )
+ CompKey := ""
+ }
+ else if Ebene = 4
+ {
+ SendUnicodeChar(0x03C1) ;rho
+ CompKey := ""
+ }
+ else if Ebene = 5
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x2075)
+ Else If (PriorDeadKey = "c4") ; toter -
+ BSSendUnicodeChar(0x2085)
+ Else
+ Send 5
+ CompKey := ""
+ }
+ PriorDeadKey := ""
+return
+
+*l::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x0165)
+ Else If (PriorDeadKey = "a3") ; cedilla
+ BSSendUnicodeChar(0x0163)
+ Else If (PriorDeadKey = "c4") ; Querstrich
+ BSSendUnicodeChar(0x0167)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x1E6B)
+ Else If (PriorDeadKey = "c6") ; punkt darunter
+ BSSendUnicodeChar(0x1E6D)
+ Else
+ sendinput {blind}t
+ If (PriorDeadKey = "comp")
+ CompKey := "t_small"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x0164)
+ Else If (PriorDeadKey = "a3") ; cedilla
+ BSSendUnicodeChar(0x0162)
+ Else If (PriorDeadKey = "c4") ; Querstrich
+ BSSendUnicodeChar(0x0166)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x1E6A)
+ Else If (PriorDeadKey = "c6") ; punkt darunter
+ BSSendUnicodeChar(0x1E6C)
+ Else
+ sendinput {blind}T
+ If (PriorDeadKey = "comp")
+ CompKey := "t_capital"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 3
+ {
+ send {blind}- ; Bind
+ CompKey := ""
+ }
+ else if Ebene = 4
+ {
+ SendUnicodeChar(0x03C4) ;tau
+ CompKey := ""
+ }
+ else if Ebene = 5
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x2076)
+ Else If (PriorDeadKey = "c4") ; toter -
+ BSSendUnicodeChar(0x2086)
+ Else
+ Send 6
+ CompKey := ""
+ }
+ PriorDeadKey := ""
+return
+
+*ö::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c4") ; Querstrich
+ BSSendUnicodeChar(0x0111)
+ Else If (PriorDeadKey = "t5") ; Schrägstrich
+ BSSendUnicodeChar(0x00F0)
+ Else If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x010F)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x1E0B)
+ Else If (PriorDeadKey = "c6") ; punkt darunter
+ BSSendUnicodeChar(0x1E0D)
+ Else
+ sendinput {blind}d
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "c4") ; Querstrich
+ BSSendUnicodeChar(0x0110)
+ Else If (PriorDeadKey = "t5") ; Schrägstrich
+ BSSendUnicodeChar(0x00D0)
+ Else If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x010E)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x1E0A)
+ Else If (PriorDeadKey = "c6") ; punkt darunter
+ BSSendUnicodeChar(0x1E0D)
+ Else sendinput {blind}D
+ }
+ else if Ebene = 3
+ send :
+ else if Ebene = 4
+ SendUnicodeChar(0x03B4) ;delta
+ else if Ebene = 5
+ Send `,
+ else if Ebene = 6
+ SendUnicodeChar(0x0394) ; Delta
+ PriorDeadKey := "" CompKey := ""
+return
+
+*ä::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "t3") ; Diaerese
+ Send {bs}ÿ
+ Else If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x00FD)
+ Else If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x0177)
+ Else
+ sendinput {blind}y
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x00DD)
+ Else If (PriorDeadKey = "t3") ; Diaerese
+ Send {bs}Ÿ
+ Else If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x0176)
+ Else
+ sendinput {blind}Y
+ }
+ else if Ebene = 3
+ send @
+ else if Ebene = 4
+ SendUnicodeChar(0x03C5) ;upsilon
+ else if Ebene = 5
+ Send þ ; thorn
+ else if Ebene = 6
+ Send Þ ; Thorn
+ PriorDeadKey := "" CompKey := ""
+return
+
+;SC02B (#) wird zu Mod3
+
+
+/*
+ ------------------------------------------------------
+ Reihe 4
+ ------------------------------------------------------
+*/
+
+;SC056 (<) wird zu Mod4
+
+*y::
+ EbeneAktualisieren()
+ if Ebene = 1
+ sendinput {blind}ü
+ else if Ebene = 2
+ sendinput {blind}Ü
+ else if Ebene = 3
+ send {blind}{#}
+ else if Ebene = 5
+ Send {Esc}
+ PriorDeadKey := "" CompKey := ""
+return
+
+*x::
+ EbeneAktualisieren()
+ if Ebene = 1
+ sendinput {blind}ö
+ else if Ebene = 2
+ sendinput {blind}Ö
+ else if Ebene = 3
+ send $
+ else if Ebene = 5
+ Send {Tab}
+ else if Ebene = 6
+ Send +{Tab}
+ PriorDeadKey := "" CompKey := ""
+return
+
+*c::
+ EbeneAktualisieren()
+ if Ebene = 1
+ sendinput {blind}ä
+ else if Ebene = 2
+ sendinput {blind}Ä
+ else if Ebene = 3
+ send |
+ else if Ebene = 4
+ SendUnicodeChar(0x03B7) ;eta
+ else if Ebene = 5
+ Send {PgDn} ; Next
+ else if Ebene = 6
+ Send +{PgDn}
+ PriorDeadKey := "" CompKey := ""
+return
+
+*v::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x1E57)
+ Else
+ sendinput {blind}p
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x1E56)
+ Else
+ sendinput {blind}P
+ }
+ else if Ebene = 3
+ {
+ If (PriorDeadKey = "t1") ; tilde
+ BSSendUnicodeChar(0x2248)
+ Else
+ sendraw ~
+ }
+ else if Ebene = 4
+ SendUnicodeChar(0x03C0) ;pi
+ else if Ebene = 5
+ Send {Enter}
+ else if Ebene = 6
+ SendUnicodeChar(0x03A0) ; Pi
+ PriorDeadKey := "" CompKey := ""
+return
+
+*b::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x017E)
+ Else If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x017A)
+ Else If (PriorDeadKey = "a5") ; punkt drüber
+ BSSendUnicodeChar(0x017C)
+ Else If (PriorDeadKey = "c6") ; punkt drunter
+ BSSendUnicodeChar(0x1E93)
+ Else
+ sendinput {blind}z
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x017D)
+ Else If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x0179)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x017B)
+ Else If (PriorDeadKey = "c6") ; punkt drunter
+ BSSendUnicodeChar(0x1E92)
+ Else
+ sendinput {blind}Z
+ }
+ else if Ebene = 3
+ send ``{space} ; untot
+ else if Ebene = 4
+ SendUnicodeChar(0x03B6) ;zeta
+ else if Ebene = 6
+ SendUnicodeChar(0x03A9) ; Omega
+ PriorDeadKey := "" CompKey := ""
+return
+
+*n::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x1E03)
+ Else
+ sendinput {blind}b
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x1E02)
+ Else
+ sendinput {blind}B
+ }
+ else if Ebene = 3
+ send {blind}{+}
+ else if Ebene = 4
+ SendUnicodeChar(0x03B2) ;beta
+ else if Ebene = 6
+ SendUnicodeChar(0x221E) ;infty
+ PriorDeadKey := "" CompKey := ""
+return
+
+*m::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x1E41)
+ Else If (PriorDeadKey = "c6") ; punkt darunter
+ BSSendUnicodeChar(0x1E43)
+ Else If ( (CompKey = "t_small") or (CompKey = "t_capital") ) ; compose
+ CompUnicodeChar(0x2122) ; TM
+ Else If ( (CompKey = "s_small") or (CompKey = "s_capital") ) ; compose
+ CompUnicodeChar(0x2120) ; SM
+ Else
+ sendinput {blind}m
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x1E40)
+ Else If (PriorDeadKey = "c6") ; punkt darunter
+ BSSendUnicodeChar(0x1E42)
+ Else If ( (CompKey = "t_capital") or (CompKey = "t_small") ) ; compose
+ CompUnicodeChar(0x2122) ; TM
+ Else If ( (CompKey = "s_capital") or (CompKey = "s_small") ) ; compose
+ CompUnicodeChar(0x2120) ; SM
+ Else
+ sendinput {blind}M
+ }
+ else if Ebene = 3
+ send `%
+ else if Ebene = 4
+ SendUnicodeChar(0x03BC) ;micro, mu wäre 0x00B5
+ else if Ebene = 5
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x00B9)
+ Else If (PriorDeadKey = "c4") ; toter -
+ BSSendUnicodeChar(0x2081)
+ Else
+ Send 1
+ }
+ else if Ebene = 6
+ SendUnicodeChar(0x222B) ; Int
+ PriorDeadKey := "" CompKey := ""
+return
+
+*,::
+ EbeneAktualisieren()
+ if Ebene = 1
+ send {blind},
+ else if Ebene = 3
+ send "
+ else if Ebene = 4
+ SendUnicodeChar(0x03F1) ; varrho
+ else if Ebene = 5
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x00B2)
+ Else If (PriorDeadKey = "c4") ; toter -
+ BSSendUnicodeChar(0x2082)
+ Else
+ Send 2
+ }
+ else if Ebene = 6
+ SendUnicodeChar(0x221A) ; sqrt
+ PriorDeadKey := "" CompKey := ""
+return
+
+*.::
+ EbeneAktualisieren()
+ if Ebene = 1
+ send {blind}.
+ else if Ebene = 2
+ SendUnicodeChar(0x2026) ; ellipse
+ else if Ebene = 3
+ send '
+ else if Ebene = 4
+ SendUnicodeChar(0x03B8) ;theta
+ else if Ebene = 5
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x00B3)
+ Else If (PriorDeadKey = "c4") ; toter -
+ BSSendUnicodeChar(0x2083)
+ Else
+ Send 3
+ }
+ else if Ebene = 6
+ SendUnicodeChar(0x0398) ; Theta
+ PriorDeadKey := "" CompKey := ""
+return
+
+
+*-::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x0135)
+ Else If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x01F0)
+ Else If (CompKey = "i_small") ; compose
+ CompUnicodeChar(0x0133) ; ij
+ Else If (CompKey = "l_small") ; compose
+ CompUnicodeChar(0x01C9) ; lj
+ Else If (CompKey = "l_capital") ; compose
+ CompUnicodeChar(0x01C8) ; Lj
+ Else
+ sendinput {blind}j
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x0134)
+ Else If (CompKey = "i_capital") ; compose
+ CompUnicodeChar(0x0132) ; IJ
+ Else If (CompKey = "l_capital") ; compose
+ CompUnicodeChar(0x01C7) ; LJ
+ Else
+ sendinput {blind}J
+ }
+ else if Ebene = 3
+ send `;
+ else if Ebene = 4
+ SendUnicodeChar(0x03D1) ; vartheta
+ else if Ebene = 5
+ Send .
+ else if Ebene = 6
+ SendUnicodeChar(0x2207) ; Nabla
+ PriorDeadKey := "" CompKey := ""
+return
+
+/*
+ ------------------------------------------------------
+ Numpad
+ ------------------------------------------------------
+
+ folgende Tasten verhalten sich bei ein- und ausgeschaltetem
+ NumLock gleich:
+*/
+
+*NumpadDiv::
+ EbeneAktualisieren()
+ if ( (Ebene = 1) or (Ebene = 2) )
+ send {NumpadDiv}
+ else if Ebene = 3
+ send ÷
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ SendUnicodeChar(0x2215) ; slash
+ PriorDeadKey := "" CompKey := ""
+return
+
+*NumpadMult::
+ EbeneAktualisieren()
+ if ( (Ebene = 1) or (Ebene = 2) )
+ send {NumpadMult}
+ else if Ebene = 3
+ send ×
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ SendUnicodeChar(0x22C5) ; cdot
+ PriorDeadKey := "" CompKey := ""
+return
+
+*NumpadSub::
+ EbeneAktualisieren()
+ if ( (Ebene = 1) or (Ebene = 2) )
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x207B)
+ Else If (PriorDeadKey = "c4") ; toter -
+ BSSendUnicodeChar(0x208B)
+ Else
+ send {blind}{NumpadSub}
+ }
+ else if Ebene = 3
+ SendUnicodeChar(0x2212) ; echtes minus
+ PriorDeadKey := "" CompKey := ""
+return
+
+*NumpadAdd::
+ EbeneAktualisieren()
+ if ( (Ebene = 1) or (Ebene = 2) )
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x207A)
+ Else If (PriorDeadKey = "c4") ; toter -
+ BSSendUnicodeChar(0x208A)
+ Else
+ send {blind}{NumpadAdd}
+ }
+ else if Ebene = 3
+ send ±
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ SendUnicodeChar(0x2213) ; -+
+ PriorDeadKey := "" CompKey := ""
+return
+
+*NumpadEnter::
+ EbeneAktualisieren()
+ if ( (Ebene = 1) or (Ebene = 2) )
+ send {NumpadEnter}
+ else if Ebene = 3
+ SendUnicodeChar(0x2260) ; neq
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ SendUnicodeChar(0x2248) ; approx
+ PriorDeadKey := "" CompKey := ""
+return
+
+/*
+ folgende Tasten verhalten sich bei ein- und ausgeschaltetem NumLock
+ unterschiedlich:
+
+ bei NumLock ein
+*/
+
+
+
+*Numpad7::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ send {blind}{Numpad7}
+ If (PriorDeadKey = "comp")
+ CompKey := "Num_7"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 2
+ {
+ send {NumpadHome}
+ CompKey := ""
+ }
+ else if Ebene = 3
+ {
+ SendUnicodeChar(0x2195) ; Hoch-Runter-Pfeil
+ CompKey := ""
+ }
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ {
+ SendUnicodeChar(0x226A) ; ll
+ CompKey := ""
+ }
+ PriorDeadKey := ""
+return
+
+*Numpad8::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (CompKey = "Num_1")
+ CompUnicodeChar(0x215B) ; 1/8
+ Else If (CompKey = "Num_3")
+ CompUnicodeChar(0x215C) ; 3/8
+ Else If (CompKey = "Num_5")
+ CompUnicodeChar(0x215D) ; 5/8
+ Else If (CompKey = "Num_7")
+ CompUnicodeChar(0x215E) ; 7/8
+ Else
+ send {blind}{Numpad8}
+ If (PriorDeadKey = "comp")
+ CompKey := "Num_8"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 2
+ {
+ send {NumpadUp}
+ CompKey := ""
+ }
+ else if Ebene = 3
+ {
+ SendUnicodeChar(0x2191) ; uparrow
+ CompKey := ""
+ }
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ {
+ SendUnicodeChar(0x2229) ; intersection
+ CompKey := ""
+ }
+ PriorDeadKey := "" CompKey := ""
+return
+
+*Numpad9::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ send {blind}{Numpad9}
+ If (PriorDeadKey = "comp")
+ CompKey := "Num_9"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 2
+ {
+ send {NumpadPgUp}
+ CompKey := ""
+ }
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ {
+ SendUnicodeChar(0x226B) ; gg
+ CompKey := ""
+ }
+ PriorDeadKey := ""
+return
+
+
+
+*Numpad4::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (CompKey = "Num_1")
+ CompUnicodeChar(0x00BC) ; 1/4
+ Else If (CompKey = "Num_3")
+ CompUnicodeChar(0x00BE) ; 3/4
+ Else
+ send {blind}{Numpad4}
+ If (PriorDeadKey = "comp")
+ CompKey := "Num_4"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 2
+ {
+ send {NumpadLeft}
+ CompKey := ""
+ }
+ else if Ebene = 3
+ {
+ SendUnicodeChar(0x2190) ; leftarrow
+ CompKey := ""
+ }
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ {
+ SendUnicodeChar(0x2282) ; subset of
+ CompKey := ""
+ }
+ PriorDeadKey := ""
+return
+
+*Numpad5::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (CompKey = "Num_1")
+ CompUnicodeChar(0x2155) ; 1/5
+ Else If (CompKey = "Num_2")
+ CompUnicodeChar(0x2156) ; 2/5
+ Else If (CompKey = "Num_3")
+ CompUnicodeChar(0x2157) ; 3/5
+ Else If (CompKey = "Num_4")
+ CompUnicodeChar(0x2158) ; 4/5
+ Else
+ send {blind}{Numpad5}
+ If (PriorDeadKey = "comp")
+ CompKey := "Num_5"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 2
+ {
+ send {NumpadClear}
+ CompKey := ""
+ }
+ else if Ebene = 3
+ {
+ send †
+ CompKey := ""
+ }
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ {
+ SendUnicodeChar(0x220A) ; small element of
+ CompKey := ""
+ }
+ PriorDeadKey := ""
+return
+
+*Numpad6::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (CompKey = "Num_1")
+ CompUnicodeChar(0x2159) ; 1/6
+ Else If (CompKey = "Num_5")
+ CompUnicodeChar(0x215A) ; 5/6
+ Else
+ send {blind}{Numpad6}
+ If (PriorDeadKey = "comp")
+ CompKey := "Num_6"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 2
+ {
+ send {NumpadRight}
+ CompKey := ""
+ }
+ else if Ebene = 3
+ {
+ SendUnicodeChar(0x2192) ; rightarrow
+ CompKey := ""
+ }
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ {
+ SendUnicodeChar(0x2283) ; superset of
+ CompKey := ""
+ }
+ PriorDeadKey := ""
+return
+
+*Numpad1::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ send {blind}{Numpad1}
+ If (PriorDeadKey = "comp")
+ CompKey := "Num_1"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 2
+ {
+ send {NumpadEnd}
+ CompKey := ""
+ }
+ else if Ebene = 3
+ {
+ SendUnicodeChar(0x2194) ; Links-Rechts-Pfeil
+ CompKey := ""
+ }
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ {
+ SendUnicodeChar(0x2264) ; leq
+ CompKey := ""
+ }
+ PriorDeadKey := ""
+return
+
+*Numpad2::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (CompKey = "Num_1")
+ CompUnicodeChar(0x00BD) ; 1/2
+ Else
+ send {blind}{Numpad2}
+ If (PriorDeadKey = "comp")
+ CompKey := "Num_2"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 2
+ {
+ send {NumpadDown}
+ CompKey := ""
+ }
+ else if Ebene = 3
+ {
+ SendUnicodeChar(0x2193) ; downarrow
+ CompKey := ""
+ }
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ {
+ SendUnicodeChar(0x222A) ; vereinigt
+ CompKey := ""
+ }
+ PriorDeadKey := ""
+return
+
+*Numpad3::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (CompKey = "Num_1")
+ CompUnicodeChar(0x2153) ; 1/3
+ Else If (CompKey = "Num_2")
+ CompUnicodeChar(0x2154) ; 2/3
+ Else
+ send {blind}{Numpad3}
+ If (PriorDeadKey = "comp")
+ CompKey := "Num_3"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 2
+ send {NumpadPgDn}
+ else if Ebene = 3
+ SendUnicodeChar(0x21CC) ; RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ SendUnicodeChar(0x2265) ; geq
+ PriorDeadKey := "" CompKey := ""
+return
+
+*Numpad0::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ send {blind}{Numpad0}
+ If (PriorDeadKey = "comp")
+ CompKey := "Num_0"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 2
+ {
+ send {NumpadIns}
+ CompKey := ""
+ }
+ else if Ebene = 3
+ {
+ send `%
+ CompKey := ""
+ }
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ {
+ send ‰
+ CompKey := ""
+ }
+ PriorDeadKey := ""
+return
+
+*NumpadDot::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ send {NumpadDot}
+ CompKey := ""
+ }
+ else if Ebene = 2
+ {
+ send {NumpadDel}
+ CompKey := ""
+ }
+ else if Ebene = 3
+ {
+ send .
+ CompKey := ""
+ }
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ {
+ send `,
+ CompKey := ""
+ }
+ PriorDeadKey := ""
+return
+
+/*
+ bei NumLock aus
+*/
+
+*NumpadHome::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ send {NumpadHome}
+ CompKey := ""
+ }
+ else if Ebene = 2
+ {
+ send {Numpad7}
+ If (PriorDeadKey = "comp")
+ CompKey := "Num_7"
+ Else
+ CompKey := ""
+ }
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ {
+ SendUnicodeChar(0x226A) ; ll
+ CompKey := ""
+ }
+ PriorDeadKey := ""
+return
+
+*NumpadUp::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ send {NumpadUp}
+ CompKey := ""
+ }
+ else if Ebene = 2
+ {
+ If (CompKey = "Num_1")
+ CompUnicodeChar(0x215B) ; 1/8
+ Else If (CompKey = "Num_3")
+ CompUnicodeChar(0x215C) ; 3/8
+ Else If (CompKey = "Num_5")
+ CompUnicodeChar(0x215D) ; 5/8
+ Else If (CompKey = "Num_7")
+ CompUnicodeChar(0x215E) ; 7/8
+ Else
+ send {Numpad8}
+ If (PriorDeadKey = "comp")
+ CompKey := "Num_8"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 3
+ {
+ SendUnicodeChar(0x2191) ; uparrow
+ CompKey := ""
+ }
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ {
+ SendUnicodeChar(0x2229) ; intersection
+ CompKey := ""
+ }
+ PriorDeadKey := ""
+return
+
+*NumpadPgUp::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ send {NumpadPgUp}
+ CompKey := ""
+ }
+ else if Ebene = 2
+ {
+ send {Numpad9}
+ If (PriorDeadKey = "comp")
+ CompKey := "Num_9"
+ Else
+ CompKey := ""
+ }
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ {
+ SendUnicodeChar(0x226B) ; gg
+ CompKey := ""
+ }
+ PriorDeadKey := ""
+return
+
+*NumpadLeft::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ send {NumpadLeft}
+ CompKey := ""
+ }
+ else if Ebene = 2
+ {
+ If (CompKey = "Num_1")
+ CompUnicodeChar(0x00BC) ; 1/4
+ Else If (CompKey = "Num_3")
+ CompUnicodeChar(0x00BE) ; 3/4
+ Else
+ send {Numpad4}
+ If (PriorDeadKey = "comp")
+ CompKey := "Num_4"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 3
+ {
+ SendUnicodeChar(0x2190) ; leftarrow
+ CompKey := ""
+ }
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ {
+ SendUnicodeChar(0x2282) ; subset of
+ CompKey := ""
+ }
+ PriorDeadKey := ""
+return
+
+*NumpadClear::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ send {NumpadClear}
+ CompKey := ""
+ }
+ else if Ebene = 2
+ {
+ If (CompKey = "Num_1")
+ CompUnicodeChar(0x2155) ; 1/5
+ Else If (CompKey = "Num_2")
+ CompUnicodeChar(0x2156) ; 2/5
+ Else If (CompKey = "Num_3")
+ CompUnicodeChar(0x2157) ; 3/5
+ Else If (CompKey = "Num_4")
+ CompUnicodeChar(0x2158) ; 4/5
+ Else
+ send {Numpad5}
+ If (PriorDeadKey = "comp")
+ CompKey := "Num_5"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 3
+ {
+ send †
+ CompKey := ""
+ }
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ {
+ SendUnicodeChar(0x220A) ; small element of
+ CompKey := ""
+ }
+ PriorDeadKey := ""
+return
+
+*NumpadRight::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ send {NumpadRight}
+ CompKey := ""
+ }
+ else if Ebene = 2
+ {
+ If (CompKey = "Num_1")
+ CompUnicodeChar(0x2159) ; 1/6
+ Else If (CompKey = "Num_5")
+ CompUnicodeChar(0x215A) ; 5/6
+ Else
+ send {Numpad6}
+ If (PriorDeadKey = "comp")
+ CompKey := "Num_6"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 3
+ {
+ SendUnicodeChar(0x2192) ; rightarrow
+ CompKey := ""
+ }
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ {
+ SendUnicodeChar(0x2283) ; superset of
+ CompKey := ""
+ }
+ PriorDeadKey := ""
+return
+
+*NumpadEnd::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ send {NumpadEnd}
+ CompKey := ""
+ }
+ else if Ebene = 2
+ {
+ send {Numpad1}
+ If (PriorDeadKey = "comp")
+ CompKey := "Num_1"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 3
+ {
+ SendUnicodeChar(0x21CB) ; LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON
+ CompKey := ""
+ }
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ {
+ SendUnicodeChar(0x2264) ; leq
+ CompKey := ""
+ }
+ PriorDeadKey := ""
+return
+
+*NumpadDown::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ send {NumpadDown}
+ CompKey := ""
+ }
+ else if Ebene = 2
+ {
+ If (CompKey = "Num_1")
+ CompUnicodeChar(0x00BD) ; 1/2
+ Else
+ send {Numpad2}
+ If (PriorDeadKey = "comp")
+ CompKey := "Num_2"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 3
+ {
+ SendUnicodeChar(0x2193) ; downarrow
+ CompKey := ""
+ }
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ {
+ SendUnicodeChar(0x222A) ; vereinigt
+ CompKey := ""
+ }
+ PriorDeadKey := ""
+return
+
+*NumpadPgDn::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ send {NumpadPgDn}
+ CompKey := ""
+ }
+ else if Ebene = 2
+ {
+ If (CompKey = "Num_1")
+ CompUnicodeChar(0x2153) ; 1/3
+ Else If (CompKey = "Num_2")
+ CompUnicodeChar(0x2154) ; 2/3
+ Else
+ send {Numpad3}
+ If (PriorDeadKey = "comp")
+ CompKey := "Num_3"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 3
+ {
+ SendUnicodeChar(0x21CC) ; RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON
+ CompKey := ""
+ }
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ {
+ SendUnicodeChar(0x2265) ; geq
+ CompKey := ""
+ }
+ PriorDeadKey := ""
+return
+
+*NumpadIns::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ send {NumpadIns}
+ CompKey := ""
+ }
+ else if Ebene = 2
+ {
+ send {Numpad0}
+ If (PriorDeadKey = "comp")
+ CompKey := "Num_0"
+ Else
+ CompKey := ""
+ }
+ else if Ebene = 3
+ {
+ send `%
+ CompKey := ""
+ }
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ {
+ send ‰
+ CompKey := ""
+ }
+ PriorDeadKey := ""
+return
+
+*NumpadDel::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ send {NumpadDel}
+ CompKey := ""
+ }
+ else if Ebene = 2
+ {
+ send {NumpadDot}
+ CompKey := ""
+ }
+ else if Ebene = 3
+ {
+ send .
+ CompKey := ""
+ }
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ {
+ send `,
+ CompKey := ""
+ }
+ PriorDeadKey := ""
+return
+
+
+/*
+ ------------------------------------------------------
+ Sondertasten
+ ------------------------------------------------------
+*/
+
+*Space::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (CompKey = "r_small_1")
+ Comp3UnicodeChar(0x2170) ; römisch i
+ Else If (CompKey = "r_capital_1")
+ Comp3UnicodeChar(0x2160) ; römisch I
+ Else
+ Send {blind}{Space}
+ }
+ if Ebene = 2
+ Send {blind}{Space}
+ if Ebene = 3
+ Send {blind}{Space}
+ if Ebene = 4
+ SendUnicodeChar(0x00A0) ; geschütztes Leerzeichen
+ else if Ebene = 5
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x2070)
+ Else If (PriorDeadKey = "c4") ; toter -
+ BSSendUnicodeChar(0x2080)
+ Else
+ Send 0
+ }
+ else if Ebene = 6
+ SendUnicodeChar(0x202F) ; schmales Leerzeichen
+ PriorDeadKey := "" CompKey := ""
+return
+
+/*
+ Folgende Tasten sind nur aufgeführt, um PriorDeadKey zu leeren.
+ Irgendwie sieht das noch nicht schön aus. Vielleicht lässt sich dieses
+ Problem irgendwie eleganter lösen...
+
+ Nachtrag:
+ Weil es mit Alt+Tab Probleme gab, wird hier jetzt erstmal rumgeflickschustert,
+ bis eine allgemeinere Lösung gefunden wurde.
+*/
+
+*Enter::
+ sendinput {Blind}{Enter}
+ PriorDeadKey := "" CompKey := ""
+return
+
+*Backspace::
+ sendinput {Blind}{Backspace}
+ PriorDeadKey := "" CompKey := ""
+return
+
+
+
+/*
+Auf Mod3+Tab liegt Compose. AltTab funktioniert, jedoch ShiftAltTab nicht.
+Wenigstens kommt es jetzt nicht mehr zu komischen Ergebnissen, wenn man Tab
+nach einem DeadKey drückt...
+*/
+
+*Tab::
+ if ( GetKeyState("SC038","P") )
+ {
+ SC038 & Tab::AltTab ; http://de.autohotkey.com/docs/Hotkeys.htm#AltTabDetail
+ }
+ else if GetKeyState("#","P")
+ {
+ PriorDeadKey := "comp"
+ CompKey := ""
+ }
+ else
+ {
+ send {blind}{Tab}
+ PriorDeadKey := ""
+ CompKey := ""
+ }
+return
+
+*SC038:: ; LAlt, damit AltTab funktioniert
+ send {blind}{LAlt}
+ PriorDeadKey := "" CompKey := ""
+return
+
+*Home::
+ sendinput {Blind}{Home}
+ PriorDeadKey := "" CompKey := ""
+return
+
+*End::
+ sendinput {Blind}{End}
+ PriorDeadKey := "" CompKey := ""
+return
+
+*PgUp::
+ sendinput {Blind}{PgUp}
+ PriorDeadKey := "" CompKey := ""
+return
+
+*PgDn::
+ sendinput {Blind}{PgDn}
+ PriorDeadKey := "" CompKey := ""
+return
+
+*Up::
+ sendinput {Blind}{Up}
+ PriorDeadKey := "" CompKey := ""
+return
+
+*Down::
+ sendinput {Blind}{Down}
+ PriorDeadKey := "" CompKey := ""
+return
+
+*Left::
+ sendinput {Blind}{Left}
+ PriorDeadKey := "" CompKey := ""
+return
+
+*Right::
+ sendinput {Blind}{Right}
+ PriorDeadKey := "" CompKey := ""
+return
+
+
+/*
+ ------------------------------------------------------
+ Funktionen
+ ------------------------------------------------------
+*/
+
+EbeneAktualisieren()
+{
+ global
+ Ebene = 1
+
+ ; ist Shift down?
+ if ( GetKeyState("Shift","P") )
+ {
+ Ebene += 1
+ }
+ ; ist Mod3 down?
+ if ( GetKeyState("CapsLock","P") or GetKeyState("#","P") )
+ {
+ Ebene += 2
+ }
+
+ ; ist Mod4 down? Mod3 hat Vorrang!
+ else if ( GetKeyState("<","P") or GetKeyState("SC138","P") )
+ {
+ Ebene += 4
+ }
+}
+
+
+/*************************
+ Alte Methoden
+*************************/
+
+/*
+Unicode(code)
+{
+ saved_clipboard := ClipboardAll
+ Transform, Clipboard, Unicode, %code%
+ sendplay ^v
+ Clipboard := saved_clipboard
+}
+
+BSUnicode(code)
+{
+ saved_clipboard := ClipboardAll
+ Transform, Clipboard, Unicode, %code%
+ sendplay {bs}^v
+ Clipboard := saved_clipboard
+}
+*/
+
+SendUnicodeChar(charCode)
+{
+ VarSetCapacity(ki, 28 * 2, 0)
+
+ EncodeInteger(&ki + 0, 1)
+ EncodeInteger(&ki + 6, charCode)
+ EncodeInteger(&ki + 8, 4)
+ EncodeInteger(&ki +28, 1)
+ EncodeInteger(&ki +34, charCode)
+ EncodeInteger(&ki +36, 4|2)
+
+ DllCall("SendInput", "UInt", 2, "UInt", &ki, "Int", 28)
+}
+
+BSSendUnicodeChar(charCode)
+{
+ send {bs}
+ VarSetCapacity(ki, 28 * 2, 0)
+
+ EncodeInteger(&ki + 0, 1)
+ EncodeInteger(&ki + 6, charCode)
+ EncodeInteger(&ki + 8, 4)
+ EncodeInteger(&ki +28, 1)
+ EncodeInteger(&ki +34, charCode)
+ EncodeInteger(&ki +36, 4|2)
+
+ DllCall("SendInput", "UInt", 2, "UInt", &ki, "Int", 28)
+}
+
+CompUnicodeChar(charCode)
+{
+ send {bs}
+ VarSetCapacity(ki, 28 * 2, 0)
+
+ EncodeInteger(&ki + 0, 1)
+ EncodeInteger(&ki + 6, charCode)
+ EncodeInteger(&ki + 8, 4)
+ EncodeInteger(&ki +28, 1)
+ EncodeInteger(&ki +34, charCode)
+ EncodeInteger(&ki +36, 4|2)
+
+ DllCall("SendInput", "UInt", 2, "UInt", &ki, "Int", 28)
+}
+
+Comp3UnicodeChar(charCode)
+{
+ send {bs}
+ send {bs}
+ VarSetCapacity(ki, 28 * 2, 0)
+
+ EncodeInteger(&ki + 0, 1)
+ EncodeInteger(&ki + 6, charCode)
+ EncodeInteger(&ki + 8, 4)
+ EncodeInteger(&ki +28, 1)
+ EncodeInteger(&ki +34, charCode)
+ EncodeInteger(&ki +36, 4|2)
+
+ DllCall("SendInput", "UInt", 2, "UInt", &ki, "Int", 28)
+}
+
+
+EncodeInteger(ref, val)
+{
+ DllCall("ntdll\RtlFillMemoryUlong", "Uint", ref, "Uint", 4, "Uint", val)
+}
+
+
+/*
+ ------------------------------------------------------
+ Shift+Pause "pausiert" das Script.
+ ------------------------------------------------------
+*/
+
++pause::suspend
+
+; ------------------------------------
+
+togglesuspend:
+ if state <>
+ {
+ state =
+ menu, tray, rename, %enable%, %disable%
+ }
+ else
+ {
+ state = : Deaktiviert
+ menu, tray, rename, %disable%, %enable%
+ }
+
+ menu, tray, tip, %name%%state%
+ suspend
+return
+
+
+help:
+ Run, %A_WinDir%\hh mk:@MSITStore:autohotkey.chm
+return
+
+
+about:
+ msgbox, 64, %name% – Ergonomische Tastaturbelegung,
+ (
+ %name%
+ `nDas Neo-Layout ersetzt das übliche deutsche
+ Tastaturlayout mit der Alternative Neo,
+ beschrieben auf http://neo-layout.org/.
+ `nDazu sind keine Administratorrechte nötig.
+ `nWenn Autohotkey aktiviert ist, werden alle Tastendrucke
+ abgefangen und statt dessen eine Übersetzung weitergeschickt.
+ `nDies geschieht transparent für den Anwender,
+ es muss nichts installiert werden.
+ `nDie Zeichenübersetzung kann leicht über das Icon im
+ Systemtray deaktiviert werden. `n
+ )
+return
+
+
+neo:
+ run http://neo-layout.org/
+return
+
+autohotkey:
+ run http://autohotkey.com/
+return
+
+open:
+ ListLines ; shows the Autohotkey window
+return
+
+edit:
+ edit
+return
+
+reload:
+ Reload
+return
+
+hide:
+ menu, tray, noicon
+return
+
+exitprogram:
+ exitapp
+return
\ No newline at end of file diff --git a/windows/autohotkey/neo20-all-in-one.exe b/windows/autohotkey/neo20-all-in-one.exe Binary files differnew file mode 100644 index 0000000..31a37b5 --- /dev/null +++ b/windows/autohotkey/neo20-all-in-one.exe diff --git a/windows/autohotkey/neo20_mod-test.ahk b/windows/autohotkey/neo20_mod-test.ahk new file mode 100644 index 0000000..bb7b736 --- /dev/null +++ b/windows/autohotkey/neo20_mod-test.ahk @@ -0,0 +1,2210 @@ +/*
+ Titel: NEO 2.0 beta Autohotkey-Treiber
+ $Revision: 483 $
+ $Date: 2008-04-15 12:53:09 +0200 (Di, 15 Apr 2008) $
+ Autor: Stefan Mayer <stm@neo-layout.org>
+ Basiert auf: neo20-all-in-one.ahk vom 29.06.2007
+
+ TODO: - ausgiebig testen...
+ - Menü des Tasksymbols
+ - Bessere Lösung für das leeren von PriorDeadKey finden, damit die Sondertasten
+ nicht mehr abgefangen werden müssen.
+ - Ebene 4 und 5 tauschen (im Programmcode, in der Doku ists schon)
+ - CapsLock auf 1. und 2. Ebene einbauen:
+ Die Buchstaben reagieren richtig auf CapsLock, da hier "sendinput {blind}"
+ verwendet wird. Bei anderen Tasten muss CapsLock in der ersten und zweiten Ebene
+ explizit abgefragt werden.
+ (Lässt sich das elegant in eine Funktion auslagern?)
+ |------------------|
+ | - Compose-Taste |
+ |------------------|
+ Ideen: - Symbol ändern (Neo-Logo abwarten)
+ - bei Ebene 4 rechte Hand (Numpad) z.B. Numpad5 statt 5 senden
+ CHANGES: - Kein Parsen über die Zwischenablage mehr
+ - Vista-kompatibel
+ - Ebene 6 über Mod3+Mod4
+*/
+
+; aus Noras script kopiert:
+#usehook on
+#singleinstance force
+#LTrim
+ ; Quelltext kann eingerückt werden,
+ ; msgbox ist trotzdem linksbündig
+
+SendMode Input
+SetTitleMatchMode 2
+
+;name = NEO 2.0
+;enable = Aktiviere %name%
+;disable = Deaktiviere %name%
+
+; Überprüfung auf deutsches Tastaturlayout
+; ----------------------------------------
+
+regread, inputlocale, HKEY_CURRENT_USER, Keyboard Layout\Preload, 1
+regread, inputlocalealias, HKEY_CURRENT_USER
+ , Keyboard Layout\Substitutes, %inputlocale%
+if inputlocalealias <>
+ inputlocale = %inputlocalealias%
+if inputlocale <> 00000407
+{
+ suspend
+ regread, inputlocale, HKEY_LOCAL_MACHINE
+ , SYSTEM\CurrentControlSet\Control\Keyboard Layouts\%inputlocale%
+ , Layout Text
+ msgbox, 48, Warnung!,
+ (
+ Nicht kompatibles Tastaturlayout:
+ `t%inputlocale%
+ `nDas deutsche QWERTZ muss als Standardlayout eingestellt
+ sein, damit %name% wie erwartet funktioniert.
+ `nÄndern Sie die Tastatureinstellung unter
+ `tSystemsteuerung
+ `t-> Regions- und Sprachoptionen
+ `t-> Sprachen
+ `t-> Details... `n
+ )
+ exitapp
+}
+
+/*
+ Variablen initialisieren
+*/
+
+Ebene = 1
+PriorDeadKey := ""
+
+
+/*
+ ------------------------------------------------------
+ Modifier
+ ------------------------------------------------------
+*/
+
+; CapsLock durch Mod3+Mod3
+*#::
+*CapsLock::
+ if GetKeyState("#","P") and GetKeyState("CapsLock","P")
+ {
+ if GetKeyState("CapsLock","T")
+ {
+ setcapslockstate, off
+ }
+ else
+ {
+ setcapslockstate, on
+ }
+ }
+return
+
+; KP_Decimal durch Mod4+Mod4
+*<::
+*SC138::
+ if GetKeyState("<","P") and GetKeyState("SC138","P")
+ {
+ send {numpaddot}
+ }
+ return
+
+
+/*
+ Ablauf bei toten Tasten:
+ 1. Ebene Aktualisieren
+ 2. Abhängig von der Variablen "Ebene" Zeichen ausgeben und die Variable "PriorDeadKey" setzen
+
+ Ablauf bei "lebenden" (sagt man das?) Tasten:
+ 1. Ebene Aktualisieren
+ 2. Abhängig von den Variablen "Ebene" und "PriorDeadKey" Zeichen ausgeben
+ 3. "PriorDeadKey" mit leerem String überschreiben
+
+ ------------------------------------------------------
+ Reihe 1
+ ------------------------------------------------------
+*/
+
+*^::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ SendUnicodeChar(0x02C6) ; circumflex, tot
+ PriorDeadKey := "c1"
+ }
+ else if Ebene = 2
+ {
+ SendUnicodeChar(0x02C7) ; caron, tot
+ PriorDeadKey := "c2"
+ }
+ else if Ebene = 3
+ {
+ SendUnicodeChar(0x02D8) ; brevis
+ PriorDeadKey := "c3"
+ }
+ else if Ebene = 4
+ {
+ send - ; querstrich, tot
+ PriorDeadKey := "c4"
+ }
+ else if Ebene = 5
+ {
+ SendUnicodeChar(0x00B7) ; Mittenpunkt, tot
+ PriorDeadKey := "c5"
+ }
+ else if Ebene = 7
+ {
+ Send . ; punkt darunter (colon)
+ PriorDeadKey := "c6"
+ }
+return
+
+*1::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c1") ; circumflex 1
+ BSSendUnicodeChar(0x00B9)
+ Else
+ send {blind}1
+ }
+ else if Ebene = 2
+ send °
+ else if Ebene = 4
+ SendUnicodeChar(0x2640) ; Piktogramm weiblich
+ else if Ebene = 5
+ SendUnicodeChar(0x2022) ; bullet
+ else if Ebene = 7
+ Send ¬
+ PriorDeadKey := ""
+return
+
+*2::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x00B2)
+ Else
+ send {blind}2
+ }
+ else if Ebene = 2
+ SendUnicodeChar(0x2116) ; numero
+ else if Ebene = 4
+ SendUnicodeChar(0x26A5) ; Piktogramm Zwitter
+ else if Ebene = 5
+ SendUnicodeChar(0x2023) ; aufzaehlungspfeil
+ else if Ebene = 7
+ SendUnicodeChar(0x2228) ; logisch oder
+ PriorDeadKey := ""
+return
+
+*3::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x00B3)
+ Else
+ send {blind}3
+ }
+ else if Ebene = 2
+ send §
+ else if Ebene = 4
+ SendUnicodeChar(0x2642) ; Piktogramm männlich
+ else if Ebene = 7
+ SendUnicodeChar(0x2227) ; logisch und
+ PriorDeadKey := ""
+return
+
+*4::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x2074)
+ Else
+ send {blind}4
+ }
+ else if Ebene = 2
+ send »
+ else if Ebene = 3
+ send ›
+ else if Ebene = 5
+ Send {PgUp} ; Prev
+ else if Ebene = 6
+ Send +{Prev}
+ else if Ebene = 7
+ SendUnicodeChar(0x22A5) ; Up Tack
+ PriorDeadKey := ""
+return
+
+*5::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x2075)
+ Else
+ send {blind}5
+ }
+ else if Ebene = 2
+ send «
+ else if Ebene = 3
+ send ‹
+ else if Ebene = 7
+ SendUnicodeChar(0x2221) ; gemessener Winkel
+ PriorDeadKey := ""
+return
+
+*6::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x2076)
+ Else
+ send {blind}6
+ }
+ else if Ebene = 2
+ send $
+ else if Ebene = 3
+ send £
+ else if Ebene = 5
+ send ¤
+ else if Ebene = 7
+ SendUnicodeChar(0x2225) ; parallel zu
+ PriorDeadKey := ""
+return
+
+*7::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x2077)
+ Else
+ send {blind}7
+ }
+ else if Ebene = 2
+ send €
+ else if Ebene = 3
+ send ¢
+ else if Ebene = 4
+ SendUnicodeChar(0x03F0) ; varkappa
+ else if Ebene = 5
+ send ¥
+ else if Ebene = 7
+ SendUnicodeChar(0x2209) ; nicht Element von
+ PriorDeadKey := ""
+return
+
+*8::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x2078)
+ Else
+ send {blind}8
+ }
+ else if Ebene = 2
+ send „
+ else if Ebene = 3
+ send ‚
+ else if Ebene = 5
+ Send /
+ else if Ebene = 7
+ SendUnicodeChar(0x2204) ; Nicht-Existenzquantor
+ PriorDeadKey := ""
+return
+
+*9::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x2079)
+ Else
+ send {blind}9
+ }
+ else if Ebene = 2
+ send “
+ else if Ebene = 3
+ send ‘
+ else if Ebene = 5
+ Send *
+ else if Ebene = 7
+ SendUnicodeChar(0x2226) ; Nicht parallel zu
+ PriorDeadKey := ""
+return
+
+*0::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x2070)
+ Else
+ send {blind}0
+ }
+ else if Ebene = 2
+ send ”
+ else if Ebene = 3
+ send ’
+ else if Ebene = 5
+ Send -
+ else if Ebene = 7
+ SendUnicodeChar(0x2205) ; Leere Menge
+ PriorDeadKey := ""
+return
+
+*ß::
+ EbeneAktualisieren()
+ if Ebene = 1
+ send {blind}- ; Bind
+ else if Ebene = 2
+ SendUnicodeChar(0x2013) ; Ged
+ else if Ebene = 3
+ SendUnicodeChar(0x2014)
+ else if Ebene = 4
+ SendUnicodeChar(0x2011)
+ else if Ebene = 7
+ SendUnicodeChar(0x254C)
+ PriorDeadKey := ""
+return
+
+*´::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ send {´}{space} ; akut, tot
+ PriorDeadKey := "a1"
+ }
+ else if Ebene = 2
+ {
+ send ``{space}
+ PriorDeadKey := "a2"
+ }
+ else if Ebene = 3
+ {
+ send ¸ ; cedilla
+ PriorDeadKey := "a3"
+ }
+ else if Ebene = 4
+ {
+ SendUnicodeChar(0x02DB) ; ogonek
+ PriorDeadKey := "a4"
+ }
+ else if Ebene = 5
+ {
+ SendUnicodeChar(0x02D9) ; punkt oben drüber
+ PriorDeadKey := "a5"
+ }
+ else if Ebene = 7
+ {
+ SendUnicodeChar(0x02DA) ; ring obendrauf
+ PriorDeadKey := "a6"
+ }
+return
+
+
+/*
+ ------------------------------------------------------
+ Reihe 2
+ ------------------------------------------------------
+*/
+
+*q::
+ EbeneAktualisieren()
+ if Ebene = 1
+ sendinput {blind}x
+ else if Ebene = 2
+ sendinput {blind}X
+ else if Ebene = 3
+ send @
+ else if Ebene = 4
+ SendUnicodeChar(0x03BE) ;xi
+ else if Ebene = 5
+ send @ ; Redundanz
+ else if Ebene = 7
+ SendUnicodeChar(0x039E) ; Xi
+ PriorDeadKey := ""
+return
+
+
+*w::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c6") ; punkt darunter
+ BSSendUnicodeChar(0x1E7F)
+ Else
+ sendinput {blind}v
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "c6") ; punkt darunter
+ BSSendUnicodeChar(0x1E7E)
+ Else
+ sendinput {blind}V
+ }
+ else if Ebene = 3
+ send _
+ else if Ebene = 4
+ SendUnicodeChar(0x03F5) ; varepsilon
+ else if Ebene = 5
+ Send {Backspace}
+ else if Ebene = 7
+ SendUnicodeChar(0x2259) ; estimates
+ PriorDeadKey := ""
+return
+
+
+
+*e::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "t5") ; Schrägstrich
+ BSSendUnicodeChar(0x0142)
+ Else If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x013A)
+ Else If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x013E)
+ Else If (PriorDeadKey = "a3") ; cedilla
+ BSSendUnicodeChar(0x013C)
+ Else If (PriorDeadKey = "c5") ; Mittenpunkt
+ BSSendUnicodeChar(0x0140)
+ Else If (PriorDeadKey = "c6") ; punkt darunter
+ BSSendUnicodeChar(0x1E37)
+ Else
+ sendinput {blind}l
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x0139)
+ Else If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x013D)
+ Else If (PriorDeadKey = "a3") ; cedilla
+ BSSendUnicodeChar(0x013B)
+ Else If (PriorDeadKey = "t5") ; Schrägstrich
+ BSSendUnicodeChar(0x0141)
+ Else If (PriorDeadKey = "c5") ; Mittenpunkt
+ BSSendUnicodeChar(0x013F)
+ Else If (PriorDeadKey = "c6") ; punkt darunter
+ BSSendUnicodeChar(0x1E36)
+ Else
+ sendinput {blind}L
+ }
+ else if Ebene = 3
+ send [
+ else if Ebene = 4
+ SendUnicodeChar(0x03BB) ;lambda
+ else if Ebene = 5
+ Sendinput {Blind}{Up}
+ else if Ebene = 6
+ Sendinput {Blind}+{Up}
+ else if Ebene = 7
+ SendUnicodeChar(0x039B) ; Lambda
+ PriorDeadKey := ""
+return
+
+
+*r::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x0109)
+ Else If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x010D)
+ Else If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x0107)
+ Else If (PriorDeadKey = "a3") ; cedilla
+ BSSendUnicodeChar(0x00E7)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x010B)
+ Else
+ sendinput {blind}c
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x0108)
+ Else If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x010C)
+ Else If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x0106)
+ Else If (PriorDeadKey = "a3") ; cedilla
+ BSSendUnicodeChar(0x00E6)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x010A)
+ Else
+ sendinput {blind}C
+ }
+ else if Ebene = 3
+ send ]
+ else if Ebene = 4
+ SendUnicodeChar(0x03C7) ;chi
+ else if Ebene = 5
+ Send {Tab}
+ else if Ebene = 6
+ Send +{Tab}
+ else if Ebene = 7
+ SendUnicodeChar(0x2102) ; Komplexe Zahlen
+ PriorDeadKey := ""
+return
+
+*t::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x0175)
+ Else
+ sendinput {blind}w
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x0174)
+ Else
+ sendinput {blind}W
+ }
+ else if Ebene = 3
+ send {^}{space} ; untot
+ else if Ebene = 4
+ SendUnicodeChar(0x03C9) ; omega
+ else if Ebene = 5
+ Send {Insert}
+ else if Ebene = 6
+ Send +{Insert}
+ else if Ebene = 7
+ SendUnicodeChar(0x03A9) ; Omega
+ PriorDeadKey := ""
+return
+
+*z::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "a3") ; cedilla
+ BSSendUnicodeChar(0x0137)
+ Else If (PriorDeadKey = "c6") ; punkt darunter
+ BSSendUnicodeChar(0x1E33)
+ Else
+ sendinput {blind}k
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "a3") ; cedilla
+ BSSendUnicodeChar(0x0136)
+ Else If (PriorDeadKey = "c6") ; punkt darunter
+ BSSendUnicodeChar(0x1E32)
+ Else
+ sendinput {blind}K
+ }
+ else if Ebene = 3
+ sendraw !
+ else if Ebene = 4
+ SendUnicodeChar(0x03BA) ;kappa
+ else if Ebene = 5
+ Send ¡
+ else if Ebene = 7
+ SendUnicodeChar(0x221A) ; Wurzelzeichen
+ PriorDeadKey := ""
+return
+
+*u::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x0125)
+ Else If (PriorDeadKey = "c4") ; Querstrich
+ BSSendUnicodeChar(0x0127)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x1E23)
+ Else If (PriorDeadKey = "c6") ; punkt darunter
+ BSSendUnicodeChar(0x1E25)
+ Else sendinput {blind}h
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x0124)
+ Else If (PriorDeadKey = "c4") ; Querstrich
+ BSSendUnicodeChar(0x0126)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x1E22)
+ Else If (PriorDeadKey = "c6") ; punkt darunter
+ BSSendUnicodeChar(0x1E24)
+ Else sendinput {blind}H
+ }
+ else if Ebene = 3
+ {
+ If (PriorDeadKey = "c4") ; Querstrich
+ BSSendUnicodeChar(0x2264) ; kleiner gleich
+ Else
+ send {blind}<
+ }
+ else if Ebene = 4
+ SendUnicodeChar(0x03C8) ;psi
+ else if Ebene = 5
+ Send 7
+ else if Ebene = 7
+ SendUnicodeChar(0x03A8) ; Psi
+ PriorDeadKey := ""
+return
+
+*i::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x011D)
+ Else If (PriorDeadKey = "c3") ; brevis
+ BSSendUnicodeChar(0x011F)
+ Else If (PriorDeadKey = "a3") ; cedilla
+ BSSendUnicodeChar(0x0123)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x0121)
+ Else sendinput {blind}g
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x011C)
+ Else If (PriorDeadKey = "c3") ; brevis
+ BSSendUnicodeChar(0x011E)
+ Else If (PriorDeadKey = "a3") ; cedilla
+ BSSendUnicodeChar(0x0122)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x0120)
+ Else sendinput {blind}G
+ }
+ else if Ebene = 3
+ {
+ If (PriorDeadKey = "c4") ; Querstrich
+ SendUnicodeChar(0x2265) ; größer gleich
+ Else
+ send >
+ }
+ else if Ebene = 4
+ SendUnicodeChar(0x03B3) ;gamma
+ else if Ebene = 5
+ Send 8
+ else if Ebene = 7
+ SendUnicodeChar(0x0393) ; Gamma
+ PriorDeadKey := ""
+return
+
+*o::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "t5") ; durchgestrichen
+ BSSendUnicodeChar(0x0192)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x1E1F)
+ Else sendinput {blind}f
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "t5") ; durchgestrichen
+ BSSendUnicodeChar(0x0191)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x1E1E)
+ Else sendinput {blind}F
+ }
+ else if Ebene = 3
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x2259) ; entspricht
+ Else If (PriorDeadKey = "t1") ; tilde
+ BSSendUnicodeChar(0x2245) ; ungefähr gleich
+ Else If (PriorDeadKey = "t5") ; Schrägstrich
+ BSSendUnicodeChar(0x2260) ; ungleich
+ Else If (PriorDeadKey = "c4") ; Querstrich
+ BSSendUnicodeChar(0x2261) ; identisch
+ Else If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x225A) ; EQUIANGULAR TO
+ Else If (PriorDeadKey = "a6") ; ring drüber
+ BSSendUnicodeChar(0x2257) ; ring equal to
+ Else
+ send `=
+ }
+ else if Ebene = 4
+ SendUnicodeChar(0x0278) ; latin small letter phi
+ else if Ebene = 5
+ Send 9
+ else if Ebene = 7
+ SendUnicodeChar(0x03A6) ; Phi
+ PriorDeadKey := ""
+return
+
+*p::
+ EbeneAktualisieren()
+ if Ebene = 1
+ sendinput {blind}q
+ else if Ebene = 2
+ sendinput {blind}Q
+ else if Ebene = 3
+ send {&}
+ else if Ebene = 4
+ SendUnicodeChar(0x03C6) ; phi
+ else if Ebene = 5
+ Send {+}
+ else if Ebene = 7
+ SendUnicodeChar(0x211A) ; Rationale Zahlen
+ PriorDeadKey := ""
+return
+
+*ü::
+ EbeneAktualisieren()
+ if Ebene = 1
+ if GetKeyState("CapsLock","T")
+ {
+ SendUnicodeChar(0x1E9E) ; versal-ß
+ }
+ else
+ {
+ send ß
+ }
+ else if Ebene = 2
+ if GetKeyState("CapsLock","T")
+ {
+ send ß
+ }
+ else
+ {
+ SendUnicodeChar(0x1E9E) ; versal-ß
+ }
+ else if Ebene = 3
+ SendUnicodeChar(0x017F) ; langes s
+ else if Ebene = 4
+ SendUnicodeChar(0x03C2) ; varsigma
+ else if Ebene = 7
+ SendUnicodeChar(0x2218) ; Ring Operator
+ PriorDeadKey := ""
+return
+
+
+*+::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ SendUnicodeChar(0x02DC) ; tilde, tot
+ PriorDeadKey := "t1"
+ }
+ else if Ebene = 2
+ {
+ SendUnicodeChar(0x00AF) ; macron, tot
+ PriorDeadKey := "t2"
+ }
+ else if Ebene = 3
+ {
+ SendUnicodeChar(0x00A8) ; Diaerese
+ PriorDeadKey := "t3"
+ }
+ else if Ebene = 4
+ {
+ send " ;doppelakut
+ PriorDeadKey := "t4"
+ }
+ else if Ebene = 5
+ {
+ SendUnicodeChar(0x002F) ; Schrägstrich, tot
+ PriorDeadKey := "t5"
+ }
+ else if Ebene = 7
+ {
+ SendUnicodeChar(0x02CF) ; komma drunter, tot
+ PriorDeadKey := "t6"
+ }
+return
+
+
+/*
+ ------------------------------------------------------
+ Reihe 3
+ ------------------------------------------------------
+*/
+
+*a::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x00FB)
+ Else If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x00FA)
+ Else If (PriorDeadKey = "a2") ; grave
+ BSSendUnicodeChar(0x00F9)
+ Else If (PriorDeadKey = "t3") ; Diaerese
+ Send, {bs}ü
+ Else If (PriorDeadKey = "t4") ; doppelakut
+ BSSendUnicodeChar(0x0171)
+ Else If (PriorDeadKey = "c3") ; brevis
+ BSSendUnicodeChar(0x016D)
+ Else If (PriorDeadKey = "t2") ; macron
+ BSSendUnicodeChar(0x016B)
+ Else If (PriorDeadKey = "a4") ; ogonek
+ BSSendUnicodeChar(0x0173)
+ Else If (PriorDeadKey = "a6") ; Ring
+ BSSendUnicodeChar(0x016F)
+ Else If (PriorDeadKey = "t1") ; tilde
+ BSSendUnicodeChar(0x0169)
+ Else If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x01D4)
+ Else
+ sendinput {blind}u
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x00DB)
+ Else If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x00DA)
+ Else If (PriorDeadKey = "a2") ; grave
+ BSSendUnicodeChar(0x00D9)
+ Else If (PriorDeadKey = "t3") ; Diaerese
+ Send, {bs}Ü
+ Else If (PriorDeadKey = "a6") ; Ring
+ BSSendUnicodeChar(0x016E)
+ Else If (PriorDeadKey = "c3") ; brevis
+ BSSendUnicodeChar(0x016C)
+ Else If (PriorDeadKey = "t4") ; doppelakut
+ BSSendUnicodeChar(0x0170)
+ Else If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x01D3)
+ Else If (PriorDeadKey = "t2") ; macron
+ BSSendUnicodeChar(0x016A)
+ Else If (PriorDeadKey = "a4") ; ogonek
+ BSSendUnicodeChar(0x0172)
+ Else If (PriorDeadKey = "t1") ; tilde
+ BSSendUnicodeChar(0x0168)
+ Else
+ sendinput {blind}U
+ }
+ else if Ebene = 3
+ send \
+ else if Ebene = 5
+ Send {blind}{Home}
+ else if Ebene = 6
+ Send {blind}+{Home}
+ else if Ebene = 7
+ SendUnicodeChar(0x222E) ; Contour Integral
+ PriorDeadKey := ""
+return
+
+*s::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x00EE)
+ Else If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x00ED)
+ Else If (PriorDeadKey = "a2") ; grave
+ BSSendUnicodeChar(0x00EC)
+ Else If (PriorDeadKey = "t3") ; Diaerese
+ Send, {bs}ï
+ Else If (PriorDeadKey = "t2") ; macron
+ BSSendUnicodeChar(0x012B)
+ Else If (PriorDeadKey = "c3") ; brevis
+ BSSendUnicodeChar(0x012D)
+ Else If (PriorDeadKey = "a4") ; ogonek
+ BSSendUnicodeChar(0x012F)
+ Else If (PriorDeadKey = "t1") ; tilde
+ BSSendUnicodeChar(0x0129)
+ Else If (PriorDeadKey = "a5") ; (ohne) punkt darüber
+ BSSendUnicodeChar(0x0131)
+ Else
+ sendinput {blind}i
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x00CE)
+ Else If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x00CD)
+ Else If (PriorDeadKey = "a2") ; grave
+ BSSendUnicodeChar(0x00CC)
+ Else If (PriorDeadKey = "t3") ; Diaerese
+ Send, {bs}Ï
+ Else If (PriorDeadKey = "t2") ; macron
+ BSSendUnicodeChar(0x012A)
+ Else If (PriorDeadKey = "c3") ; brevis
+ BSSendUnicodeChar(0x012C)
+ Else If (PriorDeadKey = "a4") ; ogonek
+ BSSendUnicodeChar(0x012E)
+ Else If (PriorDeadKey = "t1") ; tilde
+ BSSendUnicodeChar(0x0128)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x0130)
+ Else
+ sendinput {blind}I
+ }
+ else if Ebene = 3
+ send `/
+ else if Ebene = 4
+ SendUnicodeChar(0x03B9) ;iota
+ else if Ebene = 5
+ Sendinput {Blind}{Left}
+ else if Ebene = 6
+ Sendinput {Blind}+{Left}
+ else if Ebene = 7
+ sendUnicodeChar(0x222B) ; Integral
+ PriorDeadKey := ""
+return
+
+*d::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x00E2)
+ Else If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x00E1)
+ Else If (PriorDeadKey = "a2") ; grave
+ BSSendUnicodeChar(0x00E0)
+ Else If (PriorDeadKey = "t3") ; Diaerese
+ send {bs}ä
+ Else If (PriorDeadKey = "a6") ; Ring
+ Send {bs}å
+ Else If (PriorDeadKey = "t1") ; tilde
+ BSSendUnicodeChar(0x00E3)
+ Else If (PriorDeadKey = "a4") ; ogonek
+ BSSendUnicodeChar(0x0105)
+ Else If (PriorDeadKey = "t2") ; macron
+ BSSendUnicodeChar(0x0101)
+ Else If (PriorDeadKey = "c3") ; brevis
+ BSSendUnicodeChar(0x0103)
+ Else
+ sendinput {blind}a
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x00C2)
+ Else If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x00C1)
+ Else If (PriorDeadKey = "a2") ; grave
+ BSSendUnicodeChar(0x00C0)
+ Else If (PriorDeadKey = "t3") ; Diaerese
+ send {bs}Ä
+ Else If (PriorDeadKey = "t1") ; tilde
+ BSSendUnicodeChar(0x00C3)
+ Else If (PriorDeadKey = "a6") ; Ring
+ Send {bs}Å
+ Else If (PriorDeadKey = "t2") ; macron
+ BSSendUnicodeChar(0x0100)
+ Else If (PriorDeadKey = "c3") ; brevis
+ BSSendUnicodeChar(0x0102)
+ Else If (PriorDeadKey = "a4") ; ogonek
+ BSSendUnicodeChar(0x0104)
+ Else
+ sendinput {blind}A
+ }
+ else if Ebene = 3
+ sendraw {
+ else if Ebene = 4
+ SendUnicodeChar(0x03B1) ;alpha
+ else if Ebene = 5
+ Sendinput {Blind}{Down}
+ else if Ebene = 6
+ Sendinput {Blind}+{Down}
+ else if Ebene = 7
+ SendUnicodeChar(0x2200) ; For All
+ PriorDeadKey := ""
+return
+
+*f::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x00EA)
+ Else If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x00E9)
+ Else If (PriorDeadKey = "a2") ; grave
+ BSSendUnicodeChar(0x00E8)
+ Else If (PriorDeadKey = "t3") ; Diaerese
+ Send, {bs}ë
+ Else If (PriorDeadKey = "a4") ; ogonek
+ BSSendUnicodeChar(0x0119)
+ Else If (PriorDeadKey = "t2") ; macron
+ BSSendUnicodeChar(0x0113)
+ Else If (PriorDeadKey = "c3") ; brevis
+ BSSendUnicodeChar(0x0115)
+ Else If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x011B)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x0117)
+ Else
+ sendinput {blind}e
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x00CA)
+ Else If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x00C9)
+ Else If (PriorDeadKey = "a2") ; grave
+ BSSendUnicodeChar(0x00C8)
+ Else If (PriorDeadKey = "t3") ; Diaerese
+ Send, {bs}Ë
+ Else If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x011A)
+ Else If (PriorDeadKey = "t2") ; macron
+ BSSendUnicodeChar(0x0112)
+ Else If (PriorDeadKey = "c3") ; brevis
+ BSSendUnicodeChar(0x0114)
+ Else If (PriorDeadKey = "a4") ; ogonek
+ BSSendUnicodeChar(0x0118)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x0116)
+ Else
+ sendinput {blind}E
+ }
+ else if Ebene = 3
+ sendraw }
+ else if Ebene = 4
+ SendUnicodeChar(0x03B5) ;epsilon
+ else if Ebene = 5
+ Sendinput {Blind}{Right}
+ else if Ebene = 6
+ Sendinput {Blind}+{Right}
+ else if Ebene = 7
+ SendUnicodeChar(0x2203) ; Existensquantor
+ PriorDeadKey := ""
+return
+
+*g::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x00F4)
+ Else If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x00F3)
+ Else If (PriorDeadKey = "a2") ; grave
+ BSSendUnicodeChar(0x00F2)
+ Else If (PriorDeadKey = "t3") ; Diaerese
+ Send, {bs}ö
+ Else If (PriorDeadKey = "t1") ; tilde
+ BSSendUnicodeChar(0x00F5)
+ Else If (PriorDeadKey = "t4") ; doppelakut
+ BSSendUnicodeChar(0x0151)
+ Else If (PriorDeadKey = "t5") ; Schrägstrich
+ BSSendUnicodeChar(0x00F8)
+ Else If (PriorDeadKey = "t2") ; macron
+ BSSendUnicodeChar(0x014D)
+ Else If (PriorDeadKey = "c3") ; brevis
+ BSSendUnicodeChar(0x014F)
+ Else
+ sendinput {blind}o
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x00D4)
+ Else If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x00D3)
+ Else If (PriorDeadKey = "a2") ; grave
+ BSSendUnicodeChar(0x00D2)
+ Else If (PriorDeadKey = "t5") ; Schrägstrich
+ BSSendUnicodeChar(0x00D8)
+ Else If (PriorDeadKey = "t1") ; tilde
+ BSSendUnicodeChar(0x00D5)
+ Else If (PriorDeadKey = "t4") ; doppelakut
+ BSSendUnicodeChar(0x0150)
+ Else If (PriorDeadKey = "t3") ; Diaerese
+ send {bs}Ö
+ Else If (PriorDeadKey = "t2") ; macron
+ BSSendUnicodeChar(0x014C)
+ Else If (PriorDeadKey = "c3") ; brevis
+ BSSendUnicodeChar(0x014E)
+ Else
+ sendinput {blind}O
+ }
+ else if Ebene = 3
+ send *
+ else if Ebene = 4
+ SendUnicodeChar(0x03C9) ;omega
+ else if Ebene = 5
+ Send {blind}{End}
+ else if Ebene = 6
+ Send {blind}+{End}
+ else if Ebene = 7
+ SendUnicodeChar(0x2208) ; Element von
+ PriorDeadKey := ""
+return
+
+*h::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x015D)
+ Else If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x015B)
+ Else If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x0161)
+ Else If (PriorDeadKey = "a3") ; cedilla
+ BSSendUnicodeChar(0x015F)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x1E61)
+ Else If (PriorDeadKey = "c6") ; punkt darunter
+ BSSendUnicodeChar(0x1E63)
+ Else
+ sendinput {blind}s
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x015C)
+ Else If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x0160)
+ Else If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x015A)
+ Else If (PriorDeadKey = "a3") ; cedilla
+ BSSendUnicodeChar(0x015E)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x1E60)
+ Else If (PriorDeadKey = "c6") ; punkt darunter
+ BSSendUnicodeChar(0x1E62)
+ Else
+ sendinput {blind}S
+ }
+ else if Ebene = 3
+ send ?
+ else if Ebene = 4
+ SendUnicodeChar(0x03C3) ;sigma
+ else if Ebene = 5
+ Send ¿
+ else if Ebene = 7
+ SendUnicodeChar(0x03A3) ; Sigma
+ PriorDeadKey := ""
+return
+
+*j::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x0144)
+ Else If (PriorDeadKey = "t1") ; tilde
+ BSSendUnicodeChar(0x00F1)
+ Else If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x0148)
+ Else If (PriorDeadKey = "a3") ; cedilla
+ BSSendUnicodeChar(0x0146)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x1E45)
+ Else
+ sendinput {blind}n
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x0147)
+ Else If (PriorDeadKey = "t1") ; tilde
+ BSSendUnicodeChar(0x00D1)
+ Else If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x0143)
+ Else If (PriorDeadKey = "a3") ; cedilla
+ BSSendUnicodeChar(0x0145)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x1E44)
+ Else
+ sendinput {blind}N
+ }
+ else if Ebene = 3
+ send (
+ else if Ebene = 4
+ SendUnicodeChar(0x03BD) ;nu
+ else if Ebene = 5
+ Send 4
+ else if Ebene = 7
+ SendUnicodeChar(0x2115) ; Natürliche Zahlen
+ PriorDeadKey := ""
+return
+
+*k::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x0155)
+ Else If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x0159)
+ Else If (PriorDeadKey = "a3") ; cedilla
+ BSSendUnicodeChar(0x0157)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x0E59)
+ Else If (PriorDeadKey = "c6") ; punkt darunter
+ BSSendUnicodeChar(0x1E5B)
+ Else
+ sendinput {blind}r
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x0158)
+ Else If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x0154)
+ Else If (PriorDeadKey = "a3") ; cedilla
+ BSSendUnicodeChar(0x0156)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x1E58)
+ Else If (PriorDeadKey = "c6") ; punkt darunter
+ BSSendUnicodeChar(0x1E5A)
+ Else
+ sendinput {blind}R
+ }
+ else if Ebene = 3
+ send )
+ else if Ebene = 4
+ SendUnicodeChar(0x03C1) ;rho
+ else if Ebene = 5
+ Send 5
+ else if Ebene = 7
+ SendUnicodeChar(0x211D) ; Rationale Zahlen
+ PriorDeadKey := ""
+return
+
+*l::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x0165)
+ Else If (PriorDeadKey = "a3") ; cedilla
+ BSSendUnicodeChar(0x0163)
+ Else If (PriorDeadKey = "c4") ; Querstrich
+ BSSendUnicodeChar(0x0167)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x1E6B)
+ Else If (PriorDeadKey = "c6") ; punkt darunter
+ BSSendUnicodeChar(0x1E6D)
+ Else
+ sendinput {blind}t
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x0164)
+ Else If (PriorDeadKey = "a3") ; cedilla
+ BSSendUnicodeChar(0x0162)
+ Else If (PriorDeadKey = "c4") ; Querstrich
+ BSSendUnicodeChar(0x0166)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x1E6A)
+ Else If (PriorDeadKey = "c6") ; punkt darunter
+ BSSendUnicodeChar(0x1E6C)
+ Else
+ sendinput {blind}T
+ }
+ else if Ebene = 3
+ send {blind}- ; Bind
+ else if Ebene = 4
+ SendUnicodeChar(0x03C4) ;tau
+ else if Ebene = 5
+ Send 6
+ else if Ebene = 7
+ SendUnicodeChar(0x2202) ; partielle Ableitung
+ PriorDeadKey := ""
+return
+
+*ö::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c4") ; Querstrich
+ BSSendUnicodeChar(0x0111)
+ Else If (PriorDeadKey = "t5") ; Schrägstrich
+ BSSendUnicodeChar(0x00F0)
+ Else If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x010F)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x1E0B)
+ Else If (PriorDeadKey = "c6") ; punkt darunter
+ BSSendUnicodeChar(0x1E0D)
+ Else
+ sendinput {blind}d
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "c4") ; Querstrich
+ BSSendUnicodeChar(0x0110)
+ Else If (PriorDeadKey = "t5") ; Schrägstrich
+ BSSendUnicodeChar(0x00D0)
+ Else If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x010E)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x1E0A)
+ Else If (PriorDeadKey = "c6") ; punkt darunter
+ BSSendUnicodeChar(0x1E0D)
+ Else sendinput {blind}D
+ }
+ else if Ebene = 3
+ send :
+ else if Ebene = 4
+ SendUnicodeChar(0x03B4) ;delta
+ else if Ebene = 5
+ Send `,
+ else if Ebene = 7
+ SendUnicodeChar(0x0394) ; Delta
+ PriorDeadKey := ""
+return
+
+*ä::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "t3") ; Diaerese
+ Send {bs}ÿ
+ Else If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x00FD)
+ Else If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x0177)
+ Else
+ sendinput {blind}y
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x00DD)
+ Else If (PriorDeadKey = "t3") ; Diaerese
+ Send {bs}Ÿ
+ Else If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x0176)
+ Else
+ sendinput {blind}Y
+ }
+ else if Ebene = 4
+ SendUnicodeChar(0x03C5) ;upsilon
+ else if Ebene = 5
+ SendUnicodeChar(0x2207) ; nabla
+ PriorDeadKey := ""
+return
+
+;SC02B (#) wird zu Mod3
+
+
+/*
+ ------------------------------------------------------
+ Reihe 4
+ ------------------------------------------------------
+*/
+
+;SC056 (<) wird zu Mod4
+
+*y::
+ EbeneAktualisieren()
+ if Ebene = 1
+ sendinput {blind}ü
+ else if Ebene = 2
+ sendinput {blind}Ü
+ else if Ebene = 3
+ send {#}
+ else if Ebene = 5
+ Send {Esc}
+ else if Ebene = 7
+ SendUnicodeChar(0x221D) ; proportional zu
+ PriorDeadKey := ""
+return
+
+*x::
+ EbeneAktualisieren()
+ if Ebene = 1
+ sendinput {blind}ö
+ else if Ebene = 2
+ sendinput {blind}Ö
+ else if Ebene = 3
+ send $
+ else if Ebene = 5
+ Send {Del}
+ else if Ebene = 6
+ Send +{Del}
+ else if Ebene = 7
+ SendUnicodeChar(0x2111) ; Black-Letter Capital I
+ PriorDeadKey := ""
+return
+
+*c::
+ EbeneAktualisieren()
+ if Ebene = 1
+ sendinput {blind}ä
+ else if Ebene = 2
+ sendinput {blind}Ä
+ else if Ebene = 3
+ send |
+ else if Ebene = 4
+ SendUnicodeChar(0x03B7) ;eta
+ else if Ebene = 5
+ Send {PgDn} ; Next
+ else if Ebene = 6
+ Send +{PgDn}
+ else if Ebene = 7
+ SendUnicodeChar(0x211C) ; Black-Letter Capital I
+ PriorDeadKey := ""
+return
+
+*v::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x1E57)
+ Else
+ sendinput {blind}p
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x1E56)
+ Else
+ sendinput {blind}P
+ }
+ else if Ebene = 3
+ {
+ If (PriorDeadKey = "t1") ; tilde
+ BSSendUnicodeChar(0x2248)
+ Else
+ sendraw ~
+ }
+ else if Ebene = 4
+ SendUnicodeChar(0x03C0) ;pi
+ else if Ebene = 5
+ Send {Enter}
+ else if Ebene = 7
+ SendUnicodeChar(0x03A0) ; Pi
+ PriorDeadKey := ""
+return
+
+*b::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x017E)
+ Else If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x017A)
+ Else If (PriorDeadKey = "a5") ; punkt drüber
+ BSSendUnicodeChar(0x017C)
+ Else If (PriorDeadKey = "c6") ; punkt drunter
+ BSSendUnicodeChar(0x1E93)
+ Else
+ sendinput {blind}z
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x017D)
+ Else If (PriorDeadKey = "a1") ; akut
+ BSSendUnicodeChar(0x0179)
+ Else If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x017B)
+ Else If (PriorDeadKey = "c6") ; punkt drunter
+ BSSendUnicodeChar(0x1E92)
+ Else
+ sendinput {blind}Z
+ }
+ else if Ebene = 3
+ send ``{space} ; untot
+ else if Ebene = 4
+ SendUnicodeChar(0x03B6) ;zeta
+ else if Ebene = 7
+ SendUnicodeChar(0x2124) ; Ganze Zahlen
+ PriorDeadKey := ""
+return
+
+*n::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x1E03)
+ Else
+ sendinput {blind}b
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x1E02)
+ Else
+ sendinput {blind}B
+ }
+ else if Ebene = 3
+ send {blind}{+}
+ else if Ebene = 4
+ SendUnicodeChar(0x03B2) ;beta
+ else if Ebene = 7
+ SendUnicodeChar(0x21D2) ; daraus folgt (Implikation)
+ PriorDeadKey := ""
+return
+
+*m::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x1E41)
+ Else If (PriorDeadKey = "c6") ; punkt darunter
+ BSSendUnicodeChar(0x1E43)
+ Else
+ sendinput {blind}m
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "a5") ; punkt darüber
+ BSSendUnicodeChar(0x1E40)
+ Else If (PriorDeadKey = "c6") ; punkt darunter
+ BSSendUnicodeChar(0x1E42)
+ Else
+ sendinput {blind}M
+ }
+ else if Ebene = 3
+ send `%
+ else if Ebene = 4
+ SendUnicodeChar(0x03BC) ;micro, mu wäre 0x00B5
+ else if Ebene = 5
+ Send 1
+ else if Ebene = 7
+ SendUnicodeChar(0x21D4) ; Äquivalenz
+ PriorDeadKey := ""
+return
+
+*,::
+ EbeneAktualisieren()
+ if Ebene = 1
+ send {blind},
+ else if Ebene = 3
+ send '
+ else if Ebene = 4
+ SendUnicodeChar(0x03F1) ; varrho
+ else if Ebene = 5
+ Send 2
+ else if Ebene = 7
+ SendUnicodeChar(0x21D0) ; Doppelpfeil nach links
+ PriorDeadKey := ""
+return
+
+*.::
+ EbeneAktualisieren()
+ if Ebene = 1
+ send {blind}.
+ else if Ebene = 2
+ SendUnicodeChar(0x2026) ; ellipse
+ else if Ebene = 3
+ send "
+ else if Ebene = 4
+ SendUnicodeChar(0x03B8) ;theta
+ else if Ebene = 5
+ Send 3
+ else if Ebene = 7
+ SendUnicodeChar(0x0398) ; Theta
+ PriorDeadKey := ""
+return
+
+
+*-::
+ EbeneAktualisieren()
+ if Ebene = 1
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x0135)
+ Else If (PriorDeadKey = "c2") ; caron
+ BSSendUnicodeChar(0x01F0)
+ Else
+ sendinput {blind}j
+ }
+ else if Ebene = 2
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x0134)
+ Else
+ sendinput {blind}J
+ }
+ else if Ebene = 3
+ send `;
+ else if Ebene = 4
+ SendUnicodeChar(0x03D1) ; vartheta
+ else if Ebene = 5
+ Send .
+ else if Ebene = 7
+ SendUnicodeChar(0x2261) ; identisch zu (auch über tote Tasten)
+ PriorDeadKey := ""
+return
+
+/*
+ ------------------------------------------------------
+ Numpad
+ ------------------------------------------------------
+
+ folgende Tasten verhalten sich bei ein- und ausgeschaltetem
+ NumLock gleich:
+*/
+
+*NumpadDiv::
+ EbeneAktualisieren()
+ if ( (Ebene = 1) or (Ebene = 2) )
+ send {NumpadDiv}
+ else if Ebene = 3
+ send ÷
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ SendUnicodeChar(0x2215) ; slash
+ PriorDeadKey := ""
+return
+
+*NumpadMult::
+ EbeneAktualisieren()
+ if ( (Ebene = 1) or (Ebene = 2) )
+ send {NumpadMult}
+ else if Ebene = 3
+ send ×
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ SendUnicodeChar(0x22C5) ; cdot
+ PriorDeadKey := ""
+return
+
+*NumpadSub::
+ EbeneAktualisieren()
+ if ( (Ebene = 1) or (Ebene = 2) )
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x207B)
+ Else
+ send {blind}{NumpadSub}
+ }
+ else if ( (Ebene = 3) or (Ebene = 4) or (Ebene = 5) )
+ SendUnicodeChar(0x2212) ; echtes minus
+ PriorDeadKey := ""
+return
+
+*NumpadAdd::
+ EbeneAktualisieren()
+ if ( (Ebene = 1) or (Ebene = 2) )
+ {
+ If (PriorDeadKey = "c1") ; circumflex
+ BSSendUnicodeChar(0x207A)
+ Else
+ send {blind}{NumpadAdd}
+ }
+ else if Ebene = 3
+ send ±
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ SendUnicodeChar(0x2213) ; -+
+ PriorDeadKey := ""
+return
+
+*NumpadEnter::
+ EbeneAktualisieren()
+ if ( (Ebene = 1) or (Ebene = 2) )
+ send {NumpadEnter}
+ else if Ebene = 3
+ SendUnicodeChar(0x2260) ; neq
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ SendUnicodeChar(0x2248) ; approx
+ PriorDeadKey := ""
+return
+
+/*
+ folgende Tasten verhalten sich bei ein- und ausgeschaltetem NumLock
+ unterschiedlich:
+
+ bei NumLock ein
+*/
+
+*Numpad7::
+ EbeneAktualisieren()
+ if Ebene = 1
+ send {blind}{Numpad7}
+ else if Ebene = 2
+ send {NumpadHome}
+ else if Ebene = 3
+ SendUnicodeChar(0x20D7) ; Combining Vektorpfeil
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ SendUnicodeChar(0x226A) ; ll
+ PriorDeadKey := ""
+return
+
+*Numpad8::
+ EbeneAktualisieren()
+ if Ebene = 1
+ send {blind}{Numpad8}
+ else if Ebene = 2
+ send {NumpadUp}
+ else if Ebene = 3
+ SendUnicodeChar(0x2191) ; uparrow
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ SendUnicodeChar(0x2229) ; intersection
+ PriorDeadKey := ""
+return
+
+*Numpad9::
+ EbeneAktualisieren()
+ if Ebene = 1
+ send {blind}{Numpad9}
+ else if Ebene = 2
+ send {NumpadPgUp}
+ else if Ebene = 3
+ SendUnicodeChar(0x2297) ; Circled Times
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ SendUnicodeChar(0x226B) ; gg
+ PriorDeadKey := ""
+return
+
+*Numpad4::
+ EbeneAktualisieren()
+ if Ebene = 1
+ send {blind}{Numpad4}
+ else if Ebene = 2
+ send {NumpadLeft}
+ else if Ebene = 3
+ SendUnicodeChar(0x2190) ; leftarrow
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ SendUnicodeChar(0x2282) ; subset of
+ PriorDeadKey := ""
+return
+
+*Numpad5::
+ EbeneAktualisieren()
+ if Ebene = 1
+ send {blind}{Numpad5}
+ else if Ebene = 2
+ send {€}
+ else if Ebene = 3
+ SendUnicodeChar(0x221E) ; Infty
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ SendUnicodeChar(0x220B) ; Element
+ PriorDeadKey := ""
+return
+
+*Numpad6::
+ EbeneAktualisieren()
+ if Ebene = 1
+ send {blind}{Numpad6}
+ else if Ebene = 2
+ send {NumpadRight}
+ else if Ebene = 3
+ SendUnicodeChar(0x2192) ; rightarrow
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ SendUnicodeChar(0x2283) ; superset of
+ PriorDeadKey := ""
+return
+
+*Numpad1::
+ EbeneAktualisieren()
+ if Ebene = 1
+ send {blind}{Numpad1}
+ else if Ebene = 2
+ send {NumpadEnd}
+ else if Ebene = 3
+ SendUnicodeChar(0x21CB) ; LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ SendUnicodeChar(0x2264) ; leq
+ PriorDeadKey := ""
+return
+
+*Numpad2::
+ EbeneAktualisieren()
+ if Ebene = 1
+ send {blind}{Numpad2}
+ else if Ebene = 2
+ send {NumpadDown}
+ else if Ebene = 3
+ SendUnicodeChar(0x2193) ; downarrow
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ SendUnicodeChar(0x222A) ; vereinigt
+ PriorDeadKey := ""
+return
+
+*Numpad3::
+ EbeneAktualisieren()
+ if Ebene = 1
+ send {blind}{Numpad3}
+ else if Ebene = 2
+ send {NumpadPgDn}
+ else if Ebene = 3
+ SendUnicodeChar(0x21CC) ; RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ SendUnicodeChar(0x2265) ; geq
+ PriorDeadKey := ""
+return
+
+*Numpad0::
+ EbeneAktualisieren()
+ if Ebene = 1
+ send {blind}{Numpad0}
+ else if Ebene = 2
+ send {NumpadIns}
+ else if Ebene = 3
+ send `%
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ send ‰
+ PriorDeadKey := ""
+return
+
+*NumpadDot::
+ EbeneAktualisieren()
+ if Ebene = 1
+ send {NumpadDot}
+ else if Ebene = 2
+ send {NumpadDel}
+ else if Ebene = 3
+ send .
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ send `,
+ PriorDeadKey := ""
+return
+
+/*
+ bei NumLock aus
+*/
+
+*NumpadHome::
+ EbeneAktualisieren()
+ if Ebene = 1
+ send {blind}{Numpad7}
+ else if Ebene = 2
+ send {NumpadHome}
+ else if Ebene = 3
+ SendUnicodeChar(0x20D7) ; Combining Vektorpfeil
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ SendUnicodeChar(0x226A) ; ll
+ PriorDeadKey := ""
+return
+
+*NumpadUp::
+ EbeneAktualisieren()
+ if Ebene = 1
+ send {NumpadUp}
+ else if Ebene = 2
+ send {Numpad8}
+ else if Ebene = 3
+ SendUnicodeChar(0x2191) ; uparrow
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ SendUnicodeChar(0x2229) ; intersection
+ PriorDeadKey := ""
+return
+
+*NumpadPgUp::
+ EbeneAktualisieren()
+ if Ebene = 1
+ send {blind}{Numpad9}
+ else if Ebene = 2
+ send {NumpadPgUp}
+ else if Ebene = 3
+ SendUnicodeChar(0x2297) ; Circled Times
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ SendUnicodeChar(0x226B) ; gg
+ PriorDeadKey := ""
+return
+
+*NumpadLeft::
+ EbeneAktualisieren()
+ if Ebene = 1
+ send {NumpadLeft}
+ else if Ebene = 2
+ send {Numpad4}
+ else if Ebene = 3
+ SendUnicodeChar(0x2190) ; leftarrow
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ SendUnicodeChar(0x2282) ; subset of
+ PriorDeadKey := ""
+return
+
+*NumpadClear::
+ EbeneAktualisieren()
+ if Ebene = 1
+ send {blind}{Numpad5}
+ else if Ebene = 2
+ send {€}
+ else if Ebene = 3
+ SendUnicodeChar(0x221E) ; Infty
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ SendUnicodeChar(0x220B) ; Element
+ PriorDeadKey := ""
+return
+
+*NumpadRight::
+ EbeneAktualisieren()
+ if Ebene = 1
+ send {NumpadRight}
+ else if Ebene = 2
+ send {Numpad6}
+ else if Ebene = 3
+ SendUnicodeChar(0x2192) ; rightarrow
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ SendUnicodeChar(0x2283) ; superset of
+ PriorDeadKey := ""
+return
+
+*NumpadEnd::
+ EbeneAktualisieren()
+ if Ebene = 1
+ send {NumpadEnd}
+ else if Ebene = 2
+ send {Numpad1}
+ else if Ebene = 3
+ SendUnicodeChar(0x21CB) ; LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ SendUnicodeChar(0x2264) ; leq
+ PriorDeadKey := ""
+return
+
+*NumpadDown::
+ EbeneAktualisieren()
+ if Ebene = 1
+ send {NumpadDown}
+ else if Ebene = 2
+ send {Numpad2}
+ else if Ebene = 3
+ SendUnicodeChar(0x2193) ; downarrow
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ SendUnicodeChar(0x222A) ; vereinigt
+ PriorDeadKey := ""
+return
+
+*NumpadPgDn::
+ EbeneAktualisieren()
+ if Ebene = 1
+ send {NumpadPgDn}
+ else if Ebene = 2
+ send {Numpad3}
+ else if Ebene = 3
+ SendUnicodeChar(0x21CC) ; RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ SendUnicodeChar(0x2265) ; geq
+ PriorDeadKey := ""
+return
+
+*NumpadIns::
+ EbeneAktualisieren()
+ if Ebene = 1
+ send {NumpadIns}
+ else if Ebene = 2
+ send {Numpad0}
+ else if Ebene = 3
+ send `%
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ send ‰
+ PriorDeadKey := ""
+return
+
+*NumpadDel::
+ EbeneAktualisieren()
+ if Ebene = 1
+ send {NumpadDel}
+ else if Ebene = 2
+ send {NumpadDot}
+ else if Ebene = 3
+ send .
+ else if ( (Ebene = 4) or (Ebene = 5) )
+ send `,
+ PriorDeadKey := ""
+return
+
+
+
+/*
+ ------------------------------------------------------
+ Sondertasten
+ ------------------------------------------------------
+*/
+
+*Space::
+ EbeneAktualisieren()
+ if Ebene = 4
+ SendUnicodeChar(0x00A0) ; geschütztes Leerzeichen
+ else if Ebene = 5
+ Send 0
+ else if Ebene = 7
+ SendUnicodeChar(0x202F) ; schmales Leerzeichen
+ else
+ Send {blind}{Space}
+ PriorDeadKey := ""
+return
+
+/*
+ Folgende Tasten sind nur aufgeführt, um PriorDeadKey zu leeren.
+ Irgendwie sieht das noch nicht schön aus. Vielleicht lässt sich dieses
+ Problem irgendwie eleganter lösen...
+
+ Nachtrag:
+ Weil es mit Alt+Tab Probleme gab, wird hier jetzt erstmal rumgeflickschustert,
+ bis eine allgemeinere Lösung gefunden wurde.
+*/
+
+*Enter::
+ sendinput {Blind}{Enter}
+ PriorDeadKey := ""
+return
+
+*Backspace::
+ sendinput {Blind}{Backspace}
+ PriorDeadKey := ""
+return
+
+
+
+/*
+Tab wurde rausgenommen, weil es Probleme mit AltTab und ShiftAltTab gab.
+Allerdings kommt es jetzt zu komischen Ergebnissen, wenn man Tab nach
+einem DeadKey drückt...
+
+*Tab::
+ send {Blind}{Tab}
+ PriorDeadKey := ""
+return
+
+*/
+
+*Home::
+ sendinput {Blind}{Home}
+ PriorDeadKey := ""
+return
+
+*End::
+ sendinput {Blind}{End}
+ PriorDeadKey := ""
+return
+
+*PgUp::
+ sendinput {Blind}{PgUp}
+ PriorDeadKey := ""
+return
+
+*PgDn::
+ sendinput {Blind}{PgDn}
+ PriorDeadKey := ""
+return
+
+*Up::
+ sendinput {Blind}{Up}
+ PriorDeadKey := ""
+return
+
+*Down::
+ sendinput {Blind}{Down}
+ PriorDeadKey := ""
+return
+
+*Left::
+ sendinput {Blind}{Left}
+ PriorDeadKey := ""
+return
+
+*Right::
+ sendinput {Blind}{Right}
+ PriorDeadKey := ""
+return
+
+
+/*
+ ------------------------------------------------------
+ Funktionen
+ ------------------------------------------------------
+*/
+
+EbeneAktualisieren()
+{
+ global
+ Ebene = 1
+
+ ; ist Shift down?
+ if ( GetKeyState("Shift","P") )
+ {
+ Ebene += 1
+ }
+ ; ist Mod3 down?
+ if ( GetKeyState("CapsLock","P") or GetKeyState("#","P") ) {
+ ; ist Mod4 down?
+ if ( GetKeyState("<","P") or GetKeyState("SC138","P") ) {
+ Ebene +=6
+ }
+ else Ebene += 2
+ }
+ ; ist Mod4 down? Mod3 hat Vorrang!
+ else if ( GetKeyState("<","P") or GetKeyState("SC138","P") ) {
+ ; ist Mod3 down?
+ if ( GetKeyState("CapsLock","P") or GetKeyState("#","P") ) {
+ Ebene +=6
+ }
+ else Ebene += 4
+ }
+
+ return
+}
+
+
+/*************************
+ Alte Methoden
+*************************/
+
+/*
+Unicode(code)
+{
+ saved_clipboard := ClipboardAll
+ Transform, Clipboard, Unicode, %code%
+ sendplay ^v
+ Clipboard := saved_clipboard
+}
+
+BSUnicode(code)
+{
+ saved_clipboard := ClipboardAll
+ Transform, Clipboard, Unicode, %code%
+ sendplay {bs}^v
+ Clipboard := saved_clipboard
+}
+*/
+
+SendUnicodeChar(charCode)
+{
+ VarSetCapacity(ki, 28 * 2, 0)
+
+ EncodeInteger(&ki + 0, 1)
+ EncodeInteger(&ki + 6, charCode)
+ EncodeInteger(&ki + 8, 4)
+ EncodeInteger(&ki +28, 1)
+ EncodeInteger(&ki +34, charCode)
+ EncodeInteger(&ki +36, 4|2)
+
+ DllCall("SendInput", "UInt", 2, "UInt", &ki, "Int", 28)
+}
+
+
+BSSendUnicodeChar(charCode)
+{
+ send {bs}
+ VarSetCapacity(ki, 28 * 2, 0)
+
+ EncodeInteger(&ki + 0, 1)
+ EncodeInteger(&ki + 6, charCode)
+ EncodeInteger(&ki + 8, 4)
+ EncodeInteger(&ki +28, 1)
+ EncodeInteger(&ki +34, charCode)
+ EncodeInteger(&ki +36, 4|2)
+
+ DllCall("SendInput", "UInt", 2, "UInt", &ki, "Int", 28)
+}
+
+
+EncodeInteger(ref, val)
+{
+ DllCall("ntdll\RtlFillMemoryUlong", "Uint", ref, "Uint", 4, "Uint", val)
+}
+
+
+/*
+ ------------------------------------------------------
+ Shift+Pause "pausiert" das Script.
+ ------------------------------------------------------
+*/
+
++pause::suspend
|