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

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • 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      send {blind}. 
     2134  else if (Ebene = 2) 
     2135    SendUnicodeChar(0x2026)  ; ellipse 
     2136  else if (Ebene = 3) 
     2137    send {blind}' 
     2138  else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B3) 
     2139                  or CheckDeadUni("c5",0x2083))) 
     2140    Send {blind}{NumPad3} 
     2141  else if (Ebene = 5) 
     2142    SendUnicodeChar(0x03D1) ; theta symbol (vartheta) 
     2143  else if (Ebene = 6) 
     2144    SendUnicodeChar(0x0398)  ; Theta 
     2145return 
     2146 
     2147 
     2148neo_j: 
     2149  EbeneAktualisieren() 
     2150  if (Ebene12 and !(CheckDeadUni12("c1",0x0135,0x0134) 
     2151            or CheckDeadUni12("c2",0x01F0,"") 
     2152            or CheckCompUni12("i",0x0133,"")       ; ij 
     2153            or CheckCompUni12("I","",0x0132)       ; IJ 
     2154            or CheckCompUni12("l",0x01C9,"")       ; lj 
     2155            or CheckCompUni12("L",0x01C8,0x01C7)    ; Lj/LJ 
     2156            or CheckCompUni12("n",0x01CC,"")       ; nj 
     2157            or CheckCompUni12("N",0x01CB,0x01CA)))   ; Nj/NJ 
     2158    OutputChar("j","J") 
     2159  else if (Ebene = 3) 
     2160    send {blind}`; 
     2161  else if (Ebene = 4) 
     2162    Send {blind}`; 
     2163  else if (Ebene = 5) 
     2164    SendUnicodeChar(0x03B8) ; theta 
     2165  else if (Ebene = 6) 
     2166    SendUnicodeChar(0x2261) ; identisch 
     2167return 
     2168 
     2169/* 
     2170 
     2171  Numpad 
     2172 
     2173 
     2174  folgende Tasten verhalten sich bei ein- und ausgeschaltetem 
     2175  NumLock gleich: 
     2176*/ 
     2177 
     2178neo_NumpadDiv: 
     2179  EbeneAktualisieren() 
     2180  if ((Ebene = 1) or (Ebene = 2)) 
     2181    send {blind}{NumpadDiv} 
     2182  else if (Ebene = 3) 
     2183    send {blind}� 
     2184  else if ((Ebene = 4) or (Ebene = 5)) 
     2185    SendUnicodeChar(0x2215)  ; slash 
     2186return 
     2187 
     2188neo_NumpadMult: 
     2189  EbeneAktualisieren() 
     2190  if ((Ebene = 1) or (Ebene = 2)) 
     2191    send {blind}{NumpadMult} 
     2192  else if (Ebene = 3) 
     2193    send {blind}� 
     2194  else if ((Ebene = 4) or (Ebene = 5)) 
     2195    SendUnicodeChar(0x22C5)  ; cdot 
     2196return 
     2197 
     2198neo_NumpadSub: 
     2199  EbeneAktualisieren() 
     2200  if (((Ebene = 1) or (Ebene = 2)) and !(CheckDeadUni("c1",0x207B) 
     2201                          or CheckDeadUni("c5",0x208B))) 
     2202    send {blind}{NumpadSub} 
     2203  else if (Ebene = 3) 
     2204    SendUnicodeChar(0x2212) ; echtes minus 
     2205return 
     2206 
     2207neo_NumpadAdd: 
     2208  EbeneAktualisieren() 
     2209  if (((Ebene = 1) or (Ebene = 2)) and !(CheckDeadUni("c1",0x207A) 
     2210                          or CheckDeadUni("c5",0x208A))) 
     2211    send {blind}{NumpadAdd} 
     2212  else if (Ebene = 3) 
     2213    send {blind}� 
     2214  else if ((Ebene = 4) or (Ebene = 5)) 
     2215    SendUnicodeChar(0x2213)  ; -+ 
     2216return 
     2217 
     2218neo_NumpadEnter: 
     2219  EbeneAktualisieren() 
     2220  if ((Ebene = 1) or (Ebene = 2)) 
     2221    send {blind}{NumpadEnter} 
     2222  else if (Ebene = 3) 
     2223    SendUnicodeChar(0x2260) ; neq 
     2224  else if ((Ebene = 4) or (Ebene = 5)) 
     2225    SendUnicodeChar(0x2248) ; approx 
     2226return 
     2227 
     2228/* 
     2229  folgende Tasten verhalten sich bei ein- und ausgeschaltetem NumLock 
     2230  unterschiedlich 
     2231*/ 
     2232 
     2233 
     2234 
     2235neo_Numpad7: 
     2236  EbeneAktualisieren() 
     2237  if    ((Ebene = 1) and (NumLock = 0)) 
     2238    send {blind}{NumpadHome} 
     2239  else if ((Ebene = 2) and (NumLock = 1)) 
     2240    send {blind}{Shift up}{NumpadHome}{Shift down} 
     2241  else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
     2242  { 
     2243    if (Ebene = 1) 
     2244      send {blind}{Numpad7} 
     2245    else 
     2246      send {blind){Shift up}{Numpad7}{Shift down} 
     2247 
     2248    if (PriorDeadKey = "comp") 
     2249      CompKey := "Num_7" 
     2250  } 
     2251  else if (Ebene = 3) 
     2252    SendUnicodeChar(0x2195)  ; Hoch-Runter-Pfeil 
     2253  else if ((Ebene = 4) or (Ebene = 5)) 
     2254    SendUnicodeChar(0x226A)  ; ll 
     2255return 
     2256 
     2257neo_Numpad8: 
     2258  EbeneAktualisieren() 
     2259  if    ((Ebene = 1) and (NumLock = 0)) 
     2260    send {blind}{NumpadUp} 
     2261  else if ((Ebene = 2) and (NumLock = 1)) 
     2262    send {blind}{Shift up}{NumpadUp}{Shift down} 
     2263  else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
     2264  { 
     2265    if !(CheckCompUni("Num_1",0x215B) ; 1/8 
     2266      or CheckCompUni("1",0x215B)    ; 1/8 
     2267      or CheckCompUni("Num_3",0x215C) ; 3/8 
     2268      or CheckCompUni("3",0x215C)    ; 3/8 
     2269      or CheckCompUni("Num_5",0x215D) ; 3/8 
     2270      or CheckCompUni("5",0x215D)    ; 5/8 
     2271      or CheckCompUni("Num_7",0x215E) ; 7/8 
     2272      or CheckCompUni("7",0x215E))   ; 7/8 
     2273      if (Ebene = 1) 
     2274        send {blind}{Numpad8} 
    20852275      else 
    2086          send {blind}, 
    2087    else if (Ebene = 2) 
    2088        SendUnicodeChar(0x22EE) ;  vertikale ellipse  
    2089    else if (Ebene = 3) 
    2090       send {blind}" 
    2091    else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B2) 
    2092                            or CheckDeadUni("c5",0x2082))) 
    2093       Send {blind}{NumPad2} 
    2094    else if (Ebene = 5) 
    2095       SendUnicodeChar(0x03C1) ; rho 
    2096    else if (Ebene = 6) 
    2097       SendUnicodeChar(0x21D0) ; Doppelpfeil links 
    2098 return 
    2099  
    2100 neo_punkt: 
    2101    EbeneAktualisieren() 
    2102    if (Ebene = 1) 
    2103       if (GetKeyState("CapsLock","T"))  
    2104          send {blind}{Shift down}.{Shift up} 
     2276        send {blind){Shift up}{Numpad8}{Shift down} 
     2277 
     2278    if (PriorDeadKey = "comp") 
     2279      CompKey := "Num_8" 
     2280  } 
     2281  else if (Ebene = 3) 
     2282    SendUnicodeChar(0x2191)    ; uparrow 
     2283  else if ((Ebene = 4) or (Ebene = 5)) 
     2284    SendUnicodeChar(0x2229)   ; intersection 
     2285return 
     2286 
     2287neo_Numpad9: 
     2288  EbeneAktualisieren() 
     2289  if    ((Ebene = 1) and (NumLock = 0)) 
     2290    send {blind}{NumpadPgUp} 
     2291  else if ((Ebene = 2) and (NumLock = 1)) 
     2292    send {blind}{Shift up}{NumpadPgUp}{Shift down} 
     2293  else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
     2294  { 
     2295    if (Ebene = 1) 
     2296      send {blind}{Numpad9} 
     2297    else 
     2298      send {blind){Shift up}{Numpad9}{Shift down} 
     2299 
     2300    if (PriorDeadKey = "comp") 
     2301      CompKey := "Num_9" 
     2302  } 
     2303  else if (Ebene = 3) 
     2304    SendUnicodeChar(0x2297) ; Tensorprodukt ; Vektor in die Ebene zeigend 
     2305  else if ((Ebene = 4) or (Ebene = 5)) 
     2306    SendUnicodeChar(0x226B)  ; gg 
     2307return 
     2308 
     2309 
     2310 
     2311neo_Numpad4: 
     2312  EbeneAktualisieren() 
     2313  if    ((Ebene = 1) and (NumLock = 0)) 
     2314    send {blind}{NumpadLeft} 
     2315  else if ((Ebene = 2) and (NumLock = 1)) 
     2316    send {blind}{Shift up}{NumpadLeft}{Shift down} 
     2317  else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
     2318  { 
     2319    if !(CheckCompUni("Num_1",0x00BC) ; 1/4 
     2320      or CheckCompUni("1",0x00BE)    ; 1/4 
     2321      or CheckCompUni("Num_3",0x00BE) ; 3/4 
     2322      or CheckCompUni("3",0x00BE))   ; 3/4 
     2323      if (Ebene = 1) 
     2324        send {blind}{Numpad4} 
    21052325      else 
    2106          send {blind}. 
    2107    else if (Ebene = 2) 
    2108       SendUnicodeChar(0x2026)  ; ellipse 
    2109    else if (Ebene = 3) 
    2110       send {blind}' 
    2111    else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B3) 
    2112                            or CheckDeadUni("c5",0x2083))) 
    2113       Send {blind}{NumPad3} 
    2114    else if (Ebene = 5) 
    2115       SendUnicodeChar(0x03D1) ; theta symbol (vartheta) 
    2116    else if (Ebene = 6) 
    2117       SendUnicodeChar(0x0398)  ; Theta 
    2118 return 
    2119  
    2120  
    2121 neo_j: 
    2122    EbeneAktualisieren() 
    2123    if (Ebene12 and !(CheckDeadUni12("c1",0x0135,0x0134) 
    2124                   or CheckDeadUni12("c2",0x01F0,"") 
    2125                   or CheckCompUni12("i",0x0133,"")          ; ij 
    2126                   or CheckCompUni12("I","",0x0132)          ; IJ 
    2127                   or CheckCompUni12("l",0x01C9,"")          ; lj 
    2128                   or CheckCompUni12("L",0x01C8,0x01C7)      ; Lj/LJ 
    2129                   or CheckCompUni12("n",0x01CC,"")          ; nj 
    2130                   or CheckCompUni12("N",0x01CB,0x01CA)))    ; Nj/NJ 
    2131       OutputChar("j","J") 
    2132    else if (Ebene = 3) 
    2133       send {blind}`; 
    2134    else if (Ebene = 4) 
    2135       Send {blind}`; 
    2136    else if (Ebene = 5) 
    2137       SendUnicodeChar(0x03B8) ; theta 
    2138    else if (Ebene = 6) 
    2139       SendUnicodeChar(0x2261) ; identisch 
    2140 return 
     2326        send {blind){Shift up}{Numpad4}{Shift down} 
     2327 
     2328    if (PriorDeadKey = "comp") 
     2329      CompKey := "Num_4" 
     2330  } 
     2331  else if (Ebene = 3) 
     2332    SendUnicodeChar(0x2190)    ; leftarrow 
     2333  else if ((Ebene = 4) or (Ebene = 5)) 
     2334    SendUnicodeChar(0x2282)  ; subset of 
     2335return 
     2336 
     2337neo_Numpad5: 
     2338  EbeneAktualisieren() 
     2339  if    ((Ebene = 1) and (NumLock = 0)) 
     2340    send {blind}{NumpadClear} 
     2341  else if ((Ebene = 2) and (NumLock = 1)) 
     2342    send {blind}{Shift up}{NumpadClear}{Shift down} 
     2343  else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
     2344  { 
     2345    if !(CheckCompUni("Num_1",0x2155) ; 1/5 
     2346      or CheckCompUni("1",0x2155)    ; 1/5 
     2347      or CheckCompUni("Num_2",0x2156) ; 2/5 
     2348      or CheckCompUni("2",0x2156)    ; 2/5 
     2349      or CheckCompUni("Num_3",0x2157) ; 3/5 
     2350      or CheckCompUni("3",0x2157)    ; 3/5 
     2351      or CheckCompUni("Num_4",0x2158) ; 4/5 
     2352      or CheckCompUni("4",0x2158))   ; 4/5 
     2353      if (Ebene = 1) 
     2354        send {blind}{Numpad5} 
     2355      else 
     2356        send {blind){Shift up}{Numpad5}{Shift down} 
     2357 
     2358    if (PriorDeadKey = "comp") 
     2359      CompKey := "Num_5" 
     2360  } 
     2361  else if (Ebene = 3) 
     2362    SendUnicodeChar(0x221E) ; INFINITY 
     2363  else if ((Ebene = 4) or (Ebene = 5)) 
     2364    SendUnicodeChar(0x220B) ; enth�lt das Element 
     2365return 
     2366 
     2367neo_Numpad6: 
     2368  EbeneAktualisieren() 
     2369  if    ((Ebene = 1) and (NumLock = 0)) 
     2370    send {blind}{NumpadRight} 
     2371  else if ((Ebene = 2) and (NumLock = 1)) 
     2372    send {blind}{Shift up}{NumpadRight}{Shift down} 
     2373  else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
     2374  { 
     2375    if !(CheckCompUni("Num_1",0x2159) ; 1/6 
     2376      or CheckCompUni("1",0x2159)    ; 1/6 
     2377      or CheckCompUni("Num_5",0x215A) ; 5/6 
     2378      or CheckCompUni("5",0x215A))   ; 5/6 
     2379      if (Ebene = 1) 
     2380        send {blind}{Numpad6} 
     2381      else 
     2382        send {blind){Shift up}{Numpad6}{Shift down} 
     2383 
     2384    if (PriorDeadKey = "comp") 
     2385      CompKey := "Num_6" 
     2386  } 
     2387  else if (Ebene = 3) 
     2388    SendUnicodeChar(0x2192)    ; rightarrow 
     2389  else if ((Ebene = 4) or (Ebene = 5)) 
     2390    SendUnicodeChar(0x2283) ; superset of 
     2391return 
     2392 
     2393neo_Numpad1: 
     2394  EbeneAktualisieren() 
     2395  if    ((Ebene = 1) and (NumLock = 0)) 
     2396    send {blind}{NumpadEnd} 
     2397  else if ((Ebene = 2) and (NumLock = 1)) 
     2398    send {blind}{Shift up}{NumpadEnd}{Shift down} 
     2399  else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
     2400  { 
     2401    if (Ebene = 1) 
     2402      send {blind}{Numpad1} 
     2403    else 
     2404      send {blind){Shift up}{Numpad1}{Shift down} 
     2405 
     2406    if (PriorDeadKey = "comp") 
     2407      CompKey := "Num_1" 
     2408  } 
     2409  else if (Ebene = 3) 
     2410    SendUnicodeChar(0x2194) ; Links-Rechts-Pfeil 
     2411  else if ((Ebene = 4) or (Ebene = 5)) 
     2412    SendUnicodeChar(0x2264)  ; leq 
     2413return 
     2414 
     2415neo_Numpad2: 
     2416  EbeneAktualisieren() 
     2417  if    ((Ebene = 1) and (NumLock = 0)) 
     2418    send {blind}{NumpadDown} 
     2419  else if ((Ebene = 2) and (NumLock = 1)) 
     2420    send {blind}{Shift up}{NumpadDown}{Shift down} 
     2421  else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
     2422  { 
     2423    if !(CheckCompUni("Num_1",0x00BD) ; 1/2 
     2424      or CheckCompUni("1",0x00BD))   ; 1/2 
     2425      if (Ebene = 1) 
     2426        send {blind}{Numpad2} 
     2427      else 
     2428        send {blind){Shift up}{Numpad2}{Shift down} 
     2429 
     2430    if (PriorDeadKey = "comp") 
     2431      CompKey := "Num_2" 
     2432  } 
     2433  else if (Ebene = 3) 
     2434    SendUnicodeChar(0x2193)    ; downarrow 
     2435  else if ((Ebene = 4) or (Ebene = 5)) 
     2436    SendUnicodeChar(0x222A)  ; vereinigt 
     2437return 
     2438 
     2439neo_Numpad3: 
     2440  EbeneAktualisieren() 
     2441  if    ((Ebene = 1) and (NumLock = 0)) 
     2442    send {blind}{NumpadPgDn} 
     2443  else if ((Ebene = 2) and (NumLock = 1)) 
     2444    send {blind}{Shift up}{NumpadPgDn}{Shift down} 
     2445  else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
     2446  { 
     2447    if !(CheckCompUni("Num_1",0x2153) ; 1/3 
     2448      or CheckCompUni("1",0x2154)    ; 1/3 
     2449      or CheckCompUni("Num_2",0x2154) ; 2/3 
     2450      or CheckCompUni("2",0x2154))   ; 2/3 
     2451      if (Ebene = 1) 
     2452        send {blind}{Numpad3} 
     2453      else 
     2454        send {blind){Shift up}{Numpad3}{Shift down} 
     2455 
     2456    if (PriorDeadKey = "comp") 
     2457      CompKey := "Num_3" 
     2458  } 
     2459  else if (Ebene = 3) 
     2460    SendUnicodeChar(0x21CC) ; RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON 
     2461  else if ((Ebene = 4) or (Ebene = 5)) 
     2462    SendUnicodeChar(0x2265)  ; geq 
     2463return 
     2464 
     2465neo_Numpad0: 
     2466  EbeneAktualisieren() 
     2467  if    ((Ebene = 1) and (NumLock = 0)) 
     2468    send {blind}{NumpadIns} 
     2469  else if ((Ebene = 2) and (NumLock = 1)) 
     2470    send {blind}{Shift up}{NumpadIns}{Shift down} 
     2471  else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
     2472  { 
     2473    if (Ebene = 1) 
     2474      send {blind}{Numpad0} 
     2475    else 
     2476      send {blind){Shift up}{Numpad0}{Shift down} 
     2477 
     2478    if (PriorDeadKey = "comp") 
     2479      CompKey := "Num_0" 
     2480  } 
     2481  else if (Ebene = 3) 
     2482    send {blind}`% 
     2483  else if ((Ebene = 4) or (Ebene = 5)) 
     2484    send � 
     2485return 
     2486 
     2487neo_NumpadDot: 
     2488  EbeneAktualisieren() 
     2489  if    ((Ebene = 1) and (NumLock = 0)) 
     2490    send {blind}{NumpadDel} 
     2491  else if ((Ebene = 2) and (NumLock = 1)) 
     2492    send {blind}{Shift up}{NumpadDel}{Shift down} 
     2493  else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
     2494    if (Ebene = 1) 
     2495      send {blind}{NumpadDot} 
     2496    else 
     2497      send {blind){Shift up}{NumpadDot}{Shift down} 
     2498  else if (Ebene = 3) 
     2499    send {blind}. 
     2500  else if ((Ebene = 4) or (Ebene = 5)) 
     2501    send `, 
     2502return 
     2503 
    21412504 
    21422505/* 
    2143    ------------------------------------------------------ 
    2144    Numpad 
    2145    ------------------------------------------------------ 
    2146  
    2147    folgende Tasten verhalten sich bei ein- und ausgeschaltetem 
    2148    NumLock gleich: 
    2149 */ 
    2150  
    2151 neo_NumpadDiv: 
    2152    EbeneAktualisieren() 
    2153    if ((Ebene = 1) or (Ebene = 2)) 
    2154       send {blind}{NumpadDiv} 
    2155    else if (Ebene = 3) 
    2156       send {blind}� 
    2157    else if ((Ebene = 4) or (Ebene = 5)) 
    2158       SendUnicodeChar(0x2215)   ; slash 
    2159 return 
    2160  
    2161 neo_NumpadMult: 
    2162    EbeneAktualisieren() 
    2163    if ((Ebene = 1) or (Ebene = 2)) 
    2164       send {blind}{NumpadMult} 
    2165    else if (Ebene = 3) 
    2166       send {blind}� 
    2167    else if ((Ebene = 4) or (Ebene = 5)) 
    2168       SendUnicodeChar(0x22C5)  ; cdot 
    2169 return 
    2170  
    2171 neo_NumpadSub: 
    2172    EbeneAktualisieren() 
    2173    if (((Ebene = 1) or (Ebene = 2)) and !(CheckDeadUni("c1",0x207B) 
    2174                                        or CheckDeadUni("c5",0x208B))) 
    2175       send {blind}{NumpadSub} 
    2176    else if (Ebene = 3) 
    2177       SendUnicodeChar(0x2212) ; echtes minus 
    2178 return 
    2179  
    2180 neo_NumpadAdd: 
    2181    EbeneAktualisieren() 
    2182    if (((Ebene = 1) or (Ebene = 2)) and !(CheckDeadUni("c1",0x207A) 
    2183                                        or CheckDeadUni("c5",0x208A))) 
    2184       send {blind}{NumpadAdd} 
    2185    else if (Ebene = 3) 
    2186       send {blind}� 
    2187    else if ((Ebene = 4) or (Ebene = 5)) 
    2188       SendUnicodeChar(0x2213)   ; -+ 
    2189 return 
    2190  
    2191 neo_NumpadEnter: 
    2192    EbeneAktualisieren() 
    2193    if ((Ebene = 1) or (Ebene = 2)) 
    2194       send {blind}{NumpadEnter}       
    2195    else if (Ebene = 3) 
    2196       SendUnicodeChar(0x2260) ; neq 
    2197    else if ((Ebene = 4) or (Ebene = 5)) 
    2198       SendUnicodeChar(0x2248) ; approx 
    2199 return 
    2200  
    2201 /* 
    2202    folgende Tasten verhalten sich bei ein- und ausgeschaltetem NumLock 
    2203    unterschiedlich 
    2204 */ 
    2205  
    2206  
    2207  
    2208 neo_Numpad7: 
    2209    EbeneAktualisieren() 
    2210    if      ((Ebene = 1) and (NumLock = 0)) 
    2211       send {blind}{NumpadHome} 
    2212    else if ((Ebene = 2) and (NumLock = 1)) 
    2213       send {blind}{Shift up}{NumpadHome}{Shift down} 
    2214    else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
    2215    { 
    2216       if (Ebene = 1) 
    2217          send {blind}{Numpad7} 
    2218       else 
    2219          send {blind){Shift up}{Numpad7}{Shift down} 
    2220  
    2221       if (PriorDeadKey = "comp") 
    2222          CompKey := "Num_7" 
    2223    } 
    2224    else if (Ebene = 3) 
    2225       SendUnicodeChar(0x2195)   ; Hoch-Runter-Pfeil 
    2226    else if ((Ebene = 4) or (Ebene = 5)) 
    2227       SendUnicodeChar(0x226A)  ; ll 
    2228 return 
    2229  
    2230 neo_Numpad8: 
    2231    EbeneAktualisieren() 
    2232    if      ((Ebene = 1) and (NumLock = 0)) 
    2233       send {blind}{NumpadUp} 
    2234    else if ((Ebene = 2) and (NumLock = 1)) 
    2235       send {blind}{Shift up}{NumpadUp}{Shift down} 
    2236    else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
    2237    { 
    2238       if !(CheckCompUni("Num_1",0x215B) ; 1/8 
    2239         or CheckCompUni("1",0x215B)     ; 1/8 
    2240         or CheckCompUni("Num_3",0x215C) ; 3/8 
    2241         or CheckCompUni("3",0x215C)     ; 3/8 
    2242         or CheckCompUni("Num_5",0x215D) ; 3/8 
    2243         or CheckCompUni("5",0x215D)     ; 5/8 
    2244         or CheckCompUni("Num_7",0x215E) ; 7/8 
    2245         or CheckCompUni("7",0x215E))    ; 7/8 
    2246          if (Ebene = 1) 
    2247             send {blind}{Numpad8} 
    2248          else 
    2249             send {blind){Shift up}{Numpad8}{Shift down} 
    2250  
    2251       if (PriorDeadKey = "comp") 
    2252          CompKey := "Num_8" 
    2253    } 
    2254    else if (Ebene = 3) 
    2255       SendUnicodeChar(0x2191)     ; uparrow 
    2256    else if ((Ebene = 4) or (Ebene = 5)) 
    2257       SendUnicodeChar(0x2229)    ; intersection 
    2258 return 
    2259  
    2260 neo_Numpad9: 
    2261    EbeneAktualisieren() 
    2262    if      ((Ebene = 1) and (NumLock = 0)) 
    2263       send {blind}{NumpadPgUp} 
    2264    else if ((Ebene = 2) and (NumLock = 1)) 
    2265       send {blind}{Shift up}{NumpadPgUp}{Shift down} 
    2266    else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
    2267    { 
    2268       if (Ebene = 1) 
    2269          send {blind}{Numpad9} 
    2270       else 
    2271          send {blind){Shift up}{Numpad9}{Shift down} 
    2272  
    2273       if (PriorDeadKey = "comp") 
    2274          CompKey := "Num_9" 
    2275    } 
    2276    else if (Ebene = 3) 
    2277       SendUnicodeChar(0x2297) ; Tensorprodukt ; Vektor in die Ebene zeigend  
    2278    else if ((Ebene = 4) or (Ebene = 5)) 
    2279       SendUnicodeChar(0x226B)  ; gg 
    2280 return 
    2281  
    2282  
    2283  
    2284 neo_Numpad4: 
    2285    EbeneAktualisieren() 
    2286    if      ((Ebene = 1) and (NumLock = 0)) 
    2287       send {blind}{NumpadLeft} 
    2288    else if ((Ebene = 2) and (NumLock = 1)) 
    2289       send {blind}{Shift up}{NumpadLeft}{Shift down} 
    2290    else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
    2291    { 
    2292       if !(CheckCompUni("Num_1",0x00BC) ; 1/4 
    2293         or CheckCompUni("1",0x00BE)     ; 1/4 
    2294         or CheckCompUni("Num_3",0x00BE) ; 3/4 
    2295         or CheckCompUni("3",0x00BE))    ; 3/4 
    2296          if (Ebene = 1) 
    2297             send {blind}{Numpad4} 
    2298          else 
    2299             send {blind){Shift up}{Numpad4}{Shift down} 
    2300  
    2301       if (PriorDeadKey = "comp") 
    2302          CompKey := "Num_4" 
    2303    } 
    2304    else if (Ebene = 3) 
    2305       SendUnicodeChar(0x2190)     ; leftarrow 
    2306    else if ((Ebene = 4) or (Ebene = 5)) 
    2307       SendUnicodeChar(0x2282)  ; subset of 
    2308 return 
    2309  
    2310 neo_Numpad5: 
    2311    EbeneAktualisieren() 
    2312    if      ((Ebene = 1) and (NumLock = 0)) 
    2313       send {blind}{NumpadClear} 
    2314    else if ((Ebene = 2) and (NumLock = 1)) 
    2315       send {blind}{Shift up}{NumpadClear}{Shift down} 
    2316    else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
    2317    { 
    2318       if !(CheckCompUni("Num_1",0x2155) ; 1/5 
    2319         or CheckCompUni("1",0x2155)     ; 1/5 
    2320         or CheckCompUni("Num_2",0x2156) ; 2/5 
    2321         or CheckCompUni("2",0x2156)     ; 2/5 
    2322         or CheckCompUni("Num_3",0x2157) ; 3/5 
    2323         or CheckCompUni("3",0x2157)     ; 3/5 
    2324         or CheckCompUni("Num_4",0x2158) ; 4/5 
    2325         or CheckCompUni("4",0x2158))    ; 4/5 
    2326          if (Ebene = 1) 
    2327             send {blind}{Numpad5} 
    2328          else 
    2329             send {blind){Shift up}{Numpad5}{Shift down} 
    2330  
    2331       if (PriorDeadKey = "comp") 
    2332          CompKey := "Num_5" 
    2333    } 
    2334    else if (Ebene = 3) 
    2335       SendUnicodeChar(0x221E) ; INFINITY 
    2336    else if ((Ebene = 4) or (Ebene = 5)) 
    2337       SendUnicodeChar(0x220B) ; enth�lt das Element 
    2338 return 
    2339  
    2340 neo_Numpad6: 
    2341    EbeneAktualisieren() 
    2342    if      ((Ebene = 1) and (NumLock = 0)) 
    2343       send {blind}{NumpadRight} 
    2344    else if ((Ebene = 2) and (NumLock = 1)) 
    2345       send {blind}{Shift up}{NumpadRight}{Shift down} 
    2346    else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
    2347    { 
    2348       if !(CheckCompUni("Num_1",0x2159) ; 1/6 
    2349         or CheckCompUni("1",0x2159)     ; 1/6 
    2350         or CheckCompUni("Num_5",0x215A) ; 5/6 
    2351         or CheckCompUni("5",0x215A))    ; 5/6 
    2352          if (Ebene = 1) 
    2353             send {blind}{Numpad6} 
    2354          else 
    2355             send {blind){Shift up}{Numpad6}{Shift down} 
    2356  
    2357       if (PriorDeadKey = "comp") 
    2358          CompKey := "Num_6" 
    2359    } 
    2360    else if (Ebene = 3) 
    2361       SendUnicodeChar(0x2192)     ; rightarrow 
    2362    else if ((Ebene = 4) or (Ebene = 5)) 
    2363       SendUnicodeChar(0x2283) ; superset of 
    2364 return 
    2365  
    2366 neo_Numpad1: 
    2367    EbeneAktualisieren() 
    2368    if      ((Ebene = 1) and (NumLock = 0)) 
    2369       send {blind}{NumpadEnd} 
    2370    else if ((Ebene = 2) and (NumLock = 1)) 
    2371       send {blind}{Shift up}{NumpadEnd}{Shift down} 
    2372    else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
    2373    { 
    2374       if (Ebene = 1) 
    2375          send {blind}{Numpad1} 
    2376       else 
    2377          send {blind){Shift up}{Numpad1}{Shift down} 
    2378  
    2379       if (PriorDeadKey = "comp") 
    2380          CompKey := "Num_1" 
    2381    } 
    2382    else if (Ebene = 3) 
    2383       SendUnicodeChar(0x2194) ; Links-Rechts-Pfeil 
    2384    else if ((Ebene = 4) or (Ebene = 5)) 
    2385       SendUnicodeChar(0x2264)   ; leq 
    2386 return 
    2387  
    2388 neo_Numpad2: 
    2389    EbeneAktualisieren() 
    2390    if      ((Ebene = 1) and (NumLock = 0)) 
    2391       send {blind}{NumpadDown} 
    2392    else if ((Ebene = 2) and (NumLock = 1)) 
    2393       send {blind}{Shift up}{NumpadDown}{Shift down} 
    2394    else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
    2395    { 
    2396       if !(CheckCompUni("Num_1",0x00BD) ; 1/2 
    2397         or CheckCompUni("1",0x00BD))    ; 1/2 
    2398          if (Ebene = 1) 
    2399             send {blind}{Numpad2} 
    2400          else 
    2401             send {blind){Shift up}{Numpad2}{Shift down} 
    2402  
    2403       if (PriorDeadKey = "comp") 
    2404          CompKey := "Num_2" 
    2405    } 
    2406    else if (Ebene = 3) 
    2407       SendUnicodeChar(0x2193)     ; downarrow 
    2408    else if ((Ebene = 4) or (Ebene = 5)) 
    2409       SendUnicodeChar(0x222A)  ; vereinigt 
    2410 return 
    2411  
    2412 neo_Numpad3: 
    2413    EbeneAktualisieren() 
    2414    if      ((Ebene = 1) and (NumLock = 0)) 
    2415       send {blind}{NumpadPgDn} 
    2416    else if ((Ebene = 2) and (NumLock = 1)) 
    2417       send {blind}{Shift up}{NumpadPgDn}{Shift down} 
    2418    else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
    2419    { 
    2420       if !(CheckCompUni("Num_1",0x2153) ; 1/3 
    2421         or CheckCompUni("1",0x2154)     ; 1/3 
    2422         or CheckCompUni("Num_2",0x2154) ; 2/3 
    2423         or CheckCompUni("2",0x2154))    ; 2/3 
    2424          if (Ebene = 1) 
    2425             send {blind}{Numpad3} 
    2426          else 
    2427             send {blind){Shift up}{Numpad3}{Shift down} 
    2428  
    2429       if (PriorDeadKey = "comp") 
    2430          CompKey := "Num_3" 
    2431    } 
    2432    else if (Ebene = 3) 
    2433       SendUnicodeChar(0x21CC) ; RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON 
    2434    else if ((Ebene = 4) or (Ebene = 5)) 
    2435       SendUnicodeChar(0x2265)  ; geq 
    2436 return 
    2437  
    2438 neo_Numpad0: 
    2439    EbeneAktualisieren() 
    2440    if      ((Ebene = 1) and (NumLock = 0)) 
    2441       send {blind}{NumpadIns} 
    2442    else if ((Ebene = 2) and (NumLock = 1)) 
    2443       send {blind}{Shift up}{NumpadIns}{Shift down} 
    2444    else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
    2445    { 
    2446       if (Ebene = 1) 
    2447          send {blind}{Numpad0} 
    2448       else 
    2449          send {blind){Shift up}{Numpad0}{Shift down} 
    2450  
    2451       if (PriorDeadKey = "comp") 
    2452          CompKey := "Num_0" 
    2453    } 
    2454    else if (Ebene = 3) 
    2455       send {blind}`% 
    2456    else if ((Ebene = 4) or (Ebene = 5)) 
    2457       send �  
    2458 return 
    2459  
    2460 neo_NumpadDot: 
    2461    EbeneAktualisieren() 
    2462    if      ((Ebene = 1) and (NumLock = 0)) 
    2463       send {blind}{NumpadDel} 
    2464    else if ((Ebene = 2) and (NumLock = 1)) 
    2465       send {blind}{Shift up}{NumpadDel}{Shift down} 
    2466    else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0))) 
    2467       if (Ebene = 1) 
    2468          send {blind}{NumpadDot} 
    2469       else 
    2470          send {blind){Shift up}{NumpadDot}{Shift down} 
    2471    else if (Ebene = 3) 
    2472       send {blind}. 
    2473    else if ((Ebene = 4) or (Ebene = 5)) 
    2474       send `, 
    2475 return 
    2476  
    2477  
    2478 /* 
    2479    ------------------------------------------------------ 
    2480    Sondertasten 
    2481    ------------------------------------------------------ 
     2506 
     2507  Sondertasten 
     2508 
    24822509*/ 
    24832510*space:: 
    2484    if ((einHandNeo)) 
    2485     spacepressed := 1 
    2486    else 
    2487     goto neo_SpaceUp 
     2511  if ((einHandNeo)) 
     2512   spacepressed := 1 
     2513  else 
     2514   goto neo_SpaceUp 
    24882515return 
    24892516 
    24902517*space up:: 
    2491    if ((einHandNeo)) 
    2492    { 
    2493      if ((keypressed)) 
    2494      { 
    2495        keypressed := 0 
    2496        spacepressed := 0     
    2497      } 
    2498      else 
    2499      { 
    2500         goto neo_SpaceUp 
    2501      } 
    2502    } 
    2503    else 
    2504      { } ;do nothing 
    2505 return  
     2518  if ((einHandNeo)) 
     2519  { 
     2520    if ((keypressed)) 
     2521    { 
     2522     keypressed := 0 
     2523     spacepressed := 0 
     2524    } 
     2525    else 
     2526    { 
     2527      goto neo_SpaceUp 
     2528    } 
     2529  } 
     2530  else 
     2531    { } ;do nothing 
     2532return 
    25062533 
    25072534neo_SpaceUp: 
    2508      EbeneAktualisieren() 
    2509      if      ((Ebene = 1) and !(CheckComp3Uni("r_1",0x2170)          ; r�misch i 
    2510                              or CheckComp3Uni("R_1",0x2160)))      ; r�misch I  
    2511         Send {blind}{Space} 
    2512      else if  ((Ebene = 2) or (Ebene = 3)) 
    2513         Send {blind}{Space} 
    2514      else if (Ebene = 4) 
    2515         if (PriorDeadKey = "c1")            ; circumflex 
    2516            BSSendUnicodeChar(0x2070) 
    2517         else if (PriorDeadKey = "c5")       ; toter - 
    2518            BSSendUnicodeChar(0x2080) 
    2519         else 
    2520            Send {blind}{NumPad0} 
    2521      else if (Ebene = 5) 
    2522         SendUnicodeChar(0x00A0)   ; gesch�tztes Leerzeichen 
    2523      else if (Ebene = 6) 
    2524         SendUnicodeChar(0x202F) ; schmales Leerzeichen 
    2525      DeadKey := ""   CompKey := "" 
    2526   spacepressed := 0      
    2527   keypressed := 0        
     2535    EbeneAktualisieren() 
     2536    if ((Ebene = 1) and !(CheckComp3Uni("r_1",0x2170)       ; r�misch i 
     2537                    or CheckComp3Uni("R_1",0x2160)))    ; r�misch I 
     2538      Send {blind}{Space} 
     2539    else if  ((Ebene = 2) or (Ebene = 3)) 
     2540      Send {blind}{Space} 
     2541    else if (Ebene = 4 and !(CheckDeadUni("c1",0x2070) 
     2542                       or CheckDeadUni("c5",0x2080))) 
     2543      Send {blind}{NumPad0} 
     2544    else if (Ebene = 5) 
     2545      SendUnicodeChar(0x00A0)  ; gesch�tztes Leerzeichen 
     2546    else if (Ebene = 6) 
     2547      SendUnicodeChar(0x202F) ; schmales Leerzeichen 
     2548    DeadKey := ""  CompKey := "" 
     2549  spacepressed := 0 
     2550  keypressed := 0 
    25282551return 
    25292552 
    25302553/* 
    2531    Folgende Tasten sind nur aufgef�hrt, um PriorDeadKey zu leeren. 
    2532    Irgendwie sieht das noch nicht sch�n aus. Vielleicht l�sst sich dieses 
    2533    Problem irgendwie eleganter l�sen... 
    2534     
    2535    Nachtrag: 
    2536    Weil es mit Alt+Tab Probleme gab, wird hier jetzt erstmal rumgeflickschustert, 
    2537    bis eine allgemeinere L�sung gefunden wurde. 
     2554  Folgende Tasten sind nur aufgef�hrt, um PriorDeadKey zu leeren. 
     2555  Irgendwie sieht das noch nicht sch�n aus. Vielleicht l�sst sich dieses 
     2556  Problem irgendwie eleganter l�sen... 
     2557 
     2558  Nachtrag: 
     2559  Weil es mit Alt+Tab Probleme gab, wird hier jetzt erstmal rumgeflickschustert, 
     2560  bis eine allgemeinere L�sung gefunden wurde. 
    25382561*/ 
    25392562 
    25402563*Enter:: 
    2541    if (not(lernModus) or lernModus_std_Return) 
    2542    { 
    2543      send {Blind}{Enter} 
    2544      DeadKey := ""   CompKey := "" 
    2545    } 
     2564  if (not(lernModus) or lernModus_std_Return) 
     2565  { 
     2566    send {Blind}{Enter} 
     2567    DeadKey := ""  CompKey := "" 
     2568  } 
    25462569return 
    25472570 
    25482571*Backspace:: 
    2549    if (not(lernModus) or lernModus_std_Backspace) 
    2550    { 
    2551      send {Blind}{Backspace} 
    2552      DeadKey := ""   CompKey := "" 
    2553    } 
     2572  if (not(lernModus) or lernModus_std_Backspace) 
     2573  { 
     2574    send {Blind}{Backspace} 
     2575    DeadKey := ""  CompKey := "" 
     2576  } 
    25542577return 
    25552578 
    25562579*Del:: 
    2557    if (not(lernModus) or lernModus_std_Entf) 
    2558      send {Blind}{Del} 
     2580  if (not(lernModus) or lernModus_std_Entf) 
     2581    send {Blind}{Del} 
    25592582return 
    25602583 
    25612584*Ins:: 
    2562    if (not(lernModus) or lernModus_std_Einf) 
    2563      send {Blind}{Ins} 
    2564 return 
    2565  
    2566  
    2567  
     2585  if (not(lernModus) or lernModus_std_Einf) 
     2586    send {Blind}{Ins} 
     2587return 
    25682588 
    25692589 
     
    25732593 
    25742594neo_tab: 
    2575    if (IsMod3Pressed()) ;# 
    2576    { 
    2577       #Include *i %a_scriptdir%\ComposeLaunch.ahk 
    2578       #Include *i %a_scriptdir%\Source\ComposeLaunch.ahk 
    2579       DeadKey := "comp" 
    2580       CompKey := "" 
    2581    } 
    2582    else 
    2583    { 
    2584       send {blind}{Tab} 
    2585       DeadKey := "" 
    2586       CompKey := "" 
    2587    } 
     2595  if (IsMod3Pressed()) ;# 
     2596  { 
     2597    DeadKey := "comp" 
     2598    CompKey := "" 
     2599  } 
     2600  else 
     2601  { 
     2602    send {blind}{Tab} 
     2603    DeadKey := "" 
     2604    CompKey := "" 
     2605  } 
    25882606return 
    25892607 
    25902608*Home:: 
    2591    if (not(lernModus) or lernModus_std_Pos1) 
    2592    { 
    2593      send {Blind}{Home} 
    2594      DeadKey := ""   CompKey := "" 
    2595    } 
     2609  if (not(lernModus) or lernModus_std_Pos1) 
     2610  { 
     2611    send {Blind}{Home} 
     2612    DeadKey := ""  CompKey := "" 
     2613  } 
    25962614return 
    25972615 
    25982616*End:: 
    2599    if (not(lernModus) or lernModus_std_Ende) 
    2600    { 
    2601      send {Blind}{End} 
    2602      DeadKey := ""   CompKey := "" 
    2603    } 
     2617  if (not(lernModus) or lernModus_std_Ende) 
     2618  { 
     2619    send {Blind}{End} 
     2620    DeadKey := ""  CompKey := "" 
     2621  } 
    26042622return 
    26052623 
    26062624*PgUp:: 
    2607    if (not(lernModus) or lernModus_std_PgUp) 
    2608    { 
    2609      send {Blind}{PgUp} 
    2610      DeadKey := ""   CompKey := "" 
    2611    } 
     2625  if (not(lernModus) or lernModus_std_PgUp) 
     2626  { 
     2627    send {Blind}{PgUp} 
     2628    DeadKey := ""  CompKey := "" 
     2629  } 
    26122630return 
    26132631 
    26142632*PgDn:: 
    2615    if (not(lernModus) or lernModus_std_PgDn) 
    2616    { 
    2617      send {Blind}{PgDn} 
    2618      DeadKey := ""   CompKey := "" 
    2619    } 
     2633  if (not(lernModus) or lernModus_std_PgDn) 
     2634  { 
     2635    send {Blind}{PgDn} 
     2636    DeadKey := ""  CompKey := "" 
     2637  } 
    26202638return 
    26212639 
    26222640*Up:: 
    2623    if (not(lernModus) or lernModus_std_Hoch) 
    2624    { 
    2625      send {Blind}{Up} 
    2626      DeadKey := ""   CompKey := "" 
    2627    } 
     2641  if (not(lernModus) or lernModus_std_Hoch) 
     2642  { 
     2643    send {Blind}{Up} 
     2644    DeadKey := ""  CompKey := "" 
     2645  } 
    26282646return 
    26292647 
    26302648*Down:: 
    2631    if (not(lernModus) or lernModus_std_Runter) 
    2632    { 
    2633      send {Blind}{Down} 
    2634      DeadKey := ""   CompKey := "" 
    2635    } 
     2649  if (not(lernModus) or lernModus_std_Runter) 
     2650  { 
     2651    send {Blind}{Down} 
     2652    DeadKey := ""  CompKey := "" 
     2653  } 
    26362654return 
    26372655 
    26382656*Left:: 
    2639    if (not(lernModus) or lernModus_std_Links) 
    2640    { 
    2641      send {Blind}{Left} 
    2642      DeadKey := ""   CompKey := "" 
    2643    } 
     2657  if (not(lernModus) or lernModus_std_Links) 
     2658  { 
     2659    send {Blind}{Left} 
     2660    DeadKey := ""  CompKey := "" 
     2661  } 
    26442662return 
    26452663 
    26462664*Right:: 
    2647    if (not(lernModus) or lernModus_std_Rechts) 
    2648    { 
    2649      send {Blind}{Right} 
    2650      DeadKey := ""   CompKey := "" 
    2651    } 
     2665  if (not(lernModus) or lernModus_std_Rechts) 
     2666  { 
     2667    send {Blind}{Right} 
     2668    DeadKey := ""  CompKey := "" 
     2669  } 
    26522670return 
    26532671 
     
    27802798 
    27812799/* 
    2782    ------------------------------------------------------ 
    2783    Funktionen 
    2784    ------------------------------------------------------ 
     2800  Funktionen 
    27852801*/ 
    27862802 
     
    28002816   CompKey := "" 
    28012817   Ebene12 := 0 
     2818   Ebene7 := 0 
     2819   Ebene8 := 0 
    28022820   Modstate := IsShiftPressed() . IsMod3Pressed() . IsMod4Pressed() 
    28032821 
     
    28212839         Ebene = 6                 ; Ebene 6: Mod3+Mod4 
    28222840     else if (Modstate = "101") 
     2841     { 
    28232842         Ebene = 4                 ; Ebene 7: Shift+Mod4 impliziert Ebene 4 
     2843         Ebene7 = 1 
     2844     } 
    28242845     else if (Modstate = "111") 
     2846     { 
    28252847         Ebene = 6                 ; Ebene 8: Shift+Mod3+Mod4 impliziert Ebene 6 
     2848         Ebene8 = 1 
     2849     } 
    28262850 
    28272851   Ebene12 := ((Ebene = 1) or (Ebene = 2)) 
     
    28322856     NumLock = 0 
    28332857} 
    2834  
    28352858 
    28362859 
     
    29302953} 
    29312954 
    2932 DeadSilence = 0 
    2933  
    29342955deadAsc(val) 
    29352956{ 
     
    30363057    return 0 
    30373058} 
    3038  
    3039 DeadCompose = 0 
    30403059 
    30413060compAsc(val) 
     
    31973216    CompKey := c 
    31983217} 
    3199  
    3200 ;Tote/Untote Tasten 
    3201 *F9:: 
    3202   if (isMod4pressed()) 
    3203     DeadSilence :=  not(DeadSilence) 
    3204   else 
    3205     send {blind}{F9} 
    3206 return 
    3207  
    3208 ;Tote/Untote Compose 
    3209 *F10:: 
    3210   if (isMod4pressed()) 
    3211     DeadCompose :=  not(DeadCompose) 
    3212   else 
    3213     send {blind}{F10} 
    3214 return 
    3215  
    3216 ;Lang-s-Tastatur: 
    3217 *F11:: 
    3218   if (isMod4pressed()) 
    3219     LangSTastatur := not(LangSTastatur) ; schaltet die Lang-s-Tastatur ein und aus 
    3220   else 
    3221     send {blind}{F11} 
    3222 return 
    32233218 
    32243219