# <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="1em"><path fill="currentColor" d="M3,12V6.75L9,5.43V11.91L3,12M20,3V11.75L10,11.9V5.21L20,3M3,13L9,13.09V19.9L3,18.75V13M20,13.25V22L10,20.09V13.1L20,13.25Z" /></svg> NeoVars (Autohotkey)

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 die ».exe«-Datei aus. 

## Installation und Benutzung

Einfach die Datei [neo20.exe](/Downloads/neo20.exe) herunterladen und irgendwo speichern (bspw. auf dem Desktop oder in dem Order »Eigene Dateien«). Nach dem Starten der Datei ist Neo bereits aktiv. Es werden keine Administrator-Rechte benötigt und das Layout steht auf jedem Rechner sofort zur Verfügung.

!!! info "Temporäres Deaktivieren"
    Um kurzzeitig zwischen Qwertz und Neo hin- und herzuwechseln, kann mit der Tastenkombination `Shift+Pause` das gesamte 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).

Manche Virenscanner erkennen NeoVars – oder allgemein Autohotkey-Skripte – fälschlicherweise als Virus bzw. gefährlichen Keylogger. In diesem Fall muss für die `neo20.exe` eine Ausnahme eingerichtet werden.

### Automatischer Start

Um Neo nach jeder Anmeldung automatisch zu starten, genügt es, eine Verknüpfung auf die `neo20.exe`-Datei in den Autostart-Ordner zu legen. Bei einer dauerhaften Nutzung sollte man jedoch auch einen Umstieg auf den nativen [kbdneo-Treiber](kbdneo.md) erwägen, siehe auch [Unterschiede zwischen den Windows-Treibern](installation.md#unterschiede).

!!! note "Am Anmeldebildschirm verfügbar machen"
    Soll auch am Anmeldebildschirm Neo statt Qwertz verwendet werden, kann dies verhältnismäßig einfach über den [kbdneo-Treiber](kbdneo.md) erreicht werden. Es ist (mit mehr Aufwand) aber auch möglich, den [NeoVars am Anmeldebildschirm]() verfügbar zu machen.


### Portable Version

Die normale Version verwendet benutzer-spezifische Einstellungen (siehe unten) und legt verschiedene Dateien im Benutzerverzeichnis ab. Soll NeoVars portabel z.B. von einem USB-Stick starten und keine Dateien auf dem Rechner hinterlassen, steht alternativ eine [portable Version](/Downloads/neo20-portable.exe) bereit. Diese legt alle Einstellungen und Dateien im selben Verzeichnis wie die .exe-Datei ab.

### Temporäre Dateien und gründliche Deinstallation
Die .exe-Datei entpackt beim Ausführen Bilder für die Tray-Icons und die Bildschirmtastatur in den Ordner `%temp%\Neo2`. 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 der Ordner `%appdata%\Neo2` gelöscht werden (siehe [Konfiguration](#konfiguration-und-spezielle-modi)).


## Bildschirmtastatur

Mit der Tastenkombination `M3+F1` (M3, auch Mod3, ist beim deutschen Tastaturlayout `CapsLock` oder die `#` Taste links neben der Entertaste) erhält man eine graphische Zusammenfassung der Neo-Tastatur. Sie erleichtert 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 anderen Fenster, was mit `M3+F8` ein- und ausgeschaltet werden kann.

Die sogenannte „dynamische Bildschirmtastatur“ aktiviert man dagegen mit `M3+F3`. Der Unterschied ist, dass sie nur angezeigt wird, wenn eine tote Taste gedrückt oder eine Compose-Kombination begonnen wird. Das erleichtert die Übersicht, welche Zeichen möglich sind, ohne dass die Bildschirmtastatur beim normalen Tippen (von direkten Zeichen) im Blickfeld ist.

## Benutzerdefinierte Layouts

Zusätzlich zu Neo besteht die Möglichkeit, ein alternatives Layout für die Buchstabentasten 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.md):
```
[Global]
customLayout="-jduaxphlmwßctieobnrsgqfvüäöyz,.k"
```

Das Layout ist beim Starten des Treibers aktiv (anstatt Neo2) und verhält sich entsprechend: die Bildschirmtastatur passt sich dem neuen Layout an, ebenso tote Tasten und Compose-Kombinationen.

### Qwertz auf Ebene 1 und 2 (Neo/Qwertz)

Qwertz ist als einziges alternatives Layout voreingestellt. Über `M3+F6` wechselt man zu Neo/Qwertz. Dann verhält sich der Treiber wie mit Qwertz als benutzerdefiniertem Layout auf den Buchstabentasten. Erneutes Drücken von M3+F6 wechselt wieder zum voreingestellen Layout zurück.

Soll Neo/Qwertz beim Start aktiv sein, setzt man die Option `isQwertz=1` in der Konfigurationsdatei.


## Konfiguration und spezielle Modi

### Globale Schalter für Fortgeschrittene

Es besteht die Möglichkeit, beim Starten des AHK-Treibers individuelle Startwarte für die Konfiguration 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:

??? example "Neo2.ini"
    ```ini
    [Global]
    ; Im folgenden gilt (soweit nicht anders angegeben) stets Ja = 1, Nein = 0.

    ; Ein benutzerdefiniertes Layout für den Start des Treibers festlegen
    customLayout="-xvlcwkhgfqßuiaeosnrtdyüöäpzbm,.j"

    ; 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

    ; Soll die Bildschirm-Tastatur beim Programmstart bereits aktiviert sein?
    useBST=0

    ; Soll die dynamische Bildschirm-Tastatur (nur bei Compose sichtbar) beim Programmstart bereits aktiviert sein?
    useDBST=0

    ; Soll die Bildschirmtastatur im Design der ErgoDox dargestellt werden? (0=Normal, 1=ErgoDox)
    bstLayout=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

    ; Die Cokos werden dynamisch aus einer lokalen Kopie des SVN erzeugt
    dynamischesCompose=0
    ```

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.)


### Übersicht über spezielle Modi ###

Der AHK-Treiber unterstützt mehrere spezielle Modi, die zur Laufzeit ein- und ausgeschaltet werden können und teilweise auch untereinander 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**: Vertauscht zyklisch die drei Buchstaben s, ß und ſ (langes S), um das Tippen im Fraktursatz zu vereinfachen. Er wird ausführlich auf der eigenen Seite [Fraktursatz](../Typografie/Fraktursatz.md) behandelt. |



## 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\<enter\> | 110.250000       |
    | ♫uC10-20\<enter\>     | 10-20=-10        |
    | ♫uC1/30000\<space\>   | 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).

