Changeset 746

Show
Ignore:
Timestamp:
08/12/08 02:03:21 (5 years ago)
Author:
martin_r
Message:

Zerschossene Lang-s-Tastatur wiederhergestellt
Esc(4) setzt Tastatur zurück
Variablen Ebene7 und Ebene8 zum Abfragen eingeführt
#(2L)-Bug behoben
Korrektur gelesen

Location:
windows/autohotkey
Files:
10 modified

Legend:

Unmodified
Added
Removed
  • windows/autohotkey/Build-Update.bat

    r689 r746  
    33echo Setting local path variables 
    44 
    5 REM The path to the Auto Hotkeyprogram 
     5REM The path to the AutoHotkey program 
    66set ahk=C:\Programme\AutoHotkey 
    77 
    8 REM The path to the authohotkey directory in the local svn copy 
     8REM The path to the AutoHohotkey directory in the local svn copy 
    99set svn=. 
    1010 
    11 REM Just some usefull shortcuts: 
     11REM Just some useful shortcuts: 
    1212set scr="%svn%\Source" 
    1313set fn=neo20 
     
    2121REM if exist "%svn%\Compose\Compose-all-in-one.ahk" copy "%svn%\%fn%.ahk" + "%svn%\Compose\Compose-all-in-one.ahk" "%svn%\%fn%.ahk" 
    2222 
    23 echo Compiling the new Driver using Autohotkey 
     23echo Compiling the new Driver using AutoHotkey 
    2424"%ahk%\Compiler\Ahk2Exe.exe" /in "%svn%\%fn%.ahk" /out "%svn%\%fn%.exe" /icon "%svn%\neo.ico" 
    2525echo Driver Update complete! You can now close this log-window. 
  • windows/autohotkey/CHANGES.txt

    r743 r746  
    1 == Neo 2.0 Autohotkey-Treiber für Windows == 
     1== Neo 2.0 Autohotkey-Treiber f�r Windows == 
    22 
    3 == 2008-08-11 Matthias Wächter == 
     3== 2008-08-11 Matthias Wchter == 
    44 
    5 Ebene4-Ziffernblock: NumpadAdd und NumPadSub korriegiert 
     5Ebene4-Ziffernblock: NumPadAdd und NumPadSub korrigiert 
    66 
    77 
    8 == 2008-08-10 Matthias Wächter == 
     8== 2008-08-10 Matthias Wchter == 
    99 
    10 • Erstmal ist fast kein Stein auf dem anderen geblieben. Die grobe Struktur und das Verhalten (natürlich auch die Tastenbelegung ist 100% NEO!) sind grundsätzlich gleich geblieben, aber einerseits hat sich im Feinen viel getan (z.B. Tab-Behandlung), andererseits schauen viele Zeilen altbekannten Codes jetzt anders aus. 
     10� Erstmal ist fast kein Stein auf dem anderen geblieben. Die grobe Struktur und das Verhalten (nat�rlich ist auch die Tastenbelegung 100% NEO!) sind grunds�tzlich gleich geblieben, aber einerseits hat sich im Feinen viel getan (z.B. Tab-Behandlung), andererseits schauen viele Zeilen altbekannten Codes jetzt anders aus. 
    1111 
    12 • Beim »Booten« wird einmal EbeneAktualisieren() aufgerufen, um die Ebene sicher richtig zu haben. Dieses fragt jetzt auch den Zustand von NumLock ab, damit man es bei der NumPad-Behandlung gleich parat hat. 
     12� Beim �Booten� wird einmal EbeneAktualisieren() aufgerufen, um die Ebene sicher richtig zu haben. Dieses fragt jetzt auch den Zustand von NumLock ab, damit man es bei der NumPad-Behandlung gleich parat hat. 
    1313 
    14 • Die DeadKey- und CompKey-Behandlung ist zwar im Prinzip gleich geblieben, aber die Syntax habe ich wesentlich gestrafft. Die einzelnen Subs haben jetzt nur mehr den Job, DeadKey und CompKey zu setzen, wenn dieser nach Verlassen des Subs einen Wert haben soll  EbeneAktualisieren() überträgt für eine einfachere Handhabung die beiden Variablen DeadKey und CompKey nach PriorDeadKey und PriorCompKey. Letztere können im Programm abgefragt werden, während die nicht-Prior-Varianten schamlos verändert werden dürfen. Das entfernt die immer gleichen (aber doch manchmal unterschiedlichen und nicht selten lückenhaften) Zeilen a la »CompKey := ""«. 
     14� Die DeadKey- und CompKey-Behandlung ist zwar im Prinzip gleich geblieben, aber die Syntax habe ich wesentlich gestrafft. Die einzelnen Subs haben jetzt nur mehr den Job, DeadKey und CompKey zu setzen, wenn dieser nach Verlassen des Subs einen Wert haben soll.  EbeneAktualisieren() �bertr�gt f�r eine einfachere Handhabung die beiden Variablen DeadKey und CompKey nach PriorDeadKey und PriorCompKey. Letztere k�nnen im Programm abgefragt werden, w�hrend die nicht-Prior-Varianten schamlos ver�ndert werden d�rfen. Das entfernt die immer gleichen (aber doch manchmal unterschiedlichen und nicht selten l�ckenhaften) Zeilen a la �CompKey := ""�. 
    1515 
    16 • Ich habe ganz dreist auf Scancodes mit Virtual Keys umgestellt. Schöner wäre es natürlich gewesen, wenn ich auf die VKs hätte verzichten können, aber das führt ja zu bekannten Problemen mit AHK-Bugs, sodass Scancode-Trigger plötzlich von SendUnicodeChar-Zeilen aktiviert werden. Durch das Abfragen der VKs sind wir aber immer noch nicht soweit, dass wir Layout-agnostisch arbeiten können. 
     16� Ich habe ganz dreist auf Scancodes mit Virtual Keys umgestellt. Sch�ner w�re es nat�rlich gewesen, wenn ich auf die VKs h�tte verzichten k�nnen, aber das f�hrt ja zu bekannten Problemen mit AHK-Bugs, sodass Scancode-Trigger pl�tzlich von SendUnicodeChar-Zeilen aktiviert werden. Durch das Abfragen der VKs sind wir aber immer noch nicht soweit, dass wir Layout-agnostisch arbeiten k�nnen. 
    1717 
    18 • Dabei gibt es noch ein paar wesentliche Änderungen im Bereich der Tastentrigger: Erstens gehen alle bekannten Scancodes für den NumPad auf paarweise gemeinsame Routinen. Das hält sie nicht nur konsistent, sondern ermöglicht erst eine konsequente Analyse in Zusammenhang mit NumLock und Shift. Zweitens wird bei der Tab-Taste _nur_ mehr der Trigger ohne Modifier abgefragt. Das bedeutet, dass beispielsweise Tab in Verbindung mit Alt an unserem Skript vorbei geschleust wird, um Probleme zu verhindern. 
     18� Dabei gibt es noch ein paar wesentliche �nderungen im Bereich der Tastentrigger: Erstens gehen alle bekannten Scancodes f�r den NumPad auf paarweise gemeinsame Routinen. Das h�lt sie nicht nur konsistent, sondern erm�glicht erst eine konsequente Analyse in Zusammenhang mit NumLock und Shift. Zweitens wird bei der Tab-Taste _nur_ noch der Trigger ohne Modifier abgefragt. Das bedeutet, dass beispielsweise Tab in Verbindung mit Alt an unserem Skript vorbei geschleust wird, um Probleme zu verhindern. 
    1919 
    20 • Drittens, und eines eigenen Punktes in dieser Liste würdig, werden die Modifier in deutlich reduziertem Umfang abgefragt und nur die wirklich interessanten Fälle behandelt. Auch das erlaubt beispielsweise der Alt-Taste wieder ungestörten Einsatz, Shifts werden ganz normal der Applikation gemeldet, wenn sie gedrückt sind, und weniger Merkwürdigkeiten mir lange gehaltenen Modifiern. Grundsätzlich ist in diesem Bereich aber einer der Schwachpunkte des AHK-Skripts sauberer Key-Repeat. 
     20� Schlie�lich, und eines eigenen Punktes in dieser Liste w�rdig, werden die Modifier in deutlich reduziertem Umfang abgefragt und nur die wirklich interessanten F�lle behandelt. Auch das erlaubt beispielsweise der Alt-Taste wieder ungest�rten Einsatz, Shifts werden ganz normal der Applikation gemeldet, wenn sie gedr�ckt sind, und weniger Merkw�rdigkeiten mit lange gehaltenen Modifiern. Grunds�tzlich ist in diesem Bereich aber einer der Schwachpunkte des AHK-Skripts sauberer Key-Repeat. 
    2121 
    22 • In jedem Fall laufen bei mir alle Modifier-Locks: Shift+Shift in jedwelcher Reihenfolge für CapsLock, Mod3+Mod3 genauso, und auch Mod4-Lock spielt auf die Art problemlos! 
     22� In jedem Fall laufen bei mir alle Modifier-Locks: Shift+Shift in jedwelcher Reihenfolge f�r CapsLock, Mod3+Mod3 genauso, und auch Mod4-Lock spielt auf die Art problemlos! 
    2323 
    24 • Bei mir hat die Bildschirmtastatur nicht richtig funktionieren wollen, wenn ich das all.ahk aus dem source/-Verzeichnis verwendet habe. Ein kleiner Patch, und schon geht’s. Ein Refresh beim ersten Start war auch eingebaut, der hat ein unnötiges Flackern produziert. Vielleicht braucht ihn ja wer, bitte melden (mit Begründung!). Außerdem habe ich die Abfragen für die Funktionstasten und von Shift+Pause im Stil der anderen Tasten abgeändert. 
     24� Bei mir hat die Bildschirmtastatur nicht richtig funktionieren wollen, wenn ich das all.ahk aus dem source/-Verzeichnis verwendet habe. Ein kleiner Patch, und schon geht�s. Ein Refresh beim ersten Start war auch eingebaut, der hat ein unn�tiges Flackern produziert. Vielleicht braucht ihn ja wer, bitte melden (mit Begr�ndung!). Au�erdem habe ich die Abfragen f�r die Funktionstasten und von Shift+Pause im Stil der anderen Tasten abge�ndert. 
    2525 
    26 • Nachdem ich viel Zeit verplempert hatte, weil ich den Unterschied zwischen »if Ebene = 2« und »if (Ebene = 2)« nicht gekannt und daher den ganzen Quellcode großzügig editiert hatte, um dann herauszufinden, dass es so nicht geht‘, habe ich jetzt konsequent (hoffentlich) alle Abfragen mit »if ()«, also mit konsequenter Klammersetzung zur richtigen Evaluirung durch AHK gemacht. 
     26� Nachdem ich viel Zeit verplempert hatte, weil ich den Unterschied zwischen �if Ebene = 2� und �if (Ebene = 2)� nicht gekannt und daher den ganzen Quellcode gro�z�gig editiert hatte, um dann herauszufinden, dass es so nicht geht, habe ich jetzt konsequent (hoffentlich) alle Abfragen mit �if ()�, also mit konsequenter Klammersetzung zur richtigen Evaluierung durch AHK gemacht. 
    2727 
    28 • Nicht ganz fertig bin ich mit meinem deadKeys-deadComposeKeys geworden: Über Tastendrücke (z.B. Mod4+F9) sollen sich die Deadkeys und ComposeKeys tatsächlich dergestalt »umbringen«, dass sie nicht mehr am Schirm erscheinen, wodurch das Skript sie auch nicht mehr mit {bs} löschen muss, wenn das endgültige Zeichen fest steht. Für die DeadKeys ist’s schon drinnen, aber für die Compose-Sachen müsste ich die Logik ein weiteres Mal auf den Kopf stellen, und das ist mir für heute einfach zu viel. 
     28� Nicht ganz fertig bin ich mit meinem deadKeys-deadComposeKeys geworden: �ber Tastendr�cke (z.B. Mod4+F9) sollen sich die Deadkeys und ComposeKeys tats�chlich dergestalt �umbringen�, dass sie nicht mehr am Schirm erscheinen, wodurch das Skript sie auch nicht mehr mit {bs} l�schen muss, wenn das endg�ltige Zeichen fest steht. F�r die DeadKeys ist�s schon drinnen, aber f�r die Compose-Sachen m�sste ich die Logik ein weiteres Mal auf den Kopf stellen, und das ist mir f�r heute einfach zu viel. 
    2929 
    30 • Für das Abfragen von gemerkten DeadKeys und CompKeys habe ich Routinen geschrieben, die sich mit einem Shortcut-Evaluations-Trick recht kompakt darstellen lassen. Zusätzlich habe ich bei den Buchstaben die Abfragen für die Ebenen 1 und 2 zusammen gelegt, was nochmals deutlich Platz spart und der Übersichtlichkeit dienlich ist. 
     30� F�r das Abfragen von gemerkten DeadKeys und CompKeys habe ich Routinen geschrieben, die sich mit einem Shortcut-Evaluations-Trick recht kompakt darstellen lassen. Zus�tzlich habe ich bei den Buchstaben die Abfragen f�r die Ebenen 1 und 2 zusammen gelegt, was nochmals deutlich Platz spart und der �bersichtlichkeit dienlich ist. 
    3131 
    32 • Ich habe jetzt, wo möglich, doch die Ausgabe mit »send« der mit »SendUnicodeChar« vorgezogen, da so manches Windows-Programm doch nicht ganz so intelligent wie der Rest der Meute ist. Andererseits habe ich ziemlich konsequent mit {blind} gearbeitet. Ein paar Passagen fehlen noch, insbesondere auf Ebene 2, die noch ohne {blind} sind  diese sollte man wohl umstellen auf »send {blind}{Shift up}..{shift down}«, um auch mit Alt, Strg und Win korrekt kombinieren zu können (Shift fällt ja leider flach, da bereits gedrückt). 
     32� Ich habe jetzt, wo m�glich, doch die Ausgabe mit �send� der mit �SendUnicodeChar� vorgezogen, da so manches Windows-Programm doch nicht ganz so intelligent wie der Rest der Meute ist. Andererseits habe ich ziemlich konsequent mit {blind} gearbeitet. Ein paar Passagen fehlen noch, insbesondere auf Ebene 2, die noch ohne {blind} sind, diese sollte man wohl umstellen auf �send {blind}{Shift up}..{shift down}�, um auch mit Alt, Strg und Win korrekt kombinieren zu k�nnen (Shift f�llt ja leider flach, da bereits gedr�ckt). 
    3333 
    34 • Diverse Compose-Namen habe ich gekürzt  wenn man case sensitive vergleichen möchte, muss man nur mit == abfragen, statt die Strings auf beispielsweise »r_capital« zu setzen. 
     34� Diverse Compose-Namen habe ich gek�rzt, wenn man case-sensitive vergleichen m�chte, muss man nur mit == abfragen, statt die Strings auf beispielsweise �r_capital� zu setzen. 
    3535 
    36 • Die Sache mit Capslock ist für meinen Geschmack immer noch nicht befriedigend gelöst, scheint aber im Moment ganz gut zu laufen. Mit Compose verträgt sich CapsLock garnicht, außer man erwartet bei aktiviertem CapsLock nach Eingabe von »R12« das da: ⅻ. 
     36� Die Sache mit Capslock ist f�r meinen Geschmack immer noch nicht befriedigend gel�st, scheint aber im Moment ganz gut zu laufen. Mit Compose vertr�gt sich CapsLock garnicht, au�er man erwartet bei aktiviertem CapsLock nach Eingabe von �R12� das da: ?. 
    3737 
    38 • Ungeachtet der Vorschläge, wie mit dem NumPad weiter vor zu gehen ist, habe ich es jetzt erst mal -Y¥unangetastet´ lassen, wenn man bei solch einer Baustelle noch von Unversehrtheit sprechen kann. 
     38� Ungeachtet der Vorschl�ge, wie mit dem NumPad weiter vor zu gehen ist, habe ich es jetzt erst mal unangetastet lassen, wenn man bei solch einer Baustelle noch von Unversehrtheit sprechen kann. 
    3939 
    40 • Das Numpad auf Ebene 4 unter der rechten Hand habe ich derart abgeändert, dass es statt der blanken Zahlen NumPad-Codes liefert. Damit kann man es reichhaltiger verwenden als die Tasten in Zeile 1. Auch die Cursortasten auf gleicher Ebene, linke Hand, werden jetzt {blind} geschickt, um diverse Navigationsmöglichkeiten mit den anderen Modifiern (Shift, Strg) zu öffnen. 
     40� Das Numpad auf Ebene 4 unter der rechten Hand habe ich derart abge�ndert, dass es statt der blanken Zahlen NumPad-Codes liefert. Damit kann man es reichhaltiger verwenden als die Tasten in Zeile 1. Auch die Cursortasten auf gleicher Ebene, linke Hand, werden jetzt {blind} geschickt, um diverse Navigationsm�glichkeiten mit den anderen Modifiern (Shift, Strg) zu �ffnen. 
    4141 
    42 • Insgesamt hat sich der Code-Umfang drastisch verringert: mein fertiges neo20.ahk hat jetzt nur mehr 93 kB, wo das alte noch 126 kB hatte. Das ist mit 33 kB fast ¼ weniger Code! Ob’s auch damit ¼ weniger Bugs sind, kann ich nicht sagen … ;-) 
     42� Insgesamt hat sich der Code-Umfang drastisch verringert: meine fertige neo20.ahk hat jetzt nur noch 93 kB, wogegen die alte noch 126 kB hatte. Das ist mit 33 kB fast � weniger Code! Ob�s damit auch � weniger Bugs sind, kann ich nicht sagen � ;-) 
    4343 
    4444Known Bugs: 
    4545=========== 
    4646 
    47 • Ich kann keine Flash-Spiele spielen (Firefox), die die Tastatur benötigen. Ist das bekannt? Ist davon auch Java betroffen? 
     47� Ich kann keine Flash-Spiele spielen (Firefox), die die Tastatur ben�tigen. Ist das bekannt? Ist davon auch Java betroffen? 
    4848 
    49  Manche Compose-Kombinationen zwischen den Zahlen habe ich auf dem NumPad vereinheitlicht aber noch nicht auf Zeile 1. 
     49 Manche Compose-Kombinationen zwischen den Zahlen habe ich auf dem NumPad vereinheitlicht aber noch nicht auf Zeile 1. 
    5050 
    51 • Die diversen Compose-Experimentierkästen unter Compose/ habe ich nicht angerührt, sie werden woht auch kleine Anpassungen benötigen. 
     51� Die diversen Compose-Experimentierk�sten unter Compose/ habe ich nicht anger�hrt, sie werden wohl auch kleine Anpassungen ben�tigen. 
    5252 
    53 • Der Patch ist in dieser Form quasi ungetestet. Die wichtigsten funktionalen Änderungen wie die Mod-Lock und das Zusammenführen der Numlock-Numpad-Ebenen habe ich schon vor diesem Patch ausprobiert, aber insbesondere die diversen CheckDead* und CheckComp*-Aufrufe sind erst vor ein paar Stunden entstanden. 
     53� Der Patch ist in dieser Form quasi ungetestet. Die wichtigsten funktionalen �nderungen wie die Mod-Lock und das Zusammenf�hren der Numlock-Numpad-Ebenen habe ich schon vor diesem Patch ausprobiert, aber insbesondere die diversen CheckDead* und CheckComp*-Aufrufe sind erst vor ein paar Stunden entstanden. 
  • windows/autohotkey/Source/Changelog-and-Todo.ahk

    r744 r746  
    1 /* 
     1/************************************ 
     2* NEO 2.0 (beta) AutoHotkey-Treiber * 
    23************************************* 
    3 * NEO 2.0 (beta) Autohotkey-Treiber * 
    4 ************************************* 
     4 
    55Autoren: 
    66Stefan Mayer <stm (at) neo-layout. o r g> 
    7 Nora Geissler <nora_geissler (at) yahoo. d e> 
     7Nora Geiler <nora_geissler (at) yahoo. d e> 
    88Matthias Berg <neo (at) matthias-berg. e u> 
    99Martin Roppelt <m.p.roppelt (at) web. d e> 
    1010Dennis Heidsiek <HeidsiekB (at) aol. c o m> 
    11 Matthias W�chter <matthias (at) waechter.. w i z .. a t> 
     11Matthias W�chter <matthias (at) waechter.wiz. a t> 
    1212... 
    13  
    14  
    1513 
    1614********* 
    1715* TODO: * 
    1816********* 
    19 - Die Bildschirmtastatur mit Mod4 hat den Mod4-Lock deaktiviert! 
    2017- Compose vollst�ndig implementieren (Welche Methode ist hierzu am besten geeignet?) 
    2118- ausgiebig testen... (besonders Vollst�ndigkeit bei Deadkeys) 
     
    2421- Die Ebenen vom Tastenblock an die neue Referenz anpassen (wenn da ein Konsens gefunden wurde) 
    2522 
    26  
    2723********** 
    2824* IDEEN: * 
    2925********** 
    30 - Tastatur-Reset: mod4+escape (oder ev. ein anderer Hotkey) soll die Tastatur wieder in den Normalzustand versetzen (d.h. alle Ebenen unlocken und Einhand, Lang-s oder Sonstwelche-Modi deaktivieren) 
    31 - Die Varianten (lernModus, einHandNeo, Lang-s-Tastatur, Qwertz/pausieren) sollten einheitlich (de-)aktiviert werden, etwa �ber Mod4 F9-F12 
    32 - bei Ebene 4 rechte Hand (Numpad) z.B. Numpad5 statt 5 senden 
    33  
    34  
     26- Die Varianten (lernModus, einHandNeo, Lang-s-Tastatur, Qwertz/pausieren) sollten einheitlich (de-)aktiviert werden, etwa �ber M4+F9-F12 
    3527 
    3628****************** 
     
    3830****************** 
    3931 
     32Revision 746 (von Martin Roppelt) 
     33- Zur�cksetzen der Tastatur �ber M4+Esc 
     34- #(2L) sendet nicht mehr ' 
     35- Variablen Ebene7 und Ebene8 zum Abfragen eingef�hrt 
     36- s(12)(2L)-Bug von Matthias W�chter behoben 
    4037Revision 744 (von Stefan Mayer) 
    4138- Ebene4-Ziffernblock: auf neo_d nun Komma (wie Referenz), "NumPadKomma" gibt es nicht 
     
    4441Revision 740 (von Matthias W�chter, commit durch HCW) 
    4542- "Mega-Patch" (Skript verk�rzt, Ebenenabfrage ver�ndert, ...), siehe CHANGES.txt 
     43- Blinde tote Tasten auf M4+F9 (Toggle) 
     44- Blinde Compose auf M4+F10 (Toggle) 
    4645Revision 728 (von Dennis Heidsiek): 
    47 - Ist die Datei [...]\Anwendungsdaten\NEO2\NEO2.ini vorhanden, werden dort eventuell vonhandene Werte f�r die Globalen Schalter beim Start �bernommen 
     46- Ist die Datei %APPDATA%\NEO2\NEO2.ini vorhanden, werden dort eventuell vorhandene Werte f�r die Globalen Schalter beim Start �bernommen 
     47- �LangSTastaturStandardm��igEingeschaltet.ahk� wird nicht mehr unterst�tzt, weil sonst immer neu kompiliert werden muss 
    4848Revision 707 (von Dennis Heidsiek): 
    49 - Die Resourcen-Dateien (PNGs, ICOs) werden nun nach "Von Windows vorgegebenes TEMP Verzeichnis\NEO2\ extrahiert und nicht mehr in das Verzeichnis, in dem sich die EXE befindet 
     49- Die Resourcen-Dateien (PNGs, ICOs) werden nun nach %TEMP%\NEO2\ extrahiert und nicht mehr in das Verzeichnis, in dem sich die EXE befindet 
    5050- Die doppelten franz�sischen Anf�hrungszeichen werden nun ebenfalls �ber SendUnicodeChar gesendet 
    5151Revision 694 (von Martin Roppelt): 
    52 - LangSTastatur auf F11 (Ebene 4) 
     52- LangSTastatur auf M4+F11 
    5353- Entwickler k�nnen durch das Erstellen einer Datei �LangSTastaturStandardm��igEingeschaltet.ahk� mit dem Inhalt �LangSTastatur := 1� diese standardm��ig aktivieren 
    5454- Mehrere DeadKeys aktualisiert (T*, Ebene 4 und T*, Ebene 5) 
     
    5757- (An/Aus) Icons an Favicon der neuen Homepage angepasst 
    5858Revision 645 (von Martin Roppelt): 
    59 - Ellipse zus�tzlich auf M3+x;  
     59- Ellipse zus�tzlich auf M3+x 
    6060- Lang-s-Tastatur probeweise auf M4+Esc 
    6161Revision 640 (von Dennis Heidsiek): 
     
    6464- Lang-s-Tastatur kann nicht mehr durch einen Hotkey aktiviert werden 
    6565Revision 629 (von Martin Roppelt): 
    66 - Spitze Klammern (bra und ket) testweise auf M5+8/9 
     66- Spitze Klammern (bra und ket) auf M5+8/9 
    6767Revision 624 (von Martin Roppelt): 
    6868- Lang-s-Tastatur (ein- und auszuschalten durch Mod4+�) 
    6969Revision 616 (von Dennis Heidsiek): 
    70 - Der nicht funktionierende Mod5-Lock-Fix wurde wieder entfernt, da er sogar neue Fehler produzierte. 
     70- Der nicht funktionierende Mod5-Lock-Fix wurde wieder entfernt, da er sogar neue Fehler produzierte 
    7171Revision 615 (von Dennis Heidsiek): 
    72 - Erfolgloser Versuch, den Mod4-Lock wiederherzustellen (durch eine Tilde vor den Scancodes der Bildschirmtastatur). 
    73 - Rechtschreibfehler korrigiert. 
    74 - Zwei AHK-Links eingef�gt. 
     72- Erfolgloser Versuch, den Mod4-Lock wiederherzustellen (durch eine Tilde vor den Scancodes der Bildschirmtastatur) 
     73- Rechtschreibfehler korrigiert 
     74- Zwei AHK-Links eingef�gt 
    7575Revision 609 (von Dennis Heidsiek): 
    76 - Vorl�ufiger Abschluss der AHK-Modularisierung. 
    77 - Bessere Testm�glichkeit �All.ahk� f�r AHK-Entwickler hinzugef�gt, bei der sich die Zeilenangaben in Fehlermeldungen auf die tats�chlichen Module und nicht auf das gro�e �vereinigte� Skript beziehen. 
     76- Vorl�ufiger Abschluss der AHK-Modularisierung 
     77- Bessere Testm�glichkeit �All.ahk� f�r AHK-Entwickler hinzugef�gt, bei der sich die Zeilenangaben in Fehlermeldungen auf die tats�chlichen Module und nicht auf das gro�e �vereinigte� Skript beziehen 
    7878Revision 608 (von Martin Roppelt): 
    79 - Rechtschreibfehler korrigiert und Dateinamen aktualisiert und sortiert. 
     79- Rechtschreibfehler korrigiert und Dateinamen aktualisiert und sortiert 
    8080Revision 590 (von Dennis Heidsiek): 
    81 - Erste technische Vorarbeiten zur logischen Modularisierung des viel zu lange gewordenen AHK-Quellcodes. 
     81- Erste technische Vorarbeiten zur logischen Modularisierung des viel zu lange gewordenen AHK-Quellcodes 
    8282- Neue Batch-Datei Build-Update.bat zur einfachen Aktualisierung der EXE-Datei 
    8383Revision 583 (von Dennis Heidsiek): 
    84 - Kleinere Korrekturen (Mod3+Numpad5, Mod5+Numpad5 und Mod3+Numpad9 stimmen wieder mit der Referenz �berein). 
     84- Kleinere Korrekturen (M3+NP5, M5+NP5 und M3+NP9 stimmen wieder mit der Referenz �berein) 
    8585Revision 580 (von Matthias Berg): 
    8686- Bildschirmtastatur jetzt mit Mod4+F* statt Strg+F*, dies deaktiviert jedoch leider den Mod4-Lock 
     
    8989Revision 568 (von Matthias Berg): 
    9090- Sonderzeichen, Umlaute, z und y durch ScanCodes ersetzt 
    91   * jetzt wird auch bei eingestelltem US Layout Neo verwendet. (z.B. f�r Chinesische InputMethodEditors) 
    92   * rechter Mod3 geht noch nicht bei US Layout (weder ScanCode noch "\") 
     91  * jetzt wird auch bei eingestelltem US Layout Neo verwendet (z.B. f�r Chinesische InputMethodEditors) 
     92  * rechter Mod3 geht noch nicht bei US-Layout (weder ScanCode noch "\") 
    9393Revision 567 (von Dennis Heidsiek): 
    94 - Aktivierter Mod4 Lock wird jetzt �ber die Rollen-LED des Keybord angezeigt (analog zu CapsLock), die NUM-LED beh�lt ihr bisheriges Verhalten 
     94- Aktivierter Mod4-Lock wird jetzt �ber die Rollen-LED des Keybord angezeigt (analog zu CapsLock), die Num-LED beh�lt ihr bisheriges Verhalten 
    9595- Neue Option im Skript: UseMod4Light 
    9696Revision 561 (von Matthias Berg): 
    97 - Ebene 4 Tab verh�lt sich jetzt wie das andere Tab dank "goto neo_tab" 
     97- M4+Tab verh�lt sich jetzt wie das andere Tab dank "goto neo_tab" 
    9898Revision 560 (von Dennis Heidsiek): 
    9999- Neue Option im Skript: bildschirmTastaturEinbinden bindet die PNG-Bilder der Bildschirmtastur mit in die exe-Datei ein, so dass sich der Benutzer nur eine Datei herunterladen muss 
     
    110110  * im Skript konfigurierbar 
    111111  * Schaltet z.B. Qwertz Tasten aus, die es auf der 4. Ebene gibt (Return, Backspace,...) 
    112   * Kann auch Backspace und/oder Entfernen der 4. Ebene ausschalten (gut zum Lernen richtig zu schreiben) 
     112  * Kann auch Backspace und/oder Entfernen der 4. Ebene ausschalten (gut zum Lernen, richtig zu schreiben) 
    113113- Bug aufgetaucht: Icons werden nicht mehr angezeigt 
    114114Revision 544 (von Stefan Mayer): 
     
    120120- nurEbenenFuenfUndSechs umbenannt in ahkTreiberKombi und auf Ebene 4 statt 5 und 6 ge�ndert 
    121121Revision 540 (von Matthias Berg): 
    122 - stark �berarbeitet um Wartbarkeit zu erh�hen und Redundanz zu veringern 
     122- stark �berarbeitet um Wartbarkeit zu erh�hen und Redundanz zu verringern 
    123123- nurEbenenFuenfUndSechs sollte nun auch auf Neo Treiber statt Qwertz laufen 
    124124  * aber es muss noch jemand testen 
    125125  * Problem: was kann man abfangen, wenn eine tote Taste gedr�ckt wird 
    126126- einHandNeo: 
    127   * An-/Ausschalten mit STRG+Punkt 
     127  * An-/Ausschalten mit Strg+Punkt 
    128128  * Buchstaben der rechten Hand werden mit Space zur linken Hand 
    129129  * Nebeneffekt: es gibt beim Festhalten von Space keine wiederholten Leerzeichen mehr 
    130130Revision 532 (von Matthias Berg): 
    131131- BildschirmTastatur  
    132   * aktiviert mit strg+F1 bis 7 schaltet Keyboard ein oder aus 
    133   * strg+F7 zeigt die zuletzt angezeigte Ebene an (und wieder aus). 
    134   * strg+F8 schaltet AlwaysOnTop um     
     132  * aktiviert mit Strg+F1 bis 7, schaltet Keyboard ein oder aus 
     133  * Strg+F7 zeigt die zuletzt angezeigte Ebene an (und wieder aus) 
     134  * Strg+F8 schaltet AlwaysOnTop um     
    135135Revision 529 (von Stefan Mayer): 
    136136- Icon wird automatisch geladen, falls .ico-Dateien im selbem Ordner 
    137 - in der .exe sind die .ico mitgespeichert und werden geladen 
     137- In der .exe sind die .ico mitgespeichert und werden geladen 
    138138Revision 528 (von Matthias Berg): 
    139139- Neo-Icon 
     
    141141  (siehe globale Schalter) 
    142142- Mod3-Lock (nur wenn rechtes Mod3 zuerst gedr�ckt wird, andere L�sung f�hrte zum Caps-Bug) 
    143 - Mod4-Lock (nur wenn das linke Mod4 zuerst gedr�ckt wird, andere L�sung f�hte zum AltGr-Bug) 
     143- Mod4-Lock (nur wenn das linke Mod4 zuerst gedr�ckt wird, andere L�sung f�hrte zum AltGr-Bug) 
    144144- Ein paar falsche Zeichen korrigiert 
    145145Revision 527 (von Matthias Berg): 
    146 - AltGr Problem hoffentlich behoben 
    147 - Umschalt+Mod4 Bug behoben 
     146- AltGr-Problem hoffentlich behoben 
     147- Umschalt+Mod4-Bug behoben 
    148148Revision 526 (von Matthias Berg): 
    149149- Ebenen 1 bis 4 ausschalten per Umschalter siehe erste Codezeile nurEbenenFuenfUndSechs = 0 
     
    162162- vertikale Ellipse eingebaut 
    163163- Umschalt+Umschalt f�r Capslock statt Mod3+Mod3 
    164 - bei Suspend wird jetzt wirklich togglesuspend aufgerufen (auch beim aktivieren per shift+pause) 
     164- bei Suspend wird jetzt wirklich togglesuspend aufgerufen (auch beim Aktivieren per shift+pause) 
    165165Revsion 490 (von Stefan Mayer):  
    166166- SUBSCRIPT von 0 bis 9 sowie (auf Ziffernblock) + und - 
     
    172172  � r�mische Zahlen 
    173173  � Ligaturen und Copyright 
    174  
    175  
    176  
    177174*/ 
    178175 
    179  
    180  
  • windows/autohotkey/Source/Global-Part.ahk

    r740 r746  
    11 
    22 
    3 /******************** 
    4  Verzeichnisse      * 
    5 ********************* 
     3/**************** 
     4* Verzeichnisse * 
     5***************** 
    66*/ 
    77; Setzt den Pfad zu einem tempor�ren Verzeichnis 
     
    1717 
    1818 
    19 /****************** 
    20  Globale Schalter * 
    21 ******************* 
     19/******************* 
     20* Globale Schalter * 
     21******************** 
    2222*/ 
    2323 
     
    2525; Syntaxhinweis: IniRead, Variable, InputFilename, Section, Key [, DefaultValue] 
    2626 
    27  
    2827; Sollen die Bilder f�r die Bildschirmtastatur in die compilierte EXE-Datei miteingebunden werden? (Nachteil: gr�ssere Dateigr�sse, Vorteil: Referenz f�r Anf�nger stets einfach verf�gbar) 
    2928bildschirmTastaturEinbinden := 1 
     
    3837IniRead, lernModus, %ApplicationFolder%\NEO2.ini, Global, lernModus, 0 
    3938 
    40 ; Aktivierter Mod4-Lock wird �ber die Rollen-LED des Keybord angezeigt (analog zu CapsLock) 
     39; Soll aktivierter Mod4-Lock �ber die Rollen-LED des Keybord angezeigt werden (analog zu CapsLock)? 
    4140IniRead, UseMod4Light, %ApplicationFolder%\NEO2.ini, Global, UseMod4Light, 1 
    4241 
    43 ; Soll Lang-s auf s, s auf � und � auf Mod3+� gelegt (bzw. vertauscht) werden? 
     42; Soll Lang-s auf s, s auf � und � auf Lang-s gelegt (bzw. vertauscht) werden? 
    4443IniRead, LangSTastatur, %ApplicationFolder%\NEO2.ini, Global, LangSTastatur, 0 
    4544 
    46  
    47  
    48 /************************* 
    49  Recourcen-Verwaltung    * 
    50 ************************** 
    51 */ 
    52  
     45; Sollen tote Tasten blind angezeigt werden? 
     46IniRead, DeadCompose, %ApplicationFolder%\NEO2.ini, Global, DeadCompose, 0 
     47 
     48;Sollen Compose-Tasten blind angezeigt werden? 
     49IniRead, DeadSilence, %ApplicationFolder%\NEO2.ini, Global, DeadSilence, 0 
     50 
     51 
     52/*********************** 
     53* Recourcen-Verwaltung * 
     54************************ 
     55*/ 
    5356 
    5457if(FileExist("ResourceFolder") <> false) { 
    55         ; Versuche, alle m�glicherweise in die EXE eingebundenen Dateien zu extrahieren  
    56         FileInstall, neo.ico, %ResourceFolder%\neo.ico, 1 
    57         FileInstall, neo_disabled.ico, %ResourceFolder%\neo_disabled.ico, 1 
    58         iconBenutzen = 1 
    59         if (bildschirmTastaturEinbinden==1) { 
    60                 FileInstall, ebene1.png, %ResourceFolder%\ebene1.png, 1 
    61                 FileInstall, ebene2.png, %ResourceFolder%\ebene2.png, 1 
    62                 FileInstall, ebene3.png, %ResourceFolder%\ebene3.png, 1 
    63                 FileInstall, ebene4.png, %ResourceFolder%\ebene4.png, 1 
    64                 FileInstall, ebene5.png, %ResourceFolder%\ebene5.png, 1 
    65                 FileInstall, ebene6.png, %ResourceFolder%\ebene6.png, 1 
    66                 zeigeBildschirmTastatur = 1 
    67         } 
     58  ; Versuche, alle m�glicherweise in die EXE eingebundenen Dateien zu extrahieren  
     59  FileInstall, neo.ico, %ResourceFolder%\neo.ico, 1 
     60  FileInstall, neo_disabled.ico, %ResourceFolder%\neo_disabled.ico, 1 
     61  iconBenutzen = 1 
     62  if (bildschirmTastaturEinbinden==1) { 
     63    FileInstall, ebene1.png, %ResourceFolder%\ebene1.png, 1 
     64    FileInstall, ebene2.png, %ResourceFolder%\ebene2.png, 1 
     65    FileInstall, ebene3.png, %ResourceFolder%\ebene3.png, 1 
     66    FileInstall, ebene4.png, %ResourceFolder%\ebene4.png, 1 
     67    FileInstall, ebene5.png, %ResourceFolder%\ebene5.png, 1 
     68    FileInstall, ebene6.png, %ResourceFolder%\ebene6.png, 1 
     69    zeigeBildschirmTastatur = 1 
     70  } 
    6871} else { 
    69         MsgBox, "Das Verzeichnis %ResourceFolder% konnte nicht angelegt werden!" ; Diese Zeile dient nur der eventuellen Fehlersuche und sollte eigentlich niemals auftauchen. 
     72  MsgBox, "Das Verzeichnis %ResourceFolder% konnte nicht angelegt werden!" ; Diese Zeile dient nur der eventuellen Fehlersuche und sollte eigentlich niemals auftauchen. 
    7073} 
    7174 
     
    7780 
    7881 
    79 /************************* 
    80  lernModus Konfiguration * 
    81  nur relevant wenn       * 
    82  lernModus = 1           * 
    83  Strg+Komma schaltet um  * 
    84 ************************** 
     82/************************** 
     83* lernModus Konfiguration * 
     84* nur relevant wenn       * 
     85* lernModus = 1           * 
     86* Strg+Komma schaltet um  * 
     87*************************** 
    8588*/ 
    8689; 0 = aus, 1 = an 
    87  
    8890 
    8991; die Nachfolgenden sind n�tzlich um sich die Qwertz-Tasten abzugew�hnen, da alle auf der 4. Ebene vorhanden. 
     
    102104lernModus_std_ZahlenReihe = 0 
    103105 
    104  
    105  
    106106; im folgenden kann man auch noch ein paar Tasten der 4. Ebene deaktivieren 
    107107; n�tzlich um sich zu zwingen, richtig zu schreiben 
     
    109109lernModus_neo_Entf = 1 
    110110 
    111  
    112    
    113  
    114 ; aus Noras script kopiert: 
    115  
     111; aus Noras Skript kopiert: 
    116112Process,Priority,,High 
    117  
    118113#usehook on 
    119114#singleinstance force 
     
    121116  ; Quelltext kann einger�ckt werden,  
    122117  ; msgbox ist trotzdem linksb�ndig 
    123  
    124118SetTitleMatchMode 2 
    125119SendMode Input   
    126  
    127120name    = Neo 2.0 
    128121enable  = Aktiviere %name% 
     
    139132if inputlocale <> 00000407 
    140133{ 
    141    suspend    
    142    regread, inputlocale, HKEY_LOCAL_MACHINE 
    143      , SYSTEM\CurrentControlSet\Control\Keyboard Layouts\%inputlocale% 
    144      , Layout Text 
    145    msgbox, 48, Warnung!,  
    146      ( 
    147      Nicht kompatibles Tastaturlayout:    
    148      `t%inputlocale%    
    149      `nDas deutsche QWERTZ muss als Standardlayout eingestellt   
    150      sein, damit %name% wie erwartet funktioniert.    
    151      `n�ndern Sie die Tastatureinstellung unter  
    152      `tSystemsteuerung    
    153      `t-> Regions- und Sprachoptionen    
    154      `t-> Sprachen  
    155      `t-> Details...   `n 
    156      ) 
    157    exitapp 
     134  suspend    
     135  regread, inputlocale, HKEY_LOCAL_MACHINE 
     136    , SYSTEM\CurrentControlSet\Control\Keyboard Layouts\%inputlocale% 
     137    , Layout Text 
     138  msgbox, 48, Warnung!,  
     139    ( 
     140    Nicht kompatibles Tastaturlayout:    
     141    `t%inputlocale%    
     142    `nDas deutsche QWERTZ muss als Standardlayout eingestellt   
     143    sein, damit %name% wie erwartet funktioniert.    
     144    `n�ndern Sie die Tastatureinstellung unter  
     145    `tSystemsteuerung    
     146    `t-> Regions- und Sprachoptionen    
     147    `t-> Sprachen  
     148    `t-> Details...   `n 
     149    ) 
     150  exitapp 
    158151} 
    159  
    160152 
    161153 
     
    164156 
    165157if (iconBenutzen) 
    166    menu, tray, icon, %ResourceFolder%\neo.ico,,1 
     158  menu, tray, icon, %ResourceFolder%\neo.ico,,1 
    167159menu, tray, nostandard 
    168160menu, tray, add, �ffnen, open 
    169    menu, helpmenu, add, About, about 
    170    menu, helpmenu, add, Autohotkey-Hilfe, help 
    171    menu, helpmenu, add 
    172    menu, helpmenu, add, http://&autohotkey.com/, autohotkey 
    173    menu, helpmenu, add, http://www.neo-layout.org/, neo 
     161  menu, helpmenu, add, About, about 
     162  menu, helpmenu, add, Autohotkey-Hilfe, help 
     163  menu, helpmenu, add 
     164  menu, helpmenu, add, http://&autohotkey.com/, autohotkey 
     165  menu, helpmenu, add, http://www.neo-layout.org/, neo 
    174166menu, tray, add, Hilfe, :helpmenu 
    175167menu, tray, add 
     
    186178 
    187179/* 
    188    Variablen initialisieren 
     180  Variablen initialisieren 
    189181*/ 
    190182 
     
    194186PriorCompKey = "" 
    195187Ebene12 = 0 
     188 
    196189EbeneAktualisieren() 
    197190 
    198191 
    199   
    200  
    201  
    202192/* 
    203    EinHandNeo 
     193  EinHandNeo 
    204194*/ 
    205195spacepressed := 0 
     
    238228 
    239229 
    240  
    241  
     230;Blinde/Sichtbare Tote Tasten 
     231*F9:: 
     232  if (isMod4pressed()) 
     233    DeadSilence :=  not(DeadSilence) 
     234  else 
     235    send {blind}{F9} 
     236return 
     237 
     238;Blinde/Sichtbare Compose 
     239*F10:: 
     240  if (isMod4pressed()) 
     241    DeadCompose :=  not(DeadCompose) 
     242  else 
     243    send {blind}{F10} 
     244return 
     245 
     246;Lang-s-Tastatur: 
     247*F11:: 
     248  if (isMod4pressed()) 
     249    LangSTastatur := not(LangSTastatur) ; schaltet die Lang-s-Tastatur ein und aus 
     250  else 
     251    send {blind}{F11} 
     252return 
     253 
     254*Esc:: 
     255  if (isMod4pressed()) 
     256    reload 
     257  else 
     258    send {blind}{Esc} 
     259return 
  • windows/autohotkey/Source/Keys-Neo.ahk

    r744 r746  
    22Die eigentliche NEO-Belegung und der Hauptteil des AHK-Treibers. 
    33 
    4  
    5    Ablauf bei toten Tasten: 
    6    1. Ebene Aktualisieren 
    7    2. Abh�ngig von der Variablen "Ebene" Zeichen ausgeben und die Variable "PriorDeadKey" setzen 
    8     
    9    Ablauf bei "untoten" Tasten: 
    10    1. Ebene Aktualisieren 
    11    2. Abh�ngig von den Variablen "Ebene" und "PriorDeadKey" Zeichen ausgeben 
    12    3. "PriorDeadKey" mit leerem String �berschreiben 
    13  
    14    ------------------------------------------------------ 
    15    Reihe 1 
    16    ------------------------------------------------------ 
     4  Ablauf bei toten Tasten: 
     5  1. Ebene Aktualisieren 
     6  2. Abh�ngig von der Variablen "Ebene" Zeichen ausgeben und die Variable "PriorDeadKey" setzen 
     7 
     8  Ablauf bei "untoten" Tasten: 
     9  1. Ebene Aktualisieren 
     10  2. Abh�ngig von den Variablen "Ebene" und "PriorDeadKey" Zeichen ausgeben 
     11  3. "PriorDeadKey" mit leerem String �berschreiben 
     12 
     13  Reihe 1 
    1714*/ 
    1815 
    1916 
    2017neo_tot1: 
    21    EbeneAktualisieren() 
    22    if (Ebene = 1) 
    23    { 
    24       deadUni(0x02C6) ; circumflex, tot 
    25       DeadKey := "c1" 
    26    } 
    27    else if (Ebene = 2) 
    28    { 
    29       deadUni(0x02C7) ; caron, tot 
    30       DeadKey := "c2" 
    31    } 
    32    else if (Ebene = 3) 
    33    { 
    34       deadUni(0x02D8) ; brevis 
    35       DeadKey := "c3" 
    36    } 
    37    else if (Ebene = 4) 
    38    { 
    39       deadUni(0x00B7) ; Mittenpunkt, tot 
    40       DeadKey := "c4" 
    41    } 
    42    else if (Ebene = 5) 
    43    { 
    44       deadAsc("-")                 ; querstrich, tot 
    45       DeadKey := "c5" 
    46    } 
    47    else if (Ebene = 6) 
    48    { 
    49       deadAsc(".")                 ; punkt darunter (colon) 
    50       DeadKey := "c6" 
    51    } 
    52    CompKey := PriorCompKey 
     18  EbeneAktualisieren() 
     19  if (Ebene = 1) 
     20  { 
     21    deadUni(0x02C6) ; Zirkumflex, tot 
     22    DeadKey := "c1" 
     23  } 
     24  else if (Ebene = 2) 
     25  { 
     26    deadUni(0x02C7) ; Caron, tot 
     27    DeadKey := "c2" 
     28  } 
     29  else if (Ebene = 3) 
     30  { 
     31    deadUni(0x02D8) ; Brevis, tot 
     32    DeadKey := "c3" 
     33  } 
     34  else if (Ebene = 4) 
     35  { 
     36    deadUni(0x00B7) ; Mittenpunkt, tot 
     37    DeadKey := "c4" 
     38  } 
     39  else if (Ebene = 5) 
     40  { 
     41    deadAsc("-")    ; Querstrich, tot 
     42    DeadKey := "c5" 
     43  } 
     44  else if (Ebene = 6) 
     45  { 
     46    deadAsc(".")    ; Punkt drunter (Colon), tot 
     47    DeadKey := "c6" 
     48  } 
     49  CompKey := PriorCompKey 
    5350return 
    5451 
    5552neo_1: 
    56    EbeneAktualisieren() 
    57    if (Ebene = 1) 
    58    { 
    59       if !(CheckDeadUni("c1",0x00B9) 
    60         or CheckDeadUni("c5",0x2081) 
    61         or CheckComp3Uni("r_1",0x217A)       ; r�misch xi 
    62         or CheckComp3Uni("R_1",0x216A))      ; r�misch XI 
    63          if (GetKeyState("CapsLock","T"))  
    64             send {blind}{Shift down}1{Shift up} 
    65          else if (not(lernModus) or lernModus_std_ZahlenReihe) 
    66             send {blind}1 
     53  EbeneAktualisieren() 
     54  if (Ebene = 1) 
     55  { 
     56    if !(CheckDeadUni("c1",0x00B9) 
     57      or CheckDeadUni("c5",0x2081) 
     58      or CheckComp3Uni("r_1",0x217A)     ; r�misch xi 
     59      or CheckComp3Uni("R_1",0x216A))    ; r�misch XI 
     60      if (GetKeyState("CapsLock","T")) 
     61        send {blind}{Shift down}1{Shift up} 
     62      else if (not(lernModus) or lernModus_std_ZahlenReihe) 
     63        send {blind}1 
    6764 
    6865      if      (PriorDeadKey = "comp") 
     
    8683 
    8784neo_2: 
    88    EbeneAktualisieren() 
    89    if (Ebene = 1) 
    90    { 
    91       if !(CheckDeadUni("c1",0x00B2) 
    92         or CheckDeadUni("c5",0x2082) 
    93         or CheckCompUni("r",0x2171)      ; r�misch ii 
    94         or CheckCompUni("R",0x2161)      ; r�misch II 
    95         or CheckComp3Uni("r_1",0x217B)   ; r�misch xii 
    96         or CheckComp3Uni("R_1",0x216B))  ; r�misch XII 
    97          if (GetKeyState("CapsLock","T"))  
    98             send {blind}{Shift down}2{Shift up} 
    99          else if (not(lernModus) or lernModus_std_ZahlenReihe) 
    100             send {blind}2 
    101  
    102       if (PriorDeadKey = "comp") 
    103          CompKey := "2" 
    104    } 
    105    else if (Ebene = 2) 
    106       SendUnicodeChar(0x2116) ; numero 
     85  EbeneAktualisieren() 
     86  if (Ebene = 1) 
     87  { 
     88    if !(CheckDeadUni("c1",0x00B2) 
     89      or CheckDeadUni("c5",0x2082) 
     90      or CheckCompUni("r",0x2171)      ; r�misch ii 
     91      or CheckCompUni("R",0x2161)      ; r�misch II 
     92      or CheckComp3Uni("r_1",0x217B)   ; r�misch xii 
     93      or CheckComp3Uni("R_1",0x216B))  ; r�misch XII 
     94      if (GetKeyState("CapsLock","T")) 
     95        send {blind}{Shift down}2{Shift up} 
     96      else if (not(lernModus) or lernModus_std_ZahlenReihe) 
     97        send {blind}2 
     98 
     99    if (PriorDeadKey = "comp") 
     100      CompKey := "2" 
     101  } 
     102  else if (Ebene = 2) 
     103    SendUnicodeChar(0x2116) ; numero 
     104  else if (Ebene = 3) 
     105    SendUnicodeChar(0x00B2) ; 2 Hochgestellte 
     106  else if (Ebene = 4) 
     107    SendUnicodeChar(0x2023) ; aufzaehlungspfeil 
     108  else if (Ebene = 5) 
     109    SendUnicodeChar(0x26A5) ; Piktogramm Zwitter 
     110  else if (Ebene = 6) 
     111    SendUnicodeChar(0x2228) ; Logisches Oder 
     112return 
     113 
     114neo_3: 
     115  EbeneAktualisieren() 
     116  if (Ebene = 1) 
     117  { 
     118    if !(CheckDeadUni("c1",0x00B3) 
     119      or CheckDeadUni("c5",0x2083) 
     120      or CheckCompUni("1",0x2153)        ; 1/3 
     121      or CheckCompUni("2",0x2154)        ; 2/3 
     122      or CheckCompUni("r",0x2172)        ; r�misch iii 
     123      or CheckCompUni("R",0x2162))       ; r�misch III 
     124      if (GetKeyState("CapsLock","T")) 
     125        send {blind}{Shift down}3{Shift up} 
     126      else if (not(lernModus) or lernModus_std_ZahlenReihe) 
     127        send {blind}3 
     128 
     129    if (PriorDeadKey = "comp") 
     130      CompKey := "3" 
     131  } 
     132  else if (Ebene = 2) 
     133    send � 
     134  else if (Ebene = 3) 
     135    SendUnicodeChar(0x00B3) ; 3 Hochgestellte 
     136  else if (Ebene = 4) 
     137  { 
     138     CompKey := PriorCompKey 
     139     DeadKey := PriorDeadKey 
     140  } ; leer 
     141  else if (Ebene = 5) 
     142    SendUnicodeChar(0x2642) ; Piktogramm Mann 
     143  else if (Ebene = 6) 
     144    SendUnicodeChar(0x2227) ; Logisches Und 
     145return 
     146 
     147neo_4: 
     148  EbeneAktualisieren() 
     149  if (Ebene = 1) 
     150  { 
     151    if !(CheckDeadUni("c1",0x2074) 
     152      or CheckDeadUni("c5",0x2084) 
     153      or CheckCompUni("r",0x2173)    ; r�misch iv 
     154      or CheckCompUni("R",0x2163))   ; r�misch IV 
     155      if (GetKeyState("CapsLock","T")) 
     156        send {blind}{Shift down}4{Shift up} 
     157      else if (not(lernModus) or lernModus_std_ZahlenReihe) 
     158        send {blind}4 
     159 
     160    if (PriorDeadKey = "comp") 
     161      CompKey := "4" 
     162  } 
     163  else if (Ebene = 2) 
     164    SendUnicodeChar(0x00BB) ; �, Double guillemot right 
    107165   else if (Ebene = 3) 
    108       SendUnicodeChar(0x00B2) ; 2 Hochgestellte 
    109    else if (Ebene = 4) 
    110       SendUnicodeChar(0x2023) ; aufzaehlungspfeil 
    111    else if (Ebene = 5) 
    112       SendUnicodeChar(0x26A5) ; Piktogramm Zwitter 
    113    else if (Ebene = 6) 
    114       SendUnicodeChar(0x2228) ; Logisches Oder 
    115 return 
    116  
    117 neo_3: 
    118    EbeneAktualisieren() 
    119    if (Ebene = 1) 
    120    { 
    121       if !(CheckDeadUni("c1",0x00B3) 
    122         or CheckDeadUni("c5",0x2083) 
    123         or CheckCompUni("1",0x2153)           ; 1/3 
    124         or CheckCompUni("2",0x2154)           ; 2/3 
    125         or CheckCompUni("r",0x2172)           ; r�misch iii 
    126         or CheckCompUni("R",0x2162))          ; r�misch III 
    127          if (GetKeyState("CapsLock","T"))  
    128             send {blind}{Shift down}3{Shift up} 
    129          else if (not(lernModus) or lernModus_std_ZahlenReihe) 
    130             send {blind}3 
    131  
    132       if (PriorDeadKey = "comp") 
    133          CompKey := "3" 
    134    } 
    135    else if (Ebene = 2) 
    136       send � 
    137    else if (Ebene = 3) 
    138       SendUnicodeChar(0x00B3) ; 3 Hochgestellte 
    139    else if (Ebene = 4) 
    140    { 
    141        CompKey := PriorCompKey 
    142        DeadKey := PriorDeadKey 
    143    } ; leer 
    144    else if (Ebene = 5) 
    145       SendUnicodeChar(0x2642) ; Piktogramm Mann 
    146    else if (Ebene = 6) 
    147       SendUnicodeChar(0x2227) ; Logisches Und 
    148 return 
    149  
    150 neo_4: 
    151    EbeneAktualisieren() 
    152    if (Ebene = 1) 
    153    { 
    154       if !(CheckDeadUni("c1",0x2074) 
    155         or CheckDeadUni("c5",0x2084) 
    156         or CheckCompUni("r",0x2173)     ; r�misch iv 
    157         or CheckCompUni("R",0x2163))    ; r�misch IV 
    158          if (GetKeyState("CapsLock","T"))  
    159             send {blind}{Shift down}4{Shift up} 
    160          else if (not(lernModus) or lernModus_std_ZahlenReihe) 
    161             send {blind}4 
    162  
    163       if (PriorDeadKey = "comp") 
    164          CompKey := "4" 
    165    } 
    166    else if (Ebene = 2) 
    167       SendUnicodeChar(0x00BB) ; �, Double guillemot right 
    168     else if (Ebene = 3) 
    169       Send {blind}� ; Single guillemot right 
    170    else if (Ebene = 4) 
    171       Send {blind}{PgUp}    ; Prev 
    172    else if (Ebene = 5) 
    173       SendUnicodeChar(0x2113) ; Script small L 
    174    else if (Ebene = 6) 
    175       SendUnicodeChar(0x22A5) ; Senkrecht 
     166    Send {blind}�           ; Single guillemot right 
     167  else if (Ebene = 4) 
     168    Send {blind}{PgUp}      ; Prev 
     169  else if (Ebene = 5) 
     170    SendUnicodeChar(0x2113) ; Script small L 
     171  else if (Ebene = 6) 
     172    SendUnicodeChar(0x22A5) ; Senkrecht 
    176173return 
    177174 
    178175neo_5: 
    179    EbeneAktualisieren() 
    180    if (Ebene = 1) 
    181    { 
    182       if !(CheckDeadUni("c1",0x2075) 
    183         or CheckDeadUni("c5",0x2085) 
    184         or CheckCompUni("1",0x2155)           ; 1/5 
    185         or CheckCompUni("2",0x2156)           ; 2/5 
    186         or CheckCompUni("3",0x2157)           ; 3/5 
    187         or CheckCompUni("4",0x2158)           ; 4/5 
    188         or CheckCompUni("r",0x2174)           ; r�misch v 
    189         or CheckCompUni("R",0x2164))          ; r�misch V 
    190          if (GetKeyState("CapsLock","T"))  
    191             send {blind}{Shift down}5{Shift up} 
    192          else if (not(lernModus) or lernModus_std_ZahlenReihe) 
    193             send {blind}5 
    194  
    195       if (PriorDeadKey = "comp") 
    196          CompKey := "5" 
    197    } 
    198    else if (Ebene = 2) 
    199       SendUnicodeChar(0x00AB) ; �, Double guillemot left 
    200    else if (Ebene = 3) 
    201       Send {blind}� ; Single guillemot left 
    202    else if (Ebene = 4) 
    203    { 
    204        CompKey := PriorCompKey 
    205        DeadKey := PriorDeadKey 
    206    } ; leer 
    207    else if (Ebene = 5) 
    208       SendUnicodeChar(0x2020) ; Kreuz (Dagger) 
    209    else if (Ebene = 6) 
    210       SendUnicodeChar(0x2221) ; Winkel 
     176  EbeneAktualisieren() 
     177  if (Ebene = 1) 
     178  { 
     179    if !(CheckDeadUni("c1",0x2075) 
     180      or CheckDeadUni("c5",0x2085) 
     181      or CheckCompUni("1",0x2155)        ; 1/5 
     182      or CheckCompUni("2",0x2156)        ; 2/5 
     183      or CheckCompUni("3",0x2157)        ; 3/5 
     184      or CheckCompUni("4",0x2158)        ; 4/5 
     185      or CheckCompUni("r",0x2174)        ; r�misch v 
     186      or CheckCompUni("R",0x2164))       ; r�misch V 
     187      if (GetKeyState("CapsLock","T")) 
     188        send {blind}{Shift down}5{Shift up} 
     189      else if (not(lernModus) or lernModus_std_ZahlenReihe) 
     190        send {blind}5 
     191 
     192    if (PriorDeadKey = "comp") 
     193      CompKey := "5" 
     194  } 
     195  else if (Ebene = 2) 
     196    SendUnicodeChar(0x00AB) ; Double guillemot left 
     197  else if (Ebene = 3) 
     198    Send {blind}�          ; Single guillemot left 
     199  else if (Ebene = 4) 
     200  { 
     201     CompKey := PriorCompKey 
     202     DeadKey := PriorDeadKey 
     203  } ; leer 
     204  else if (Ebene = 5) 
     205    SendUnicodeChar(0x2020) ; Kreuz (Dagger) 
     206  else if (Ebene = 6) 
     207    SendUnicodeChar(0x2221) ; Winkel 
    211208return 
    212209 
    213210neo_6: 
    214    EbeneAktualisieren() 
    215    if (Ebene = 1) 
    216    { 
    217       if !(CheckDeadUni("c1",0x2076) 
    218         or CheckDeadUni("c5",0x2086) 
    219         or CheckCompUni("1",0x2159)           ; 1/6 
    220         or CheckCompUni("5",0x215A)           ; 5/6 
    221         or CheckCompUni("r",0x2175)           ; r�misch vi 
    222         or CheckCompUni("R",0x2165))          ; r�misch VI 
    223          if (GetKeyState("CapsLock","T"))  
    224             send {blind}{Shift down}6{Shift up} 
    225          else if (not(lernModus) or lernModus_std_ZahlenReihe) 
    226             send {blind}6 
    227  
    228       if (PriorDeadKey = "comp") 
    229          CompKey := "6" 
    230    } 
    231    else if (Ebene = 2) 
    232       send � 
    233    else if (Ebene = 3) 
    234       send {blind}� 
    235    else if (Ebene = 4) 
    236       send {blind}� 
    237    else if (Ebene = 5) 
    238    { 
    239        CompKey := PriorCompKey 
    240        DeadKey := PriorDeadKey 
    241    } ; leer 
    242    else if (Ebene = 6) 
    243       SendUnicodeChar(0x2225) ; parallel 
     211  EbeneAktualisieren() 
     212  if (Ebene = 1) 
     213  { 
     214    if !(CheckDeadUni("c1",0x2076) 
     215      or CheckDeadUni("c5",0x2086) 
     216      or CheckCompUni("1",0x2159)        ; 1/6 
     217      or CheckCompUni("5",0x215A)        ; 5/6 
     218      or CheckCompUni("r",0x2175)        ; r�misch vi 
     219      or CheckCompUni("R",0x2165))       ; r�misch VI 
     220      if (GetKeyState("CapsLock","T")) 
     221        send {blind}{Shift down}6{Shift up} 
     222      else if (not(lernModus) or lernModus_std_ZahlenReihe) 
     223        send {blind}6 
     224 
     225    if (PriorDeadKey = "comp") 
     226      CompKey := "6" 
     227  } 
     228  else if (Ebene = 2) 
     229    send � 
     230  else if (Ebene = 3) 
     231    send {blind}� 
     232  else if (Ebene = 4) 
     233    send {blind}� 
     234  else if (Ebene = 5) 
     235  { 
     236     CompKey := PriorCompKey 
     237     DeadKey := PriorDeadKey 
     238  } ; leer 
     239  else if (Ebene = 6) 
     240    SendUnicodeChar(0x2225) ; parallel 
    244241return 
    245242 
    246243neo_7: 
    247    EbeneAktualisieren() 
    248    if (Ebene = 1) 
    249    { 
    250       if !(CheckDeadUni("c1",0x2077) 
    251         or CheckDeadUni("c5",0x2087) 
    252         or CheckCompUni("r",0x2176)     ; r�misch vii 
    253         or CheckCompUni("R",0x2166))    ; r�misch VII 
    254          if (GetKeyState("CapsLock","T"))  
    255             send {blind}{Shift down}7{Shift up} 
    256          else if (not(lernModus) or lernModus_std_ZahlenReihe) 
    257             send {blind}7 
    258  
    259       if (PriorDeadKey = "comp") 
    260          CompKey := "7" 
    261    } 
    262    else if (Ebene = 2) 
    263       send $ 
    264    else if (Ebene = 3) 
    265       send {blind}� 
    266    else if (Ebene = 4) 
    267       send {blind}�  
    268    else if (Ebene = 5) 
    269       SendUnicodeChar(0x03BA) ; greek small letter kappa 
    270    else if (Ebene = 6) 
    271       SendUnicodeChar(0x2209) ; nicht Element von  
     244  EbeneAktualisieren() 
     245  if (Ebene = 1) 
     246  { 
     247    if !(CheckDeadUni("c1",0x2077) 
     248      or CheckDeadUni("c5",0x2087) 
     249      or CheckCompUni("r",0x2176)    ; r�misch vii 
     250      or CheckCompUni("R",0x2166))   ; r�misch VII 
     251      if (GetKeyState("CapsLock","T")) 
     252        send {blind}{Shift down}7{Shift up} 
     253      else if (not(lernModus) or lernModus_std_ZahlenReihe) 
     254        send {blind}7 
     255 
     256    if (PriorDeadKey = "comp") 
     257      CompKey := "7" 
     258  } 
     259  else if (Ebene = 2) 
     260    send $ 
     261  else if (Ebene = 3) 
     262    send {blind}� 
     263  else if (Ebene = 4) 
     264    send {blind}� 
     265  else if (Ebene = 5) 
     266    SendUnicodeChar(0x03BA) ; greek small letter kappa 
     267  else if (Ebene = 6) 
     268    SendUnicodeChar(0x2209) ; nicht Element von 
    272269return 
    273270 
    274271neo_8: 
    275    EbeneAktualisieren() 
    276    if (Ebene = 1) 
    277    { 
    278       if !(CheckDeadUni("c1",0x2078) 
    279         or CheckDeadUni("c5",0x2088) 
    280         or CheckCompUni("1",0x215B)           ; 1/8 
    281         or CheckCompUni("3",0x215C)           ; 3/8 
    282         or CheckCompUni("5",0x215D)           ; 5/8 
    283         or CheckCompUni("7",0x215E)           ; 7/8 
    284         or CheckCompUni("r",0x2177)           ; r�misch viii 
    285         or CheckCompUni("R",0x2167))          ; r�misch VIII 
    286          if (GetKeyState("CapsLock","T"))  
    287             send {blind}{Shift down}8{Shift up} 
    288          else if (not(lernModus) or lernModus_std_ZahlenReihe) 
    289             send {blind}8 
    290  
    291       if (PriorDeadKey = "comp") 
    292          CompKey := "8" 
    293    } 
    294    else if (Ebene = 2) 
    295       send � 
    296    else if (Ebene = 3) 
    297       send {blind}� 
    298    else if (Ebene = 4) 
    299       Send {blind}{NumpadDiv} 
    300    else if (Ebene = 5) 
    301       SendUnicodeChar(0x27E8) ;bra (�ffnende spitze klammer) 
    302    else if (Ebene = 6) 
    303       SendUnicodeChar(0x2204) ; es existiert nicht 
     272  EbeneAktualisieren() 
     273  if (Ebene = 1) 
     274  { 
     275    if !(CheckDeadUni("c1",0x2078) 
     276      or CheckDeadUni("c5",0x2088) 
     277      or CheckCompUni("1",0x215B)        ; 1/8 
     278      or CheckCompUni("3",0x215C)        ; 3/8 
     279      or CheckCompUni("5",0x215D)        ; 5/8 
     280      or CheckCompUni("7",0x215E)        ; 7/8 
     281      or CheckCompUni("r",0x2177)        ; r�misch viii 
     282      or CheckCompUni("R",0x2167))       ; r�misch VIII 
     283      if (GetKeyState("CapsLock","T")) 
     284        send {blind}{Shift down}8{Shift up} 
     285      else if (not(lernModus) or lernModus_std_ZahlenReihe) 
     286        send {blind}8 
     287 
     288    if (PriorDeadKey = "comp") 
     289      CompKey := "8" 
     290  } 
     291  else if (Ebene = 2) 
     292    send � 
     293  else if (Ebene = 3) 
     294    send {blind}� 
     295  else if (Ebene = 4) 
     296    Send {blind}{NumpadDiv} 
     297  else if (Ebene = 5) 
     298    SendUnicodeChar(0x27E8) ;bra (�ffnende spitze klammer) 
     299  else if (Ebene = 6) 
     300    SendUnicodeChar(0x2204) ; es existiert nicht 
    304301return 
    305302 
    306303neo_9: 
    307    EbeneAktualisieren() 
    308    if (Ebene = 1) 
    309    { 
    310       if !(CheckDeadUni("c1",0x2079) 
    311         or CheckDeadUni("c5",0x2089) 
    312         or CheckCompUni("r",0x2178)     ; r�misch ix 
    313         or CheckCompUni("R",0x2168))    ; r�misch IX 
    314          if (GetKeyState("CapsLock","T"))  
    315             send {blind}{Shift down}9{Shift up} 
    316          else if (not(lernModus) or lernModus_std_ZahlenReihe) 
    317             send {blind}9 
    318  
    319       if (PriorDeadKey = "comp") 
    320          CompKey := "9" 
    321    } 
    322    else if (Ebene = 2) 
    323       send � 
    324    else if (Ebene = 3) 
    325       send {blind}� 
    326    else if (Ebene = 4) 
    327       Send {blind}{NumpadMult} 
    328    else if (Ebene = 5) 
    329       SendUnicodeChar(0x27E9) ;ket (schlie�ende spitze klammer) 
    330    else if (Ebene = 6) 
    331       SendUnicodeChar(0x2226) ; nicht parallel 
     304  EbeneAktualisieren() 
     305  if (Ebene = 1) 
     306  { 
     307    if !(CheckDeadUni("c1",0x2079) 
     308      or CheckDeadUni("c5",0x2089) 
     309      or CheckCompUni("r",0x2178)    ; r�misch ix 
     310      or CheckCompUni("R",0x2168))   ; r�misch IX 
     311      if (GetKeyState("CapsLock","T")) 
     312        send {blind}{Shift down}9{Shift up} 
     313      else if (not(lernModus) or lernModus_std_ZahlenReihe) 
     314        send {blind}9 
     315 
     316    if (PriorDeadKey = "comp") 
     317      CompKey := "9" 
     318  } 
     319  else if (Ebene = 2) 
     320    send � 
     321  else if (Ebene = 3) 
     322    send {blind}� 
     323  else if (Ebene = 4) 
     324    Send {blind}{NumpadMult} 
     325  else if (Ebene = 5) 
     326    SendUnicodeChar(0x27E9) ;ket (schlie�ende spitze klammer) 
     327  else if (Ebene = 6) 
     328    SendUnicodeChar(0x2226) ; nicht parallel 
    332329return 
    333330 
    334331neo_0: 
    335    EbeneAktualisieren() 
    336    if (Ebene = 1) 
    337    { 
    338       if !(CheckDeadUni("c1",0x2070) 
    339         or CheckDeadUni("c5",0x2080) 
    340         or CheckComp3Uni("r_1",0x2179)     ; r�misch x 
    341         or CheckComp3Uni("R_1",0x2169))    ; r�misch X 
    342          if (GetKeyState("CapsLock","T"))  
    343             send {blind}{Shift down}0{Shift up} 
    344          else if (not(lernModus) or lernModus_std_ZahlenReihe) 
    345             send {blind}0 
     332  EbeneAktualisieren() 
     333  if (Ebene = 1) 
     334  { 
     335    if !(CheckDeadUni("c1",0x2070) 
     336      or CheckDeadUni("c5",0x2080) 
     337      or CheckComp3Uni("r_1",0x2179)    ; r�misch x 
     338      or CheckComp3Uni("R_1",0x2169))   ; r�misch X 
     339      if (GetKeyState("CapsLock","T")) 
     340        send {blind}{Shift down}0{Shift up} 
     341      else if (not(lernModus) or lernModus_std_ZahlenReihe) 
     342        send {blind}0 
    346343 
    347344      if (PriorDeadKey = "comp") 
     
    364361 
    365362neo_strich: 
    366    EbeneAktualisieren() 
    367    if (Ebene = 1) 
    368       if (GetKeyState("CapsLock","T"))  
    369          send {blind}{Shift down}-{Shift up} 
    370       else 
    371          send {blind}- ; Bindestrich-Minus 
    372    else if (Ebene = 2) 
    373       SendUnicodeChar(0x2013) ; Gedankenstrich 
    374    else if (Ebene = 3) 
    375       SendUnicodeChar(0x2014) ; Englischer Gedankenstrich (Geviertstrich) 
    376    else if (Ebene = 4) 
    377    { 
     363  EbeneAktualisieren() 
     364  if (Ebene = 1) 
     365    if (GetKeyState("CapsLock","T")) 
     366      send {blind}{Shift down}-{Shift up} 
     367    else 
     368      send {blind}-         ; Bindestrich-Minus 
     369  else if (Ebene = 2) 
     370    SendUnicodeChar(0x2013) ; Gedankenstrich 
     371  else if (Ebene = 3) 
     372    SendUnicodeChar(0x2014) ; Englischer Gedankenstrich (Geviertstrich) 
     373  else if (Ebene = 4) 
     374  { 
     375     CompKey := PriorCompKey 
     376     DeadKey := PriorDeadKey 
     377  } ; leer 
     378  else if (Ebene = 5) 
     379    SendUnicodeChar(0x2011) ; gesch�tzter Bindestrich (Bindestrich ohne Zeilenumbruch) 
     380  else if (Ebene = 6) 
     381    SendUnicodeChar(0x00AD) ; weicher Bindestrich 
     382return 
     383 
     384neo_tot2: 
     385  EbeneAktualisieren() 
     386  if (Ebene = 1) 
     387  { 
     388    deadAsc("{�}{space}") ; Akut, tot 
     389    DeadKey := "a1" 
     390  } 
     391  else if (Ebene = 2) 
     392  { 
     393    deadAsc("``{space}")  ; Gravis, tot 
     394    DeadKey := "a2" 
     395  } 
     396  else if (Ebene = 3) 
     397  { 
     398    deadAsc("�")          ; Cedilla, tot 
     399    DeadKey := "a3" 
     400  } 
     401  else if (Ebene = 4) 
     402  { 
     403    deadUni(0x02D9)       ; Punkt obendr�ber 
     404    DeadKey := "a4" 
     405  } 
     406  else if (Ebene = 5) 
     407  { 
     408    deadUni(0x02DB)       ; Ogonek 
     409    DeadKey := "a5" 
     410  } 
     411  else if (Ebene = 6) 
     412  { 
     413    deadUni(0x02DA)       ; Ring obendrauf 
     414    DeadKey := "a6" 
     415  } 
     416  CompKey := PriorCompKey 
     417return 
     418 
     419 
     420/* 
     421 
     422  Reihe 2 
     423 
     424*/ 
     425 
     426neo_x: 
     427  EbeneAktualisieren() 
     428  if (Ebene12) 
     429    OutputChar("x","X") 
     430  else if (Ebene = 3) 
     431    SendUnicodeChar(0x2026) ;Ellipse 
     432  else if (Ebene = 5) 
     433    SendUnicodeChar(0x03BE) ;xi 
     434  else if (Ebene = 6) 
     435    SendUnicodeChar(0x039E)  ; Xi 
     436return 
     437 
     438 
     439neo_v: 
     440  EbeneAktualisieren() 
     441  if (Ebene12 and !(CheckDeadUni12("c6",0x1E7F,0x1E7E))) 
     442    OutputChar("v","V") 
     443  else if (Ebene = 3) 
     444    send {blind}_ 
     445  else if (Ebene = 4) 
     446    if (not(lernModus) or lernModus_neo_Backspace) 
     447      Send {blind}{Backspace} 
     448    else 
     449    { 
    378450       CompKey := PriorCompKey 
    379451       DeadKey := PriorDeadKey 
    380    } ; leer 
    381    else if (Ebene = 5) 
    382       SendUnicodeChar(0x2011) ; gesch�tzter Bindestrich (Bindestrich ohne Zeilenumbruch) 
    383    else if (Ebene = 6) 
    384       SendUnicodeChar(0x00AD) ; weicher Bindestrich 
    385 return 
    386  
    387 neo_tot2: 
    388    EbeneAktualisieren() 
    389    if (Ebene = 1) 
    390    { 
    391       deadAsc("{�}{space}") ; akut, tot 
    392       DeadKey := "a1" 
    393    } 
    394    else if (Ebene = 2) 
    395    { 
    396       deadAsc("``{space}") 
    397       DeadKey := "a2" 
    398    } 
    399    else if (Ebene = 3) 
    400    { 
    401       deadAsc("�") ; cedilla 
    402       DeadKey := "a3" 
    403    } 
    404    else if (Ebene = 4) 
    405    { 
    406       deadUni(0x02D9) ; punkt oben dr�ber 
    407       DeadKey := "a4" 
    408    } 
    409    else if (Ebene = 5) 
    410    { 
    411       deadUni(0x02DB) ; ogonek 
    412       DeadKey := "a5" 
    413    } 
    414    else if (Ebene = 6) 
    415    { 
    416       deadUni(0x02DA)  ; ring obendrauf 
    417       DeadKey := "a6" 
    418    } 
    419    CompKey := PriorCompKey 
    420 return 
    421  
    422  
    423 /* 
    424    ------------------------------------------------------ 
    425    Reihe 2 
    426    ------------------------------------------------------ 
    427 */ 
    428  
    429 neo_x: 
    430    EbeneAktualisieren() 
    431    if (Ebene12) 
    432       OutputChar("x","X") 
    433    else if (Ebene = 3) 
    434       SendUnicodeChar(0x2026) ;Ellipse 
    435    else if (Ebene = 5) 
    436       SendUnicodeChar(0x03BE) ;xi 
    437    else if (Ebene = 6) 
    438       SendUnicodeChar(0x039E)  ; Xi 
    439 return 
    440  
    441  
    442 neo_v: 
    443    EbeneAktualisieren() 
    444    if (Ebene12 and !(CheckDeadUni12("c6",0x1E7F,0x1E7E))) 
    445       OutputChar("v","V") 
    446    else if (Ebene = 3) 
    447       send {blind}_ 
    448    else if (Ebene = 4) 
    449       if (not(lernModus) or lernModus_neo_Backspace) 
    450          Send {blind}{Backspace} 
    451       else 
    452       { 
    453           CompKey := PriorCompKey 
    454           DeadKey := PriorDeadKey 
    455       } ; leer 
    456    else if (Ebene = 6) 
    457       SendUnicodeChar(0x2259) ; estimates 
     452    } ; leer 
     453  else if (Ebene = 6) 
     454    SendUnicodeChar(0x2259) ; estimates 
    458455return 
    459456 
     
    461458 
    462459neo_l: 
    463    EbeneAktualisieren() 
    464    if (Ebene12 and !(CheckDeadUni12("a1",0x013A,0x0139) 
    465                   or CheckDeadUni12("a3",0x013C,0x013B) 
    466                   or CheckDeadUni12("c2",0x013E,0x013D) 
    467                   or CheckDeadUni12("c4",0x0140,0x013F) 
    468                   or CheckDeadUni12("c6",0x1E37,0x1E36) 
    469                   or CheckDeadUni12("t4",0x0142,0x0141))) 
    470       OutputChar("l","L") 
    471    else if (Ebene = 3) 
    472       send {blind}[ 
    473    else if (Ebene = 4) 
    474       Send {Blind}{Up} 
    475    else if (Ebene = 5) 
    476       SendUnicodeChar(0x03BB) ; lambda 
    477    else if (Ebene = 6) 
    478       SendUnicodeChar(0x039B) ; Lambda 
     460  EbeneAktualisieren() 
     461  if (Ebene12 and !(CheckDeadUni12("a1",0x013A,0x0139) 
     462            or CheckDeadUni12("a3",0x013C,0x013B) 
     463            or CheckDeadUni12("c2",0x013E,0x013D) 
     464            or CheckDeadUni12("c4",0x0140,0x013F) 
     465            or CheckDeadUni12("c6",0x1E37,0x1E36) 
     466            or CheckDeadUni12("t4",0x0142,0x0141))) 
     467    OutputChar("l","L") 
     468  else if (Ebene = 3) 
     469    send {blind}[ 
     470  else if (Ebene = 4) 
     471    Send {Blind}{Up} 
     472  else if (Ebene = 5) 
     473    SendUnicodeChar(0x03BB) ; lambda 
     474  else if (Ebene = 6) 
     475    SendUnicodeChar(0x039B) ; Lambda 
    479476return 
    480477 
    481478 
    482479neo_c: 
    483    EbeneAktualisieren() 
    484    if (Ebene12 and !(CheckDeadUni12("a1",0x0107,0x0106) 
    485                   or CheckDeadUni12("a3",0x00E7,0x00E6) 
    486                   or CheckDeadUni12("a4",0x010B,0x010A) 
    487                   or CheckDeadUni12("c1",0x0109,0x0108) 
    488                   or CheckDeadUni12("c2",0x010D,0x010C) 
    489                   or CheckCompAsc12("o","�","�") 
    490                   or CheckCompAsc12("O","�","�"))) 
    491       OutputChar("c","C") 
    492    else if (Ebene = 3) 
    493       send {blind}] 
    494    else if (Ebene = 4) 
    495       if (not(lernModus) or lernModus_neo_Entf) 
    496         Send {blind}{Del} 
    497       else 
    498       { 
    499           CompKey := PriorCompKey 
    500           DeadKey := PriorDeadKey 
    501       } ; leer 
    502    else if (Ebene = 5) 
    503       SendUnicodeChar(0x03C7) ;chi 
    504    else if (Ebene = 6) 
    505       SendUnicodeChar(0x2102)  ; C (Komplexe Zahlen) 
     480  EbeneAktualisieren() 
     481  if (Ebene12 and !(CheckDeadUni12("a1",0x0107,0x0106) 
     482            or CheckDeadUni12("a3",0x00E7,0x00E6) 
     483            or CheckDeadUni12("a4",0x010B,0x010A) 
     484            or CheckDeadUni12("c1",0x0109,0x0108) 
     485            or CheckDeadUni12("c2",0x010D,0x010C) 
     486            or CheckCompAsc12("o","�","�") 
     487            or CheckCompAsc12("O","�","�"))) 
     488    OutputChar("c","C") 
     489  else if (Ebene = 3) 
     490    send {blind}] 
     491  else if (Ebene = 4) 
     492    if (not(lernModus) or lernModus_neo_Entf) 
     493      Send {blind}{Del} 
     494    else 
     495    { 
     496       CompKey := PriorCompKey 
     497       DeadKey := PriorDeadKey 
     498    } ; leer 
     499  else if (Ebene = 5) 
     500    SendUnicodeChar(0x03C7) ;chi 
     501  else if (Ebene = 6) 
     502    SendUnicodeChar(0x2102)  ; C (Komplexe Zahlen) 
    506503return 
    507504 
    508505neo_w: 
    509    EbeneAktualisieren() 
    510    if (Ebene12 and !(CheckDeadUni12("c1",0x0175,0x0174))) 
    511       OutputChar("w","W") 
    512    else if (Ebene = 3) 
    513       SendUnicodeChar(0x005E) ; untotes ^ - Unicode-Name: CIRCUMFLEX ACCENT 
    514       ;send {^}{space} ; Funktioniert nicht unter Java-Programmen  
    515    else if (Ebene = 4) 
    516       Send {blind}{Insert} 
    517    else if (Ebene = 5) 
    518       SendUnicodeChar(0x03C9) ; omega 
    519    else if (Ebene = 6) 
    520       SendUnicodeChar(0x03A9) ; Omega 
     506  EbeneAktualisieren() 
     507  if (Ebene12 and !(CheckDeadUni12("c1",0x0175,0x0174))) 
     508    OutputChar("w","W") 
     509  else if (Ebene = 3) 
     510    SendUnicodeChar(0x005E) ; untotes ^ - Unicode-Name: CIRCUMFLEX ACCENT 
     511      ;send {^}{space}      ; Funktioniert nicht unter Java-Programmen 
     512  else if (Ebene = 4) 
     513    Send {blind}{Insert} 
     514  else if (Ebene = 5) 
     515    SendUnicodeChar(0x03C9) ; omega 
     516  else if (Ebene = 6) 
     517    SendUnicodeChar(0x03A9) ; Omega 
    521518return 
    522519 
    523520neo_k: 
    524    EbeneAktualisieren() 
    525    if (Ebene12 and !(CheckDeadUni12("a3",0x0137,0x0136) 
    526                   or CheckDeadUni12("c6",0x1E33,0x1E32))) 
    527       OutputChar("k","K") 
    528    else if (Ebene = 3) 
    529       send {blind}{!} 
    530    else if (Ebene = 4) 
    531       Send � 
    532    else if (Ebene = 5) 
    533       SendUnicodeChar(0x03F0) ;kappa symbol (varkappa) 
    534    else if (Ebene = 6) 
    535       SendUnicodeChar(0x221A) ; Wurzel 
     521  EbeneAktualisieren() 
     522  if (Ebene12 and !(CheckDeadUni12("a3",0x0137,0x0136) 
     523            or CheckDeadUni12("c6",0x1E33,0x1E32))) 
     524    OutputChar("k","K") 
     525  else if (Ebene = 3) 
     526    send {blind}{!} 
     527  else if (Ebene = 4) 
     528    Send � 
     529  else if (Ebene = 5) 
     530    SendUnicodeChar(0x03F0) ;kappa symbol (varkappa) 
     531  else if (Ebene = 6) 
     532    SendUnicodeChar(0x221A) ; Wurzel 
    536533return 
    537534 
    538535neo_h: 
    539    EbeneAktualisieren() 
    540    if (Ebene12 and !(CheckDeadUni12("a4",0x1E23,0x1E22) 
    541                   or CheckDeadUni12("c1",0x0125,0x0124) 
    542                   or CheckDeadUni12("c5",0x0127,0x0126) 
    543                   or CheckDeadUni12("c6",0x1E25,0x1E24))) 
    544       OutputChar("h","H") 
    545    else if ((Ebene = 3) and !(CheckDeadUni("c5",0x2264))) ; kleiner gleich 
    546       send {blind}< 
    547    else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2077) 
    548                            or CheckDeadUni("c5",0x2087))) 
    549       Send {blind}{NumPad7} 
    550    else if (Ebene = 5) 
    551       SendUnicodeChar(0x03C8) ;psi 
    552    else if (Ebene = 6) 
    553       SendUnicodeChar(0x03A8)  ; Psi 
     536  EbeneAktualisieren() 
     537  if (Ebene12 and !(CheckDeadUni12("a4",0x1E23,0x1E22) 
     538            or CheckDeadUni12("c1",0x0125,0x0124) 
     539            or CheckDeadUni12("c5",0x0127,0x0126) 
     540            or CheckDeadUni12("c6",0x1E25,0x1E24))) 
     541    OutputChar("h","H") 
     542  else if ((Ebene = 3) and !(CheckDeadUni("c5",0x2264))) ; kleiner gleich 
     543    send {blind}< 
     544  else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2077) 
     545                  or CheckDeadUni("c5",0x2087))) 
     546    Send {blind}{NumPad7} 
     547  else if (Ebene = 5) 
     548    SendUnicodeChar(0x03C8) ;psi 
     549  else if (Ebene = 6) 
     550    SendUnicodeChar(0x03A8)  ; Psi 
    554551return 
    555552 
    556553neo_g: 
    557    EbeneAktualisieren() 
    558    if (Ebene12 and !(CheckDeadUni12("a3",0x0123,0x0122) 
    559                   or CheckDeadUni12("a4",0x0121,0x0120) 
    560                   or CheckDeadUni12("c1",0x011D,0x011C) 
    561                   or CheckDeadUni12("c3",0x011F,0x011E))) 
    562       OutputChar("g","G") 
    563    else if ((Ebene = 3) and !(CheckDeadUni("c5",0x2265))) ; gr��er gleich 
    564       send {blind}> 
    565    else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2078) 
    566                            or CheckDeadUni("c5",0x2088))) 
    567       Send {blind}{NumPad8} 
    568    else if (Ebene = 5) 
    569       SendUnicodeChar(0x03B3) ;gamma 
    570    else if (Ebene = 6) 
    571       SendUnicodeChar(0x0393)  ; Gamma 
     554  EbeneAktualisieren() 
     555  if (Ebene12 and !(CheckDeadUni12("a3",0x0123,0x0122) 
     556            or CheckDeadUni12("a4",0x0121,0x0120) 
     557            or CheckDeadUni12("c1",0x011D,0x011C) 
     558            or CheckDeadUni12("c3",0x011F,0x011E))) 
     559    OutputChar("g","G") 
     560  else if ((Ebene = 3) and !(CheckDeadUni("c5",0x2265))) ; gr��er gleich 
     561    send {blind}> 
     562  else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2078) 
     563                  or CheckDeadUni("c5",0x2088))) 
     564    Send {blind}{NumPad8} 
     565  else if (Ebene = 5) 
     566    SendUnicodeChar(0x03B3) ;gamma 
     567  else if (Ebene = 6) 
     568    SendUnicodeChar(0x0393)  ; Gamma 
    572569return 
    573570 
    574571neo_f: 
    575    EbeneAktualisieren() 
    576    if (Ebene12 and !(CheckDeadUni12("a4",0x1E1F,0x1E1E) 
    577                   or CheckDeadUni12("t4",0x0192,0x0191))) 
    578       OutputChar("f","F") 
    579    else if ((Ebene = 3) and !(CheckDeadUni("a6",0x2257)    ; ring equal to 
    580                       or CheckDeadUni("c1",0x2259)    ; entspricht 
    581                       or CheckDeadUni("c2",0x225A)    ; EQUIANGULAR TO 
    582                       or CheckDeadUni("c5",0x2261)    ; identisch 
    583                       or CheckDeadUni("t1",0x2245)    ; ungef�hr gleich 
    584                       or CheckDeadUni("t4",0x2260)))  ; ungleich 
    585       send {blind}`= 
    586    else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2079) 
    587                            or CheckDeadUni("c5",0x2089))) 
    588       Send {blind}{NumPad9} 
    589    else if (Ebene = 5) 
    590       SendUnicodeChar(0x03C6) ; phi 
    591    else if (Ebene = 6) 
    592       SendUnicodeChar(0x03A6)  ; Phi 
     572  EbeneAktualisieren() 
     573  if (Ebene12 and !(CheckDeadUni12("a4",0x1E1F,0x1E1E) 
     574            or CheckDeadUni12("t4",0x0192,0x0191))) 
     575    OutputChar("f","F") 
     576  else if ((Ebene = 3) and !(CheckDeadUni("a6",0x2257)   ; ring equal to 
     577               or CheckDeadUni("c1",0x2259)   ; entspricht 
     578               or CheckDeadUni("c2",0x225A)   ; EQUIANGULAR TO 
     579               or CheckDeadUni("c5",0x2261)   ; identisch 
     580               or CheckDeadUni("t1",0x2245)   ; ungef�hr gleich 
     581               or CheckDeadUni("t4",0x2260)))  ; ungleich 
     582    send {blind}`= 
     583  else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2079) 
     584                  or CheckDeadUni("c5",0x2089))) 
     585    Send {blind}{NumPad9} 
     586  else if (Ebene = 5) 
     587    SendUnicodeChar(0x03C6) ; phi 
     588  else if (Ebene = 6) 
     589    SendUnicodeChar(0x03A6)  ; Phi 
    593590return 
    594591 
     
    609606 
    610607neo_sz: 
    611    EbeneAktualisieren() 
    612    if (Ebene = 1) 
    613       if (GetKeyState("CapsLock","T")) 
    614          SendUnicodeChar(0x1E9E) ; verssal-� 
    615       else if (LangSTastatur = 1) 
    616          send {blind}s 
     608  EbeneAktualisieren() 
     609  if (Ebene = 1) 
     610    if (GetKeyState("CapsLock","T")) 
     611      SendUnicodeChar(0x1E9E) ; versal-� 
     612    else if (LangSTastatur = 1) 
     613      send {blind}s 
     614    else 
     615      send � 
     616  else if (Ebene = 2) 
     617    if (GetKeyState("CapsLock","T")) 
     618      if (LangSTastatur = 1) 
     619        send {blind}s 
    617620      else 
    618          send � 
    619    else if (Ebene = 2) 
    620       if (GetKeyState("CapsLock","T")) 
    621          if (LangSTastatur = 1) 
     621        send � 
     622    else 
     623      SendUnicodeChar(0x1E9E) ; versal-� 
     624  else if (Ebene = 3) 
     625    if (LangSTastatur = 1) 
     626      send � 
     627    else 
     628      SendUnicodeChar(0x017F) ; langes s 
     629  else if (Ebene = 5) 
     630    SendUnicodeChar(0x03C2) ; varsigma 
     631  else if (Ebene = 6) 
     632    SendUnicodeChar(0x2218) ; Verkn�pfungsoperator 
     633return 
     634 
     635 
     636neo_tot3: 
     637  EbeneAktualisieren() 
     638  if (Ebene = 1) 
     639  { 
     640    deadUni(0x02DC)  ;Tilde, tot 
     641    DeadKey := "t1" 
     642  } 
     643  else if (Ebene = 2) 
     644  { 
     645    deadUni(0x00AF)  ; Macron, tot 
     646    DeadKey := "t2" 
     647  } 
     648  else if (Ebene = 3) 
     649  { 
     650    deadUni(0x00A8)  ; Di�rese 
     651    DeadKey := "t3" 
     652  } 
     653  else if (Ebene = 4) 
     654  { 
     655    deadUni(0x002F)  ; Schr�gstrich, tot 
     656    DeadKey := "t4" 
     657  } 
     658  else if (Ebene = 5) 
     659  { 
     660    deadUni(0x02DD)  ;Doppelakut 
     661    DeadKey := "t5" 
     662  } 
     663  else if (Ebene = 6) 
     664  { 
     665    deadUni(0x02CF)  ; Komma drunter, tot 
     666    DeadKey := "t6" 
     667  } 
     668 
     669return 
     670 
     671 
     672/* 
     673 
     674  Reihe 3 
     675 
     676*/ 
     677 
     678neo_u: 
     679  EbeneAktualisieren() 
     680  if (Ebene12 and !(CheckDeadUni12("a1",0x00FA,0x00DA) 
     681            or CheckDeadUni12("a2",0x00F9,0x00D9) 
     682            or CheckDeadUni12("a5",0x0173,0x0172) 
     683            or CheckDeadUni12("a6",0x016F,0x016E) 
     684            or CheckDeadUni12("c1",0x00FB,0x00DB) 
     685            or CheckDeadUni12("c2",0x01D4,0x01D3) 
     686            or CheckDeadUni12("c3",0x016D,0x016C) 
     687            or CheckDeadUni12("t1",0x0169,0x0168) 
     688            or CheckDeadUni12("t2",0x016B,0x016A) 
     689            or CheckDeadAsc12("t3","�","�") 
     690            or CheckDeadUni12("t5",0x0171,0x0170))) 
     691    OutputChar("u","U") 
     692  else if (Ebene = 3) 
     693    send {blind}\ 
     694  else if (Ebene = 4) 
     695    Send {blind}{Home} 
     696  else if (Ebene = 5) 
     697  { 
     698     CompKey := PriorCompKey 
     699     DeadKey := PriorDeadKey 
     700  } ; leer 
     701  else if (Ebene = 6) 
     702    SendUnicodeChar(0x222E) ; contour integral 
     703return 
     704 
     705neo_i: 
     706  EbeneAktualisieren() 
     707  if (Ebene12 and !(CheckDeadUni12("a1",0x00ED,0x00CD) 
     708            or CheckDeadUni12("a2",0x00EC,0x00CC) 
     709            or CheckDeadUni12("a4",0x012F,0x012E) 
     710            or CheckDeadUni12("a5",0x0131,0x0130) 
     711            or CheckDeadUni12("c1",0x00EE,0x00CE) 
     712            or CheckDeadUni12("c2",0x01D0,0x01CF) 
     713            or CheckDeadUni12("c3",0x012D,0x012C) 
     714            or CheckDeadUni12("t1",0x0129,0x0128) 
     715            or CheckDeadUni12("t2",0x012B,0x012A) 
     716            or CheckDeadAsc12("t3","�","�"))) 
     717    OutputChar("i","I") 
     718  else if (Ebene = 3) 
     719    send {blind}`/ 
     720  else if (Ebene = 4) 
     721    Send {Blind}{Left} 
     722  else if (Ebene = 5   ) 
     723    SendUnicodeChar(0x03B9) ; iota 
     724  else if (Ebene = 6) 
     725    SendUnicodeChar(0x222B) ; integral 
     726return 
     727 
     728neo_a: 
     729  EbeneAktualisieren() 
     730  if (Ebene12 and !(CheckDeadUni12("a1",0x00E1,0x00C1) 
     731            or CheckDeadUni12("a2",0x00E0,0x00C0) 
     732            or CheckDeadUni12("a5",0x0105,0x0104) 
     733            or CheckDeadAsc12("a6","�","�") 
     734            or CheckDeadUni12("c1",0x00E2,0x00C2) 
     735            or CheckDeadUni12("c2",0x01CE,0x01CD) 
     736            or CheckDeadUni12("c3",0x0103,0x0102) 
     737            or CheckDeadUni12("t1",0x00E3,0x00C3) 
     738            or CheckDeadUni12("t2",0x0101,0x0100) 
     739            or CheckDeadAsc12("t3","�","�"))) 
     740    OutputChar("a","A") 
     741  else if (Ebene = 3) 
     742    send {blind}{{} 
     743  else if (Ebene = 4) 
     744    Send {Blind}{Down} 
     745  else if (Ebene = 5) 
     746    SendUnicodeChar(0x03B1) ;alpha 
     747  else if (Ebene = 6) 
     748    SendUnicodeChar(0x2200) ;f�r alle 
     749return 
     750 
     751neo_e: 
     752  EbeneAktualisieren() 
     753  if (Ebene12 and !(CheckDeadUni12("a1",0x00E9,0x00C9) 
     754            or CheckDeadUni12("a2",0x00E8,0x00C8) 
     755            or CheckDeadUni12("a4",0x0117,0x0116) 
     756            or CheckDeadUni12("a5",0x0119,0x0118) 
     757            or CheckDeadUni12("c1",0x00EA,0x00CA) 
     758            or CheckDeadUni12("c2",0x011B,0x011A) 
     759            or CheckDeadUni12("c3",0x0115,0x0114) 
     760            or CheckDeadUni12("t2",0x0113,0x0112) 
     761            or CheckDeadAsc12("t3","�","�") 
     762            or CheckCompAsc12("a","�","�") 
     763            or CheckCompAsc12("A","�","�") 
     764            or CheckCompAsc12("o","�","�") 
     765            or CheckCompAsc12("O","�","�"))) 
     766    OutputChar("e","E") 
     767  else if (Ebene = 3)    ; { 
     768    send {blind}{}} 
     769  else if (Ebene = 4) 
     770    Send {Blind}{Right} 
     771  else if (Ebene = 5) 
     772      SendUnicodeChar(0x03B5) ;epsilon 
     773  else if (Ebene = 6) 
     774      SendUnicodeChar(0x2203) ;es existiert 
     775return 
     776 
     777neo_o: 
     778  EbeneAktualisieren() 
     779  if (Ebene12 and !(CheckDeadUni12("a1",0x00F3,0x00D3) 
     780            or CheckDeadUni12("a2",0x00F2,0x00D2) 
     781            or CheckDeadUni12("a5",0x01EB,0x01EA) 
     782            or CheckDeadUni12("c1",0x00F4,0x00D4) 
     783            or CheckDeadUni12("c2",0x01D2,0x01D1) 
     784            or CheckDeadUni12("c3",0x014F,0x014E) 
     785            or CheckDeadUni12("t1",0x00F5,0x00D5) 
     786            or CheckDeadUni12("t2",0x014D,0x014C) 
     787            or CheckDeadAsc12("t3","�","�") 
     788            or CheckDeadUni12("t4",0x00F8,0x00D8) 
     789            or CheckDeadUni12("t5",0x0151,0x0150))) 
     790    OutputChar("o","O") 
     791  else if (Ebene = 3) 
     792    send {blind}* 
     793  else if (Ebene = 4) 
     794    Send {blind}{End} 
     795  else if (Ebene = 5) 
     796    SendUnicodeChar(0x03BF) ; omicron 
     797  else if (Ebene = 6) 
     798    SendUnicodeChar(0x2208) ; element of 
     799return 
     800 
     801neo_s: 
     802  EbeneAktualisieren() 
     803  if (Ebene12 and !(CheckDeadUni12("a1",0x015B,0x015A) 
     804              or CheckDeadUni12("a3",0x015F,0x015E) 
     805              or CheckDeadUni12("a4",0x1E61,0x1E60) 
     806              or CheckDeadUni12("c1",0x015D,0x015C) 
     807              or CheckDeadUni12("c2",0x0161,0x0160) 
     808              or CheckDeadUni12("c6",0x1E63,0x1A62))) 
     809      if (Ebene = 1) 
     810      { 
     811        if LangSTastatur 
     812          if (GetKeyState("CapsLock","T")) 
    622813            send {blind}s 
    623          else 
    624             send � 
    625       else 
    626          SendUnicodeChar(0x1E9E) ; versal-� 
    627    else if (Ebene = 3) 
    628       if (LangSTastatur = 1) 
    629          send � 
    630       else 
    631          SendUnicodeChar(0x017F) ; langes s 
    632    else if (Ebene = 5) 
    633       SendUnicodeChar(0x03C2) ; varsigma 
    634    else if (Ebene = 6) 
    635       SendUnicodeChar(0x2218) ; Verkn�pfungsoperator 
    636 return 
    637  
    638  
    639 neo_tot3: 
    640    EbeneAktualisieren() 
    641    if (Ebene = 1) 
    642    { 
    643       deadUni(0x02DC)  ; tilde, tot  
    644       DeadKey := "t1" 
    645    } 
    646    else if (Ebene = 2) 
    647    { 
    648       deadUni(0x00AF)  ; macron, tot 
    649       DeadKey := "t2" 
    650    } 
    651    else if (Ebene = 3) 
    652    { 
    653       deadUni(0x00A8)  ; diaerese 
    654       DeadKey := "t3" 
    655    } 
    656    else if (Ebene = 4) 
    657    { 
    658       deadUni(0x002F)  ; Schr�gstrich, tot 
    659       DeadKey := "t4" 
    660    } 
    661    else if (Ebene = 5) 
    662    { 
    663       deadUni(0x02DD)  ;doppelakut 
    664       DeadKey := "t5" 
    665    } 
    666    else if (Ebene = 6) 
    667    { 
    668       deadUni(0x02CF)  ; komma drunter, tot 
    669       DeadKey := "t6" 
    670    } 
    671     
    672 return 
    673  
    674  
    675 /* 
    676    ------------------------------------------------------ 
    677    Reihe 3 
    678    ------------------------------------------------------ 
    679 */ 
    680  
    681 neo_u: 
    682    EbeneAktualisieren() 
    683    if (Ebene12 and !(CheckDeadUni12("a1",0x00FA,0x00DA) 
    684                   or CheckDeadUni12("a2",0x00F9,0x00D9) 
    685                   or CheckDeadUni12("a5",0x0173,0x0172) 
    686                   or CheckDeadUni12("a6",0x016F,0x016E) 
    687                   or CheckDeadUni12("c1",0x00FB,0x00DB) 
    688                   or CheckDeadUni12("c2",0x01D4,0x01D3) 
    689                   or CheckDeadUni12("c3",0x016D,0x016C) 
    690                   or CheckDeadUni12("t1",0x0169,0x0168) 
    691                   or CheckDeadUni12("t2",0x016B,0x016A) 
    692                   or CheckDeadAsc12("t3","�","�") 
    693                   or CheckDeadUni12("t5",0x0171,0x0170))) 
    694       OutputChar("u","U") 
    695    else if (Ebene = 3) 
    696       send {blind}\ 
    697    else if (Ebene = 4) 
    698       Send {blind}{Home} 
    699    else if (Ebene = 5) 
    700    { 
    701        CompKey := PriorCompKey 
    702        DeadKey := PriorDeadKey 
    703    } ; leer 
    704    else if (Ebene = 6) 
    705       SendUnicodeChar(0x222E) ; contour integral 
    706 return 
    707  
    708 neo_i: 
    709    EbeneAktualisieren() 
    710    if (Ebene12 and !(CheckDeadUni12("a1",0x00ED,0x00CD) 
    711                   or CheckDeadUni12("a2",0x00EC,0x00CC) 
    712                   or CheckDeadUni12("a4",0x012F,0x012E) 
    713                   or CheckDeadUni12("a5",0x0131,0x0130) 
    714                   or CheckDeadUni12("c1",0x00EE,0x00CE) 
    715                   or CheckDeadUni12("c2",0x01D0,0x01CF) 
    716                   or CheckDeadUni12("c3",0x012D,0x012C) 
    717                   or CheckDeadUni12("t1",0x0129,0x0128) 
    718                   or CheckDeadUni12("t2",0x012B,0x012A) 
    719                   or CheckDeadAsc12("t3","�","�"))) 
    720       OutputChar("i","I") 
    721    else if (Ebene = 3) 
    722       send {blind}`/ 
    723    else if (Ebene = 4) 
    724       Send {Blind}{Left} 
    725    else if (Ebene = 5    ) 
    726       SendUnicodeChar(0x03B9) ; iota 
    727    else if (Ebene = 6) 
    728       SendUnicodeChar(0x222B) ; integral 
    729 return 
    730  
    731 neo_a: 
    732    EbeneAktualisieren() 
    733    if (Ebene12 and !(CheckDeadUni12("a1",0x00E1,0x00C1) 
    734                   or CheckDeadUni12("a2",0x00E0,0x00C0) 
    735                   or CheckDeadUni12("a5",0x0105,0x0104) 
    736                   or CheckDeadAsc12("a6","�","�") 
    737                   or CheckDeadUni12("c1",0x00E2,0x00C2) 
    738                   or CheckDeadUni12("c2",0x01CE,0x01CD) 
    739                   or CheckDeadUni12("c3",0x0103,0x0102) 
    740                   or CheckDeadUni12("t1",0x00E3,0x00C3) 
    741                   or CheckDeadUni12("t2",0x0101,0x0100) 
    742                   or CheckDeadAsc12("t3","�","�"))) 
    743       OutputChar("a","A") 
    744    else if (Ebene = 3) 
    745       send {blind}{{}   ; } 
    746    else if (Ebene = 4) 
    747       Send {Blind}{Down} 
    748    else if (Ebene = 5) 
    749       SendUnicodeChar(0x03B1) ;alpha 
    750    else if (Ebene = 6) 
    751       SendUnicodeChar(0x2200) ;fuer alle    
    752 return 
    753  
    754 neo_e: 
    755    EbeneAktualisieren() 
    756    if (Ebene12 and !(CheckDeadUni12("a1",0x00E9,0x00C9) 
    757                   or CheckDeadUni12("a2",0x00E8,0x00C8) 
    758                   or CheckDeadUni12("a4",0x0117,0x0116) 
    759                   or CheckDeadUni12("a5",0x0119,0x0118) 
    760                   or CheckDeadUni12("c1",0x00EA,0x00CA) 
    761                   or CheckDeadUni12("c2",0x011B,0x011A) 
    762                   or CheckDeadUni12("c3",0x0115,0x0114) 
    763                   or CheckDeadUni12("t2",0x0113,0x0112) 
    764                   or CheckDeadAsc12("t3","�","�") 
    765                   or CheckCompAsc12("a","�","�") 
    766                   or CheckCompAsc12("A","�","�") 
    767                   or CheckCompAsc12("o","�","�") 
    768                   or CheckCompAsc12("O","�","�"))) 
    769       OutputChar("e","E") 
    770    else if (Ebene = 3)      ; { 
    771       send {blind}{}} 
    772    else if (Ebene = 4) 
    773       Send {Blind}{Right} 
    774    else if (Ebene = 5) 
    775         SendUnicodeChar(0x03B5) ;epsilon 
    776    else if (Ebene = 6) 
    777         SendUnicodeChar(0x2203) ;es existiert    
    778 return 
    779  
    780 neo_o: 
    781    EbeneAktualisieren() 
    782    if (Ebene12 and !(CheckDeadUni12("a1",0x00F3,0x00D3) 
    783                   or CheckDeadUni12("a2",0x00F2,0x00D2) 
    784                   or CheckDeadUni12("a5",0x01EB,0x01EA) 
    785                   or CheckDeadUni12("c1",0x00F4,0x00D4) 
    786                   or CheckDeadUni12("c2",0x01D2,0x01D1) 
    787                   or CheckDeadUni12("c3",0x014F,0x014E) 
    788                   or CheckDeadUni12("t1",0x00F5,0x00D5) 
    789                   or CheckDeadUni12("t2",0x014D,0x014C) 
    790                   or CheckDeadAsc12("t3","�","�") 
    791                   or CheckDeadUni12("t4",0x00F8,0x00D8) 
    792                   or CheckDeadUni12("t5",0x0151,0x0150))) 
    793       OutputChar("o","O") 
    794    else if (Ebene = 3) 
    795       send {blind}* 
    796    else if (Ebene = 4) 
    797       Send {blind}{End} 
    798    else if (Ebene = 5) 
    799       SendUnicodeChar(0x03BF) ; omicron 
    800    else if (Ebene = 6) 
    801       SendUnicodeChar(0x2208) ; element of 
    802 return 
    803  
    804 neo_s: 
    805    EbeneAktualisieren() 
    806    if (Ebene12 and !(CheckDeadUni12("a1",0x015B,0x015A) 
    807                   or CheckDeadUni12("a3",0x015F,0x015E) 
    808                   or CheckDeadUni12("a4",0x1E61,0x1E60) 
    809                   or CheckDeadUni12("c1",0x015D,0x015C) 
    810                   or CheckDeadUni12("c2",0x0161,0x0160) 
    811                   or CheckDeadUni12("c6",0x1E63,0x1A62))) 
    812       if (LangSTastatur = 1) 
    813          if (GetKeyState("CapsLock","T") xor (Ebene = 1)) 
    814             SendUnicodeChar(0x017F) ; langes s 
    815          else 
    816             OutputChar("s","S") 
    817       else 
    818          OutputChar("s","S") 
    819    else if (Ebene = 3) 
    820       send {blind}? 
    821    else if (Ebene = 4) 
    822       Send � 
    823    else if (Ebene = 5) 
    824       SendUnicodeChar(0x03C3) ;sigma 
    825    else if (Ebene = 6) 
    826       SendUnicodeChar(0x03A3)  ; Sigma 
     814          else 
     815            SendUnicodeChar(0x017F) ;langes S 
     816        else 
     817          send {blind}s 
     818        if (PriorDeadKey = "comp") 
     819          CompKey := "s" 
     820      } 
     821      else if (Ebene = 2) 
     822      { 
     823        if LangSTastatur 
     824          if (GetKeyState("CapsLock","T")) 
     825            SendUnicodeChar(0x017F) ;langes S 
     826          else 
     827            send {blind}S 
     828        else 
     829          send {blind}S 
     830        if (PriorDeadKey = "comp") 
     831          CompKey := "S" 
     832      } 
     833  else if (Ebene = 3) 
     834    send {blind}? 
     835  else if (Ebene = 4) 
     836    Send � 
     837  else if (Ebene = 5) 
     838    SendUnicodeChar(0x03C3) ;sigma 
     839  else if (Ebene = 6) 
     840    SendUnicodeChar(0x03A3)  ; Sigma 
    827841return 
    828842 
    829843neo_n: 
    830    EbeneAktualisieren() 
    831    if (Ebene12 and !(CheckDeadUni12("a1",0x0144,0x0143) 
    832                   or CheckDeadUni12("a3",0x0146,0x0145) 
    833                   or CheckDeadUni12("a4",0x1E45,0x1E44) 
    834                   or CheckDeadUni12("c2",0x0148,0x0147) 
    835                   or CheckDeadUni12("t1",0x00F1,0x00D1))) 
    836       OutputChar("n","N") 
    837    else if (Ebene = 3) 
    838       send {blind}(                 ; ) 
    839    else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2074) 
    840                            or CheckDeadUni("c5",0x2084))) 
    841       Send {blind}{NumPad4} 
    842    else if (Ebene = 5) 
    843       SendUnicodeChar(0x03BD) ; nu 
    844    else if (Ebene = 6) 
    845       SendUnicodeChar(0x2115) ; N (nat�rliche Zahlen) 
     844  EbeneAktualisieren() 
     845  if (Ebene12 and !(CheckDeadUni12("a1",0x0144,0x0143) 
     846            or CheckDeadUni12("a3",0x0146,0x0145) 
     847            or CheckDeadUni12("a4",0x1E45,0x1E44) 
     848            or CheckDeadUni12("c2",0x0148,0x0147) 
     849            or CheckDeadUni12("t1",0x00F1,0x00D1))) 
     850    OutputChar("n","N") 
     851  else if (Ebene = 3) 
     852    send {blind}(            ; ) 
     853  else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2074) 
     854                  or CheckDeadUni("c5",0x2084))) 
     855    Send {blind}{NumPad4} 
     856  else if (Ebene = 5) 
     857    SendUnicodeChar(0x03BD) ; nu 
     858  else if (Ebene = 6) 
     859    SendUnicodeChar(0x2115) ; N (nat�rliche Zahlen) 
    846860return 
    847861 
    848862neo_r: 
    849    EbeneAktualisieren() 
    850    if (Ebene12 and !(CheckDeadUni12("a1",0x0155,0x0154) 
    851                   or CheckDeadUni12("a3",0x0157,0x0156) 
    852                   or CheckDeadUni12("a4",0x0E59,0x0E58) 
    853                   or CheckDeadUni12("c2",0x0159,0x0158) 
    854                   or CheckDeadUni12("c6",0x1E5B,0x1E5A) 
    855                   or CheckCompAsc12("o","�","�") 
    856                   or CheckCompAsc12("O","�","�"))) 
    857       OutputChar("r","R") 
    858    else if (Ebene = 3)                ;( 
    859       send {blind}) 
    860    else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2075) 
    861                            or CheckDeadUni("c5",0x2085))) 
    862       Send {blind}{NumPad5} 
    863    else if (Ebene = 5) 
    864       SendUnicodeChar(0x03F1) ; rho symbol (varrho) 
    865    else if (Ebene = 6) 
    866       SendUnicodeChar(0x211D) ; R (reelle Zahlen) 
     863  EbeneAktualisieren() 
     864  if (Ebene12 and !(CheckDeadUni12("a1",0x0155,0x0154) 
     865            or CheckDeadUni12("a3",0x0157,0x0156) 
     866            or CheckDeadUni12("a4",0x0E59,0x0E58) 
     867            or CheckDeadUni12("c2",0x0159,0x0158) 
     868            or CheckDeadUni12("c6",0x1E5B,0x1E5A) 
     869            or CheckCompAsc12("o","�","�") 
     870            or CheckCompAsc12("O","�","�"))) 
     871    OutputChar("r","R") 
     872  else if (Ebene = 3)           ;( 
     873    send {blind}) 
     874  else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2075) 
     875                  or CheckDeadUni("c5",0x2085))) 
     876    Send {blind}{NumPad5} 
     877  else if (Ebene = 5) 
     878    SendUnicodeChar(0x03F1) ; rho symbol (varrho) 
     879  else if (Ebene = 6) 
     880    SendUnicodeChar(0x211D) ; R (reelle Zahlen) 
    867881return 
    868882 
    869883neo_t: 
    870    EbeneAktualisieren() 
    871    if (Ebene12 and !(CheckDeadUni12("a3",0x0163,0x0162) 
    872                   or CheckDeadUni12("a4",0x1E6B,0x1E6A) 
    873                   or CheckDeadUni12("c2",0x0165,0x0164) 
    874                   or CheckDeadUni12("c5",0x0167,0x0166) 
    875                   or CheckDeadUni12("c6",0x1E6D,0x1E6C))) 
    876       OutputChar("t","T") 
    877    else if (Ebene = 3) 
    878       send {blind}- ; Bis 
    879    else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2076) 
    880                            or CheckDeadUni("c5",0x2086))) 
    881       Send {blind}{NumPad6} 
    882    else if (Ebene = 5) 
    883       SendUnicodeChar(0x03C4) ; tau 
    884    else if (Ebene = 6) 
    885       SendUnicodeChar(0x2202 ) ; partielle Ableitung 
     884  EbeneAktualisieren() 
     885  if (Ebene12 and !(CheckDeadUni12("a3",0x0163,0x0162) 
     886            or CheckDeadUni12("a4",0x1E6B,0x1E6A) 
     887            or CheckDeadUni12("c2",0x0165,0x0164) 
     888            or CheckDeadUni12("c5",0x0167,0x0166) 
     889            or CheckDeadUni12("c6",0x1E6D,0x1E6C))) 
     890    OutputChar("t","T") 
     891  else if (Ebene = 3) 
     892    send {blind}- ; Bis 
     893  else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2076) 
     894                  or CheckDeadUni("c5",0x2086))) 
     895    Send {blind}{NumPad6} 
     896  else if (Ebene = 5) 
     897    SendUnicodeChar(0x03C4) ; tau 
     898  else if (Ebene = 6) 
     899    SendUnicodeChar(0x2202 ) ; partielle Ableitung 
    886900return 
    887901 
     
    905919 
    906920neo_y: 
    907    EbeneAktualisieren() 
    908    if (Ebene12 and !(CheckDeadUni12("a1",0x00FD,0x00DD) 
    909                   or CheckDeadUni12("c1",0x0177,0x0176) 
    910                   or CheckDeadAsc12("t3","�",�))) 
    911       OutputChar("y","Y") 
    912    else if (Ebene = 3) 
    913       send {blind}@ 
    914    else if (Ebene = 4) 
    915       Send {blind}. 
    916    else if (Ebene = 5) 
    917       SendUnicodeChar(0x03C5) ; upsilon 
    918    else if (Ebene = 6) 
    919       SendUnicodeChar(0x2207) ; nabla 
     921  EbeneAktualisieren() 
     922  if (Ebene12 and !(CheckDeadUni12("a1",0x00FD,0x00DD) 
     923            or CheckDeadUni12("c1",0x0177,0x0176) 
     924            or CheckDeadAsc12("t3","�",�))) 
     925    OutputChar("y","Y") 
     926  else if (Ebene = 3) 
     927    send {blind}@ 
     928  else if (Ebene = 4) 
     929    Send {blind}. 
     930  else if (Ebene = 5) 
     931    SendUnicodeChar(0x03C5) ; upsilon 
     932  else if (Ebene = 6) 
     933    SendUnicodeChar(0x2207) ; nabla 
    920934return 
    921935 
    922936/* 
    923    ------------------------------------------------------ 
    924    Reihe 4 
    925    ------------------------------------------------------ 
     937 
     938  Reihe 4 
     939 
    926940*/ 
    927941 
    928942neo_�: 
    929    EbeneAktualisieren() 
    930    if (Ebene12 and !(CheckDeadUni12("a1",0x01D8,0x01D7) 
    931                   or CheckDeadUni12("a2",0x01DC,0x01DB) 
    932                   or CheckDeadUni12("c2",0x01DA,0x01D9) 
    933                   or CheckDeadUni12("t2",0x01D6,0x01D5))) 
    934       OutputChar("�","�") 
    935    else if (Ebene = 3) 
    936       send {blind}{#} 
    937    else if (Ebene = 4) 
    938       Send {blind}{Esc} 
    939    else if (Ebene = 5) 
    940    { 
    941       DeadKey := PriorDeadKey 
    942       CompKey := PriorCompKey 
    943    } ; leer 
    944    else if (Ebene = 6) 
    945       SendUnicodeChar(0x221D) ; proportional 
     943  EbeneAktualisieren() 
     944  if (Ebene12 and !(CheckDeadUni12("a1",0x01D8,0x01D7) 
     945            or CheckDeadUni12("a2",0x01DC,0x01DB) 
     946            or CheckDeadUni12("c2",0x01DA,0x01D9) 
     947            or CheckDeadUni12("t2",0x01D6,0x01D5))) 
     948    OutputChar("�","�") 
     949  else if (Ebene = 3) 
     950    send {#} 
     951  else if (Ebene = 4) 
     952    Send {blind}{Esc} 
     953  else if (Ebene = 5) 
     954  { 
     955    DeadKey := PriorDeadKey 
     956    CompKey := PriorCompKey 
     957  } ; leer 
     958  else if (Ebene = 6) 
     959    SendUnicodeChar(0x221D) ; proportional 
    946960return 
    947961 
    948962neo_�: 
    949    EbeneAktualisieren() 
    950    if (Ebene12 and !(CheckDeadUni12("t2",0x022B,0x022A))) 
    951       OutputChar("�","�") 
    952    else if (Ebene = 3) 
    953       send {blind}$ 
    954    else if (Ebene = 4) 
    955       send {blind}{Tab} 
    956    else if (Ebene = 5) 
    957    { 
    958       DeadKey := PriorDeadKey 
    959       CompKey := PriorCompKey 
    960    } ; leer 
    961    else if (Ebene = 6) 
    962       SendUnicodeChar(0x2111) ; Fraktur I 
     963  EbeneAktualisieren() 
     964  if (Ebene12 and !(CheckDeadUni12("t2",0x022B,0x022A))) 
     965    OutputChar("�","�") 
     966  else if (Ebene = 3) 
     967    send {blind}$ 
     968  else if (Ebene = 4) 
     969    send {blind}{Tab} 
     970  else if (Ebene = 5) 
     971  { 
     972    DeadKey := PriorDeadKey 
     973    CompKey := PriorCompKey 
     974  } ; leer 
     975  else if (Ebene = 6) 
     976    SendUnicodeChar(0x2111) ; Fraktur I 
    963977return 
    964978 
    965979neo_�: 
    966    EbeneAktualisieren() 
    967    if (Ebene12 and !(CheckDeadUni12("t2",0x01DF,0x01DE))) 
    968       OutputChar("�","�") 
    969    else if (Ebene = 3) 
    970       send {blind}| 
    971    else if (Ebene = 4) 
    972       Send {blind}{PgDn}    ; Next 
    973    else if (Ebene = 5) 
    974       SendUnicodeChar(0x03B7) ; eta 
    975    else if (Ebene = 6) 
    976       SendUnicodeChar(0x211C) ; altes R 
     980  EbeneAktualisieren() 
     981  if (Ebene12 and !(CheckDeadUni12("t2",0x01DF,0x01DE))) 
     982    OutputChar("�","�") 
     983  else if (Ebene = 3) 
     984    send {blind}| 
     985  else if (Ebene = 4) 
     986    Send {blind}{PgDn}   ; Next 
     987  else if (Ebene = 5) 
     988    SendUnicodeChar(0x03B7) ; eta 
     989  else if (Ebene = 6) 
     990    SendUnicodeChar(0x211C) ; altes R 
    977991return 
    978992 
    979993neo_p: 
    980    EbeneAktualisieren() 
    981    if (Ebene12 and !(CheckDeadUni12("a4",0x1E57,0x1E56))) 
    982       OutputChar("p","P") 
    983    else if ((Ebene = 3) and !(CheckDeadUni("t1",0x2248))) 
    984       send {blind}~ 
    985    else if (Ebene = 4) 
    986         Send {blind}{Enter} 
    987    else if (Ebene = 5) 
    988       SendUnicodeChar(0x03C0) ;pi 
    989    else if (Ebene = 6) 
    990       SendUnicodeChar(0x03A0)  ; Pi 
     994  EbeneAktualisieren() 
     995  if (Ebene12 and !(CheckDeadUni12("a4",0x1E57,0x1E56))) 
     996    OutputChar("p","P") 
     997  else if ((Ebene = 3) and !(CheckDeadUni("t1",0x2248))) 
     998    send {blind}~ 
     999  else if (Ebene = 4) 
     1000      Send {blind}{Enter} 
     1001  else if (Ebene = 5) 
     1002    SendUnicodeChar(0x03C0) ;pi 
     1003  else if (Ebene = 6) 
     1004    SendUnicodeChar(0x03A0)  ; Pi 
    9911005return 
    9921006 
    9931007neo_z: 
    994    EbeneAktualisieren() 
    995    if (Ebene12 and !(CheckDeadUni12("a1",0x017A,0x0179) 
    996                   or CheckDeadUni12("a4",0x017C,0x017B) 
    997                   or CheckDeadUni12("c2",0x017E,0x017D) 
    998                   or CheckDeadUni12("c6",0x1E93,0x1E92))) 
    999       OutputChar("z","Z") 
    1000    else if (Ebene = 3) 
    1001       send ``{space} ; untot 
    1002    else if (Ebene = 4) 
    1003    { 
    1004       DeadKey := PriorDeadKey 
    1005       CompKey := PriorCompKey 
    1006    } ; leer 
    1007    else if (Ebene = 5) 
    1008       SendUnicodeChar(0x03B6) ;zeta  
    1009    else if (Ebene = 6) 
    1010       SendUnicodeChar(0x2124)  ; Z (ganze Zahlen) 
     1008  EbeneAktualisieren() 
     1009  if (Ebene12 and !(CheckDeadUni12("a1",0x017A,0x0179) 
     1010            or CheckDeadUni12("a4",0x017C,0x017B) 
     1011            or CheckDeadUni12("c2",0x017E,0x017D) 
     1012            or CheckDeadUni12("c6",0x1E93,0x1E92))) 
     1013    OutputChar("z","Z") 
     1014  else if (Ebene = 3) 
     1015    send ``{space} ; untot 
     1016  else if (Ebene = 4) 
     1017  { 
     1018    DeadKey := PriorDeadKey 
     1019    CompKey := PriorCompKey 
     1020  } ; leer 
     1021  else if (Ebene = 5) 
     1022    SendUnicodeChar(0x03B6) ;zeta 
     1023  else if (Ebene = 6) 
     1024    SendUnicodeChar(0x2124)  ; Z (ganze Zahlen) 
    10111025return 
    10121026 
    10131027neo_b: 
    1014    EbeneAktualisieren() 
    1015    if (Ebene12 and !(CheckDeadUni12("a4",0x1E03,0x1E02))) 
    1016       OutputChar("b","B") 
    1017    else if (Ebene = 3) 
    1018       send {blind}{+} 
    1019    else if (Ebene = 4) 
    1020       send {blind}: 
    1021    else if (Ebene = 5) 
    1022       SendUnicodeChar(0x03B2) ; beta 
    1023    else if (Ebene = 6) 
    1024       SendUnicodeChar(0x21D2) ; Doppel-Pfeil rechts 
     1028  EbeneAktualisieren() 
     1029  if (Ebene12 and !(CheckDeadUni12("a4",0x1E03,0x1E02))) 
     1030    OutputChar("b","B") 
     1031  else if (Ebene = 3) 
     1032    send {blind}{+} 
     1033  else if (Ebene = 4) 
     1034    send {blind}: 
     1035  else if (Ebene = 5) 
     1036    SendUnicodeChar(0x03B2) ; beta 
     1037  else if (Ebene = 6) 
     1038    SendUnicodeChar(0x21D2) ; Doppel-Pfeil rechts 
    10251039return 
    10261040 
    10271041neo_m: 
    1028    EbeneAktualisieren() 
    1029    if (Ebene12 and !(CheckDeadUni12("a4",0x1E41,0x1E40) 
    1030                   or CheckDeadUni12("c6",0x1E43,0x1E42) 
    1031                   or CheckCompUni12("t",0x2122,0x2122)        ; TM 
    1032                   or CheckCompUni12("T",0x2122,0x2122)        ; TM 
    1033                   or CheckCompUni12("s",0x2120,0x2120)        ; SM 
    1034                   or CheckCompUni12("S",0x2120,0x2120)))      ; SM 
    1035  
    1036       OutputChar("m","M") 
    1037    else if (Ebene = 3) 
    1038       send {blind}`% 
    1039    else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B9) 
    1040                            or CheckDeadUni("c5",0x2081))) 
    1041       Send {blind}{NumPad1} 
    1042    else if (Ebene = 5) 
    1043       SendUnicodeChar(0x03BC) ; griechisch mu, micro w�re 0x00B5 
    1044    else if (Ebene = 6) 
    1045       SendUnicodeChar(0x21D4) ; doppelter Doppelpfeil (genau dann wenn) 
     1042  EbeneAktualisieren() 
     1043  if (Ebene12 and !(CheckDeadUni12("a4",0x1E41,0x1E40) 
     1044            or CheckDeadUni12("c6",0x1E43,0x1E42) 
     1045            or CheckCompUni12("t",0x2122,0x2122)      ; TM 
     1046            or CheckCompUni12("T",0x2122,0x2122)      ; TM 
     1047            or CheckCompUni12("s",0x2120,0x2120)      ; SM 
     1048            or CheckCompUni12("S",0x2120,0x2120)))    ; SM 
     1049 
     1050    OutputChar("m","M") 
     1051  else if (Ebene = 3) 
     1052    send {blind}`% 
     1053  else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B9) 
     1054                  or CheckDeadUni("c5",0x2081))) 
     1055    Send {blind}{NumPad1} 
     1056  else if (Ebene = 5) 
     1057    SendUnicodeChar(0x03BC) ; griechisch mu, micro w�re 0x00B5 
     1058  else if (Ebene = 6) 
     1059    SendUnicodeChar(0x21D4) ; doppelter Doppelpfeil (genau dann wenn) 
    10461060return 
    10471061 
    10481062neo_komma: 
    1049    EbeneAktualisieren() 
    1050    if (Ebene = 1) 
    1051       if (GetKeyState("CapsLock","T"))  
    1052          send {blind}{Shift down},{Shift up} 
     1063  EbeneAktualisieren() 
     1064  if (Ebene = 1) 
     1065    if (GetKeyState("CapsLock","T")) 
     1066      send {blind}{Shift down},{Shift up} 
     1067    else 
     1068      send {blind}, 
     1069  else if (Ebene = 2) 
     1070     SendUnicodeChar(0x22EE) ;  vertikale ellipse 
     1071  else if (Ebene = 3) 
     1072    send {blind}" 
     1073  else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B2) 
     1074                  or CheckDeadUni("c5",0x2082))) 
     1075    Send {blind}{NumPad2} 
     1076  else if (Ebene = 5) 
     1077    SendUnicodeChar(0x03C1) ; rho 
     1078  else if (Ebene = 6) 
     1079    SendUnicodeChar(0x21D0) ; Doppelpfeil links 
     1080return 
     1081 
     1082neo_punkt: 
     1083  EbeneAktualisieren() 
     1084  if (Ebene = 1) 
     1085    if (GetKeyState("CapsLock","T")) 
     1086      send {blind}{Shift down}.{Shift up} 
     1087    else 
     1088      send {blind}. 
     1089  else if (Ebene = 2) 
     1090    SendUnicodeChar(0x2026)  ; ellipse 
     1091  else if (Ebene = 3) 
     1092    send {blind}' 
     1093  else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B3) 
     1094                  or CheckDeadUni("c5",0x2083))) 
     1095    Send {blind}{NumPad3} 
     1096  else if (Ebene = 5) 
     1097    SendUnicodeChar(0x03D1) ; theta symbol (vartheta) 
     1098  else if (Ebene = 6) 
     1099    SendUnicodeChar(0x0398)  ; Theta 
     1100return 
     1101 
     1102 
     1103neo_j: 
     1104  EbeneAktualisieren() 
     1105  if (Ebene12 and !(CheckDeadUni12("c1",0x0135,0x0134) 
     1106            or CheckDeadUni12("c2",0x01F0,"") 
     1107            or CheckCompUni12("i",0x0133,"")       ; ij 
     1108            or CheckCompUni12("I","",0x0132)       ; IJ 
     1109            or CheckCompUni12("l",0x01C9,"")       ; lj 
     1110            or CheckCompUni12("L",0x01C8,0x01C7)    ; Lj/LJ 
     1111            or CheckCompUni12("n",0x01CC,"")       ; nj 
     1112            or CheckCompUni12("N",0x01CB,0x01CA)))   ; Nj/NJ 
     1113    OutputChar("j","J") 
     1114  else if (Ebene = 3) 
     1115    send {blind}`; 
     1116  else if (Ebene = 4) 
     1117    Send {blind}`; 
     1118  else if (Ebene = 5) 
     1119    SendUnicodeChar(0x03B8) ; theta 
     1120  else if (Ebene = 6) 
     1121    SendUnicodeChar(0x2261) ; identisch 
     1122return 
     1123 
     1124/* 
     1125 
     1126  Numpad 
     1127 
     1128 
     1129  folgende Tasten verhalten sich bei ein- und ausgeschaltetem 
     1130  NumLock gleich: 
     1131*/ 
     1132 
     1133neo_NumpadDiv: 
     1134  EbeneAktualisieren() 
     1135  if ((Ebene = 1) or (Ebene = 2)) 
     1136    send {blind}{NumpadDiv} 
     1137  else if (Ebene = 3) 
     1138    send {blind}� 
     1139  else if ((Ebene = 4) or (Ebene = 5)) 
     1140    SendUnicodeChar(0x2215)  ; slash 
     1141return 
     1142 
     1143neo_NumpadMult: 
     1144  EbeneAktualisieren() 
     1145  if ((Ebene = 1) or (Ebene = 2)) 
     1146    send {blind}{NumpadMult} 
     1147  else if (Ebene = 3) 
     1148    send {blind}� 
     1149  else if ((Ebene = 4) or (Ebene = 5)) 
     1150    SendUnicodeChar(0x22C5)  ; cdot 
     1151return 
     1152 
     1153neo_NumpadSub: 
     1154  EbeneAktualisieren() 
     1155  if (((Ebene = 1) or (Ebene = 2)) and !(CheckDeadUni("c1",0x207B) 
     1156                          or CheckDeadUni("c5",0x208B))) 
     1157    send {blind}{NumpadSub} 
     1158  else if (Ebene = 3) 
     1159    SendUnicodeChar(0x2212) ; echtes minus 
     1160return 
     1161 
     1162neo_NumpadAdd: 
     1163  EbeneAktualisieren() 
     1164  if (((Ebene = 1) or (Ebene = 2)) and !(CheckDeadUni("c1",0x207A) 
     1165                          or CheckDeadUni("c5",0x208A))) 
     1166    send {blind}{NumpadAdd} 
     1167  else if (Ebene = 3) 
     1168    send {blind}� 
     1169  else if ((Ebene = 4) or (Ebene = 5)) 
     1170    SendUnicodeChar(0x2213)  ; -+ 
     1171return 
     1172 
     1173neo_NumpadEnter: 
     1174  EbeneAktualisieren() 
     1175  if ((Ebene = 1) or (Ebene = 2)) 
     1176    send {blind}{NumpadEnter} 
     1177  else if (Ebene = 3) 
     1178    SendUnicodeChar(0x2260) ; neq 
     1179  else if ((Ebene = 4) or (Ebene = 5)) 
     1180    SendUnicodeChar(0x2248) ; approx 
     1181return 
     1182 
     1183/* 
     1184  folgende Tasten verhalten sich bei ein- und ausgeschaltetem NumLock 
     1185  unterschiedlich 
     1186*/ 
     1187 
     1188 
     1189 
     1190neo_Numpad7: 
     1191  EbeneAktualisieren() 
     1192  if    ((Ebene = 1) and (NumLock = 0)) 
     1193    send {blind}{NumpadHome} 
     1194  else if ((Ebene = 2) and (NumLock = 1)) 
     1195    send {blind}{Shift up}{NumpadHome}{Shift down} 
     1196  else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
     1197  { 
     1198    if (Ebene = 1) 
     1199      send {blind}{Numpad7} 
     1200    else 
     1201      send {blind){Shift up}{Numpad7}{Shift down} 
     1202 
     1203    if (PriorDeadKey = "comp") 
     1204      CompKey := "Num_7" 
     1205  } 
     1206  else if (Ebene = 3) 
     1207    SendUnicodeChar(0x2195)  ; Hoch-Runter-Pfeil 
     1208  else if ((Ebene = 4) or (Ebene = 5)) 
     1209    SendUnicodeChar(0x226A)  ; ll 
     1210return 
     1211 
     1212neo_Numpad8: 
     1213  EbeneAktualisieren() 
     1214  if    ((Ebene = 1) and (NumLock = 0)) 
     1215    send {blind}{NumpadUp} 
     1216  else if ((Ebene = 2) and (NumLock = 1)) 
     1217    send {blind}{Shift up}{NumpadUp}{Shift down} 
     1218  else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
     1219  { 
     1220    if !(CheckCompUni("Num_1",0x215B) ; 1/8 
     1221      or CheckCompUni("1",0x215B)    ; 1/8 
     1222      or CheckCompUni("Num_3",0x215C) ; 3/8 
     1223      or CheckCompUni("3",0x215C)    ; 3/8 
     1224      or CheckCompUni("Num_5",0x215D) ; 3/8 
     1225      or CheckCompUni("5",0x215D)    ; 5/8 
     1226      or CheckCompUni("Num_7",0x215E) ; 7/8 
     1227      or CheckCompUni("7",0x215E))   ; 7/8 
     1228      if (Ebene = 1) 
     1229        send {blind}{Numpad8} 
    10531230      else 
    1054          send {blind}, 
    1055    else if (Ebene = 2) 
    1056        SendUnicodeChar(0x22EE) ;  vertikale ellipse  
    1057    else if (Ebene = 3) 
    1058       send {blind}" 
    1059    else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B2) 
    1060                            or CheckDeadUni("c5",0x2082))) 
    1061       Send {blind}{NumPad2} 
    1062    else if (Ebene = 5) 
    1063       SendUnicodeChar(0x03C1) ; rho 
    1064    else if (Ebene = 6) 
    1065       SendUnicodeChar(0x21D0) ; Doppelpfeil links 
    1066 return 
    1067  
    1068 neo_punkt: 
    1069    EbeneAktualisieren() 
    1070    if (Ebene = 1) 
    1071       if (GetKeyState("CapsLock","T"))  
    1072          send {blind}{Shift down}.{Shift up} 
     1231        send {blind){Shift up}{Numpad8}{Shift down} 
     1232 
     1233    if (PriorDeadKey = "comp") 
     1234      CompKey := "Num_8" 
     1235  } 
     1236  else if (Ebene = 3) 
     1237    SendUnicodeChar(0x2191)    ; uparrow 
     1238  else if ((Ebene = 4) or (Ebene = 5)) 
     1239    SendUnicodeChar(0x2229)   ; intersection 
     1240return 
     1241 
     1242neo_Numpad9: 
     1243  EbeneAktualisieren() 
     1244  if    ((Ebene = 1) and (NumLock = 0)) 
     1245    send {blind}{NumpadPgUp} 
     1246  else if ((Ebene = 2) and (NumLock = 1)) 
     1247    send {blind}{Shift up}{NumpadPgUp}{Shift down} 
     1248  else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
     1249  { 
     1250    if (Ebene = 1) 
     1251      send {blind}{Numpad9} 
     1252    else 
     1253      send {blind){Shift up}{Numpad9}{Shift down} 
     1254 
     1255    if (PriorDeadKey = "comp") 
     1256      CompKey := "Num_9" 
     1257  } 
     1258  else if (Ebene = 3) 
     1259    SendUnicodeChar(0x2297) ; Tensorprodukt ; Vektor in die Ebene zeigend 
     1260  else if ((Ebene = 4) or (Ebene = 5)) 
     1261    SendUnicodeChar(0x226B)  ; gg 
     1262return 
     1263 
     1264 
     1265 
     1266neo_Numpad4: 
     1267  EbeneAktualisieren() 
     1268  if    ((Ebene = 1) and (NumLock = 0)) 
     1269    send {blind}{NumpadLeft} 
     1270  else if ((Ebene = 2) and (NumLock = 1)) 
     1271    send {blind}{Shift up}{NumpadLeft}{Shift down} 
     1272  else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
     1273  { 
     1274    if !(CheckCompUni("Num_1",0x00BC) ; 1/4 
     1275      or CheckCompUni("1",0x00BE)    ; 1/4 
     1276      or CheckCompUni("Num_3",0x00BE) ; 3/4 
     1277      or CheckCompUni("3",0x00BE))   ; 3/4 
     1278      if (Ebene = 1) 
     1279        send {blind}{Numpad4} 
    10731280      else 
    1074          send {blind}. 
    1075    else if (Ebene = 2) 
    1076       SendUnicodeChar(0x2026)  ; ellipse 
    1077    else if (Ebene = 3) 
    1078       send {blind}' 
    1079    else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B3) 
    1080                            or CheckDeadUni("c5",0x2083))) 
    1081       Send {blind}{NumPad3} 
    1082    else if (Ebene = 5) 
    1083       SendUnicodeChar(0x03D1) ; theta symbol (vartheta) 
    1084    else if (Ebene = 6) 
    1085       SendUnicodeChar(0x0398)  ; Theta 
    1086 return 
    1087  
    1088  
    1089 neo_j: 
    1090    EbeneAktualisieren() 
    1091    if (Ebene12 and !(CheckDeadUni12("c1",0x0135,0x0134) 
    1092                   or CheckDeadUni12("c2",0x01F0,"") 
    1093                   or CheckCompUni12("i",0x0133,"")          ; ij 
    1094                   or CheckCompUni12("I","",0x0132)          ; IJ 
    1095                   or CheckCompUni12("l",0x01C9,"")          ; lj 
    1096                   or CheckCompUni12("L",0x01C8,0x01C7)      ; Lj/LJ 
    1097                   or CheckCompUni12("n",0x01CC,"")          ; nj 
    1098                   or CheckCompUni12("N",0x01CB,0x01CA)))    ; Nj/NJ 
    1099       OutputChar("j","J") 
    1100    else if (Ebene = 3) 
    1101       send {blind}`; 
    1102    else if (Ebene = 4) 
    1103       Send {blind}`; 
    1104    else if (Ebene = 5) 
    1105       SendUnicodeChar(0x03B8) ; theta 
    1106    else if (Ebene = 6) 
    1107       SendUnicodeChar(0x2261) ; identisch 
    1108 return 
     1281        send {blind){Shift up}{Numpad4}{Shift down} 
     1282 
     1283    if (PriorDeadKey = "comp") 
     1284      CompKey := "Num_4" 
     1285  } 
     1286  else if (Ebene = 3) 
     1287    SendUnicodeChar(0x2190)    ; leftarrow 
     1288  else if ((Ebene = 4) or (Ebene = 5)) 
     1289    SendUnicodeChar(0x2282)  ; subset of 
     1290return 
     1291 
     1292neo_Numpad5: 
     1293  EbeneAktualisieren() 
     1294  if    ((Ebene = 1) and (NumLock = 0)) 
     1295    send {blind}{NumpadClear} 
     1296  else if ((Ebene = 2) and (NumLock = 1)) 
     1297    send {blind}{Shift up}{NumpadClear}{Shift down} 
     1298  else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
     1299  { 
     1300    if !(CheckCompUni("Num_1",0x2155) ; 1/5 
     1301      or CheckCompUni("1",0x2155)    ; 1/5 
     1302      or CheckCompUni("Num_2",0x2156) ; 2/5 
     1303      or CheckCompUni("2",0x2156)    ; 2/5 
     1304      or CheckCompUni("Num_3",0x2157) ; 3/5 
     1305      or CheckCompUni("3",0x2157)    ; 3/5 
     1306      or CheckCompUni("Num_4",0x2158) ; 4/5 
     1307      or CheckCompUni("4",0x2158))   ; 4/5 
     1308      if (Ebene = 1) 
     1309        send {blind}{Numpad5} 
     1310      else 
     1311        send {blind){Shift up}{Numpad5}{Shift down} 
     1312 
     1313    if (PriorDeadKey = "comp") 
     1314      CompKey := "Num_5" 
     1315  } 
     1316  else if (Ebene = 3) 
     1317    SendUnicodeChar(0x221E) ; INFINITY 
     1318  else if ((Ebene = 4) or (Ebene = 5)) 
     1319    SendUnicodeChar(0x220B) ; enth�lt das Element 
     1320return 
     1321 
     1322neo_Numpad6: 
     1323  EbeneAktualisieren() 
     1324  if    ((Ebene = 1) and (NumLock = 0)) 
     1325    send {blind}{NumpadRight} 
     1326  else if ((Ebene = 2) and (NumLock = 1)) 
     1327    send {blind}{Shift up}{NumpadRight}{Shift down} 
     1328  else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
     1329  { 
     1330    if !(CheckCompUni("Num_1",0x2159) ; 1/6 
     1331      or CheckCompUni("1",0x2159)    ; 1/6 
     1332      or CheckCompUni("Num_5",0x215A) ; 5/6 
     1333      or CheckCompUni("5",0x215A))   ; 5/6 
     1334      if (Ebene = 1) 
     1335        send {blind}{Numpad6} 
     1336      else 
     1337        send {blind){Shift up}{Numpad6}{Shift down} 
     1338 
     1339    if (PriorDeadKey = "comp") 
     1340      CompKey := "Num_6" 
     1341  } 
     1342  else if (Ebene = 3) 
     1343    SendUnicodeChar(0x2192)    ; rightarrow 
     1344  else if ((Ebene = 4) or (Ebene = 5)) 
     1345    SendUnicodeChar(0x2283) ; superset of 
     1346return 
     1347 
     1348neo_Numpad1: 
     1349  EbeneAktualisieren() 
     1350  if    ((Ebene = 1) and (NumLock = 0)) 
     1351    send {blind}{NumpadEnd} 
     1352  else if ((Ebene = 2) and (NumLock = 1)) 
     1353    send {blind}{Shift up}{NumpadEnd}{Shift down} 
     1354  else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
     1355  { 
     1356    if (Ebene = 1) 
     1357      send {blind}{Numpad1} 
     1358    else 
     1359      send {blind){Shift up}{Numpad1}{Shift down} 
     1360 
     1361    if (PriorDeadKey = "comp") 
     1362      CompKey := "Num_1" 
     1363  } 
     1364  else if (Ebene = 3) 
     1365    SendUnicodeChar(0x2194) ; Links-Rechts-Pfeil 
     1366  else if ((Ebene = 4) or (Ebene = 5)) 
     1367    SendUnicodeChar(0x2264)  ; leq 
     1368return 
     1369 
     1370neo_Numpad2: 
     1371  EbeneAktualisieren() 
     1372  if    ((Ebene = 1) and (NumLock = 0)) 
     1373    send {blind}{NumpadDown} 
     1374  else if ((Ebene = 2) and (NumLock = 1)) 
     1375    send {blind}{Shift up}{NumpadDown}{Shift down} 
     1376  else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
     1377  { 
     1378    if !(CheckCompUni("Num_1",0x00BD) ; 1/2 
     1379      or CheckCompUni("1",0x00BD))   ; 1/2 
     1380      if (Ebene = 1) 
     1381        send {blind}{Numpad2} 
     1382      else 
     1383        send {blind){Shift up}{Numpad2}{Shift down} 
     1384 
     1385    if (PriorDeadKey = "comp") 
     1386      CompKey := "Num_2" 
     1387  } 
     1388  else if (Ebene = 3) 
     1389    SendUnicodeChar(0x2193)    ; downarrow 
     1390  else if ((Ebene = 4) or (Ebene = 5)) 
     1391    SendUnicodeChar(0x222A)  ; vereinigt 
     1392return 
     1393 
     1394neo_Numpad3: 
     1395  EbeneAktualisieren() 
     1396  if    ((Ebene = 1) and (NumLock = 0)) 
     1397    send {blind}{NumpadPgDn} 
     1398  else if ((Ebene = 2) and (NumLock = 1)) 
     1399    send {blind}{Shift up}{NumpadPgDn}{Shift down} 
     1400  else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
     1401  { 
     1402    if !(CheckCompUni("Num_1",0x2153) ; 1/3 
     1403      or CheckCompUni("1",0x2154)    ; 1/3 
     1404      or CheckCompUni("Num_2",0x2154) ; 2/3 
     1405      or CheckCompUni("2",0x2154))   ; 2/3 
     1406      if (Ebene = 1) 
     1407        send {blind}{Numpad3} 
     1408      else 
     1409        send {blind){Shift up}{Numpad3}{Shift down} 
     1410 
     1411    if (PriorDeadKey = "comp") 
     1412      CompKey := "Num_3" 
     1413  } 
     1414  else if (Ebene = 3) 
     1415    SendUnicodeChar(0x21CC) ; RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON 
     1416  else if ((Ebene = 4) or (Ebene = 5)) 
     1417    SendUnicodeChar(0x2265)  ; geq 
     1418return 
     1419 
     1420neo_Numpad0: 
     1421  EbeneAktualisieren() 
     1422  if    ((Ebene = 1) and (NumLock = 0)) 
     1423    send {blind}{NumpadIns} 
     1424  else if ((Ebene = 2) and (NumLock = 1)) 
     1425    send {blind}{Shift up}{NumpadIns}{Shift down} 
     1426  else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
     1427  { 
     1428    if (Ebene = 1) 
     1429      send {blind}{Numpad0} 
     1430    else 
     1431      send {blind){Shift up}{Numpad0}{Shift down} 
     1432 
     1433    if (PriorDeadKey = "comp") 
     1434      CompKey := "Num_0" 
     1435  } 
     1436  else if (Ebene = 3) 
     1437    send {blind}`% 
     1438  else if ((Ebene = 4) or (Ebene = 5)) 
     1439    send � 
     1440return 
     1441 
     1442neo_NumpadDot: 
     1443  EbeneAktualisieren() 
     1444  if    ((Ebene = 1) and (NumLock = 0)) 
     1445    send {blind}{NumpadDel} 
     1446  else if ((Ebene = 2) and (NumLock = 1)) 
     1447    send {blind}{Shift up}{NumpadDel}{Shift down} 
     1448  else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
     1449    if (Ebene = 1) 
     1450      send {blind}{NumpadDot} 
     1451    else 
     1452      send {blind){Shift up}{NumpadDot}{Shift down} 
     1453  else if (Ebene = 3) 
     1454    send {blind}. 
     1455  else if ((Ebene = 4) or (Ebene = 5)) 
     1456    send `, 
     1457return 
     1458 
    11091459 
    11101460/* 
    1111    ------------------------------------------------------ 
    1112    Numpad 
    1113    ------------------------------------------------------ 
    1114  
    1115    folgende Tasten verhalten sich bei ein- und ausgeschaltetem 
    1116    NumLock gleich: 
    1117 */ 
    1118  
    1119 neo_NumpadDiv: 
    1120    EbeneAktualisieren() 
    1121    if ((Ebene = 1) or (Ebene = 2)) 
    1122       send {blind}{NumpadDiv} 
    1123    else if (Ebene = 3) 
    1124       send {blind}� 
    1125    else if ((Ebene = 4) or (Ebene = 5)) 
    1126       SendUnicodeChar(0x2215)   ; slash 
    1127 return 
    1128  
    1129 neo_NumpadMult: 
    1130    EbeneAktualisieren() 
    1131    if ((Ebene = 1) or (Ebene = 2)) 
    1132       send {blind}{NumpadMult} 
    1133    else if (Ebene = 3) 
    1134       send {blind}� 
    1135    else if ((Ebene = 4) or (Ebene = 5)) 
    1136       SendUnicodeChar(0x22C5)  ; cdot 
    1137 return 
    1138  
    1139 neo_NumpadSub: 
    1140    EbeneAktualisieren() 
    1141    if (((Ebene = 1) or (Ebene = 2)) and !(CheckDeadUni("c1",0x207B) 
    1142                                        or CheckDeadUni("c5",0x208B))) 
    1143       send {blind}{NumpadSub} 
    1144    else if (Ebene = 3) 
    1145       SendUnicodeChar(0x2212) ; echtes minus 
    1146 return 
    1147  
    1148 neo_NumpadAdd: 
    1149    EbeneAktualisieren() 
    1150    if (((Ebene = 1) or (Ebene = 2)) and !(CheckDeadUni("c1",0x207A) 
    1151                                        or CheckDeadUni("c5",0x208A))) 
    1152       send {blind}{NumpadAdd} 
    1153    else if (Ebene = 3) 
    1154       send {blind}� 
    1155    else if ((Ebene = 4) or (Ebene = 5)) 
    1156       SendUnicodeChar(0x2213)   ; -+ 
    1157 return 
    1158  
    1159 neo_NumpadEnter: 
    1160    EbeneAktualisieren() 
    1161    if ((Ebene = 1) or (Ebene = 2)) 
    1162       send {blind}{NumpadEnter}       
    1163    else if (Ebene = 3) 
    1164       SendUnicodeChar(0x2260) ; neq 
    1165    else if ((Ebene = 4) or (Ebene = 5)) 
    1166       SendUnicodeChar(0x2248) ; approx 
    1167 return 
    1168  
    1169 /* 
    1170    folgende Tasten verhalten sich bei ein- und ausgeschaltetem NumLock 
    1171    unterschiedlich 
    1172 */ 
    1173  
    1174  
    1175  
    1176 neo_Numpad7: 
    1177    EbeneAktualisieren() 
    1178    if      ((Ebene = 1) and (NumLock = 0)) 
    1179       send {blind}{NumpadHome} 
    1180    else if ((Ebene = 2) and (NumLock = 1)) 
    1181       send {blind}{Shift up}{NumpadHome}{Shift down} 
    1182    else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
    1183    { 
    1184       if (Ebene = 1) 
    1185          send {blind}{Numpad7} 
    1186       else 
    1187          send {blind){Shift up}{Numpad7}{Shift down} 
    1188  
    1189       if (PriorDeadKey = "comp") 
    1190          CompKey := "Num_7" 
    1191    } 
    1192    else if (Ebene = 3) 
    1193       SendUnicodeChar(0x2195)   ; Hoch-Runter-Pfeil 
    1194    else if ((Ebene = 4) or (Ebene = 5)) 
    1195       SendUnicodeChar(0x226A)  ; ll 
    1196 return 
    1197  
    1198 neo_Numpad8: 
    1199    EbeneAktualisieren() 
    1200    if      ((Ebene = 1) and (NumLock = 0)) 
    1201       send {blind}{NumpadUp} 
    1202    else if ((Ebene = 2) and (NumLock = 1)) 
    1203       send {blind}{Shift up}{NumpadUp}{Shift down} 
    1204    else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
    1205    { 
    1206       if !(CheckCompUni("Num_1",0x215B) ; 1/8 
    1207         or CheckCompUni("1",0x215B)     ; 1/8 
    1208         or CheckCompUni("Num_3",0x215C) ; 3/8 
    1209         or CheckCompUni("3",0x215C)     ; 3/8 
    1210         or CheckCompUni("Num_5",0x215D) ; 3/8 
    1211         or CheckCompUni("5",0x215D)     ; 5/8 
    1212         or CheckCompUni("Num_7",0x215E) ; 7/8 
    1213         or CheckCompUni("7",0x215E))    ; 7/8 
    1214          if (Ebene = 1) 
    1215             send {blind}{Numpad8} 
    1216          else 
    1217             send {blind){Shift up}{Numpad8}{Shift down} 
    1218  
    1219       if (PriorDeadKey = "comp") 
    1220          CompKey := "Num_8" 
    1221    } 
    1222    else if (Ebene = 3) 
    1223       SendUnicodeChar(0x2191)     ; uparrow 
    1224    else if ((Ebene = 4) or (Ebene = 5)) 
    1225       SendUnicodeChar(0x2229)    ; intersection 
    1226 return 
    1227  
    1228 neo_Numpad9: 
    1229    EbeneAktualisieren() 
    1230    if      ((Ebene = 1) and (NumLock = 0)) 
    1231       send {blind}{NumpadPgUp} 
    1232    else if ((Ebene = 2) and (NumLock = 1)) 
    1233       send {blind}{Shift up}{NumpadPgUp}{Shift down} 
    1234    else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
    1235    { 
    1236       if (Ebene = 1) 
    1237          send {blind}{Numpad9} 
    1238       else 
    1239          send {blind){Shift up}{Numpad9}{Shift down} 
    1240  
    1241       if (PriorDeadKey = "comp") 
    1242          CompKey := "Num_9" 
    1243    } 
    1244    else if (Ebene = 3) 
    1245       SendUnicodeChar(0x2297) ; Tensorprodukt ; Vektor in die Ebene zeigend  
    1246    else if ((Ebene = 4) or (Ebene = 5)) 
    1247       SendUnicodeChar(0x226B)  ; gg 
    1248 return 
    1249  
    1250  
    1251  
    1252 neo_Numpad4: 
    1253    EbeneAktualisieren() 
    1254    if      ((Ebene = 1) and (NumLock = 0)) 
    1255       send {blind}{NumpadLeft} 
    1256    else if ((Ebene = 2) and (NumLock = 1)) 
    1257       send {blind}{Shift up}{NumpadLeft}{Shift down} 
    1258    else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
    1259    { 
    1260       if !(CheckCompUni("Num_1",0x00BC) ; 1/4 
    1261         or CheckCompUni("1",0x00BE)     ; 1/4 
    1262         or CheckCompUni("Num_3",0x00BE) ; 3/4 
    1263         or CheckCompUni("3",0x00BE))    ; 3/4 
    1264          if (Ebene = 1) 
    1265             send {blind}{Numpad4} 
    1266          else 
    1267             send {blind){Shift up}{Numpad4}{Shift down} 
    1268  
    1269       if (PriorDeadKey = "comp") 
    1270          CompKey := "Num_4" 
    1271    } 
    1272    else if (Ebene = 3) 
    1273       SendUnicodeChar(0x2190)     ; leftarrow 
    1274    else if ((Ebene = 4) or (Ebene = 5)) 
    1275       SendUnicodeChar(0x2282)  ; subset of 
    1276 return 
    1277  
    1278 neo_Numpad5: 
    1279    EbeneAktualisieren() 
    1280    if      ((Ebene = 1) and (NumLock = 0)) 
    1281       send {blind}{NumpadClear} 
    1282    else if ((Ebene = 2) and (NumLock = 1)) 
    1283       send {blind}{Shift up}{NumpadClear}{Shift down} 
    1284    else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
    1285    { 
    1286       if !(CheckCompUni("Num_1",0x2155) ; 1/5 
    1287         or CheckCompUni("1",0x2155)     ; 1/5 
    1288         or CheckCompUni("Num_2",0x2156) ; 2/5 
    1289         or CheckCompUni("2",0x2156)     ; 2/5 
    1290         or CheckCompUni("Num_3",0x2157) ; 3/5 
    1291         or CheckCompUni("3",0x2157)     ; 3/5 
    1292         or CheckCompUni("Num_4",0x2158) ; 4/5 
    1293         or CheckCompUni("4",0x2158))    ; 4/5 
    1294          if (Ebene = 1) 
    1295             send {blind}{Numpad5} 
    1296          else 
    1297             send {blind){Shift up}{Numpad5}{Shift down} 
    1298  
    1299       if (PriorDeadKey = "comp") 
    1300          CompKey := "Num_5" 
    1301    } 
    1302    else if (Ebene = 3) 
    1303       SendUnicodeChar(0x221E) ; INFINITY 
    1304    else if ((Ebene = 4) or (Ebene = 5)) 
    1305       SendUnicodeChar(0x220B) ; enth�lt das Element 
    1306 return 
    1307  
    1308 neo_Numpad6: 
    1309    EbeneAktualisieren() 
    1310    if      ((Ebene = 1) and (NumLock = 0)) 
    1311       send {blind}{NumpadRight} 
    1312    else if ((Ebene = 2) and (NumLock = 1)) 
    1313       send {blind}{Shift up}{NumpadRight}{Shift down} 
    1314    else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
    1315    { 
    1316       if !(CheckCompUni("Num_1",0x2159) ; 1/6 
    1317         or CheckCompUni("1",0x2159)     ; 1/6 
    1318         or CheckCompUni("Num_5",0x215A) ; 5/6 
    1319         or CheckCompUni("5",0x215A))    ; 5/6 
    1320          if (Ebene = 1) 
    1321             send {blind}{Numpad6} 
    1322          else 
    1323             send {blind){Shift up}{Numpad6}{Shift down} 
    1324  
    1325       if (PriorDeadKey = "comp") 
    1326          CompKey := "Num_6" 
    1327    } 
    1328    else if (Ebene = 3) 
    1329       SendUnicodeChar(0x2192)     ; rightarrow 
    1330    else if ((Ebene = 4) or (Ebene = 5)) 
    1331       SendUnicodeChar(0x2283) ; superset of 
    1332 return 
    1333  
    1334 neo_Numpad1: 
    1335    EbeneAktualisieren() 
    1336    if      ((Ebene = 1) and (NumLock = 0)) 
    1337       send {blind}{NumpadEnd} 
    1338    else if ((Ebene = 2) and (NumLock = 1)) 
    1339       send {blind}{Shift up}{NumpadEnd}{Shift down} 
    1340    else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
    1341    { 
    1342       if (Ebene = 1) 
    1343          send {blind}{Numpad1} 
    1344       else 
    1345          send {blind){Shift up}{Numpad1}{Shift down} 
    1346  
    1347       if (PriorDeadKey = "comp") 
    1348          CompKey := "Num_1" 
    1349    } 
    1350    else if (Ebene = 3) 
    1351       SendUnicodeChar(0x2194) ; Links-Rechts-Pfeil 
    1352    else if ((Ebene = 4) or (Ebene = 5)) 
    1353       SendUnicodeChar(0x2264)   ; leq 
    1354 return 
    1355  
    1356 neo_Numpad2: 
    1357    EbeneAktualisieren() 
    1358    if      ((Ebene = 1) and (NumLock = 0)) 
    1359       send {blind}{NumpadDown} 
    1360    else if ((Ebene = 2) and (NumLock = 1)) 
    1361       send {blind}{Shift up}{NumpadDown}{Shift down} 
    1362    else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
    1363    { 
    1364       if !(CheckCompUni("Num_1",0x00BD) ; 1/2 
    1365         or CheckCompUni("1",0x00BD))    ; 1/2 
    1366          if (Ebene = 1) 
    1367             send {blind}{Numpad2} 
    1368          else 
    1369             send {blind){Shift up}{Numpad2}{Shift down} 
    1370  
    1371       if (PriorDeadKey = "comp") 
    1372          CompKey := "Num_2" 
    1373    } 
    1374    else if (Ebene = 3) 
    1375       SendUnicodeChar(0x2193)     ; downarrow 
    1376    else if ((Ebene = 4) or (Ebene = 5)) 
    1377       SendUnicodeChar(0x222A)  ; vereinigt 
    1378 return 
    1379  
    1380 neo_Numpad3: 
    1381    EbeneAktualisieren() 
    1382    if      ((Ebene = 1) and (NumLock = 0)) 
    1383       send {blind}{NumpadPgDn} 
    1384    else if ((Ebene = 2) and (NumLock = 1)) 
    1385       send {blind}{Shift up}{NumpadPgDn}{Shift down} 
    1386    else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
    1387    { 
    1388       if !(CheckCompUni("Num_1",0x2153) ; 1/3 
    1389         or CheckCompUni("1",0x2154)     ; 1/3 
    1390         or CheckCompUni("Num_2",0x2154) ; 2/3 
    1391         or CheckCompUni("2",0x2154))    ; 2/3 
    1392          if (Ebene = 1) 
    1393             send {blind}{Numpad3} 
    1394          else 
    1395             send {blind){Shift up}{Numpad3}{Shift down} 
    1396  
    1397       if (PriorDeadKey = "comp") 
    1398          CompKey := "Num_3" 
    1399    } 
    1400    else if (Ebene = 3) 
    1401       SendUnicodeChar(0x21CC) ; RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON 
    1402    else if ((Ebene = 4) or (Ebene = 5)) 
    1403       SendUnicodeChar(0x2265)  ; geq 
    1404 return 
    1405  
    1406 neo_Numpad0: 
    1407    EbeneAktualisieren() 
    1408    if      ((Ebene = 1) and (NumLock = 0)) 
    1409       send {blind}{NumpadIns} 
    1410    else if ((Ebene = 2) and (NumLock = 1)) 
    1411       send {blind}{Shift up}{NumpadIns}{Shift down} 
    1412    else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
    1413    { 
    1414       if (Ebene = 1) 
    1415          send {blind}{Numpad0} 
    1416       else 
    1417          send {blind){Shift up}{Numpad0}{Shift down} 
    1418  
    1419       if (PriorDeadKey = "comp") 
    1420          CompKey := "Num_0" 
    1421    } 
    1422    else if (Ebene = 3) 
    1423       send {blind}`% 
    1424    else if ((Ebene = 4) or (Ebene = 5)) 
    1425       send �  
    1426 return 
    1427  
    1428 neo_NumpadDot: 
    1429    EbeneAktualisieren() 
    1430    if      ((Ebene = 1) and (NumLock = 0)) 
    1431       send {blind}{NumpadDel} 
    1432    else if ((Ebene = 2) and (NumLock = 1)) 
    1433       send {blind}{Shift up}{NumpadDel}{Shift down} 
    1434    else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
    1435       if (Ebene = 1) 
    1436          send {blind}{NumpadDot} 
    1437       else 
    1438          send {blind){Shift up}{NumpadDot}{Shift down} 
    1439    else if (Ebene = 3) 
    1440       send {blind}. 
    1441    else if ((Ebene = 4) or (Ebene = 5)) 
    1442       send `, 
    1443 return 
    1444  
    1445  
    1446 /* 
    1447    ------------------------------------------------------ 
    1448    Sondertasten 
    1449    ------------------------------------------------------ 
     1461 
     1462  Sondertasten 
     1463 
    14501464*/ 
    14511465*space:: 
    1452    if ((einHandNeo)) 
    1453     spacepressed := 1 
    1454    else 
    1455     goto neo_SpaceUp 
     1466  if ((einHandNeo)) 
     1467   spacepressed := 1 
     1468  else 
     1469   goto neo_SpaceUp 
    14561470return 
    14571471 
    14581472*space up:: 
    1459    if ((einHandNeo)) 
    1460    { 
    1461      if ((keypressed)) 
    1462      { 
    1463        keypressed := 0 
    1464        spacepressed := 0     
    1465      } 
    1466      else 
    1467      { 
    1468         goto neo_SpaceUp 
    1469      } 
    1470    } 
    1471    else 
    1472      { } ;do nothing 
    1473 return  
     1473  if ((einHandNeo)) 
     1474  { 
     1475    if ((keypressed)) 
     1476    { 
     1477     keypressed := 0 
     1478     spacepressed := 0 
     1479    } 
     1480    else 
     1481    { 
     1482      goto neo_SpaceUp 
     1483    } 
     1484  } 
     1485  else 
     1486    { } ;do nothing 
     1487return 
    14741488 
    14751489neo_SpaceUp: 
    1476      EbeneAktualisieren() 
    1477      if      ((Ebene = 1) and !(CheckComp3Uni("r_1",0x2170)          ; r�misch i 
    1478                              or CheckComp3Uni("R_1",0x2160)))      ; r�misch I  
    1479         Send {blind}{Space} 
    1480      else if  ((Ebene = 2) or (Ebene = 3)) 
    1481         Send {blind}{Space} 
    1482      else if (Ebene = 4) 
    1483         if (PriorDeadKey = "c1")            ; circumflex 
    1484            BSSendUnicodeChar(0x2070) 
    1485         else if (PriorDeadKey = "c5")       ; toter - 
    1486            BSSendUnicodeChar(0x2080) 
    1487         else 
    1488            Send {blind}{NumPad0} 
    1489      else if (Ebene = 5) 
    1490         SendUnicodeChar(0x00A0)   ; gesch�tztes Leerzeichen 
    1491      else if (Ebene = 6) 
    1492         SendUnicodeChar(0x202F) ; schmales Leerzeichen 
    1493      DeadKey := ""   CompKey := "" 
    1494   spacepressed := 0      
    1495   keypressed := 0        
     1490    EbeneAktualisieren() 
     1491    if ((Ebene = 1) and !(CheckComp3Uni("r_1",0x2170)       ; r�misch i 
     1492                    or CheckComp3Uni("R_1",0x2160)))    ; r�misch I 
     1493      Send {blind}{Space} 
     1494    else if  ((Ebene = 2) or (Ebene = 3)) 
     1495      Send {blind}{Space} 
     1496    else if (Ebene = 4 and !(CheckDeadUni("c1",0x2070) 
     1497                       or CheckDeadUni("c5",0x2080))) 
     1498      Send {blind}{NumPad0} 
     1499    else if (Ebene = 5) 
     1500      SendUnicodeChar(0x00A0)  ; gesch�tztes Leerzeichen 
     1501    else if (Ebene = 6) 
     1502      SendUnicodeChar(0x202F) ; schmales Leerzeichen 
     1503    DeadKey := ""  CompKey := "" 
     1504  spacepressed := 0 
     1505  keypressed := 0 
    14961506return 
    14971507 
    14981508/* 
    1499    Folgende Tasten sind nur aufgef�hrt, um PriorDeadKey zu leeren. 
    1500    Irgendwie sieht das noch nicht sch�n aus. Vielleicht l�sst sich dieses 
    1501    Problem irgendwie eleganter l�sen... 
    1502     
    1503    Nachtrag: 
    1504    Weil es mit Alt+Tab Probleme gab, wird hier jetzt erstmal rumgeflickschustert, 
    1505    bis eine allgemeinere L�sung gefunden wurde. 
     1509  Folgende Tasten sind nur aufgef�hrt, um PriorDeadKey zu leeren. 
     1510  Irgendwie sieht das noch nicht sch�n aus. Vielleicht l�sst sich dieses 
     1511  Problem irgendwie eleganter l�sen... 
     1512 
     1513  Nachtrag: 
     1514  Weil es mit Alt+Tab Probleme gab, wird hier jetzt erstmal rumgeflickschustert, 
     1515  bis eine allgemeinere L�sung gefunden wurde. 
    15061516*/ 
    15071517 
    15081518*Enter:: 
    1509    if (not(lernModus) or lernModus_std_Return) 
    1510    { 
    1511      send {Blind}{Enter} 
    1512      DeadKey := ""   CompKey := "" 
    1513    } 
     1519  if (not(lernModus) or lernModus_std_Return) 
     1520  { 
     1521    send {Blind}{Enter} 
     1522    DeadKey := ""  CompKey := "" 
     1523  } 
    15141524return 
    15151525 
    15161526*Backspace:: 
    1517    if (not(lernModus) or lernModus_std_Backspace) 
    1518    { 
    1519      send {Blind}{Backspace} 
    1520      DeadKey := ""   CompKey := "" 
    1521    } 
     1527  if (not(lernModus) or lernModus_std_Backspace) 
     1528  { 
     1529    send {Blind}{Backspace} 
     1530    DeadKey := ""  CompKey := "" 
     1531  } 
    15221532return 
    15231533 
    15241534*Del:: 
    1525    if (not(lernModus) or lernModus_std_Entf) 
    1526      send {Blind}{Del} 
     1535  if (not(lernModus) or lernModus_std_Entf) 
     1536    send {Blind}{Del} 
    15271537return 
    15281538 
    15291539*Ins:: 
    1530    if (not(lernModus) or lernModus_std_Einf) 
    1531      send {Blind}{Ins} 
    1532 return 
    1533  
    1534  
    1535  
     1540  if (not(lernModus) or lernModus_std_Einf) 
     1541    send {Blind}{Ins} 
     1542return 
    15361543 
    15371544 
     
    15411548 
    15421549neo_tab: 
    1543    if (IsMod3Pressed()) ;# 
    1544    { 
    1545       #Include *i %a_scriptdir%\ComposeLaunch.ahk 
    1546       #Include *i %a_scriptdir%\Source\ComposeLaunch.ahk 
    1547       DeadKey := "comp" 
    1548       CompKey := "" 
    1549    } 
    1550    else 
    1551    { 
    1552       send {blind}{Tab} 
    1553       DeadKey := "" 
    1554       CompKey := "" 
    1555    } 
     1550  if (IsMod3Pressed()) ;# 
     1551  { 
     1552    DeadKey := "comp" 
     1553    CompKey := "" 
     1554  } 
     1555  else 
     1556  { 
     1557    send {blind}{Tab} 
     1558    DeadKey := "" 
     1559    CompKey := "" 
     1560  } 
    15561561return 
    15571562 
    15581563*Home:: 
    1559    if (not(lernModus) or lernModus_std_Pos1) 
    1560    { 
    1561      send {Blind}{Home} 
    1562      DeadKey := ""   CompKey := "" 
    1563    } 
     1564  if (not(lernModus) or lernModus_std_Pos1) 
     1565  { 
     1566    send {Blind}{Home} 
     1567    DeadKey := ""  CompKey := "" 
     1568  } 
    15641569return 
    15651570 
    15661571*End:: 
    1567    if (not(lernModus) or lernModus_std_Ende) 
    1568    { 
    1569      send {Blind}{End} 
    1570      DeadKey := ""   CompKey := "" 
    1571    } 
     1572  if (not(lernModus) or lernModus_std_Ende) 
     1573  { 
     1574    send {Blind}{End} 
     1575    DeadKey := ""  CompKey := "" 
     1576  } 
    15721577return 
    15731578 
    15741579*PgUp:: 
    1575    if (not(lernModus) or lernModus_std_PgUp) 
    1576    { 
    1577      send {Blind}{PgUp} 
    1578      DeadKey := ""   CompKey := "" 
    1579    } 
     1580  if (not(lernModus) or lernModus_std_PgUp) 
     1581  { 
     1582    send {Blind}{PgUp} 
     1583    DeadKey := ""  CompKey := "" 
     1584  } 
    15801585return 
    15811586 
    15821587*PgDn:: 
    1583    if (not(lernModus) or lernModus_std_PgDn) 
    1584    { 
    1585      send {Blind}{PgDn} 
    1586      DeadKey := ""   CompKey := "" 
    1587    } 
     1588  if (not(lernModus) or lernModus_std_PgDn) 
     1589  { 
     1590    send {Blind}{PgDn} 
     1591    DeadKey := ""  CompKey := "" 
     1592  } 
    15881593return 
    15891594 
    15901595*Up:: 
    1591    if (not(lernModus) or lernModus_std_Hoch) 
    1592    { 
    1593      send {Blind}{Up} 
    1594      DeadKey := ""   CompKey := "" 
    1595    } 
     1596  if (not(lernModus) or lernModus_std_Hoch) 
     1597  { 
     1598    send {Blind}{Up} 
     1599    DeadKey := ""  CompKey := "" 
     1600  } 
    15961601return 
    15971602 
    15981603*Down:: 
    1599    if (not(lernModus) or lernModus_std_Runter) 
    1600    { 
    1601      send {Blind}{Down} 
    1602      DeadKey := ""   CompKey := "" 
    1603    } 
     1604  if (not(lernModus) or lernModus_std_Runter) 
     1605  { 
     1606    send {Blind}{Down} 
     1607    DeadKey := ""  CompKey := "" 
     1608  } 
    16041609return 
    16051610 
    16061611*Left:: 
    1607    if (not(lernModus) or lernModus_std_Links) 
    1608    { 
    1609      send {Blind}{Left} 
    1610      DeadKey := ""   CompKey := "" 
    1611    } 
     1612  if (not(lernModus) or lernModus_std_Links) 
     1613  { 
     1614    send {Blind}{Left} 
     1615    DeadKey := ""  CompKey := "" 
     1616  } 
    16121617return 
    16131618 
    16141619*Right:: 
    1615    if (not(lernModus) or lernModus_std_Rechts) 
    1616    { 
    1617      send {Blind}{Right} 
    1618      DeadKey := ""   CompKey := "" 
    1619    } 
    1620 return 
    1621  
    1622  
    1623  
    1624  
    1625  
     1620  if (not(lernModus) or lernModus_std_Rechts) 
     1621  { 
     1622    send {Blind}{Right} 
     1623    DeadKey := ""  CompKey := "" 
     1624  } 
     1625return 
     1626 
     1627 
     1628 
     1629 
     1630 
  • windows/autohotkey/Source/Methods-Layers.ahk

    r740 r746  
    2323; *VKA0SC02A:: 
    2424   if (GetKeyState("VKA1SC136", "P") and GetKeyState("VKA0SC02A", "P")) 
    25       send {blind}{capslock} 
     25      send {blind}{CapsLock} 
    2626return 
    2727 
  • windows/autohotkey/Source/Methods-Other.ahk

    r740 r746  
    11/* 
    2    ------------------------------------------------------ 
    3    Funktionen 
    4    ------------------------------------------------------ 
     2  Funktionen 
    53*/ 
    64 
     
    2018   CompKey := "" 
    2119   Ebene12 := 0 
     20   Ebene7 := 0 
     21   Ebene8 := 0 
    2222   Modstate := IsShiftPressed() . IsMod3Pressed() . IsMod4Pressed() 
    2323 
     
    4141         Ebene = 6                 ; Ebene 6: Mod3+Mod4 
    4242     else if (Modstate = "101") 
     43     { 
    4344         Ebene = 4                 ; Ebene 7: Shift+Mod4 impliziert Ebene 4 
     45         Ebene7 = 1 
     46     } 
    4447     else if (Modstate = "111") 
     48     { 
    4549         Ebene = 6                 ; Ebene 8: Shift+Mod3+Mod4 impliziert Ebene 6 
     50         Ebene8 = 1 
     51     } 
    4652 
    4753   Ebene12 := ((Ebene = 1) or (Ebene = 2)) 
     
    5258     NumLock = 0 
    5359} 
    54  
    5560 
    5661 
     
    150155} 
    151156 
    152 DeadSilence = 0 
    153  
    154157deadAsc(val) 
    155158{ 
     
    256259    return 0 
    257260} 
    258  
    259 DeadCompose = 0 
    260261 
    261262compAsc(val) 
     
    418419} 
    419420 
    420 ;Tote/Untote Tasten 
    421 *F9:: 
    422   if (isMod4pressed()) 
    423     DeadSilence :=  not(DeadSilence) 
    424   else 
    425     send {blind}{F9} 
    426 return 
    427  
    428 ;Tote/Untote Compose 
    429 *F10:: 
    430   if (isMod4pressed()) 
    431     DeadCompose :=  not(DeadCompose) 
    432   else 
    433     send {blind}{F10} 
    434 return 
    435  
    436 ;Lang-s-Tastatur: 
    437 *F11:: 
    438   if (isMod4pressed()) 
    439     LangSTastatur := not(LangSTastatur) ; schaltet die Lang-s-Tastatur ein und aus 
    440   else 
    441     send {blind}{F11} 
    442 return 
    443  
    444  
     421 
  • windows/autohotkey/Source/Warning.ahk

    r709 r746  
    3232******************************************* 
    3333Das war die letzte WARNUNG, ich hoffe nur dass 
    34 sie wirklich wissen was sie hier tun wollen ... 
     34Sie wirklich wissen was Sie hier tun wollen ... 
    3535******************************************* 
    3636*/ 
  • windows/autohotkey/neo20.ahk

    r744 r746  
    3232******************************************* 
    3333Das war die letzte WARNUNG, ich hoffe nur dass 
    34 sie wirklich wissen was sie hier tun wollen ... 
     34Sie wirklich wissen was Sie hier tun wollen ... 
    3535******************************************* 
    3636*/ 
    3737 
    3838 
    39 /* 
     39/************************************ 
     40* NEO 2.0 (beta) AutoHotkey-Treiber * 
    4041************************************* 
    41 * NEO 2.0 (beta) Autohotkey-Treiber * 
    42 ************************************* 
     42 
    4343Autoren: 
    4444Stefan Mayer <stm (at) neo-layout. o r g> 
    45 Nora Geissler <nora_geissler (at) yahoo. d e> 
     45Nora Geiler <nora_geissler (at) yahoo. d e> 
    4646Matthias Berg <neo (at) matthias-berg. e u> 
    4747Martin Roppelt <m.p.roppelt (at) web. d e> 
    4848Dennis Heidsiek <HeidsiekB (at) aol. c o m> 
    49 Matthias W�chter <matthias (at) waechter.. w i z .. a t> 
     49Matthias W�chter <matthias (at) waechter.wiz. a t> 
    5050... 
    51  
    52  
    5351 
    5452********* 
    5553* TODO: * 
    5654********* 
    57 - Die Bildschirmtastatur mit Mod4 hat den Mod4-Lock deaktiviert! 
    5855- Compose vollst�ndig implementieren (Welche Methode ist hierzu am besten geeignet?) 
    5956- ausgiebig testen... (besonders Vollst�ndigkeit bei Deadkeys) 
     
    6259- Die Ebenen vom Tastenblock an die neue Referenz anpassen (wenn da ein Konsens gefunden wurde) 
    6360 
    64  
    6561********** 
    6662* IDEEN: * 
    6763********** 
    68 - Tastatur-Reset: mod4+escape (oder ev. ein anderer Hotkey) soll die Tastatur wieder in den Normalzustand versetzen (d.h. alle Ebenen unlocken und Einhand, Lang-s oder Sonstwelche-Modi deaktivieren) 
    69 - Die Varianten (lernModus, einHandNeo, Lang-s-Tastatur, Qwertz/pausieren) sollten einheitlich (de-)aktiviert werden, etwa �ber Mod4 F9-F12 
    70 - bei Ebene 4 rechte Hand (Numpad) z.B. Numpad5 statt 5 senden 
    71  
    72  
     64- Die Varianten (lernModus, einHandNeo, Lang-s-Tastatur, Qwertz/pausieren) sollten einheitlich (de-)aktiviert werden, etwa �ber M4+F9-F12 
    7365 
    7466****************** 
     
    7668****************** 
    7769 
     70Revision 746 (von Martin Roppelt) 
     71- Zur�cksetzen der Tastatur �ber M4+Esc 
     72- #(2L) sendet nicht mehr ' 
     73- Variablen Ebene7 und Ebene8 zum Abfragen eingef�hrt 
     74- s(12)(2L)-Bug von Matthias W�chter behoben 
    7875Revision 744 (von Stefan Mayer) 
    7976- Ebene4-Ziffernblock: auf neo_d nun Komma (wie Referenz), "NumPadKomma" gibt es nicht 
    80 Revision 743 (von Matthias W�chter, commited von Stefan Mayer) 
     77Revision 743 (von Matthias W�chter, commit durch Stefan Mayer) 
    8178- Ebene4-Ziffernblock: NumPadAdd und NumPadSub korrigiert 
    82 Revision 740 (von Matthias W�chter, commited von HCW) 
     79Revision 740 (von Matthias W�chter, commit durch HCW) 
    8380- "Mega-Patch" (Skript verk�rzt, Ebenenabfrage ver�ndert, ...), siehe CHANGES.txt 
     81- Blinde tote Tasten auf M4+F9 (Toggle) 
     82- Blinde Compose auf M4+F10 (Toggle) 
    8483Revision 728 (von Dennis Heidsiek): 
    85 - Ist die Datei [...]\Anwendungsdaten\NEO2\NEO2.ini vorhanden, werden dort eventuell vonhandene Werte f�r die Globalen Schalter beim Start �bernommen 
     84- Ist die Datei %APPDATA%\NEO2\NEO2.ini vorhanden, werden dort eventuell vorhandene Werte f�r die Globalen Schalter beim Start �bernommen 
     85- �LangSTastaturStandardm��igEingeschaltet.ahk� wird nicht mehr unterst�tzt, weil sonst immer neu kompiliert werden muss 
    8686Revision 707 (von Dennis Heidsiek): 
    87 - Die Resourcen-Dateien (PNGs, ICOs) werden nun nach "Von Windows vorgegebenes TEMP Verzeichnis\NEO2\ extrahiert und nicht mehr in das Verzeichnis, in dem sich die EXE befindet 
     87- Die Resourcen-Dateien (PNGs, ICOs) werden nun nach "Von Windows vorgegebenes TEMP Verzeichnis"\NEO2\ extrahiert und nicht mehr in das Verzeichnis, in dem sich die EXE befindet 
    8888- Die doppelten franz�sischen Anf�hrungszeichen werden nun ebenfalls �ber SendUnicodeChar gesendet 
    8989Revision 694 (von Martin Roppelt): 
    90 - LangSTastatur auf F11 (Ebene 4) 
     90- LangSTastatur auf M4+F11 
    9191- Entwickler k�nnen durch das Erstellen einer Datei �LangSTastaturStandardm��igEingeschaltet.ahk� mit dem Inhalt �LangSTastatur := 1� diese standardm��ig aktivieren 
    9292- Mehrere DeadKeys aktualisiert (T*, Ebene 4 und T*, Ebene 5) 
     
    9595- (An/Aus) Icons an Favicon der neuen Homepage angepasst 
    9696Revision 645 (von Martin Roppelt): 
    97 - Ellipse zus�tzlich auf M3+x;  
     97- Ellipse zus�tzlich auf M3+x 
    9898- Lang-s-Tastatur probeweise auf M4+Esc 
    9999Revision 640 (von Dennis Heidsiek): 
     
    102102- Lang-s-Tastatur kann nicht mehr durch einen Hotkey aktiviert werden 
    103103Revision 629 (von Martin Roppelt): 
    104 - Spitze Klammern (bra und ket) testweise auf M5+8/9 
     104- Spitze Klammern (bra und ket) auf M5+8/9 
    105105Revision 624 (von Martin Roppelt): 
    106106- Lang-s-Tastatur (ein- und auszuschalten durch Mod4+�) 
    107107Revision 616 (von Dennis Heidsiek): 
    108 - Der nicht funktionierende Mod5-Lock-Fix wurde wieder entfernt, da er sogar neue Fehler produzierte. 
     108- Der nicht funktionierende Mod5-Lock-Fix wurde wieder entfernt, da er sogar neue Fehler produzierte 
    109109Revision 615 (von Dennis Heidsiek): 
    110 - Erfolgloser Versuch, den Mod4-Lock wiederherzustellen (durch eine Tilde vor den Scancodes der Bildschirmtastatur). 
    111 - Rechtschreibfehler korrigiert. 
    112 - Zwei AHK-Links eingef�gt. 
     110- Erfolgloser Versuch, den Mod4-Lock wiederherzustellen (durch eine Tilde vor den Scancodes der Bildschirmtastatur) 
     111- Rechtschreibfehler korrigiert 
     112- Zwei AHK-Links eingef�gt 
    113113Revision 609 (von Dennis Heidsiek): 
    114 - Vorl�ufiger Abschluss der AHK-Modularisierung. 
    115 - Bessere Testm�glichkeit �All.ahk� f�r AHK-Entwickler hinzugef�gt, bei der sich die Zeilenangaben in Fehlermeldungen auf die tats�chlichen Module und nicht auf das gro�e �vereinigte� Skript beziehen. 
     114- Vorl�ufiger Abschluss der AHK-Modularisierung 
     115- Bessere Testm�glichkeit �All.ahk� f�r AHK-Entwickler hinzugef�gt, bei der sich die Zeilenangaben in Fehlermeldungen auf die tats�chlichen Module und nicht auf das gro�e �vereinigte� Skript beziehen 
    116116Revision 608 (von Martin Roppelt): 
    117 - Rechtschreibfehler korrigiert und Dateinamen aktualisiert und sortiert. 
     117- Rechtschreibfehler korrigiert und Dateinamen aktualisiert und sortiert 
    118118Revision 590 (von Dennis Heidsiek): 
    119 - Erste technische Vorarbeiten zur logischen Modularisierung des viel zu lange gewordenen AHK-Quellcodes. 
     119- Erste technische Vorarbeiten zur logischen Modularisierung des viel zu lange gewordenen AHK-Quellcodes 
    120120- Neue Batch-Datei Build-Update.bat zur einfachen Aktualisierung der EXE-Datei 
    121121Revision 583 (von Dennis Heidsiek): 
    122 - Kleinere Korrekturen (Mod3+Numpad5, Mod5+Numpad5 und Mod3+Numpad9 stimmen wieder mit der Referenz �berein). 
     122- Kleinere Korrekturen (M3+NP5, M5+NP5 und M3+NP9 stimmen wieder mit der Referenz �berein) 
    123123Revision 580 (von Matthias Berg): 
    124124- Bildschirmtastatur jetzt mit Mod4+F* statt Strg+F*, dies deaktiviert jedoch leider den Mod4-Lock 
     
    127127Revision 568 (von Matthias Berg): 
    128128- Sonderzeichen, Umlaute, z und y durch ScanCodes ersetzt 
    129   * jetzt wird auch bei eingestelltem US Layout Neo verwendet. (z.B. f�r Chinesische InputMethodEditors) 
    130   * rechter Mod3 geht noch nicht bei US Layout (weder ScanCode noch "\") 
     129  * jetzt wird auch bei eingestelltem US Layout Neo verwendet (z.B. f�r Chinesische InputMethodEditors) 
     130  * rechter Mod3 geht noch nicht bei US-Layout (weder ScanCode noch "\") 
    131131Revision 567 (von Dennis Heidsiek): 
    132 - Aktivierter Mod4 Lock wird jetzt �ber die Rollen-LED des Keybord angezeigt (analog zu CapsLock), die NUM-LED beh�lt ihr bisheriges Verhalten 
     132- Aktivierter Mod4-Lock wird jetzt �ber die Rollen-LED des Keybord angezeigt (analog zu CapsLock), die Num-LED beh�lt ihr bisheriges Verhalten 
    133133- Neue Option im Skript: UseMod4Light 
    134134Revision 561 (von Matthias Berg): 
    135 - Ebene 4 Tab verh�lt sich jetzt wie das andere Tab dank "goto neo_tab" 
     135- M4+Tab verh�lt sich jetzt wie das andere Tab dank "goto neo_tab" 
    136136Revision 560 (von Dennis Heidsiek): 
    137137- Neue Option im Skript: bildschirmTastaturEinbinden bindet die PNG-Bilder der Bildschirmtastur mit in die exe-Datei ein, so dass sich der Benutzer nur eine Datei herunterladen muss 
     
    148148  * im Skript konfigurierbar 
    149149  * Schaltet z.B. Qwertz Tasten aus, die es auf der 4. Ebene gibt (Return, Backspace,...) 
    150   * Kann auch Backspace und/oder Entfernen der 4. Ebene ausschalten (gut zum Lernen richtig zu schreiben) 
     150  * Kann auch Backspace und/oder Entfernen der 4. Ebene ausschalten (gut zum Lernen, richtig zu schreiben) 
    151151- Bug aufgetaucht: Icons werden nicht mehr angezeigt 
    152152Revision 544 (von Stefan Mayer): 
     
    158158- nurEbenenFuenfUndSechs umbenannt in ahkTreiberKombi und auf Ebene 4 statt 5 und 6 ge�ndert 
    159159Revision 540 (von Matthias Berg): 
    160 - stark �berarbeitet um Wartbarkeit zu erh�hen und Redundanz zu veringern 
     160- stark �berarbeitet um Wartbarkeit zu erh�hen und Redundanz zu verringern 
    161161- nurEbenenFuenfUndSechs sollte nun auch auf Neo Treiber statt Qwertz laufen 
    162162  * aber es muss noch jemand testen 
    163163  * Problem: was kann man abfangen, wenn eine tote Taste gedr�ckt wird 
    164164- einHandNeo: 
    165   * An-/Ausschalten mit STRG+Punkt 
     165  * An-/Ausschalten mit Strg+Punkt 
    166166  * Buchstaben der rechten Hand werden mit Space zur linken Hand 
    167167  * Nebeneffekt: es gibt beim Festhalten von Space keine wiederholten Leerzeichen mehr 
    168168Revision 532 (von Matthias Berg): 
    169169- BildschirmTastatur  
    170   * aktiviert mit strg+F1 bis 7 schaltet Keyboard ein oder aus 
    171   * strg+F7 zeigt die zuletzt angezeigte Ebene an (und wieder aus). 
    172   * strg+F8 schaltet AlwaysOnTop um     
     170  * aktiviert mit Strg+F1 bis 7, schaltet Keyboard ein oder aus 
     171  * Strg+F7 zeigt die zuletzt angezeigte Ebene an (und wieder aus) 
     172  * Strg+F8 schaltet AlwaysOnTop um     
    173173Revision 529 (von Stefan Mayer): 
    174174- Icon wird automatisch geladen, falls .ico-Dateien im selbem Ordner 
    175 - in der .exe sind die .ico mitgespeichert und werden geladen 
     175- In der .exe sind die .ico mitgespeichert und werden geladen 
    176176Revision 528 (von Matthias Berg): 
    177177- Neo-Icon 
     
    179179  (siehe globale Schalter) 
    180180- Mod3-Lock (nur wenn rechtes Mod3 zuerst gedr�ckt wird, andere L�sung f�hrte zum Caps-Bug) 
    181 - Mod4-Lock (nur wenn das linke Mod4 zuerst gedr�ckt wird, andere L�sung f�hte zum AltGr-Bug) 
     181- Mod4-Lock (nur wenn das linke Mod4 zuerst gedr�ckt wird, andere L�sung f�hrte zum AltGr-Bug) 
    182182- Ein paar falsche Zeichen korrigiert 
    183183Revision 527 (von Matthias Berg): 
    184 - AltGr Problem hoffentlich behoben 
    185 - Umschalt+Mod4 Bug behoben 
     184- AltGr-Problem hoffentlich behoben 
     185- Umschalt+Mod4-Bug behoben 
    186186Revision 526 (von Matthias Berg): 
    187187- Ebenen 1 bis 4 ausschalten per Umschalter siehe erste Codezeile nurEbenenFuenfUndSechs = 0 
     
    200200- vertikale Ellipse eingebaut 
    201201- Umschalt+Umschalt f�r Capslock statt Mod3+Mod3 
    202 - bei Suspend wird jetzt wirklich togglesuspend aufgerufen (auch beim aktivieren per shift+pause) 
     202- bei Suspend wird jetzt wirklich togglesuspend aufgerufen (auch beim Aktivieren per shift+pause) 
    203203Revsion 490 (von Stefan Mayer):  
    204204- SUBSCRIPT von 0 bis 9 sowie (auf Ziffernblock) + und - 
     
    210210  � r�mische Zahlen 
    211211  � Ligaturen und Copyright 
    212  
    213  
    214  
    215212*/ 
    216213 
    217214 
    218215 
    219  
    220  
    221 /******************** 
    222  Verzeichnisse      * 
    223 ********************* 
     216/**************** 
     217* Verzeichnisse * 
     218***************** 
    224219*/ 
    225220; Setzt den Pfad zu einem tempor�ren Verzeichnis 
     
    235230 
    236231 
    237 /****************** 
    238  Globale Schalter * 
    239 ******************* 
     232/******************* 
     233* Globale Schalter * 
     234******************** 
    240235*/ 
    241236 
     
    243238; Syntaxhinweis: IniRead, Variable, InputFilename, Section, Key [, DefaultValue] 
    244239 
    245  
    246240; Sollen die Bilder f�r die Bildschirmtastatur in die compilierte EXE-Datei miteingebunden werden? (Nachteil: gr�ssere Dateigr�sse, Vorteil: Referenz f�r Anf�nger stets einfach verf�gbar) 
    247241bildschirmTastaturEinbinden := 1 
     
    256250IniRead, lernModus, %ApplicationFolder%\NEO2.ini, Global, lernModus, 0 
    257251 
    258 ; Aktivierter Mod4-Lock wird �ber die Rollen-LED des Keybord angezeigt (analog zu CapsLock) 
     252; Soll aktivierter Mod4-Lock �ber die Rollen-LED des Keybord angezeigt werden (analog zu CapsLock)? 
    259253IniRead, UseMod4Light, %ApplicationFolder%\NEO2.ini, Global, UseMod4Light, 1 
    260254 
    261 ; Soll Lang-s auf s, s auf � und � auf Mod3+� gelegt (bzw. vertauscht) werden? 
     255; Soll Lang-s auf s, s auf � und � auf Lang-s gelegt (bzw. vertauscht) werden? 
    262256IniRead, LangSTastatur, %ApplicationFolder%\NEO2.ini, Global, LangSTastatur, 0 
    263257 
    264  
    265  
    266 /************************* 
    267  Recourcen-Verwaltung    * 
    268 ************************** 
     258; Sollen tote Tasten blind angezeigt werden? 
     259IniRead, DeadCompose, %ApplicationFolder%\NEO2.ini, Global, DeadCompose, 0 
     260 
     261;Sollen Compose-Tasten blind angezeigt werden? 
     262IniRead, DeadSilence, %ApplicationFolder%\NEO2.ini, Global, DeadSilence, 0 
     263 
     264 
     265/*********************** 
     266* Recourcen-Verwaltung * 
     267************************ 
    269268*/ 
    270269 
    271  
    272270if(FileExist("ResourceFolder") <> false) { 
    273         ; Versuche, alle m�glicherweise in die EXE eingebundenen Dateien zu extrahieren  
    274         FileInstall, neo.ico, %ResourceFolder%\neo.ico, 1 
    275         FileInstall, neo_disabled.ico, %ResourceFolder%\neo_disabled.ico, 1 
    276         iconBenutzen = 1 
    277         if (bildschirmTastaturEinbinden==1) { 
    278                 FileInstall, ebene1.png, %ResourceFolder%\ebene1.png, 1 
    279                 FileInstall, ebene2.png, %ResourceFolder%\ebene2.png, 1 
    280                 FileInstall, ebene3.png, %ResourceFolder%\ebene3.png, 1 
    281                 FileInstall, ebene4.png, %ResourceFolder%\ebene4.png, 1 
    282                 FileInstall, ebene5.png, %ResourceFolder%\ebene5.png, 1 
    283                 FileInstall, ebene6.png, %ResourceFolder%\ebene6.png, 1 
    284                 zeigeBildschirmTastatur = 1 
    285         } 
     271  ; Versuche, alle m�glicherweise in die EXE eingebundenen Dateien zu extrahieren  
     272  FileInstall, neo.ico, %ResourceFolder%\neo.ico, 1 
     273  FileInstall, neo_disabled.ico, %ResourceFolder%\neo_disabled.ico, 1 
     274  iconBenutzen = 1 
     275  if (bildschirmTastaturEinbinden==1) { 
     276    FileInstall, ebene1.png, %ResourceFolder%\ebene1.png, 1 
     277    FileInstall, ebene2.png, %ResourceFolder%\ebene2.png, 1 
     278    FileInstall, ebene3.png, %ResourceFolder%\ebene3.png, 1 
     279    FileInstall, ebene4.png, %ResourceFolder%\ebene4.png, 1 
     280    FileInstall, ebene5.png, %ResourceFolder%\ebene5.png, 1 
     281    FileInstall, ebene6.png, %ResourceFolder%\ebene6.png, 1 
     282    zeigeBildschirmTastatur = 1 
     283  } 
    286284} else { 
    287         MsgBox, "Das Verzeichnis %ResourceFolder% konnte nicht angelegt werden!" ; Diese Zeile dient nur der eventuellen Fehlersuche und sollte eigentlich niemals auftauchen. 
     285  MsgBox, "Das Verzeichnis %ResourceFolder% konnte nicht angelegt werden!" ; Diese Zeile dient nur der eventuellen Fehlersuche und sollte eigentlich niemals auftauchen. 
    288286} 
    289287 
     
    295293 
    296294 
    297 /************************* 
    298  lernModus Konfiguration * 
    299  nur relevant wenn       * 
    300  lernModus = 1           * 
    301  Strg+Komma schaltet um  * 
    302 ************************** 
     295/************************** 
     296* lernModus Konfiguration * 
     297* nur relevant wenn       * 
     298* lernModus = 1           * 
     299* Strg+Komma schaltet um  * 
     300*************************** 
    303301*/ 
    304302; 0 = aus, 1 = an 
    305  
    306303 
    307304; die Nachfolgenden sind n�tzlich um sich die Qwertz-Tasten abzugew�hnen, da alle auf der 4. Ebene vorhanden. 
     
    320317lernModus_std_ZahlenReihe = 0 
    321318 
    322  
    323  
    324319; im folgenden kann man auch noch ein paar Tasten der 4. Ebene deaktivieren 
    325320; n�tzlich um sich zu zwingen, richtig zu schreiben 
     
    327322lernModus_neo_Entf = 1 
    328323 
    329  
    330    
    331  
    332 ; aus Noras script kopiert: 
    333  
     324; aus Noras Skript kopiert: 
    334325Process,Priority,,High 
    335  
    336326#usehook on 
    337327#singleinstance force 
     
    339329  ; Quelltext kann einger�ckt werden,  
    340330  ; msgbox ist trotzdem linksb�ndig 
    341  
    342331SetTitleMatchMode 2 
    343332SendMode Input   
    344  
    345333name    = Neo 2.0 
    346334enable  = Aktiviere %name% 
     
    357345if inputlocale <> 00000407 
    358346{ 
    359    suspend    
    360    regread, inputlocale, HKEY_LOCAL_MACHINE 
    361      , SYSTEM\CurrentControlSet\Control\Keyboard Layouts\%inputlocale% 
    362      , Layout Text 
    363    msgbox, 48, Warnung!,  
    364      ( 
    365      Nicht kompatibles Tastaturlayout:    
    366      `t%inputlocale%    
    367      `nDas deutsche QWERTZ muss als Standardlayout eingestellt   
    368      sein, damit %name% wie erwartet funktioniert.    
    369      `n�ndern Sie die Tastatureinstellung unter  
    370      `tSystemsteuerung    
    371      `t-> Regions- und Sprachoptionen    
    372      `t-> Sprachen  
    373      `t-> Details...   `n 
    374      ) 
    375    exitapp 
     347  suspend    
     348  regread, inputlocale, HKEY_LOCAL_MACHINE 
     349    , SYSTEM\CurrentControlSet\Control\Keyboard Layouts\%inputlocale% 
     350    , Layout Text 
     351  msgbox, 48, Warnung!,  
     352    ( 
     353    Nicht kompatibles Tastaturlayout:    
     354    `t%inputlocale%    
     355    `nDas deutsche QWERTZ muss als Standardlayout eingestellt   
     356    sein, damit %name% wie erwartet funktioniert.    
     357    `n�ndern Sie die Tastatureinstellung unter  
     358    `tSystemsteuerung    
     359    `t-> Regions- und Sprachoptionen    
     360    `t-> Sprachen  
     361    `t-> Details...   `n 
     362    ) 
     363  exitapp 
    376364} 
    377  
    378365 
    379366 
     
    382369 
    383370if (iconBenutzen) 
    384    menu, tray, icon, %ResourceFolder%\neo.ico,,1 
     371  menu, tray, icon, %ResourceFolder%\neo.ico,,1 
    385372menu, tray, nostandard 
    386373menu, tray, add, �ffnen, open 
    387    menu, helpmenu, add, About, about 
    388    menu, helpmenu, add, Autohotkey-Hilfe, help 
    389    menu, helpmenu, add 
    390    menu, helpmenu, add, http://&autohotkey.com/, autohotkey 
    391    menu, helpmenu, add, http://www.neo-layout.org/, neo 
     374  menu, helpmenu, add, About, about 
     375  menu, helpmenu, add, Autohotkey-Hilfe, help 
     376  menu, helpmenu, add 
     377  menu, helpmenu, add, http://&autohotkey.com/, autohotkey 
     378  menu, helpmenu, add, http://www.neo-layout.org/, neo 
    392379menu, tray, add, Hilfe, :helpmenu 
    393380menu, tray, add 
     
    404391 
    405392/* 
    406    Variablen initialisieren 
     393  Variablen initialisieren 
    407394*/ 
    408395 
     
    412399PriorCompKey = "" 
    413400Ebene12 = 0 
     401 
    414402EbeneAktualisieren() 
    415403 
    416404 
    417   
    418  
    419  
    420405/* 
    421    EinHandNeo 
     406  EinHandNeo 
    422407*/ 
    423408spacepressed := 0 
     
    456441 
    457442 
    458  
    459  
     443;Blinde/Sichtbare Tote Tasten 
     444*F9:: 
     445  if (isMod4pressed()) 
     446    DeadSilence :=  not(DeadSilence) 
     447  else 
     448    send {blind}{F9} 
     449return 
     450 
     451;Blinde/Sichtbare Compose 
     452*F10:: 
     453  if (isMod4pressed()) 
     454    DeadCompose :=  not(DeadCompose) 
     455  else 
     456    send {blind}{F10} 
     457return 
     458 
     459;Lang-s-Tastatur: 
     460*F11:: 
     461  if (isMod4pressed()) 
     462    LangSTastatur := not(LangSTastatur) ; schaltet die Lang-s-Tastatur ein und aus 
     463  else 
     464    send {blind}{F11} 
     465return 
     466 
     467*Esc:: 
     468  if (isMod4pressed()) 
     469    reload 
     470  else 
     471    send {blind}{Esc} 
     472return 
    460473/* 
    461474   ------------------------------------------------------ 
     
    482495; *VKA0SC02A:: 
    483496   if (GetKeyState("VKA1SC136", "P") and GetKeyState("VKA0SC02A", "P")) 
    484       send {blind}{capslock} 
     497      send {blind}{CapsLock} 
    485498return 
    486499 
     
    10341047Die eigentliche NEO-Belegung und der Hauptteil des AHK-Treibers. 
    10351048 
    1036  
    1037    Ablauf bei toten Tasten: 
    1038    1. Ebene Aktualisieren 
    1039    2. Abh�ngig von der Variablen "Ebene" Zeichen ausgeben und die Variable "PriorDeadKey" setzen 
    1040     
    1041    Ablauf bei "untoten" Tasten: 
    1042    1. Ebene Aktualisieren 
    1043    2. Abh�ngig von den Variablen "Ebene" und "PriorDeadKey" Zeichen ausgeben 
    1044    3. "PriorDeadKey" mit leerem String �berschreiben 
    1045  
    1046    ------------------------------------------------------ 
    1047    Reihe 1 
    1048    ------------------------------------------------------ 
     1049  Ablauf bei toten Tasten: 
     1050  1. Ebene Aktualisieren 
     1051  2. Abh�ngig von der Variablen "Ebene" Zeichen ausgeben und die Variable "PriorDeadKey" setzen 
     1052 
     1053  Ablauf bei "untoten" Tasten: 
     1054  1. Ebene Aktualisieren 
     1055  2. Abh�ngig von den Variablen "Ebene" und "PriorDeadKey" Zeichen ausgeben 
     1056  3. "PriorDeadKey" mit leerem String �berschreiben 
     1057 
     1058  Reihe 1 
    10491059*/ 
    10501060 
    10511061 
    10521062neo_tot1: 
    1053    EbeneAktualisieren() 
    1054    if (Ebene = 1) 
    1055    { 
    1056       deadUni(0x02C6) ; circumflex, tot 
    1057       DeadKey := "c1" 
    1058    } 
    1059    else if (Ebene = 2) 
    1060    { 
    1061       deadUni(0x02C7) ; caron, tot 
    1062       DeadKey := "c2" 
    1063    } 
    1064    else if (Ebene = 3) 
    1065    { 
    1066       deadUni(0x02D8) ; brevis 
    1067       DeadKey := "c3" 
    1068    } 
    1069    else if (Ebene = 4) 
    1070    { 
    1071       deadUni(0x00B7) ; Mittenpunkt, tot 
    1072       DeadKey := "c4" 
    1073    } 
    1074    else if (Ebene = 5) 
    1075    { 
    1076       deadAsc("-")                 ; querstrich, tot 
    1077       DeadKey := "c5" 
    1078    } 
    1079    else if (Ebene = 6) 
    1080    { 
    1081       deadAsc(".")                 ; punkt darunter (colon) 
    1082       DeadKey := "c6" 
    1083    } 
    1084    CompKey := PriorCompKey 
     1063  EbeneAktualisieren() 
     1064  if (Ebene = 1) 
     1065  { 
     1066    deadUni(0x02C6) ; Zirkumflex, tot 
     1067    DeadKey := "c1" 
     1068  } 
     1069  else if (Ebene = 2) 
     1070  { 
     1071    deadUni(0x02C7) ; Caron, tot 
     1072    DeadKey := "c2" 
     1073  } 
     1074  else if (Ebene = 3) 
     1075  { 
     1076    deadUni(0x02D8) ; Brevis, tot 
     1077    DeadKey := "c3" 
     1078  } 
     1079  else if (Ebene = 4) 
     1080  { 
     1081    deadUni(0x00B7) ; Mittenpunkt, tot 
     1082    DeadKey := "c4" 
     1083  } 
     1084  else if (Ebene = 5) 
     1085  { 
     1086    deadAsc("-")    ; Querstrich, tot 
     1087    DeadKey := "c5" 
     1088  } 
     1089  else if (Ebene = 6) 
     1090  { 
     1091    deadAsc(".")    ; Punkt drunter (Colon), tot 
     1092    DeadKey := "c6" 
     1093  } 
     1094  CompKey := PriorCompKey 
    10851095return 
    10861096 
    10871097neo_1: 
    1088    EbeneAktualisieren() 
    1089    if (Ebene = 1) 
    1090    { 
    1091       if !(CheckDeadUni("c1",0x00B9) 
    1092         or CheckDeadUni("c5",0x2081) 
    1093         or CheckComp3Uni("r_1",0x217A)       ; r�misch xi 
    1094         or CheckComp3Uni("R_1",0x216A))      ; r�misch XI 
    1095          if (GetKeyState("CapsLock","T"))  
    1096             send {blind}{Shift down}1{Shift up} 
    1097          else if (not(lernModus) or lernModus_std_ZahlenReihe) 
    1098             send {blind}1 
     1098  EbeneAktualisieren() 
     1099  if (Ebene = 1) 
     1100  { 
     1101    if !(CheckDeadUni("c1",0x00B9) 
     1102      or CheckDeadUni("c5",0x2081) 
     1103      or CheckComp3Uni("r_1",0x217A)     ; r�misch xi 
     1104      or CheckComp3Uni("R_1",0x216A))    ; r�misch XI 
     1105      if (GetKeyState("CapsLock","T")) 
     1106        send {blind}{Shift down}1{Shift up} 
     1107      else if (not(lernModus) or lernModus_std_ZahlenReihe) 
     1108        send {blind}1 
    10991109 
    11001110      if      (PriorDeadKey = "comp") 
     
    11181128 
    11191129neo_2: 
    1120    EbeneAktualisieren() 
    1121    if (Ebene = 1) 
    1122    { 
    1123       if !(CheckDeadUni("c1",0x00B2) 
    1124         or CheckDeadUni("c5",0x2082) 
    1125         or CheckCompUni("r",0x2171)      ; r�misch ii 
    1126         or CheckCompUni("R",0x2161)      ; r�misch II 
    1127         or CheckComp3Uni("r_1",0x217B)   ; r�misch xii 
    1128         or CheckComp3Uni("R_1",0x216B))  ; r�misch XII 
    1129          if (GetKeyState("CapsLock","T"))  
    1130             send {blind}{Shift down}2{Shift up} 
    1131          else if (not(lernModus) or lernModus_std_ZahlenReihe) 
    1132             send {blind}2 
    1133  
    1134       if (PriorDeadKey = "comp") 
    1135          CompKey := "2" 
    1136    } 
    1137    else if (Ebene = 2) 
    1138       SendUnicodeChar(0x2116) ; numero 
     1130  EbeneAktualisieren() 
     1131  if (Ebene = 1) 
     1132  { 
     1133    if !(CheckDeadUni("c1",0x00B2) 
     1134      or CheckDeadUni("c5",0x2082) 
     1135      or CheckCompUni("r",0x2171)      ; r�misch ii 
     1136      or CheckCompUni("R",0x2161)      ; r�misch II 
     1137      or CheckComp3Uni("r_1",0x217B)   ; r�misch xii 
     1138      or CheckComp3Uni("R_1",0x216B))  ; r�misch XII 
     1139      if (GetKeyState("CapsLock","T")) 
     1140        send {blind}{Shift down}2{Shift up} 
     1141      else if (not(lernModus) or lernModus_std_ZahlenReihe) 
     1142        send {blind}2 
     1143 
     1144    if (PriorDeadKey = "comp") 
     1145      CompKey := "2" 
     1146  } 
     1147  else if (Ebene = 2) 
     1148    SendUnicodeChar(0x2116) ; numero 
     1149  else if (Ebene = 3) 
     1150    SendUnicodeChar(0x00B2) ; 2 Hochgestellte 
     1151  else if (Ebene = 4) 
     1152    SendUnicodeChar(0x2023) ; aufzaehlungspfeil 
     1153  else if (Ebene = 5) 
     1154    SendUnicodeChar(0x26A5) ; Piktogramm Zwitter 
     1155  else if (Ebene = 6) 
     1156    SendUnicodeChar(0x2228) ; Logisches Oder 
     1157return 
     1158 
     1159neo_3: 
     1160  EbeneAktualisieren() 
     1161  if (Ebene = 1) 
     1162  { 
     1163    if !(CheckDeadUni("c1",0x00B3) 
     1164      or CheckDeadUni("c5",0x2083) 
     1165      or CheckCompUni("1",0x2153)        ; 1/3 
     1166      or CheckCompUni("2",0x2154)        ; 2/3 
     1167      or CheckCompUni("r",0x2172)        ; r�misch iii 
     1168      or CheckCompUni("R",0x2162))       ; r�misch III 
     1169      if (GetKeyState("CapsLock","T")) 
     1170        send {blind}{Shift down}3{Shift up} 
     1171      else if (not(lernModus) or lernModus_std_ZahlenReihe) 
     1172        send {blind}3 
     1173 
     1174    if (PriorDeadKey = "comp") 
     1175      CompKey := "3" 
     1176  } 
     1177  else if (Ebene = 2) 
     1178    send � 
     1179  else if (Ebene = 3) 
     1180    SendUnicodeChar(0x00B3) ; 3 Hochgestellte 
     1181  else if (Ebene = 4) 
     1182  { 
     1183     CompKey := PriorCompKey 
     1184     DeadKey := PriorDeadKey 
     1185  } ; leer 
     1186  else if (Ebene = 5) 
     1187    SendUnicodeChar(0x2642) ; Piktogramm Mann 
     1188  else if (Ebene = 6) 
     1189    SendUnicodeChar(0x2227) ; Logisches Und 
     1190return 
     1191 
     1192neo_4: 
     1193  EbeneAktualisieren() 
     1194  if (Ebene = 1) 
     1195  { 
     1196    if !(CheckDeadUni("c1",0x2074) 
     1197      or CheckDeadUni("c5",0x2084) 
     1198      or CheckCompUni("r",0x2173)    ; r�misch iv 
     1199      or CheckCompUni("R",0x2163))   ; r�misch IV 
     1200      if (GetKeyState("CapsLock","T")) 
     1201        send {blind}{Shift down}4{Shift up} 
     1202      else if (not(lernModus) or lernModus_std_ZahlenReihe) 
     1203        send {blind}4 
     1204 
     1205    if (PriorDeadKey = "comp") 
     1206      CompKey := "4" 
     1207  } 
     1208  else if (Ebene = 2) 
     1209    SendUnicodeChar(0x00BB) ; �, Double guillemot right 
    11391210   else if (Ebene = 3) 
    1140       SendUnicodeChar(0x00B2) ; 2 Hochgestellte 
    1141    else if (Ebene = 4) 
    1142       SendUnicodeChar(0x2023) ; aufzaehlungspfeil 
    1143    else if (Ebene = 5) 
    1144       SendUnicodeChar(0x26A5) ; Piktogramm Zwitter 
    1145    else if (Ebene = 6) 
    1146       SendUnicodeChar(0x2228) ; Logisches Oder 
    1147 return 
    1148  
    1149 neo_3: 
    1150    EbeneAktualisieren() 
    1151    if (Ebene = 1) 
    1152    { 
    1153       if !(CheckDeadUni("c1",0x00B3) 
    1154         or CheckDeadUni("c5",0x2083) 
    1155         or CheckCompUni("1",0x2153)           ; 1/3 
    1156         or CheckCompUni("2",0x2154)           ; 2/3 
    1157         or CheckCompUni("r",0x2172)           ; r�misch iii 
    1158         or CheckCompUni("R",0x2162))          ; r�misch III 
    1159          if (GetKeyState("CapsLock","T"))  
    1160             send {blind}{Shift down}3{Shift up} 
    1161          else if (not(lernModus) or lernModus_std_ZahlenReihe) 
    1162             send {blind}3 
    1163  
    1164       if (PriorDeadKey = "comp") 
    1165          CompKey := "3" 
    1166    } 
    1167    else if (Ebene = 2) 
    1168       send � 
    1169    else if (Ebene = 3) 
    1170       SendUnicodeChar(0x00B3) ; 3 Hochgestellte 
    1171    else if (Ebene = 4) 
    1172    { 
    1173        CompKey := PriorCompKey 
    1174        DeadKey := PriorDeadKey 
    1175    } ; leer 
    1176    else if (Ebene = 5) 
    1177       SendUnicodeChar(0x2642) ; Piktogramm Mann 
    1178    else if (Ebene = 6) 
    1179       SendUnicodeChar(0x2227) ; Logisches Und 
    1180 return 
    1181  
    1182 neo_4: 
    1183    EbeneAktualisieren() 
    1184    if (Ebene = 1) 
    1185    { 
    1186       if !(CheckDeadUni("c1",0x2074) 
    1187         or CheckDeadUni("c5",0x2084) 
    1188         or CheckCompUni("r",0x2173)     ; r�misch iv 
    1189         or CheckCompUni("R",0x2163))    ; r�misch IV 
    1190          if (GetKeyState("CapsLock","T"))  
    1191             send {blind}{Shift down}4{Shift up} 
    1192          else if (not(lernModus) or lernModus_std_ZahlenReihe) 
    1193             send {blind}4 
    1194  
    1195       if (PriorDeadKey = "comp") 
    1196          CompKey := "4" 
    1197    } 
    1198    else if (Ebene = 2) 
    1199       SendUnicodeChar(0x00BB) ; �, Double guillemot right 
    1200     else if (Ebene = 3) 
    1201       Send {blind}� ; Single guillemot right 
    1202    else if (Ebene = 4) 
    1203       Send {blind}{PgUp}    ; Prev 
    1204    else if (Ebene = 5) 
    1205       SendUnicodeChar(0x2113) ; Script small L 
    1206    else if (Ebene = 6) 
    1207       SendUnicodeChar(0x22A5) ; Senkrecht 
     1211    Send {blind}�           ; Single guillemot right 
     1212  else if (Ebene = 4) 
     1213    Send {blind}{PgUp}      ; Prev 
     1214  else if (Ebene = 5) 
     1215    SendUnicodeChar(0x2113) ; Script small L 
     1216  else if (Ebene = 6) 
     1217    SendUnicodeChar(0x22A5) ; Senkrecht 
    12081218return 
    12091219 
    12101220neo_5: 
    1211    EbeneAktualisieren() 
    1212    if (Ebene = 1) 
    1213    { 
    1214       if !(CheckDeadUni("c1",0x2075) 
    1215         or CheckDeadUni("c5",0x2085) 
    1216         or CheckCompUni("1",0x2155)           ; 1/5 
    1217         or CheckCompUni("2",0x2156)           ; 2/5 
    1218         or CheckCompUni("3",0x2157)           ; 3/5 
    1219         or CheckCompUni("4",0x2158)           ; 4/5 
    1220         or CheckCompUni("r",0x2174)           ; r�misch v 
    1221         or CheckCompUni("R",0x2164))          ; r�misch V 
    1222          if (GetKeyState("CapsLock","T"))  
    1223             send {blind}{Shift down}5{Shift up} 
    1224          else if (not(lernModus) or lernModus_std_ZahlenReihe) 
    1225             send {blind}5 
    1226  
    1227       if (PriorDeadKey = "comp") 
    1228          CompKey := "5" 
    1229    } 
    1230    else if (Ebene = 2) 
    1231       SendUnicodeChar(0x00AB) ; �, Double guillemot left 
    1232    else if (Ebene = 3) 
    1233       Send {blind}� ; Single guillemot left 
    1234    else if (Ebene = 4) 
    1235    { 
    1236        CompKey := PriorCompKey 
    1237        DeadKey := PriorDeadKey 
    1238    } ; leer 
    1239    else if (Ebene = 5) 
    1240       SendUnicodeChar(0x2020) ; Kreuz (Dagger) 
    1241    else if (Ebene = 6) 
    1242       SendUnicodeChar(0x2221) ; Winkel 
     1221  EbeneAktualisieren() 
     1222  if (Ebene = 1) 
     1223  { 
     1224    if !(CheckDeadUni("c1",0x2075) 
     1225      or CheckDeadUni("c5",0x2085) 
     1226      or CheckCompUni("1",0x2155)        ; 1/5 
     1227      or CheckCompUni("2",0x2156)        ; 2/5 
     1228      or CheckCompUni("3",0x2157)        ; 3/5 
     1229      or CheckCompUni("4",0x2158)        ; 4/5 
     1230      or CheckCompUni("r",0x2174)        ; r�misch v 
     1231      or CheckCompUni("R",0x2164))       ; r�misch V 
     1232      if (GetKeyState("CapsLock","T")) 
     1233        send {blind}{Shift down}5{Shift up} 
     1234      else if (not(lernModus) or lernModus_std_ZahlenReihe) 
     1235        send {blind}5 
     1236 
     1237    if (PriorDeadKey = "comp") 
     1238      CompKey := "5" 
     1239  } 
     1240  else if (Ebene = 2) 
     1241    SendUnicodeChar(0x00AB) ; Double guillemot left 
     1242  else if (Ebene = 3) 
     1243    Send {blind}�          ; Single guillemot left 
     1244  else if (Ebene = 4) 
     1245  { 
     1246     CompKey := PriorCompKey 
     1247     DeadKey := PriorDeadKey 
     1248  } ; leer 
     1249  else if (Ebene = 5) 
     1250    SendUnicodeChar(0x2020) ; Kreuz (Dagger) 
     1251  else if (Ebene = 6) 
     1252    SendUnicodeChar(0x2221) ; Winkel 
    12431253return 
    12441254 
    12451255neo_6: 
    1246    EbeneAktualisieren() 
    1247    if (Ebene = 1) 
    1248    { 
    1249       if !(CheckDeadUni("c1",0x2076) 
    1250         or CheckDeadUni("c5",0x2086) 
    1251         or CheckCompUni("1",0x2159)           ; 1/6 
    1252         or CheckCompUni("5",0x215A)           ; 5/6 
    1253         or CheckCompUni("r",0x2175)           ; r�misch vi 
    1254         or CheckCompUni("R",0x2165))          ; r�misch VI 
    1255          if (GetKeyState("CapsLock","T"))  
    1256             send {blind}{Shift down}6{Shift up} 
    1257          else if (not(lernModus) or lernModus_std_ZahlenReihe) 
    1258             send {blind}6 
    1259  
    1260       if (PriorDeadKey = "comp") 
    1261          CompKey := "6" 
    1262    } 
    1263    else if (Ebene = 2) 
    1264       send � 
    1265    else if (Ebene = 3) 
    1266       send {blind}� 
    1267    else if (Ebene = 4) 
    1268       send {blind}� 
    1269    else if (Ebene = 5) 
    1270    { 
    1271        CompKey := PriorCompKey 
    1272        DeadKey := PriorDeadKey 
    1273    } ; leer 
    1274    else if (Ebene = 6) 
    1275       SendUnicodeChar(0x2225) ; parallel 
     1256  EbeneAktualisieren() 
     1257  if (Ebene = 1) 
     1258  { 
     1259    if !(CheckDeadUni("c1",0x2076) 
     1260      or CheckDeadUni("c5",0x2086) 
     1261      or CheckCompUni("1",0x2159)        ; 1/6 
     1262      or CheckCompUni("5",0x215A)        ; 5/6 
     1263      or CheckCompUni("r",0x2175)        ; r�misch vi 
     1264      or CheckCompUni("R",0x2165))       ; r�misch VI 
     1265      if (GetKeyState("CapsLock","T")) 
     1266        send {blind}{Shift down}6{Shift up} 
     1267      else if (not(lernModus) or lernModus_std_ZahlenReihe) 
     1268        send {blind}6 
     1269 
     1270    if (PriorDeadKey = "comp") 
     1271      CompKey := "6" 
     1272  } 
     1273  else if (Ebene = 2) 
     1274    send � 
     1275  else if (Ebene = 3) 
     1276    send {blind}� 
     1277  else if (Ebene = 4) 
     1278    send {blind}� 
     1279  else if (Ebene = 5) 
     1280  { 
     1281     CompKey := PriorCompKey 
     1282     DeadKey := PriorDeadKey 
     1283  } ; leer 
     1284  else if (Ebene = 6) 
     1285    SendUnicodeChar(0x2225) ; parallel 
    12761286return 
    12771287 
    12781288neo_7: 
    1279    EbeneAktualisieren() 
    1280    if (Ebene = 1) 
    1281    { 
    1282       if !(CheckDeadUni("c1",0x2077) 
    1283         or CheckDeadUni("c5",0x2087) 
    1284         or CheckCompUni("r",0x2176)     ; r�misch vii 
    1285         or CheckCompUni("R",0x2166))    ; r�misch VII 
    1286          if (GetKeyState("CapsLock","T"))  
    1287             send {blind}{Shift down}7{Shift up} 
    1288          else if (not(lernModus) or lernModus_std_ZahlenReihe) 
    1289             send {blind}7 
    1290  
    1291       if (PriorDeadKey = "comp") 
    1292          CompKey := "7" 
    1293    } 
    1294    else if (Ebene = 2) 
    1295       send $ 
    1296    else if (Ebene = 3) 
    1297       send {blind}� 
    1298    else if (Ebene = 4) 
    1299       send {blind}�  
    1300    else if (Ebene = 5) 
    1301       SendUnicodeChar(0x03BA) ; greek small letter kappa 
    1302    else if (Ebene = 6) 
    1303       SendUnicodeChar(0x2209) ; nicht Element von  
     1289  EbeneAktualisieren() 
     1290  if (Ebene = 1) 
     1291  { 
     1292    if !(CheckDeadUni("c1",0x2077) 
     1293      or CheckDeadUni("c5",0x2087) 
     1294      or CheckCompUni("r",0x2176)    ; r�misch vii 
     1295      or CheckCompUni("R",0x2166))   ; r�misch VII 
     1296      if (GetKeyState("CapsLock","T")) 
     1297        send {blind}{Shift down}7{Shift up} 
     1298      else if (not(lernModus) or lernModus_std_ZahlenReihe) 
     1299        send {blind}7 
     1300 
     1301    if (PriorDeadKey = "comp") 
     1302      CompKey := "7" 
     1303  } 
     1304  else if (Ebene = 2) 
     1305    send $ 
     1306  else if (Ebene = 3) 
     1307    send {blind}� 
     1308  else if (Ebene = 4) 
     1309    send {blind}� 
     1310  else if (Ebene = 5) 
     1311    SendUnicodeChar(0x03BA) ; greek small letter kappa 
     1312  else if (Ebene = 6) 
     1313    SendUnicodeChar(0x2209) ; nicht Element von 
    13041314return 
    13051315 
    13061316neo_8: 
    1307    EbeneAktualisieren() 
    1308    if (Ebene = 1) 
    1309    { 
    1310       if !(CheckDeadUni("c1",0x2078) 
    1311         or CheckDeadUni("c5",0x2088) 
    1312         or CheckCompUni("1",0x215B)           ; 1/8 
    1313         or CheckCompUni("3",0x215C)           ; 3/8 
    1314         or CheckCompUni("5",0x215D)           ; 5/8 
    1315         or CheckCompUni("7",0x215E)           ; 7/8 
    1316         or CheckCompUni("r",0x2177)           ; r�misch viii 
    1317         or CheckCompUni("R",0x2167))          ; r�misch VIII 
    1318          if (GetKeyState("CapsLock","T"))  
    1319             send {blind}{Shift down}8{Shift up} 
    1320          else if (not(lernModus) or lernModus_std_ZahlenReihe) 
    1321             send {blind}8 
    1322  
    1323       if (PriorDeadKey = "comp") 
    1324          CompKey := "8" 
    1325    } 
    1326    else if (Ebene = 2) 
    1327       send � 
    1328    else if (Ebene = 3) 
    1329       send {blind}� 
    1330    else if (Ebene = 4) 
    1331       Send {blind}{NumpadDiv} 
    1332    else if (Ebene = 5) 
    1333       SendUnicodeChar(0x27E8) ;bra (�ffnende spitze klammer) 
    1334    else if (Ebene = 6) 
    1335       SendUnicodeChar(0x2204) ; es existiert nicht 
     1317  EbeneAktualisieren() 
     1318  if (Ebene = 1) 
     1319  { 
     1320    if !(CheckDeadUni("c1",0x2078) 
     1321      or CheckDeadUni("c5",0x2088) 
     1322      or CheckCompUni("1",0x215B)        ; 1/8 
     1323      or CheckCompUni("3",0x215C)        ; 3/8 
     1324      or CheckCompUni("5",0x215D)        ; 5/8 
     1325      or CheckCompUni("7",0x215E)        ; 7/8 
     1326      or CheckCompUni("r",0x2177)        ; r�misch viii 
     1327      or CheckCompUni("R",0x2167))       ; r�misch VIII 
     1328      if (GetKeyState("CapsLock","T")) 
     1329        send {blind}{Shift down}8{Shift up} 
     1330      else if (not(lernModus) or lernModus_std_ZahlenReihe) 
     1331        send {blind}8 
     1332 
     1333    if (PriorDeadKey = "comp") 
     1334      CompKey := "8" 
     1335  } 
     1336  else if (Ebene = 2) 
     1337    send � 
     1338  else if (Ebene = 3) 
     1339    send {blind}� 
     1340  else if (Ebene = 4) 
     1341    Send {blind}{NumpadDiv} 
     1342  else if (Ebene = 5) 
     1343    SendUnicodeChar(0x27E8) ;bra (�ffnende spitze klammer) 
     1344  else if (Ebene = 6) 
     1345    SendUnicodeChar(0x2204) ; es existiert nicht 
    13361346return 
    13371347 
    13381348neo_9: 
    1339    EbeneAktualisieren() 
    1340    if (Ebene = 1) 
    1341    { 
    1342       if !(CheckDeadUni("c1",0x2079) 
    1343         or CheckDeadUni("c5",0x2089) 
    1344         or CheckCompUni("r",0x2178)     ; r�misch ix 
    1345         or CheckCompUni("R",0x2168))    ; r�misch IX 
    1346          if (GetKeyState("CapsLock","T"))  
    1347             send {blind}{Shift down}9{Shift up} 
    1348          else if (not(lernModus) or lernModus_std_ZahlenReihe) 
    1349             send {blind}9 
    1350  
    1351       if (PriorDeadKey = "comp") 
    1352          CompKey := "9" 
    1353    } 
    1354    else if (Ebene = 2) 
    1355       send � 
    1356    else if (Ebene = 3) 
    1357       send {blind}� 
    1358    else if (Ebene = 4) 
    1359       Send {blind}{NumpadMult} 
    1360    else if (Ebene = 5) 
    1361       SendUnicodeChar(0x27E9) ;ket (schlie�ende spitze klammer) 
    1362    else if (Ebene = 6) 
    1363       SendUnicodeChar(0x2226) ; nicht parallel 
     1349  EbeneAktualisieren() 
     1350  if (Ebene = 1) 
     1351  { 
     1352    if !(CheckDeadUni("c1",0x2079) 
     1353      or CheckDeadUni("c5",0x2089) 
     1354      or CheckCompUni("r",0x2178)    ; r�misch ix 
     1355      or CheckCompUni("R",0x2168))   ; r�misch IX 
     1356      if (GetKeyState("CapsLock","T")) 
     1357        send {blind}{Shift down}9{Shift up} 
     1358      else if (not(lernModus) or lernModus_std_ZahlenReihe) 
     1359        send {blind}9 
     1360 
     1361    if (PriorDeadKey = "comp") 
     1362      CompKey := "9" 
     1363  } 
     1364  else if (Ebene = 2) 
     1365    send � 
     1366  else if (Ebene = 3) 
     1367    send {blind}� 
     1368  else if (Ebene = 4) 
     1369    Send {blind}{NumpadMult} 
     1370  else if (Ebene = 5) 
     1371    SendUnicodeChar(0x27E9) ;ket (schlie�ende spitze klammer) 
     1372  else if (Ebene = 6) 
     1373    SendUnicodeChar(0x2226) ; nicht parallel 
    13641374return 
    13651375 
    13661376neo_0: 
    1367    EbeneAktualisieren() 
    1368    if (Ebene = 1) 
    1369    { 
    1370       if !(CheckDeadUni("c1",0x2070) 
    1371         or CheckDeadUni("c5",0x2080) 
    1372         or CheckComp3Uni("r_1",0x2179)     ; r�misch x 
    1373         or CheckComp3Uni("R_1",0x2169))    ; r�misch X 
    1374          if (GetKeyState("CapsLock","T"))  
    1375             send {blind}{Shift down}0{Shift up} 
    1376          else if (not(lernModus) or lernModus_std_ZahlenReihe) 
    1377             send {blind}0 
     1377  EbeneAktualisieren() 
     1378  if (Ebene = 1) 
     1379  { 
     1380    if !(CheckDeadUni("c1",0x2070) 
     1381      or CheckDeadUni("c5",0x2080) 
     1382      or CheckComp3Uni("r_1",0x2179)    ; r�misch x 
     1383      or CheckComp3Uni("R_1",0x2169))   ; r�misch X 
     1384      if (GetKeyState("CapsLock","T")) 
     1385        send {blind}{Shift down}0{Shift up} 
     1386      else if (not(lernModus) or lernModus_std_ZahlenReihe) 
     1387        send {blind}0 
    13781388 
    13791389      if (PriorDeadKey = "comp") 
     
    13961406 
    13971407neo_strich: 
    1398    EbeneAktualisieren() 
    1399    if (Ebene = 1) 
    1400       if (GetKeyState("CapsLock","T"))  
    1401          send {blind}{Shift down}-{Shift up} 
    1402       else 
    1403          send {blind}- ; Bindestrich-Minus 
    1404    else if (Ebene = 2) 
    1405       SendUnicodeChar(0x2013) ; Gedankenstrich 
    1406    else if (Ebene = 3) 
    1407       SendUnicodeChar(0x2014) ; Englischer Gedankenstrich (Geviertstrich) 
    1408    else if (Ebene = 4) 
    1409    { 
     1408  EbeneAktualisieren() 
     1409  if (Ebene = 1) 
     1410    if (GetKeyState("CapsLock","T")) 
     1411      send {blind}{Shift down}-{Shift up} 
     1412    else 
     1413      send {blind}-         ; Bindestrich-Minus 
     1414  else if (Ebene = 2) 
     1415    SendUnicodeChar(0x2013) ; Gedankenstrich 
     1416  else if (Ebene = 3) 
     1417    SendUnicodeChar(0x2014) ; Englischer Gedankenstrich (Geviertstrich) 
     1418  else if (Ebene = 4) 
     1419  { 
     1420     CompKey := PriorCompKey 
     1421     DeadKey := PriorDeadKey 
     1422  } ; leer 
     1423  else if (Ebene = 5) 
     1424    SendUnicodeChar(0x2011) ; gesch�tzter Bindestrich (Bindestrich ohne Zeilenumbruch) 
     1425  else if (Ebene = 6) 
     1426    SendUnicodeChar(0x00AD) ; weicher Bindestrich 
     1427return 
     1428 
     1429neo_tot2: 
     1430  EbeneAktualisieren() 
     1431  if (Ebene = 1) 
     1432  { 
     1433    deadAsc("{�}{space}") ; Akut, tot 
     1434    DeadKey := "a1" 
     1435  } 
     1436  else if (Ebene = 2) 
     1437  { 
     1438    deadAsc("``{space}")  ; Gravis, tot 
     1439    DeadKey := "a2" 
     1440  } 
     1441  else if (Ebene = 3) 
     1442  { 
     1443    deadAsc("�")          ; Cedilla, tot 
     1444    DeadKey := "a3" 
     1445  } 
     1446  else if (Ebene = 4) 
     1447  { 
     1448    deadUni(0x02D9)       ; Punkt obendr�ber 
     1449    DeadKey := "a4" 
     1450  } 
     1451  else if (Ebene = 5) 
     1452  { 
     1453    deadUni(0x02DB)       ; Ogonek 
     1454    DeadKey := "a5" 
     1455  } 
     1456  else if (Ebene = 6) 
     1457  { 
     1458    deadUni(0x02DA)       ; Ring obendrauf 
     1459    DeadKey := "a6" 
     1460  } 
     1461  CompKey := PriorCompKey 
     1462return 
     1463 
     1464 
     1465/* 
     1466 
     1467  Reihe 2 
     1468 
     1469*/ 
     1470 
     1471neo_x: 
     1472  EbeneAktualisieren() 
     1473  if (Ebene12) 
     1474    OutputChar("x","X") 
     1475  else if (Ebene = 3) 
     1476    SendUnicodeChar(0x2026) ;Ellipse 
     1477  else if (Ebene = 5) 
     1478    SendUnicodeChar(0x03BE) ;xi 
     1479  else if (Ebene = 6) 
     1480    SendUnicodeChar(0x039E)  ; Xi 
     1481return 
     1482 
     1483 
     1484neo_v: 
     1485  EbeneAktualisieren() 
     1486  if (Ebene12 and !(CheckDeadUni12("c6",0x1E7F,0x1E7E))) 
     1487    OutputChar("v","V") 
     1488  else if (Ebene = 3) 
     1489    send {blind}_ 
     1490  else if (Ebene = 4) 
     1491    if (not(lernModus) or lernModus_neo_Backspace) 
     1492      Send {blind}{Backspace} 
     1493    else 
     1494    { 
    14101495       CompKey := PriorCompKey 
    14111496       DeadKey := PriorDeadKey 
    1412    } ; leer 
    1413    else if (Ebene = 5) 
    1414       SendUnicodeChar(0x2011) ; gesch�tzter Bindestrich (Bindestrich ohne Zeilenumbruch) 
    1415    else if (Ebene = 6) 
    1416       SendUnicodeChar(0x00AD) ; weicher Bindestrich 
    1417 return 
    1418  
    1419 neo_tot2: 
    1420    EbeneAktualisieren() 
    1421    if (Ebene = 1) 
    1422    { 
    1423       deadAsc("{�}{space}") ; akut, tot 
    1424       DeadKey := "a1" 
    1425    } 
    1426    else if (Ebene = 2) 
    1427    { 
    1428       deadAsc("``{space}") 
    1429       DeadKey := "a2" 
    1430    } 
    1431    else if (Ebene = 3) 
    1432    { 
    1433       deadAsc("�") ; cedilla 
    1434       DeadKey := "a3" 
    1435    } 
    1436    else if (Ebene = 4) 
    1437    { 
    1438       deadUni(0x02D9) ; punkt oben dr�ber 
    1439       DeadKey := "a4" 
    1440    } 
    1441    else if (Ebene = 5) 
    1442    { 
    1443       deadUni(0x02DB) ; ogonek 
    1444       DeadKey := "a5" 
    1445    } 
    1446    else if (Ebene = 6) 
    1447    { 
    1448       deadUni(0x02DA)  ; ring obendrauf 
    1449       DeadKey := "a6" 
    1450    } 
    1451    CompKey := PriorCompKey 
    1452 return 
    1453  
    1454  
    1455 /* 
    1456    ------------------------------------------------------ 
    1457    Reihe 2 
    1458    ------------------------------------------------------ 
    1459 */ 
    1460  
    1461 neo_x: 
    1462    EbeneAktualisieren() 
    1463    if (Ebene12) 
    1464       OutputChar("x","X") 
    1465    else if (Ebene = 3) 
    1466       SendUnicodeChar(0x2026) ;Ellipse 
    1467    else if (Ebene = 5) 
    1468       SendUnicodeChar(0x03BE) ;xi 
    1469    else if (Ebene = 6) 
    1470       SendUnicodeChar(0x039E)  ; Xi 
    1471 return 
    1472  
    1473  
    1474 neo_v: 
    1475    EbeneAktualisieren() 
    1476    if (Ebene12 and !(CheckDeadUni12("c6",0x1E7F,0x1E7E))) 
    1477       OutputChar("v","V") 
    1478    else if (Ebene = 3) 
    1479       send {blind}_ 
    1480    else if (Ebene = 4) 
    1481       if (not(lernModus) or lernModus_neo_Backspace) 
    1482          Send {blind}{Backspace} 
    1483       else 
    1484       { 
    1485           CompKey := PriorCompKey 
    1486           DeadKey := PriorDeadKey 
    1487       } ; leer 
    1488    else if (Ebene = 6) 
    1489       SendUnicodeChar(0x2259) ; estimates 
     1497    } ; leer 
     1498  else if (Ebene = 6) 
     1499    SendUnicodeChar(0x2259) ; estimates 
    14901500return 
    14911501 
     
    14931503 
    14941504neo_l: 
    1495    EbeneAktualisieren() 
    1496    if (Ebene12 and !(CheckDeadUni12("a1",0x013A,0x0139) 
    1497                   or CheckDeadUni12("a3",0x013C,0x013B) 
    1498                   or CheckDeadUni12("c2",0x013E,0x013D) 
    1499                   or CheckDeadUni12("c4",0x0140,0x013F) 
    1500                   or CheckDeadUni12("c6",0x1E37,0x1E36) 
    1501                   or CheckDeadUni12("t4",0x0142,0x0141))) 
    1502       OutputChar("l","L") 
    1503    else if (Ebene = 3) 
    1504       send {blind}[ 
    1505    else if (Ebene = 4) 
    1506       Send {Blind}{Up} 
    1507    else if (Ebene = 5) 
    1508       SendUnicodeChar(0x03BB) ; lambda 
    1509    else if (Ebene = 6) 
    1510       SendUnicodeChar(0x039B) ; Lambda 
     1505  EbeneAktualisieren() 
     1506  if (Ebene12 and !(CheckDeadUni12("a1",0x013A,0x0139) 
     1507            or CheckDeadUni12("a3",0x013C,0x013B) 
     1508            or CheckDeadUni12("c2",0x013E,0x013D) 
     1509            or CheckDeadUni12("c4",0x0140,0x013F) 
     1510            or CheckDeadUni12("c6",0x1E37,0x1E36) 
     1511            or CheckDeadUni12("t4",0x0142,0x0141))) 
     1512    OutputChar("l","L") 
     1513  else if (Ebene = 3) 
     1514    send {blind}[ 
     1515  else if (Ebene = 4) 
     1516    Send {Blind}{Up} 
     1517  else if (Ebene = 5) 
     1518    SendUnicodeChar(0x03BB) ; lambda 
     1519  else if (Ebene = 6) 
     1520    SendUnicodeChar(0x039B) ; Lambda 
    15111521return 
    15121522 
    15131523 
    15141524neo_c: 
    1515    EbeneAktualisieren() 
    1516    if (Ebene12 and !(CheckDeadUni12("a1",0x0107,0x0106) 
    1517                   or CheckDeadUni12("a3",0x00E7,0x00E6) 
    1518                   or CheckDeadUni12("a4",0x010B,0x010A) 
    1519                   or CheckDeadUni12("c1",0x0109,0x0108) 
    1520                   or CheckDeadUni12("c2",0x010D,0x010C) 
    1521                   or CheckCompAsc12("o","�","�") 
    1522                   or CheckCompAsc12("O","�","�"))) 
    1523       OutputChar("c","C") 
    1524    else if (Ebene = 3) 
    1525       send {blind}] 
    1526    else if (Ebene = 4) 
    1527       if (not(lernModus) or lernModus_neo_Entf) 
    1528         Send {blind}{Del} 
    1529       else 
    1530       { 
    1531           CompKey := PriorCompKey 
    1532           DeadKey := PriorDeadKey 
    1533       } ; leer 
    1534    else if (Ebene = 5) 
    1535       SendUnicodeChar(0x03C7) ;chi 
    1536    else if (Ebene = 6) 
    1537       SendUnicodeChar(0x2102)  ; C (Komplexe Zahlen) 
     1525  EbeneAktualisieren() 
     1526  if (Ebene12 and !(CheckDeadUni12("a1",0x0107,0x0106) 
     1527            or CheckDeadUni12("a3",0x00E7,0x00E6) 
     1528            or CheckDeadUni12("a4",0x010B,0x010A) 
     1529            or CheckDeadUni12("c1",0x0109,0x0108) 
     1530            or CheckDeadUni12("c2",0x010D,0x010C) 
     1531            or CheckCompAsc12("o","�","�") 
     1532            or CheckCompAsc12("O","�","�"))) 
     1533    OutputChar("c","C") 
     1534  else if (Ebene = 3) 
     1535    send {blind}] 
     1536  else if (Ebene = 4) 
     1537    if (not(lernModus) or lernModus_neo_Entf) 
     1538      Send {blind}{Del} 
     1539    else 
     1540    { 
     1541       CompKey := PriorCompKey 
     1542       DeadKey := PriorDeadKey 
     1543    } ; leer 
     1544  else if (Ebene = 5) 
     1545    SendUnicodeChar(0x03C7) ;chi 
     1546  else if (Ebene = 6) 
     1547    SendUnicodeChar(0x2102)  ; C (Komplexe Zahlen) 
    15381548return 
    15391549 
    15401550neo_w: 
    1541    EbeneAktualisieren() 
    1542    if (Ebene12 and !(CheckDeadUni12("c1",0x0175,0x0174))) 
    1543       OutputChar("w","W") 
    1544    else if (Ebene = 3) 
    1545       SendUnicodeChar(0x005E) ; untotes ^ - Unicode-Name: CIRCUMFLEX ACCENT 
    1546       ;send {^}{space} ; Funktioniert nicht unter Java-Programmen  
    1547    else if (Ebene = 4) 
    1548       Send {blind}{Insert} 
    1549    else if (Ebene = 5) 
    1550       SendUnicodeChar(0x03C9) ; omega 
    1551    else if (Ebene = 6) 
    1552       SendUnicodeChar(0x03A9) ; Omega 
     1551  EbeneAktualisieren() 
     1552  if (Ebene12 and !(CheckDeadUni12("c1",0x0175,0x0174))) 
     1553    OutputChar("w","W") 
     1554  else if (Ebene = 3) 
     1555    SendUnicodeChar(0x005E) ; untotes ^ - Unicode-Name: CIRCUMFLEX ACCENT 
     1556      ;send {^}{space}      ; Funktioniert nicht unter Java-Programmen 
     1557  else if (Ebene = 4) 
     1558    Send {blind}{Insert} 
     1559  else if (Ebene = 5) 
     1560    SendUnicodeChar(0x03C9) ; omega 
     1561  else if (Ebene = 6) 
     1562    SendUnicodeChar(0x03A9) ; Omega 
    15531563return 
    15541564 
    15551565neo_k: 
    1556    EbeneAktualisieren() 
    1557    if (Ebene12 and !(CheckDeadUni12("a3",0x0137,0x0136) 
    1558                   or CheckDeadUni12("c6",0x1E33,0x1E32))) 
    1559       OutputChar("k","K") 
    1560    else if (Ebene = 3) 
    1561       send {blind}{!} 
    1562    else if (Ebene = 4) 
    1563       Send � 
    1564    else if (Ebene = 5) 
    1565       SendUnicodeChar(0x03F0) ;kappa symbol (varkappa) 
    1566    else if (Ebene = 6) 
    1567       SendUnicodeChar(0x221A) ; Wurzel 
     1566  EbeneAktualisieren() 
     1567  if (Ebene12 and !(CheckDeadUni12("a3",0x0137,0x0136) 
     1568            or CheckDeadUni12("c6",0x1E33,0x1E32))) 
     1569    OutputChar("k","K") 
     1570  else if (Ebene = 3) 
     1571    send {blind}{!} 
     1572  else if (Ebene = 4) 
     1573    Send � 
     1574  else if (Ebene = 5) 
     1575    SendUnicodeChar(0x03F0) ;kappa symbol (varkappa) 
     1576  else if (Ebene = 6) 
     1577    SendUnicodeChar(0x221A) ; Wurzel 
    15681578return 
    15691579 
    15701580neo_h: 
    1571    EbeneAktualisieren() 
    1572    if (Ebene12 and !(CheckDeadUni12("a4",0x1E23,0x1E22) 
    1573                   or CheckDeadUni12("c1",0x0125,0x0124) 
    1574                   or CheckDeadUni12("c5",0x0127,0x0126) 
    1575                   or CheckDeadUni12("c6",0x1E25,0x1E24))) 
    1576       OutputChar("h","H") 
    1577    else if ((Ebene = 3) and !(CheckDeadUni("c5",0x2264))) ; kleiner gleich 
    1578       send {blind}< 
    1579    else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2077) 
    1580                            or CheckDeadUni("c5",0x2087))) 
    1581       Send {blind}{NumPad7} 
    1582    else if (Ebene = 5) 
    1583       SendUnicodeChar(0x03C8) ;psi 
    1584    else if (Ebene = 6) 
    1585       SendUnicodeChar(0x03A8)  ; Psi 
     1581  EbeneAktualisieren() 
     1582  if (Ebene12 and !(CheckDeadUni12("a4",0x1E23,0x1E22) 
     1583            or CheckDeadUni12("c1",0x0125,0x0124) 
     1584            or CheckDeadUni12("c5",0x0127,0x0126) 
     1585            or CheckDeadUni12("c6",0x1E25,0x1E24))) 
     1586    OutputChar("h","H") 
     1587  else if ((Ebene = 3) and !(CheckDeadUni("c5",0x2264))) ; kleiner gleich 
     1588    send {blind}< 
     1589  else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2077) 
     1590                  or CheckDeadUni("c5",0x2087))) 
     1591    Send {blind}{NumPad7} 
     1592  else if (Ebene = 5) 
     1593    SendUnicodeChar(0x03C8) ;psi 
     1594  else if (Ebene = 6) 
     1595    SendUnicodeChar(0x03A8)  ; Psi 
    15861596return 
    15871597 
    15881598neo_g: 
    1589    EbeneAktualisieren() 
    1590    if (Ebene12 and !(CheckDeadUni12("a3",0x0123,0x0122) 
    1591                   or CheckDeadUni12("a4",0x0121,0x0120) 
    1592                   or CheckDeadUni12("c1",0x011D,0x011C) 
    1593                   or CheckDeadUni12("c3",0x011F,0x011E))) 
    1594       OutputChar("g","G") 
    1595    else if ((Ebene = 3) and !(CheckDeadUni("c5",0x2265))) ; gr��er gleich 
    1596       send {blind}> 
    1597    else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2078) 
    1598                            or CheckDeadUni("c5",0x2088))) 
    1599       Send {blind}{NumPad8} 
    1600    else if (Ebene = 5) 
    1601       SendUnicodeChar(0x03B3) ;gamma 
    1602    else if (Ebene = 6) 
    1603       SendUnicodeChar(0x0393)  ; Gamma 
     1599  EbeneAktualisieren() 
     1600  if (Ebene12 and !(CheckDeadUni12("a3",0x0123,0x0122) 
     1601            or CheckDeadUni12("a4",0x0121,0x0120) 
     1602            or CheckDeadUni12("c1",0x011D,0x011C) 
     1603            or CheckDeadUni12("c3",0x011F,0x011E))) 
     1604    OutputChar("g","G") 
     1605  else if ((Ebene = 3) and !(CheckDeadUni("c5",0x2265))) ; gr��er gleich 
     1606    send {blind}> 
     1607  else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2078) 
     1608                  or CheckDeadUni("c5",0x2088))) 
     1609    Send {blind}{NumPad8} 
     1610  else if (Ebene = 5) 
     1611    SendUnicodeChar(0x03B3) ;gamma 
     1612  else if (Ebene = 6) 
     1613    SendUnicodeChar(0x0393)  ; Gamma 
    16041614return 
    16051615 
    16061616neo_f: 
    1607    EbeneAktualisieren() 
    1608    if (Ebene12 and !(CheckDeadUni12("a4",0x1E1F,0x1E1E) 
    1609                   or CheckDeadUni12("t4",0x0192,0x0191))) 
    1610       OutputChar("f","F") 
    1611    else if ((Ebene = 3) and !(CheckDeadUni("a6",0x2257)    ; ring equal to 
    1612                       or CheckDeadUni("c1",0x2259)    ; entspricht 
    1613                       or CheckDeadUni("c2",0x225A)    ; EQUIANGULAR TO 
    1614                       or CheckDeadUni("c5",0x2261)    ; identisch 
    1615                       or CheckDeadUni("t1",0x2245)    ; ungef�hr gleich 
    1616                       or CheckDeadUni("t4",0x2260)))  ; ungleich 
    1617       send {blind}`= 
    1618    else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2079) 
    1619                            or CheckDeadUni("c5",0x2089))) 
    1620       Send {blind}{NumPad9} 
    1621    else if (Ebene = 5) 
    1622       SendUnicodeChar(0x03C6) ; phi 
    1623    else if (Ebene = 6) 
    1624       SendUnicodeChar(0x03A6)  ; Phi 
     1617  EbeneAktualisieren() 
     1618  if (Ebene12 and !(CheckDeadUni12("a4",0x1E1F,0x1E1E) 
     1619            or CheckDeadUni12("t4",0x0192,0x0191))) 
     1620    OutputChar("f","F") 
     1621  else if ((Ebene = 3) and !(CheckDeadUni("a6",0x2257)   ; ring equal to 
     1622               or CheckDeadUni("c1",0x2259)   ; entspricht 
     1623               or CheckDeadUni("c2",0x225A)   ; EQUIANGULAR TO 
     1624               or CheckDeadUni("c5",0x2261)   ; identisch 
     1625               or CheckDeadUni("t1",0x2245)   ; ungef�hr gleich 
     1626               or CheckDeadUni("t4",0x2260)))  ; ungleich 
     1627    send {blind}`= 
     1628  else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2079) 
     1629                  or CheckDeadUni("c5",0x2089))) 
     1630    Send {blind}{NumPad9} 
     1631  else if (Ebene = 5) 
     1632    SendUnicodeChar(0x03C6) ; phi 
     1633  else if (Ebene = 6) 
     1634    SendUnicodeChar(0x03A6)  ; Phi 
    16251635return 
    16261636 
     
    16411651 
    16421652neo_sz: 
    1643    EbeneAktualisieren() 
    1644    if (Ebene = 1) 
    1645       if (GetKeyState("CapsLock","T")) 
    1646          SendUnicodeChar(0x1E9E) ; verssal-� 
    1647       else if (LangSTastatur = 1) 
    1648          send {blind}s 
     1653  EbeneAktualisieren() 
     1654  if (Ebene = 1) 
     1655    if (GetKeyState("CapsLock","T")) 
     1656      SendUnicodeChar(0x1E9E) ; versal-� 
     1657    else if (LangSTastatur = 1) 
     1658      send {blind}s 
     1659    else 
     1660      send � 
     1661  else if (Ebene = 2) 
     1662    if (GetKeyState("CapsLock","T")) 
     1663      if (LangSTastatur = 1) 
     1664        send {blind}s 
    16491665      else 
    1650          send � 
    1651    else if (Ebene = 2) 
    1652       if (GetKeyState("CapsLock","T")) 
    1653          if (LangSTastatur = 1) 
     1666        send � 
     1667    else 
     1668      SendUnicodeChar(0x1E9E) ; versal-� 
     1669  else if (Ebene = 3) 
     1670    if (LangSTastatur = 1) 
     1671      send � 
     1672    else 
     1673      SendUnicodeChar(0x017F) ; langes s 
     1674  else if (Ebene = 5) 
     1675    SendUnicodeChar(0x03C2) ; varsigma 
     1676  else if (Ebene = 6) 
     1677    SendUnicodeChar(0x2218) ; Verkn�pfungsoperator 
     1678return 
     1679 
     1680 
     1681neo_tot3: 
     1682  EbeneAktualisieren() 
     1683  if (Ebene = 1) 
     1684  { 
     1685    deadUni(0x02DC)  ;Tilde, tot 
     1686    DeadKey := "t1" 
     1687  } 
     1688  else if (Ebene = 2) 
     1689  { 
     1690    deadUni(0x00AF)  ; Macron, tot 
     1691    DeadKey := "t2" 
     1692  } 
     1693  else if (Ebene = 3) 
     1694  { 
     1695    deadUni(0x00A8)  ; Di�rese 
     1696    DeadKey := "t3" 
     1697  } 
     1698  else if (Ebene = 4) 
     1699  { 
     1700    deadUni(0x002F)  ; Schr�gstrich, tot 
     1701    DeadKey := "t4" 
     1702  } 
     1703  else if (Ebene = 5) 
     1704  { 
     1705    deadUni(0x02DD)  ;Doppelakut 
     1706    DeadKey := "t5" 
     1707  } 
     1708  else if (Ebene = 6) 
     1709  { 
     1710    deadUni(0x02CF)  ; Komma drunter, tot 
     1711    DeadKey := "t6" 
     1712  } 
     1713 
     1714return 
     1715 
     1716 
     1717/* 
     1718 
     1719  Reihe 3 
     1720 
     1721*/ 
     1722 
     1723neo_u: 
     1724  EbeneAktualisieren() 
     1725  if (Ebene12 and !(CheckDeadUni12("a1",0x00FA,0x00DA) 
     1726            or CheckDeadUni12("a2",0x00F9,0x00D9) 
     1727            or CheckDeadUni12("a5",0x0173,0x0172) 
     1728            or CheckDeadUni12("a6",0x016F,0x016E) 
     1729            or CheckDeadUni12("c1",0x00FB,0x00DB) 
     1730            or CheckDeadUni12("c2",0x01D4,0x01D3) 
     1731            or CheckDeadUni12("c3",0x016D,0x016C) 
     1732            or CheckDeadUni12("t1",0x0169,0x0168) 
     1733            or CheckDeadUni12("t2",0x016B,0x016A) 
     1734            or CheckDeadAsc12("t3","�","�") 
     1735            or CheckDeadUni12("t5",0x0171,0x0170))) 
     1736    OutputChar("u","U") 
     1737  else if (Ebene = 3) 
     1738    send {blind}\ 
     1739  else if (Ebene = 4) 
     1740    Send {blind}{Home} 
     1741  else if (Ebene = 5) 
     1742  { 
     1743     CompKey := PriorCompKey 
     1744     DeadKey := PriorDeadKey 
     1745  } ; leer 
     1746  else if (Ebene = 6) 
     1747    SendUnicodeChar(0x222E) ; contour integral 
     1748return 
     1749 
     1750neo_i: 
     1751  EbeneAktualisieren() 
     1752  if (Ebene12 and !(CheckDeadUni12("a1",0x00ED,0x00CD) 
     1753            or CheckDeadUni12("a2",0x00EC,0x00CC) 
     1754            or CheckDeadUni12("a4",0x012F,0x012E) 
     1755            or CheckDeadUni12("a5",0x0131,0x0130) 
     1756            or CheckDeadUni12("c1",0x00EE,0x00CE) 
     1757            or CheckDeadUni12("c2",0x01D0,0x01CF) 
     1758            or CheckDeadUni12("c3",0x012D,0x012C) 
     1759            or CheckDeadUni12("t1",0x0129,0x0128) 
     1760            or CheckDeadUni12("t2",0x012B,0x012A) 
     1761            or CheckDeadAsc12("t3","�","�"))) 
     1762    OutputChar("i","I") 
     1763  else if (Ebene = 3) 
     1764    send {blind}`/ 
     1765  else if (Ebene = 4) 
     1766    Send {Blind}{Left} 
     1767  else if (Ebene = 5   ) 
     1768    SendUnicodeChar(0x03B9) ; iota 
     1769  else if (Ebene = 6) 
     1770    SendUnicodeChar(0x222B) ; integral 
     1771return 
     1772 
     1773neo_a: 
     1774  EbeneAktualisieren() 
     1775  if (Ebene12 and !(CheckDeadUni12("a1",0x00E1,0x00C1) 
     1776            or CheckDeadUni12("a2",0x00E0,0x00C0) 
     1777            or CheckDeadUni12("a5",0x0105,0x0104) 
     1778            or CheckDeadAsc12("a6","�","�") 
     1779            or CheckDeadUni12("c1",0x00E2,0x00C2) 
     1780            or CheckDeadUni12("c2",0x01CE,0x01CD) 
     1781            or CheckDeadUni12("c3",0x0103,0x0102) 
     1782            or CheckDeadUni12("t1",0x00E3,0x00C3) 
     1783            or CheckDeadUni12("t2",0x0101,0x0100) 
     1784            or CheckDeadAsc12("t3","�","�"))) 
     1785    OutputChar("a","A") 
     1786  else if (Ebene = 3) 
     1787    send {blind}{{} 
     1788  else if (Ebene = 4) 
     1789    Send {Blind}{Down} 
     1790  else if (Ebene = 5) 
     1791    SendUnicodeChar(0x03B1) ;alpha 
     1792  else if (Ebene = 6) 
     1793    SendUnicodeChar(0x2200) ;f�r alle 
     1794return 
     1795 
     1796neo_e: 
     1797  EbeneAktualisieren() 
     1798  if (Ebene12 and !(CheckDeadUni12("a1",0x00E9,0x00C9) 
     1799            or CheckDeadUni12("a2",0x00E8,0x00C8) 
     1800            or CheckDeadUni12("a4",0x0117,0x0116) 
     1801            or CheckDeadUni12("a5",0x0119,0x0118) 
     1802            or CheckDeadUni12("c1",0x00EA,0x00CA) 
     1803            or CheckDeadUni12("c2",0x011B,0x011A) 
     1804            or CheckDeadUni12("c3",0x0115,0x0114) 
     1805            or CheckDeadUni12("t2",0x0113,0x0112) 
     1806            or CheckDeadAsc12("t3","�","�") 
     1807            or CheckCompAsc12("a","�","�") 
     1808            or CheckCompAsc12("A","�","�") 
     1809            or CheckCompAsc12("o","�","�") 
     1810            or CheckCompAsc12("O","�","�"))) 
     1811    OutputChar("e","E") 
     1812  else if (Ebene = 3)    ; { 
     1813    send {blind}{}} 
     1814  else if (Ebene = 4) 
     1815    Send {Blind}{Right} 
     1816  else if (Ebene = 5) 
     1817      SendUnicodeChar(0x03B5) ;epsilon 
     1818  else if (Ebene = 6) 
     1819      SendUnicodeChar(0x2203) ;es existiert 
     1820return 
     1821 
     1822neo_o: 
     1823  EbeneAktualisieren() 
     1824  if (Ebene12 and !(CheckDeadUni12("a1",0x00F3,0x00D3) 
     1825            or CheckDeadUni12("a2",0x00F2,0x00D2) 
     1826            or CheckDeadUni12("a5",0x01EB,0x01EA) 
     1827            or CheckDeadUni12("c1",0x00F4,0x00D4) 
     1828            or CheckDeadUni12("c2",0x01D2,0x01D1) 
     1829            or CheckDeadUni12("c3",0x014F,0x014E) 
     1830            or CheckDeadUni12("t1",0x00F5,0x00D5) 
     1831            or CheckDeadUni12("t2",0x014D,0x014C) 
     1832            or CheckDeadAsc12("t3","�","�") 
     1833            or CheckDeadUni12("t4",0x00F8,0x00D8) 
     1834            or CheckDeadUni12("t5",0x0151,0x0150))) 
     1835    OutputChar("o","O") 
     1836  else if (Ebene = 3) 
     1837    send {blind}* 
     1838  else if (Ebene = 4) 
     1839    Send {blind}{End} 
     1840  else if (Ebene = 5) 
     1841    SendUnicodeChar(0x03BF) ; omicron 
     1842  else if (Ebene = 6) 
     1843    SendUnicodeChar(0x2208) ; element of 
     1844return 
     1845 
     1846neo_s: 
     1847  EbeneAktualisieren() 
     1848  if (Ebene12 and !(CheckDeadUni12("a1",0x015B,0x015A) 
     1849              or CheckDeadUni12("a3",0x015F,0x015E) 
     1850              or CheckDeadUni12("a4",0x1E61,0x1E60) 
     1851              or CheckDeadUni12("c1",0x015D,0x015C) 
     1852              or CheckDeadUni12("c2",0x0161,0x0160) 
     1853              or CheckDeadUni12("c6",0x1E63,0x1A62))) 
     1854      if (Ebene = 1) 
     1855      { 
     1856        if LangSTastatur 
     1857          if (GetKeyState("CapsLock","T")) 
    16541858            send {blind}s 
    1655          else 
    1656             send � 
    1657       else 
    1658          SendUnicodeChar(0x1E9E) ; versal-� 
    1659    else if (Ebene = 3) 
    1660       if (LangSTastatur = 1) 
    1661          send � 
    1662       else 
    1663          SendUnicodeChar(0x017F) ; langes s 
    1664    else if (Ebene = 5) 
    1665       SendUnicodeChar(0x03C2) ; varsigma 
    1666    else if (Ebene = 6) 
    1667       SendUnicodeChar(0x2218) ; Verkn�pfungsoperator 
    1668 return 
    1669  
    1670  
    1671 neo_tot3: 
    1672    EbeneAktualisieren() 
    1673    if (Ebene = 1) 
    1674    { 
    1675       deadUni(0x02DC)  ; tilde, tot  
    1676       DeadKey := "t1" 
    1677    } 
    1678    else if (Ebene = 2) 
    1679    { 
    1680       deadUni(0x00AF)  ; macron, tot 
    1681       DeadKey := "t2" 
    1682    } 
    1683    else if (Ebene = 3) 
    1684    { 
    1685       deadUni(0x00A8)  ; diaerese 
    1686       DeadKey := "t3" 
    1687    } 
    1688    else if (Ebene = 4) 
    1689    { 
    1690       deadUni(0x002F)  ; Schr�gstrich, tot 
    1691       DeadKey := "t4" 
    1692    } 
    1693    else if (Ebene = 5) 
    1694    { 
    1695       deadUni(0x02DD)  ;doppelakut 
    1696       DeadKey := "t5" 
    1697    } 
    1698    else if (Ebene = 6) 
    1699    { 
    1700       deadUni(0x02CF)  ; komma drunter, tot 
    1701       DeadKey := "t6" 
    1702    } 
    1703     
    1704 return 
    1705  
    1706  
    1707 /* 
    1708    ------------------------------------------------------ 
    1709    Reihe 3 
    1710    ------------------------------------------------------ 
    1711 */ 
    1712  
    1713 neo_u: 
    1714    EbeneAktualisieren() 
    1715    if (Ebene12 and !(CheckDeadUni12("a1",0x00FA,0x00DA) 
    1716                   or CheckDeadUni12("a2",0x00F9,0x00D9) 
    1717                   or CheckDeadUni12("a5",0x0173,0x0172) 
    1718                   or CheckDeadUni12("a6",0x016F,0x016E) 
    1719                   or CheckDeadUni12("c1",0x00FB,0x00DB) 
    1720                   or CheckDeadUni12("c2",0x01D4,0x01D3) 
    1721                   or CheckDeadUni12("c3",0x016D,0x016C) 
    1722                   or CheckDeadUni12("t1",0x0169,0x0168) 
    1723                   or CheckDeadUni12("t2",0x016B,0x016A) 
    1724                   or CheckDeadAsc12("t3","�","�") 
    1725                   or CheckDeadUni12("t5",0x0171,0x0170))) 
    1726       OutputChar("u","U") 
    1727    else if (Ebene = 3) 
    1728       send {blind}\ 
    1729    else if (Ebene = 4) 
    1730       Send {blind}{Home} 
    1731    else if (Ebene = 5) 
    1732    { 
    1733        CompKey := PriorCompKey 
    1734        DeadKey := PriorDeadKey 
    1735    } ; leer 
    1736    else if (Ebene = 6) 
    1737       SendUnicodeChar(0x222E) ; contour integral 
    1738 return 
    1739  
    1740 neo_i: 
    1741    EbeneAktualisieren() 
    1742    if (Ebene12 and !(CheckDeadUni12("a1",0x00ED,0x00CD) 
    1743                   or CheckDeadUni12("a2",0x00EC,0x00CC) 
    1744                   or CheckDeadUni12("a4",0x012F,0x012E) 
    1745                   or CheckDeadUni12("a5",0x0131,0x0130) 
    1746                   or CheckDeadUni12("c1",0x00EE,0x00CE) 
    1747                   or CheckDeadUni12("c2",0x01D0,0x01CF) 
    1748                   or CheckDeadUni12("c3",0x012D,0x012C) 
    1749                   or CheckDeadUni12("t1",0x0129,0x0128) 
    1750                   or CheckDeadUni12("t2",0x012B,0x012A) 
    1751                   or CheckDeadAsc12("t3","�","�"))) 
    1752       OutputChar("i","I") 
    1753    else if (Ebene = 3) 
    1754       send {blind}`/ 
    1755    else if (Ebene = 4) 
    1756       Send {Blind}{Left} 
    1757    else if (Ebene = 5    ) 
    1758       SendUnicodeChar(0x03B9) ; iota 
    1759    else if (Ebene = 6) 
    1760       SendUnicodeChar(0x222B) ; integral 
    1761 return 
    1762  
    1763 neo_a: 
    1764    EbeneAktualisieren() 
    1765    if (Ebene12 and !(CheckDeadUni12("a1",0x00E1,0x00C1) 
    1766                   or CheckDeadUni12("a2",0x00E0,0x00C0) 
    1767                   or CheckDeadUni12("a5",0x0105,0x0104) 
    1768                   or CheckDeadAsc12("a6","�","�") 
    1769                   or CheckDeadUni12("c1",0x00E2,0x00C2) 
    1770                   or CheckDeadUni12("c2",0x01CE,0x01CD) 
    1771                   or CheckDeadUni12("c3",0x0103,0x0102) 
    1772                   or CheckDeadUni12("t1",0x00E3,0x00C3) 
    1773                   or CheckDeadUni12("t2",0x0101,0x0100) 
    1774                   or CheckDeadAsc12("t3","�","�"))) 
    1775       OutputChar("a","A") 
    1776    else if (Ebene = 3) 
    1777       send {blind}{{}   ; } 
    1778    else if (Ebene = 4) 
    1779       Send {Blind}{Down} 
    1780    else if (Ebene = 5) 
    1781       SendUnicodeChar(0x03B1) ;alpha 
    1782    else if (Ebene = 6) 
    1783       SendUnicodeChar(0x2200) ;fuer alle    
    1784 return 
    1785  
    1786 neo_e: 
    1787    EbeneAktualisieren() 
    1788    if (Ebene12 and !(CheckDeadUni12("a1",0x00E9,0x00C9) 
    1789                   or CheckDeadUni12("a2",0x00E8,0x00C8) 
    1790                   or CheckDeadUni12("a4",0x0117,0x0116) 
    1791                   or CheckDeadUni12("a5",0x0119,0x0118) 
    1792                   or CheckDeadUni12("c1",0x00EA,0x00CA) 
    1793                   or CheckDeadUni12("c2",0x011B,0x011A) 
    1794                   or CheckDeadUni12("c3",0x0115,0x0114) 
    1795                   or CheckDeadUni12("t2",0x0113,0x0112) 
    1796                   or CheckDeadAsc12("t3","�","�") 
    1797                   or CheckCompAsc12("a","�","�") 
    1798                   or CheckCompAsc12("A","�","�") 
    1799                   or CheckCompAsc12("o","�","�") 
    1800                   or CheckCompAsc12("O","�","�"))) 
    1801       OutputChar("e","E") 
    1802    else if (Ebene = 3)      ; { 
    1803       send {blind}{}} 
    1804    else if (Ebene = 4) 
    1805       Send {Blind}{Right} 
    1806    else if (Ebene = 5) 
    1807         SendUnicodeChar(0x03B5) ;epsilon 
    1808    else if (Ebene = 6) 
    1809         SendUnicodeChar(0x2203) ;es existiert    
    1810 return 
    1811  
    1812 neo_o: 
    1813    EbeneAktualisieren() 
    1814    if (Ebene12 and !(CheckDeadUni12("a1",0x00F3,0x00D3) 
    1815                   or CheckDeadUni12("a2",0x00F2,0x00D2) 
    1816                   or CheckDeadUni12("a5",0x01EB,0x01EA) 
    1817                   or CheckDeadUni12("c1",0x00F4,0x00D4) 
    1818                   or CheckDeadUni12("c2",0x01D2,0x01D1) 
    1819                   or CheckDeadUni12("c3",0x014F,0x014E) 
    1820                   or CheckDeadUni12("t1",0x00F5,0x00D5) 
    1821                   or CheckDeadUni12("t2",0x014D,0x014C) 
    1822                   or CheckDeadAsc12("t3","�","�") 
    1823                   or CheckDeadUni12("t4",0x00F8,0x00D8) 
    1824                   or CheckDeadUni12("t5",0x0151,0x0150))) 
    1825       OutputChar("o","O") 
    1826    else if (Ebene = 3) 
    1827       send {blind}* 
    1828    else if (Ebene = 4) 
    1829       Send {blind}{End} 
    1830    else if (Ebene = 5) 
    1831       SendUnicodeChar(0x03BF) ; omicron 
    1832    else if (Ebene = 6) 
    1833       SendUnicodeChar(0x2208) ; element of 
    1834 return 
    1835  
    1836 neo_s: 
    1837    EbeneAktualisieren() 
    1838    if (Ebene12 and !(CheckDeadUni12("a1",0x015B,0x015A) 
    1839                   or CheckDeadUni12("a3",0x015F,0x015E) 
    1840                   or CheckDeadUni12("a4",0x1E61,0x1E60) 
    1841                   or CheckDeadUni12("c1",0x015D,0x015C) 
    1842                   or CheckDeadUni12("c2",0x0161,0x0160) 
    1843                   or CheckDeadUni12("c6",0x1E63,0x1A62))) 
    1844       if (LangSTastatur = 1) 
    1845          if (GetKeyState("CapsLock","T") xor (Ebene = 1)) 
    1846             SendUnicodeChar(0x017F) ; langes s 
    1847          else 
    1848             OutputChar("s","S") 
    1849       else 
    1850          OutputChar("s","S") 
    1851    else if (Ebene = 3) 
    1852       send {blind}? 
    1853    else if (Ebene = 4) 
    1854       Send � 
    1855    else if (Ebene = 5) 
    1856       SendUnicodeChar(0x03C3) ;sigma 
    1857    else if (Ebene = 6) 
    1858       SendUnicodeChar(0x03A3)  ; Sigma 
     1859          else 
     1860            SendUnicodeChar(0x017F) ;langes S 
     1861        else 
     1862          send {blind}s 
     1863        if (PriorDeadKey = "comp") 
     1864          CompKey := "s" 
     1865      } 
     1866      else if (Ebene = 2) 
     1867      { 
     1868        if LangSTastatur 
     1869          if (GetKeyState("CapsLock","T")) 
     1870            SendUnicodeChar(0x017F) ;langes S 
     1871          else 
     1872            send {blind}S 
     1873        else 
     1874          send {blind}S 
     1875        if (PriorDeadKey = "comp") 
     1876          CompKey := "S" 
     1877      } 
     1878  else if (Ebene = 3) 
     1879    send {blind}? 
     1880  else if (Ebene = 4) 
     1881    Send � 
     1882  else if (Ebene = 5) 
     1883    SendUnicodeChar(0x03C3) ;sigma 
     1884  else if (Ebene = 6) 
     1885    SendUnicodeChar(0x03A3)  ; Sigma 
    18591886return 
    18601887 
    18611888neo_n: 
    1862    EbeneAktualisieren() 
    1863    if (Ebene12 and !(CheckDeadUni12("a1",0x0144,0x0143) 
    1864                   or CheckDeadUni12("a3",0x0146,0x0145) 
    1865                   or CheckDeadUni12("a4",0x1E45,0x1E44) 
    1866                   or CheckDeadUni12("c2",0x0148,0x0147) 
    1867                   or CheckDeadUni12("t1",0x00F1,0x00D1))) 
    1868       OutputChar("n","N") 
    1869    else if (Ebene = 3) 
    1870       send {blind}(                 ; ) 
    1871    else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2074) 
    1872                            or CheckDeadUni("c5",0x2084))) 
    1873       Send {blind}{NumPad4} 
    1874    else if (Ebene = 5) 
    1875       SendUnicodeChar(0x03BD) ; nu 
    1876    else if (Ebene = 6) 
    1877       SendUnicodeChar(0x2115) ; N (nat�rliche Zahlen) 
     1889  EbeneAktualisieren() 
     1890  if (Ebene12 and !(CheckDeadUni12("a1",0x0144,0x0143) 
     1891            or CheckDeadUni12("a3",0x0146,0x0145) 
     1892            or CheckDeadUni12("a4",0x1E45,0x1E44) 
     1893            or CheckDeadUni12("c2",0x0148,0x0147) 
     1894            or CheckDeadUni12("t1",0x00F1,0x00D1))) 
     1895    OutputChar("n","N") 
     1896  else if (Ebene = 3) 
     1897    send {blind}(            ; ) 
     1898  else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2074) 
     1899                  or CheckDeadUni("c5",0x2084))) 
     1900    Send {blind}{NumPad4} 
     1901  else if (Ebene = 5) 
     1902    SendUnicodeChar(0x03BD) ; nu 
     1903  else if (Ebene = 6) 
     1904    SendUnicodeChar(0x2115) ; N (nat�rliche Zahlen) 
    18781905return 
    18791906 
    18801907neo_r: 
    1881    EbeneAktualisieren() 
    1882    if (Ebene12 and !(CheckDeadUni12("a1",0x0155,0x0154) 
    1883                   or CheckDeadUni12("a3",0x0157,0x0156) 
    1884                   or CheckDeadUni12("a4",0x0E59,0x0E58) 
    1885                   or CheckDeadUni12("c2",0x0159,0x0158) 
    1886                   or CheckDeadUni12("c6",0x1E5B,0x1E5A) 
    1887                   or CheckCompAsc12("o","�","�") 
    1888                   or CheckCompAsc12("O","�","�"))) 
    1889       OutputChar("r","R") 
    1890    else if (Ebene = 3)                ;( 
    1891       send {blind}) 
    1892    else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2075) 
    1893                            or CheckDeadUni("c5",0x2085))) 
    1894       Send {blind}{NumPad5} 
    1895    else if (Ebene = 5) 
    1896       SendUnicodeChar(0x03F1) ; rho symbol (varrho) 
    1897    else if (Ebene = 6) 
    1898       SendUnicodeChar(0x211D) ; R (reelle Zahlen) 
     1908  EbeneAktualisieren() 
     1909  if (Ebene12 and !(CheckDeadUni12("a1",0x0155,0x0154) 
     1910            or CheckDeadUni12("a3",0x0157,0x0156) 
     1911            or CheckDeadUni12("a4",0x0E59,0x0E58) 
     1912            or CheckDeadUni12("c2",0x0159,0x0158) 
     1913            or CheckDeadUni12("c6",0x1E5B,0x1E5A) 
     1914            or CheckCompAsc12("o","�","�") 
     1915            or CheckCompAsc12("O","�","�"))) 
     1916    OutputChar("r","R") 
     1917  else if (Ebene = 3)           ;( 
     1918    send {blind}) 
     1919  else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2075) 
     1920                  or CheckDeadUni("c5",0x2085))) 
     1921    Send {blind}{NumPad5} 
     1922  else if (Ebene = 5) 
     1923    SendUnicodeChar(0x03F1) ; rho symbol (varrho) 
     1924  else if (Ebene = 6) 
     1925    SendUnicodeChar(0x211D) ; R (reelle Zahlen) 
    18991926return 
    19001927 
    19011928neo_t: 
    1902    EbeneAktualisieren() 
    1903    if (Ebene12 and !(CheckDeadUni12("a3",0x0163,0x0162) 
    1904                   or CheckDeadUni12("a4",0x1E6B,0x1E6A) 
    1905                   or CheckDeadUni12("c2",0x0165,0x0164) 
    1906                   or CheckDeadUni12("c5",0x0167,0x0166) 
    1907                   or CheckDeadUni12("c6",0x1E6D,0x1E6C))) 
    1908       OutputChar("t","T") 
    1909    else if (Ebene = 3) 
    1910       send {blind}- ; Bis 
    1911    else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2076) 
    1912                            or CheckDeadUni("c5",0x2086))) 
    1913       Send {blind}{NumPad6} 
    1914    else if (Ebene = 5) 
    1915       SendUnicodeChar(0x03C4) ; tau 
    1916    else if (Ebene = 6) 
    1917       SendUnicodeChar(0x2202 ) ; partielle Ableitung 
     1929  EbeneAktualisieren() 
     1930  if (Ebene12 and !(CheckDeadUni12("a3",0x0163,0x0162) 
     1931            or CheckDeadUni12("a4",0x1E6B,0x1E6A) 
     1932            or CheckDeadUni12("c2",0x0165,0x0164) 
     1933            or CheckDeadUni12("c5",0x0167,0x0166) 
     1934            or CheckDeadUni12("c6",0x1E6D,0x1E6C))) 
     1935    OutputChar("t","T") 
     1936  else if (Ebene = 3) 
     1937    send {blind}- ; Bis 
     1938  else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2076) 
     1939                  or CheckDeadUni("c5",0x2086))) 
     1940    Send {blind}{NumPad6} 
     1941  else if (Ebene = 5) 
     1942    SendUnicodeChar(0x03C4) ; tau 
     1943  else if (Ebene = 6) 
     1944    SendUnicodeChar(0x2202 ) ; partielle Ableitung 
    19181945return 
    19191946 
     
    19371964 
    19381965neo_y: 
    1939    EbeneAktualisieren() 
    1940    if (Ebene12 and !(CheckDeadUni12("a1",0x00FD,0x00DD) 
    1941                   or CheckDeadUni12("c1",0x0177,0x0176) 
    1942                   or CheckDeadAsc12("t3","�",�))) 
    1943       OutputChar("y","Y") 
    1944    else if (Ebene = 3) 
    1945       send {blind}@ 
    1946    else if (Ebene = 4) 
    1947       Send {blind}. 
    1948    else if (Ebene = 5) 
    1949       SendUnicodeChar(0x03C5) ; upsilon 
    1950    else if (Ebene = 6) 
    1951       SendUnicodeChar(0x2207) ; nabla 
     1966  EbeneAktualisieren() 
     1967  if (Ebene12 and !(CheckDeadUni12("a1",0x00FD,0x00DD) 
     1968            or CheckDeadUni12("c1",0x0177,0x0176) 
     1969            or CheckDeadAsc12("t3","�",�))) 
     1970    OutputChar("y","Y") 
     1971  else if (Ebene = 3) 
     1972    send {blind}@ 
     1973  else if (Ebene = 4) 
     1974    Send {blind}. 
     1975  else if (Ebene = 5) 
     1976    SendUnicodeChar(0x03C5) ; upsilon 
     1977  else if (Ebene = 6) 
     1978    SendUnicodeChar(0x2207) ; nabla 
    19521979return 
    19531980 
    19541981/* 
    1955    ------------------------------------------------------ 
    1956    Reihe 4 
    1957    ------------------------------------------------------ 
     1982 
     1983  Reihe 4 
     1984 
    19581985*/ 
    19591986 
    19601987neo_�: 
    1961    EbeneAktualisieren() 
    1962    if (Ebene12 and !(CheckDeadUni12("a1",0x01D8,0x01D7) 
    1963                   or CheckDeadUni12("a2",0x01DC,0x01DB) 
    1964                   or CheckDeadUni12("c2",0x01DA,0x01D9) 
    1965                   or CheckDeadUni12("t2",0x01D6,0x01D5))) 
    1966       OutputChar("�","�") 
    1967    else if (Ebene = 3) 
    1968       send {blind}{#} 
    1969    else if (Ebene = 4) 
    1970       Send {blind}{Esc} 
    1971    else if (Ebene = 5) 
    1972    { 
    1973       DeadKey := PriorDeadKey 
    1974       CompKey := PriorCompKey 
    1975    } ; leer 
    1976    else if (Ebene = 6) 
    1977       SendUnicodeChar(0x221D) ; proportional 
     1988  EbeneAktualisieren() 
     1989  if (Ebene12 and !(CheckDeadUni12("a1",0x01D8,0x01D7) 
     1990            or CheckDeadUni12("a2",0x01DC,0x01DB) 
     1991            or CheckDeadUni12("c2",0x01DA,0x01D9) 
     1992            or CheckDeadUni12("t2",0x01D6,0x01D5))) 
     1993    OutputChar("�","�") 
     1994  else if (Ebene = 3) 
     1995    send {#} 
     1996  else if (Ebene = 4) 
     1997    Send {blind}{Esc} 
     1998  else if (Ebene = 5) 
     1999  { 
     2000    DeadKey := PriorDeadKey 
     2001    CompKey := PriorCompKey 
     2002  } ; leer 
     2003  else if (Ebene = 6) 
     2004    SendUnicodeChar(0x221D) ; proportional 
    19782005return 
    19792006 
    19802007neo_�: 
    1981    EbeneAktualisieren() 
    1982    if (Ebene12 and !(CheckDeadUni12("t2",0x022B,0x022A))) 
    1983       OutputChar("�","�") 
    1984    else if (Ebene = 3) 
    1985       send {blind}$ 
    1986    else if (Ebene = 4) 
    1987       send {blind}{Tab} 
    1988    else if (Ebene = 5) 
    1989    { 
    1990       DeadKey := PriorDeadKey 
    1991       CompKey := PriorCompKey 
    1992    } ; leer 
    1993    else if (Ebene = 6) 
    1994       SendUnicodeChar(0x2111) ; Fraktur I 
     2008  EbeneAktualisieren() 
     2009  if (Ebene12 and !(CheckDeadUni12("t2",0x022B,0x022A))) 
     2010    OutputChar("�","�") 
     2011  else if (Ebene = 3) 
     2012    send {blind}$ 
     2013  else if (Ebene = 4) 
     2014    send {blind}{Tab} 
     2015  else if (Ebene = 5) 
     2016  { 
     2017    DeadKey := PriorDeadKey 
     2018    CompKey := PriorCompKey 
     2019  } ; leer 
     2020  else if (Ebene = 6) 
     2021    SendUnicodeChar(0x2111) ; Fraktur I 
    19952022return 
    19962023 
    19972024neo_�: 
    1998    EbeneAktualisieren() 
    1999    if (Ebene12 and !(CheckDeadUni12("t2",0x01DF,0x01DE))) 
    2000       OutputChar("�","�") 
    2001    else if (Ebene = 3) 
    2002       send {blind}| 
    2003    else if (Ebene = 4) 
    2004       Send {blind}{PgDn}    ; Next 
    2005    else if (Ebene = 5) 
    2006       SendUnicodeChar(0x03B7) ; eta 
    2007    else if (Ebene = 6) 
    2008       SendUnicodeChar(0x211C) ; altes R 
     2025  EbeneAktualisieren() 
     2026  if (Ebene12 and !(CheckDeadUni12("t2",0x01DF,0x01DE))) 
     2027    OutputChar("�","�") 
     2028  else if (Ebene = 3) 
     2029    send {blind}| 
     2030  else if (Ebene = 4) 
     2031    Send {blind}{PgDn}   ; Next 
     2032  else if (Ebene = 5) 
     2033    SendUnicodeChar(0x03B7) ; eta 
     2034  else if (Ebene = 6) 
     2035    SendUnicodeChar(0x211C) ; altes R 
    20092036return 
    20102037 
    20112038neo_p: 
    2012    EbeneAktualisieren() 
    2013    if (Ebene12 and !(CheckDeadUni12("a4",0x1E57,0x1E56))) 
    2014       OutputChar("p","P") 
    2015    else if ((Ebene = 3) and !(CheckDeadUni("t1",0x2248))) 
    2016       send {blind}~ 
    2017    else if (Ebene = 4) 
    2018         Send {blind}{Enter} 
    2019    else if (Ebene = 5) 
    2020       SendUnicodeChar(0x03C0) ;pi 
    2021    else if (Ebene = 6) 
    2022       SendUnicodeChar(0x03A0)  ; Pi 
     2039  EbeneAktualisieren() 
     2040  if (Ebene12 and !(CheckDeadUni12("a4",0x1E57,0x1E56))) 
     2041    OutputChar("p","P") 
     2042  else if ((Ebene = 3) and !(CheckDeadUni("t1",0x2248))) 
     2043    send {blind}~ 
     2044  else if (Ebene = 4) 
     2045      Send {blind}{Enter} 
     2046  else if (Ebene = 5) 
     2047    SendUnicodeChar(0x03C0) ;pi 
     2048  else if (Ebene = 6) 
     2049    SendUnicodeChar(0x03A0)  ; Pi 
    20232050return 
    20242051 
    20252052neo_z: 
    2026    EbeneAktualisieren() 
    2027    if (Ebene12 and !(CheckDeadUni12("a1",0x017A,0x0179) 
    2028                   or CheckDeadUni12("a4",0x017C,0x017B) 
    2029                   or CheckDeadUni12("c2",0x017E,0x017D) 
    2030                   or CheckDeadUni12("c6",0x1E93,0x1E92))) 
    2031       OutputChar("z","Z") 
    2032    else if (Ebene = 3) 
    2033       send ``{space} ; untot 
    2034    else if (Ebene = 4) 
    2035    { 
    2036       DeadKey := PriorDeadKey 
    2037       CompKey := PriorCompKey 
    2038    } ; leer 
    2039    else if (Ebene = 5) 
    2040       SendUnicodeChar(0x03B6) ;zeta  
    2041    else if (Ebene = 6) 
    2042       SendUnicodeChar(0x2124)  ; Z (ganze Zahlen) 
     2053  EbeneAktualisieren() 
     2054  if (Ebene12 and !(CheckDeadUni12("a1",0x017A,0x0179) 
     2055            or CheckDeadUni12("a4",0x017C,0x017B) 
     2056            or CheckDeadUni12("c2",0x017E,0x017D) 
     2057            or CheckDeadUni12("c6",0x1E93,0x1E92))) 
     2058    OutputChar("z","Z") 
     2059  else if (Ebene = 3) 
     2060    send ``{space} ; untot 
     2061  else if (Ebene = 4) 
     2062  { 
     2063    DeadKey := PriorDeadKey 
     2064    CompKey := PriorCompKey 
     2065  } ; leer 
     2066  else if (Ebene = 5) 
     2067    SendUnicodeChar(0x03B6) ;zeta 
     2068  else if (Ebene = 6) 
     2069    SendUnicodeChar(0x2124)  ; Z (ganze Zahlen) 
    20432070return 
    20442071 
    20452072neo_b: 
    2046    EbeneAktualisieren() 
    2047    if (Ebene12 and !(CheckDeadUni12("a4",0x1E03,0x1E02))) 
    2048       OutputChar("b","B") 
    2049    else if (Ebene = 3) 
    2050       send {blind}{+} 
    2051    else if (Ebene = 4) 
    2052       send {blind}: 
    2053    else if (Ebene = 5) 
    2054       SendUnicodeChar(0x03B2) ; beta 
    2055    else if (Ebene = 6) 
    2056       SendUnicodeChar(0x21D2) ; Doppel-Pfeil rechts 
     2073  EbeneAktualisieren() 
     2074  if (Ebene12 and !(CheckDeadUni12("a4",0x1E03,0x1E02))) 
     2075    OutputChar("b","B") 
     2076  else if (Ebene = 3) 
     2077    send {blind}{+} 
     2078  else if (Ebene = 4) 
     2079    send {blind}: 
     2080  else if (Ebene = 5) 
     2081    SendUnicodeChar(0x03B2) ; beta 
     2082  else if (Ebene = 6) 
     2083    SendUnicodeChar(0x21D2) ; Doppel-Pfeil rechts 
    20572084return 
    20582085 
    20592086neo_m: 
    2060    EbeneAktualisieren() 
    2061    if (Ebene12 and !(CheckDeadUni12("a4",0x1E41,0x1E40) 
    2062                   or CheckDeadUni12("c6",0x1E43,0x1E42) 
    2063                   or CheckCompUni12("t",0x2122,0x2122)        ; TM 
    2064                   or CheckCompUni12("T",0x2122,0x2122)        ; TM 
    2065                   or CheckCompUni12("s",0x2120,0x2120)        ; SM 
    2066                   or CheckCompUni12("S",0x2120,0x2120)))      ; SM 
    2067  
    2068       OutputChar("m","M") 
    2069    else if (Ebene = 3) 
    2070       send {blind}`% 
    2071    else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B9) 
    2072                            or CheckDeadUni("c5",0x2081))) 
    2073       Send {blind}{NumPad1} 
    2074    else if (Ebene = 5) 
    2075       SendUnicodeChar(0x03BC) ; griechisch mu, micro w�re 0x00B5 
    2076    else if (Ebene = 6) 
    2077       SendUnicodeChar(0x21D4) ; doppelter Doppelpfeil (genau dann wenn) 
     2087  EbeneAktualisieren() 
     2088  if (Ebene12 and !(CheckDeadUni12("a4",0x1E41,0x1E40) 
     2089            or CheckDeadUni12("c6",0x1E43,0x1E42) 
     2090            or CheckCompUni12("t",0x2122,0x2122)      ; TM 
     2091            or CheckCompUni12("T",0x2122,0x2122)      ; TM 
     2092            or CheckCompUni12("s",0x2120,0x2120)      ; SM 
     2093            or CheckCompUni12("S",0x2120,0x2120)))    ; SM 
     2094 
     2095    OutputChar("m","M") 
     2096  else if (Ebene = 3) 
     2097    send {blind}`% 
     2098  else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B9) 
     2099                  or CheckDeadUni("c5",0x2081))) 
     2100    Send {blind}{NumPad1} 
     2101  else if (Ebene = 5) 
     2102    SendUnicodeChar(0x03BC) ; griechisch mu, micro w�re 0x00B5 
     2103  else if (Ebene = 6) 
     2104    SendUnicodeChar(0x21D4) ; doppelter Doppelpfeil (genau dann wenn) 
    20782105return 
    20792106 
    20802107neo_komma: 
    2081    EbeneAktualisieren() 
    2082    if (Ebene = 1) 
    2083       if (GetKeyState("CapsLock","T"))  
    2084          send {blind}{Shift down},{Shift up} 
     2108  EbeneAktualisieren() 
     2109  if (Ebene = 1) 
     2110    if (GetKeyState("CapsLock","T")) 
     2111      send {blind}{Shift down},{Shift up} 
     2112    else 
     2113      send {blind}, 
     2114  else if (Ebene = 2) 
     2115     SendUnicodeChar(0x22EE) ;  vertikale ellipse 
     2116  else if (Ebene = 3) 
     2117    send {blind}" 
     2118  else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B2) 
     2119                  or CheckDeadUni("c5",0x2082))) 
     2120    Send {blind}{NumPad2} 
     2121  else if (Ebene = 5) 
     2122    SendUnicodeChar(0x03C1) ; rho 
     2123  else if (Ebene = 6) 
     2124    SendUnicodeChar(0x21D0) ; Doppelpfeil links 
     2125return 
     2126 
     2127neo_punkt: 
     2128  EbeneAktualisieren() 
     2129  if (Ebene = 1) 
     2130    if (GetKeyState("CapsLock","T")) 
     2131      send {blind}{Shift down}.{Shift up} 
     2132    else 
     2133&nb