# AHK-Treiber (NeoVars) !!! warning "Todo" Nur Kopie der alten Texte, bitte sichten/aktualisieren. Dieser Treiber ist in der Autohotkey-Skriptsprache geschrieben und eignet sich vor allen Dingen zum Ausprobieren bzw. für die kurzfristige Nutzung an fremden Rechnern, aber auch zur dauerhaften Installation ohne Administratorrechte. Zum Starten dieses Treibers reicht ein einfacher Doppelklick auf eine ».exe«-Datei aus. ## Installation ## Einfach die Datei [neo20.exe](/Downloads/neo20.exe) herunterladen und irgendwo speichern (bspw. auf dem Desktop oder in dem Order »Eigene Dateien«). Nach einem einfachen Doppelklick auf diese .exe-Datei steht Neo in voller Funktionalität zur Verfügung! Das alles geht ohne Administrator-Rechte und ist auf jedem Rechner sofort ausführbar. ## Rückkehr zum alten Tastaturlayout ## Um kurzzeitig zwischen Qwertz und Neo hin- und herzuwechseln, kann mit der Tastenkombination `Shift+Pause` das Skript pausiert bzw. wieder gestartet werden. Gleiches erreicht man auch über einen Doppelklick auf das rote/weiße Neo-Icon im Traybereich (bei der Uhr). ## Bildschirmtastatur ## Mit der Tastenkominationen `M3+F1` (M3, auch Mod3, ist beim normalen Tastaturlayout `CapsLock` oder die `#` Taste links neben der Entertaste) erhält man eine graphische Zusammenfassung der Neo-Tastatur. Sie erleichert das Finden eines noch nicht so vertrauten Zeichens und hilft zudem beim Erlernen des Blindschreibens, da der Blick auf den Bildschirm und nicht auf die Tastatur gerichtet ist. Werden während der Anzeige der Tastatur verschiedene Modifier (`Shift`, `M3`, `M4`) oder Kombinationen gedrückt, so springt die Abbildung automatisch in die entsprechende Ebene. Die Bildschirmtastatur wird direkt über der Taskleiste positioniert und inaktiv gestartet, d.h. der Eingabefokus verbleibt bei der laufenden Applikation. Sie kann durch erneutes Drücken von M3+F1 beendet werden; zudem überlagert sie standardmäßig alle alle anderen Fenster, was mit `M3+F8` ein- und ausgeschaltet werden kann. ## Spezielle Modi ## Der AHK unterstützt mehrere spezielle Modi, die zur Laufzeit ein- und ausgeschaltet werden können und untereinander auch kombiniert werden können: | Tastenkomination | Modus | | :----------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `M3+Esc` | **Zurücksetzen der Tastatur**: Alle Modi-Einstellungen werden wieder rückgängig gemacht und die Tastatur wird wieder in den Normalzustand versetzt. | | `M3+F6` | **QWERTZ-Belgungsvariante**: Die 1. und 2. Ebene wird auf das QWERTZ-Layout eingestellt. | | `M3+F9` | **Lern-Modus**: Es werden mehrere Tasten deaktiviert, um den Nutzer beim Erlernen der von Neo angeboteten besseren Alternativen zu unterstützen. | | `M3+F10` | **Ein-Hand-Modus**: Ermöglicht das bequeme Tippen ausschließlich mit der rechten Hand: Die Buchstaben unter der rechten Hand werden bei gedrückter Leertaste spiegelbildlich zu den Buchstaben unter der linken Hand. Ein Nebeneffekt ist, dass es somit beim Festhalten von Space keine wiederholten Leerzeichen mehr gibt. | | `M3+F11` | **Lang-s-Tastatur**: Der [Fraktursatz](../#fraktursatz) mit dem langen s (ſ) wird | | `M3+F12` | **Nordtast-Belegungsvariante**: Aktiviert die Nordtast-Belegung (zugunsten von [AdNW](../../Layouts/#adnw) aufgegeben). | ## Benutzerdefiniertes Layout ## Zusätzlich zu den vorgegebenen Layouts besteht mittlerweile die Möglichkeit, ein eigenes Layout zu definieren, ohne den Treiber selbst ändern zu müssen. Dazu wird ein globaler Schalter in der Konfigurationsdatei definiert (siehe nachfolgenden Abschnitt), der die 33 Standardzeichen des Hauptfelds enthält (a-z, ä, ö, ü, ß, Punkt, Komma und Bindestrich). Dabei entspricht das erste Zeichen der ß-Taste auf Qwertz, danach die drei Hauptreihen von links nach rechts (obere Reihe, Grundreihe, untere Reihe) ohne die Akzent- oder Modtasten. Hier ein Beispiel für Neo2: ``` [Global] customLayout="-xvlcwkhgfqßuiaeosnrtdyüöäpzbm,.j" ``` Ein weiteres Beispiel für [Bone](../../Layouts/#bone): ``` [Global] customLayout="-jduaxphlmwßctieobnrsgqfvüäöyz,.k" ``` Das Layout ist beim Starten des Treibers aktiv (statt Neo2) und kann auch zu den anderen Modi gewechselt werden. Leider ist es momentan nicht möglich, anschließend wieder zum selbstdefinierten Layout zurückzukehren. Dafür muss der Treiber kurz beendet und neu gestartet werden. ## Globale Schalter für Fortgeschrittene ## Zudem besteht die Möglichkeit, beim Starten des AHK-Treibers individuelle Anfangswerte für die globalen Schalter des Programms vorzugeben. Dies geschieht über die Konfigurationsdatei `Neo2.ini` (diese muss im gebräuchlichen INI-Format vorliegen, also insbesondere ANSI-kodiert sein). Eine `Neo2.ini`, die alle Werte auf die Standardwerte »ändert«, sähe etwa so aus: ```ini [Global] ; Im folgenden gilt (soweit nicht anders angegeben) stets Ja = 1, Nein = 0. ; Soll der Ein-Hand-Modus beim Programmstart bereits aktiviert sein? einHandNeo=0 ; Soll der Lern-Modus beim Programmstart bereits aktiviert sein? lernModus=0 ; Soll der Lang-s-Modus beim Programmstart bereits aktiviert sein? LangSTastatur=0 ; Soll CapsLock auch bei den Ziffern und Satzzeichen wirken? striktesMod2Lock=0 ; Soll beim Einschalten des Mod4-Locks eine Warnmeldung ausgegeben werden? zeigeLockBox=1 ; Soll das Aktivieren des Mod-4-Locks über das 3. Numpad-Light angezeigt werden? UseMod4Light=1 ; Sollen tote Tasten nicht am Bildschirm ausgegeben werden? DeadSilence=1 ; Sollen Cokos nicht am Bildschirm ausgegeben werden? DeadCompose=1 ; Die Cokos werden dynamisch aus einer lokalen Kopie des SVN erzeugt dynamischesCompose=0 ; Mit diesem Schalter ist es möglich, NeoVars direkt mit Nordtast oder ADNW zu starten ; 1 = Nordtast, 2 = ADNW isNordtast=0 ; Mit diesem Schalter ist es möglich, NeoVars direkt mit Qwertz zu starten isQwertz=0 ; NumLock ausschalten (nötig bei Notebooks und anderen Tastaturen mit integriertem Fn-Ziffernblock) NumLockOff=1 ; Ein benutzerdefiniertes Layout für den Start des Treibers festlegen customLayout="-xvlcwkhgfqßuiaeosnrtdyüöäpzbm,.j" ``` Diese Datei muss manuell (etwa mit Notepad) in dem richtigen Verzeichnis innerhalb der Anwendungsdaten des aktuellen Nutzers angelegt werden: `%APPDATA%\Neo2\Neo2.ini` (Die `%AppData%`-Umgebungsvariable wird automatisch aufgelöst. Unter Windows 7 und Vista ergibt dies etwa das Verzeichnis `C:\Users\%USERNAME%\AppData\Roaming\Neo2\Neo2.ini` unter deutschem Windows XP hingegen das Verzeichnis `C:\Dokumente und Einstellungen\%USERNAME%\Anwendungsdaten\Neo2\Neo2.ini` usw.) ## Individuelles Zusatz-Skript ## Sofern man NeoVars als AHK-Skript startet und nicht als vorcompiliertes .EXE, hat man die Möglichkeit, die Datei `Custom.ahk` im Neo2-Anwendungsdaten-Verzeichnis (siehe voriger Abschnitt) in den NeoVars-Start einzubinden. Über diesen Mechanismus kann man auf sämtliche Funktionen von AutoHotKey zugreifen und auch am Innersten von NeoVars Anpassungen vornehmen. Man kann `Custom.ahk` beispielsweise benützen, um das Tastaturlayout permanent oder auch per Hotkey, den individuellen Wünschen entsprechend, änderbar zu machen. Im Anschluss ist ein Skript zu sehen, das die alternative MU-HP-Variante einrichtet und per Hotkey `M3+F8` zugänglich macht. ```ahk ; -*- encoding:utf-8 -*- ; NEO-MUHP ; (c) 2009 Matthias Wächter CharProc__UHPt() { global ; Custom Layout togglen isUHP := !(isUHP) if (isUHP) { CharProc__UHP1() if (zeigeModusBox) TrayTip,NEO-MU-HP-Belegungsvariante,Die Belegungsvariante wurde aktiviert. Zum Deaktivieren`, M3+F8 druecken.,10,1 } else { CharProc__UHP0() if (zeigeModusBox) TrayTip,NEO-MU-HP-Belegungsvariante,Die Belegungsvariante wurde deaktiviert.,10,1 } } CharProc__UHP1() { global ; NEO-MU-HP-Tastaturbelegungsvariante aktivieren ED12("010",1,"y","Y") ED12("011",1,"o","O") ED12("012",1,"a","A") ED12("013",0,",","–") ED12("014",1,"j","J") ED12("015",1,"k","K") ED12("016",1,"g","G") ED12("017",1,"c","C") ED12("018",1,"l","L") ED12("019",1,"f","F") ED12("01A",1,"x","X") ED12("01E",1,"i","I") ED12("01F",1,"u","U") ED12("020",1,"e","E") ED12("021",1,"h","H") ED12("022",1,"p","P") ED12("023",1,"d","D") ED12("024",1,"t","T") ED12("025",1,"n","N") ED12("026",1,"r","R") ED12("027",1,"s","S") ED12("028",1,"ß","ẞ") ED12("02C",1,"ü","Ü") ED12("02D",1,"ö","Ö") ED12("02E",1,"ä","Ä") ED12("02F",0,".","•") ED12("030",1,"q","Q") ED12("031",1,"v","V") ED12("032",1,"m","M") ED12("033",1,"b","B") ED12("034",1,"z","Z") ED12("035",1,"w","W") } CharProc__UHP0() { global ; NEO-MU-DK-Tastaturbelegungsvariante deaktivieren ED12("010",1,"x","X") ED12("011",1,"v","V") ED12("012",1,"l","L") ED12("013",1,"c","C") ED12("014",1,"w","W") ED12("015",1,"k","K") ED12("016",1,"h","H") ED12("017",1,"g","G") ED12("018",1,"f","F") ED12("019",1,"q","Q") ED12("01A",1,"ß","ẞ") ED12("01E",1,"u","U") ED12("01F",1,"i","I") ED12("020",1,"a","A") ED12("021",1,"e","E") ED12("022",1,"o","O") ED12("023",1,"s","S") ED12("024",1,"n","N") ED12("025",1,"r","R") ED12("026",1,"t","T") ED12("027",1,"d","D") ED12("028",1,"y","Y") ED12("02C",1,"ü","Ü") ED12("02D",1,"ö","Ö") ED12("02E",1,"ä","Ä") ED12("02F",1,"p","P") ED12("030",1,"z","Z") ED12("031",1,"b","B") ED12("032",1,"m","M") ED12("033",0,",","–") ED12("034",0,".","•") ED12("035",1,"j","J") } ActivateNEOMUHP() { global CP3F8 := "P__UHPt" ; M3+F8: Aktiviere/Deaktiviere NEO-MU-HP IniRead,isMUHP,%ini%,Global,isMUHP,0 if (isMUHP) CharProc__UHP1() } ActivateNEOMUHP() ``` !!! warning "Achtung" Die hier verwendeten Funktionen erfordern umfangreiches Wissen rund um AutoHotKey und NeoVars. Weiters ist das hier dargestellte Skript nur lauffähig, wenn es als UTF-8-Datei abgespeichert wurde. ## Compose ## Der NeoVars unterstützt grundsätzlich alle [Tote Tasten und Compose](../#compose-und-tote-tasten)-Kombinationen (»Cokos«), die in der Referenz stehen. Zusätzlich gibt es jedoch auch einige nützliche Cokos, die nur im NeoVars zur Verfügung stehen. | Coko | Funktion | | :--------: | ------------------------------------------- | | ♫uu | Zeichen über den Unicode-Codepoint eingeben | | ♫dd | Unicode-Codepoint eines Zeichens ermitteln | | ♫uw | Wie mit Neo | | ♫ro/♫RO | Römische Zahlen | | ♫uc | Taschenrechner | - **Zeichen über den Unicode-Codepoint eingeben**: `♫uu` Dies ermöglicht die direkte Eingabe eines Unicode-Zeichens über seinen eindeutigen Unicode-Codepoint (anzugeben im Heximalsystem). Beispielsweise hat das Euro-Zeichen »€« den Codepoint `U+20AC` und kann infolgedessen über `♫uu20ac` erzeugt werden. Obwohl diese Eingabemöglichkeit recht umständlich ist (da man sich nur ungern Codepoints merken will), ermöglicht sie doch die Eingabe aller Unicode-Zeichen. Zudem ist diese Funktion sehr hilfreich, um einen vorgefundenen Codepoint in das entsprechende Zeichen zu verwandeln. - **Unicode-Codepoint eines Zeichens ermitteln**: `♫dd` Mit dieser Funktion kann der Unicode-Codepoint eines Zeichens ermittelt werden. Die Ausgabe erscheint in einem Ballon-TrayTip und wird im Heximalsystem ausgegeben. Beispielsweise ergibt `♫dda` die Ausgabe »U+0061«. Auch die höheren Ebenen werden unterstützt, so ergibt `♫ddε` den Codepoint »03B5«. Darüber hinaus wird jedoch nicht nur nur der Codepoint eines unmittelbar eingegeben Zeichens ausgegeben, sondern auch, wenn ein selteneres Zeichen über Compose eingegeben wird. So ergibt `♫dd♫ae` die Ausgabe »U+00E6«, den Codepoint von æ. Analog wird auch die Decodierung von Zeichen unterstützt, die mit Hilfe der toten Tasten eingegeben wurden. - **Wie mit Neo**: `♫uw` Vor dem Aufruf muss man das zu suchende Zeichen in der Zwischenablage haben, d.h. es beispielsweise im Browser markiert und mit `Strg+C` in die Zwischenablage kopiert haben. Sie zeigt nicht nur die Zusammensetzung der Cokos über die benötigten Zeichen an, sondern schlüsselt auch die dafür notwendigen Tastendrücke auf. Zusätzlich unterscheidet es auch zwischen echten Cocos und unerreichbaren, die aufgrund fehlender Direkteingabe nicht möglich sind. Sollten sich mehrere Zeichen im Clipboard befinden, wird nur für das erste Zeichen die mögliche Belegung ausgegeben. ![Image](images/WieMitNeo-NeoVars.png) *Die Ausgabe für das Zeichen ≙* - **Römische Zahlen**: `♫ro` Der NeoVars ermöglicht die Eingabe römischer Zahlen über ihre dezimale Entsprechung. Beispielsweise ergibt `♫RO7` die Zeichenfolge ⅤⅠⅠ. Die Zahlen können sowohl über die Zahlenreihe, den Ziffernblock oder den Ziffernblock auf der 4. Ebene eingegeben werden. Der Abschluss der Eingabe über die Leer- oder Enter-Taste ist aus Gründen der Eindeutigkeit zwingend notwendig. Die Ausgabe erfolgt je nach gewähltem Präfix als kleine (r) oder große (R) römische Zahl in ASCII- (o) oder Unicode- (O) Darstellung: | Präfix | Beispiel (2009) | Beschreibung | | :---: | :---: | -----------------------------: | | ♫ro | mmix | Kleine Zahlen, ASCII-Umschrift | | ♫Ro | MMIX | Große Zahlen, ASCII-Umschrift | | ♫rO | ⅿⅿⅰⅹ | Kleine Zahlen, Unicode-Ziffern | | ♫RO | ⅯⅯⅠⅩ | Große Zahlen, Unicode-Ziffern | Es werden nur die »kanonischen« Abkürzungen verwendet, d.h. `♫RO1999` ergibt ⅯⅭⅯⅩⅭⅠⅩ und nicht ⅯⅠⅯ. Es wird jedoch der volle Zahlenbereich von 1 bis 399.999 unterstützt: Um sinnvoll über die »kanonische« 4000’er-Marke zu kommen, werden die Zeichen aus dem archaischen Unicode-Script verwendet. Da es zudem für 1.000 zwei Varianten gibt (Ⅿ vs. ↀ) und zugleich versucht wurde, einerseits konsistent archaisch zu sein, andererseits das gewohnte Ⅿ aber nicht verschwinden zu lassen, kommt es manchmal zu merkwürdigen Kombinationen (z.B. `♫RO`=4900=ↀↁⅭⅯ). Zu guter Letzt folgt hier noch ein Beispiel für die Erzeugung eine unüblich großen römischen Zahl: `♫RO87654`=ↇↂↂↂↁↀↀⅮⅭⅬⅠⅤ - **Taschenrechner**: `♫uc` Dieser integrierte Taschenrechner beherrscht die vier Grundrechnungsarten für Ganzzahl- und Dezimalarithmetik (ohne Potenzen). Infolgedessen muss man für einfache Berechnungen keinen Taschenrechner als extra Applikation bemühen, sondern kann sie »im Textfluss« eingeben. Je nach gewählten Präfix wird die Ausgabe unterschiedlich formatiert: - `♫uc{Zahl}{Grundrechenzeichen}{Zahl}{Leertaste/Enter/IstGleich-Zeichen}`: Hier wird ausſchließlich das Ergebnis an die Applikation geschickt. - `♫UC`: Die Eingabe ist genauso wie bei ♫uc, nur dass der ganze Vorgang ein »Echo« bekommt. Es erscheint also die ganze Berechnung in der Applikation und nicht nur das Ergebnis. Das abschließende {Leerzeichen/Enter/IstGleich}-Zeichen wird prinzipiell durch ein IstGleich-Zeichen ersetzt. Hierzu ein paar Beispiele: | Eingabe | Ausgabe | | :-------------------: | ---------------: | | ♫uc10*10= | 100 | | ♫uc10.5*10.5\ | 110.250000 | | ♫uC10-20\ | 10-20=-10 | | ♫uC1/30000\ | 1/30000=0.000033 | Bislang kann man die eingegebenen Zahlen nicht korrigieren. Macht man einen Fehler, muss man von vorne beginnen und gegebenenfalls (bei `♫CC`) das bereits eingegebene Fragment selbst löschen. Abgesehen davon wird bei Dezimalzahlen die Anzahl der Nachkommastellen vom Skript vorgegeben (Standardwert: 6 Stellen). ## Automatischer Start ## Bei Bedarf kann man sich eine Verknüpfung mit neo20.exe in den Autostart-Ordner im Startmenü legen, dann hat man die Belegung direkt nach der Anmeldung. In diesem Fall sollte man jedoch auch einen Umstieg auf den nativen [kbdNeo2-Treiber](#kdbneo-treiber) erwägen (der jedoch noch nicht vollständig umgesetzt ist). ## Selbstausführender USB-Stick ## Mehr dazu unter [Neo für unterwegs](../#sonstiges) ## Temporäre Dateien und gründliche Deinstallation ## Die .exe-Datei entpackt beim Ausführen Bilder für die Tray-Icons und die Bildschirmtastatur in einen Neo2-Unterordner des temporären Windows(Umgebungsvariablen-)Ordners (unter Windows XP ist dies etwa `C:\Dokumente und Einstellungen\\Lokale Einstellungen\Temp\Neo2`, unter Windows Vista und 7 `C:\Users\\AppData\Local\Temp\Neo2` usw.). Diese Dateien bitte während der Dateiausführung nicht verschieben oder löschen, ansonsten können Laufzeitfehler auftreten. Bei einer gründlichen Deinstallation sollte zudem noch die »Neo2.ini« (genaueres siehe oben) gelöscht werden. ## Am Anmeldebildschirm verfügbar machen ## !!! warning "Todo" * Wikieintrag: [Neovars Anmeldebildschirm](https://git.neo-layout.org/neo/neo-layout/wiki/Neo-unter-Windows-einrichten-(NeoVars)-Anmeldebildschirm) Soll auch am Anmeldebildschirm Neo statt Qwertz verwendet werden, kann dies verhältnismäßig einfach über den [kbdneo-Treiber](#kbdneo-treiber) erreicht werden. Es ist (mit mehr Aufwand) aber auch möglich, den [NeoVars am Anmeldebildschirm verfügbar zu machen](Neo-unter-Windows-einrichten-(NeoVars) Anmeldebildschirm). ## Hinweise für Entwickler ## Die gibt es auf einer [ausführlichen Extraseite](../Beitragen/#Treiber).