root/windows/autohotkey/neo20-all-in-one.ahk @ 558

Revision 558, 110.7 KB (checked in by matthias, 5 years ago)

paak->paar

  • Property svn:keywords set to Date Revision
Line 
1/*
2    Titel:        NEO 2.0 beta Autohotkey-Treiber
3    $Revision$
4    $Date$
5    Autor:        Stefan Mayer <stm (at) neo-layout.org>
6    Basiert auf:  neo20-all-in-one.ahk vom 29.06.2007
7       
8    TODO:         - ausgiebig testen... (besonders Vollst�ndigkeit bei Deadkeys)
9                  - Bessere L�sung f�r das leeren von PriorDeadKey finden, damit die Sondertasten
10                    nicht mehr abgefangen werden m�ssen.
11                  - Alt+Tab+Shift sollte Alt+Tab umkehrt
12                  - Testen ob die Capslockl�sung (siehe *1:: ebene 1) auch f�r Numpad gebraucht wird
13                  - Sind Ebenen vom Touchpad noch richtig?
14   
15    Ideen:        - Symbol �ndern (Neo-Logo abwarten)
16                  - bei Ebene 4 rechte Hand (Numpad) z.B. Numpad5 statt 5 senden
17    CHANGEHISTORY:
18                  Aktuelle Revision (von Matthias Berg):
19                  - Icon-Bug behoben
20                    * Hotkeys d�rfen nicht vor der folgenden Zeile stehen:
21                     "menu, tray, icon, neo.ico,,1"
22                  - lernModus-Konfigurations-Bug behoben: or statt and(not)
23                  - Ein paar leere Else-F�lle eingebaut (Verst�ndlichkeit, m�gliche Compilerprobleme vermeiden)   
24                  Revision 556 (von Matthias Berg):
25                  - lernModus (an/aus mit Strg+Komma)
26                    * im Skript konfigurierbar
27                    * Schaltet z.B. Qwertz Tasten aus, die es auf der 4. Ebene gibt (Return, Backspace,...)
28                    * Kann auch Backspace und/oder Entfernen der 4. Ebene ausschalten (gut zum Lernen richtig zu schreiben)
29                  - Bug aufgetaucht: Icons werden nicht mehr angezeigt
30                  Revision 544 (von Stefan Mayer):
31                  - ,.:; auf dem Mod4-Ziffernblock an die aktuelle Referenz angepasst
32                  - Versionen von rho, theta, kappa und phi an die aktuelle Referenz angepasst
33                  Revision 542 (von Matthias Berg):
34                  - bei EinHandNeo ist jetzt Space+y auch Mod4
35                  - AltGr-Bug  hoffentlich wieder behoben. Diesmal mit extra altGrPressed Variable
36                  - nurEbenenFuenfUndSechs umbenannt in ahkTreiberKombi und auf Ebene 4 statt 5 und 6 ge�ndert
37                  Revision 540 (von Matthias Berg):
38                  - stark �berarbeitet um Wartbarkeit zu erh�hen und Redundanz zu veringern
39                  - nurEbenenFuenfUndSechs sollte nun auch auf Neo Treiber statt Qwertz laufen
40                    * aber es muss noch jemand testen
41                    * Problem: was kann man abfangen, wenn eine tote Taste gedr�ckt wird
42                 - einHandNeo:
43                    * An-/Ausschalten mit STRG+Punkt
44                    * Buchstaben der rechten Hand werden mit Space zur linken Hand
45                    * Nebeneffekt: es gibt beim Festhalten von Space keine wiederholten Leerzeichen mehr
46                  Revision 532 (von Matthias Berg):
47                  - BildschirmTastatur
48                    * aktiviert mit strg+F1 bis 7 schaltet Keyboard ein oder aus
49                    * strg+F7 zeigt die zuletzt angezeigte Ebene an (und wieder aus).
50                    * strg+F8 schaltet AlwaysOnTop um   
51                  Revision 529 (von Stefan Mayer):
52                                  - Icon wird automatisch geladen, falls .ico-Dateien im selbem Ordner
53                                  - in der .exe sind die .ico mitgespeichert und werden geladen
54                                  Revision 528 (von Matthias Berg):
55                  - Neo-Icon
56                  - Neo-Prozess jetzt automatisch auf hoher Prioritaet
57                    (siehe globale Schalter)
58                  - Mod3-Lock (nur wenn rechtes Mod3 zuerst gedr�ckt wird, andere L�sung f�hrte zum Caps-Bug)
59                  - Mod4-Lock (nur wenn das linke Mod4 zuerst gedr�ckt wird, andere L�sung f�hte zum AltGr-Bug)
60                  - Ein paar falsche Zeichen korrigiert
61                  Revision 527 (von Matthias Berg):
62                  - AltGr Problem hoffentlich behoben
63                  - Umschalt+Mod4 Bug behoben
64                  Revision 526 (von Matthias Berg):
65                  - Ebenen 1 bis 4 ausschalten per Umschalter siehe erste Codezeile
66                     nurEbenenFuenfUndSechs = 0
67                  - Mod4-Lock durch Mod4+Mod4
68                  - EbenenAktualisierung neu geschrieben
69                  - Ebene 6 �ber Mod3+Mod4
70                  - Ebenen (besonders Matheebene) an Referenz angepasst
71                    (allerdings kaum um Ebenen 1&2 gek�mmert, besonders Compose k�nnte noch �berholt werden)
72                  Revision 525 (von Matthias Berg):
73                  - Capslock bei Zahlen und Sonderzeichen ber�cksichtigt
74                  Revision 524 (von Matthias Berg):
75                  - umgekehrtes ^ f�r o, a, �,i  sowie f�r die grossen vokale ( 3. ton chinesisch)
76                    � damit wird jetzt PinYin vollst�ndig unterst�tzt caron, macron, akut, grave auf uiaeo�
77                  - Sonderzeichen senden wieder blind -> Shortcuts funktionieren, Capslock ist leider Shiftlock
78                  Revision 523 (von Matthias Berg):
79                                - CapsLock geht jetzt auch bei allen Zeichen ('send Zeichen' statt 'send {blind} Zeichen')
80                  - vertikale Ellipse eingebaut
81                  - Umschalt+Umschalt f�r Capslock statt Mod3+Mod3
82                  - bei Suspend wird jetzt wirklich togglesuspend aufgerufen (auch beim aktivieren per shift+pause)
83                  Revsion 490 (von Stefan Mayer):
84                  - SUBSCRIPT von 0 bis 9 sowie (auf Ziffernblock) + und -
85                    � auch bei Ziffernblock auf der 5. Ebene
86                  - Kein Parsen �ber die Zwischenablage mehr
87                  - Vista-kompatibel
88                  - Compose-Taste
89                    � Br�che (auf Zahlenreihe und Hardware-Ziffernblock)
90                    � r�mische Zahlen
91                    � Ligaturen und Copyright
92*/
93
94
95/******************
96 Globale Schalter *
97*****************
98*/
99; Sollen Ebenen 1-4 ignoriert werden? (kann z.B. vom dll Treiber �bernommen werden) Ja = 1, Nein = 0
100ahkTreiberKombi := 0
101einHandNeo := 0
102lernModus := 0
103
104Process, Priority,, High
105
106if ( FileExist("ebene1.png") && FileExist("ebene2.png") && FileExist("ebene3.png") && FileExist("ebene4.png") && FileExist("ebene5.png") && FileExist("ebene6.png") )
107  zeigeBildschirmTastatur = 1
108
109if ( FileExist("neo.ico") && FileExist("neo_disabled.ico") )
110  iconBenutzen = 1
111FileInstall, neo.ico, neo.ico, 1
112FileInstall, neo_disabled.ico, neo_disabled.ico, 1
113
114
115/*************************
116 lernModus Konfiguration *
117 nur relevant wenn       *
118 lernModus = 1           *
119 Strg+Komma schaltet um  *   
120**************************
121*/
122; 0 = aus, 1 = an
123
124
125; die Nachfolgenden sind n�tzlich um sich die Qwertz-Tasten abzugew�hnen, da alle auf der 4. Ebene vorhanden.
126lernModus_std_Return = 0
127lernModus_std_Backspace = 0
128lernModus_std_PgUp = 0
129lernModus_std_PgDn = 0
130lernModus_std_Einf = 0
131lernModus_std_Entf = 0
132lernModus_std_Pos0 = 0
133lernModus_std_Ende = 0
134lernModus_std_Hoch = 0
135lernModus_std_Runter = 0
136lernModus_std_Links = 0
137lernModus_std_Rechts = 0
138lernModus_std_ZahlenReihe = 0
139
140
141
142; im folgenden kann man auch noch ein paar Tasten der 4. Ebene deaktivieren
143; n�tzlich um sich zu zwingen, richtig zu schreiben
144lernModus_neo_Backspace = 0
145lernModus_neo_Entf = 1
146
147
148 
149
150; aus Noras script kopiert:
151#usehook on
152#singleinstance force
153#LTrim
154  ; Quelltext kann einger�ckt werden,
155  ; msgbox ist trotzdem linksb�ndig
156
157SetTitleMatchMode 2
158SendMode Input 
159
160name    = Neo 2.0
161enable  = Aktiviere %name%
162disable = Deaktiviere %name%
163
164; �berpr�fung auf deutsches Tastaturlayout
165; ----------------------------------------
166
167regread, inputlocale, HKEY_CURRENT_USER, Keyboard Layout\Preload, 1
168regread, inputlocalealias, HKEY_CURRENT_USER
169     , Keyboard Layout\Substitutes, %inputlocale%
170if inputlocalealias <>
171   inputlocale = %inputlocalealias%
172if inputlocale <> 00000407
173{
174   suspend   
175   regread, inputlocale, HKEY_LOCAL_MACHINE
176     , SYSTEM\CurrentControlSet\Control\Keyboard Layouts\%inputlocale%
177     , Layout Text
178   msgbox, 48, Warnung!,
179     (
180     Nicht kompatibles Tastaturlayout:   
181     `t%inputlocale%   
182     `nDas deutsche QWERTZ muss als Standardlayout eingestellt 
183     sein, damit %name% wie erwartet funktioniert.   
184     `n�ndern Sie die Tastatureinstellung unter
185     `tSystemsteuerung   
186     `t-> Regions- und Sprachoptionen   
187     `t-> Sprachen
188     `t-> Details...   `n
189     )
190   exitapp
191}
192
193; Men� des Systray-Icons
194; ----------------------
195
196if (iconBenutzen)
197   menu, tray, icon, neo.ico,,1
198menu, tray, nostandard
199menu, tray, add, �ffnen, open
200   menu, helpmenu, add, About, about
201   menu, helpmenu, add, Autohotkey-Hilfe, help
202   menu, helpmenu, add
203   menu, helpmenu, add, http://&autohotkey.com/, autohotkey
204   menu, helpmenu, add, http://www.neo-layout.org/, neo
205menu, tray, add, Hilfe, :helpmenu
206menu, tray, add
207menu, tray, add, %disable%, togglesuspend
208menu, tray, default, %disable%
209menu, tray, add
210menu, tray, add, Edit, edit
211menu, tray, add, Reload, reload
212menu, tray, add
213menu, tray, add, Nicht im Systray anzeigen, hide
214menu, tray, add, %name% beenden, exitprogram
215menu, tray, tip, %name%
216
217
218/*
219   Variablen initialisieren
220*/
221
222Ebene = 1
223PriorDeadKey := ""
224
225
226 
227
228
229/*
230   EinHandNeo
231*/
232spacepressed := 0
233keypressed:= 0
234
235; Reihe 1
236gespiegelt_7 = neo_6
237gespiegelt_8 = neo_5
238gespiegelt_9 = neo_4
239gespiegelt_0 = neo_3
240gespiegelt_strich = neo_2
241gespiegelt_tot2 = neo_1
242
243; Reihe 2
244gespiegelt_k = neo_w
245gespiegelt_h = neo_c
246gespiegelt_g = neo_l
247gespiegelt_f = neo_v
248gespiegelt_q = neo_x
249gespiegelt_sz = neo_tab
250gespiegelt_tot3 = neo_tot1
251
252; Reihe 3
253gespiegelt_s = neo_o
254gespiegelt_n = neo_e
255gespiegelt_r = neo_a
256gespiegelt_t = neo_i
257gespiegelt_d = neo_u
258
259; Reihe 4
260gespiegelt_b = neo_z
261gespiegelt_m = neo_p
262gespiegelt_komma = neo_�
263gespiegelt_punkt = neo_�
264gespiegelt_j = neo_�
265
266
267
268/*
269   ------------------------------------------------------
270   Modifier
271   ------------------------------------------------------
272*/
273
274
275; CapsLock durch Umschalt+Umschalt
276;*CapsLock::return ; Nichts machen beim Capslock release event (weil es Mod3 ist)
277
278*#::return ; Nichts machen beim # release event (weil es Mod3 ist)
279
280;RShift wenn vorher LShift gedr�ckt wurde
281LShift & ~RShift::     
282      if GetKeyState("CapsLock","T")
283      {
284         setcapslockstate, off
285      }
286      else
287      {
288         setcapslockstate, on
289      }
290return
291
292;LShift wenn vorher RShift gedr�ckt wurde
293RShift & ~LShift::
294      if GetKeyState("CapsLock","T")
295      {
296         setcapslockstate, off
297      }
298      else
299      {
300         setcapslockstate, on
301      }
302return
303
304; Mod4-Lock durch Mod4+Mod4
305IsMod4Locked := 0
306< & *SC138::
307      if (IsMod4Locked)
308      {
309         MsgBox Mod4-Feststellung aufgebehoben
310         IsMod4Locked = 0
311      }
312      else
313      {
314         MsgBox Mod4 festgestellt: Um Mod4 wieder zu l�sen dr�cke beide Mod4 Tasten gleichzeitig
315         IsMod4Locked = 1
316      }
317return
318*SC138::
319 altGrPressed := 1
320return  ; Damit AltGr nicht extra etwas schickt und als stiller Modifier geht.
321*SC138 up::
322 altGrPressed := 0
323return
324
325/* ; das folgende wird seltsamerweise nicht gebraucht :)
326SC138 & *<::
327      if (IsMod4Locked)
328      {
329         MsgBox Mod4-Feststellung aufgebehoben
330         IsMod4Locked = 0
331      }
332      else
333      {
334         MsgBox Mod4 festgestellt: Um Mod4 wieder zu l�sen dr�cke beide Mod4 Tasten gleichzeitig
335         IsMod4Locked = 1
336      }
337return
338
339*/
340 
341 ; Mod3-Lock durch Mod3+Mod3
342IsMod3Locked := 0
343# & *Capslock::
344    if (GetKeyState("#","P"))
345    {
346      if (IsMod3Locked)
347      {
348         MsgBox Mod3-Feststellung aufgebehoben
349         IsMod3Locked = 0
350      }
351      else
352      {
353         MsgBox Mod3 festgestellt: Um Mod3 wieder zu l�sen dr�cke beide Mod3 Tasten gleichzeitig
354         IsMod3Locked = 1
355      }
356    }
357    else
358    {
359      MsgBox nothing
360      return
361    }
362return
363
364;Capslock::MsgBox hallo
365*Capslock:: return
366/*
367Capslock & *#::
368      if (IsMod3Locked)
369      {
370         MsgBox Mod3-Feststellung aufgebehoben
371         IsMod3Locked = 0
372      }
373      else
374      {
375         MsgBox Mod3 festgestellt: Um Mod3 wieder zu l�sen dr�cke beide Mod3 Tasten gleichzeitig
376         IsMod3Locked = 1
377      }
378return
379*/
380 
381/*
382;  Wird nicht mehr gebraucht weil jetzt auf b (bzw. *n::)
383; KP_Decimal durch Mod4+Mod4
384*<::
385*SC138::
386   if GetKeyState("<","P") and GetKeyState("SC138","P")
387   {
388      send {numpaddot}
389   }
390return
391 
392*/
393
394/*
395   ------------------------------------------------------
396   QWERTZ->Neo umwandlung
397   ------------------------------------------------------
398*/
399; Reihe 1
400*^::goto neo_tot1
401*1::goto neo_1
402*2::goto neo_2
403*3::goto neo_3
404*4::goto neo_4
405*5::goto neo_5
406*6::goto neo_6
407*7::
408     if( not(einHandNeo) or not(spacepressed) )
409       goto neo_7
410     else
411      {
412        keypressed := 1
413        goto %gespiegelt_7%
414      }
415return
416*8::
417     if( not(einHandNeo) or not(spacepressed) )
418       goto neo_8
419     else
420      {
421        keypressed := 1
422        goto %gespiegelt_8%
423      }
424return
425*9::
426     if( not(einHandNeo) or not(spacepressed) )
427       goto neo_9
428     else
429      {
430        keypressed := 1
431        goto %gespiegelt_9%
432      }
433return
434*0::
435     if( not(einHandNeo) or not(spacepressed) )
436       goto neo_0
437     else
438      {
439        keypressed := 1
440        goto %gespiegelt_0%
441      }
442return
443*�::
444  if ( not(ahkTreiberKombi) )
445  {
446       if( not(einHandNeo) or not(spacepressed) )
447       goto neo_strich
448     else
449      {
450        keypressed := 1
451        goto %gespiegelt_strich%
452      }
453   }
454  else
455  {
456     goto neo_sz   
457  }
458*�::goto neo_tot2
459; Reihe 2
460*Tab::goto neo_tab
461*q::
462  if ( not(ahkTreiberKombi) )
463  {
464     goto neo_x
465  }
466  else
467  {
468     goto neo_q   
469  }
470*w::
471  if ( not(ahkTreiberKombi) )
472  {
473         goto neo_v
474  }
475  else
476  {
477     goto neo_w   
478  }
479*e::
480  if ( not(ahkTreiberKombi) )
481  {
482         goto neo_l
483  }
484  else
485  {
486     goto neo_e   
487  }
488*r::
489  if ( not(ahkTreiberKombi) )
490  {
491     goto neo_c
492  }
493  else
494  {
495     goto neo_r   
496  }
497*t::
498  if ( not(ahkTreiberKombi) )
499  {
500     goto neo_w
501  }
502  else
503  {
504     goto neo_t   
505  }
506*z::
507  if ( not(ahkTreiberKombi) )
508  {
509     if( not(einHandNeo) or not(spacepressed) )
510       goto neo_k
511     else
512      {
513        keypressed := 1
514        goto %gespiegelt_k%
515      }
516  }
517  else
518  {
519     goto neo_z   
520  }
521*u::
522  if ( not(ahkTreiberKombi) )
523  {
524     if( not(einHandNeo) or not(spacepressed) )
525       goto neo_h
526     else
527      {
528        keypressed := 1
529        goto %gespiegelt_h%
530      }
531  }
532  else
533  {
534     goto neo_u   
535  }
536*i::
537  if ( not(ahkTreiberKombi) )
538  {
539     if( not(einHandNeo) or not(spacepressed) )
540       goto neo_g
541     else
542      {
543        keypressed := 1
544        goto %gespiegelt_g%
545      }
546  }
547  else
548  {
549     goto neo_i   
550  }
551*o::
552  if ( not(ahkTreiberKombi) )
553  {
554     if( not(einHandNeo) or not(spacepressed) )
555       goto neo_f
556     else
557      {
558        keypressed := 1
559        goto %gespiegelt_f%
560      }
561  }
562  else
563  {
564     goto neo_o   
565  }
566*p::
567  if ( not(ahkTreiberKombi) )
568  {
569     if( not(einHandNeo) or not(spacepressed) )
570       goto neo_q
571     else
572      {
573        keypressed := 1
574        goto %gespiegelt_q%
575      }
576  }
577  else
578  {
579     goto neo_p   
580  }
581*�::
582  if ( not(ahkTreiberKombi) )
583  {
584     if( not(einHandNeo) or not(spacepressed) )
585       goto neo_sz
586     else
587      {
588        keypressed := 1
589        goto %gespiegelt_sz%
590      }
591  }
592  else
593  {
594     goto neo_�   
595  }
596*+::
597  if ( not(ahkTreiberKombi) )
598  {
599     if( not(einHandNeo) or not(spacepressed) )
600       goto neo_tot3
601     else
602      {
603        keypressed := 1
604        goto %gespiegelt_tot3%
605      }
606  }
607  else
608  { } ; this should never happen
609; Reihe 3
610*a::
611  if ( not(ahkTreiberKombi) )
612  {
613     goto neo_u
614  }
615  else
616  {
617     goto neo_a   
618  }
619*s::
620  if ( not(ahkTreiberKombi) )
621  {
622     goto neo_i
623  }
624  else
625  {
626     goto neo_s   
627  }
628*d::goto neo_a
629  if ( not(ahkTreiberKombi) )
630  {
631     goto neo_a
632  }
633  else
634  {
635     goto neo_d   
636  }
637*f::
638  if ( not(ahkTreiberKombi) )
639  {
640     goto neo_e
641  }
642  else
643  {
644     goto neo_f   
645  }
646*g::
647  if ( not(ahkTreiberKombi) )
648  {
649     goto neo_o
650  }
651  else
652  {
653     goto neo_g   
654  }
655*h::
656  if ( not(ahkTreiberKombi) )
657  {
658     if( not(einHandNeo) or not(spacepressed) )
659       goto neo_s
660     else
661      {
662        keypressed := 1
663        goto %gespiegelt_s%
664      }
665  }
666  else
667  {
668     goto neo_h   
669  }
670*j::
671  if ( not(ahkTreiberKombi) )
672  {
673     if( not(einHandNeo) or not(spacepressed) )
674       goto neo_n
675     else
676      {
677        keypressed := 1
678        goto %gespiegelt_n%
679      }
680  }
681  else
682  {
683     goto neo_j   
684  }
685*k::
686  if ( not(ahkTreiberKombi) )
687  {
688     if( not(einHandNeo) or not(spacepressed) )
689       goto neo_r
690     else
691      {
692        keypressed := 1
693        goto %gespiegelt_r%
694      }
695  }
696  else
697  {
698     goto neo_k   
699  }
700*l::
701  if ( not(ahkTreiberKombi) )
702  {
703     if( not(einHandNeo) or not(spacepressed) )
704       goto neo_t
705     else
706      {
707        keypressed := 1
708        goto %gespiegelt_t%
709      }
710  }
711  else
712  {
713     goto neo_l   
714  }
715*�::
716  if ( not(ahkTreiberKombi) )
717  {
718     if( not(einHandNeo) or not(spacepressed) )
719       goto neo_d
720     else
721      {
722        keypressed := 1
723        goto %gespiegelt_d%
724      }
725  }
726  else
727  {
728     goto neo_�   
729  }
730*�::
731  if ( not(ahkTreiberKombi) )
732  {
733     goto neo_y
734  }
735  else
736  {
737     goto neo_�
738  }
739; Reihe 4
740*y::
741  if ( not(ahkTreiberKombi) )
742  {
743     goto neo_�
744  }
745  else
746  {
747     goto neo_y   
748  }
749*x::
750  if ( not(ahkTreiberKombi) )
751  {
752     goto neo_�
753  }
754  else
755  {
756     goto neo_x   
757  }
758*c::
759  if ( not(ahkTreiberKombi) )
760  {
761     goto neo_�
762  }
763  else
764  {
765     goto neo_c
766  }
767*v::
768  if ( not(ahkTreiberKombi) )
769  {
770     goto neo_p
771  }
772  else
773  {
774     goto neo_v
775  }
776*b::
777  if ( not(ahkTreiberKombi) )
778  {
779     goto neo_z
780  }
781  else
782  {
783     goto neo_b
784  }
785*n::
786  if ( not(ahkTreiberKombi) )
787  {
788     if( not(einHandNeo) or not(spacepressed) )
789       goto neo_b
790     else
791      {
792        keypressed := 1
793        goto %gespiegelt_b%
794      }
795  }
796  else
797  {
798     goto neo_n
799  }
800*m::
801     if( not(einHandNeo) or not(spacepressed) )
802       goto neo_m
803     else
804      {
805        keypressed := 1
806        goto %gespiegelt_m%
807      }
808return
809*,::
810     if( not(einHandNeo) or not(spacepressed) )
811       goto neo_komma
812     else
813      {
814        keypressed := 1
815        goto %gespiegelt_komma%
816      }
817return
818*.::
819     if( not(einHandNeo) or not(spacepressed) )
820       goto neo_punkt
821     else
822      {
823        keypressed := 1
824        goto %gespiegelt_punkt%
825      }
826return
827*-::
828  if ( not(ahkTreiberKombi) )
829  {
830     if( not(einHandNeo) or not(spacepressed) )
831       goto neo_j
832     else
833      {
834        keypressed := 1
835        goto %gespiegelt_j%
836      }
837  }
838  else
839  {
840     goto neo_strich
841  }
842; Numpad
843*NumpadDiv::goto neo_NumpadDiv
844*NumpadMult::goto neo_NumpadMult
845*NumpadSub::goto neo_NumpadSub
846*NumpadAdd::goto neo_NumpadAdd
847*NumpadEnter::goto neo_NumpadEnter
848*Numpad7::goto neo_Numpad7
849*Numpad8::goto neo_Numpad8
850*Numpad9::goto neo_Numpad9
851*Numpad4::goto neo_Numpad4
852*Numpad5::goto neo_Numpad5
853*Numpad6::goto neo_Numpad6
854*Numpad1::goto neo_Numpad1
855*Numpad2::goto neo_Numpad2
856*Numpad3::goto neo_Numpad3
857*Numpad0::goto neo_Numpad0
858*NumpadDot::goto neo_NumpadDot
859*NumpadHome::goto neo_NumpadHome
860*NumpadUp::goto neo_NumpadUp
861*NumpadPgUp::goto neo_NumpadPgUp
862*NumpadLeft::goto neo_NumpadLeft
863*NumpadClear::goto neo_NumpadClear
864*NumpadRight::goto neo_NumpadRight
865*NumpadEnd::goto neo_NumpadEnd
866*NumpadDown::goto neo_NumpadDown
867*NumpadPgDn::goto neo_NumpadPgDn
868*NumpadIns::goto neo_NumpadIns
869*NumpadDel::goto neo_NumpadDel
870
871 
872 
873/*
874   Ablauf bei toten Tasten:
875   1. Ebene Aktualisieren
876   2. Abh�ngig von der Variablen "Ebene" Zeichen ausgeben und die Variable "PriorDeadKey" setzen
877   
878   Ablauf bei "lebenden" (sagt man das?) Tasten:
879   1. Ebene Aktualisieren
880   2. Abh�ngig von den Variablen "Ebene" und "PriorDeadKey" Zeichen ausgeben
881   3. "PriorDeadKey" mit leerem String �berschreiben
882
883   ------------------------------------------------------
884   Reihe 1
885   ------------------------------------------------------
886*/
887
888
889neo_tot1:
890   EbeneAktualisieren()
891   if Ebene = 1
892   {
893      SendUnicodeChar(0x02C6) ; circumflex, tot
894      PriorDeadKey := "c1"
895   }
896   else if Ebene = 2
897   {
898      SendUnicodeChar(0x02C7)  ; caron, tot
899      PriorDeadKey := "c2"
900   }
901   else if Ebene = 3
902   {
903      SendUnicodeChar(0x02D8)   ; brevis
904      PriorDeadKey := "c3"
905   }
906   else if Ebene = 4
907   {
908      SendUnicodeChar(0x00B7)  ; Mittenpunkt, tot
909      PriorDeadKey := "c5"
910   }
911   else if Ebene = 5
912   {
913      send - ; querstrich, tot
914      PriorDeadKey := "c4"
915   }
916   else if Ebene = 6
917   {
918      Send .         ; punkt darunter (colon)
919      PriorDeadKey := "c6"
920   }
921return
922
923neo_1:
924   EbeneAktualisieren()
925   if Ebene = 1
926   {
927      if (PriorDeadKey = "c1")          ; circumflex 1
928         BSSendUnicodeChar(0x00B9)
929      else if (PriorDeadKey = "c4")       ; toter -
930         BSSendUnicodeChar(0x2081)
931      else if (CompKey = "r_small_1")
932         Comp3UnicodeChar(0x217A)          ; r�misch xi
933      else if (CompKey = "r_capital_1")
934         Comp3UnicodeChar(0x216A)          ; r�misch XI
935      else
936       { 
937         if GetKeyState("CapsLock","T")
938         {
939           if (IsModifierPressed())
940           {
941             send {blind}1
942           }
943           else
944           {
945              send 1
946           }   
947         }
948         else {
949            if ( not(lernModus) or (lernModus_std_ZahlenReihe) )
950            {
951                send {blind}1
952            }
953         }
954       }
955      if (PriorDeadKey = "comp")
956         CompKey := "1"
957      else if (CompKey = "r_small")
958         CompKey := "r_small_1"
959      else if (CompKey = "r_capital")
960         CompKey := "r_capital_1"
961      else
962         CompKey := ""
963   }
964   else if Ebene = 2
965   {
966      send �
967      CompKey := ""
968   }
969   else if Ebene = 3
970   {
971      SendUnicodeChar(0x00B9) ; 2 Hochgestellte
972      CompKey := ""
973   }
974   else if Ebene = 4
975   {
976      SendUnicodeChar(0x2022) ; bullet
977      CompKey := ""
978   }
979   else if Ebene = 5
980   {
981      SendUnicodeChar(0x2640) ; Piktogramm weiblich
982      CompKey := ""
983   }
984   else if Ebene = 6
985   {
986      SendUnicodeChar(0x00AC) ; Nicht-Symbol
987      CompKey := ""
988   }
989   PriorDeadKey := ""
990return
991
992neo_2:
993   EbeneAktualisieren()
994   if Ebene = 1
995   {
996      if (PriorDeadKey = "c1")          ; circumflex
997         BSSendUnicodeChar(0x00B2)
998      else if (PriorDeadKey = "c4")       ; toter -
999         BSSendUnicodeChar(0x2082)
1000      else if (CompKey = "r_small")
1001         CompUnicodeChar(0x2171)          ; r�misch ii
1002      else if (CompKey = "r_capital")
1003         CompUnicodeChar(0x2161)          ; r�misch II
1004      else if (CompKey = "r_small_1")
1005         Comp3UnicodeChar(0x217B)          ; r�misch xii
1006      else if (CompKey = "r_capital_1")
1007         Comp3UnicodeChar(0x216B)          ; r�misch XII
1008      else
1009       { 
1010         if GetKeyState("CapsLock","T")
1011         {
1012           if (IsModifierPressed())
1013           {
1014             send {blind}2
1015           }
1016           else
1017           {
1018              send 2
1019           }
1020               
1021         }
1022         else {
1023            if ( not(lernModus) or (lernModus_std_ZahlenReihe) )
1024            {
1025                send {blind}2
1026            }
1027         }
1028       }
1029      if (PriorDeadKey = "comp")
1030         CompKey := "2"
1031      else
1032         CompKey := ""         
1033   }
1034   else if Ebene = 2
1035   {
1036      SendUnicodeChar(0x2116) ; numero
1037      CompKey := ""
1038   }
1039   else if Ebene = 3
1040   {   
1041      SendUnicodeChar(0x00B2) ; 2 Hochgestellte
1042      CompKey := ""
1043   }
1044   else if Ebene = 4
1045   {
1046      SendUnicodeChar(0x2023) ; aufzaehlungspfeil
1047      CompKey := ""
1048   }
1049   else if Ebene = 5
1050   {
1051      SendUnicodeChar(0x26A5) ; Piktogramm Zwitter
1052      CompKey := ""
1053   }
1054   else if Ebene = 6
1055   {
1056      SendUnicodeChar(0x2228) ; Logisches Oder
1057      CompKey := ""
1058   }
1059   PriorDeadKey := ""
1060return
1061
1062neo_3:
1063   EbeneAktualisieren()
1064   if Ebene = 1
1065   {
1066      if (PriorDeadKey = "c1")          ; circumflex
1067         BSSendUnicodeChar(0x00B3)
1068      else if (PriorDeadKey = "c4")       ; toter -
1069         BSSendUnicodeChar(0x2083)
1070      else if (CompKey = "1")
1071         CompUnicodeChar(0x2153)          ; 1/3
1072      else if (CompKey = "2")
1073         CompUnicodeChar(0x2154)          ; 2/3
1074      else if (CompKey = "r_small")
1075         CompUnicodeChar(0x2172)          ; r�misch iii
1076      else if (CompKey = "r_capital")
1077         CompUnicodeChar(0x2162)          ; r�misch III
1078      else
1079       { 
1080         if GetKeyState("CapsLock","T")
1081         {
1082           if (IsModifierPressed())
1083           {
1084             send {blind}3
1085           }
1086           else
1087           {
1088               send 3
1089           }   
1090         }
1091         else {
1092            if ( not(lernModus) or (lernModus_std_ZahlenReihe) )
1093            {           
1094              send {blind}3
1095            }
1096         }
1097       }
1098      if (PriorDeadKey = "comp")
1099         CompKey := "3"
1100      else
1101         CompKey := ""         
1102   }
1103   else if Ebene = 2
1104   {
1105      send �
1106      CompKey := ""
1107   }
1108   else if Ebene = 3
1109   {
1110      SendUnicodeChar(0x00B3) ; 3 Hochgestellte
1111      CompKey := ""
1112   }
1113   else if Ebene = 4
1114   { } ; leer
1115   else if Ebene = 5
1116   {
1117      SendUnicodeChar(0x2642) ; Piktogramm Mann
1118      CompKey := ""
1119   }
1120   else if Ebene = 6
1121   {
1122      SendUnicodeChar(0x2227) ; Logisches Und
1123      CompKey := ""
1124   }   
1125   PriorDeadKey := ""
1126return
1127
1128neo_4:
1129   EbeneAktualisieren()
1130   if Ebene = 1
1131   {
1132      if (PriorDeadKey = "c1")          ; circumflex
1133         BSSendUnicodeChar(0x2074)
1134      else if (PriorDeadKey = "c4")       ; toter -
1135         BSSendUnicodeChar(0x2084)         
1136      else if (CompKey = "r_small")
1137         CompUnicodeChar(0x2173)          ; r�misch iv
1138      else if (CompKey = "r_capital")
1139         CompUnicodeChar(0x2163)          ; r�misch IV
1140      else
1141       { 
1142         if GetKeyState("CapsLock","T")
1143         {
1144           if (IsModifierPressed())
1145           {
1146             send {blind}4
1147           }
1148           else
1149           {
1150              send 4
1151           }
1152               
1153         }
1154         else
1155         {
1156           if ( not(lernModus) or (lernModus_std_ZahlenReihe) )
1157           {
1158               send {blind}4
1159           }
1160         }
1161       }
1162      if (PriorDeadKey = "comp")
1163         CompKey := "4"
1164      else
1165         CompKey := ""         
1166        }
1167   else if Ebene = 2
1168   {
1169      send �
1170      CompKey := ""
1171   }
1172    else if Ebene = 3
1173   {
1174      send �
1175      CompKey := ""
1176   }
1177   else if Ebene = 4
1178   {
1179      Send {PgUp}    ; Prev
1180      CompKey := ""
1181   }
1182   else if Ebene = 5
1183   {
1184      SendUnicodeChar(0x2113) ; Script small L
1185      CompKey := ""
1186   }
1187   else if Ebene = 6
1188   {
1189      SendUnicodeChar(0x22A5) ; Senkrecht
1190      CompKey := ""
1191   }   
1192   PriorDeadKey := ""
1193return
1194
1195neo_5:
1196   EbeneAktualisieren()
1197   if Ebene = 1
1198   {
1199      if (PriorDeadKey = "c1")          ; circumflex
1200         BSSendUnicodeChar(0x2075)
1201      else if (PriorDeadKey = "c4")       ; toter -
1202         BSSendUnicodeChar(0x2085)
1203      else if (CompKey = "1")
1204         CompUnicodeChar(0x2155)          ; 1/5
1205      else if (CompKey = "2")
1206         CompUnicodeChar(0x2156)          ; 2/5
1207      else if (CompKey = "3")
1208         CompUnicodeChar(0x2157)          ; 3/5
1209      else if (CompKey = "4")
1210         CompUnicodeChar(0x2158)          ; 4/5
1211      else if (CompKey = "r_small")
1212         CompUnicodeChar(0x2174)          ; r�misch v
1213      else if (CompKey = "r_capital")
1214         CompUnicodeChar(0x2164)          ; r�misch V
1215      else
1216       { 
1217         if GetKeyState("CapsLock","T")
1218         {
1219           if (IsModifierPressed())
1220           {
1221             send {blind}5
1222           }
1223           else
1224           {
1225              send 5
1226           }
1227               
1228         }
1229         else {
1230            if ( not(lernModus) or (lernModus_std_ZahlenReihe) )
1231            {
1232               send {blind}5
1233            }
1234         }
1235       }
1236      if (PriorDeadKey = "comp")
1237         CompKey := "5"
1238      else
1239         CompKey := ""         
1240        }
1241   else if Ebene = 2
1242   {
1243      send �
1244      CompKey := ""
1245   }
1246   else if Ebene = 3
1247   {
1248      send �
1249      CompKey := ""
1250   }
1251   else if Ebene = 4
1252   { } ; leer
1253   else if Ebene = 5
1254   {
1255      SendUnicodeChar(0x2020) ; Kreuz (Dagger)
1256      CompKey := ""
1257   }
1258   else if Ebene = 6
1259   {
1260      SendUnicodeChar(0x2221) ; Winkel
1261      CompKey := ""
1262   }   
1263   PriorDeadKey := ""
1264return
1265
1266neo_6:
1267   EbeneAktualisieren()
1268   if Ebene = 1
1269   {
1270      if (PriorDeadKey = "c1")          ; circumflex
1271         BSSendUnicodeChar(0x2076)
1272      else if (PriorDeadKey = "c4")       ; toter -
1273         BSSendUnicodeChar(0x2086)         
1274      else if (CompKey = "1")
1275         CompUnicodeChar(0x2159)          ; 1/6
1276      else if (CompKey = "5")
1277         CompUnicodeChar(0x215A)          ; 5/6
1278      else if (CompKey = "r_small")
1279         CompUnicodeChar(0x2175)          ; r�misch vi
1280      else if (CompKey = "r_capital")
1281         CompUnicodeChar(0x2165)          ; r�misch VI
1282      else
1283       { 
1284         if GetKeyState("CapsLock","T")
1285         {
1286           if (IsModifierPressed())
1287           {
1288             send {blind}6
1289           }
1290           else
1291           {
1292              send 6
1293           }
1294               
1295         }
1296         else {
1297            if ( not(lernModus) or (lernModus_std_ZahlenReihe) )
1298            {
1299              send {blind}6
1300            }
1301         }
1302       }
1303      if (PriorDeadKey = "comp")
1304         CompKey := "6"
1305      else
1306         CompKey := ""         
1307        }
1308   else if Ebene = 2
1309   {
1310      send �
1311      CompKey := ""
1312   }
1313   else if Ebene = 3
1314   {
1315      send �
1316      CompKey := ""
1317   }
1318   else if Ebene = 4
1319   {
1320      send �
1321      CompKey := ""
1322   }
1323   else if Ebene = 5
1324   {  } ; leer
1325   else if Ebene = 6
1326   {
1327      SendUnicodeChar(0x2225) ; parallel
1328      CompKey := ""
1329   }
1330   PriorDeadKey := ""
1331return
1332
1333neo_7:
1334   EbeneAktualisieren()
1335   if Ebene = 1
1336   {
1337      if (PriorDeadKey = "c1")          ; circumflex
1338         BSSendUnicodeChar(0x2077)
1339      else if (PriorDeadKey = "c4")       ; toter -
1340         BSSendUnicodeChar(0x2087)
1341      else if (CompKey = "r_small")
1342         CompUnicodeChar(0x2176)          ; r�misch vii
1343      else if (CompKey = "r_capital")
1344         CompUnicodeChar(0x2166)          ; r�misch VII
1345      else
1346       { 
1347         if GetKeyState("CapsLock","T")
1348         {
1349           if (IsModifierPressed())
1350           {
1351             send {blind}7
1352           }
1353           else
1354           {
1355              send 7
1356           }
1357               
1358         }
1359         else {
1360            if ( not(lernModus) or (lernModus_std_ZahlenReihe) )
1361            {
1362               send {blind}7
1363            }
1364         }
1365       }
1366      if (PriorDeadKey = "comp")
1367         CompKey := "7"
1368      else
1369         CompKey := ""         
1370        }
1371   else if Ebene = 2
1372   {
1373      send $
1374      CompKey := ""
1375   }
1376   else if Ebene = 3
1377   {
1378      send �
1379      CompKey := ""
1380   }
1381   else if Ebene = 4
1382   {
1383      send �
1384      CompKey := ""
1385   }
1386   else if Ebene = 5
1387   {
1388      SendUnicodeChar(0x03BA) ; greek small letter kappa
1389      CompKey := ""
1390   }
1391   else if Ebene = 6
1392   {
1393      SendUnicodeChar(0x2209) ; nicht Element von
1394      CompKey := ""
1395   }
1396   PriorDeadKey := ""
1397return
1398
1399neo_8:
1400   EbeneAktualisieren()
1401   if Ebene = 1
1402   {
1403      if (PriorDeadKey = "c1")          ; circumflex
1404         BSSendUnicodeChar(0x2078)
1405      else if (PriorDeadKey = "c4")       ; toter -
1406         BSSendUnicodeChar(0x2088)
1407      else if (CompKey = "1")
1408         CompUnicodeChar(0x215B)          ; 1/8
1409      else if (CompKey = "3")
1410         CompUnicodeChar(0x215C)          ; 3/8
1411      else if (CompKey = "5")
1412         CompUnicodeChar(0x215D)          ; 5/8
1413      else if (CompKey = "7")
1414         CompUnicodeChar(0x215E)          ; 7/8
1415      else if (CompKey = "r_small")
1416         CompUnicodeChar(0x2177)          ; r�misch viii
1417      else if (CompKey = "r_capital")
1418         CompUnicodeChar(0x2167)          ; r�misch VIII
1419      else
1420       { 
1421         if GetKeyState("CapsLock","T")
1422         {
1423           if (IsModifierPressed())
1424           {
1425             send {blind}8
1426           }
1427           else
1428           {
1429              send 8
1430           }
1431               
1432         }
1433         else {
1434            if ( not(lernModus) or (lernModus_std_ZahlenReihe) )
1435            {
1436              send {blind}8
1437            }   
1438         }
1439       }
1440      if (PriorDeadKey = "comp")
1441         CompKey := "8"
1442      else
1443         CompKey := ""         
1444        }
1445   else if Ebene = 2
1446   {
1447      send �
1448      CompKey := ""
1449   }
1450   else if Ebene = 3
1451   {
1452      send �
1453      CompKey := ""
1454   }
1455   else if Ebene = 4
1456   {
1457      Send /
1458      CompKey := ""
1459   }
1460   else if Ebene = 5
1461   {  }  ; leer
1462   else if Ebene = 6
1463   {
1464      SendUnicodeChar(0x2204) ; es existiert nicht
1465      CompKey := ""
1466   }
1467   PriorDeadKey := ""
1468return
1469
1470neo_9:
1471   EbeneAktualisieren()
1472   if Ebene = 1
1473   {
1474      if (PriorDeadKey = "c1")          ; circumflex
1475         BSSendUnicodeChar(0x2079)
1476      else if (PriorDeadKey = "c4")       ; toter -
1477         BSSendUnicodeChar(0x2089)
1478      else if (CompKey = "r_small")
1479         CompUnicodeChar(0x2178)          ; r�misch ix
1480      else if (CompKey = "r_capital")
1481         CompUnicodeChar(0x2168)          ; r�misch IX
1482      else
1483       { 
1484         if GetKeyState("CapsLock","T")
1485         {
1486           if (IsModifierPressed())
1487           {
1488             send {blind}9
1489           }
1490           else
1491           {
1492              send 9
1493           }
1494               
1495         }
1496         else {
1497            if ( not(lernModus) or (lernModus_std_ZahlenReihe) )
1498            {
1499              send {blind}9
1500            }
1501         }
1502       }
1503      if (PriorDeadKey = "comp")
1504         CompKey := "9"
1505      else
1506         CompKey := ""         
1507        }
1508   else if Ebene = 2
1509   {
1510      send �
1511      CompKey := ""
1512   }
1513   else if Ebene = 3
1514   {
1515      send �
1516      CompKey := ""
1517   }
1518   else if Ebene = 4
1519   {
1520      Send *
1521      CompKey := ""
1522   }
1523   else if Ebene = 5
1524   {  } ; leer
1525   else if Ebene = 6
1526   {
1527      SendUnicodeChar(0x2226) ; nicht parallel
1528      CompKey := ""
1529   }
1530   PriorDeadKey := ""
1531return
1532
1533neo_0:
1534   EbeneAktualisieren()
1535   if Ebene = 1
1536   {
1537      if (PriorDeadKey = "c1")          ; circumflex
1538         BSSendUnicodeChar(0x2070)
1539      else if (PriorDeadKey = "c4")       ; toter -
1540         BSSendUnicodeChar(0x2080)         
1541      else if (CompKey = "r_small_1")
1542         Comp3UnicodeChar(0x2179)          ; r�misch x
1543      else if (CompKey = "r_capital_1")
1544         Comp3UnicodeChar(0x2169)          ; r�misch X
1545      else
1546       { 
1547         if GetKeyState("CapsLock","T")
1548         {
1549           if (IsModifierPressed())
1550           {
1551             send {blind}0
1552           }
1553           else
1554           {
1555              send 0
1556           }
1557               
1558         }
1559         else {
1560            if ( not(lernModus) or (lernModus_std_ZahlenReihe) )
1561            {
1562               send {blind}0
1563            }
1564         }
1565       }
1566      if (PriorDeadKey = "comp")
1567         CompKey := "0"
1568      else
1569         CompKey := ""         
1570        }
1571   else if Ebene = 2
1572   {
1573      send �
1574      CompKey := ""
1575   }
1576   else if Ebene = 3
1577   {
1578      send �
1579      CompKey := ""
1580   }
1581   else if Ebene = 4
1582   {
1583      Send -
1584      CompKey := ""
1585   }
1586   else if Ebene = 5
1587   {  } ; leer
1588   else if Ebene = 6
1589   {
1590      SendUnicodeChar(0x2205) ; leere Menge
1591      CompKey := ""
1592   }
1593   PriorDeadKey := ""
1594return
1595
1596neo_strich:
1597   EbeneAktualisieren()
1598   if Ebene = 1
1599        { 
1600         if GetKeyState("CapsLock","T")
1601         {
1602           if (IsModifierPressed())
1603           {
1604             send {blind}-
1605           }
1606           else
1607           {
1608              send -
1609           }
1610               
1611         }
1612         else {
1613           send {blind}-   ;Bindestrich
1614         }
1615       }
1616   else if Ebene = 2
1617      SendUnicodeChar(0x2013) ; Gedankenstrich
1618   else if Ebene = 3
1619      SendUnicodeChar(0x2014) ; Englische Gedankenstrich
1620   else if Ebene = 4
1621     { } ; leer ...  SendUnicodeChar(0x254C)
1622   else if Ebene = 5
1623      SendUnicodeChar(0x2011) ; gesch�tzter Bindestrich
1624   else if Ebene = 6
1625      SendUnicodeChar(0x00AD) ; weicher Trennstrich
1626   PriorDeadKey := ""   CompKey := ""
1627return
1628
1629neo_tot2:
1630   EbeneAktualisieren()
1631   if Ebene = 1
1632   {
1633      send {�}{space} ; akut, tot
1634      PriorDeadKey := "a1"
1635   }
1636   else if Ebene = 2
1637   {
1638      send ``{space}
1639      PriorDeadKey := "a2"
1640   }
1641   else if Ebene = 3
1642   {
1643      send � ; cedilla
1644      PriorDeadKey := "a3"
1645   }
1646   else if Ebene = 4
1647   {
1648      SendUnicodeChar(0x02D9) ; punkt oben dr�ber
1649      PriorDeadKey := "a5"
1650   }
1651   else if Ebene = 5
1652   {
1653      SendUnicodeChar(0x02DB) ; ogonek
1654      PriorDeadKey := "a4"
1655   }
1656   else if Ebene = 6
1657   {
1658      SendUnicodeChar(0x02DA)  ; ring obendrauf
1659      PriorDeadKey := "a6"
1660   }
1661return
1662
1663
1664/*
1665   ------------------------------------------------------
1666   Reihe 2
1667   ------------------------------------------------------
1668*/
1669
1670neo_x:
1671   EbeneAktualisieren()
1672   if Ebene = 1
1673      sendinput {blind}x
1674   else if Ebene = 2
1675      sendinput {blind}X
1676   else if Ebene = 5
1677      SendUnicodeChar(0x03BE) ;xi
1678   else if Ebene = 6
1679      SendUnicodeChar(0x039E)  ; Xi
1680   PriorDeadKey := ""   CompKey := ""
1681return
1682
1683
1684neo_v:
1685   EbeneAktualisieren()
1686   if Ebene = 1
1687   {
1688      if (PriorDeadKey = "c6")      ; punkt darunter
1689         BSSendUnicodeChar(0x1E7F)
1690      else
1691         sendinput {blind}v
1692   }
1693   else if Ebene = 2
1694   {
1695      if (PriorDeadKey = "c6")      ; punkt darunter
1696         BSSendUnicodeChar(0x1E7E)
1697      else
1698         sendinput {blind}V
1699   }
1700   else if Ebene = 3
1701      send _
1702   else if Ebene = 4
1703      if ( not(lernModus) or (lernModus_neo_Backspace) )
1704      {
1705         Send {Backspace}
1706      }
1707      else
1708      {} ; leer
1709   else if Ebene = 6
1710      SendUnicodeChar(0x2259) ; estimates
1711   PriorDeadKey := ""   CompKey := ""
1712return
1713
1714
1715
1716neo_l:
1717   EbeneAktualisieren()
1718   if Ebene = 1
1719   {
1720      if (PriorDeadKey = "t5")       ; Schr�gstrich
1721         BSSendUnicodeChar(0x0142)
1722      else if (PriorDeadKey = "a1")      ; akut
1723         BSSendUnicodeChar(0x013A)
1724      else if (PriorDeadKey = "c2")     ; caron
1725         BSSendUnicodeChar(0x013E)
1726      else if (PriorDeadKey = "a3")    ; cedilla
1727         BSSendUnicodeChar(0x013C)
1728      else if (PriorDeadKey = "c5")  ; Mittenpunkt
1729         BSSendUnicodeChar(0x0140)
1730      else if (PriorDeadKey = "c6") ; punkt darunter
1731         BSSendUnicodeChar(0x1E37)
1732      else
1733         sendinput {blind}l
1734      if (PriorDeadKey = "comp")            ; compose
1735         CompKey := "l_small"
1736      else
1737         CompKey := ""
1738   }
1739   else if Ebene = 2
1740   {
1741      if (PriorDeadKey = "a1")           ; akut
1742         BSSendUnicodeChar(0x0139)
1743      else if (PriorDeadKey = "c2")     ; caron
1744         BSSendUnicodeChar(0x013D)
1745      else if (PriorDeadKey = "a3")    ; cedilla
1746         BSSendUnicodeChar(0x013B)
1747      else if (PriorDeadKey = "t5")  ; Schr�gstrich
1748         BSSendUnicodeChar(0x0141)
1749      else if (PriorDeadKey = "c5")  ; Mittenpunkt
1750         BSSendUnicodeChar(0x013F)
1751      else if (PriorDeadKey = "c6") ; punkt darunter
1752         BSSendUnicodeChar(0x1E36)
1753      else
1754         sendinput {blind}L
1755      if (PriorDeadKey = "comp")            ; compose
1756         CompKey := "l_capital"
1757      else CompKey := ""
1758   }     
1759   else if Ebene = 3
1760   {
1761      send [
1762      CompKey := ""
1763   }
1764   else if Ebene = 4
1765   {
1766      Sendinput {Blind}{Up}
1767      CompKey := ""
1768   }
1769   else if Ebene = 5
1770   {
1771      SendUnicodeChar(0x03BB) ; lambda
1772      CompKey := ""
1773   }
1774   else if Ebene = 6
1775   {
1776      SendUnicodeChar(0x039B) ; Lambda
1777      CompKey := ""
1778   }
1779   PriorDeadKey := ""
1780return
1781
1782
1783neo_c:
1784   EbeneAktualisieren()
1785   if Ebene = 1
1786   {
1787      if (PriorDeadKey = "c1")           ; circumflex
1788         BSSendUnicodeChar(0x0109)
1789      else if (PriorDeadKey = "c2")     ; caron
1790         BSSendUnicodeChar(0x010D)
1791      else if (PriorDeadKey = "a1")      ; akut
1792         BSSendUnicodeChar(0x0107)
1793      else if (PriorDeadKey = "a3")    ; cedilla
1794         BSSendUnicodeChar(0x00E7)
1795      else if (PriorDeadKey = "a5")  ; punkt dar�ber
1796         BSSendUnicodeChar(0x010B)
1797      else if ( (CompKey = "o_small") or (CompKey = "o_capital") )
1798         Send {bs}�
1799      else
1800      {         
1801         sendinput {blind}c     
1802      }
1803      if (PriorDeadKey = "comp")
1804         CompKey := "c_small"
1805      else
1806         CompKey := ""
1807   }
1808   else if Ebene = 2
1809   {
1810      if (PriorDeadKey = "c1")          ; circumflex
1811         BSSendUnicodeChar(0x0108)
1812      else if (PriorDeadKey = "c2")    ; caron
1813         BSSendUnicodeChar(0x010C)
1814      else if (PriorDeadKey = "a1")     ; akut
1815         BSSendUnicodeChar(0x0106)
1816      else if (PriorDeadKey = "a3")   ; cedilla
1817         BSSendUnicodeChar(0x00E6)
1818      else if (PriorDeadKey = "a5") ; punkt dar�ber
1819         BSSendUnicodeChar(0x010A)
1820      else if ( (CompKey = "o_small") or (CompKey = "o_capital") )
1821         Send {bs}�         
1822      else
1823         sendinput {blind}C
1824      if (PriorDeadKey = "comp")
1825         CompKey = "c_capital"
1826      else
1827         CompKey := ""
1828   }
1829   else if Ebene = 3
1830   {
1831      send ]
1832      CompKey := ""
1833   }
1834   else if Ebene = 4
1835   {
1836      if ( not(lernModus) or (lernModus_neo_Entf) )
1837      {
1838        Send {Del}
1839        CompKey := ""
1840      }
1841      else
1842      {} ; leer
1843   }
1844   else if Ebene = 5
1845   {
1846      SendUnicodeChar(0x03C7) ;chi
1847      CompKey := ""
1848   }
1849   else if Ebene = 6
1850   {
1851      SendUnicodeChar(0x2102)  ; C (Komplexe Zahlen)
1852      CompKey := ""
1853   }
1854   PriorDeadKey := ""
1855return
1856
1857neo_w:
1858   EbeneAktualisieren()
1859   if Ebene = 1
1860   {
1861      if (PriorDeadKey = "c1")           ; circumflex
1862         BSSendUnicodeChar(0x0175)
1863      else
1864         sendinput {blind}w
1865   }
1866   else if Ebene = 2
1867   {
1868      if (PriorDeadKey = "c1")           ; circumflex
1869         BSSendUnicodeChar(0x0174)
1870      else
1871         sendinput {blind}W
1872   }
1873   else if Ebene = 3
1874      send {^}{space} ; untot
1875   else if Ebene = 4
1876      Send {Insert}
1877   else if Ebene = 5
1878      SendUnicodeChar(0x03C9) ; omega
1879   else if Ebene = 6
1880      SendUnicodeChar(0x03A9) ; Omega
1881   PriorDeadKey := ""   CompKey := ""
1882return
1883
1884neo_k:
1885   EbeneAktualisieren()
1886   if Ebene = 1
1887   {
1888      if (PriorDeadKey = "a3")         ; cedilla
1889         BSSendUnicodeChar(0x0137)
1890      else if (PriorDeadKey = "c6") ; punkt darunter
1891         BSSendUnicodeChar(0x1E33)
1892      else
1893         sendinput {blind}k
1894   }
1895   else if Ebene = 2
1896   {
1897      if (PriorDeadKey = "a3")         ; cedilla
1898         BSSendUnicodeChar(0x0136)
1899      else if (PriorDeadKey = "c6") ; punkt darunter
1900         BSSendUnicodeChar(0x1E32)
1901      else
1902         sendinput {blind}K
1903   }
1904   else if Ebene = 3
1905      sendraw !
1906   else if Ebene = 4
1907      Send �
1908   else if Ebene = 5
1909      SendUnicodeChar(0x03F0) ;kappa symbol (varkappa)
1910   else if Ebene = 6
1911      SendUnicodeChar(0x221A) ; Wurzel
1912   PriorDeadKey := ""   CompKey := ""
1913return
1914
1915neo_h:
1916   EbeneAktualisieren()
1917   if Ebene = 1
1918   {
1919      if (PriorDeadKey = "c1")           ; circumflex
1920         BSSendUnicodeChar(0x0125)
1921      else if (PriorDeadKey = "c4")   ; Querstrich
1922         BSSendUnicodeChar(0x0127)
1923      else if (PriorDeadKey = "a5")  ; punkt dar�ber
1924         BSSendUnicodeChar(0x1E23)
1925      else if (PriorDeadKey = "c6") ; punkt darunter
1926         BSSendUnicodeChar(0x1E25)
1927      else sendinput {blind}h
1928   }
1929   else if Ebene = 2
1930   {
1931      if (PriorDeadKey = "c1")           ; circumflex
1932         BSSendUnicodeChar(0x0124)
1933      else if (PriorDeadKey = "c4")   ; Querstrich
1934         BSSendUnicodeChar(0x0126)
1935      else if (PriorDeadKey = "a5")  ; punkt dar�ber
1936         BSSendUnicodeChar(0x1E22)
1937      else if (PriorDeadKey = "c6") ; punkt darunter
1938         BSSendUnicodeChar(0x1E24)
1939      else sendinput {blind}H
1940   }
1941   else if Ebene = 3
1942   {
1943      if (PriorDeadKey = "c4")    ; Querstrich
1944         BSSendUnicodeChar(0x2264) ; kleiner gleich
1945      else
1946         send {blind}<
1947   }
1948   else if Ebene = 4
1949   {
1950      if (PriorDeadKey = "c1")            ; circumflex
1951         BSSendUnicodeChar(0x2077)
1952      else if (PriorDeadKey = "c4")       ; toter -
1953         BSSendUnicodeChar(0x2087)
1954      else
1955         Send 7
1956   }
1957   else if Ebene = 5
1958      SendUnicodeChar(0x03C8) ;psi
1959   else if Ebene = 6
1960      SendUnicodeChar(0x03A8)  ; Psi
1961   PriorDeadKey := ""   CompKey := ""
1962return
1963
1964neo_g:
1965   EbeneAktualisieren()
1966   if Ebene = 1
1967   {
1968      if (PriorDeadKey = "c1")          ; circumflex
1969         BSSendUnicodeChar(0x011D)
1970      else if (PriorDeadKey = "c3")   ; brevis
1971         BSSendUnicodeChar(0x011F)
1972      else if (PriorDeadKey = "a3")   ; cedilla
1973         BSSendUnicodeChar(0x0123)
1974      else if (PriorDeadKey = "a5") ; punkt dar�ber
1975         BSSendUnicodeChar(0x0121)
1976      else sendinput {blind}g
1977   }
1978   else if Ebene = 2
1979   {
1980      if (PriorDeadKey = "c1")           ; circumflex
1981         BSSendUnicodeChar(0x011C)
1982      else if (PriorDeadKey = "c3")    ; brevis
1983         BSSendUnicodeChar(0x011E)
1984      else if (PriorDeadKey = "a3")    ; cedilla
1985         BSSendUnicodeChar(0x0122)
1986      else if (PriorDeadKey = "a5")  ; punkt dar�ber
1987         BSSendUnicodeChar(0x0120)
1988      else sendinput {blind}G
1989   }
1990   else if Ebene = 3
1991   {
1992      if (PriorDeadKey = "c4")    ; Querstrich
1993         SendUnicodeChar(0x2265) ; gr��er gleich
1994      else
1995         send >
1996   }
1997   else if Ebene = 4
1998   {
1999      if (PriorDeadKey = "c1")            ; circumflex
2000         BSSendUnicodeChar(0x2078)
2001      else if (PriorDeadKey = "c4")       ; toter -
2002         BSSendUnicodeChar(0x2088)
2003      else
2004         Send 8
2005   }
2006   else if Ebene = 5
2007      SendUnicodeChar(0x03B3) ;gamma
2008   else if Ebene = 6
2009      SendUnicodeChar(0x0393)  ; Gamma
2010   PriorDeadKey := ""   CompKey := ""
2011return
2012
2013neo_f:
2014   EbeneAktualisieren()
2015   if Ebene = 1
2016   {
2017      if (PriorDeadKey = "t5")      ; durchgestrichen
2018         BSSendUnicodeChar(0x0192)
2019      else if (PriorDeadKey = "a5") ; punkt dar�ber
2020         BSSendUnicodeChar(0x1E1F)
2021      else sendinput {blind}f
2022   }
2023   else if Ebene = 2
2024   {
2025      if (PriorDeadKey = "t5")       ; durchgestrichen
2026         BSSendUnicodeChar(0x0191)
2027      else if (PriorDeadKey = "a5")  ; punkt dar�ber
2028         BSSendUnicodeChar(0x1E1E)
2029      else sendinput {blind}F
2030   }
2031   else if Ebene = 3
2032   {
2033      if (PriorDeadKey = "c1")            ; circumflex
2034         BSSendUnicodeChar(0x2259)   ; entspricht
2035      else if (PriorDeadKey = "t1")       ; tilde
2036         BSSendUnicodeChar(0x2245)   ; ungef�hr gleich
2037      else if (PriorDeadKey = "t5")   ; Schr�gstrich
2038         BSSendUnicodeChar(0x2260)   ; ungleich
2039      else if (PriorDeadKey = "c4")    ; Querstrich
2040         BSSendUnicodeChar(0x2261)   ; identisch
2041      else if (PriorDeadKey = "c2")      ; caron
2042         BSSendUnicodeChar(0x225A)   ; EQUIANGULAR TO
2043      else if (PriorDeadKey = "a6")      ; ring dr�ber
2044         BSSendUnicodeChar(0x2257)   ; ring equal to
2045      else
2046         send `=
2047   }
2048   else if Ebene = 4
2049   {
2050      if (PriorDeadKey = "c1")            ; circumflex
2051         BSSendUnicodeChar(0x2079)
2052      else if (PriorDeadKey = "c4")       ; toter -
2053         BSSendUnicodeChar(0x2089)
2054      else
2055         Send 9
2056   }
2057   else if Ebene = 5
2058      SendUnicodeChar(0x03C6) ; phi
2059   else if Ebene = 6
2060      SendUnicodeChar(0x03A6)  ; Phi
2061   PriorDeadKey := ""   CompKey := ""
2062return
2063
2064neo_q:
2065   EbeneAktualisieren()
2066   if Ebene = 1
2067      sendinput {blind}q
2068   else if Ebene = 2
2069      sendinput {blind}Q
2070   else if Ebene = 3
2071      send {&}
2072   else if Ebene = 4
2073   {
2074      if (PriorDeadKey = "c1")            ; circumflex
2075         BSSendUnicodeChar(0x207A)
2076      else if (PriorDeadKey = "c4")       ; toter -
2077         BSSendUnicodeChar(0x208A)
2078      else
2079         Send {+}
2080   }
2081   else if Ebene = 5
2082      SendUnicodeChar(0x03D5)  ;  phi symbol (varphi)
2083   else if Ebene = 6
2084      SendUnicodeChar(0x211A) ; Q (rationale Zahlen)
2085   PriorDeadKey := ""   CompKey := ""
2086return
2087
2088neo_sz:
2089   EbeneAktualisieren()
2090   if Ebene = 1
2091      if GetKeyState("CapsLock","T")
2092      {
2093         SendUnicodeChar(0x1E9E) ; versal-�
2094      }
2095      else
2096      {
2097         send �
2098      }     
2099   else if Ebene = 2
2100      if GetKeyState("CapsLock","T")
2101      {
2102         send �
2103      }
2104      else
2105      {
2106         SendUnicodeChar(0x1E9E) ; versal-�
2107      }
2108   else if Ebene = 3
2109      SendUnicodeChar(0x017F)   ; langes s
2110   else if Ebene = 4
2111      {} ; leer   
2112   else if Ebene = 5
2113      SendUnicodeChar(0x03C2) ; varsigma
2114   else if Ebene = 6
2115      SendUnicodeChar(0x2218)  ; Verkn�pfungsoperator
2116   PriorDeadKey := ""   CompKey := ""
2117return
2118
2119
2120neo_tot3:
2121   EbeneAktualisieren()
2122   if Ebene = 1
2123   {
2124      SendUnicodeChar(0x02DC)    ; tilde, tot
2125      PriorDeadKey := "t1"
2126   }
2127   else if Ebene = 2
2128   {
2129      SendUnicodeChar(0x00AF)  ; macron, tot
2130      PriorDeadKey := "t2"
2131   }
2132   else if Ebene = 3
2133   {
2134      SendUnicodeChar(0x00A8)   ; Diaerese
2135      PriorDeadKey := "t3"
2136   }
2137   else if Ebene = 4
2138   {
2139      SendUnicodeChar(0x002F)  ; Schr�gstrich, tot
2140      PriorDeadKey := "t5"
2141   }
2142   else if Ebene = 5
2143   {
2144      send "        ;doppelakut
2145      PriorDeadKey := "t4"
2146   }
2147   else if Ebene = 6
2148   {
2149      SendUnicodeChar(0x02CF)  ; komma drunter, tot
2150      PriorDeadKey := "t6"
2151   }
2152return
2153
2154
2155/*
2156   ------------------------------------------------------
2157   Reihe 3
2158   ------------------------------------------------------
2159*/
2160
2161neo_u:
2162   EbeneAktualisieren()
2163   if Ebene = 1
2164   {
2165      if (PriorDeadKey = "c1")       ; circumflex
2166         BSSendUnicodeChar(0x00FB)
2167      else if (PriorDeadKey = "a1")  ; akut
2168         BSSendUnicodeChar(0x00FA)
2169      else if (PriorDeadKey = "a2")  ; grave
2170         BSSendUnicodeChar(0x00F9)
2171      else if (PriorDeadKey = "t3")  ; Diaerese
2172         Send, {bs}�
2173      else if (PriorDeadKey = "t4")  ; doppelakut
2174         BSSendUnicodeChar(0x0171)
2175      else if (PriorDeadKey = "c3")  ; brevis
2176         BSSendUnicodeChar(0x016D)
2177      else if (PriorDeadKey = "t2")  ; macron
2178         BSSendUnicodeChar(0x016B)
2179      else if (PriorDeadKey = "a4")  ; ogonek
2180         BSSendUnicodeChar(0x0173)
2181      else if (PriorDeadKey = "a6")  ; Ring
2182         BSSendUnicodeChar(0x016F)
2183      else if (PriorDeadKey = "t1")  ; tilde
2184         BSSendUnicodeChar(0x0169)
2185      else if (PriorDeadKey = "c2")  ; caron
2186         BSSendUnicodeChar(0x01D4)
2187      else
2188         sendinput {blind}u
2189   }
2190   else if Ebene = 2
2191   {
2192      if (PriorDeadKey = "c1")        ; circumflex
2193         BSSendUnicodeChar(0x00DB)
2194      else if (PriorDeadKey = "a1")   ; akut
2195         BSSendUnicodeChar(0x00DA)
2196      else if (PriorDeadKey = "a2")   ; grave
2197         BSSendUnicodeChar(0x00D9)
2198      else if (PriorDeadKey = "t3")   ; Diaerese
2199         Send, {bs}�
2200      else if (PriorDeadKey = "a6")   ; Ring
2201         BSSendUnicodeChar(0x016E)
2202      else if (PriorDeadKey = "c3")   ; brevis
2203         BSSendUnicodeChar(0x016C)
2204      else if (PriorDeadKey = "t4")   ; doppelakut
2205         BSSendUnicodeChar(0x0170)
2206      else if (PriorDeadKey = "c2")   ; caron
2207         BSSendUnicodeChar(0x01D3)
2208      else if (PriorDeadKey = "t2")   ; macron
2209         BSSendUnicodeChar(0x016A)
2210      else if (PriorDeadKey = "a4")   ; ogonek
2211         BSSendUnicodeChar(0x0172)
2212      else if (PriorDeadKey = "t1")   ; tilde
2213         BSSendUnicodeChar(0x0168)
2214      else
2215         sendinput {blind}U
2216   }
2217   else if Ebene = 3
2218      send \
2219   else if Ebene = 4
2220      Send {blind}{Home}
2221   else if Ebene = 5   
2222   {  } ; leer
2223   else if Ebene = 6
2224      SendUnicodeChar(0x222E) ; contour integral
2225   PriorDeadKey := ""   CompKey := ""
2226return
2227
2228neo_i:
2229   EbeneAktualisieren()
2230   if Ebene = 1
2231   {
2232      if (PriorDeadKey = "c1")        ; circumflex
2233         BSSendUnicodeChar(0x00EE)
2234      else if (PriorDeadKey = "a1")   ; akut
2235         BSSendUnicodeChar(0x00ED)
2236      else if (PriorDeadKey = "a2")   ; grave
2237         BSSendUnicodeChar(0x00EC)
2238      else if (PriorDeadKey = "t3")   ; Diaerese
2239         Send, {bs}�
2240      else if (PriorDeadKey = "t2")   ; macron
2241         BSSendUnicodeChar(0x012B)
2242      else if (PriorDeadKey = "c3")   ; brevis
2243         BSSendUnicodeChar(0x012D)
2244      else if (PriorDeadKey = "a4")   ; ogonek
2245         BSSendUnicodeChar(0x012F)
2246      else if (PriorDeadKey = "t1")   ; tilde
2247         BSSendUnicodeChar(0x0129)
2248      else if (PriorDeadKey = "a5")   ; (ohne) punkt dar�ber
2249         BSSendUnicodeChar(0x0131)
2250      else if (PriorDeadKey = "c2")   ; caron
2251         BSSendUnicodeChar(0x01D0)
2252      else
2253         sendinput {blind}i
2254      if (PriorDeadKey = "comp")      ; compose
2255         CompKey := "i_small"
2256      else
2257         CompKey := ""
2258   }
2259   else if Ebene = 2
2260   {   
2261      if (PriorDeadKey = "c1")        ; circumflex
2262         BSSendUnicodeChar(0x00CE)
2263      else if (PriorDeadKey = "a1")   ; akut
2264         BSSendUnicodeChar(0x00CD)
2265      else if (PriorDeadKey = "a2")   ; grave
2266         BSSendUnicodeChar(0x00CC)
2267      else if (PriorDeadKey = "t3")   ; Diaerese
2268         Send, {bs}�
2269      else if (PriorDeadKey = "t2")   ; macron
2270         BSSendUnicodeChar(0x012A)
2271      else if (PriorDeadKey = "c3")   ; brevis
2272         BSSendUnicodeChar(0x012C)
2273      else if (PriorDeadKey = "a4")   ; ogonek
2274         BSSendUnicodeChar(0x012E)
2275      else if (PriorDeadKey = "t1")   ; tilde
2276         BSSendUnicodeChar(0x0128)
2277      else if (PriorDeadKey = "a5")   ; punkt dar�ber
2278         BSSendUnicodeChar(0x0130)
2279      else if (PriorDeadKey = "c2")   ; caron
2280         BSSendUnicodeChar(0x01CF)
2281      else
2282         sendinput {blind}I
2283      if (PriorDeadKey = "comp")      ; compose
2284         CompKey := "i_capital"
2285      else
2286         CompKey := ""
2287   }
2288   else if Ebene = 3
2289   {
2290      send `/
2291      CompKey := ""
2292   }
2293   else if Ebene = 4
2294   {
2295      Sendinput {Blind}{Left}
2296      CompKey := ""
2297   }
2298   else if Ebene = 5   
2299   {
2300      SendUnicodeChar(0x03B9) ; iota
2301      CompKey := ""
2302   }
2303   else if Ebene = 6
2304   {
2305      SendUnicodeChar(0x222B) ; integral
2306      CompKey := ""
2307   }
2308      PriorDeadKey := ""
2309return
2310
2311neo_a:
2312   EbeneAktualisieren()
2313   if Ebene = 1
2314   {
2315      if (PriorDeadKey = "c1")        ; circumflex
2316         BSSendUnicodeChar(0x00E2)
2317      else if (PriorDeadKey = "a1")   ; akut
2318         BSSendUnicodeChar(0x00E1)
2319      else if (PriorDeadKey = "a2")   ; grave
2320         BSSendUnicodeChar(0x00E0)
2321      else if (PriorDeadKey = "t3")   ; Diaerese
2322         send {bs}�
2323      else if (PriorDeadKey = "a6")   ; Ring
2324         Send {bs}�
2325      else if (PriorDeadKey = "t1")   ; tilde
2326         BSSendUnicodeChar(0x00E3)
2327      else if (PriorDeadKey = "a4")   ; ogonek
2328         BSSendUnicodeChar(0x0105)
2329      else if (PriorDeadKey = "t2")   ; macron
2330         BSSendUnicodeChar(0x0101)
2331      else if (PriorDeadKey = "c3")   ; brevis
2332         BSSendUnicodeChar(0x0103)
2333      else if (PriorDeadKey = "c2")   ; caron
2334         BSSendUnicodeChar(0x01CE)
2335      else
2336         sendinput {blind}a
2337      if (PriorDeadKey = "comp")      ; compose
2338         CompKey := "a_small"
2339      else
2340         CompKey := ""
2341   }
2342   else if Ebene = 2
2343   {
2344      if (PriorDeadKey = "c1")        ; circumflex
2345         BSSendUnicodeChar(0x00C2)
2346      else if (PriorDeadKey = "a1")   ; akut
2347         BSSendUnicodeChar(0x00C1)
2348      else if (PriorDeadKey = "a2")   ; grave
2349         BSSendUnicodeChar(0x00C0)
2350      else if (PriorDeadKey = "t3")   ; Diaerese
2351         send {bs}�
2352      else if (PriorDeadKey = "t1")   ; tilde
2353         BSSendUnicodeChar(0x00C3)
2354      else if (PriorDeadKey = "a6")   ; Ring
2355         Send {bs}�
2356      else if (PriorDeadKey = "t2")   ; macron
2357         BSSendUnicodeChar(0x0100)
2358      else if (PriorDeadKey = "c3")   ; brevis
2359         BSSendUnicodeChar(0x0102)
2360      else if (PriorDeadKey = "a4")   ; ogonek
2361         BSSendUnicodeChar(0x0104)
2362      else if (PriorDeadKey = "c2")   ; caron
2363         BSSendUnicodeChar(0x01CD)
2364      else
2365         sendinput {blind}A
2366      if (PriorDeadKey = "comp")      ; compose
2367         CompKey := "a_capital"
2368      else
2369         CompKey := ""
2370   }
2371   else if Ebene = 3
2372   {
2373      sendraw {
2374      CompKey := ""
2375   }
2376   else if Ebene = 4
2377   {
2378      Sendinput {Blind}{Down}
2379      CompKey := ""
2380   }
2381   else if Ebene = 5
2382   {
2383      SendUnicodeChar(0x03B1) ;alpha
2384      CompKey := ""
2385   }
2386   else if Ebene = 6
2387   {
2388      SendUnicodeChar(0x2200) ;fuer alle   
2389      CompKey := ""
2390   }
2391   PriorDeadKey := ""
2392return
2393
2394neo_e:
2395   EbeneAktualisieren()
2396   if Ebene = 1
2397   {
2398      if (PriorDeadKey = "c1")        ; circumflex
2399         BSSendUnicodeChar(0x00EA)
2400      else if (PriorDeadKey = "a1")   ; akut
2401         BSSendUnicodeChar(0x00E9)
2402      else if (PriorDeadKey = "a2")   ; grave
2403         BSSendUnicodeChar(0x00E8)
2404      else if (PriorDeadKey = "t3")   ; Diaerese
2405         Send, {bs}�
2406      else if (PriorDeadKey = "a4")   ; ogonek
2407         BSSendUnicodeChar(0x0119)
2408      else if (PriorDeadKey = "t2")   ; macron
2409         BSSendUnicodeChar(0x0113)
2410      else if (PriorDeadKey = "c3")   ; brevis
2411         BSSendUnicodeChar(0x0115)
2412      else if (PriorDeadKey = "c2")   ; caron
2413         BSSendUnicodeChar(0x011B)
2414      else if (PriorDeadKey = "a5")   ; punkt dar�ber
2415         BSSendUnicodeChar(0x0117)
2416      else if (CompKey = "a_small")   ; compose
2417      {
2418         Send {bs}�
2419         CompKey := ""
2420      }
2421      else if (CompKey = "o_small")   ; compose
2422      {
2423         Send {bs}�
2424         CompKey := ""
2425      }     
2426      else
2427         sendinput {blind}e
2428   }
2429   else if Ebene = 2
2430   {
2431      if (PriorDeadKey = "c1")        ; circumflex
2432         BSSendUnicodeChar(0x00CA)
2433      else if (PriorDeadKey = "a1")   ; akut
2434         BSSendUnicodeChar(0x00C9)
2435      else if (PriorDeadKey = "a2")   ; grave
2436         BSSendUnicodeChar(0x00C8)
2437      else if (PriorDeadKey = "t3")   ; Diaerese
2438         Send, {bs}�
2439      else if (PriorDeadKey = "c2")   ; caron
2440         BSSendUnicodeChar(0x011A)
2441      else if (PriorDeadKey = "t2")   ; macron
2442         BSSendUnicodeChar(0x0112)
2443      else if (PriorDeadKey = "c3")   ; brevis
2444         BSSendUnicodeChar(0x0114)
2445      else if (PriorDeadKey = "a4")   ; ogonek
2446         BSSendUnicodeChar(0x0118)
2447      else if (PriorDeadKey = "a5")   ; punkt dar�ber
2448         BSSendUnicodeChar(0x0116)
2449      else if (CompKey = "a_capital") ; compose
2450      {
2451         Send {bs}�
2452         CompKey := ""
2453      }
2454      else if (CompKey = "o_capital")        ; compose
2455      {
2456         Send {bs}�
2457         CompKey := ""
2458      }     
2459      else
2460         sendinput {blind}E
2461   }
2462   else if Ebene = 3
2463      sendraw }
2464   else if Ebene = 4
2465      Sendinput {Blind}{Right}
2466   else if Ebene = 5
2467        SendUnicodeChar(0x03B5) ;epsilon
2468   else if Ebene = 6
2469        SendUnicodeChar(0x2203) ;es existiert   
2470   PriorDeadKey := ""   CompKey := ""
2471return
2472
2473neo_o:
2474   EbeneAktualisieren()
2475   if Ebene = 1
2476   {
2477      if (PriorDeadKey = "c1")        ; circumflex
2478         BSSendUnicodeChar(0x00F4)
2479      else if (PriorDeadKey = "a1")   ; akut
2480         BSSendUnicodeChar(0x00F3)
2481      else if (PriorDeadKey = "a2")   ; grave
2482         BSSendUnicodeChar(0x00F2)
2483      else if (PriorDeadKey = "t3")   ; Diaerese
2484         Send, {bs}�
2485      else if (PriorDeadKey = "t1")   ; tilde
2486         BSSendUnicodeChar(0x00F5)
2487      else if (PriorDeadKey = "t4")   ; doppelakut
2488         BSSendUnicodeChar(0x0151)
2489      else if (PriorDeadKey = "t5")   ; Schr�gstrich
2490         BSSendUnicodeChar(0x00F8)
2491      else if (PriorDeadKey = "t2")   ; macron
2492         BSSendUnicodeChar(0x014D)
2493      else if (PriorDeadKey = "c3")   ; brevis
2494         BSSendUnicodeChar(0x014F)
2495      else if (PriorDeadKey = "a4")   ; ogonek
2496         BSSendUnicodeChar(0x01EB)
2497      else if (PriorDeadKey = "c2")   ; caron
2498         BSSendUnicodeChar(0x01D2)                     
2499      else
2500         sendinput {blind}o
2501      if (PriorDeadKey = "comp")      ; compose
2502         CompKey := "o_small"
2503      else
2504         CompKey := ""
2505   }
2506   else if Ebene = 2
2507   {
2508      if (PriorDeadKey = "c1")        ; circumflex
2509         BSSendUnicodeChar(0x00D4)
2510      else if (PriorDeadKey = "a1")   ; akut
2511         BSSendUnicodeChar(0x00D3)
2512      else if (PriorDeadKey = "a2")   ; grave
2513         BSSendUnicodeChar(0x00D2)
2514      else if (PriorDeadKey = "t5")   ; Schr�gstrich
2515         BSSendUnicodeChar(0x00D8)
2516      else if (PriorDeadKey = "t1")   ; tilde
2517         BSSendUnicodeChar(0x00D5)
2518      else if (PriorDeadKey = "t4")   ; doppelakut
2519         BSSendUnicodeChar(0x0150)
2520      else if (PriorDeadKey = "t3")   ; Diaerese
2521         send {bs}�
2522      else if (PriorDeadKey = "t2")   ; macron
2523         BSSendUnicodeChar(0x014C)
2524      else if (PriorDeadKey = "c3")   ; brevis
2525         BSSendUnicodeChar(0x014E)
2526      else if (PriorDeadKey = "a4")   ; ogonek
2527         BSSendUnicodeChar(0x01EA)
2528      else if (PriorDeadKey = "c2")   ; caron
2529         BSSendUnicodeChar(0x01D1)   
2530      else
2531         sendinput {blind}O
2532      if (PriorDeadKey = "comp")      ; compose
2533         CompKey := "o_capital"
2534      else
2535         CompKey := ""
2536   }
2537   else if Ebene = 3
2538   {
2539      send *
2540      CompKey := ""
2541   }
2542   else if Ebene = 4
2543   {
2544      Send {blind}{End}
2545      CompKey := ""
2546   }
2547   else if Ebene = 5
2548   {
2549      SendUnicodeChar(0x03BF) ; omicron
2550      CompKey := ""
2551   }
2552   else if Ebene = 6
2553   {
2554      SendUnicodeChar(0x2208) ; element of
2555      CompKey := ""
2556   }
2557   PriorDeadKey := ""
2558return
2559
2560neo_s:
2561   EbeneAktualisieren()
2562   if Ebene = 1
2563   {
2564      if (PriorDeadKey = "c1")           ; circumflex
2565         BSSendUnicodeChar(0x015D)
2566      else if (PriorDeadKey = "a1")      ; akut
2567         BSSendUnicodeChar(0x015B)
2568      else if (PriorDeadKey = "c2")     ; caron
2569         BSSendUnicodeChar(0x0161)
2570      else if (PriorDeadKey = "a3")    ; cedilla
2571         BSSendUnicodeChar(0x015F)
2572      else if (PriorDeadKey = "a5")  ; punkt dar�ber
2573         BSSendUnicodeChar(0x1E61)
2574      else if (PriorDeadKey = "c6") ; punkt darunter
2575         BSSendUnicodeChar(0x1E63)
2576      else   
2577         sendinput {blind}s
2578      if (PriorDeadKey = "comp")
2579         CompKey := "s_small"
2580      else
2581         CompKey := ""
2582   }
2583   else if Ebene = 2
2584   {
2585      if (PriorDeadKey = "c1")           ; circumflex
2586         BSSendUnicodeChar(0x015C)
2587      else if (PriorDeadKey = "c2")     ; caron
2588         BSSendUnicodeChar(0x0160)
2589      else if (PriorDeadKey = "a1")      ; akut
2590         BSSendUnicodeChar(0x015A)
2591      else if (PriorDeadKey = "a3")    ; cedilla
2592         BSSendUnicodeChar(0x015E)
2593      else if (PriorDeadKey = "a5")  ; punkt dar�ber
2594         BSSendUnicodeChar(0x1E60)
2595      else if (PriorDeadKey = "c6") ; punkt darunter
2596         BSSendUnicodeChar(0x1E62)
2597      else
2598         sendinput {blind}S
2599      if (PriorDeadKey = "comp")
2600         CompKey := "s_capital"
2601      else
2602         CompKey := ""
2603   }
2604   else if Ebene = 3
2605   {
2606      send ?
2607      CompKey := ""
2608   }
2609   else if Ebene = 4
2610   {
2611      Send �
2612      CompKey := ""
2613   }
2614   else if Ebene = 5
2615   {
2616      SendUnicodeChar(0x03C3) ;sigma
2617      CompKey := ""
2618   }
2619   else if Ebene = 6
2620   {
2621      SendUnicodeChar(0x03A3)  ; Sigma
2622      CompKey := ""
2623   }
2624   PriorDeadKey := ""
2625return
2626
2627neo_n:
2628   EbeneAktualisieren()
2629   if Ebene = 1
2630   {
2631      if (PriorDeadKey = "a1")          ; akut
2632         BSSendUnicodeChar(0x0144)
2633      else if (PriorDeadKey = "t1")     ; tilde
2634         BSSendUnicodeChar(0x00F1)
2635      else if (PriorDeadKey = "c2")    ; caron
2636         BSSendUnicodeChar(0x0148)
2637      else if (PriorDeadKey = "a3")   ; cedilla
2638         BSSendUnicodeChar(0x0146)
2639      else if (PriorDeadKey = "a5") ; punkt dar�ber
2640         BSSendUnicodeChar(0x1E45)
2641      else
2642         sendinput {blind}n
2643   }
2644   else if Ebene = 2
2645   {
2646      if (PriorDeadKey = "c2")         ; caron
2647         BSSendUnicodeChar(0x0147)
2648      else if (PriorDeadKey = "t1")     ; tilde
2649         BSSendUnicodeChar(0x00D1)
2650      else if (PriorDeadKey = "a1")     ; akut
2651         BSSendUnicodeChar(0x0143)
2652      else if (PriorDeadKey = "a3")   ; cedilla
2653         BSSendUnicodeChar(0x0145)
2654      else if (PriorDeadKey = "a5") ; punkt dar�ber
2655         BSSendUnicodeChar(0x1E44)
2656      else
2657         sendinput {blind}N
2658   }
2659   else if Ebene = 3
2660      send (
2661   else if Ebene = 4
2662   {
2663      if (PriorDeadKey = "c1")            ; circumflex
2664         BSSendUnicodeChar(0x2074)
2665      else if (PriorDeadKey = "c4")       ; toter -
2666         BSSendUnicodeChar(0x2084)
2667      else
2668         Send 4
2669   }
2670   else if Ebene = 5
2671      SendUnicodeChar(0x03BD) ; nu
2672   else if Ebene = 6
2673      SendUnicodeChar(0x2115) ; N (nat�rliche Zahlen)
2674   PriorDeadKey := ""   CompKey := ""
2675return
2676
2677neo_r:
2678   EbeneAktualisieren()
2679   if Ebene = 1
2680   {
2681      if (PriorDeadKey = "a1")           ; akut
2682         BSSendUnicodeChar(0x0155)
2683      else if (PriorDeadKey = "c2")     ; caron
2684         BSSendUnicodeChar(0x0159)
2685      else if (PriorDeadKey = "a3")    ; cedilla
2686         BSSendUnicodeChar(0x0157)
2687      else if (PriorDeadKey = "a5")  ; punkt dar�ber
2688         BSSendUnicodeChar(0x0E59)
2689      else if (PriorDeadKey = "c6") ; punkt darunter
2690         BSSendUnicodeChar(0x1E5B)
2691      else
2692         sendinput {blind}r
2693      if (PriorDeadKey = "comp")
2694         CompKey := "r_small"
2695      else
2696         CompKey := ""
2697   }
2698   else if Ebene = 2
2699   {
2700      if (PriorDeadKey = "c2")          ; caron
2701         BSSendUnicodeChar(0x0158)
2702      else if (PriorDeadKey = "a1")      ; akut
2703         BSSendUnicodeChar(0x0154)
2704      else if (PriorDeadKey = "a3")    ; cedilla
2705         BSSendUnicodeChar(0x0156)
2706      else if (PriorDeadKey = "a5")  ; punkt dar�ber
2707         BSSendUnicodeChar(0x1E58)
2708      else if (PriorDeadKey = "c6") ; punkt darunter
2709         BSSendUnicodeChar(0x1E5A)
2710      else
2711         sendinput {blind}R
2712      if (PriorDeadKey = "comp")
2713         CompKey := "r_capital"
2714      else
2715         CompKey := ""
2716   }
2717   else if Ebene = 3
2718   {
2719      send )
2720      CompKey := ""
2721   }
2722   else if Ebene = 4
2723   {
2724      if (PriorDeadKey = "c1")            ; circumflex
2725         BSSendUnicodeChar(0x2075)
2726      else if (PriorDeadKey = "c4")       ; toter -
2727         BSSendUnicodeChar(0x2085)
2728      else
2729         Send 5
2730      CompKey := ""
2731   }
2732   else if Ebene = 5
2733   {
2734      SendUnicodeChar(0x03F1) ; rho symbol (varrho)
2735      CompKey := ""
2736   }
2737   else if Ebene = 6
2738   {
2739      SendUnicodeChar(0x211D) ; R (reelle Zahlen)
2740      CompKey := ""
2741   }
2742   PriorDeadKey := ""
2743return
2744
2745neo_t:
2746     EbeneAktualisieren()
2747     if Ebene = 1
2748     {
2749        if (PriorDeadKey = "c2")          ; caron
2750           BSSendUnicodeChar(0x0165)
2751        else if (PriorDeadKey = "a3")    ; cedilla
2752           BSSendUnicodeChar(0x0163)
2753        else if (PriorDeadKey = "c4")   ; Querstrich
2754           BSSendUnicodeChar(0x0167)
2755        else if (PriorDeadKey = "a5")  ; punkt dar�ber
2756           BSSendUnicodeChar(0x1E6B)
2757        else if (PriorDeadKey = "c6") ; punkt darunter
2758           BSSendUnicodeChar(0x1E6D)
2759        else
2760           sendinput {blind}t
2761        if (PriorDeadKey = "comp")
2762           CompKey := "t_small"
2763        else
2764           CompKey := ""
2765     }
2766     else if Ebene = 2
2767     {
2768        if (PriorDeadKey = "c2")          ; caron
2769           BSSendUnicodeChar(0x0164)
2770        else if (PriorDeadKey = "a3")    ; cedilla
2771           BSSendUnicodeChar(0x0162)
2772        else if (PriorDeadKey = "c4")   ; Querstrich
2773           BSSendUnicodeChar(0x0166)
2774        else if (PriorDeadKey = "a5")  ; punkt dar�ber
2775           BSSendUnicodeChar(0x1E6A)
2776        else if (PriorDeadKey = "c6") ; punkt darunter
2777           BSSendUnicodeChar(0x1E6C)
2778        else
2779           sendinput {blind}T
2780        if (PriorDeadKey = "comp")
2781           CompKey := "t_capital"
2782        else
2783           CompKey := ""
2784     }
2785     else if Ebene = 3
2786     {
2787        send {blind}- ; Bis
2788        CompKey := ""
2789     }
2790     else if Ebene = 4
2791     {
2792        if (PriorDeadKey = "c1")            ; circumflex
2793           BSSendUnicodeChar(0x2076)
2794        else if (PriorDeadKey = "c4")       ; toter -
2795           BSSendUnicodeChar(0x2086)
2796        else
2797           Send 6
2798        CompKey := ""
2799     }
2800     else if Ebene = 5
2801     {
2802        SendUnicodeChar(0x03C4) ; tau
2803        CompKey := ""
2804     }
2805     else if Ebene = 6
2806     {
2807        SendUnicodeChar(0x2202 ) ; partielle Ableitung
2808        CompKey := ""
2809     }
2810     PriorDeadKey := ""
2811return
2812
2813neo_d:
2814   EbeneAktualisieren()
2815   if Ebene = 1
2816   {
2817      if (PriorDeadKey = "c4")        ; Querstrich
2818         BSSendUnicodeChar(0x0111)
2819      else if (PriorDeadKey = "t5")  ; Schr�gstrich
2820         BSSendUnicodeChar(0x00F0)
2821      else if (PriorDeadKey = "c2")     ; caron
2822         BSSendUnicodeChar(0x010F)
2823      else if (PriorDeadKey = "a5")  ; punkt dar�ber
2824         BSSendUnicodeChar(0x1E0B)
2825      else if (PriorDeadKey = "c6") ; punkt darunter
2826         BSSendUnicodeChar(0x1E0D)
2827      else
2828         sendinput {blind}d
2829   }
2830   else if Ebene = 2
2831   {
2832      if (PriorDeadKey = "c4")        ; Querstrich
2833         BSSendUnicodeChar(0x0110)
2834      else if (PriorDeadKey = "t5")  ; Schr�gstrich
2835         BSSendUnicodeChar(0x00D0)
2836      else if (PriorDeadKey = "c2")     ; caron
2837         BSSendUnicodeChar(0x010E)
2838      else if (PriorDeadKey = "a5")  ; punkt dar�ber
2839         BSSendUnicodeChar(0x1E0A)
2840      else if (PriorDeadKey = "c6") ; punkt darunter
2841         BSSendUnicodeChar(0x1E0D)
2842      else sendinput {blind}D
2843   }
2844   else if Ebene = 3
2845      send :
2846   else if Ebene = 4
2847     Send `,
2848   else if Ebene = 5
2849      SendUnicodeChar(0x03B4) ;delta
2850   else if Ebene = 6
2851      SendUnicodeChar(0x0394)  ; Delta
2852   PriorDeadKey := ""   CompKey := ""
2853return
2854
2855neo_y:
2856   EbeneAktualisieren()
2857   if Ebene = 1
2858   {
2859      if (PriorDeadKey = "t3")       ; Diaerese
2860         Send {bs}�
2861      else if (PriorDeadKey = "a1")      ; akut
2862         BSSendUnicodeChar(0x00FD)
2863      else if (PriorDeadKey = "c1")    ; circumflex
2864         BSSendUnicodeChar(0x0177)
2865      else
2866         sendinput {blind}y
2867   }
2868   else if Ebene = 2
2869   {
2870      if (PriorDeadKey = "a1")           ; akut
2871         BSSendUnicodeChar(0x00DD)
2872      else if (PriorDeadKey = "t3")    ; Diaerese
2873         Send {bs}�
2874      else if (PriorDeadKey = "c1")      ; circumflex
2875         BSSendUnicodeChar(0x0176)
2876      else
2877         sendinput {blind}Y
2878   }
2879   else if Ebene = 3
2880      send @
2881   else if Ebene = 4
2882          Send .
2883   else if Ebene = 5
2884          SendUnicodeChar(0x03C5) ; upsilon
2885   else if Ebene = 6
2886      SendUnicodeChar(0x2207) ; nabla
2887   PriorDeadKey := ""   CompKey := ""
2888return
2889
2890;SC02B (#) wird zu Mod3
2891
2892
2893/*
2894   ------------------------------------------------------
2895   Reihe 4
2896   ------------------------------------------------------
2897*/
2898
2899;SC056 (<) wird zu Mod4
2900
2901neo_�:
2902   EbeneAktualisieren()
2903   if Ebene = 1
2904   {
2905      if (PriorDeadKey = "t2")        ; macron
2906         BSSendUnicodeChar(0x01D6)
2907      else if (PriorDeadKey = "a1")   ; akut
2908         BSSendUnicodeChar(0x01D8)
2909      else if (PriorDeadKey = "a2")   ; grave
2910         BSSendUnicodeChar(0x01DC)
2911      else if (PriorDeadKey = "c2")   ; caron
2912         BSSendUnicodeChar(0x01DA)
2913      else
2914         sendinput {blind}�
2915   }
2916   else if Ebene = 2
2917   {
2918      if (PriorDeadKey = "t2")        ; macron
2919         BSSendUnicodeChar(0x01D5)
2920      else if (PriorDeadKey = "a1")   ; akut
2921         BSSendUnicodeChar(0x01D7)
2922      else if (PriorDeadKey = "a2")   ; grave
2923         BSSendUnicodeChar(0x01DB)
2924      else if (PriorDeadKey = "c2")   ; caron
2925         BSSendUnicodeChar(0x01D9)
2926      else
2927         sendinput {blind}�
2928   }
2929   else if Ebene = 3
2930      send {blind}{#}
2931   else if Ebene = 4
2932      Send {Esc}
2933   else if Ebene = 5
2934     {} ; leer
2935   else if Ebene = 6
2936      SendUnicodeChar(0x221D) ; proportional
2937
2938   PriorDeadKey := ""   CompKey := ""
2939return
2940
2941neo_�:
2942   EbeneAktualisieren()
2943   if Ebene = 1
2944   {
2945      if (PriorDeadKey = "t2")        ; macron
2946         BSSendUnicodeChar(0x022B)
2947      else
2948         sendinput {blind}�
2949   }
2950   else if Ebene = 2
2951   {
2952      if (PriorDeadKey = "t2")        ; macron
2953         BSSendUnicodeChar(0x022A)
2954      else
2955         sendinput {blind}�
2956   }
2957   else if Ebene = 3
2958      send $
2959   else if Ebene = 4
2960      Send {Tab}
2961   else if Ebene = 5
2962       {} ;leer
2963   else if Ebene = 6
2964      SendUnicodeChar(0x2111) ; Fraktur I
2965   PriorDeadKey := ""   CompKey := ""
2966return
2967
2968neo_�:
2969   EbeneAktualisieren()
2970   if Ebene = 1
2971   {
2972      if (PriorDeadKey = "t2")        ; macron
2973         BSSendUnicodeChar(0x01DF)
2974      else
2975         sendinput {blind}�
2976   }
2977   else if Ebene = 2
2978   {
2979      if (PriorDeadKey = "t2")        ; macron
2980         BSSendUnicodeChar(0x001DE)
2981      else
2982         sendinput {blind}�
2983   }
2984   else if Ebene = 3
2985      send |
2986   else if Ebene = 4
2987      Send {PgDn}    ; Next
2988   else if Ebene = 5
2989      SendUnicodeChar(0x03B7) ; eta
2990   else if Ebene = 6
2991      SendUnicodeChar(0x211C) ; altes R
2992   PriorDeadKey := ""   CompKey := ""
2993return
2994
2995neo_p:
2996   EbeneAktualisieren()
2997   if Ebene = 1
2998   {
2999      if (PriorDeadKey = "a5")      ; punkt dar�ber
3000         BSSendUnicodeChar(0x1E57)
3001      else
3002         sendinput {blind}p
3003   }
3004   else if Ebene = 2
3005   {
3006      if (PriorDeadKey = "a5")      ; punkt dar�ber
3007         BSSendUnicodeChar(0x1E56)
3008      else
3009         sendinput {blind}P
3010   }
3011   else if Ebene = 3
3012   {
3013      if (PriorDeadKey = "t1")    ; tilde
3014         BSSendUnicodeChar(0x2248)
3015      else
3016         sendraw ~
3017   }     
3018   else if Ebene = 4
3019        Send {Enter}
3020   else if Ebene = 5
3021      SendUnicodeChar(0x03C0) ;pi
3022   else if Ebene = 6
3023      SendUnicodeChar(0x03A0)  ; Pi
3024   PriorDeadKey := ""   CompKey := ""
3025return
3026
3027neo_z:
3028   EbeneAktualisieren()
3029   if Ebene = 1
3030   {
3031      if (PriorDeadKey = "c2")         ; caron
3032         BSSendUnicodeChar(0x017E)
3033      else if (PriorDeadKey = "a1")     ; akut
3034         BSSendUnicodeChar(0x017A)
3035      else if (PriorDeadKey = "a5") ; punkt dr�ber
3036         BSSendUnicodeChar(0x017C)
3037      else if (PriorDeadKey = "c6") ; punkt drunter
3038         BSSendUnicodeChar(0x1E93)
3039      else
3040         sendinput {blind}z
3041   }
3042   else if Ebene = 2
3043   {
3044      if (PriorDeadKey = "c2")         ; caron 
3045         BSSendUnicodeChar(0x017D)
3046      else if (PriorDeadKey = "a1")     ; akut
3047         BSSendUnicodeChar(0x0179)
3048      else if (PriorDeadKey = "a5") ; punkt dar�ber
3049         BSSendUnicodeChar(0x017B)
3050      else if (PriorDeadKey = "c6") ; punkt drunter
3051         BSSendUnicodeChar(0x1E92)
3052      else
3053         sendinput {blind}Z
3054   }
3055   else if Ebene = 3
3056      send ``{space} ; untot
3057   else if Ebene = 4
3058     {} ; leer   
3059   else if Ebene = 5
3060      SendUnicodeChar(0x03B6) ;zeta
3061   else if Ebene = 6
3062      SendUnicodeChar(0x2124)  ; Z (ganze Zahlen)
3063   PriorDeadKey := ""   CompKey := ""
3064return
3065
3066neo_b:
3067   EbeneAktualisieren()
3068   if Ebene = 1
3069   {
3070      if (PriorDeadKey = "a5")      ; punkt dar�ber
3071         BSSendUnicodeChar(0x1E03)
3072      else
3073         sendinput {blind}b
3074   }
3075   else if Ebene = 2
3076   {
3077      if (PriorDeadKey = "a5")       ; punkt dar�ber
3078         BSSendUnicodeChar(0x1E02)
3079      else
3080         sendinput {blind}B
3081   }
3082   else if Ebene = 3
3083      send {blind}{+}
3084   else if Ebene = 4
3085      send :
3086   else if Ebene = 5
3087      SendUnicodeChar(0x03B2) ; beta
3088   else if Ebene = 6
3089      SendUnicodeChar(0x21D2) ; Doppel-Pfeil rechts
3090   PriorDeadKey := ""   CompKey := ""
3091return
3092
3093neo_m:
3094   EbeneAktualisieren()
3095   if Ebene = 1
3096   {
3097      if (PriorDeadKey = "a5")       ; punkt dar�ber
3098         BSSendUnicodeChar(0x1E41)
3099      else if (PriorDeadKey = "c6") ; punkt darunter
3100         BSSendUnicodeChar(0x1E43)
3101      else if ( (CompKey = "t_small") or (CompKey = "t_capital") )       ; compose
3102         CompUnicodeChar(0x2122)          ; TM
3103      else if ( (CompKey = "s_small") or (CompKey = "s_capital") )       ; compose
3104         CompUnicodeChar(0x2120)          ; SM
3105      else
3106         sendinput {blind}m
3107   }
3108   else if Ebene = 2
3109   {
3110      if (PriorDeadKey = "a5")       ; punkt dar�ber
3111         BSSendUnicodeChar(0x1E40)
3112      else if (PriorDeadKey = "c6") ; punkt darunter
3113         BSSendUnicodeChar(0x1E42)
3114      else if ( (CompKey = "t_capital") or (CompKey = "t_small") )       ; compose
3115         CompUnicodeChar(0x2122)          ; TM
3116      else if ( (CompKey = "s_capital") or (CompKey = "s_small") )       ; compose
3117         CompUnicodeChar(0x2120)          ; SM
3118      else
3119         sendinput {blind}M
3120   }
3121   else if Ebene = 3
3122      send `%
3123   else if Ebene = 4
3124   {
3125      if (PriorDeadKey = "c1")            ; circumflex
3126         BSSendUnicodeChar(0x00B9)
3127      else if (PriorDeadKey = "c4")       ; toter -
3128         BSSendUnicodeChar(0x2081)
3129      else
3130         Send 1
3131   }
3132   else if Ebene = 5
3133      SendUnicodeChar(0x03BC) ; griechisch mu, micro w�re 0x00B5
3134   else if Ebene = 6
3135      SendUnicodeChar(0x21D4) ; doppelter Doppelpfeil (genau dann wenn)
3136   PriorDeadKey := ""   CompKey := ""
3137return
3138
3139neo_komma:
3140   EbeneAktualisieren()
3141   if Ebene = 1
3142       { 
3143         if GetKeyState("CapsLock","T")
3144         {
3145           if (IsModifierPressed())
3146           {
3147             send {blind},
3148           }
3149           else
3150           {
3151              send `,
3152           }
3153               
3154         }
3155         else {
3156           send {blind},
3157         }
3158       }
3159   else if Ebene = 2
3160       SendUnicodeChar(0x22EE) ;  vertikale ellipse
3161   else if Ebene = 3
3162      send "
3163   else if Ebene = 4
3164   {
3165      if (PriorDeadKey = "c1")            ; circumflex
3166         BSSendUnicodeChar(0x00B2)
3167      else if (PriorDeadKey = "c4")       ; toter -
3168         BSSendUnicodeChar(0x2082)
3169      else
3170         Send 2
3171   }
3172   else if Ebene = 5
3173      SendUnicodeChar(0x03C1) ; rho
3174   else if Ebene = 6
3175      SendUnicodeChar(0x21D0) ; Doppelpfeil links
3176   PriorDeadKey := ""   CompKey := ""
3177return
3178
3179neo_punkt:
3180   EbeneAktualisieren()
3181   if Ebene = 1
3182        { 
3183         if GetKeyState("CapsLock","T")
3184         {
3185           if (IsModifierPressed())
3186           {
3187             send {blind}.
3188           }
3189           else
3190           {
3191              send .
3192           }
3193               
3194         }
3195         else {
3196           send {blind}.
3197         }
3198       }
3199  else if Ebene = 2
3200      SendUnicodeChar(0x2026)  ; ellipse
3201   else if Ebene = 3
3202      send '
3203   else if Ebene = 4
3204   {
3205      if (PriorDeadKey = "c1")            ; circumflex
3206         BSSendUnicodeChar(0x00B3)
3207      else if (PriorDeadKey = "c4")       ; toter -
3208         BSSendUnicodeChar(0x2083)
3209      else
3210         Send 3
3211   }
3212   else if Ebene = 5
3213      SendUnicodeChar(0x03D1) ; theta symbol (vartheta)
3214   else if Ebene = 6
3215      SendUnicodeChar(0x0398)  ; Theta
3216   PriorDeadKey := ""   CompKey := ""
3217return
3218
3219
3220neo_j:
3221   EbeneAktualisieren()
3222   if Ebene = 1
3223   {
3224      if (PriorDeadKey = "c1")           ; circumflex
3225         BSSendUnicodeChar(0x0135)
3226      else if (PriorDeadKey = "c2")      ; caron
3227         BSSendUnicodeChar(0x01F0)
3228      else if (CompKey = "i_small")        ; compose
3229         CompUnicodeChar(0x0133)          ; ij
3230      else if (CompKey = "l_small")        ; compose
3231         CompUnicodeChar(0x01C9)          ; lj
3232      else if (CompKey = "l_capital")       ; compose
3233         CompUnicodeChar(0x01C8)          ; Lj
3234      else
3235         sendinput {blind}j
3236   }
3237   else if Ebene = 2
3238   {
3239      if (PriorDeadKey = "c1")            ; circumflex
3240         BSSendUnicodeChar(0x0134)
3241      else if (CompKey = "i_capital")        ; compose
3242         CompUnicodeChar(0x0132)          ; IJ
3243      else if (CompKey = "l_capital")        ; compose
3244         CompUnicodeChar(0x01C7)          ; LJ
3245      else
3246         sendinput {blind}J
3247   }
3248   else if Ebene = 3
3249      send `;
3250   else if Ebene = 4
3251     Send `;
3252   else if Ebene = 5
3253      SendUnicodeChar(0x03B8) ; theta
3254   else if Ebene = 6
3255      SendUnicodeChar(0x2261) ; identisch
3256   PriorDeadKey := ""   CompKey := ""
3257return
3258
3259/*
3260   ------------------------------------------------------
3261   Numpad
3262   ------------------------------------------------------
3263
3264   folgende Tasten verhalten sich bei ein- und ausgeschaltetem
3265   NumLock gleich:
3266*/
3267
3268neo_NumpadDiv:
3269   EbeneAktualisieren()
3270   if ( (Ebene = 1) or (Ebene = 2) )
3271      send {NumpadDiv}
3272   else if Ebene = 3
3273      send �
3274   else if ( (Ebene = 4) or (Ebene = 5) )
3275      SendUnicodeChar(0x2215)   ; slash
3276   PriorDeadKey := ""   CompKey := ""
3277return
3278
3279neo_NumpadMult:
3280   EbeneAktualisieren()
3281   if ( (Ebene = 1) or (Ebene = 2) )
3282      send {NumpadMult}
3283   else if Ebene = 3
3284      send �
3285   else if ( (Ebene = 4) or (Ebene = 5) )
3286      SendUnicodeChar(0x22C5)  ; cdot
3287   PriorDeadKey := ""   CompKey := ""
3288return
3289
3290neo_NumpadSub:
3291   EbeneAktualisieren()
3292   if ( (Ebene = 1) or (Ebene = 2) )
3293   {
3294      if (PriorDeadKey = "c1")          ; circumflex
3295         BSSendUnicodeChar(0x207B)
3296      else if (PriorDeadKey = "c4")       ; toter -
3297         BSSendUnicodeChar(0x208B)         
3298      else
3299         send {blind}{NumpadSub}
3300   }
3301   else if Ebene = 3
3302      SendUnicodeChar(0x2212) ; echtes minus
3303   PriorDeadKey := ""   CompKey := ""
3304return
3305
3306neo_NumpadAdd:
3307   EbeneAktualisieren()
3308   if ( (Ebene = 1) or (Ebene = 2) )
3309   {
3310      if (PriorDeadKey = "c1")          ; circumflex
3311         BSSendUnicodeChar(0x207A)
3312      else if (PriorDeadKey = "c4")       ; toter -
3313         BSSendUnicodeChar(0x208A)         
3314      else
3315         send {blind}{NumpadAdd}
3316   }
3317   else if Ebene = 3
3318      send �
3319   else if ( (Ebene = 4) or (Ebene = 5) )
3320      SendUnicodeChar(0x2213)   ; -+
3321   PriorDeadKey := ""   CompKey := ""
3322return
3323
3324neo_NumpadEnter:
3325   EbeneAktualisieren()
3326   if ( (Ebene = 1) or (Ebene = 2) )
3327      send {NumpadEnter}     
3328   else if Ebene = 3
3329      SendUnicodeChar(0x2260) ; neq
3330   else if ( (Ebene = 4) or (Ebene = 5) )
3331      SendUnicodeChar(0x2248) ; approx
3332   PriorDeadKey := ""   CompKey := ""
3333return
3334
3335/*
3336   folgende Tasten verhalten sich bei ein- und ausgeschaltetem NumLock
3337   unterschiedlich:
3338
3339   bei NumLock ein
3340*/
3341
3342
3343
3344neo_Numpad7:
3345   EbeneAktualisieren()
3346   if Ebene = 1
3347   {
3348      send {blind}{Numpad7}
3349      if (PriorDeadKey = "comp")
3350         CompKey := "Num_7"
3351      else
3352         CompKey := ""       
3353   }
3354   else if Ebene = 2
3355   {
3356      send {NumpadHome}
3357      CompKey := ""
3358   }
3359   else if Ebene = 3
3360   {
3361      SendUnicodeChar(0x2195)   ; Hoch-Runter-Pfeil
3362      CompKey := ""
3363   }
3364   else if ( (Ebene = 4) or (Ebene = 5) )
3365   {
3366      SendUnicodeChar(0x226A)  ; ll
3367      CompKey := ""
3368   }
3369   PriorDeadKey := ""
3370return
3371
3372neo_Numpad8:
3373   EbeneAktualisieren()
3374   if Ebene = 1
3375   {
3376      if (CompKey = "Num_1")
3377         CompUnicodeChar(0x215B)       ; 1/8
3378      else if (CompKey = "Num_3")
3379         CompUnicodeChar(0x215C)       ; 3/8
3380      else if (CompKey = "Num_5")
3381         CompUnicodeChar(0x215D)       ; 5/8
3382      else if (CompKey = "Num_7")
3383         CompUnicodeChar(0x215E)       ; 7/8
3384      else
3385         send {blind}{Numpad8}
3386      if (PriorDeadKey = "comp")
3387         CompKey := "Num_8"
3388      else
3389         CompKey := ""
3390   }
3391   else if Ebene = 2
3392   {
3393      send {NumpadUp}
3394      CompKey := ""
3395   }
3396   else if Ebene = 3
3397   {
3398      SendUnicodeChar(0x2191)     ; uparrow
3399      CompKey := ""
3400   }
3401   else if ( (Ebene = 4) or (Ebene = 5) )
3402   {
3403      SendUnicodeChar(0x2229)    ; intersection
3404      CompKey := ""
3405   }
3406   PriorDeadKey := ""   CompKey := ""
3407return
3408
3409neo_Numpad9:
3410   EbeneAktualisieren()
3411   if Ebene = 1
3412   {
3413      send {blind}{Numpad9}
3414      if (PriorDeadKey = "comp")
3415         CompKey := "Num_9"
3416      else
3417         CompKey := ""
3418   }
3419   else if Ebene = 2
3420   {
3421      send {NumpadPgUp}
3422      CompKey := ""
3423   }
3424   else if ( (Ebene = 4) or (Ebene = 5) )
3425   {
3426      SendUnicodeChar(0x226B)  ; gg
3427      CompKey := ""
3428   }
3429   PriorDeadKey := ""
3430return
3431
3432
3433
3434neo_Numpad4:
3435   EbeneAktualisieren()
3436   if Ebene = 1
3437   {
3438      if (CompKey = "Num_1")
3439         CompUnicodeChar(0x00BC)       ; 1/4
3440      else if (CompKey = "Num_3")
3441         CompUnicodeChar(0x00BE)       ; 3/4
3442      else
3443         send {blind}{Numpad4}
3444      if (PriorDeadKey = "comp")
3445         CompKey := "Num_4"
3446      else
3447         CompKey := ""
3448   }
3449   else if Ebene = 2
3450   {
3451      send {NumpadLeft}
3452      CompKey := ""
3453   }
3454   else if Ebene = 3
3455   {
3456      SendUnicodeChar(0x2190)     ; leftarrow
3457      CompKey := ""
3458   }
3459   else if ( (Ebene = 4) or (Ebene = 5) )
3460   {
3461      SendUnicodeChar(0x2282)  ; subset of
3462      CompKey := ""
3463   }
3464   PriorDeadKey := ""
3465return
3466
3467neo_Numpad5:
3468   EbeneAktualisieren()
3469   if Ebene = 1
3470   {
3471      if (CompKey = "Num_1")
3472         CompUnicodeChar(0x2155)       ; 1/5
3473      else if (CompKey = "Num_2")
3474         CompUnicodeChar(0x2156)       ; 2/5
3475      else if (CompKey = "Num_3")
3476         CompUnicodeChar(0x2157)       ; 3/5
3477      else if (CompKey = "Num_4")
3478         CompUnicodeChar(0x2158)       ; 4/5
3479      else
3480         send {blind}{Numpad5}
3481      if (PriorDeadKey = "comp")
3482         CompKey := "Num_5"
3483      else
3484         CompKey := ""
3485   }
3486   else if Ebene = 2
3487   {
3488      send {NumpadClear}
3489      CompKey := ""
3490   }
3491   else if Ebene = 3
3492   {
3493      send �
3494      CompKey := ""
3495   }
3496   else if ( (Ebene = 4) or (Ebene = 5) )
3497   {
3498      SendUnicodeChar(0x220A) ; small element of
3499      CompKey := ""
3500   }
3501   PriorDeadKey := ""
3502return
3503
3504neo_Numpad6:
3505   EbeneAktualisieren()
3506   if Ebene = 1
3507   {
3508      if (CompKey = "Num_1")
3509         CompUnicodeChar(0x2159)       ; 1/6
3510      else if (CompKey = "Num_5")
3511         CompUnicodeChar(0x215A)       ; 5/6
3512      else
3513         send {blind}{Numpad6}
3514      if (PriorDeadKey = "comp")
3515         CompKey := "Num_6"
3516      else
3517         CompKey := ""
3518   }
3519   else if Ebene = 2
3520   {
3521      send {NumpadRight}
3522      CompKey := ""
3523   }
3524   else if Ebene = 3
3525   {
3526      SendUnicodeChar(0x2192)     ; rightarrow
3527      CompKey := ""
3528   }
3529   else if ( (Ebene = 4) or (Ebene = 5) )
3530   {
3531      SendUnicodeChar(0x2283) ; superset of
3532      CompKey := ""
3533   }
3534   PriorDeadKey := ""
3535return
3536
3537neo_Numpad1:
3538   EbeneAktualisieren()
3539   if Ebene = 1
3540   {
3541      send {blind}{Numpad1}
3542      if (PriorDeadKey = "comp")
3543         CompKey := "Num_1"
3544      else
3545         CompKey := ""
3546   }
3547   else if Ebene = 2
3548   {
3549      send {NumpadEnd}
3550      CompKey := ""
3551   }
3552   else if Ebene = 3
3553   {
3554      SendUnicodeChar(0x2194) ; Links-Rechts-Pfeil
3555      CompKey := ""
3556   }
3557   else if ( (Ebene = 4) or (Ebene = 5) )
3558   {
3559      SendUnicodeChar(0x2264)   ; leq
3560      CompKey := ""
3561   }
3562   PriorDeadKey := ""
3563return
3564
3565neo_Numpad2:
3566   EbeneAktualisieren()
3567   if Ebene = 1
3568   {
3569      if (CompKey = "Num_1")
3570         CompUnicodeChar(0x00BD)       ; 1/2
3571      else
3572         send {blind}{Numpad2}
3573      if (PriorDeadKey = "comp")
3574         CompKey := "Num_2"
3575      else
3576         CompKey := ""
3577   }
3578   else if Ebene = 2
3579   {
3580      send {NumpadDown}
3581      CompKey := ""
3582   }
3583   else if Ebene = 3
3584   {
3585      SendUnicodeChar(0x2193)     ; downarrow
3586      CompKey := ""
3587   }
3588   else if ( (Ebene = 4) or (Ebene = 5) )
3589   {
3590      SendUnicodeChar(0x222A)  ; vereinigt
3591      CompKey := ""
3592   }
3593   PriorDeadKey := ""
3594return
3595
3596neo_Numpad3:
3597   EbeneAktualisieren()
3598   if Ebene = 1
3599   {
3600      if (CompKey = "Num_1")
3601         CompUnicodeChar(0x2153)       ; 1/3
3602      else if (CompKey = "Num_2")
3603         CompUnicodeChar(0x2154)       ; 2/3
3604      else
3605         send {blind}{Numpad3}
3606      if (PriorDeadKey = "comp")
3607         CompKey := "Num_3"
3608      else
3609         CompKey := ""
3610   }
3611   else if Ebene = 2
3612      send {NumpadPgDn}
3613   else if Ebene = 3
3614      SendUnicodeChar(0x21CC) ; RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON
3615   else if ( (Ebene = 4) or (Ebene = 5) )
3616      SendUnicodeChar(0x2265)  ; geq
3617   PriorDeadKey := ""   CompKey := ""
3618return
3619
3620neo_Numpad0:
3621   EbeneAktualisieren()
3622   if Ebene = 1
3623   {
3624      send {blind}{Numpad0}
3625      if (PriorDeadKey = "comp")
3626         CompKey := "Num_0"
3627      else
3628         CompKey := ""
3629   }
3630   else if Ebene = 2
3631   {
3632      send {NumpadIns}
3633      CompKey := ""
3634   }
3635   else if Ebene = 3
3636   {
3637      send `%
3638      CompKey := ""
3639   }
3640   else if ( (Ebene = 4) or (Ebene = 5) )
3641   {
3642      send �
3643      CompKey := ""
3644   }
3645   PriorDeadKey := ""
3646return
3647
3648neo_NumpadDot:
3649   EbeneAktualisieren()
3650   if Ebene = 1
3651   {
3652      send {NumpadDot}
3653      CompKey := ""
3654   }
3655   else if Ebene = 2
3656   {
3657      send {NumpadDel}
3658      CompKey := ""
3659   }
3660   else if Ebene = 3
3661   {
3662      send .
3663      CompKey := ""
3664   }
3665   else if ( (Ebene = 4) or (Ebene = 5) )
3666   {
3667      send `,
3668      CompKey := ""
3669   }
3670   PriorDeadKey := ""
3671return
3672
3673/*
3674   bei NumLock aus
3675*/
3676
3677neo_NumpadHome:
3678   EbeneAktualisieren()
3679   if Ebene = 1
3680   {
3681      send {NumpadHome}
3682      CompKey := ""
3683   }
3684   else if Ebene = 2
3685   {
3686      send {Numpad7}
3687      if (PriorDeadKey = "comp")
3688         CompKey := "Num_7"
3689      else
3690         CompKey := ""
3691   }
3692   else if ( (Ebene = 4) or (Ebene = 5) )
3693   {
3694      SendUnicodeChar(0x226A)  ; ll
3695      CompKey := ""
3696   }
3697   PriorDeadKey := ""
3698return
3699
3700neo_NumpadUp:
3701   EbeneAktualisieren()
3702   if Ebene = 1
3703   {
3704      send {NumpadUp}
3705      CompKey := ""
3706   }
3707   else if Ebene = 2
3708   {
3709      if (CompKey = "Num_1")
3710         CompUnicodeChar(0x215B)       ; 1/8
3711      else if (CompKey = "Num_3")
3712         CompUnicodeChar(0x215C)       ; 3/8
3713      else if (CompKey = "Num_5")
3714         CompUnicodeChar(0x215D)       ; 5/8
3715      else if (CompKey = "Num_7")
3716         CompUnicodeChar(0x215E)       ; 7/8
3717      else
3718         send {Numpad8}
3719      if (PriorDeadKey = "comp")
3720         CompKey := "Num_8"
3721      else
3722         CompKey := ""
3723   }
3724   else if Ebene = 3
3725   {
3726      SendUnicodeChar(0x2191)     ; uparrow
3727      CompKey := ""
3728   }
3729   else if ( (Ebene = 4) or (Ebene = 5) )
3730   {
3731      SendUnicodeChar(0x2229)    ; intersection
3732      CompKey := ""
3733   }
3734   PriorDeadKey := ""
3735return
3736
3737neo_NumpadPgUp:
3738   EbeneAktualisieren()
3739   if Ebene = 1
3740   {
3741      send {NumpadPgUp}
3742      CompKey := ""
3743   }
3744   else if Ebene = 2
3745   {
3746      send {Numpad9}
3747      if (PriorDeadKey = "comp")
3748         CompKey := "Num_9"
3749      else
3750         CompKey := ""
3751   }
3752   else if ( (Ebene = 4) or (Ebene = 5) )
3753   {
3754      SendUnicodeChar(0x226B)  ; gg
3755      CompKey := ""
3756   }
3757   PriorDeadKey := ""
3758return
3759
3760neo_NumpadLeft:
3761   EbeneAktualisieren()
3762   if Ebene = 1
3763   {
3764      send {NumpadLeft}
3765      CompKey := ""
3766   }
3767   else if Ebene = 2
3768   {
3769      if (CompKey = "Num_1")
3770         CompUnicodeChar(0x00BC)       ; 1/4
3771      else if (CompKey = "Num_3")
3772         CompUnicodeChar(0x00BE)       ; 3/4
3773      else
3774         send {Numpad4}
3775      if (PriorDeadKey = "comp")
3776         CompKey := "Num_4"
3777      else
3778         CompKey := ""
3779   }
3780   else if Ebene = 3
3781   {
3782      SendUnicodeChar(0x2190)     ; leftarrow
3783      CompKey := ""
3784   }
3785   else if ( (Ebene = 4) or (Ebene = 5) )
3786   {
3787      SendUnicodeChar(0x2282)  ; subset of
3788      CompKey := ""
3789   }
3790   PriorDeadKey := ""
3791return
3792
3793neo_NumpadClear:
3794   EbeneAktualisieren()
3795   if Ebene = 1
3796   {
3797      send {NumpadClear}
3798      CompKey := ""
3799   }
3800   else if Ebene = 2
3801   {
3802      if (CompKey = "Num_1")
3803         CompUnicodeChar(0x2155)       ; 1/5
3804      else if (CompKey = "Num_2")
3805         CompUnicodeChar(0x2156)       ; 2/5
3806      else if (CompKey = "Num_3")
3807         CompUnicodeChar(0x2157)       ; 3/5
3808      else if (CompKey = "Num_4")
3809         CompUnicodeChar(0x2158)       ; 4/5
3810      else
3811         send {Numpad5}
3812      if (PriorDeadKey = "comp")
3813         CompKey := "Num_5"
3814      else
3815         CompKey := ""
3816   }
3817   else if Ebene = 3
3818   {
3819      send �
3820      CompKey := ""
3821   }
3822   else if ( (Ebene = 4) or (Ebene = 5) )
3823   {
3824      SendUnicodeChar(0x220A) ; small element of
3825      CompKey := ""
3826   }
3827   PriorDeadKey := ""
3828return
3829
3830neo_NumpadRight:
3831   EbeneAktualisieren()
3832   if Ebene = 1
3833   {
3834      send {NumpadRight}
3835      CompKey := ""
3836   }
3837   else if Ebene = 2
3838   {
3839      if (CompKey = "Num_1")
3840         CompUnicodeChar(0x2159)       ; 1/6
3841      else if (CompKey = "Num_5")
3842         CompUnicodeChar(0x215A)       ; 5/6
3843      else
3844         send {Numpad6}
3845      if (PriorDeadKey = "comp")
3846         CompKey := "Num_6"
3847      else
3848         CompKey := ""
3849   }
3850   else if Ebene = 3
3851   {
3852      SendUnicodeChar(0x2192)     ; rightarrow
3853      CompKey := ""
3854   }
3855   else if ( (Ebene = 4) or (Ebene = 5) )
3856   {
3857      SendUnicodeChar(0x2283) ; superset of
3858      CompKey := ""
3859   }
3860   PriorDeadKey := ""
3861return
3862
3863neo_NumpadEnd:
3864   EbeneAktualisieren()
3865   if Ebene = 1
3866   {
3867      send {NumpadEnd}
3868      CompKey := ""
3869   }
3870   else if Ebene = 2
3871   {
3872      send {Numpad1}
3873      if (PriorDeadKey = "comp")
3874         CompKey := "Num_1"
3875      else
3876         CompKey := ""
3877   }
3878   else if Ebene = 3
3879   {
3880      SendUnicodeChar(0x21CB) ; LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON
3881      CompKey := ""
3882   }
3883   else if ( (Ebene = 4) or (Ebene = 5) )
3884   {
3885      SendUnicodeChar(0x2264)   ; leq
3886      CompKey := ""
3887   }
3888   PriorDeadKey := ""
3889return
3890
3891neo_NumpadDown:
3892   EbeneAktualisieren()
3893   if Ebene = 1
3894   {
3895      send {NumpadDown}
3896      CompKey := ""
3897   }
3898   else if Ebene = 2
3899   {
3900      if (CompKey = "Num_1")
3901         CompUnicodeChar(0x00BD)       ; 1/2
3902      else
3903         send {Numpad2}
3904      if (PriorDeadKey = "comp")
3905         CompKey := "Num_2"
3906      else
3907         CompKey := ""
3908   }
3909   else if Ebene = 3
3910   {
3911      SendUnicodeChar(0x2193)     ; downarrow
3912      CompKey := ""
3913   }
3914   else if ( (Ebene = 4) or (Ebene = 5) )
3915   {
3916      SendUnicodeChar(0x222A)  ; vereinigt
3917      CompKey := ""
3918   }
3919   PriorDeadKey := ""
3920return
3921
3922neo_NumpadPgDn:
3923   EbeneAktualisieren()
3924   if Ebene = 1
3925   {
3926      send {NumpadPgDn}
3927      CompKey := ""
3928   }
3929   else if Ebene = 2
3930   {
3931      if (CompKey = "Num_1")
3932         CompUnicodeChar(0x2153)       ; 1/3
3933      else if (CompKey = "Num_2")
3934         CompUnicodeChar(0x2154)       ; 2/3
3935      else
3936         send {Numpad3}
3937      if (PriorDeadKey = "comp")
3938         CompKey := "Num_3"
3939      else
3940         CompKey := ""
3941   }
3942   else if Ebene = 3
3943   {
3944      SendUnicodeChar(0x21CC) ; RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON   
3945      CompKey := ""
3946   }
3947   else if ( (Ebene = 4) or (Ebene = 5) )
3948   {
3949      SendUnicodeChar(0x2265)  ; geq
3950      CompKey := ""
3951   }
3952   PriorDeadKey := ""
3953return
3954
3955neo_NumpadIns:
3956   EbeneAktualisieren()
3957   if Ebene = 1
3958   {
3959      send {NumpadIns}
3960      CompKey := ""
3961   }
3962   else if Ebene = 2
3963   {
3964      send {Numpad0}
3965      if (PriorDeadKey = "comp")
3966         CompKey := "Num_0"
3967      else
3968         CompKey := ""
3969   }
3970   else if Ebene = 3
3971   {
3972      send `%
3973      CompKey := ""
3974   }
3975   else if ( (Ebene = 4) or (Ebene = 5) )
3976   {
3977      send �
3978      CompKey := ""
3979   }
3980   PriorDeadKey := ""
3981return
3982
3983neo_NumpadDel:
3984   EbeneAktualisieren()
3985   if Ebene = 1
3986   {
3987      send {NumpadDel}
3988      CompKey := ""
3989   }
3990   else if Ebene = 2
3991   {
3992      send {NumpadDot}
3993      CompKey := ""
3994   }
3995   else if Ebene = 3
3996   {
3997      send .
3998      CompKey := ""
3999   }
4000   else if ( (Ebene = 4) or (Ebene = 5) )
4001   {
4002      send `,
4003      CompKey := ""
4004   }
4005   PriorDeadKey := ""
4006return
4007
4008
4009/*
4010   ------------------------------------------------------
4011   Sondertasten
4012   ------------------------------------------------------
4013*/
4014*space::
4015   if (einHandNeo)
4016        spacepressed := 1
4017   else
4018    goto neo_SpaceUp
4019return
4020
4021*space up::
4022   if (einHandNeo)
4023   {
4024     if (keypressed)
4025     {
4026       keypressed := 0
4027       spacepressed := 0       
4028     }
4029     else
4030     {
4031        goto neo_SpaceUp
4032     }
4033   }
4034   else
4035     { } ;do nothing
4036return
4037
4038neo_SpaceUp:
4039     EbeneAktualisieren()
4040     if Ebene = 1
4041     {
4042        if (CompKey = "r_small_1")
4043           Comp3UnicodeChar(0x2170)          ; r�misch i
4044        else if (CompKey = "r_capital_1")
4045           Comp3UnicodeChar(0x2160)          ; r�misch I
4046        else
4047           Send {blind}{Space}
4048     }
4049     if  Ebene  =  2
4050        Send  {blind}{Space}
4051     if Ebene = 3
4052        Send {blind}{Space}
4053     if Ebene = 4
4054     {
4055        if (PriorDeadKey = "c1")            ; circumflex
4056           BSSendUnicodeChar(0x2070)
4057        else if (PriorDeadKey = "c4")       ; toter -
4058           BSSendUnicodeChar(0x2080)
4059        else
4060           Send 0
4061     }
4062     else if Ebene = 5
4063        SendUnicodeChar(0x00A0)   ; gesch�tztes Leerzeichen
4064     else if Ebene = 6
4065        SendUnicodeChar(0x202F) ; schmales Leerzeichen
4066     PriorDeadKey := ""   CompKey := ""
4067  spacepressed := 0     
4068  keypressed := 0               
4069return
4070
4071/*
4072*Space::
4073   EbeneAktualisieren()
4074   if Ebene = 1
4075   {
4076      if (CompKey = "r_small_1")
4077         Comp3UnicodeChar(0x2170)          ; r�misch i
4078      else if (CompKey = "r_capital_1")
4079         Comp3UnicodeChar(0x2160)          ; r�misch I
4080      else
4081         Send {blind}{Space}
4082   }
4083   if  Ebene  =  2
4084      Send  {blind}{Space}
4085   if Ebene = 3
4086      Send {blind}{Space}
4087   if Ebene = 4
4088   {
4089      if (PriorDeadKey = "c1")            ; circumflex
4090         BSSendUnicodeChar(0x2070)
4091      else if (PriorDeadKey = "c4")       ; toter -
4092         BSSendUnicodeChar(0x2080)
4093      else
4094         Send 0
4095   }
4096   else if Ebene = 5
4097      SendUnicodeChar(0x00A0)   ; gesch�tztes Leerzeichen
4098   else if Ebene = 6
4099      SendUnicodeChar(0x202F) ; schmales Leerzeichen
4100   PriorDeadKey := ""   CompKey := ""
4101return
4102*/
4103/*
4104   Folgende Tasten sind nur aufgef�hrt, um PriorDeadKey zu leeren.
4105   Irgendwie sieht das noch nicht sch�n aus. Vielleicht l�sst sich dieses
4106   Problem irgendwie eleganter l�sen...
4107   
4108   Nachtrag:
4109   Weil es mit Alt+Tab Probleme gab, wird hier jetzt erstmal rumgeflickschustert,
4110   bis eine allgemeinere L�sung gefunden wurde.
4111*/
4112
4113*Enter::
4114   if ( not(lernModus) or (lernModus_std_Return) )
4115   {
4116     sendinput {Blind}{Enter}
4117     PriorDeadKey := ""   CompKey := ""
4118   }
4119return
4120
4121*Backspace::
4122   if ( not(lernModus) or (lernModus_std_Backspace) )
4123   {
4124     sendinput {Blind}{Backspace}
4125     PriorDeadKey := ""   CompKey := ""
4126   }
4127return
4128
4129*Del::
4130   if ( not(lernModus) or (lernModus_std_Entf) )
4131   {
4132     sendinput {Blind}{Del}
4133   }
4134return
4135
4136*Ins::
4137   if ( not(lernModus) or (lernModus_std_Einf) )
4138   {
4139     sendinput {Blind}{Ins}
4140   }
4141return
4142
4143
4144
4145
4146
4147/*
4148Auf Mod3+Tab liegt Compose. AltTab funktioniert, jedoch ShiftAltTab nicht.
4149Wenigstens kommt es jetzt nicht mehr zu komischen Ergebnissen, wenn man Tab
4150nach einem DeadKey dr�ckt...
4151*/
4152
4153neo_tab:
4154   if ( GetKeyState("SC038","P") )
4155   {
4156      SC038 & Tab::AltTab            ; http://de.autohotkey.com/docs/Hotkeys.htm#AltTabDetail
4157   }
4158   else if GetKeyState("#","P")
4159   {
4160      PriorDeadKey := "comp"
4161      CompKey := ""
4162   }
4163   else
4164   {
4165      send {blind}{Tab}
4166      PriorDeadKey := ""
4167      CompKey := ""
4168   }
4169return
4170
4171*SC038::                    ; LAlt, damit AltTab funktioniert
4172   send {blind}{LAlt}
4173   PriorDeadKey := ""   CompKey := ""
4174return
4175
4176*Home::
4177   if ( not(lernModus) or (lernModus_std_Pos1) )
4178   {
4179     sendinput {Blind}{Home}
4180     PriorDeadKey := ""   CompKey := ""
4181   }
4182return
4183
4184*End::
4185   if ( not(lernModus) or (lernModus_std_Ende) )
4186   {
4187     sendinput {Blind}{End}
4188     PriorDeadKey := ""   CompKey := ""
4189   }
4190return
4191
4192*PgUp::
4193   if ( not(lernModus) or (lernModus_std_PgUp) )
4194   {
4195     sendinput {Blind}{PgUp}
4196     PriorDeadKey := ""   CompKey := ""
4197   }
4198return
4199
4200*PgDn::
4201   if ( not(lernModus) or (lernModus_std_PgDn) )
4202   {
4203     sendinput {Blind}{PgDn}
4204     PriorDeadKey := ""   CompKey := ""
4205   }
4206return
4207
4208*Up::
4209   if ( not(lernModus) or (lernModus_std_Hoch) )
4210   {
4211     sendinput {Blind}{Up}
4212     PriorDeadKey := ""   CompKey := ""
4213   }
4214return
4215
4216*Down::
4217   if ( not(lernModus) or (lernModus_std_Runter) )
4218   {
4219     sendinput {Blind}{Down}
4220     PriorDeadKey := ""   CompKey := ""
4221   }
4222return
4223
4224*Left::
4225   if ( not(lernModus) or (lernModus_std_Links) )
4226   {
4227     sendinput {Blind}{Left}
4228     PriorDeadKey := ""   CompKey := ""
4229   }
4230return
4231
4232*Right::
4233   if ( not(lernModus) or (lernModus_std_Rechts) )
4234   {
4235     sendinput {Blind}{Right}
4236     PriorDeadKey := ""   CompKey := ""
4237   }
4238return
4239
4240
4241/*
4242   ------------------------------------------------------
4243   Funktionen
4244   ------------------------------------------------------
4245*/
4246
4247/*
4248Ebenen laut Referenz:
42491. Ebene (kein Mod)      4. Ebene (Mod4)
42502. Ebene (Umschalt)      5. Ebene (Mod3+Umschalt)
42513. Ebene (Mod3)          6. Ebene (Mod3+Mod4)
4252*/
4253/*
4254EbeneAktualisieren()
4255{
4256   global
4257   Ebene = 1
4258
4259   ; ist Shift down?
4260   if ( GetKeyState("Shift","P") )
4261   {
4262      Ebene += 1
4263   }
4264   ; ist Mod3 down?
4265   if ( GetKeyState("CapsLock","P") or GetKeyState("#","P") )
4266   {
4267      Ebene += 2
4268   }
4269   
4270   ; ist Mod4 down? Mod3 hat Vorrang!
4271   else if ( GetKeyState("<","P") or GetKeyState("SC138","P") )
4272   {
4273      Ebene += 4
4274   }
4275}
4276*/
4277
4278
4279EbeneAktualisieren()
4280{
4281   global
4282   if (ahkTreiberKombi)
4283   {
4284      if ( IsMod4Pressed() and not(IsShiftPressed()) and not(IsMod3Pressed()))
4285      {
4286         Ebene = 6     
4287      }
4288      else
4289      {
4290        Ebene = -1
4291      } 
4292   }
4293   else
4294   {   
4295     if ( IsShiftPressed() )
4296     {  ; Umschalt
4297                if ( IsMod3Pressed() )
4298                { ; Umschalt UND Mod3
4299            if ( IsMod4Pressed() )
4300            {  ; Umschald UND Mod3 UND Mod4
4301               ; Ebene 8 impliziert Ebene 6
4302               Ebene = 6
4303             }
4304            else
4305            { ; Umschald UND Mod3 NICHT Mod4
4306                Ebene = 5                     
4307            }
4308        }
4309                else
4310                {  ; Umschalt NICHT Mod3
4311            if ( IsMod4Pressed() )
4312            {  ; Umschald UND Mod4 NICHT Mod3
4313               ; Ebene 7 impliziert Ebene 4
4314                Ebene = 4
4315            }
4316            else
4317            { ; Umschald NICHT Mod3 NICHT Mod4
4318               Ebene = 2       
4319            }
4320         }   
4321     }
4322     else
4323     { ; NICHT Umschalt
4324                if ( IsMod3Pressed() )
4325                { ; Mod3 NICHT Umschalt
4326           if ( IsMod4Pressed() )
4327           {  ; Mod3 UND Mod4 NICHT Umschalt
4328               Ebene = 6
4329           }
4330           else
4331           { ; Mod3 NICHT Mod4 NICHT Umschalt
4332               Ebene = 3       
4333           }
4334        }
4335                else
4336                {  ; NICHT Umschalt NICHT Mod3
4337           if ( IsMod4Pressed() )
4338           {  ; Mod4 NICHT Umschalt NICHT Mod3
4339               Ebene = 4
4340           }
4341           else
4342           { ; NICHT Umschalt NICHT Mod3 NICHT Mod4
4343               Ebene = 1
4344           }
4345        }   
4346      }
4347   }
4348}
4349
4350IsShiftPressed()
4351{
4352  return GetKeyState("Shift","P")
4353}
4354
4355IsMod3Pressed()
4356{
4357   global
4358   if (IsMod3Locked)
4359   {
4360       return (not ( GetKeyState("CapsLock","P") or GetKeyState("#","P") ))
4361   }
4362   else {
4363          return ( GetKeyState("CapsLock","P") or GetKeyState("#","P") )
4364   }
4365}
4366
4367IsMod4Pressed()
4368{
4369   global
4370   if( not(einHandNeo) or not(spacepressed) )
4371   {
4372     if (IsMod4Locked)
4373     {
4374         return (not ( GetKeyState("<","P") or GetKeyState("SC138","P") or altGrPressed ))
4375     }
4376     else {
4377         return ( GetKeyState("<","P") or GetKeyState("SC138","P") or altGrPressed )
4378     }
4379   }
4380   else
4381   {
4382     if (IsMod4Locked)
4383     {
4384         return (not ( GetKeyState("<","P") or GetKeyState("SC138","P") or GetKeyState("�","P")  or altGrPressed ))
4385     }
4386     else {
4387         return ( GetKeyState("<","P") or GetKeyState("SC138","P") or GetKeyState("�","P") or altGrPressed )
4388     }
4389   }
4390   
4391}
4392
4393
4394/*************************
4395  Alte Methoden
4396*************************/
4397
4398/*
4399Unicode(code)
4400{
4401   saved_clipboard := ClipboardAll
4402   Transform, Clipboard, Unicode, %code%
4403   sendplay ^v
4404   Clipboard := saved_clipboard
4405}
4406
4407BSUnicode(code)
4408{
4409   saved_clipboard := ClipboardAll
4410   Transform, Clipboard, Unicode, %code%
4411   sendplay {bs}^v
4412   Clipboard := saved_clipboard
4413}
4414*/
4415
4416IsModifierPressed()
4417{
4418   if (GetKeyState("LControl","P") or GetKeyState("RControl","P") or GetKeyState("LAlt","P") or GetKeyState("RAltl","P") or GetKeyState("LWin","P") or GetKeyState("RWin","P") or GetKeyState("LShift","P") or GetKeyState("RShift","P") or GetKeyState("AltGr","P") )
4419    {
4420       return 1
4421    }
4422    else
4423    {
4424       return 0
4425    }
4426}
4427
4428SendUnicodeChar(charCode)
4429{
4430   VarSetCapacity(ki, 28 * 2, 0)
4431
4432   EncodeInteger(&ki + 0, 1)
4433   EncodeInteger(&ki + 6, charCode)
4434   EncodeInteger(&ki + 8, 4)
4435   EncodeInteger(&ki +28, 1)
4436   EncodeInteger(&ki +34, charCode)
4437   EncodeInteger(&ki +36, 4|2)
4438
4439   DllCall("SendInput", "UInt", 2, "UInt", &ki, "Int", 28)
4440}
4441
4442BSSendUnicodeChar(charCode)
4443{
4444   send {bs}
4445   SendUnicodeChar(charCode)
4446}
4447
4448CompUnicodeChar(charCode)
4449{
4450   send {bs}
4451         SendUnicodeChar(charCode)
4452}
4453
4454Comp3UnicodeChar(charCode)
4455{
4456   send {bs}
4457   send {bs}
4458   SendUnicodeChar(charCode)
4459}
4460
4461
4462EncodeInteger(ref, val)
4463{
4464   DllCall("ntdll\RtlFillMemoryUlong", "Uint", ref, "Uint", 4, "Uint", val)
4465}
4466
4467
4468
4469/*
4470   ------------------------------------------------------
4471   BildschirmTastatur
4472   ------------------------------------------------------
4473*/
4474guiErstellt = 0
4475alwaysOnTop = 1
4476aktuellesBild = ebene1.png
4477^~F1::
4478{
4479  if (zeigeBildschirmTastatur)
4480    goto Switch1
4481  return
4482}
4483^~F2::
4484{
4485  if (zeigeBildschirmTastatur)
4486    goto Switch2
4487  return
4488}
4489^~F3::
4490{
4491  if (zeigeBildschirmTastatur)
4492    goto Switch3
4493  return
4494}
4495^~F4::
4496{
4497  if (zeigeBildschirmTastatur)
4498    goto Switch4
4499  return
4500}
4501^~F5::
4502{
4503  if (zeigeBildschirmTastatur)
4504    goto Switch5
4505  return
4506}
4507^~F6::
4508{
4509  if (zeigeBildschirmTastatur)
4510    goto Switch6
4511  return
4512}
4513^~F7::
4514{
4515  if (zeigeBildschirmTastatur)
4516    goto Show
4517  return
4518}
4519^~F8::
4520{
4521  if (zeigeBildschirmTastatur)
4522        goto ToggleAlwaysOnTop
4523  return
4524}
4525
4526Switch1:
4527  if (guiErstellt)
4528  {
4529     if (Image == "ebene1.png")
4530        goto Close
4531     else
4532     {
4533       Image = ebene1.png
4534       SetTimer, Refresh
4535     }
4536  }
4537  else
4538  {
4539    Image = ebene1.png
4540    goto Show   
4541  }
4542Return
4543
4544Switch2:
4545  if (guiErstellt)
4546  {
4547     if (Image == "ebene2.png")
4548        goto Close
4549     else
4550     {
4551       Image = ebene2.png
4552       SetTimer, Refresh
4553     }
4554  }
4555  else
4556  {
4557    Image = ebene2.png
4558    goto Show   
4559  }
4560Return
4561
4562Switch3:
4563  if (guiErstellt)
4564  {
4565     if (Image == "ebene3.png")
4566        goto Close
4567     else
4568     {
4569       Image = ebene3.png
4570       SetTimer, Refresh
4571     }
4572  }
4573  else
4574  {
4575    Image = ebene3.png
4576    goto Show   
4577  }
4578Return
4579
4580Switch4:
4581  if (guiErstellt)
4582  {
4583     if (Image == "ebene4.png")
4584        goto Close
4585     else
4586     {
4587       Image = ebene4.png
4588       SetTimer, Refresh
4589     }
4590  }
4591  else
4592  {
4593    Image = ebene4.png
4594    goto Show   
4595  }
4596Return
4597
4598Switch5:
4599  if (guiErstellt)
4600  {
4601     if (Image == "ebene5.png")
4602        goto Close
4603     else
4604     {
4605       Image = ebene5.png
4606       SetTimer, Refresh
4607     }
4608  }
4609  else
4610  {
4611    Image = ebene5.png
4612    goto Show   
4613  }
4614Return
4615
4616Switch6:
4617  if (guiErstellt)
4618  {
4619     if (Image == "ebene6.png")
4620        goto Close
4621     else
4622     {
4623       Image = ebene6.png
4624       SetTimer, Refresh
4625     }
4626  }
4627  else
4628  {
4629    Image = ebene6.png
4630    goto Show   
4631  }
4632Return
4633
4634Show:
4635  if (guiErstellt)
4636  {
4637     goto Close
4638  }
4639  else
4640  {
4641    if (Image = "")     
4642    {
4643      Image = ebene1.png
4644    }     
4645    yPosition := A_ScreenHeight -270
4646        Gui, Color, FFFFFF
4647    Gui, Add, Button, xm+5 gSwitch1, F1
4648    Gui, Add, Text, x+5, kleine Buchstaben
4649    Gui, Add, Button, xm+5 gSwitch2, F2
4650    Gui, Add, Text, x+5, gro�e Buchstaben
4651    Gui, Add, Button, xm+5 gSwitch3, F3
4652    Gui, Add, Text, x+5, Satz-/Sonderzeichen
4653    Gui, Add, Button, xm+5 gSwitch4, F4
4654    Gui, Add, Text, x+5, Zahlen / Steuerung
4655    Gui, Add, Button, xm+5 gSwitch5, F5
4656    Gui, Add, Text, x+5, Sprachen
4657    Gui, Add, Button, xm+5 gSwitch6, F6
4658    Gui, Add, Text, x+5, Mathesymbole
4659    Gui, Add, Button, xm+5 gShow, F7
4660    Gui, Add, Text, x+5, An /
4661    Gui, Add, Text, y+3, Aus
4662    Gui, Add, Button, x+10 y+-30 gShow, F8
4663    Gui, Add, Text, x+5, OnTop
4664    Gui, Add, Picture,AltSubmit ys w564 h200 vPicture, %Image%
4665    Gui, +AlwaysOnTop
4666    Gui, Show, y%yposition% Autosize
4667    SetTimer, Refresh
4668    guiErstellt = 1
4669  }
4670Return
4671
4672Close:
4673  guiErstellt = 0
4674  Gui, Destroy
4675Return
4676
4677Refresh:
4678   If (Image != OldImage)
4679   {
4680      GuiControl, , Picture, %Image%
4681      OldImage := Image
4682   }
4683Return
4684
4685ToggleAlwaysOnTop:
4686    if (alwaysOnTop)
4687    {
4688      Gui, -AlwaysOnTop
4689      alwaysOnTop = 0   
4690    }
4691    else
4692    {
4693      Gui, +AlwaysOnTop
4694      alwaysOnTop = 1
4695    }
4696Return
4697 ; Ende der BildschirmTastatur
4698
4699
4700/*
4701   ------------------------------------------------------
4702   Shift+Pause "pausiert" das Script.
4703   ------------------------------------------------------
4704*/
4705
4706+pause::
4707Suspend, Permit
4708   goto togglesuspend
4709return
4710
4711; ------------------------------------
4712
4713^.::einHandNeo := not(einHandNeo)
4714^,::lernModus := not(lernModus)
4715
4716
4717
4718togglesuspend:
4719   if A_IsSuspended
4720   {
4721      menu, tray, rename, %enable%, %disable%
4722          menu, tray, tip, %name%
4723          if (iconBenutzen)
4724          menu, tray, icon, neo.ico,,1 
4725      suspend , off ; Schaltet Suspend aus -> NEO
4726   }
4727   else
4728   {
4729      menu, tray, rename, %disable%, %enable%
4730      menu, tray, tip, %name% : Deaktiviert
4731          if (iconBenutzen)
4732             menu, tray, icon, neo_disabled.ico,,1
4733      suspend , on  ; Schaltet Suspend ein -> QWERTZ
4734   }
4735
4736return
4737
4738
4739help:
4740   Run, %A_WinDir%\hh mk:@MSITStore:autohotkey.chm
4741return
4742
4743
4744about:
4745   msgbox, 64, %name% � Ergonomische Tastaturbelegung,
4746   (
4747   %name%
4748   `nDas Neo-Layout ersetzt das �bliche deutsche
4749   Tastaturlayout mit der Alternative Neo,
4750   beschrieben auf http://neo-layout.org/.
4751   `nDazu sind keine Administratorrechte n�tig.
4752   `nWenn Autohotkey aktiviert ist, werden alle Tastendrucke
4753   abgefangen und statt dessen eine �bersetzung weitergeschickt.
4754   `nDies geschieht transparent f�r den Anwender,
4755   es muss nichts installiert werden.
4756   `nDie Zeichen�bersetzung kann leicht �ber das Icon im
4757   Systemtray deaktiviert werden.  `n
4758   )
4759return
4760
4761
4762neo:
4763   run http://neo-layout.org/
4764return
4765
4766autohotkey:
4767   run http://autohotkey.com/
4768return
4769
4770open:
4771   ListLines ; shows the Autohotkey window
4772return
4773
4774edit:
4775   edit
4776return
4777
4778reload:
4779   Reload
4780return
4781
4782hide:
4783   menu, tray, noicon
4784return
4785
4786exitprogram:
4787   exitapp
4788return
Note: See TracBrowser for help on using the browser.