== NEO 2.0 (beta) AutoHotkey‐Treiber ==


=== Autoren ===
Alle E‐Mail‐Adressen sind »kodiert«, um die Erfassung durch E‐Mail‐Spider (und darauf folgenden Spam) zu vermeiden:

Stefan Mayer <stm (at) neo‐layout. o r g>
Nora Geißler <nora_geissler (at) yahoo. d e>
Matthias Berg <neo (at) matthias‐berg. e u>
Martin Roppelt <m.p.roppelt (at) web. d e>
Dennis Heidsiek <heidsiekb (at) aol. c o m>
Matthias Wächter <matthias (at) waechter.wiz. a t>


=== To Do ===
‐ Ausgiebig testen … (besonders Vollständigkeit bei Deadkeys).
  • Griechische Buchstaben ergänzen…
‐ Bessere Lösung für das Leeren von PriorDeadKey finden, damit die Sondertasten nicht mehr abgefangen werden müssen.
‐ Compose vollständig implementieren: Kombination mit Deadkeys.
  • ♫Tab ermöglichen.
- Bildschirmtastatur in der All.ahk auch ohne vorherigen Aufruf der neo20.exe verfügbar machen.

=== Ideen und Vorschläge ===
‐ Modi für vertauschte Ziffern in der Zahlenreihe und auf der 4. Ebene.

=== Änderungshistorie ===

Revision 1057 (von Martin Roppelt)
- Bildschirmtastatur aktualisiert.
Revision 1046 (von Martin Roppelt)
- Anpassung an Referenz.
Revision 1039 (von Dennis Heidsiek)
- Lang-ſ-Modus wiederhergestellt (neo_s war defekt).
Revision 1016 (von Martin Roppelt)
- Tote Tasten fertig angepasst.
Revision 993 (von Martin Roppelt)
- Tote Tasten aktualisiert.
Revision 953 (von Martin Roppelt)
- 6-Ebenen-Ziffernblock eingepflegt.
Revision 929 (von Martin Roppelt)
- Compose.ahk aktualisiert.
- mod4+y sendet jetzt »KP+.« statt wie bisher ein einfaches ».«.
- mod4+return sendet jetzt »KP+return«  (aka »enter«) statt wie bisher ein einfaches »return«.
Revision 899 (von Dennis Heidsiek)
- Build-Skript überarbeitet, sodass die Pfade zentral geändert werden können.
Revision 897 (von Dennis Heidsiek)
- Skript kompiliert wieder (alle .ahk-Dateien enden jetzt mit mindestens zwei Leezeilen)
- Ein Überbleibsel aus dem Build-Skript entfernt (bezog sich noch auf den Compose-Playground).
Revision 888 (von Martin Roppelt)
- Cokos mit 4 Tasten möglich.
- horizontalen Ellipsen-CompKey wiederhergestellt.
Revision 886 (von Stefan Mayer)
‐ Ellipse (horizontal und vertikal) wiederhergestellt.
Revision 873 (von Martin Roppelt)
‐ Tabulatoren entfernt.
Revision 872 (von Martin Roppelt)
‐ Alle Cokos automatisch eingefügt.
‐ Compose-Playground gelöscht.
‐ Anpassung an die Referenz.
Revision 864 (von Martin Roppelt)
‐ 253/2822 Cokos ≙ 9%.
Revision 849 (von Martin Roppelt)
‐ Ticket 31: Shift+(Strg und/oder Alt)+Ziffer sendet nicht mehr (Strg und/oder Alt)+(Ebene 2 der Ziffer).
Revision 846 (von Martin Roppelt)
‐ 233/1802 Cokos.
Revision 845 (von Martin Roppelt)
‐ Alle Cokos in die Compose.ahk migriert (Stand: 200/1805 Cokos).
Revision 842 (von Martin Roppelt)
‐ Ebenen 5+6 der Taste ›I‹ wiederhergestellt (Klammern vergessen).
Revision 841 (von Martin Roppelt)
‐ Ebenen 2‐6 der 1er-Taste wiederhergestellt (Klammern vergessen).
Revision 840 (von Martin Roppelt)
‐ Ein paar Bugs ausgebessert.
‐ Blinde Compose als Standard (unschöne Ausgabe bei Cokos mit drei Tasten aus der Compose.ahk).
Revision 838 (von Martin Roppelt)
‐ Compose.ahk als zentralen Ort für Cokos geschaffen.
‐ Weitere Vorbereitungen zur Aufnahme weiterer Cokos.
‐ ›©‹ jetzt auch wieder mit großem ›o‹.
Revision 833 (von Martin Roppelt)
‐ Cokos: ›‼‹, ›⁇‹ über ♫?2/♫!2.
‐ Blinde Compose jetzt auch bei SendUnicodeChar().
‐ SendUnicodeChar belegt CompKey mit dem Argument.
‐ Nicht‐blinde Compose wiederhergestellt.
‐ Vorbereitungen zur Aufnahme weiterer Cokos.
‐ Begrenzung der (blinden) Compose auf 2 Zeichen, wenn keine Übereinstimmung mit Coko vorliegt.
‐ »ẗ« zu den Tokos hinzugefügt.
‐ "DeadKey :=" in die dead*‐Methoden verschoben.
‐ OutputChar in OutputChar12 umbenannt, OutputChar hat nur noch ein Argument.
‐ Code zusammengefasst, Formatierungen angepasst.
Revisionen 827‐830 (von Martin Roppelt)
‐ 2 Achtelnoten (Composesymbol) auf 3(4).
‐ CapsLock‐Bug Ⅱ.: CapsLock funktionierte nicht mehr, wenn eine Taste gedrückt wurde, auf die CapsLock nicht wirkt (Ziffernreihe/‐block, Akzente, Punkt, Komma), da die Zeile »NoCaps = 0« in der isShiftPressed() nie ausgeführt wird.
‐ CapsLock‐Licht wird jetzt beim (Neu‐)Laden des Treibers ausgeschaltet.
Revision 820 (von Martin Roppelt)
‐ Weitere Cokos ergänzt: ›Ə‹, ›ǆ‹, ›ǅ‹, ›Ǆ‹, glyphengleiche griechische Majuskeln.
‐ Echter Bindestich durch Shift+Mod3+Zirkumflex, Leertaste.
Revision 815 (von Martin Roppelt)
‐ AHK um Verbindungszeichen bei doppelten toten Tasten ergänzt.
‐ Bei CapsLock, Mod3 und Shift wird jetzt ›+‹ statt ›*‹ gesendet.
Revision 812 (von Martin Roppelt)
‐ Überflüssigen Code entfernt.
‐ Code gestrafft.
Revision 810 (von Martin Roppelt)
‐ DeadCompose implementiert, uncomp…‐Methoden gelöscht, »return 0«‐Zeilen entfernt (wird sowieso gemacht).
‐ checkComp ausgebessert: »global« hatte gefehlt.
  • Damit wurde ›ﬅ‹ ermöglicht (war defekt).
‐ ahkTreiberKombi rausgeschmissen (war für den gelöschten msklc‐Treiber gedacht).
‐ Massenweise Formatierungen normalisiert.
‐ Zusätzliche Compose‐Aktivierung über Mod3+Mod3.
‐ Einhand‐ und Lernmodus wiederhergestellt.
Revision 806 (von Dennis Heidsiek)
‐ Die automatisch erzeugte Datei neo20.ahk wird wieder um die SVN‐Keywords (Date, Author, Revision) ergänzt.
Revision 804 (von Martin Roppelt)
‐ Formatierung vereinfacht und vereinheitlicht.
‐ Compose‐Ligaturen implementiert: ›ﬂ‹, ›ﬄ‹(♫Fl), ›ﬁ‹, ›ﬃ‹(♫Fi), ›ﬀ‹, ›ﬆ‹, ›ﬅ‹.
Revision 789 (von Martin Roppelt)
‐ NumLock‐Bug ausgebessert (NumLock konnte nach dem Beenden von Neo nicht mehr aktiviert werden).
Revision 778 (von Martin Roppelt)
‐ CapsLock+Shift‐Fehler ausgebessert.
Revision 777 (von Martin Roppelt)
‐ Syntaxfehler ausgebessert.
Revision 776 (von Martin Roppelt)
‐ Modularisierung des AHK konsequent weitergeführt.
‐ Global‐Part.ahk, Keys‐Neo.ahk: ZeigeLockBoxen in ZeigeLockBox umbenannt.
‐ Keys‐Neo.ahk: Fehler ausgebessert, Quelltext neu ausgerichtet, Numpad an die Referenz angeglichen (Ebenen 2 und 4 vertauscht), Ebenen 7 und 8 ergänzt.
‐ Methods‐Layers.ahk: Mod3‐Lock abgeschafft, CapsLock neu geschrieben.
Revision 749 (von Dennis Heidsiek)
‐ »?« und »¿« funktionieren wieder (Klammer vergessen).
Revision 748 (von Dennis Heidsiek)
‐ Neue globale Variable »zeigeLockBoxen«: Soll mit MsgBoxen explizit auf das Ein‐ und Ausschalten des Mod{3,4}‐Locks hingewiesen werden?
Revision 746 (von Martin Roppelt)
‐ Zurücksetzen der Tastatur über M4+Esc.
‐ #[2] sendet nicht mehr »'«.
‐ Variablen Ebene7 und Ebene8 zum Abfragen eingeführt.
‐ s(12)[2s]‐Bug von Matthias Wächter behoben (= Lang‐ſ‐Tastatur repariert).
Revision 744 (von Stefan Mayer)
‐ Ebene4‐Ziffernblock: auf neo_d nun Komma (wie Referenz), »NumPadKomma« gibt es nicht.
Revision 743 (von Matthias Wächter)
‐ Ebene4‐Ziffernblock: NumPadAdd und NumPadSub korrigiert.
Revision 740 (von Matthias Wächter) – »Mega‐Patch«
‐ Straffung der Syntax bei der Abfrage der Ebenen und der Behandlung der toten Tasten und der Compose.
‐ Umstellung auf Virtual‐Key‐Scancodes; umgeht den AHK‐Bug, dass Scancodemarken durch SendUnicodeChar angesprungen werden.
‐ Die Scancodes für das Numpad (jeweils für ein‐ und ausgeschaltetes NumLock) haben jetzt paarweise Sprungmarken, um die Tastenbehandlung untereinander konsistent zu halten.
‐ Wiederherstellung der Modifier‐Locks.
‐ Reparatur der Bildschirmtastatur in der All.ahk.
‐ Modifier werder seltener und nur noch innerhalb der Sprungmarken abgefragt.
‐ Blinde tote Tasten auf M4+F9 (Toggle).
‐ Blinde Compose auf M4+F10 (Toggle) (noch nicht implementiert).
Revision 728 (von Dennis Heidsiek):
‐ Ist die Datei »%APPDATA%\NEO2\NEO2.ini« vorhanden, werden dort eventuell vorhandene Werte für die Globalen Schalter beim Start übernommen.
‐ »LangSTastaturStandardmäßigEingeschaltet.ahk« wird nicht mehr unterstützt, weil sonst immer neu kompiliert werden muss.
Revision 707 (von Dennis Heidsiek):
‐ Die Resourcen‐Dateien (PNGs, ICOs) werden nun nach »%TEMP%\NEO2\« extrahiert und nicht mehr in das Verzeichnis, in dem sich die EXE befindet.
‐ Die doppelten französischen Anführungszeichen werden nun ebenfalls über SendUnicodeChar gesendet.
Revision 694 (von Martin Roppelt):
‐ Lang‐ſ‐Tastatur auf M4+F11.
‐ Entwickler können durch das Erstellen einer Datei »LangSTastaturStandardmäßigEingeschaltet.ahk« mit dem Inhalt »LangSTastatur := 1« diese standardmäßig aktivieren.
‐ Interne Darstellung der Ebenen (4 und 5 bei den toton Tasten wieder richtig getauscht.
Revision 687 (von Dennis Heidsiek):
‐ Die SendUnicodeChar‐Methode um den GDK‐Workarround von Matthias Wächter ergänzt.
‐ (An/Aus) Icons an das Favicon der neuen Homepage angepasst.
Revision 645 (von Martin Roppelt):
‐ Ellipse (…) zusätzlich auf M3+x.
‐ Lang‐ſ‐Tastatur probeweise auf M4+Esc.
Revision 640 (von Dennis Heidsiek):
‐ Der untote Zirkumflex (^) auf Ebene 3 funktioniert jetzt auch in Java‐Programmen.
Revision 639 (von Martin Roppelt):
‐ Lang‐ſ‐Tastatur kann nicht mehr durch einen Hotkey aktiviert werden.
Revision 629 (von Martin Roppelt):
‐ Spitze Klammern (bra und ket) auf M5+8/9.
Revision 624 (von Martin Roppelt):
‐ Lang‐ſ‐Tastatur (ein‐ und auszuschalten durch Mod4+ß) hinzugefügt: »s« wird zu »ſ«, »ß« wird zu »s« und »ſ« wird zu »ß«.  
Revision 616 (von Dennis Heidsiek):
‐ Der nicht funktionierende Mod5‐Lock‐Fix wurde wieder entfernt, da er sogar neue Fehler produzierte.
Revision 615 (von Dennis Heidsiek):
‐ Erfolgloser Versuch, den Mod4‐Lock wiederherzustellen (durch eine Tilde vor den Scancodes der Bildschirmtastatur).
‐ Rechtschreibfehler korrigiert.
‐ Zwei AHK‐Links eingefügt.
Revision 609 (von Dennis Heidsiek):
‐ Vorläufiger Abschluss der AHK‐Modularisierung.
‐ Bessere Testmöglichkeit »All.ahk« für AHK‐Entwickler hinzugefügt, bei der sich die Zeilenangaben in Fehlermeldungen auf die tatsächlichen Module und nicht auf das große »vereinigte« Skript beziehen.
Revision 608 (von Martin Roppelt):
‐ Rechtschreibfehler korrigiert und Dateinamen aktualisiert und sortiert.
Revision 590 (von Dennis Heidsiek):
‐ Erste technische Vorarbeiten zur logischen Modularisierung des viel zu lange gewordenen AHK‐Quellcodes.
‐ Neue Batch‐Datei Build‐Update.bat zur einfachen Aktualisierung der EXE‐Datei.
Revision 583 (von Dennis Heidsiek):
‐ Kleinere Korrekturen ((5)(3), (5)(5) und (9)(3) stimmen wieder mit der Referenz überein).
Revision 580 (von Matthias Berg):
‐ Bildschirmtastatur jetzt mit Mod4+F* statt Strg+F*, dies deaktiviert jedoch leider den Mod4‐Lock.
Revision 570 (von Matthias Berg):
‐ Hotkeys für einHandNeo und lernModus durch entsprechende ScanCodes ersetzt.
Revision 568 (von Matthias Berg):
‐ Sonderzeichen, Umlaute, z und y durch ScanCodes ersetzt.
  • jetzt wird auch bei eingestelltem US Layout Neo verwendet (z.B. für Chinesische InputMethodEditors).
  • rechter Mod3 geht noch nicht bei US‐Layout (weder ScanCode noch »\«).
Revision 567 (von Dennis Heidsiek):
‐ Aktivierter Mod4‐Lock wird jetzt über die Rollen‐LED des Keybord angezeigt (analog zu CapsLock), die Num‐LED behält ihr bisheriges Verhalten.
‐ Neue Option im Skript: UseMod4Light.
Revision 561 (von Matthias Berg):
‐ M4+Tab verhält sich jetzt wie das andere Tab dank »goto neo_tab«.
Revision 560 (von Dennis Heidsiek):
‐ Neue Option im Skript: bildschirmTastaturEinbinden bindet die PNG‐Bilder der Bildschirmtastur mit in die exe‐Datei ein, so dass sich der Benutzer nur eine Datei herunterladen muss.
Revision 559 (von Matthias Berg):
‐ Shift+Alt+Tab Problem gelöst (muss noch mehr auf Nebeneffekte getestet werden).
Revision 558 (von Matthias Berg):
‐ Icon‐Bug behoben
  • Hotkeys dürfen nicht vor der folgenden Zeile stehen: »menu, tray, icon, neo.ico,,1«
‐ lernModus‐Konfigurations‐Bug behoben: or statt and(not).
‐ Ein paar leere Else‐Fälle eingebaut (um die Verständlichkeit zu erhöhen und mögliche Compilerprobleme zu vermeiden).
Revision 556 (von Matthias Berg):
‐ lernModus (an/aus mit Strg+Komma)
  • im Skript konfigurierbar.
  • Schaltet z.B. Qwertz Tasten aus, die es auf der 4. Ebene gibt (Return, Backspace, …).
  • Kann auch Backspace und/oder Entfernen der 4. Ebene ausschalten (gut zum Lernen, richtig zu schreiben).
‐ Bug aufgetaucht: Icons werden nicht mehr angezeigt.
Revision 544 (von Stefan Mayer):
‐ »,.:;« auf dem Mod4‐Ziffernblock an die aktuelle Referenz angepasst.
‐ Versionen von rho, theta, kappa und phi an die aktuelle Referenz angepasst.
Revision 542 (von Matthias Berg):
‐ Bei EinHandNeo ist jetzt Space+y auch Mod4.
‐ AltGr‐Bug  hoffentlich wieder behoben. Diesmal mit extra altGrPressed Variable.
‐ nurEbenenFuenfUndSechs umbenannt in ahkTreiberKombi und auf Ebene 4 statt 5 und 6 geändert.
Revision 540 (von Matthias Berg):
‐ Stark überarbeitet um Wartbarkeit zu erhöhen und Redundanz zu verringern.
‐ nurEbenenFuenfUndSechs sollte nun auch auf Neo Treiber statt Qwertz laufen.
  • aber es muss noch jemand testen.
  • Problem: was kann man abfangen, wenn eine tote Taste gedrückt wird.
‐ einHandNeo:
  • An‐/Ausschalten mit Strg+Punkt.
  • Buchstaben der rechten Hand werden mit Space zur linken Hand.
  • Nebeneffekt: es gibt beim Festhalten von Space keine wiederholten Leerzeichen mehr.
Revision 532 (von Matthias Berg):
‐ BildschirmTastatur 
  • aktiviert mit Strg+F1 bis 7, schaltet Keyboard ein oder aus.
  • Strg+F7 zeigt die zuletzt angezeigte Ebene an (und wieder aus).
  • Strg+F8 schaltet AlwaysOnTop um.
Revision 529 (von Stefan Mayer):
‐ Icon wird automatisch geladen, falls .ico‐Dateien im selbem Ordner.
‐ In der .exe sind die .ico mitgespeichert und werden automatisch geladen.
Revision 528 (von Matthias Berg):
‐ Neo‐Icon ersetzt das bisherige Autohotkey‐Standard‐Icon im Tray‐Bereich.
‐ Neo‐Prozess jetzt automatisch auf hoher Priorität (siehe globale Schalter).
‐ Mod3‐Lock (nur wenn rechtes Mod3 zuerst gedrückt wird, andere Lösung führte zum Caps‐Bug).
‐ Mod4‐Lock (nur wenn das linke Mod4 zuerst gedrückt wird, andere Lösung führte zum AltGr‐Bug).
‐ Ein paar falsche Zeichen korrigiert.
Revision 527 (von Matthias Berg):
‐ AltGr‐Problem hoffentlich behoben.
‐ Umschalt+Mod4‐Bug behoben.
Revision 526 (von Matthias Berg):
‐ Ebenen 1 bis 4 ausschalten per Umschalter siehe erste Codezeile nurEbenenFuenfUndSechs = 0.
‐ Mod4‐Lock durch Mod4+Mod4.
‐ EbenenAktualisierung neu geschrieben.
‐ Ebene 6 über Mod3+Mod4.
‐ Ebenen (besonders Matheebene) an Referenz angepasst (allerdings kaum um Ebenen 1&2 gekümmert, besonders Compose könnte noch überholt werden).
Revision 525 (von Matthias Berg):
‐ Capslock bei Zahlen und Sonderzeichen berücksichtigt.
Revision 524 (von Matthias Berg):
‐ umgekehrtes ^ für o, a, ü,i  sowie für die großen vokale (3. Ton chinesisch).
  • damit wird jetzt PinYin vollständig unterstützt: caron, macron, akut, grave auf uiaeoü.
‐ Sonderzeichen senden wieder blind ‐> Shortcuts funktionieren, Capslock ist leider Shiftlock.
Revision 523 (von Matthias Berg):
‐ CapsLock geht jetzt auch bei allen Zeichen (»send Zeichen« statt »send {blind} Zeichen«).
‐ vertikale Ellipse (⋮) eingebaut.
‐ Umschalt+Umschalt für Capslock statt Mod3+Mod3.
‐ bei Suspend wird jetzt wirklich togglesuspend aufgerufen (auch beim Aktivieren per shift+pause).
Revsion 490 (von Stefan Mayer): 
‐ SUBSCRIPT von 0 bis 9 sowie (auf Ziffernblock) + und ‐
  • auch bei Ziffernblock auf der 5. Ebene
‐ Kein Parsen über die Zwischenablage mehr.
‐ Vista‐kompatibel.
‐ Compose‐Taste
  • Brüche (auf Zahlenreihe und Hardware‐Ziffernblock).
  • römische Zahlen.
  • Ligaturen und Copyright.
