root/windows/autohotkey/Source/Keys-Neo.ahk @ 638

Revision 638, 82.3 KB (checked in by martin_r, 5 years ago)

Au weia, ſ-Lock wieder rausgenommen

Line 
1/*
2Die eigentliche NEO-Belegung und der Hauptteil des AHK-Treibers.
3
4
5   Ablauf bei toten Tasten:
6   1. Ebene Aktualisieren
7   2. Abh�ngig von der Variablen "Ebene" Zeichen ausgeben und die Variable "PriorDeadKey" setzen
8   
9   Ablauf bei "untoten" Tasten:
10   1. Ebene Aktualisieren
11   2. Abh�ngig von den Variablen "Ebene" und "PriorDeadKey" Zeichen ausgeben
12   3. "PriorDeadKey" mit leerem String �berschreiben
13
14   ------------------------------------------------------
15   Reihe 1
16   ------------------------------------------------------
17*/
18
19
20neo_tot1:
21   EbeneAktualisieren()
22   if Ebene = 1
23   {
24      SendUnicodeChar(0x02C6) ; circumflex, tot
25      PriorDeadKey := "c1"
26   }
27   else if Ebene = 2
28   {
29      SendUnicodeChar(0x02C7) ; caron, tot
30      PriorDeadKey := "c2"
31   }
32   else if Ebene = 3
33   {
34      SendUnicodeChar(0x02D8) ; brevis
35      PriorDeadKey := "c3"
36   }
37   else if Ebene = 4
38   {
39      SendUnicodeChar(0x00B7) ; Mittenpunkt, tot
40      PriorDeadKey := "c5"
41   }
42   else if Ebene = 5
43   {
44      send -                  ; querstrich, tot
45      PriorDeadKey := "c4"
46   }
47   else if Ebene = 6
48   {
49      Send .                  ; punkt darunter (colon)
50      PriorDeadKey := "c6"
51   }
52return
53
54neo_1:
55   EbeneAktualisieren()
56   if Ebene = 1
57   {
58      if (PriorDeadKey = "c1")          ; circumflex 1
59         BSSendUnicodeChar(0x00B9)
60      else if (PriorDeadKey = "c4")       ; toter -
61         BSSendUnicodeChar(0x2081)
62      else if (CompKey = "r_small_1")
63         Comp3UnicodeChar(0x217A)          ; r�misch xi
64      else if (CompKey = "r_capital_1")
65         Comp3UnicodeChar(0x216A)          ; r�misch XI
66      else
67       { 
68         if GetKeyState("CapsLock","T")
69         {
70           if (IsModifierPressed())
71           {
72             send {blind}1
73           }
74           else
75           {
76              send 1
77           }   
78         }
79         else {
80            if ( not(lernModus) or (lernModus_std_ZahlenReihe) )
81            {
82                send {blind}1
83            }
84         }
85       }
86      if (PriorDeadKey = "comp")
87         CompKey := "1"
88      else if (CompKey = "r_small")
89         CompKey := "r_small_1"
90      else if (CompKey = "r_capital")
91         CompKey := "r_capital_1"
92      else
93         CompKey := ""
94   }
95   else if Ebene = 2
96   {
97      send �
98      CompKey := ""
99   }
100   else if Ebene = 3
101   {
102      SendUnicodeChar(0x00B9) ; 2 Hochgestellte
103      CompKey := ""
104   }
105   else if Ebene = 4
106   {
107      SendUnicodeChar(0x2022) ; bullet
108      CompKey := ""
109   }
110   else if Ebene = 5
111   {
112      SendUnicodeChar(0x2640) ; Piktogramm weiblich
113      CompKey := ""
114   }
115   else if Ebene = 6
116   {
117      SendUnicodeChar(0x00AC) ; Nicht-Symbol
118      CompKey := ""
119   }
120   PriorDeadKey := ""
121return
122
123neo_2:
124   EbeneAktualisieren()
125   if Ebene = 1
126   {
127      if (PriorDeadKey = "c1")          ; circumflex
128         BSSendUnicodeChar(0x00B2)
129      else if (PriorDeadKey = "c4")       ; toter -
130         BSSendUnicodeChar(0x2082)
131      else if (CompKey = "r_small")
132         CompUnicodeChar(0x2171)          ; r�misch ii
133      else if (CompKey = "r_capital")
134         CompUnicodeChar(0x2161)          ; r�misch II
135      else if (CompKey = "r_small_1")
136         Comp3UnicodeChar(0x217B)          ; r�misch xii
137      else if (CompKey = "r_capital_1")
138         Comp3UnicodeChar(0x216B)          ; r�misch XII
139      else
140       { 
141         if GetKeyState("CapsLock","T")
142         {
143           if (IsModifierPressed())
144           {
145             send {blind}2
146           }
147           else
148           {
149              send 2
150           }
151               
152         }
153         else {
154            if ( not(lernModus) or (lernModus_std_ZahlenReihe) )
155            {
156                send {blind}2
157            }
158         }
159       }
160      if (PriorDeadKey = "comp")
161         CompKey := "2"
162      else
163         CompKey := ""         
164   }
165   else if Ebene = 2
166   {
167      SendUnicodeChar(0x2116) ; numero
168      CompKey := ""
169   }
170   else if Ebene = 3
171   {   
172      SendUnicodeChar(0x00B2) ; 2 Hochgestellte
173      CompKey := ""
174   }
175   else if Ebene = 4
176   {
177      SendUnicodeChar(0x2023) ; aufzaehlungspfeil
178      CompKey := ""
179   }
180   else if Ebene = 5
181   {
182      SendUnicodeChar(0x26A5) ; Piktogramm Zwitter
183      CompKey := ""
184   }
185   else if Ebene = 6
186   {
187      SendUnicodeChar(0x2228) ; Logisches Oder
188      CompKey := ""
189   }
190   PriorDeadKey := ""
191return
192
193neo_3:
194   EbeneAktualisieren()
195   if Ebene = 1
196   {
197      if (PriorDeadKey = "c1")          ; circumflex
198         BSSendUnicodeChar(0x00B3)
199      else if (PriorDeadKey = "c4")       ; toter -
200         BSSendUnicodeChar(0x2083)
201      else if (CompKey = "1")
202         CompUnicodeChar(0x2153)          ; 1/3
203      else if (CompKey = "2")
204         CompUnicodeChar(0x2154)          ; 2/3
205      else if (CompKey = "r_small")
206         CompUnicodeChar(0x2172)          ; r�misch iii
207      else if (CompKey = "r_capital")
208         CompUnicodeChar(0x2162)          ; r�misch III
209      else
210       { 
211         if GetKeyState("CapsLock","T")
212         {
213           if (IsModifierPressed())
214           {
215             send {blind}3
216           }
217           else
218           {
219               send 3
220           }   
221         }
222         else {
223            if ( not(lernModus) or (lernModus_std_ZahlenReihe) )
224            {           
225              send {blind}3
226            }
227         }
228       }
229      if (PriorDeadKey = "comp")
230         CompKey := "3"
231      else
232         CompKey := ""         
233   }
234   else if Ebene = 2
235   {
236      send �
237      CompKey := ""
238   }
239   else if Ebene = 3
240   {
241      SendUnicodeChar(0x00B3) ; 3 Hochgestellte
242      CompKey := ""
243   }
244   else if Ebene = 4
245   { } ; leer
246   else if Ebene = 5
247   {
248      SendUnicodeChar(0x2642) ; Piktogramm Mann
249      CompKey := ""
250   }
251   else if Ebene = 6
252   {
253      SendUnicodeChar(0x2227) ; Logisches Und
254      CompKey := ""
255   }   
256   PriorDeadKey := ""
257return
258
259neo_4:
260   EbeneAktualisieren()
261   if Ebene = 1
262   {
263      if (PriorDeadKey = "c1")          ; circumflex
264         BSSendUnicodeChar(0x2074)
265      else if (PriorDeadKey = "c4")       ; toter -
266         BSSendUnicodeChar(0x2084)         
267      else if (CompKey = "r_small")
268         CompUnicodeChar(0x2173)          ; r�misch iv
269      else if (CompKey = "r_capital")
270         CompUnicodeChar(0x2163)          ; r�misch IV
271      else
272       { 
273         if GetKeyState("CapsLock","T")
274         {
275           if (IsModifierPressed())
276           {
277             send {blind}4
278           }
279           else
280           {
281              send 4
282           }
283               
284         }
285         else
286         {
287           if ( not(lernModus) or (lernModus_std_ZahlenReihe) )
288           {
289               send {blind}4
290           }
291         }
292       }
293      if (PriorDeadKey = "comp")
294         CompKey := "4"
295      else
296         CompKey := ""         
297    }
298   else if Ebene = 2
299   {
300      send �
301      CompKey := ""
302   }
303    else if Ebene = 3
304   {
305      send �
306      CompKey := ""
307   }
308   else if Ebene = 4
309   {
310      Send {PgUp}    ; Prev
311      CompKey := ""
312   }
313   else if Ebene = 5
314   {
315      SendUnicodeChar(0x2113) ; Script small L
316      CompKey := ""
317   }
318   else if Ebene = 6
319   {
320      SendUnicodeChar(0x22A5) ; Senkrecht
321      CompKey := ""
322   }   
323   PriorDeadKey := ""
324return
325
326neo_5:
327   EbeneAktualisieren()
328   if Ebene = 1
329   {
330      if (PriorDeadKey = "c1")          ; circumflex
331         BSSendUnicodeChar(0x2075)
332      else if (PriorDeadKey = "c4")       ; toter -
333         BSSendUnicodeChar(0x2085)
334      else if (CompKey = "1")
335         CompUnicodeChar(0x2155)          ; 1/5
336      else if (CompKey = "2")
337         CompUnicodeChar(0x2156)          ; 2/5
338      else if (CompKey = "3")
339         CompUnicodeChar(0x2157)          ; 3/5
340      else if (CompKey = "4")
341         CompUnicodeChar(0x2158)          ; 4/5
342      else if (CompKey = "r_small")
343         CompUnicodeChar(0x2174)          ; r�misch v
344      else if (CompKey = "r_capital")
345         CompUnicodeChar(0x2164)          ; r�misch V
346      else
347       { 
348         if GetKeyState("CapsLock","T")
349         {
350           if (IsModifierPressed())
351           {
352             send {blind}5
353           }
354           else
355           {
356              send 5
357           }
358               
359         }
360         else {
361            if ( not(lernModus) or (lernModus_std_ZahlenReihe) )
362            {
363               send {blind}5
364            }
365         }
366       }
367      if (PriorDeadKey = "comp")
368         CompKey := "5"
369      else
370         CompKey := ""         
371    }
372   else if Ebene = 2
373   {
374      send �
375      CompKey := ""
376   }
377   else if Ebene = 3
378   {
379      send �
380      CompKey := ""
381   }
382   else if Ebene = 4
383   { } ; leer
384   else if Ebene = 5
385   {
386      SendUnicodeChar(0x2020) ; Kreuz (Dagger)
387      CompKey := ""
388   }
389   else if Ebene = 6
390   {
391      SendUnicodeChar(0x2221) ; Winkel
392      CompKey := ""
393   }   
394   PriorDeadKey := ""
395return
396
397neo_6:
398   EbeneAktualisieren()
399   if Ebene = 1
400   {
401      if (PriorDeadKey = "c1")          ; circumflex
402         BSSendUnicodeChar(0x2076)
403      else if (PriorDeadKey = "c4")       ; toter -
404         BSSendUnicodeChar(0x2086)         
405      else if (CompKey = "1")
406         CompUnicodeChar(0x2159)          ; 1/6
407      else if (CompKey = "5")
408         CompUnicodeChar(0x215A)          ; 5/6
409      else if (CompKey = "r_small")
410         CompUnicodeChar(0x2175)          ; r�misch vi
411      else if (CompKey = "r_capital")
412         CompUnicodeChar(0x2165)          ; r�misch VI
413      else
414       { 
415         if GetKeyState("CapsLock","T")
416         {
417           if (IsModifierPressed())
418           {
419             send {blind}6
420           }
421           else
422           {
423              send 6
424           }
425               
426         }
427         else {
428            if ( not(lernModus) or (lernModus_std_ZahlenReihe) )
429            {
430              send {blind}6
431            }
432         }
433       }
434      if (PriorDeadKey = "comp")
435         CompKey := "6"
436      else
437         CompKey := ""         
438    }
439   else if Ebene = 2
440   {
441      send �
442      CompKey := ""
443   }
444   else if Ebene = 3
445   {
446      send �
447      CompKey := ""
448   }
449   else if Ebene = 4
450   {
451      send �
452      CompKey := ""
453   }
454   else if Ebene = 5
455   {  } ; leer
456   else if Ebene = 6
457   {
458      SendUnicodeChar(0x2225) ; parallel
459      CompKey := ""
460   }
461   PriorDeadKey := ""
462return
463
464neo_7:
465   EbeneAktualisieren()
466   if Ebene = 1
467   {
468      if (PriorDeadKey = "c1")          ; circumflex
469         BSSendUnicodeChar(0x2077)
470      else if (PriorDeadKey = "c4")       ; toter -
471         BSSendUnicodeChar(0x2087)
472      else if (CompKey = "r_small")
473         CompUnicodeChar(0x2176)          ; r�misch vii
474      else if (CompKey = "r_capital")
475         CompUnicodeChar(0x2166)          ; r�misch VII
476      else
477       { 
478         if GetKeyState("CapsLock","T")
479         {
480           if (IsModifierPressed())
481           {
482             send {blind}7
483           }
484           else
485           {
486              send 7
487           }
488               
489         }
490         else {
491            if ( not(lernModus) or (lernModus_std_ZahlenReihe) )
492            {
493               send {blind}7
494            }
495         }
496       }
497      if (PriorDeadKey = "comp")
498         CompKey := "7"
499      else
500         CompKey := ""         
501    }
502   else if Ebene = 2
503   {
504      send $
505      CompKey := ""
506   }
507   else if Ebene = 3
508   {
509      send �
510      CompKey := ""
511   }
512   else if Ebene = 4
513   {
514      send �
515      CompKey := ""
516   }
517   else if Ebene = 5
518   {
519      SendUnicodeChar(0x03BA) ; greek small letter kappa
520      CompKey := ""
521   }
522   else if Ebene = 6
523   {
524      SendUnicodeChar(0x2209) ; nicht Element von
525      CompKey := ""
526   }
527   PriorDeadKey := ""
528return
529
530neo_8:
531   EbeneAktualisieren()
532   if Ebene = 1
533   {
534      if (PriorDeadKey = "c1")          ; circumflex
535         BSSendUnicodeChar(0x2078)
536      else if (PriorDeadKey = "c4")       ; toter -
537         BSSendUnicodeChar(0x2088)
538      else if (CompKey = "1")
539         CompUnicodeChar(0x215B)          ; 1/8
540      else if (CompKey = "3")
541         CompUnicodeChar(0x215C)          ; 3/8
542      else if (CompKey = "5")
543         CompUnicodeChar(0x215D)          ; 5/8
544      else if (CompKey = "7")
545         CompUnicodeChar(0x215E)          ; 7/8
546      else if (CompKey = "r_small")
547         CompUnicodeChar(0x2177)          ; r�misch viii
548      else if (CompKey = "r_capital")
549         CompUnicodeChar(0x2167)          ; r�misch VIII
550      else
551       { 
552         if GetKeyState("CapsLock","T")
553         {
554           if (IsModifierPressed())
555           {
556             send {blind}8
557           }
558           else
559           {
560              send 8
561           }
562               
563         }
564         else {
565            if ( not(lernModus) or (lernModus_std_ZahlenReihe) )
566            {
567              send {blind}8
568            }   
569         }
570       }
571      if (PriorDeadKey = "comp")
572         CompKey := "8"
573      else
574         CompKey := ""         
575    }
576   else if Ebene = 2
577   {
578      send �
579      CompKey := ""
580   }
581   else if Ebene = 3
582   {
583      send �
584      CompKey := ""
585   }
586   else if Ebene = 4
587   {
588      Send /
589      CompKey := ""
590   }
591   else if Ebene = 5
592   {
593      SendUnicodeChar(0x27E8) ;bra (�ffnende spitze klammer)
594   }
595   else if Ebene = 6
596   {
597      SendUnicodeChar(0x2204) ; es existiert nicht
598      CompKey := ""
599   }
600   PriorDeadKey := ""
601return
602
603neo_9:
604   EbeneAktualisieren()
605   if Ebene = 1
606   {
607      if (PriorDeadKey = "c1")          ; circumflex
608         BSSendUnicodeChar(0x2079)
609      else if (PriorDeadKey = "c4")       ; toter -
610         BSSendUnicodeChar(0x2089)
611      else if (CompKey = "r_small")
612         CompUnicodeChar(0x2178)          ; r�misch ix
613      else if (CompKey = "r_capital")
614         CompUnicodeChar(0x2168)          ; r�misch IX
615      else
616       { 
617         if GetKeyState("CapsLock","T")
618         {
619           if (IsModifierPressed())
620           {
621             send {blind}9
622           }
623           else
624           {
625              send 9
626           }
627               
628         }
629         else {
630            if ( not(lernModus) or (lernModus_std_ZahlenReihe) )
631            {
632              send {blind}9
633            }
634         }
635       }
636      if (PriorDeadKey = "comp")
637         CompKey := "9"
638      else
639         CompKey := ""         
640    }
641   else if Ebene = 2
642   {
643      send �
644      CompKey := ""
645   }
646   else if Ebene = 3
647   {
648      send �
649      CompKey := ""
650   }
651   else if Ebene = 4
652   {
653      Send *
654      CompKey := ""
655   }
656   else if Ebene = 5
657   {
658      SendUnicodeChar(0x27E9) ;ket (schlie�ende spitze klammer)
659   }
660   else if Ebene = 6
661   {
662      SendUnicodeChar(0x2226) ; nicht parallel
663      CompKey := ""
664   }
665   PriorDeadKey := ""
666return
667
668neo_0:
669   EbeneAktualisieren()
670   if Ebene = 1
671   {
672      if (PriorDeadKey = "c1")          ; circumflex
673         BSSendUnicodeChar(0x2070)
674      else if (PriorDeadKey = "c4")       ; toter -
675         BSSendUnicodeChar(0x2080)         
676      else if (CompKey = "r_small_1")
677         Comp3UnicodeChar(0x2179)          ; r�misch x
678      else if (CompKey = "r_capital_1")
679         Comp3UnicodeChar(0x2169)          ; r�misch X
680      else
681       { 
682         if GetKeyState("CapsLock","T")
683         {
684           if (IsModifierPressed())
685           {
686             send {blind}0
687           }
688           else
689           {
690              send 0
691           }
692               
693         }
694         else {
695            if ( not(lernModus) or (lernModus_std_ZahlenReihe) )
696            {
697               send {blind}0
698            }
699         }
700       }
701      if (PriorDeadKey = "comp")
702         CompKey := "0"
703      else
704         CompKey := ""         
705    }
706   else if Ebene = 2
707   {
708      send �
709      CompKey := ""
710   }
711   else if Ebene = 3
712   {
713      send �
714      CompKey := ""
715   }
716   else if Ebene = 4
717   {
718      Send -
719      CompKey := ""
720   }
721   else if Ebene = 5
722   {  } ; leer
723   else if Ebene = 6
724   {
725      SendUnicodeChar(0x2205) ; leere Menge
726      CompKey := ""
727   }
728   PriorDeadKey := ""
729return
730
731neo_strich:
732   EbeneAktualisieren()
733   if Ebene = 1
734        { 
735         if GetKeyState("CapsLock","T")
736         {
737           if (IsModifierPressed())
738           {
739             send {blind}-
740           }
741           else
742           {
743              send -
744           }
745               
746         }
747         else {
748           send {blind}-   ;Bindestrich
749         }
750       }
751   else if Ebene = 2
752      SendUnicodeChar(0x2013) ; Gedankenstrich
753   else if Ebene = 3
754      SendUnicodeChar(0x2014) ; Englische Gedankenstrich
755   else if Ebene = 4
756     { } ; leer ...  SendUnicodeChar(0x254C)
757   else if Ebene = 5
758      SendUnicodeChar(0x2011) ; gesch�tzter Bindestrich
759   else if Ebene = 6
760      SendUnicodeChar(0x00AD) ; weicher Trennstrich
761   PriorDeadKey := ""   CompKey := ""
762return
763
764neo_tot2:
765   EbeneAktualisieren()
766   if Ebene = 1
767   {
768      send {�}{space} ; akut, tot
769      PriorDeadKey := "a1"
770   }
771   else if Ebene = 2
772   {
773      send ``{space}
774      PriorDeadKey := "a2"
775   }
776   else if Ebene = 3
777   {
778      send � ; cedilla
779      PriorDeadKey := "a3"
780   }
781   else if Ebene = 4
782   {
783      SendUnicodeChar(0x02D9) ; punkt oben dr�ber
784      PriorDeadKey := "a5"
785   }
786   else if Ebene = 5
787   {
788      SendUnicodeChar(0x02DB) ; ogonek
789      PriorDeadKey := "a4"
790   }
791   else if Ebene = 6
792   {
793      SendUnicodeChar(0x02DA)  ; ring obendrauf
794      PriorDeadKey := "a6"
795   }
796return
797
798
799/*
800   ------------------------------------------------------
801   Reihe 2
802   ------------------------------------------------------
803*/
804
805neo_x:
806   EbeneAktualisieren()
807   if Ebene = 1
808      sendinput {blind}x
809   else if Ebene = 2
810      sendinput {blind}X
811   else if Ebene = 5
812      SendUnicodeChar(0x03BE) ;xi
813   else if Ebene = 6
814      SendUnicodeChar(0x039E)  ; Xi
815   PriorDeadKey := ""   CompKey := ""
816return
817
818
819neo_v:
820   EbeneAktualisieren()
821   if Ebene = 1
822   {
823      if (PriorDeadKey = "c6")      ; punkt darunter
824         BSSendUnicodeChar(0x1E7F)
825      else
826         sendinput {blind}v
827   }
828   else if Ebene = 2
829   {
830      if (PriorDeadKey = "c6")      ; punkt darunter
831         BSSendUnicodeChar(0x1E7E)
832      else
833         sendinput {blind}V
834   }
835   else if Ebene = 3
836      send _
837   else if Ebene = 4
838      if ( not(lernModus) or (lernModus_neo_Backspace) )
839      {
840         Send {Backspace}
841      }
842      else
843      {} ; leer
844   else if Ebene = 6
845      SendUnicodeChar(0x2259) ; estimates
846   PriorDeadKey := ""   CompKey := ""
847return
848
849
850
851neo_l:
852   EbeneAktualisieren()
853   if Ebene = 1
854   {
855      if (PriorDeadKey = "t5")       ; Schr�gstrich
856         BSSendUnicodeChar(0x0142)
857      else if (PriorDeadKey = "a1")      ; akut
858         BSSendUnicodeChar(0x013A)
859      else if (PriorDeadKey = "c2")     ; caron
860         BSSendUnicodeChar(0x013E)
861      else if (PriorDeadKey = "a3")    ; cedilla
862         BSSendUnicodeChar(0x013C)
863      else if (PriorDeadKey = "c5")  ; Mittenpunkt
864         BSSendUnicodeChar(0x0140)
865      else if (PriorDeadKey = "c6") ; punkt darunter
866         BSSendUnicodeChar(0x1E37)
867      else
868         sendinput {blind}l
869      if (PriorDeadKey = "comp")            ; compose
870         CompKey := "l_small"
871      else
872         CompKey := ""
873   }
874   else if Ebene = 2
875   {
876      if (PriorDeadKey = "a1")           ; akut
877         BSSendUnicodeChar(0x0139)
878      else if (PriorDeadKey = "c2")     ; caron
879         BSSendUnicodeChar(0x013D)
880      else if (PriorDeadKey = "a3")    ; cedilla
881         BSSendUnicodeChar(0x013B)
882      else if (PriorDeadKey = "t5")  ; Schr�gstrich
883         BSSendUnicodeChar(0x0141)
884      else if (PriorDeadKey = "c5")  ; Mittenpunkt
885         BSSendUnicodeChar(0x013F)
886      else if (PriorDeadKey = "c6") ; punkt darunter
887         BSSendUnicodeChar(0x1E36)
888      else
889         sendinput {blind}L
890      if (PriorDeadKey = "comp")            ; compose
891         CompKey := "l_capital"
892      else CompKey := ""
893   }     
894   else if Ebene = 3
895   {
896      send [
897      CompKey := ""
898   }
899   else if Ebene = 4
900   {
901      Sendinput {Blind}{Up}
902      CompKey := ""
903   }
904   else if Ebene = 5
905   {
906      SendUnicodeChar(0x03BB) ; lambda
907      CompKey := ""
908   }
909   else if Ebene = 6
910   {
911      SendUnicodeChar(0x039B) ; Lambda
912      CompKey := ""
913   }
914   PriorDeadKey := ""
915return
916
917
918neo_c:
919   EbeneAktualisieren()
920   if Ebene = 1
921   {
922      if (PriorDeadKey = "c1")           ; circumflex
923         BSSendUnicodeChar(0x0109)
924      else if (PriorDeadKey = "c2")     ; caron
925         BSSendUnicodeChar(0x010D)
926      else if (PriorDeadKey = "a1")      ; akut
927         BSSendUnicodeChar(0x0107)
928      else if (PriorDeadKey = "a3")    ; cedilla
929         BSSendUnicodeChar(0x00E7)
930      else if (PriorDeadKey = "a5")  ; punkt dar�ber
931         BSSendUnicodeChar(0x010B)
932      else if ( (CompKey = "o_small") or (CompKey = "o_capital") )
933         Send {bs}�
934      else
935      {         
936         sendinput {blind}c     
937      }
938      if (PriorDeadKey = "comp")
939         CompKey := "c_small"
940      else
941         CompKey := ""
942   }
943   else if Ebene = 2
944   {
945      if (PriorDeadKey = "c1")          ; circumflex
946         BSSendUnicodeChar(0x0108)
947      else if (PriorDeadKey = "c2")    ; caron
948         BSSendUnicodeChar(0x010C)
949      else if (PriorDeadKey = "a1")     ; akut
950         BSSendUnicodeChar(0x0106)
951      else if (PriorDeadKey = "a3")   ; cedilla
952         BSSendUnicodeChar(0x00E6)
953      else if (PriorDeadKey = "a5") ; punkt dar�ber
954         BSSendUnicodeChar(0x010A)
955      else if ( (CompKey = "o_small") or (CompKey = "o_capital") )
956         Send {bs}�         
957      else
958         sendinput {blind}C
959      if (PriorDeadKey = "comp")
960         CompKey = "c_capital"
961      else
962         CompKey := ""
963   }
964   else if Ebene = 3
965   {
966      send ]
967      CompKey := ""
968   }
969   else if Ebene = 4
970   {
971      if ( not(lernModus) or (lernModus_neo_Entf) )
972      {
973        Send {Del}
974        CompKey := ""
975      }
976      else
977      {} ; leer
978   }
979   else if Ebene = 5
980   {
981      SendUnicodeChar(0x03C7) ;chi
982      CompKey := ""
983   }
984   else if Ebene = 6
985   {
986      SendUnicodeChar(0x2102)  ; C (Komplexe Zahlen)
987      CompKey := ""
988   }
989   PriorDeadKey := ""
990return
991
992neo_w:
993   EbeneAktualisieren()
994   if Ebene = 1
995   {
996      if (PriorDeadKey = "c1")           ; circumflex
997         BSSendUnicodeChar(0x0175)
998      else
999         sendinput {blind}w
1000   }
1001   else if Ebene = 2
1002   {
1003      if (PriorDeadKey = "c1")           ; circumflex
1004         BSSendUnicodeChar(0x0174)
1005      else
1006         sendinput {blind}W
1007   }
1008   else if Ebene = 3
1009      send {^}{space} ; untot
1010   else if Ebene = 4
1011      Send {Insert}
1012   else if Ebene = 5
1013      SendUnicodeChar(0x03C9) ; omega
1014   else if Ebene = 6
1015      SendUnicodeChar(0x03A9) ; Omega
1016   PriorDeadKey := ""   CompKey := ""
1017return
1018
1019neo_k:
1020   EbeneAktualisieren()
1021   if Ebene = 1
1022   {
1023      if (PriorDeadKey = "a3")         ; cedilla
1024         BSSendUnicodeChar(0x0137)
1025      else if (PriorDeadKey = "c6") ; punkt darunter
1026         BSSendUnicodeChar(0x1E33)
1027      else
1028         sendinput {blind}k
1029   }
1030   else if Ebene = 2
1031   {
1032      if (PriorDeadKey = "a3")         ; cedilla
1033         BSSendUnicodeChar(0x0136)
1034      else if (PriorDeadKey = "c6") ; punkt darunter
1035         BSSendUnicodeChar(0x1E32)
1036      else
1037         sendinput {blind}K
1038   }
1039   else if Ebene = 3
1040      sendraw !
1041   else if Ebene = 4
1042      Send �
1043   else if Ebene = 5
1044      SendUnicodeChar(0x03F0) ;kappa symbol (varkappa)
1045   else if Ebene = 6
1046      SendUnicodeChar(0x221A) ; Wurzel
1047   PriorDeadKey := ""   CompKey := ""
1048return
1049
1050neo_h:
1051   EbeneAktualisieren()
1052   if Ebene = 1
1053   {
1054      if (PriorDeadKey = "c1")           ; circumflex
1055         BSSendUnicodeChar(0x0125)
1056      else if (PriorDeadKey = "c4")   ; Querstrich
1057         BSSendUnicodeChar(0x0127)
1058      else if (PriorDeadKey = "a5")  ; punkt dar�ber
1059         BSSendUnicodeChar(0x1E23)
1060      else if (PriorDeadKey = "c6") ; punkt darunter
1061         BSSendUnicodeChar(0x1E25)
1062      else sendinput {blind}h
1063   }
1064   else if Ebene = 2
1065   {
1066      if (PriorDeadKey = "c1")           ; circumflex
1067         BSSendUnicodeChar(0x0124)
1068      else if (PriorDeadKey = "c4")   ; Querstrich
1069         BSSendUnicodeChar(0x0126)
1070      else if (PriorDeadKey = "a5")  ; punkt dar�ber
1071         BSSendUnicodeChar(0x1E22)
1072      else if (PriorDeadKey = "c6") ; punkt darunter
1073         BSSendUnicodeChar(0x1E24)
1074      else sendinput {blind}H
1075   }
1076   else if Ebene = 3
1077   {
1078      if (PriorDeadKey = "c4")    ; Querstrich
1079         BSSendUnicodeChar(0x2264) ; kleiner gleich
1080      else
1081         send {blind}<
1082   }
1083   else if Ebene = 4
1084   {
1085      if (PriorDeadKey = "c1")            ; circumflex
1086         BSSendUnicodeChar(0x2077)
1087      else if (PriorDeadKey = "c4")       ; toter -
1088         BSSendUnicodeChar(0x2087)
1089      else
1090         Send 7
1091   }
1092   else if Ebene = 5
1093      SendUnicodeChar(0x03C8) ;psi
1094   else if Ebene = 6
1095      SendUnicodeChar(0x03A8)  ; Psi
1096   PriorDeadKey := ""   CompKey := ""
1097return
1098
1099neo_g:
1100   EbeneAktualisieren()
1101   if Ebene = 1
1102   {
1103      if (PriorDeadKey = "c1")          ; circumflex
1104         BSSendUnicodeChar(0x011D)
1105      else if (PriorDeadKey = "c3")   ; brevis
1106         BSSendUnicodeChar(0x011F)
1107      else if (PriorDeadKey = "a3")   ; cedilla
1108         BSSendUnicodeChar(0x0123)
1109      else if (PriorDeadKey = "a5") ; punkt dar�ber
1110         BSSendUnicodeChar(0x0121)
1111      else sendinput {blind}g
1112   }
1113   else if Ebene = 2
1114   {
1115      if (PriorDeadKey = "c1")           ; circumflex
1116         BSSendUnicodeChar(0x011C)
1117      else if (PriorDeadKey = "c3")    ; brevis
1118         BSSendUnicodeChar(0x011E)
1119      else if (PriorDeadKey = "a3")    ; cedilla
1120         BSSendUnicodeChar(0x0122)
1121      else if (PriorDeadKey = "a5")  ; punkt dar�ber
1122         BSSendUnicodeChar(0x0120)
1123      else sendinput {blind}G
1124   }
1125   else if Ebene = 3
1126   {
1127      if (PriorDeadKey = "c4")    ; Querstrich
1128         SendUnicodeChar(0x2265) ; gr��er gleich
1129      else
1130         send >
1131   }
1132   else if Ebene = 4
1133   {
1134      if (PriorDeadKey = "c1")            ; circumflex
1135         BSSendUnicodeChar(0x2078)
1136      else if (PriorDeadKey = "c4")       ; toter -
1137         BSSendUnicodeChar(0x2088)
1138      else
1139         Send 8
1140   }
1141   else if Ebene = 5
1142      SendUnicodeChar(0x03B3) ;gamma
1143   else if Ebene = 6
1144      SendUnicodeChar(0x0393)  ; Gamma
1145   PriorDeadKey := ""   CompKey := ""
1146return
1147
1148neo_f:
1149   EbeneAktualisieren()
1150   if Ebene = 1
1151   {
1152      if (PriorDeadKey = "t5")      ; durchgestrichen
1153         BSSendUnicodeChar(0x0192)
1154      else if (PriorDeadKey = "a5") ; punkt dar�ber
1155         BSSendUnicodeChar(0x1E1F)
1156      else sendinput {blind}f
1157   }
1158   else if Ebene = 2
1159   {
1160      if (PriorDeadKey = "t5")       ; durchgestrichen
1161         BSSendUnicodeChar(0x0191)
1162      else if (PriorDeadKey = "a5")  ; punkt dar�ber
1163         BSSendUnicodeChar(0x1E1E)
1164      else sendinput {blind}F
1165   }
1166   else if Ebene = 3
1167   {
1168      if (PriorDeadKey = "c1")            ; circumflex
1169         BSSendUnicodeChar(0x2259)   ; entspricht
1170      else if (PriorDeadKey = "t1")       ; tilde
1171         BSSendUnicodeChar(0x2245)   ; ungef�hr gleich
1172      else if (PriorDeadKey = "t5")       ; Schr�gstrich
1173         BSSendUnicodeChar(0x2260)   ; ungleich
1174      else if (PriorDeadKey = "c4")       ; Querstrich
1175         BSSendUnicodeChar(0x2261)   ; identisch
1176      else if (PriorDeadKey = "c2")       ; caron
1177         BSSendUnicodeChar(0x225A)   ; EQUIANGULAR TO
1178      else if (PriorDeadKey = "a6")       ; ring dr�ber
1179         BSSendUnicodeChar(0x2257)   ; ring equal to
1180      else
1181         send `=
1182   }
1183   else if Ebene = 4
1184   {
1185      if (PriorDeadKey = "c1")            ; circumflex
1186         BSSendUnicodeChar(0x2079)
1187      else if (PriorDeadKey = "c4")       ; toter -
1188         BSSendUnicodeChar(0x2089)
1189      else
1190         Send 9
1191   }
1192   else if Ebene = 5
1193      SendUnicodeChar(0x03C6) ; phi
1194   else if Ebene = 6
1195      SendUnicodeChar(0x03A6)  ; Phi
1196   PriorDeadKey := ""   CompKey := ""
1197return
1198
1199neo_q:
1200   EbeneAktualisieren()
1201   if Ebene = 1
1202      sendinput {blind}q
1203   else if Ebene = 2
1204      sendinput {blind}Q
1205   else if Ebene = 3
1206      send {&}
1207   else if Ebene = 4
1208   {
1209      if (PriorDeadKey = "c1")            ; circumflex
1210         BSSendUnicodeChar(0x207A)
1211      else if (PriorDeadKey = "c4")       ; toter -
1212         BSSendUnicodeChar(0x208A)
1213      else
1214         Send {+}
1215   }
1216   else if Ebene = 5
1217      SendUnicodeChar(0x03D5) ; phi symbol (varphi)
1218   else if Ebene = 6
1219      SendUnicodeChar(0x211A) ; Q (rationale Zahlen)
1220   PriorDeadKey := ""   CompKey := ""
1221return
1222
1223neo_sz:
1224   EbeneAktualisieren()
1225   if Ebene = 1
1226      if GetKeyState("CapsLock","T")
1227      {
1228         SendUnicodeChar(0x1E9E) ; verssal-�
1229      }
1230      else
1231      {
1232         if (LangSTastatur = 1)
1233         {
1234            sendinput {blind}s
1235         }
1236         else
1237         {
1238            send �
1239         }
1240      }
1241   else if Ebene = 2
1242      if GetKeyState("CapsLock","T")
1243      {
1244         if (LangSTastatur = 1)
1245         {
1246            sendinput {blind}s
1247         }
1248         else
1249         {
1250            send �
1251         }
1252      }
1253      else
1254      {
1255         SendUnicodeChar(0x1E9E) ; versal-�
1256      }
1257   else if Ebene = 3
1258   {
1259      if (LangSTastatur = 1)
1260         send �
1261      else
1262         SendUnicodeChar(0x017F) ; langes s
1263   }
1264   else if Ebene = 4
1265   {
1266       ;LangSTastatur := not(LangSTastatur) ; schaltet die Lang-s-Tastatur ein und aus
1267   }
1268   else if Ebene = 5
1269      SendUnicodeChar(0x03C2) ; varsigma
1270   else if Ebene = 6
1271      SendUnicodeChar(0x2218) ; Verkn�pfungsoperator
1272   PriorDeadKey := ""   CompKey := ""
1273return
1274
1275
1276neo_tot3:
1277   EbeneAktualisieren()
1278   if Ebene = 1
1279   {
1280      SendUnicodeChar(0x02DC)    ; tilde, tot
1281      PriorDeadKey := "t1"
1282   }
1283   else if Ebene = 2
1284   {
1285      SendUnicodeChar(0x00AF)  ; macron, tot
1286      PriorDeadKey := "t2"
1287   }
1288   else if Ebene = 3
1289   {
1290      SendUnicodeChar(0x00A8)   ; Diaerese
1291      PriorDeadKey := "t3"
1292   }
1293   else if Ebene = 4
1294   {
1295      SendUnicodeChar(0x002F)  ; Schr�gstrich, tot
1296      PriorDeadKey := "t5"
1297   }
1298   else if Ebene = 5
1299   {
1300      send "        ;doppelakut
1301      PriorDeadKey := "t4"
1302   }
1303   else if Ebene = 6
1304   {
1305      SendUnicodeChar(0x02CF)  ; komma drunter, tot
1306      PriorDeadKey := "t6"
1307   }
1308return
1309
1310
1311/*
1312   ------------------------------------------------------
1313   Reihe 3
1314   ------------------------------------------------------
1315*/
1316
1317neo_u:
1318   EbeneAktualisieren()
1319   if Ebene = 1
1320   {
1321      if (PriorDeadKey = "c1")       ; circumflex
1322         BSSendUnicodeChar(0x00FB)
1323      else if (PriorDeadKey = "a1")  ; akut
1324         BSSendUnicodeChar(0x00FA)
1325      else if (PriorDeadKey = "a2")  ; grave
1326         BSSendUnicodeChar(0x00F9)
1327      else if (PriorDeadKey = "t3")  ; Diaerese
1328         Send, {bs}�
1329      else if (PriorDeadKey = "t4")  ; doppelakut
1330         BSSendUnicodeChar(0x0171)
1331      else if (PriorDeadKey = "c3")  ; brevis
1332         BSSendUnicodeChar(0x016D)
1333      else if (PriorDeadKey = "t2")  ; macron
1334         BSSendUnicodeChar(0x016B)
1335      else if (PriorDeadKey = "a4")  ; ogonek
1336         BSSendUnicodeChar(0x0173)
1337      else if (PriorDeadKey = "a6")  ; Ring
1338         BSSendUnicodeChar(0x016F)
1339      else if (PriorDeadKey = "t1")  ; tilde
1340         BSSendUnicodeChar(0x0169)
1341      else if (PriorDeadKey = "c2")  ; caron
1342         BSSendUnicodeChar(0x01D4)
1343      else
1344         sendinput {blind}u
1345   }
1346   else if Ebene = 2
1347   {
1348      if (PriorDeadKey = "c1")        ; circumflex
1349         BSSendUnicodeChar(0x00DB)
1350      else if (PriorDeadKey = "a1")   ; akut
1351         BSSendUnicodeChar(0x00DA)
1352      else if (PriorDeadKey = "a2")   ; grave
1353         BSSendUnicodeChar(0x00D9)
1354      else if (PriorDeadKey = "t3")   ; Diaerese
1355         Send, {bs}�
1356      else if (PriorDeadKey = "a6")   ; Ring
1357         BSSendUnicodeChar(0x016E)
1358      else if (PriorDeadKey = "c3")   ; brevis
1359         BSSendUnicodeChar(0x016C)
1360      else if (PriorDeadKey = "t4")   ; doppelakut
1361         BSSendUnicodeChar(0x0170)
1362      else if (PriorDeadKey = "c2")   ; caron
1363         BSSendUnicodeChar(0x01D3)
1364      else if (PriorDeadKey = "t2")   ; macron
1365         BSSendUnicodeChar(0x016A)
1366      else if (PriorDeadKey = "a4")   ; ogonek
1367         BSSendUnicodeChar(0x0172)
1368      else if (PriorDeadKey = "t1")   ; tilde
1369         BSSendUnicodeChar(0x0168)
1370      else
1371         sendinput {blind}U
1372   }
1373   else if Ebene = 3
1374      send \
1375   else if Ebene = 4
1376      Send {blind}{Home}
1377   else if Ebene = 5   
1378   {  } ; leer
1379   else if Ebene = 6
1380      SendUnicodeChar(0x222E) ; contour integral
1381   PriorDeadKey := ""   CompKey := ""
1382return
1383
1384neo_i:
1385   EbeneAktualisieren()
1386   if Ebene = 1
1387   {
1388      if (PriorDeadKey = "c1")        ; circumflex
1389         BSSendUnicodeChar(0x00EE)
1390      else if (PriorDeadKey = "a1")   ; akut
1391         BSSendUnicodeChar(0x00ED)
1392      else if (PriorDeadKey = "a2")   ; grave
1393         BSSendUnicodeChar(0x00EC)
1394      else if (PriorDeadKey = "t3")   ; Diaerese
1395         Send, {bs}�
1396      else if (PriorDeadKey = "t2")   ; macron
1397         BSSendUnicodeChar(0x012B)
1398      else if (PriorDeadKey = "c3")   ; brevis
1399         BSSendUnicodeChar(0x012D)
1400      else if (PriorDeadKey = "a4")   ; ogonek
1401         BSSendUnicodeChar(0x012F)
1402      else if (PriorDeadKey = "t1")   ; tilde
1403         BSSendUnicodeChar(0x0129)
1404      else if (PriorDeadKey = "a5")   ; (ohne) punkt dar�ber
1405         BSSendUnicodeChar(0x0131)
1406      else if (PriorDeadKey = "c2")   ; caron
1407         BSSendUnicodeChar(0x01D0)
1408      else
1409         sendinput {blind}i
1410      if (PriorDeadKey = "comp")      ; compose
1411         CompKey := "i_small"
1412      else
1413         CompKey := ""
1414   }
1415   else if Ebene = 2
1416   {   
1417      if (PriorDeadKey = "c1")        ; circumflex
1418         BSSendUnicodeChar(0x00CE)
1419      else if (PriorDeadKey = "a1")   ; akut
1420         BSSendUnicodeChar(0x00CD)
1421      else if (PriorDeadKey = "a2")   ; grave
1422         BSSendUnicodeChar(0x00CC)
1423      else if (PriorDeadKey = "t3")   ; Diaerese
1424         Send, {bs}�
1425      else if (PriorDeadKey = "t2")   ; macron
1426         BSSendUnicodeChar(0x012A)
1427      else if (PriorDeadKey = "c3")   ; brevis
1428         BSSendUnicodeChar(0x012C)
1429      else if (PriorDeadKey = "a4")   ; ogonek
1430         BSSendUnicodeChar(0x012E)
1431      else if (PriorDeadKey = "t1")   ; tilde
1432         BSSendUnicodeChar(0x0128)
1433      else if (PriorDeadKey = "a5")   ; punkt dar�ber
1434         BSSendUnicodeChar(0x0130)
1435      else if (PriorDeadKey = "c2")   ; caron
1436         BSSendUnicodeChar(0x01CF)
1437      else
1438         sendinput {blind}I
1439      if (PriorDeadKey = "comp")      ; compose
1440         CompKey := "i_capital"
1441      else
1442         CompKey := ""
1443   }
1444   else if Ebene = 3
1445   {
1446      send `/
1447      CompKey := ""
1448   }
1449   else if Ebene = 4
1450   {
1451      Sendinput {Blind}{Left}
1452      CompKey := ""
1453   }
1454   else if Ebene = 5   
1455   {
1456      SendUnicodeChar(0x03B9) ; iota
1457      CompKey := ""
1458   }
1459   else if Ebene = 6
1460   {
1461      SendUnicodeChar(0x222B) ; integral
1462      CompKey := ""
1463   }
1464      PriorDeadKey := ""
1465return
1466
1467neo_a:
1468   EbeneAktualisieren()
1469   if Ebene = 1
1470   {
1471      if (PriorDeadKey = "c1")        ; circumflex
1472         BSSendUnicodeChar(0x00E2)
1473      else if (PriorDeadKey = "a1")   ; akut
1474         BSSendUnicodeChar(0x00E1)
1475      else if (PriorDeadKey = "a2")   ; grave
1476         BSSendUnicodeChar(0x00E0)
1477      else if (PriorDeadKey = "t3")   ; Diaerese
1478         send {bs}�
1479      else if (PriorDeadKey = "a6")   ; Ring
1480         Send {bs}�
1481      else if (PriorDeadKey = "t1")   ; tilde
1482         BSSendUnicodeChar(0x00E3)
1483      else if (PriorDeadKey = "a4")   ; ogonek
1484         BSSendUnicodeChar(0x0105)
1485      else if (PriorDeadKey = "t2")   ; macron
1486         BSSendUnicodeChar(0x0101)
1487      else if (PriorDeadKey = "c3")   ; brevis
1488         BSSendUnicodeChar(0x0103)
1489      else if (PriorDeadKey = "c2")   ; caron
1490         BSSendUnicodeChar(0x01CE)
1491      else
1492         sendinput {blind}a
1493      if (PriorDeadKey = "comp")      ; compose
1494         CompKey := "a_small"
1495      else
1496         CompKey := ""
1497   }
1498   else if Ebene = 2
1499   {
1500      if (PriorDeadKey = "c1")        ; circumflex
1501         BSSendUnicodeChar(0x00C2)
1502      else if (PriorDeadKey = "a1")   ; akut
1503         BSSendUnicodeChar(0x00C1)
1504      else if (PriorDeadKey = "a2")   ; grave
1505         BSSendUnicodeChar(0x00C0)
1506      else if (PriorDeadKey = "t3")   ; Diaerese
1507         send {bs}�
1508      else if (PriorDeadKey = "t1")   ; tilde
1509         BSSendUnicodeChar(0x00C3)
1510      else if (PriorDeadKey = "a6")   ; Ring
1511         Send {bs}�
1512      else if (PriorDeadKey = "t2")   ; macron
1513         BSSendUnicodeChar(0x0100)
1514      else if (PriorDeadKey = "c3")   ; brevis
1515         BSSendUnicodeChar(0x0102)
1516      else if (PriorDeadKey = "a4")   ; ogonek
1517         BSSendUnicodeChar(0x0104)
1518      else if (PriorDeadKey = "c2")   ; caron
1519         BSSendUnicodeChar(0x01CD)
1520      else
1521         sendinput {blind}A
1522      if (PriorDeadKey = "comp")      ; compose
1523         CompKey := "a_capital"
1524      else
1525         CompKey := ""
1526   }
1527   else if Ebene = 3
1528   {
1529      sendraw {
1530      CompKey := ""
1531   }
1532   else if Ebene = 4
1533   {
1534      Sendinput {Blind}{Down}
1535      CompKey := ""
1536   }
1537   else if Ebene = 5
1538   {
1539      SendUnicodeChar(0x03B1) ;alpha
1540      CompKey := ""
1541   }
1542   else if Ebene = 6
1543   {
1544      SendUnicodeChar(0x2200) ;fuer alle   
1545      CompKey := ""
1546   }
1547   PriorDeadKey := ""
1548return
1549
1550neo_e:
1551   EbeneAktualisieren()
1552   if Ebene = 1
1553   {
1554      if (PriorDeadKey = "c1")        ; circumflex
1555         BSSendUnicodeChar(0x00EA)
1556      else if (PriorDeadKey = "a1")   ; akut
1557         BSSendUnicodeChar(0x00E9)
1558      else if (PriorDeadKey = "a2")   ; grave
1559         BSSendUnicodeChar(0x00E8)
1560      else if (PriorDeadKey = "t3")   ; Diaerese
1561         Send, {bs}�
1562      else if (PriorDeadKey = "a4")   ; ogonek
1563         BSSendUnicodeChar(0x0119)
1564      else if (PriorDeadKey = "t2")   ; macron
1565         BSSendUnicodeChar(0x0113)
1566      else if (PriorDeadKey = "c3")   ; brevis
1567         BSSendUnicodeChar(0x0115)
1568      else if (PriorDeadKey = "c2")   ; caron
1569         BSSendUnicodeChar(0x011B)
1570      else if (PriorDeadKey = "a5")   ; punkt dar�ber
1571         BSSendUnicodeChar(0x0117)
1572      else if (CompKey = "a_small")   ; compose
1573      {
1574         Send {bs}�
1575         CompKey := ""
1576      }
1577      else if (CompKey = "o_small")   ; compose
1578      {
1579         Send {bs}�
1580         CompKey := ""
1581      }     
1582      else
1583         sendinput {blind}e
1584   }
1585   else if Ebene = 2
1586   {
1587      if (PriorDeadKey = "c1")        ; circumflex
1588         BSSendUnicodeChar(0x00CA)
1589      else if (PriorDeadKey = "a1")   ; akut
1590         BSSendUnicodeChar(0x00C9)
1591      else if (PriorDeadKey = "a2")   ; grave
1592         BSSendUnicodeChar(0x00C8)
1593      else if (PriorDeadKey = "t3")   ; Diaerese
1594         Send, {bs}�
1595      else if (PriorDeadKey = "c2")   ; caron
1596         BSSendUnicodeChar(0x011A)
1597      else if (PriorDeadKey = "t2")   ; macron
1598         BSSendUnicodeChar(0x0112)
1599      else if (PriorDeadKey = "c3")   ; brevis
1600         BSSendUnicodeChar(0x0114)
1601      else if (PriorDeadKey = "a4")   ; ogonek
1602         BSSendUnicodeChar(0x0118)
1603      else if (PriorDeadKey = "a5")   ; punkt dar�ber
1604         BSSendUnicodeChar(0x0116)
1605      else if (CompKey = "a_capital") ; compose
1606      {
1607         Send {bs}�
1608         CompKey := ""
1609      }
1610      else if (CompKey = "o_capital")        ; compose
1611      {
1612         Send {bs}�
1613         CompKey := ""
1614      }     
1615      else
1616         sendinput {blind}E
1617   }
1618   else if Ebene = 3
1619      sendraw }
1620   else if Ebene = 4
1621      Sendinput {Blind}{Right}
1622   else if Ebene = 5
1623        SendUnicodeChar(0x03B5) ;epsilon
1624   else if Ebene = 6
1625        SendUnicodeChar(0x2203) ;es existiert   
1626   PriorDeadKey := ""   CompKey := ""
1627return
1628
1629neo_o:
1630   EbeneAktualisieren()
1631   if Ebene = 1
1632   {
1633      if (PriorDeadKey = "c1")        ; circumflex
1634         BSSendUnicodeChar(0x00F4)
1635      else if (PriorDeadKey = "a1")   ; akut
1636         BSSendUnicodeChar(0x00F3)
1637      else if (PriorDeadKey = "a2")   ; grave
1638         BSSendUnicodeChar(0x00F2)
1639      else if (PriorDeadKey = "t3")   ; Diaerese
1640         Send, {bs}�
1641      else if (PriorDeadKey = "t1")   ; tilde
1642         BSSendUnicodeChar(0x00F5)
1643      else if (PriorDeadKey = "t4")   ; doppelakut
1644         BSSendUnicodeChar(0x0151)
1645      else if (PriorDeadKey = "t5")   ; Schr�gstrich
1646         BSSendUnicodeChar(0x00F8)
1647      else if (PriorDeadKey = "t2")   ; macron
1648         BSSendUnicodeChar(0x014D)
1649      else if (PriorDeadKey = "c3")   ; brevis
1650         BSSendUnicodeChar(0x014F)
1651      else if (PriorDeadKey = "a4")   ; ogonek
1652         BSSendUnicodeChar(0x01EB)
1653      else if (PriorDeadKey = "c2")   ; caron
1654         BSSendUnicodeChar(0x01D2)                     
1655      else
1656         sendinput {blind}o
1657      if (PriorDeadKey = "comp")      ; compose
1658         CompKey := "o_small"
1659      else
1660         CompKey := ""
1661   }
1662   else if Ebene = 2
1663   {
1664      if (PriorDeadKey = "c1")        ; circumflex
1665         BSSendUnicodeChar(0x00D4)
1666      else if (PriorDeadKey = "a1")   ; akut
1667         BSSendUnicodeChar(0x00D3)
1668      else if (PriorDeadKey = "a2")   ; grave
1669         BSSendUnicodeChar(0x00D2)
1670      else if (PriorDeadKey = "t5")   ; Schr�gstrich
1671         BSSendUnicodeChar(0x00D8)
1672      else if (PriorDeadKey = "t1")   ; tilde
1673         BSSendUnicodeChar(0x00D5)
1674      else if (PriorDeadKey = "t4")   ; doppelakut
1675         BSSendUnicodeChar(0x0150)
1676      else if (PriorDeadKey = "t3")   ; Diaerese
1677         send {bs}�
1678      else if (PriorDeadKey = "t2")   ; macron
1679         BSSendUnicodeChar(0x014C)
1680      else if (PriorDeadKey = "c3")   ; brevis
1681         BSSendUnicodeChar(0x014E)
1682      else if (PriorDeadKey = "a4")   ; ogonek
1683         BSSendUnicodeChar(0x01EA)
1684      else if (PriorDeadKey = "c2")   ; caron
1685         BSSendUnicodeChar(0x01D1)   
1686      else
1687         sendinput {blind}O
1688      if (PriorDeadKey = "comp")      ; compose
1689         CompKey := "o_capital"
1690      else
1691         CompKey := ""
1692   }
1693   else if Ebene = 3
1694   {
1695      send *
1696      CompKey := ""
1697   }
1698   else if Ebene = 4
1699   {
1700      Send {blind}{End}
1701      CompKey := ""
1702   }
1703   else if Ebene = 5
1704   {
1705      SendUnicodeChar(0x03BF) ; omicron
1706      CompKey := ""
1707   }
1708   else if Ebene = 6
1709   {
1710      SendUnicodeChar(0x2208) ; element of
1711      CompKey := ""
1712   }
1713   PriorDeadKey := ""
1714return
1715
1716neo_s:
1717   EbeneAktualisieren()
1718   if Ebene = 1
1719   {
1720      if (PriorDeadKey = "c1")      ; circumflex
1721         BSSendUnicodeChar(0x015D)
1722      else if (PriorDeadKey = "a1") ; akut
1723         BSSendUnicodeChar(0x015B)
1724      else if (PriorDeadKey = "c2") ; caron
1725         BSSendUnicodeChar(0x0161)
1726      else if (PriorDeadKey = "a3") ; cedilla
1727         BSSendUnicodeChar(0x015F)
1728      else if (PriorDeadKey = "a5") ; punkt dar�ber
1729         BSSendUnicodeChar(0x1E61)
1730      else if (PriorDeadKey = "c6") ; punkt darunter
1731         BSSendUnicodeChar(0x1E63)
1732      else
1733      {
1734         if (LangSTastatur = 1)
1735         {
1736            if GetKeyState("CapsLock","T")
1737               sendinput {blind}s
1738            else
1739               SendUnicodeChar(0x017F) ; langes s
1740         }
1741         else
1742            sendinput {blind}s
1743      }
1744      if (PriorDeadKey = "comp")
1745         CompKey := "s_small"
1746      else
1747         CompKey := ""
1748   }
1749   else if Ebene = 2
1750   {
1751      if (PriorDeadKey = "c1")      ; circumflex
1752         BSSendUnicodeChar(0x015C)
1753      else if (PriorDeadKey = "c2") ; caron
1754         BSSendUnicodeChar(0x0160)
1755      else if (PriorDeadKey = "a1") ; akut
1756         BSSendUnicodeChar(0x015A)
1757      else if (PriorDeadKey = "a3") ; cedilla
1758         BSSendUnicodeChar(0x015E)
1759      else if (PriorDeadKey = "a5") ; punkt dar�ber
1760         BSSendUnicodeChar(0x1E60)
1761      else if (PriorDeadKey = "c6") ; punkt darunter
1762         BSSendUnicodeChar(0x1E62)
1763      else
1764      {
1765         if GetKeyState("CapsLock","T") && (LangSTastatur = 1)
1766            SendUnicodeChar(0x017F)
1767         else
1768            sendinput {blind}S
1769      }
1770      if (PriorDeadKey = "comp")
1771         CompKey := "s_capital"
1772      else
1773         CompKey := ""
1774   }
1775   else if Ebene = 3
1776   {
1777      send ?
1778      CompKey := ""
1779   }
1780   else if Ebene = 4
1781   {
1782      Send �
1783      CompKey := ""
1784   }
1785   else if Ebene = 5
1786   {
1787      SendUnicodeChar(0x03C3) ;sigma
1788      CompKey := ""
1789   }
1790   else if Ebene = 6
1791   {
1792      SendUnicodeChar(0x03A3)  ; Sigma
1793      CompKey := ""
1794   }
1795   PriorDeadKey := ""
1796return
1797
1798neo_n:
1799   EbeneAktualisieren()
1800   if Ebene = 1
1801   {
1802      if (PriorDeadKey = "a1")          ; akut
1803         BSSendUnicodeChar(0x0144)
1804      else if (PriorDeadKey = "t1")     ; tilde
1805         BSSendUnicodeChar(0x00F1)
1806      else if (PriorDeadKey = "c2")    ; caron
1807         BSSendUnicodeChar(0x0148)
1808      else if (PriorDeadKey = "a3")   ; cedilla
1809         BSSendUnicodeChar(0x0146)
1810      else if (PriorDeadKey = "a5") ; punkt dar�ber
1811         BSSendUnicodeChar(0x1E45)
1812      else
1813         sendinput {blind}n
1814   }
1815   else if Ebene = 2
1816   {
1817      if (PriorDeadKey = "c2")         ; caron
1818         BSSendUnicodeChar(0x0147)
1819      else if (PriorDeadKey = "t1")     ; tilde
1820         BSSendUnicodeChar(0x00D1)
1821      else if (PriorDeadKey = "a1")     ; akut
1822         BSSendUnicodeChar(0x0143)
1823      else if (PriorDeadKey = "a3")   ; cedilla
1824         BSSendUnicodeChar(0x0145)
1825      else if (PriorDeadKey = "a5") ; punkt dar�ber
1826         BSSendUnicodeChar(0x1E44)
1827      else
1828         sendinput {blind}N
1829   }
1830   else if Ebene = 3
1831      send (
1832   else if Ebene = 4
1833   {
1834      if (PriorDeadKey = "c1")            ; circumflex
1835         BSSendUnicodeChar(0x2074)
1836      else if (PriorDeadKey = "c4")       ; toter -
1837         BSSendUnicodeChar(0x2084)
1838      else
1839         Send 4
1840   }
1841   else if Ebene = 5
1842      SendUnicodeChar(0x03BD) ; nu
1843   else if Ebene = 6
1844      SendUnicodeChar(0x2115) ; N (nat�rliche Zahlen)
1845   PriorDeadKey := ""   CompKey := ""
1846return
1847
1848neo_r:
1849   EbeneAktualisieren()
1850   if Ebene = 1
1851   {
1852      if (PriorDeadKey = "a1")           ; akut
1853         BSSendUnicodeChar(0x0155)
1854      else if (PriorDeadKey = "c2")     ; caron
1855         BSSendUnicodeChar(0x0159)
1856      else if (PriorDeadKey = "a3")    ; cedilla
1857         BSSendUnicodeChar(0x0157)
1858      else if (PriorDeadKey = "a5")  ; punkt dar�ber
1859         BSSendUnicodeChar(0x0E59)
1860      else if (PriorDeadKey = "c6") ; punkt darunter
1861         BSSendUnicodeChar(0x1E5B)
1862      else
1863         sendinput {blind}r
1864      if (PriorDeadKey = "comp")
1865         CompKey := "r_small"
1866      else
1867         CompKey := ""
1868   }
1869   else if Ebene = 2
1870   {
1871      if (PriorDeadKey = "c2")          ; caron
1872         BSSendUnicodeChar(0x0158)
1873      else if (PriorDeadKey = "a1")      ; akut
1874         BSSendUnicodeChar(0x0154)
1875      else if (PriorDeadKey = "a3")    ; cedilla
1876         BSSendUnicodeChar(0x0156)
1877      else if (PriorDeadKey = "a5")  ; punkt dar�ber
1878         BSSendUnicodeChar(0x1E58)
1879      else if (PriorDeadKey = "c6") ; punkt darunter
1880         BSSendUnicodeChar(0x1E5A)
1881      else
1882         sendinput {blind}R
1883      if (PriorDeadKey = "comp")
1884         CompKey := "r_capital"
1885      else
1886         CompKey := ""
1887   }
1888   else if Ebene = 3
1889   {
1890      send )
1891      CompKey := ""
1892   }
1893   else if Ebene = 4
1894   {
1895      if (PriorDeadKey = "c1")            ; circumflex
1896         BSSendUnicodeChar(0x2075)
1897      else if (PriorDeadKey = "c4")       ; toter -
1898         BSSendUnicodeChar(0x2085)
1899      else
1900         Send 5
1901      CompKey := ""
1902   }
1903   else if Ebene = 5
1904   {
1905      SendUnicodeChar(0x03F1) ; rho symbol (varrho)
1906      CompKey := ""
1907   }
1908   else if Ebene = 6
1909   {
1910      SendUnicodeChar(0x211D) ; R (reelle Zahlen)
1911      CompKey := ""
1912   }
1913   PriorDeadKey := ""
1914return
1915
1916neo_t:
1917     EbeneAktualisieren()
1918     if Ebene = 1
1919     {
1920        if (PriorDeadKey = "c2")          ; caron
1921           BSSendUnicodeChar(0x0165)
1922        else if (PriorDeadKey = "a3")    ; cedilla
1923           BSSendUnicodeChar(0x0163)
1924        else if (PriorDeadKey = "c4")   ; Querstrich
1925           BSSendUnicodeChar(0x0167)
1926        else if (PriorDeadKey = "a5")  ; punkt dar�ber
1927           BSSendUnicodeChar(0x1E6B)
1928        else if (PriorDeadKey = "c6") ; punkt darunter
1929           BSSendUnicodeChar(0x1E6D)
1930        else
1931           sendinput {blind}t
1932        if (PriorDeadKey = "comp")
1933           CompKey := "t_small"
1934        else
1935           CompKey := ""
1936     }
1937     else if Ebene = 2
1938     {
1939        if (PriorDeadKey = "c2")          ; caron
1940           BSSendUnicodeChar(0x0164)
1941        else if (PriorDeadKey = "a3")    ; cedilla
1942           BSSendUnicodeChar(0x0162)
1943        else if (PriorDeadKey = "c4")   ; Querstrich
1944           BSSendUnicodeChar(0x0166)
1945        else if (PriorDeadKey = "a5")  ; punkt dar�ber
1946           BSSendUnicodeChar(0x1E6A)
1947        else if (PriorDeadKey = "c6") ; punkt darunter
1948           BSSendUnicodeChar(0x1E6C)
1949        else
1950           sendinput {blind}T
1951        if (PriorDeadKey = "comp")
1952           CompKey := "t_capital"
1953        else
1954           CompKey := ""
1955     }
1956     else if Ebene = 3
1957     {
1958        send {blind}- ; Bis
1959        CompKey := ""
1960     }
1961     else if Ebene = 4
1962     {
1963        if (PriorDeadKey = "c1")            ; circumflex
1964           BSSendUnicodeChar(0x2076)
1965        else if (PriorDeadKey = "c4")       ; toter -
1966           BSSendUnicodeChar(0x2086)
1967        else
1968           Send 6
1969        CompKey := ""
1970     }
1971     else if Ebene = 5
1972     {
1973        SendUnicodeChar(0x03C4) ; tau
1974        CompKey := ""
1975     }
1976     else if Ebene = 6
1977     {
1978        SendUnicodeChar(0x2202 ) ; partielle Ableitung
1979        CompKey := ""
1980     }
1981     PriorDeadKey := ""
1982return
1983
1984neo_d:
1985   EbeneAktualisieren()
1986   if Ebene = 1
1987   {
1988      if (PriorDeadKey = "c4")        ; Querstrich
1989         BSSendUnicodeChar(0x0111)
1990      else if (PriorDeadKey = "t5")  ; Schr�gstrich
1991         BSSendUnicodeChar(0x00F0)
1992      else if (PriorDeadKey = "c2")     ; caron
1993         BSSendUnicodeChar(0x010F)
1994      else if (PriorDeadKey = "a5")  ; punkt dar�ber
1995         BSSendUnicodeChar(0x1E0B)
1996      else if (PriorDeadKey = "c6") ; punkt darunter
1997         BSSendUnicodeChar(0x1E0D)
1998      else
1999         sendinput {blind}d
2000   }
2001   else if Ebene = 2
2002   {
2003      if (PriorDeadKey = "c4")        ; Querstrich
2004         BSSendUnicodeChar(0x0110)
2005      else if (PriorDeadKey = "t5")  ; Schr�gstrich
2006         BSSendUnicodeChar(0x00D0)
2007      else if (PriorDeadKey = "c2")     ; caron
2008         BSSendUnicodeChar(0x010E)
2009      else if (PriorDeadKey = "a5")  ; punkt dar�ber
2010         BSSendUnicodeChar(0x1E0A)
2011      else if (PriorDeadKey = "c6") ; punkt darunter
2012         BSSendUnicodeChar(0x1E0D)
2013      else sendinput {blind}D
2014   }
2015   else if Ebene = 3
2016      send :
2017   else if Ebene = 4
2018     Send `,
2019   else if Ebene = 5
2020      SendUnicodeChar(0x03B4) ;delta
2021   else if Ebene = 6
2022      SendUnicodeChar(0x0394)  ; Delta
2023   PriorDeadKey := ""   CompKey := ""
2024return
2025
2026neo_y:
2027   EbeneAktualisieren()
2028   if Ebene = 1
2029   {
2030      if (PriorDeadKey = "t3")       ; Diaerese
2031         Send {bs}�
2032      else if (PriorDeadKey = "a1")      ; akut
2033         BSSendUnicodeChar(0x00FD)
2034      else if (PriorDeadKey = "c1")    ; circumflex
2035         BSSendUnicodeChar(0x0177)
2036      else
2037         sendinput {blind}y
2038   }
2039   else if Ebene = 2
2040   {
2041      if (PriorDeadKey = "a1")           ; akut
2042         BSSendUnicodeChar(0x00DD)
2043      else if (PriorDeadKey = "t3")    ; Diaerese
2044         Send {bs}�
2045      else if (PriorDeadKey = "c1")      ; circumflex
2046         BSSendUnicodeChar(0x0176)
2047      else
2048         sendinput {blind}Y
2049   }
2050   else if Ebene = 3
2051      send @
2052   else if Ebene = 4
2053      Send .
2054   else if Ebene = 5
2055      SendUnicodeChar(0x03C5) ; upsilon
2056   else if Ebene = 6
2057      SendUnicodeChar(0x2207) ; nabla
2058   PriorDeadKey := ""   CompKey := ""
2059return
2060
2061;SC02B (#) wird zu Mod3
2062
2063
2064/*
2065   ------------------------------------------------------
2066   Reihe 4
2067   ------------------------------------------------------
2068*/
2069
2070;SC056 (<) wird zu Mod4
2071
2072neo_�:
2073   EbeneAktualisieren()
2074   if Ebene = 1
2075   {
2076      if (PriorDeadKey = "t2")        ; macron
2077         BSSendUnicodeChar(0x01D6)
2078      else if (PriorDeadKey = "a1")   ; akut
2079         BSSendUnicodeChar(0x01D8)
2080      else if (PriorDeadKey = "a2")   ; grave
2081         BSSendUnicodeChar(0x01DC)
2082      else if (PriorDeadKey = "c2")   ; caron
2083         BSSendUnicodeChar(0x01DA)
2084      else
2085         sendinput {blind}�
2086   }
2087   else if Ebene = 2
2088   {
2089      if (PriorDeadKey = "t2")        ; macron
2090         BSSendUnicodeChar(0x01D5)
2091      else if (PriorDeadKey = "a1")   ; akut
2092         BSSendUnicodeChar(0x01D7)
2093      else if (PriorDeadKey = "a2")   ; grave
2094         BSSendUnicodeChar(0x01DB)
2095      else if (PriorDeadKey = "c2")   ; caron
2096         BSSendUnicodeChar(0x01D9)
2097      else
2098         sendinput {blind}�
2099   }
2100   else if Ebene = 3
2101      send {blind}{#}
2102   else if Ebene = 4
2103      Send {Esc}
2104   else if Ebene = 5
2105     {} ; leer
2106   else if Ebene = 6
2107      SendUnicodeChar(0x221D) ; proportional
2108
2109   PriorDeadKey := ""   CompKey := ""
2110return
2111
2112neo_�:
2113   EbeneAktualisieren()
2114   if Ebene = 1
2115   {
2116      if (PriorDeadKey = "t2")        ; macron
2117         BSSendUnicodeChar(0x022B)
2118      else
2119         sendinput {blind}�
2120   }
2121   else if Ebene = 2
2122   {
2123      if (PriorDeadKey = "t2")        ; macron
2124         BSSendUnicodeChar(0x022A)
2125      else
2126         sendinput {blind}�
2127   }
2128   else if Ebene = 3
2129      send $
2130   else if Ebene = 4
2131      goto neo_tab
2132   else if Ebene = 5
2133       {} ;leer
2134   else if Ebene = 6
2135      SendUnicodeChar(0x2111) ; Fraktur I
2136   PriorDeadKey := ""   CompKey := ""
2137return
2138
2139neo_�:
2140   EbeneAktualisieren()
2141   if Ebene = 1
2142   {
2143      if (PriorDeadKey = "t2")        ; macron
2144         BSSendUnicodeChar(0x01DF)
2145      else
2146         sendinput {blind}�
2147   }
2148   else if Ebene = 2
2149   {
2150      if (PriorDeadKey = "t2")        ; macron
2151         BSSendUnicodeChar(0x001DE)
2152      else
2153         sendinput {blind}�
2154   }
2155   else if Ebene = 3
2156      send |
2157   else if Ebene = 4
2158      Send {PgDn}    ; Next
2159   else if Ebene = 5
2160      SendUnicodeChar(0x03B7) ; eta
2161   else if Ebene = 6
2162      SendUnicodeChar(0x211C) ; altes R
2163   PriorDeadKey := ""   CompKey := ""
2164return
2165
2166neo_p:
2167   EbeneAktualisieren()
2168   if Ebene = 1
2169   {
2170      if (PriorDeadKey = "a5")      ; punkt dar�ber
2171         BSSendUnicodeChar(0x1E57)
2172      else
2173         sendinput {blind}p
2174   }
2175   else if Ebene = 2
2176   {
2177      if (PriorDeadKey = "a5")      ; punkt dar�ber
2178         BSSendUnicodeChar(0x1E56)
2179      else
2180         sendinput {blind}P
2181   }
2182   else if Ebene = 3
2183   {
2184      if (PriorDeadKey = "t1")    ; tilde
2185         BSSendUnicodeChar(0x2248)
2186      else
2187         sendraw ~
2188   }     
2189   else if Ebene = 4
2190        Send {Enter}
2191   else if Ebene = 5
2192      SendUnicodeChar(0x03C0) ;pi
2193   else if Ebene = 6
2194      SendUnicodeChar(0x03A0)  ; Pi
2195   PriorDeadKey := ""   CompKey := ""
2196return
2197
2198neo_z:
2199   EbeneAktualisieren()
2200   if Ebene = 1
2201   {
2202      if (PriorDeadKey = "c2")         ; caron
2203         BSSendUnicodeChar(0x017E)
2204      else if (PriorDeadKey = "a1")     ; akut
2205         BSSendUnicodeChar(0x017A)
2206      else if (PriorDeadKey = "a5") ; punkt dr�ber
2207         BSSendUnicodeChar(0x017C)
2208      else if (PriorDeadKey = "c6") ; punkt drunter
2209         BSSendUnicodeChar(0x1E93)
2210      else
2211         sendinput {blind}z
2212   }
2213   else if Ebene = 2
2214   {
2215      if (PriorDeadKey = "c2")         ; caron 
2216         BSSendUnicodeChar(0x017D)
2217      else if (PriorDeadKey = "a1")     ; akut
2218         BSSendUnicodeChar(0x0179)
2219      else if (PriorDeadKey = "a5") ; punkt dar�ber
2220         BSSendUnicodeChar(0x017B)
2221      else if (PriorDeadKey = "c6") ; punkt drunter
2222         BSSendUnicodeChar(0x1E92)
2223      else
2224         sendinput {blind}Z
2225   }
2226   else if Ebene = 3
2227      send ``{space} ; untot
2228   else if Ebene = 4
2229     {} ; leer   
2230   else if Ebene = 5
2231      SendUnicodeChar(0x03B6) ;zeta
2232   else if Ebene = 6
2233      SendUnicodeChar(0x2124)  ; Z (ganze Zahlen)
2234   PriorDeadKey := ""   CompKey := ""
2235return
2236
2237neo_b:
2238   EbeneAktualisieren()
2239   if Ebene = 1
2240   {
2241      if (PriorDeadKey = "a5")      ; punkt dar�ber
2242         BSSendUnicodeChar(0x1E03)
2243      else
2244         sendinput {blind}b
2245   }
2246   else if Ebene = 2
2247   {
2248      if (PriorDeadKey = "a5")       ; punkt dar�ber
2249         BSSendUnicodeChar(0x1E02)
2250      else
2251         sendinput {blind}B
2252   }
2253   else if Ebene = 3
2254      send {blind}{+}
2255   else if Ebene = 4
2256      send :
2257   else if Ebene = 5
2258      SendUnicodeChar(0x03B2) ; beta
2259   else if Ebene = 6
2260      SendUnicodeChar(0x21D2) ; Doppel-Pfeil rechts
2261   PriorDeadKey := ""   CompKey := ""
2262return
2263
2264neo_m:
2265   EbeneAktualisieren()
2266   if Ebene = 1
2267   {
2268      if (PriorDeadKey = "a5")       ; punkt dar�ber
2269         BSSendUnicodeChar(0x1E41)
2270      else if (PriorDeadKey = "c6") ; punkt darunter
2271         BSSendUnicodeChar(0x1E43)
2272      else if ( (CompKey = "t_small") or (CompKey = "t_capital") )       ; compose
2273         CompUnicodeChar(0x2122)          ; TM
2274      else if ( (CompKey = "s_small") or (CompKey = "s_capital") )       ; compose
2275         CompUnicodeChar(0x2120)          ; SM
2276      else
2277         sendinput {blind}m
2278   }
2279   else if Ebene = 2
2280   {
2281      if (PriorDeadKey = "a5")       ; punkt dar�ber
2282         BSSendUnicodeChar(0x1E40)
2283      else if (PriorDeadKey = "c6") ; punkt darunter
2284         BSSendUnicodeChar(0x1E42)
2285      else if ( (CompKey = "t_capital") or (CompKey = "t_small") )       ; compose
2286         CompUnicodeChar(0x2122)          ; TM
2287      else if ( (CompKey = "s_capital") or (CompKey = "s_small") )       ; compose
2288         CompUnicodeChar(0x2120)          ; SM
2289      else
2290         sendinput {blind}M
2291   }
2292   else if Ebene = 3
2293      send `%
2294   else if Ebene = 4
2295   {
2296      if (PriorDeadKey = "c1")            ; circumflex
2297         BSSendUnicodeChar(0x00B9)
2298      else if (PriorDeadKey = "c4")       ; toter -
2299         BSSendUnicodeChar(0x2081)
2300      else
2301         Send 1
2302   }
2303   else if Ebene = 5
2304      SendUnicodeChar(0x03BC) ; griechisch mu, micro w�re 0x00B5
2305   else if Ebene = 6
2306      SendUnicodeChar(0x21D4) ; doppelter Doppelpfeil (genau dann wenn)
2307   PriorDeadKey := ""   CompKey := ""
2308return
2309
2310neo_komma:
2311   EbeneAktualisieren()
2312   if Ebene = 1
2313       { 
2314         if GetKeyState("CapsLock","T")
2315         {
2316           if (IsModifierPressed())
2317           {
2318             send {blind},
2319           }
2320           else
2321           {
2322              send `,
2323           }
2324               
2325         }
2326         else
2327         {
2328           send {blind},
2329         }
2330       }
2331   else if Ebene = 2
2332       SendUnicodeChar(0x22EE) ;  vertikale ellipse
2333   else if Ebene = 3
2334      send "
2335   else if Ebene = 4
2336   {
2337      if (PriorDeadKey = "c1")            ; circumflex
2338         BSSendUnicodeChar(0x00B2)
2339      else if (PriorDeadKey = "c4")       ; toter -
2340         BSSendUnicodeChar(0x2082)
2341      else
2342         Send 2
2343   }
2344   else if Ebene = 5
2345      SendUnicodeChar(0x03C1) ; rho
2346   else if Ebene = 6
2347      SendUnicodeChar(0x21D0) ; Doppelpfeil links
2348   PriorDeadKey := ""   CompKey := ""
2349return
2350
2351neo_punkt:
2352   EbeneAktualisieren()
2353   if Ebene = 1
2354        { 
2355         if GetKeyState("CapsLock","T")
2356         {
2357           if (IsModifierPressed())
2358           {
2359             send {blind}.
2360           }
2361           else
2362           {
2363              send .
2364           }
2365               
2366         }
2367         else {
2368           send {blind}.
2369         }
2370       }
2371  else if Ebene = 2
2372      SendUnicodeChar(0x2026)  ; ellipse
2373   else if Ebene = 3
2374      send '
2375   else if Ebene = 4
2376   {
2377      if (PriorDeadKey = "c1")            ; circumflex
2378         BSSendUnicodeChar(0x00B3)
2379      else if (PriorDeadKey = "c4")       ; toter -
2380         BSSendUnicodeChar(0x2083)
2381      else
2382         Send 3
2383   }
2384   else if Ebene = 5
2385      SendUnicodeChar(0x03D1) ; theta symbol (vartheta)
2386   else if Ebene = 6
2387      SendUnicodeChar(0x0398)  ; Theta
2388   PriorDeadKey := ""   CompKey := ""
2389return
2390
2391
2392neo_j:
2393   EbeneAktualisieren()
2394   if Ebene = 1
2395   {
2396      if (PriorDeadKey = "c1")           ; circumflex
2397         BSSendUnicodeChar(0x0135)
2398      else if (PriorDeadKey = "c2")      ; caron
2399         BSSendUnicodeChar(0x01F0)
2400      else if (CompKey = "i_small")        ; compose
2401         CompUnicodeChar(0x0133)          ; ij
2402      else if (CompKey = "l_small")        ; compose
2403         CompUnicodeChar(0x01C9)          ; lj
2404      else if (CompKey = "l_capital")       ; compose
2405         CompUnicodeChar(0x01C8)          ; Lj
2406      else
2407         sendinput {blind}j
2408   }
2409   else if Ebene = 2
2410   {
2411      if (PriorDeadKey = "c1")            ; circumflex
2412         BSSendUnicodeChar(0x0134)
2413      else if (CompKey = "i_capital")        ; compose
2414         CompUnicodeChar(0x0132)          ; IJ
2415      else if (CompKey = "l_capital")        ; compose
2416         CompUnicodeChar(0x01C7)          ; LJ
2417      else
2418         sendinput {blind}J
2419   }
2420   else if Ebene = 3
2421      send `;
2422   else if Ebene = 4
2423     Send `;
2424   else if Ebene = 5
2425      SendUnicodeChar(0x03B8) ; theta
2426   else if Ebene = 6
2427      SendUnicodeChar(0x2261) ; identisch
2428   PriorDeadKey := ""   CompKey := ""
2429return
2430
2431/*
2432   ------------------------------------------------------
2433   Numpad
2434   ------------------------------------------------------
2435
2436   folgende Tasten verhalten sich bei ein- und ausgeschaltetem
2437   NumLock gleich:
2438*/
2439
2440neo_NumpadDiv:
2441   EbeneAktualisieren()
2442   if ( (Ebene = 1) or (Ebene = 2) )
2443      send {NumpadDiv}
2444   else if Ebene = 3
2445      send �
2446   else if ( (Ebene = 4) or (Ebene = 5) )
2447      SendUnicodeChar(0x2215)   ; slash
2448   PriorDeadKey := ""   CompKey := ""
2449return
2450
2451neo_NumpadMult:
2452   EbeneAktualisieren()
2453   if ( (Ebene = 1) or (Ebene = 2) )
2454      send {NumpadMult}
2455   else if Ebene = 3
2456      send �
2457   else if ( (Ebene = 4) or (Ebene = 5) )
2458      SendUnicodeChar(0x22C5)  ; cdot
2459   PriorDeadKey := ""   CompKey := ""
2460return
2461
2462neo_NumpadSub:
2463   EbeneAktualisieren()
2464   if ( (Ebene = 1) or (Ebene = 2) )
2465   {
2466      if (PriorDeadKey = "c1")          ; circumflex
2467         BSSendUnicodeChar(0x207B)
2468      else if (PriorDeadKey = "c4")       ; toter -
2469         BSSendUnicodeChar(0x208B)         
2470      else
2471         send {blind}{NumpadSub}
2472   }
2473   else if Ebene = 3
2474      SendUnicodeChar(0x2212) ; echtes minus
2475   PriorDeadKey := ""   CompKey := ""
2476return
2477
2478neo_NumpadAdd:
2479   EbeneAktualisieren()
2480   if ( (Ebene = 1) or (Ebene = 2) )
2481   {
2482      if (PriorDeadKey = "c1")          ; circumflex
2483         BSSendUnicodeChar(0x207A)
2484      else if (PriorDeadKey = "c4")       ; toter -
2485         BSSendUnicodeChar(0x208A)         
2486      else
2487         send {blind}{NumpadAdd}
2488   }
2489   else if Ebene = 3
2490      send �
2491   else if ( (Ebene = 4) or (Ebene = 5) )
2492      SendUnicodeChar(0x2213)   ; -+
2493   PriorDeadKey := ""   CompKey := ""
2494return
2495
2496neo_NumpadEnter:
2497   EbeneAktualisieren()
2498   if ( (Ebene = 1) or (Ebene = 2) )
2499      send {NumpadEnter}     
2500   else if Ebene = 3
2501      SendUnicodeChar(0x2260) ; neq
2502   else if ( (Ebene = 4) or (Ebene = 5) )
2503      SendUnicodeChar(0x2248) ; approx
2504   PriorDeadKey := ""   CompKey := ""
2505return
2506
2507/*
2508   folgende Tasten verhalten sich bei ein- und ausgeschaltetem NumLock
2509   unterschiedlich:
2510
2511   bei NumLock ein
2512*/
2513
2514
2515
2516neo_Numpad7:
2517   EbeneAktualisieren()
2518   if Ebene = 1
2519   {
2520      send {blind}{Numpad7}
2521      if (PriorDeadKey = "comp")
2522         CompKey := "Num_7"
2523      else
2524         CompKey := ""       
2525   }
2526   else if Ebene = 2
2527   {
2528      send {NumpadHome}
2529      CompKey := ""
2530   }
2531   else if Ebene = 3
2532   {
2533      SendUnicodeChar(0x2195)   ; Hoch-Runter-Pfeil
2534      CompKey := ""
2535   }
2536   else if ( (Ebene = 4) or (Ebene = 5) )
2537   {
2538      SendUnicodeChar(0x226A)  ; ll
2539      CompKey := ""
2540   }
2541   PriorDeadKey := ""
2542return
2543
2544neo_Numpad8:
2545   EbeneAktualisieren()
2546   if Ebene = 1
2547   {
2548      if (CompKey = "Num_1")
2549         CompUnicodeChar(0x215B)       ; 1/8
2550      else if (CompKey = "Num_3")
2551         CompUnicodeChar(0x215C)       ; 3/8
2552      else if (CompKey = "Num_5")
2553         CompUnicodeChar(0x215D)       ; 5/8
2554      else if (CompKey = "Num_7")
2555         CompUnicodeChar(0x215E)       ; 7/8
2556      else
2557         send {blind}{Numpad8}
2558      if (PriorDeadKey = "comp")
2559         CompKey := "Num_8"
2560      else
2561         CompKey := ""
2562   }
2563   else if Ebene = 2
2564   {
2565      send {NumpadUp}
2566      CompKey := ""
2567   }
2568   else if Ebene = 3
2569   {
2570      SendUnicodeChar(0x2191)     ; uparrow
2571      CompKey := ""
2572   }
2573   else if ( (Ebene = 4) or (Ebene = 5) )
2574   {
2575      SendUnicodeChar(0x2229)    ; intersection
2576      CompKey := ""
2577   }
2578   PriorDeadKey := ""   CompKey := ""
2579return
2580
2581neo_Numpad9:
2582   EbeneAktualisieren()
2583   if Ebene = 1
2584   {
2585      send {blind}{Numpad9}
2586      if (PriorDeadKey = "comp")
2587         CompKey := "Num_9"
2588      else
2589         CompKey := ""
2590   }
2591   else if Ebene = 2
2592   {
2593      send {NumpadPgUp}
2594      CompKey := ""
2595   }
2596   else if Ebene = 3
2597   {
2598      SendUnicodeChar(0x2297) ; Tensorprodukt ; Vektor in die Ebene zeigend
2599      CompKey := ""
2600   }
2601   else if ( (Ebene = 4) or (Ebene = 5) )
2602   {
2603      SendUnicodeChar(0x226B)  ; gg
2604      CompKey := ""
2605   }
2606   PriorDeadKey := ""
2607return
2608
2609
2610
2611neo_Numpad4:
2612   EbeneAktualisieren()
2613   if Ebene = 1
2614   {
2615      if (CompKey = "Num_1")
2616         CompUnicodeChar(0x00BC)       ; 1/4
2617      else if (CompKey = "Num_3")
2618         CompUnicodeChar(0x00BE)       ; 3/4
2619      else
2620         send {blind}{Numpad4}
2621      if (PriorDeadKey = "comp")
2622         CompKey := "Num_4"
2623      else
2624         CompKey := ""
2625   }
2626   else if Ebene = 2
2627   {
2628      send {NumpadLeft}
2629      CompKey := ""
2630   }
2631   else if Ebene = 3
2632   {
2633      SendUnicodeChar(0x2190)     ; leftarrow
2634      CompKey := ""
2635   }
2636   else if ( (Ebene = 4) or (Ebene = 5) )
2637   {
2638      SendUnicodeChar(0x2282)  ; subset of
2639      CompKey := ""
2640   }
2641   PriorDeadKey := ""
2642return
2643
2644neo_Numpad5:
2645   EbeneAktualisieren()
2646   if Ebene = 1
2647   {
2648      if (CompKey = "Num_1")
2649         CompUnicodeChar(0x2155)       ; 1/5
2650      else if (CompKey = "Num_2")
2651         CompUnicodeChar(0x2156)       ; 2/5
2652      else if (CompKey = "Num_3")
2653         CompUnicodeChar(0x2157)       ; 3/5
2654      else if (CompKey = "Num_4")
2655         CompUnicodeChar(0x2158)       ; 4/5
2656      else
2657         send {blind}{Numpad5}
2658      if (PriorDeadKey = "comp")
2659         CompKey := "Num_5"
2660      else
2661         CompKey := ""
2662   }
2663   else if Ebene = 2
2664   {
2665      send {NumpadClear}
2666      CompKey := ""
2667   }
2668   else if Ebene = 3
2669   {
2670      SendUnicodeChar(0x221E) ; INFINITY
2671      CompKey := ""
2672   }
2673   else if ( (Ebene = 4) or (Ebene = 5) )
2674   {
2675      SendUnicodeChar(0x220B) ; enth�lt das Element
2676      CompKey := ""
2677   }
2678   PriorDeadKey := ""
2679return
2680
2681neo_Numpad6:
2682   EbeneAktualisieren()
2683   if Ebene = 1
2684   {
2685      if (CompKey = "Num_1")
2686         CompUnicodeChar(0x2159)       ; 1/6
2687      else if (CompKey = "Num_5")
2688         CompUnicodeChar(0x215A)       ; 5/6
2689      else
2690         send {blind}{Numpad6}
2691      if (PriorDeadKey = "comp")
2692         CompKey := "Num_6"
2693      else
2694         CompKey := ""
2695   }
2696   else if Ebene = 2
2697   {
2698      send {NumpadRight}
2699      CompKey := ""
2700   }
2701   else if Ebene = 3
2702   {
2703      SendUnicodeChar(0x2192)     ; rightarrow
2704      CompKey := ""
2705   }
2706   else if ( (Ebene = 4) or (Ebene = 5) )
2707   {
2708      SendUnicodeChar(0x2283) ; superset of
2709      CompKey := ""
2710   }
2711   PriorDeadKey := ""
2712return
2713
2714neo_Numpad1:
2715   EbeneAktualisieren()
2716   if Ebene = 1
2717   {
2718      send {blind}{Numpad1}
2719      if (PriorDeadKey = "comp")
2720         CompKey := "Num_1"
2721      else
2722         CompKey := ""
2723   }
2724   else if Ebene = 2
2725   {
2726      send {NumpadEnd}
2727      CompKey := ""
2728   }
2729   else if Ebene = 3
2730   {
2731      SendUnicodeChar(0x2194) ; Links-Rechts-Pfeil
2732      CompKey := ""
2733   }
2734   else if ( (Ebene = 4) or (Ebene = 5) )
2735   {
2736      SendUnicodeChar(0x2264)   ; leq
2737      CompKey := ""
2738   }
2739   PriorDeadKey := ""
2740return
2741
2742neo_Numpad2:
2743   EbeneAktualisieren()
2744   if Ebene = 1
2745   {
2746      if (CompKey = "Num_1")
2747         CompUnicodeChar(0x00BD)       ; 1/2
2748      else
2749         send {blind}{Numpad2}
2750      if (PriorDeadKey = "comp")
2751         CompKey := "Num_2"
2752      else
2753         CompKey := ""
2754   }
2755   else if Ebene = 2
2756   {
2757      send {NumpadDown}
2758      CompKey := ""
2759   }
2760   else if Ebene = 3
2761   {
2762      SendUnicodeChar(0x2193)     ; downarrow
2763      CompKey := ""
2764   }
2765   else if ( (Ebene = 4) or (Ebene = 5) )
2766   {
2767      SendUnicodeChar(0x222A)  ; vereinigt
2768      CompKey := ""
2769   }
2770   PriorDeadKey := ""
2771return
2772
2773neo_Numpad3:
2774   EbeneAktualisieren()
2775   if Ebene = 1
2776   {
2777      if (CompKey = "Num_1")
2778         CompUnicodeChar(0x2153)       ; 1/3
2779      else if (CompKey = "Num_2")
2780         CompUnicodeChar(0x2154)       ; 2/3
2781      else
2782         send {blind}{Numpad3}
2783      if (PriorDeadKey = "comp")
2784         CompKey := "Num_3"
2785      else
2786         CompKey := ""
2787   }
2788   else if Ebene = 2
2789      send {NumpadPgDn}
2790   else if Ebene = 3
2791      SendUnicodeChar(0x21CC) ; RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON
2792   else if ( (Ebene = 4) or (Ebene = 5) )
2793      SendUnicodeChar(0x2265)  ; geq
2794   PriorDeadKey := ""   CompKey := ""
2795return
2796
2797neo_Numpad0:
2798   EbeneAktualisieren()
2799   if Ebene = 1
2800   {
2801      send {blind}{Numpad0}
2802      if (PriorDeadKey = "comp")
2803         CompKey := "Num_0"
2804      else
2805         CompKey := ""
2806   }
2807   else if Ebene = 2
2808   {
2809      send {NumpadIns}
2810      CompKey := ""
2811   }
2812   else if Ebene = 3
2813   {
2814      send `%
2815      CompKey := ""
2816   }
2817   else if ( (Ebene = 4) or (Ebene = 5) )
2818   {
2819      send �
2820      CompKey := ""
2821   }
2822   PriorDeadKey := ""
2823return
2824
2825neo_NumpadDot:
2826   EbeneAktualisieren()
2827   if Ebene = 1
2828   {
2829      send {NumpadDot}
2830      CompKey := ""
2831   }
2832   else if Ebene = 2
2833   {
2834      send {NumpadDel}
2835      CompKey := ""
2836   }
2837   else if Ebene = 3
2838   {
2839      send .
2840      CompKey := ""
2841   }
2842   else if ( (Ebene = 4) or (Ebene = 5) )
2843   {
2844      send `,
2845      CompKey := ""
2846   }
2847   PriorDeadKey := ""
2848return
2849
2850/*
2851   bei NumLock aus
2852*/
2853
2854neo_NumpadHome:
2855   EbeneAktualisieren()
2856   if Ebene = 1
2857   {
2858      send {NumpadHome}
2859      CompKey := ""
2860   }
2861   else if Ebene = 2
2862   {
2863      send {Numpad7}
2864      if (PriorDeadKey = "comp")
2865         CompKey := "Num_7"
2866      else
2867         CompKey := ""
2868   }
2869   else if ( (Ebene = 4) or (Ebene = 5) )
2870   {
2871      SendUnicodeChar(0x226A)  ; ll
2872      CompKey := ""
2873   }
2874   PriorDeadKey := ""
2875return
2876
2877neo_NumpadUp:
2878   EbeneAktualisieren()
2879   if Ebene = 1
2880   {
2881      send {NumpadUp}
2882      CompKey := ""
2883   }
2884   else if Ebene = 2
2885   {
2886      if (CompKey = "Num_1")
2887         CompUnicodeChar(0x215B)       ; 1/8
2888      else if (CompKey = "Num_3")
2889         CompUnicodeChar(0x215C)       ; 3/8
2890      else if (CompKey = "Num_5")
2891         CompUnicodeChar(0x215D)       ; 5/8
2892      else if (CompKey = "Num_7")
2893         CompUnicodeChar(0x215E)       ; 7/8
2894      else
2895         send {Numpad8}
2896      if (PriorDeadKey = "comp")
2897         CompKey := "Num_8"
2898      else
2899         CompKey := ""
2900   }
2901   else if Ebene = 3
2902   {
2903      SendUnicodeChar(0x2191)     ; uparrow
2904      CompKey := ""
2905   }
2906   else if ( (Ebene = 4) or (Ebene = 5) )
2907   {
2908      SendUnicodeChar(0x2229)    ; intersection
2909      CompKey := ""
2910   }
2911   PriorDeadKey := ""
2912return
2913
2914neo_NumpadPgUp:
2915   EbeneAktualisieren()
2916   if Ebene = 1
2917   {
2918      send {NumpadPgUp}
2919      CompKey := ""
2920   }
2921   else if Ebene = 2
2922   {
2923      send {Numpad9}
2924      if (PriorDeadKey = "comp")
2925         CompKey := "Num_9"
2926      else
2927         CompKey := ""
2928   }
2929   else if ( (Ebene = 4) or (Ebene = 5) )
2930   {
2931
2932      SendUnicodeChar(0x226B)  ; gg
2933      CompKey := ""
2934   }
2935   PriorDeadKey := ""
2936return
2937
2938neo_NumpadLeft:
2939   EbeneAktualisieren()
2940   if Ebene = 1
2941   {
2942      send {NumpadLeft}
2943      CompKey := ""
2944   }
2945   else if Ebene = 2
2946   {
2947      if (CompKey = "Num_1")
2948         CompUnicodeChar(0x00BC)       ; 1/4
2949      else if (CompKey = "Num_3")
2950         CompUnicodeChar(0x00BE)       ; 3/4
2951      else
2952         send {Numpad4}
2953      if (PriorDeadKey = "comp")
2954         CompKey := "Num_4"
2955      else
2956         CompKey := ""
2957   }
2958   else if Ebene = 3
2959   {
2960      SendUnicodeChar(0x2190)     ; leftarrow
2961      CompKey := ""
2962   }
2963   else if ( (Ebene = 4) or (Ebene = 5) )
2964   {
2965      SendUnicodeChar(0x2282)  ; subset of
2966      CompKey := ""
2967   }
2968   PriorDeadKey := ""
2969return
2970
2971neo_NumpadClear:
2972   EbeneAktualisieren()
2973   if Ebene = 1
2974   {
2975      send {NumpadClear}
2976      CompKey := ""
2977   }
2978   else if Ebene = 2
2979   {
2980      if (CompKey = "Num_1")
2981         CompUnicodeChar(0x2155)       ; 1/5
2982      else if (CompKey = "Num_2")
2983         CompUnicodeChar(0x2156)       ; 2/5
2984      else if (CompKey = "Num_3")
2985         CompUnicodeChar(0x2157)       ; 3/5
2986      else if (CompKey = "Num_4")
2987         CompUnicodeChar(0x2158)       ; 4/5
2988      else
2989         send {Numpad5}
2990      if (PriorDeadKey = "comp")
2991         CompKey := "Num_5"
2992      else
2993         CompKey := ""
2994   }
2995   else if Ebene = 3
2996   {
2997      send �
2998      CompKey := ""
2999   }
3000   else if ( (Ebene = 4) or (Ebene = 5) )
3001   {
3002      SendUnicodeChar(0x220A) ; small element of
3003      CompKey := ""
3004   }
3005   PriorDeadKey := ""
3006return
3007
3008neo_NumpadRight:
3009   EbeneAktualisieren()
3010   if Ebene = 1
3011   {
3012      send {NumpadRight}
3013      CompKey := ""
3014   }
3015   else if Ebene = 2
3016   {
3017      if (CompKey = "Num_1")
3018         CompUnicodeChar(0x2159)       ; 1/6
3019      else if (CompKey = "Num_5")
3020         CompUnicodeChar(0x215A)       ; 5/6
3021      else
3022         send {Numpad6}
3023      if (PriorDeadKey = "comp")
3024         CompKey := "Num_6"
3025      else
3026         CompKey := ""
3027   }
3028   else if Ebene = 3
3029   {
3030      SendUnicodeChar(0x2192)     ; rightarrow
3031      CompKey := ""
3032   }
3033   else if ( (Ebene = 4) or (Ebene = 5) )
3034   {
3035      SendUnicodeChar(0x2283) ; superset of
3036      CompKey := ""
3037   }
3038   PriorDeadKey := ""
3039return
3040
3041neo_NumpadEnd:
3042   EbeneAktualisieren()
3043   if Ebene = 1
3044   {
3045      send {NumpadEnd}
3046      CompKey := ""
3047   }
3048   else if Ebene = 2
3049   {
3050      send {Numpad1}
3051      if (PriorDeadKey = "comp")
3052         CompKey := "Num_1"
3053      else
3054         CompKey := ""
3055   }
3056   else if Ebene = 3
3057   {
3058      SendUnicodeChar(0x21CB) ; LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON
3059      CompKey := ""
3060   }
3061   else if ( (Ebene = 4) or (Ebene = 5) )
3062   {
3063      SendUnicodeChar(0x2264)   ; leq
3064      CompKey := ""
3065   }
3066   PriorDeadKey := ""
3067return
3068
3069neo_NumpadDown:
3070   EbeneAktualisieren()
3071   if Ebene = 1
3072   {
3073      send {NumpadDown}
3074      CompKey := ""
3075   }
3076   else if Ebene = 2
3077   {
3078      if (CompKey = "Num_1")
3079         CompUnicodeChar(0x00BD)       ; 1/2
3080      else
3081         send {Numpad2}
3082      if (PriorDeadKey = "comp")
3083         CompKey := "Num_2"
3084      else
3085         CompKey := ""
3086   }
3087   else if Ebene = 3
3088   {
3089      SendUnicodeChar(0x2193)     ; downarrow
3090      CompKey := ""
3091   }
3092   else if ( (Ebene = 4) or (Ebene = 5) )
3093   {
3094      SendUnicodeChar(0x222A)  ; vereinigt
3095      CompKey := ""
3096   }
3097   PriorDeadKey := ""
3098return
3099
3100neo_NumpadPgDn:
3101   EbeneAktualisieren()
3102   if Ebene = 1
3103   {
3104      send {NumpadPgDn}
3105      CompKey := ""
3106   }
3107   else if Ebene = 2
3108   {
3109      if (CompKey = "Num_1")
3110         CompUnicodeChar(0x2153)       ; 1/3
3111      else if (CompKey = "Num_2")
3112         CompUnicodeChar(0x2154)       ; 2/3
3113      else
3114         send {Numpad3}
3115      if (PriorDeadKey = "comp")
3116         CompKey := "Num_3"
3117      else
3118         CompKey := ""
3119   }
3120   else if Ebene = 3
3121   {
3122      SendUnicodeChar(0x21CC) ; RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON   
3123      CompKey := ""
3124   }
3125   else if ( (Ebene = 4) or (Ebene = 5) )
3126   {
3127      SendUnicodeChar(0x2265)  ; geq
3128      CompKey := ""
3129   }
3130   PriorDeadKey := ""
3131return
3132
3133neo_NumpadIns:
3134   EbeneAktualisieren()
3135   if Ebene = 1
3136   {
3137      send {NumpadIns}
3138      CompKey := ""
3139   }
3140   else if Ebene = 2
3141   {
3142      send {Numpad0}
3143      if (PriorDeadKey = "comp")
3144         CompKey := "Num_0"
3145      else
3146         CompKey := ""
3147   }
3148   else if Ebene = 3
3149   {
3150      send `%
3151      CompKey := ""
3152   }
3153   else if ( (Ebene = 4) or (Ebene = 5) )
3154   {
3155      send �
3156      CompKey := ""
3157   }
3158   PriorDeadKey := ""
3159return
3160
3161neo_NumpadDel:
3162   EbeneAktualisieren()
3163   if Ebene = 1
3164   {
3165      send {NumpadDel}
3166      CompKey := ""
3167   }
3168   else if Ebene = 2
3169   {
3170      send {NumpadDot}
3171      CompKey := ""
3172   }
3173   else if Ebene = 3
3174   {
3175      send .
3176      CompKey := ""
3177   }
3178   else if ( (Ebene = 4) or (Ebene = 5) )
3179   {
3180      send `,
3181      CompKey := ""
3182   }
3183   PriorDeadKey := ""
3184return
3185
3186
3187/*
3188   ------------------------------------------------------
3189   Sondertasten
3190   ------------------------------------------------------
3191*/
3192*space::
3193   if (einHandNeo)
3194    spacepressed := 1
3195   else
3196    goto neo_SpaceUp
3197return
3198
3199*space up::
3200   if (einHandNeo)
3201   {
3202     if (keypressed)
3203     {
3204       keypressed := 0
3205       spacepressed := 0   
3206     }
3207     else
3208     {
3209        goto neo_SpaceUp
3210     }
3211   }
3212   else
3213     { } ;do nothing
3214return
3215
3216neo_SpaceUp:
3217     EbeneAktualisieren()
3218     if Ebene = 1
3219     {
3220        if (CompKey = "r_small_1")
3221           Comp3UnicodeChar(0x2170)          ; r�misch i
3222        else if (CompKey = "r_capital_1")
3223           Comp3UnicodeChar(0x2160)          ; r�misch I
3224        else
3225           Send {blind}{Space}
3226     }
3227     if  Ebene  =  2
3228        Send  {blind}{Space}
3229     if Ebene = 3
3230        Send {blind}{Space}
3231     if Ebene = 4
3232     {
3233        if (PriorDeadKey = "c1")            ; circumflex
3234           BSSendUnicodeChar(0x2070)
3235        else if (PriorDeadKey = "c4")       ; toter -
3236           BSSendUnicodeChar(0x2080)
3237        else
3238           Send 0
3239     }
3240     else if Ebene = 5
3241        SendUnicodeChar(0x00A0)   ; gesch�tztes Leerzeichen
3242     else if Ebene = 6
3243        SendUnicodeChar(0x202F) ; schmales Leerzeichen
3244     PriorDeadKey := ""   CompKey := ""
3245  spacepressed := 0     
3246  keypressed := 0       
3247return
3248
3249/*
3250*Space::
3251   EbeneAktualisieren()
3252   if Ebene = 1
3253   {
3254      if (CompKey = "r_small_1")
3255         Comp3UnicodeChar(0x2170)          ; r�misch i
3256      else if (CompKey = "r_capital_1")
3257         Comp3UnicodeChar(0x2160)          ; r�misch I
3258      else
3259         Send {blind}{Space}
3260   }
3261   if  Ebene  =  2
3262      Send  {blind}{Space}
3263   if Ebene = 3
3264      Send {blind}{Space}
3265   if Ebene = 4
3266   {
3267      if (PriorDeadKey = "c1")            ; circumflex
3268         BSSendUnicodeChar(0x2070)
3269      else if (PriorDeadKey = "c4")       ; toter -
3270         BSSendUnicodeChar(0x2080)
3271      else
3272         Send 0
3273   }
3274   else if Ebene = 5
3275      SendUnicodeChar(0x00A0)   ; gesch�tztes Leerzeichen
3276   else if Ebene = 6
3277      SendUnicodeChar(0x202F) ; schmales Leerzeichen
3278   PriorDeadKey := ""   CompKey := ""
3279return
3280*/
3281/*
3282   Folgende Tasten sind nur aufgef�hrt, um PriorDeadKey zu leeren.
3283   Irgendwie sieht das noch nicht sch�n aus. Vielleicht l�sst sich dieses
3284   Problem irgendwie eleganter l�sen...
3285   
3286   Nachtrag:
3287   Weil es mit Alt+Tab Probleme gab, wird hier jetzt erstmal rumgeflickschustert,
3288   bis eine allgemeinere L�sung gefunden wurde.
3289*/
3290
3291*Enter::
3292   if ( not(lernModus) or (lernModus_std_Return) )
3293   {
3294     sendinput {Blind}{Enter}
3295     PriorDeadKey := ""   CompKey := ""
3296   }
3297return
3298
3299*Backspace::
3300   if ( not(lernModus) or (lernModus_std_Backspace) )
3301   {
3302     sendinput {Blind}{Backspace}
3303     PriorDeadKey := ""   CompKey := ""
3304   }
3305return
3306
3307*Del::
3308   if ( not(lernModus) or (lernModus_std_Entf) )
3309   {
3310     sendinput {Blind}{Del}
3311   }
3312return
3313
3314*Ins::
3315   if ( not(lernModus) or (lernModus_std_Einf) )
3316   {
3317     sendinput {Blind}{Ins}
3318   }
3319return
3320
3321
3322
3323
3324
3325/*
3326Auf Mod3+Tab liegt Compose. AltTab funktioniert, jedoch ShiftAltTab nicht.
3327Wenigstens kommt es jetzt nicht mehr zu komischen Ergebnissen, wenn man Tab
3328nach einem DeadKey dr�ckt...
3329*/
3330
3331neo_tab:
3332   if ( GetKeyState("SC038","P") )
3333   {
3334    Send,{Blind}{AltDown}{tab}
3335   
3336/*
3337     if (isShiftPressed())
3338     {
3339      Send,{ShiftDown}{AltDown}{tab}
3340     }
3341     else
3342     {       
3343;       msgbox alt+tab
3344        Send,{AltDown}{tab}
3345      ; SC038 & Tab::AltTab            ; http://de.autohotkey.com/docs/Hotkeys.htm#AltTabDetail
3346     }
3347*/
3348   }
3349   else if (IsMod3Pressed()) ;#
3350   {
3351      #Include *i %a_scriptdir%\ComposeLaunch.ahk
3352      #Include *i %a_scriptdir%\Source\ComposeLaunch.ahk
3353      PriorDeadKey := "comp"
3354      CompKey := ""
3355   }
3356   else
3357   {
3358      send {blind}{Tab}
3359      PriorDeadKey := ""
3360      CompKey := ""
3361   }
3362return
3363
3364*SC038 up::
3365   PriorDeadKey := ""   CompKey := ""
3366   send {blind}{AltUp}
3367return
3368   
3369*SC038 down::                    ; LAlt, damit AltTab funktioniert
3370    Send,{Blind}{AltDown}
3371   PriorDeadKey := ""   CompKey := ""
3372return
3373
3374*Home::
3375   if ( not(lernModus) or (lernModus_std_Pos1) )
3376   {
3377     sendinput {Blind}{Home}
3378     PriorDeadKey := ""   CompKey := ""
3379   }
3380return
3381
3382*End::
3383   if ( not(lernModus) or (lernModus_std_Ende) )
3384   {
3385     sendinput {Blind}{End}
3386     PriorDeadKey := ""   CompKey := ""
3387   }
3388return
3389
3390*PgUp::
3391   if ( not(lernModus) or (lernModus_std_PgUp) )
3392   {
3393     sendinput {Blind}{PgUp}
3394     PriorDeadKey := ""   CompKey := ""
3395   }
3396return
3397
3398*PgDn::
3399   if ( not(lernModus) or (lernModus_std_PgDn) )
3400   {
3401     sendinput {Blind}{PgDn}
3402     PriorDeadKey := ""   CompKey := ""
3403   }
3404return
3405
3406*Up::
3407   if ( not(lernModus) or (lernModus_std_Hoch) )
3408   {
3409     sendinput {Blind}{Up}
3410     PriorDeadKey := ""   CompKey := ""
3411   }
3412return
3413
3414*Down::
3415   if ( not(lernModus) or (lernModus_std_Runter) )
3416   {
3417     sendinput {Blind}{Down}
3418     PriorDeadKey := ""   CompKey := ""
3419   }
3420return
3421
3422*Left::
3423   if ( not(lernModus) or (lernModus_std_Links) )
3424   {
3425     sendinput {Blind}{Left}
3426     PriorDeadKey := ""   CompKey := ""
3427   }
3428return
3429
3430*Right::
3431   if ( not(lernModus) or (lernModus_std_Rechts) )
3432   {
3433     sendinput {Blind}{Right}
3434     PriorDeadKey := ""   CompKey := ""
3435   }
3436return
3437
3438
3439
3440
Note: See TracBrowser for help on using the browser.