summaryrefslogtreecommitdiff
path: root/windows
diff options
context:
space:
mode:
authormartin_r <martin_r@b9310e46-f624-0410-8ea1-cfbb3a30dc96>2008-08-18 19:25:20 +0000
committermartin_r <martin_r@b9310e46-f624-0410-8ea1-cfbb3a30dc96>2008-08-18 19:25:20 +0000
commitc63134e1ac0522b643dffd4c71bcff2b27eab30d (patch)
treea016dc31193ff9e157f4a1502dee0f56a5ffc290 /windows
parentfeb93d6b8ae1a59d0fbe479409906ad6a8f74620 (diff)
downloadneo-layout-c63134e1ac0522b643dffd4c71bcff2b27eab30d.tar.gz
neo-layout-c63134e1ac0522b643dffd4c71bcff2b27eab30d.tar.bz2
neo-layout-c63134e1ac0522b643dffd4c71bcff2b27eab30d.zip
Modularisierung des AHK konsequent weitergeführt.
neo20.txt: Ebenen 7 und 8 ergänzt, Ebenen 2 und 4 des Numpads vertauscht. Methods-Layers.ahk: Mod3-Lock abgeschafft, CapsLock neu geschrieben. + Viele kleine Änderungen. git-svn-id: https://svn.neo-layout.org@776 b9310e46-f624-0410-8ea1-cfbb3a30dc96
Diffstat (limited to 'windows')
-rw-r--r--windows/autohotkey/Build-Update.bat26
-rw-r--r--windows/autohotkey/Changelog-and-Todo.txt140
-rw-r--r--windows/autohotkey/README.txt133
-rw-r--r--windows/autohotkey/Source/All.ahk8
-rw-r--r--windows/autohotkey/Source/Global-Part.ahk102
-rw-r--r--windows/autohotkey/Source/Keys-Neo.ahk792
-rw-r--r--windows/autohotkey/Source/Keys-Qwert-to-Neo.ahk1
-rw-r--r--windows/autohotkey/Source/Methods-Layers.ahk200
-rw-r--r--windows/autohotkey/Source/Methods-Lights.ahk4
-rw-r--r--windows/autohotkey/Source/Methods-Other.ahk138
-rw-r--r--windows/autohotkey/Source/Methods-ScreenKeyboard.ahk94
-rw-r--r--windows/autohotkey/Source/Methods-Unicode.ahk29
-rw-r--r--windows/autohotkey/Source/Warning.ahk5
-rw-r--r--windows/autohotkey/neo20.ahk1580
-rw-r--r--windows/autohotkey/neo20.exebin446376 -> 424421 bytes
15 files changed, 1427 insertions, 1825 deletions
diff --git a/windows/autohotkey/Build-Update.bat b/windows/autohotkey/Build-Update.bat
index abb5937..deae939 100644
--- a/windows/autohotkey/Build-Update.bat
+++ b/windows/autohotkey/Build-Update.bat
@@ -1,33 +1,23 @@
@echo off
-
-echo Setting local path variables
-
-REM The path to the AutoHotkey program
-set ahk=C:\Programme\AutoHotkey
-
-REM The path to the AutoHohotkey directory in the local svn copy
-set svn=.
-
-REM Just some useful shortcuts:
-set scr="%svn%\Source"
+cd Source
set fn=neo20
-echo Killing the old (AHK)Driver
+rem echo Killing the old (AHK)Driver
REM tskill neo20-all-in-one
echo Creating a new Driver from the Source code
REM The order *is* important!
-copy "%scr%\Warning.ahk" + "%scr%\Global-Part.ahk" + "%scr%\Methods-Layers.ahk" + "%scr%\Keys-Qwert-to-Neo.ahk" + "%scr%\Keys-Neo.ahk" + "%scr%\Methods-Lights.ahk" + "%scr%\Methods-Other.ahk" + "%scr%\Methods-Unicode.ahk" + "%scr%\Methods-ScreenKeyboard.ahk" "%svn%\%fn%.ahk"
-REM if exist "%svn%\Compose\Compose-all-in-one.ahk" copy "%svn%\%fn%.ahk" + "%svn%\Compose\Compose-all-in-one.ahk" "%svn%\%fn%.ahk"
+copy "Global-Part.ahk" + "Methods-Layers.ahk" + "Keys-Qwert-to-Neo.ahk" + "Keys-Neo.ahk" + "Methods-Lights.ahk" + "Methods-Other.ahk" + "Methods-Unicode.ahk" + "Methods-ScreenKeyboard.ahk" "..\%fn%.ahk"
+REM if exist "..\Compose\Compose-all-in-one.ahk" copy "..\%fn%.ahk" + "..\Compose\Compose-all-in-one.ahk" "..\%fn%.ahk"
-echo Compiling the new Driver using AutoHotkey
-"%ahk%\Compiler\Ahk2Exe.exe" /in "%svn%\%fn%.ahk" /out "%svn%\%fn%.exe" /icon "%svn%\neo.ico"
+echo Compiling the new Driver using AutoHotkey...
+"C:\Programme\AutoHotkey\Compiler\Ahk2Exe.exe" /in "..\%fn%.ahk" /out "..\%fn%.exe" /icon "..\neo.ico"
echo Driver Update complete! You can now close this log-window.
REM Start the new Driver
-%fn%.exe
+rem %fn%.exe
rem wie kann man hier mit der Skriptabarbeitung weitermachen?
rem Unter Windows XP scheint es nicht möglich zu sein, dies mit "Bordmitteln" zu erreichen, es gibt hierfür jedoch extere Programme, etwa
REM echo Start the new driver asynchronously, using "Hidden Start" (hstart.exe) from http://www.ntwind.com/software/utilities/hstart/
-REM hstart.exe /NOCONSOLE /D="%exe%" "%exe%\%fn%.exe" \ No newline at end of file
+REM hstart.exe /NOCONSOLE /D="." "%fn%.exe" \ No newline at end of file
diff --git a/windows/autohotkey/Changelog-and-Todo.txt b/windows/autohotkey/Changelog-and-Todo.txt
index 058b629..74e91c7 100644
--- a/windows/autohotkey/Changelog-and-Todo.txt
+++ b/windows/autohotkey/Changelog-and-Todo.txt
@@ -1,71 +1,75 @@
-== NEO 2.0 (beta) AutoHotkey-Treiber ==
+== 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:
+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>
+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>
+Matthias Wächter <matthias (at) waechter.wiz. a t>
=== To Do ===
-- Ausgiebig testen... (besonders Vollständigkeit bei Deadkeys).
-- Compose vollständig implementieren (Welche Methode ist hierzu am besten geeignet?).
-- Bessere Lösung für das Leeren von PriorDeadKey finden, damit die Sondertasten nicht mehr abgefangen werden müssen.
-- Testen, ob die Capslocklösung (siehe *1:: Ebene 1) auch für Numpad gebraucht wird.
+- Ausgiebig testen... (besonders Vollständigkeit bei Deadkeys).
+- Compose vollständig implementieren (Welche Methode ist hierzu am besten geeignet?).
+- Bessere Lösung für das Leeren von PriorDeadKey finden, damit die Sondertasten nicht mehr abgefangen werden müssen.
+- Testen, ob die Capslocklösung (siehe *1:: Ebene 1) auch für Numpad gebraucht wird.
- Die Ebenen vom Tastenblock an die neue Referenz anpassen (wenn da ein Konsens gefunden wurde).
- Blindes Compose implementieren.
+- CompKey in Abhängigkeit von CapsLock setzen.
+- CapsLock-Abhängigkeiten entfernen.
-
-=== Ideen und Vorschläge ===
-- Die Varianten (lernModus, einHandNeo, Lang-s-Tastatur, Qwertz/pausieren) sollten einheitlich (de-)aktiviert werden, etwa über M4+F9-F12.
-- Modi für vertauschte Ziffern in der Zahlenreihe und auf der 4. Ebene.
+=== Ideen und Vorschläge ===
+- Modi für vertauschte Ziffern in der Zahlenreihe und auf der 4. Ebene.
- Die Compose-Kombinationen sollten automatisch aus den Referenzdateien im Compose-Verzeichnis erzeugt werden.
-=== Änderungshistorie ===
+=== Änderungshistorie ===
+Revision 776 (von Martin Roppelt)
+- Global-Part.ahk, Keys-Neo.ahk: ZeigeLockBoxen in ZeigeLockBox umbenannt.
+- Keys-Neo.ahk: Fehler ausgebessert, Quelltext neu ausgerichtet, Numpad an die Referenz angeglichen, Ebenen 7 und 8 ergänzt;
+- Methods-Layers.ahk: Mod3-Lock abgeschafft
Revision 749 (von Dennis Heidsiek)
-- »?« und »¿« funktionieren wieder (Klammer vergessen).
+- »?« 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?
+- 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-s-Tastatur repariert).
+- 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-s-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)
+Revision 743 (von Matthias Wächter)
- Ebene4-Ziffernblock: NumPadAdd und NumPadSub korrigiert.
-Revision 740 (von Matthias Wächter) - "Mega-Patch"
+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.
+- 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.
+- 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.
+- Die doppelten französischen Anführungszeichen werden nun ebenfalls über SendUnicodeChar gesendet.
Revision 694 (von Martin Roppelt):
- LangSTastatur auf M4+F11.
-- Entwickler können durch das Erstellen einer Datei »LangSTastaturStandardmäßigEingeschaltet.ahk« mit dem Inhalt »LangSTastatur := 1« diese standardmäßig aktivieren.
+- 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.
+- Die SendUnicodeChar-Methode um den GDK-Workarround von Matthias Wächter ergänzt.
- (An/Aus) Icons an Favicon der neuen Homepage angepasst.
Revision 645 (von Martin Roppelt):
-- Ellipse zusätzlich auf M3+x.
+- Ellipse zusätzlich auf M3+x.
- Lang-s-Tastatur probeweise auf M4+Esc.
Revision 640 (von Dennis Heidsiek):
- Der untote Zirkumflex (^) auf Ebene 3 funktioniert jetzt auch in Java-Programmen.
@@ -74,50 +78,50 @@ Revision 639 (von Martin Roppelt):
Revision 629 (von Martin Roppelt):
- Spitze Klammern (bra und ket) auf M5+8/9.
Revision 624 (von Martin Roppelt):
-- Lang-s-Tastatur (ein- und auszuschalten durch Mod4+ß).
+- Lang-s-Tastatur (ein- und auszuschalten durch Mod4+ß).
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.
+- 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.
+- 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).
+- 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
+- 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 "\").
+ • 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.
+- 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".
+- 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).
+- 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"
+ • 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 (Verständlichkeit, mögliche Compilerprobleme vermeiden).
+- Ein paar leere Else-Fälle eingebaut (Verständlichkeit, mögliche Compilerprobleme 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).
+ • 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.
@@ -125,29 +129,29 @@ Revision 544 (von Stefan Mayer):
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.
+- 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.
+- 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.
+ • 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.
+ • 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.
+ • 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 geladen.
Revision 528 (von Matthias Berg):
- Neo-Icon.
-- 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).
+- 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.
@@ -156,27 +160,27 @@ 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).
+- 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.
+- Capslock bei Zahlen und Sonderzeichen berücksichtigt.
Revision 524 (von Matthias Berg):
-- umgekehrtes ^ für o, a, ü,i sowie für die grossen vokale ( 3. ton chinesisch).
- • damit wird jetzt PinYin vollständig unterstützt caron, macron, akut, grave auf uiaeoü.
+- umgekehrtes ^ für o, a, ü,i sowie für die grossen 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.
+- 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.
+ • 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.
+ • Brüche (auf Zahlenreihe und Hardware-Ziffernblock).
+ • römische Zahlen.
+ • Ligaturen und Copyright.
diff --git a/windows/autohotkey/README.txt b/windows/autohotkey/README.txt
index c5485e4..4fde036 100644
--- a/windows/autohotkey/README.txt
+++ b/windows/autohotkey/README.txt
@@ -1,67 +1,91 @@
-== Neo 2.0 Autohotkey-Treiber für Windows ==
+== Neo 2.0 Autohotkey-Treiber für Windows ==
-== Hinweise für Nutzer ==
+== Hinweise für Nutzer ==
=== Direkte Installation ===
-Einfach die Datei neo20.exe herunterladen und irgendwo speichern (bspw. auf dem Desktop oder in dem Order »Eigenen 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.
+Einfach die Datei neo20.exe herunterladen und irgendwo speichern (bspw. auf dem Desktop oder in dem Order »Eigenen 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 normalen 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).
+=== Rückkehr zum normalen 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 oder: Wo ist bloß XYZ abgeblieben? ===
-Mit den Tastenkominationen Mod4+F1 bis Mod4+F8 (Mod4 ist beim normalen Tastaturlayout AltGr oder die "<" Taste rechts neben der linken Großschreibetaste) 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.
+=== Bildschirmtastatur oder: Wo ist bloß XYZ abgeblieben? ===
+Mit den Tastenkominationen Mod4+F1 bis Mod4+F8 (Mod4 ist beim normalen Tastaturlayout AltGr oder die "<" Taste rechts neben der linken Großschreibetaste) 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.
+
+=== Globale Schalter und die Neo2.ini ===
+Es 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:
+[Global]
+# Im folgenden gilt (soweit nicht anders angegeben) Ja = 1, Nein = 0:
+
+ahkTreiberKombi=0
+einHandNeo=0
+lernModus=0
+zeigeLockBox=1
+UseMod4Light=1
+LangSTastatur=0
+DeadSilence=0
+DeadCompose=0
+
+Diese Datei muss manuell (etwa mit Notepad) in dem richtigen Verzeichnis innerhalb der Anwendungsdaten des aktuellen Nutzers angelegt werden. Unter Windows Vista ist dies etwa das Verzeichnis
+C:\Users\<BENUTZERNAME>\AppData\Roaming\Neo2\Neo2.ini
+unter Windows XP hingegen das Verzeichnis
+C:\Dokumente und Einstellungen\<BENUTZERNAME>\Anwendungsdaten\Neo2\Neo2.ini
+usw.
=== 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 erwägen.
+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 erwägen (der jedoch noch nicht vollständig umgesetzt ist).
-=== 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\Mario Mustermann\Lokale Einstellungen\Temp\Neo2). Diese Dateien bitte während der Dateiausführung nicht verschieben oder löschen, ansonsten können Laufzeitfehler auftreten.
+=== 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\Mario Mustermann\Lokale Einstellungen\Temp\Neo2). Diese Dateien bitte während der Dateiausführung nicht verschieben oder löschen, ansonsten können Laufzeitfehler auftreten.
+
+=== Lang-S-Tastatur ===
+Um den korrekten Satz des langen S (»?«) zu erleichtern, wurde der Lang-S-Modus geschaffen. Er ist über die Tastenkombination Mod4+F11 ein- und ausschaltbar. Er vertauscht zyklisch s ? ß ? ? ? s.
=== FAQ ===
-Bei vielen Problemen hilt es weiter, zunächst in die allgemeine Neo-FAQ zu schauen; viele bekannte Probleme und Fragen sind dort mit entsprechendene Lösungshinweisen dokumentiert.
+Bei vielen Problemen hilt es weiter, zunächst in die allgemeine Neo-FAQ zu schauen; viele bekannte Probleme und Fragen sind dort mit entsprechendenen Lösungshinweisen dokumentiert.
-=== Hinweis zur Aktualität ===
-Achtung: Da sich Neo in aktiver Weiterentwicklung befindet, kann es vorkommen, dass die Bildschirmtastatur oder die neo20.exe mit der aktuellen Referenz (noch) nicht übereinstimmt. Scheuen Sie sich nicht, uns über die Homepage des Neo-Layouts (http://neo-layout.org) Verbesserungsvorschläge zukommen zu lassen!
+=== Hinweis zur Aktualität ===
+Achtung: Da sich Neo in aktiver Weiterentwicklung befindet, kann es vorkommen, dass die Bildschirmtastatur oder die neo20.exe mit der aktuellen Referenz (noch) nicht übereinstimmt. Scheuen Sie sich nicht, uns über die Homepage des Neo-Layouts (http://neo-layout.org) Verbesserungsvorschläge zukommen zu lassen!
=== Was noch nicht funktioniert ===
Derzeit sind erst einige wenige Compose-Funktionen im Treiber implementiert. Genauere Informationen befinden sich in der Datei Changelog-and-Todo.txt.
-== Hinweise für Entwickler ==
+== Hinweise für Entwickler ==
-=== Autohotkey herunter laden ===
-Man sollte als erstes das Programm namens »Autohotkey« (http://www.autohotkey.com/download/AutohotkeyInstall.exe) herunterlanden. Es wird empfohlen, dieses Programm möglichst in dem vorgeschlagenen Standardverzeichnis zu installieren.
-Wenn man jedoch über KEINE Administratorrechte verfügt, kann man das Programm beispielsweise auch in das Verzeichnis »Eigene Dateien/Neo« (oder in ein anderes Verzeichnis, für das man Schreibrechte hat) installieren.
-In diesem Fall muss dann für eine Kompilierung des Skriptes noch die Datei Build-Update.bat lokal entsprechend angepasst werden (diese lokale Änderung der Build-Update.bat aber bitte nicht einchecken, da die allermeisten Entwickler Autohotkey im vorgeschlagenen Standardverzeichnis installiert haben!).
+=== AutoHotkey herunter laden ===
+Man sollte als erstes das Programm namens »AutoHotkey« (http://www.autohotkey.com/download/AutoHotkeyInstall.exe) herunterlanden. Es wird empfohlen, dieses Programm möglichst in dem vorgeschlagenen Standardverzeichnis zu installieren.
+Wenn man jedoch über KEINE Administratorrechte verfügt, kann man das Programm beispielsweise auch in das Verzeichnis »Eigene Dateien/Neo« (oder in ein anderes Verzeichnis, für das man Schreibrechte hat) installieren.
+In diesem Fall muss dann für eine Kompilierung des Skriptes noch die Datei Build-Update.bat lokal entsprechend angepasst werden (diese lokale Änderung der Build-Update.bat aber bitte nicht einchecken, da die allermeisten Entwickler Autohotkey im vorgeschlagenen Standardverzeichnis installiert haben!).
-=== Die ausführbare Datei aktualisieren ===
+=== Die ausführbare Datei aktualisieren ===
Um die neo20.exe auf den neuesten Stand zu bringen, reicht (wenn Autohotkey im Standardverzeichnis installiert wurde) ein Doppelklick auf die Batch-Datei Build-Update.bat
-Es ist empfehlenswert, diese Batch-Datei stets vor einem Commit auszuführen, damit die .exe-Datei immer auf dem aktuellsten Stand ist.
+Es ist empfehlenswert, diese Batch-Datei stets vor einem Commit auszuführen, damit die .exe-Datei immer auf dem aktuellsten Stand ist.
=== Den Sourcecode bearbeiten ===
-Die Datei neo20.ahk sollte auf keinen Fall mehr direkt bearbeitet werden, da sie inzwischen automatisch generiert und regelmäßig überschrieben wird.
+Die Datei neo20.ahk sollte auf keinen Fall mehr direkt bearbeitet werden, da sie inzwischen automatisch generiert und regelmäßig überschrieben wird.
-Stattdessen müssen die Dateien/Module im Source-Unterverzeichnis bearbeitet werden, etwa:
+Stattdessen müssen die Dateien/Module im Source-Unterverzeichnis bearbeitet werden, etwa:
Source\Keys-Neo.ahk
Source\Keys-Qwert-to-Neo.ahk
Source\Methods-Layers.ahk
Source\Methods-Lights.ahk
-Um die gemachten Änderungen zu testen, sollte die Datei
-Source\All.ahk
-verwendet werden, die alle Module einbindet und regulär durch einen Doppelklick mit dem AHK-Interpreter gestartet werden kann.
+Um die gemachten Änderungen zu testen, sollte die Datei Source\All.ahk verwendet werden, die alle Module einbindet und regulär durch einen Doppelklick mit dem AHK-Interpreter gestartet werden kann.
-Der große Vorteil dieser Methode liegt darin, dass sich die Zeilennummern eventueller Fehlermeldungen nicht mehr auf die große »vereinigte« AHK-Datei, sondern auf die tatsächlich relevanten Module beziehen, z.B. :
+Der große Vorteil dieser Methode liegt darin, dass sich die Zeilennummern eventueller Fehlermeldungen nicht mehr auf die große »vereinigte« AHK-Datei, sondern auf die tatsächlich relevanten Module beziehen, z. B. :
Error at line 64 in #include file "C:\...\autohotkey\Source\Methods-Lights.ahk"
Line Text: CTL_CODE_LED(p_device_type, p_function, p_method, p_access)
Error: Functions cannot contain functions.
The programm will exit.
-Zudem ist angedacht, den AHK-Treiber in voneinander möglichst unabhängige Teile aufzusplitten, um so die Übersichtlichkeit zu erhöhen und die Komplexität des Codes zu verringern.
+Zudem ist angedacht, den AHK-Treiber in voneinander möglichst unabhängige Teile aufzusplitten, um so die Übersichtlichkeit zu erhöhen und die Komplexität des Codes zu verringern.
=== Links zur AHK/Autohotkey-Skriptsprache ===
-Eine kurze Einführung (Installation und Beispielscipt) findet man etwa auf
+Eine kurze Einführung (Installation und Beispielskript) findet man etwa auf
http://www.kikizas.net/en/usbapps.ahk.html
Eine alphabetische Liste aller erlaubten Kommandos findet man online unter
@@ -70,55 +94,6 @@ http://www.autohotkey.com/docs/commands.htm
=== Wie es funktioniert ===
Das Programm kann alle Tastendrucke abfangen und stattdessen andere Tasten simulieren. Die Zeile
a::send b
-fängt z. B. die Taste »a« ab und sendet stattdessen ein »b«. Die AHK-Dateien lassen sich mit einem Texteditor bearbeiten, man muss dann nur das Skript neu starten, um die Änderungen zu übernehmen.
-
-==== Bekannte Fehler ====
-Bisher reagieren nur die Buchstaben der 1. und 2. Ebene richtig auf CapsLock (also immer groß schreiben – CapsLock erreicht man unter Neo, wenn man beide Shift-Tasten gleichzeitig drückt).
-
-== Ziffernblock ==
-Der Ziffernblock reagiert nicht auf Tastenkombinationen mit Strg, Alt usw.
-
-Der Ziffernblock auf der 2. Ebene ist wahlweise
-- bei AUSgeschaltetem Numlock
-- bei EINgeschaltetem Numlock mit Shift
-zu erreichen.
-Der Ziffernblock auf der 3. Ebene funktioniert bei EINgeschaltetem Numlock mit Mod3 (Caps/#).
-Der Ziffernblock auf der 4. Ebene ist wahlweise
-- bei AUSgeschaltetem Numlock mit Mod3 + Shift
-- bei EINgeschaltetem Numlock über Mod4
-zu erreichen.
-Da die 2. Ebene über Shift ebenfalls bei EINgeschaltetem Numlock funktioniert, ist das Ausschalten des Ziffernblocks nicht unbedingt nötig.
-
-==== Besonderheiten bei der AHK-Windowsversion von Neo ====
-Ebene 5 des Ziffernblocks lässt sich außer über Mod3+Shift auch über
-Mod4 ansprechen.
-
-==== Warnung ====
-ACHTUNG! Unter Windows ist folgendes festgelegt:
-AltGr + Pos1 = Abmelden
-AltGr + Ende = Computer ausschalten
---> diese Kombinationen treten auf bei AUSgeschaltetem Numlock mit Mod4.
-
-=== Globale Schalter und die Neo2.ini ===
-Es 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:
-[Global]
-# Im folgenden gilt (soweit nicht anders angegeben) Ja = 1, Nein = 0:
-ahkTreiberKombi=0
-einHandNeo=0
-lernModus=0
-zeigeLockBoxen=1
-UseMod4Light=1
-LangSTastatur=0
-DeadSilence=0
-DeadCompose=0
-
-Diese Datei muss manuell (etwa mit dem Notepad) in dem richtigen Verzeichnis innerhalb der Anwendungsdaten des aktuellen Nutzers angelegt werden. Unter Windows Vista ist dies etwa das Verzeichnis
-C:\Users\<BENUTZERNAME>\AppData\Roaming\Neo2\Neo2.ini
-unter Windows XP hingegen das Verzeichnis
-C:\Dokumente und Einstellungen\<BENUTZERNAME>\Anwendungsdaten\Neo2\Neo2.ini
-usw.
+fängt z.?B. die Taste »a« ab und sendet stattdessen ein »b«. Die AHK-Dateien lassen sich mit einem Texteditor bearbeiten, man muss dann nur das Skript neu starten, um die Änderungen zu übernehmen.
-=== ... === \ No newline at end of file
+=== ... ===
diff --git a/windows/autohotkey/Source/All.ahk b/windows/autohotkey/Source/All.ahk
index a207bca..1b899b7 100644
--- a/windows/autohotkey/Source/All.ahk
+++ b/windows/autohotkey/Source/All.ahk
@@ -1,9 +1,11 @@
/*
------------------------------------------------------
- Liste der Module
-
+ All.ahk:
+ Diese Datei ist für Entwickler zum schnellen Testen von Änderungen vorgesehen. Bei Syntaxfehlern bietet sie zudem den Vorteil, dass die Zeilennummern relativ zu den einzelnen Modulen angezeigt werden.
+
Die Reihenfolge der Includes *ist* relevant!
-
+ Denn: Vor dem Menü in der Global-Part.ahk dürfen keine Tastenkombinationen definiert werden. Ansonsten können Sie die Dateien hier beliebig anordnen. :-)
+
Siehe auch:
http://www.autohotkey.com/docs/commands/_Include.htm
diff --git a/windows/autohotkey/Source/Global-Part.ahk b/windows/autohotkey/Source/Global-Part.ahk
index 105ad64..a0257d1 100644
--- a/windows/autohotkey/Source/Global-Part.ahk
+++ b/windows/autohotkey/Source/Global-Part.ahk
@@ -1,4 +1,4 @@
-
+SetNumLockState AlwaysOff
/****************
* Verzeichnisse *
@@ -36,8 +36,8 @@ IniRead, einHandNeo, %ApplicationFolder%\NEO2.ini, Global, einHandNeo, 0
; Soll der Lernmodus aktiviert werden?
IniRead, lernModus, %ApplicationFolder%\NEO2.ini, Global, lernModus, 0
-; Soll mit MessageBoxen explizit auf das Ein- und Ausschalten des Mod{3,4}-Locks hingewiesen werden?
-IniRead, zeigeLockBoxen, %ApplicationFolder%\NEO2.ini, Global, zeigeLockBoxen, 1
+; Soll mit einer MsgBox explizit auf das Ein- und Ausschalten des Mod4-Locks hingewiesen werden?
+IniRead, zeigeLockBox, %ApplicationFolder%\NEO2.ini, Global, zeigeLockBox, 1
; Soll aktivierter Mod4-Lock über die Rollen-LED des Keybord angezeigt werden (analog zu CapsLock)?
IniRead, UseMod4Light, %ApplicationFolder%\NEO2.ini, Global, UseMod4Light, 1
@@ -260,3 +260,99 @@ return
else
send {blind}{Esc}
return
+
+/*
+ ------------------------------------------------------
+ Shift+Pause "pausiert" das Skript.
+ ------------------------------------------------------
+*/
+
+*pause::
+Suspend, Permit
+ if isshiftpressed()
+ goto togglesuspend
+ else
+ send {blind}{pause}
+return
+
+; ------------------------------------
+
+^.::einHandNeo := not(einHandNeo) ; Punkt
+^,::lernModus := not(lernModus) ; Komma
+
+
+
+togglesuspend:
+ if A_IsSuspended
+ {
+ menu, tray, rename, %enable%, %disable%
+ menu, tray, tip, %name%
+ if (iconBenutzen)
+ menu, tray, icon, %ResourceFolder%\neo.ico,,1
+ suspend , off ; Schaltet Suspend aus -> NEO
+ }
+ else
+ {
+ menu, tray, rename, %disable%, %enable%
+ menu, tray, tip, %name% : Deaktiviert
+ if (iconBenutzen)
+ menu, tray, icon, %ResourceFolder%\neo_disabled.ico,,1
+ suspend , on ; Schaltet Suspend ein -> QWERTZ
+ }
+
+return
+
+
+help:
+ Run, %A_WinDir%\hh mk:@MSITStore:autohotkey.chm
+return
+
+
+about:
+ msgbox, 64, %name% – Ergonomische Tastaturbelegung,
+ (
+ %name%
+ `nDas Neo-Layout ersetzt das übliche deutsche
+ Tastaturlayout mit der Alternative Neo,
+ beschrieben auf http://neo-layout.org/.
+ `nDazu sind keine Administratorrechte nötig.
+ `nWenn Autohotkey aktiviert ist, werden alle Tastendrucke
+ abgefangen und statt dessen eine Übersetzung weitergeschickt.
+ `nDies geschieht transparent für den Anwender,
+ es muss nichts installiert werden.
+ `nDie Zeichenübersetzung kann leicht über das Icon im
+ Systemtray deaktiviert werden. `n
+ )
+return
+
+
+neo:
+ run http://neo-layout.org/
+return
+
+autohotkey:
+ run http://autohotkey.com/
+return
+
+open:
+ ListLines ; shows the Autohotkey window
+return
+
+edit:
+ edit
+return
+
+reload:
+ Reload
+return
+
+hide:
+ menu, tray, noicon
+return
+
+exitprogram:
+ exitapp
+return
+
+
+ \ No newline at end of file
diff --git a/windows/autohotkey/Source/Keys-Neo.ahk b/windows/autohotkey/Source/Keys-Neo.ahk
index 15a8be1..2c1fd53 100644
--- a/windows/autohotkey/Source/Keys-Neo.ahk
+++ b/windows/autohotkey/Source/Keys-Neo.ahk
@@ -2,13 +2,13 @@
Die eigentliche NEO-Belegung und der Hauptteil des AHK-Treibers.
Ablauf bei toten Tasten:
- 1. Ebene Aktualisieren
- 2. Abhängig von der Variablen "Ebene" Zeichen ausgeben und die Variable "PriorDeadKey" setzen
+ 1. Ebene Aktualisieren.
+ 2. Abhängig von der Variablen "Ebene" Zeichen ausgeben und die Variable "PriorDeadKey" setzen.
Ablauf bei "untoten" Tasten:
- 1. Ebene Aktualisieren
- 2. Abhängig von den Variablen "Ebene" und "PriorDeadKey" Zeichen ausgeben
- 3. "PriorDeadKey" mit leerem String überschreiben
+ 1. Ebene Aktualisieren.
+ 2. Abhängig von den Variablen "Ebene" und "PriorDeadKey" Zeichen ausgeben.
+ 3. "PriorDeadKey" mit leerem String überschreiben.
Reihe 1
*/
@@ -38,12 +38,12 @@ neo_tot1:
}
else if (Ebene = 5)
{
- deadAsc("-") ; Querstrich, tot
+ deadUni(0x002D) ; Querstrich, tot
DeadKey := "c5"
}
else if (Ebene = 6)
{
- deadAsc(".") ; Punkt drunter (Colon), tot
+ deadUni(0x002E) ; Punkt drunter (Colon), tot
DeadKey := "c6"
}
CompKey := PriorCompKey
@@ -72,9 +72,9 @@ neo_1:
else if (Ebene = 2)
send °
else if (Ebene = 3)
- SendUnicodeChar(0x00B9) ; 2 Hochgestellte
+ SendUnicodeChar(0x00B9) ; Hochgestellte 2
else if (Ebene = 4)
- SendUnicodeChar(0x2022) ; bullet
+ SendUnicodeChar(0x2022) ; Bullet
else if (Ebene = 5)
SendUnicodeChar(0x2640) ; Piktogramm weiblich
else if (Ebene = 6)
@@ -100,11 +100,11 @@ neo_2:
CompKey := "2"
}
else if (Ebene = 2)
- SendUnicodeChar(0x2116) ; numero
+ SendUnicodeChar(0x2116) ; Numero
else if (Ebene = 3)
- SendUnicodeChar(0x00B2) ; 2 Hochgestellte
+ SendUnicodeChar(0x00B2) ; Hochgestellte 2
else if (Ebene = 4)
- SendUnicodeChar(0x2023) ; aufzaehlungspfeil
+ SendUnicodeChar(0x2023) ; Aufzählungspfeil
else if (Ebene = 5)
SendUnicodeChar(0x26A5) ; Piktogramm Zwitter
else if (Ebene = 6)
@@ -132,7 +132,7 @@ neo_3:
else if (Ebene = 2)
send §
else if (Ebene = 3)
- SendUnicodeChar(0x00B3) ; 3 Hochgestellte
+ SendUnicodeChar(0x00B3) ; Hochgestellte 3
else if (Ebene = 4)
{
CompKey := PriorCompKey
@@ -161,11 +161,11 @@ neo_4:
CompKey := "4"
}
else if (Ebene = 2)
- SendUnicodeChar(0x00BB) ; », Double guillemot right
+ SendUnicodeChar(0x00BB) ; Double guillemot right
else if (Ebene = 3)
Send {blind}› ; Single guillemot right
else if (Ebene = 4)
- Send {blind}{PgUp} ; Prev
+ Send {blind}{PgUp}
else if (Ebene = 5)
SendUnicodeChar(0x2113) ; Script small L
else if (Ebene = 6)
@@ -295,7 +295,7 @@ neo_8:
else if (Ebene = 4)
Send {blind}{NumpadDiv}
else if (Ebene = 5)
- SendUnicodeChar(0x27E8) ;bra (öffnende spitze klammer)
+ SendUnicodeChar(0x27E8) ; bra (öffnende spitze Klammer)
else if (Ebene = 6)
SendUnicodeChar(0x2204) ; es existiert nicht
return
@@ -323,7 +323,7 @@ neo_9:
else if (Ebene = 4)
Send {blind}{NumpadMult}
else if (Ebene = 5)
- SendUnicodeChar(0x27E9) ;ket (schließende spitze klammer)
+ SendUnicodeChar(0x27E9) ; ket (schließende spitze Klammer)
else if (Ebene = 6)
SendUnicodeChar(0x2226) ; nicht parallel
return
@@ -370,11 +370,11 @@ neo_strich:
SendUnicodeChar(0x2013) ; Gedankenstrich
else if (Ebene = 3)
SendUnicodeChar(0x2014) ; Englischer Gedankenstrich (Geviertstrich)
- else if (Ebene = 4)
+ else if (Ebene = 4) ; leer
{
CompKey := PriorCompKey
DeadKey := PriorDeadKey
- } ; leer
+ }
else if (Ebene = 5)
SendUnicodeChar(0x2011) ; geschützter Bindestrich (Bindestrich ohne Zeilenumbruch)
else if (Ebene = 6)
@@ -447,11 +447,11 @@ neo_v:
else if (Ebene = 4)
if (not(lernModus) or lernModus_neo_Backspace)
Send {blind}{Backspace}
- else
+ else ; leer
{
CompKey := PriorCompKey
DeadKey := PriorDeadKey
- } ; leer
+ }
else if (Ebene = 6)
SendUnicodeChar(0x2259) ; estimates
return
@@ -461,11 +461,11 @@ return
neo_l:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x013A,0x0139)
- or CheckDeadUni12("a3",0x013C,0x013B)
- or CheckDeadUni12("c2",0x013E,0x013D)
- or CheckDeadUni12("c4",0x0140,0x013F)
- or CheckDeadUni12("c6",0x1E37,0x1E36)
- or CheckDeadUni12("t4",0x0142,0x0141)))
+ or CheckDeadUni12("a3",0x013C,0x013B)
+ or CheckDeadUni12("c2",0x013E,0x013D)
+ or CheckDeadUni12("c4",0x0140,0x013F)
+ or CheckDeadUni12("c6",0x1E37,0x1E36)
+ or CheckDeadUni12("t4",0x0142,0x0141)))
OutputChar("l","L")
else if (Ebene = 3)
send {blind}[
@@ -481,27 +481,26 @@ return
neo_c:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x0107,0x0106)
- or CheckDeadUni12("a3",0x00E7,0x00E6)
- or CheckDeadUni12("a4",0x010B,0x010A)
- or CheckDeadUni12("c1",0x0109,0x0108)
- or CheckDeadUni12("c2",0x010D,0x010C)
- or CheckCompAsc12("o","©","©")
- or CheckCompAsc12("O","©","©")))
+ or CheckDeadUni12("a3",0x00E7,0x00E6)
+ or CheckDeadUni12("a4",0x010B,0x010A)
+ or CheckDeadUni12("c1",0x0109,0x0108)
+ or CheckDeadUni12("c2",0x010D,0x010C)
+ or CheckCompAsc("o","©")))
OutputChar("c","C")
else if (Ebene = 3)
send {blind}]
else if (Ebene = 4)
if (not(lernModus) or lernModus_neo_Entf)
Send {blind}{Del}
- else
+ else ; leer
{
CompKey := PriorCompKey
DeadKey := PriorDeadKey
- } ; leer
+ }
else if (Ebene = 5)
- SendUnicodeChar(0x03C7) ;chi
+ SendUnicodeChar(0x03C7) ; chi
else if (Ebene = 6)
- SendUnicodeChar(0x2102) ; C (Komplexe Zahlen)
+ SendUnicodeChar(0x2102) ; C (Komplexe Zahlen)
return
neo_w:
@@ -509,10 +508,9 @@ neo_w:
if (Ebene12 and !(CheckDeadUni12("c1",0x0175,0x0174)))
OutputChar("w","W")
else if (Ebene = 3)
- SendUnicodeChar(0x005E) ; untotes ^ - Unicode-Name: CIRCUMFLEX ACCENT
- ;send {^}{space} ; Funktioniert nicht unter Java-Programmen
+ SendUnicodeChar(0x005E) ; Zirkumflex
else if (Ebene = 4)
- Send {blind}{Insert}
+ Send {blind}{Insert} ; Einfg
else if (Ebene = 5)
SendUnicodeChar(0x03C9) ; omega
else if (Ebene = 6)
@@ -522,7 +520,7 @@ return
neo_k:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a3",0x0137,0x0136)
- or CheckDeadUni12("c6",0x1E33,0x1E32)))
+ or CheckDeadUni12("c6",0x1E33,0x1E32)))
OutputChar("k","K")
else if (Ebene = 3)
send {blind}{!}
@@ -537,9 +535,9 @@ return
neo_h:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a4",0x1E23,0x1E22)
- or CheckDeadUni12("c1",0x0125,0x0124)
- or CheckDeadUni12("c5",0x0127,0x0126)
- or CheckDeadUni12("c6",0x1E25,0x1E24)))
+ or CheckDeadUni12("c1",0x0125,0x0124)
+ or CheckDeadUni12("c5",0x0127,0x0126)
+ or CheckDeadUni12("c6",0x1E25,0x1E24)))
OutputChar("h","H")
else if ((Ebene = 3) and !(CheckDeadUni("c5",0x2264))) ; kleiner gleich
send {blind}<
@@ -547,27 +545,27 @@ neo_h:
or CheckDeadUni("c5",0x2087)))
Send {blind}{NumPad7}
else if (Ebene = 5)
- SendUnicodeChar(0x03C8) ;psi
+ SendUnicodeChar(0x03C8) ; psi
else if (Ebene = 6)
- SendUnicodeChar(0x03A8) ; Psi
+ SendUnicodeChar(0x03A8) ; Psi
return
neo_g:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a3",0x0123,0x0122)
- or CheckDeadUni12("a4",0x0121,0x0120)
- or CheckDeadUni12("c1",0x011D,0x011C)
- or CheckDeadUni12("c3",0x011F,0x011E)))
+ or CheckDeadUni12("a4",0x0121,0x0120)
+ or CheckDeadUni12("c1",0x011D,0x011C)
+ or CheckDeadUni12("c3",0x011F,0x011E)))
OutputChar("g","G")
- else if ((Ebene = 3) and !(CheckDeadUni("c5",0x2265))) ; größer gleich
- send {blind}>
+ else if ((Ebene = 3) and !(CheckDeadUni("c5",0x2265)))
+ send {blind}> ; größer gleich
else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2078)
- or CheckDeadUni("c5",0x2088)))
+ or CheckDeadUni("c5",0x2088)))
Send {blind}{NumPad8}
else if (Ebene = 5)
- SendUnicodeChar(0x03B3) ;gamma
+ SendUnicodeChar(0x03B3) ; gamma
else if (Ebene = 6)
- SendUnicodeChar(0x0393) ; Gamma
+ SendUnicodeChar(0x0393) ; Gamma
return
neo_f:
@@ -576,19 +574,19 @@ neo_f:
or CheckDeadUni12("t4",0x0192,0x0191)))
OutputChar("f","F")
else if ((Ebene = 3) and !(CheckDeadUni("a6",0x2257) ; ring equal to
- or CheckDeadUni("c1",0x2259) ; entspricht
- or CheckDeadUni("c2",0x225A) ; EQUIANGULAR TO
- or CheckDeadUni("c5",0x2261) ; identisch
- or CheckDeadUni("t1",0x2245) ; ungefähr gleich
- or CheckDeadUni("t4",0x2260))) ; ungleich
+ or CheckDeadUni("c1",0x2259) ; entspricht
+ or CheckDeadUni("c2",0x225A) ; EQUIANGULAR TO
+ or CheckDeadUni("c5",0x2261) ; identisch
+ or CheckDeadUni("t1",0x2245) ; ungefähr gleich
+ or CheckDeadUni("t4",0x2260))) ; ungleich
send {blind}`=
else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2079)
- or CheckDeadUni("c5",0x2089)))
- Send {blind}{NumPad9}
+ or CheckDeadUni("c5",0x2089)))
+ send {blind}{NumPad9}
else if (Ebene = 5)
SendUnicodeChar(0x03C6) ; phi
else if (Ebene = 6)
- SendUnicodeChar(0x03A6) ; Phi
+ SendUnicodeChar(0x03A6) ; Phi
return
neo_q:
@@ -611,27 +609,27 @@ neo_sz:
if (Ebene = 1)
if (GetKeyState("CapsLock","T"))
SendUnicodeChar(0x1E9E) ; versal-ß
- else if (LangSTastatur = 1)
+ else if LangSTastatur
send {blind}s
else
send ß
else if (Ebene = 2)
if (GetKeyState("CapsLock","T"))
- if (LangSTastatur = 1)
+ if LangSTastatur
send {blind}s
else
send ß
else
SendUnicodeChar(0x1E9E) ; versal-ß
else if (Ebene = 3)
- if (LangSTastatur = 1)
+ if LangSTastatur
send ß
else
SendUnicodeChar(0x017F) ; langes s
else if (Ebene = 5)
- SendUnicodeChar(0x03C2) ; varsigma
+ SendUnicodeChar(0x03C2) ; varsigma
else if (Ebene = 6)
- SendUnicodeChar(0x2218) ; Verknüpfungsoperator
+ SendUnicodeChar(0x2218) ; Verknüpfungsoperator
return
@@ -639,7 +637,7 @@ neo_tot3:
EbeneAktualisieren()
if (Ebene = 1)
{
- deadUni(0x02DC) ;Tilde, tot
+ deadUni(0x02DC) ; Tilde, tot
DeadKey := "t1"
}
else if (Ebene = 2)
@@ -659,7 +657,7 @@ neo_tot3:
}
else if (Ebene = 5)
{
- deadUni(0x02DD) ;Doppelakut
+ deadUni(0x02DD) ; Doppelakut
DeadKey := "t5"
}
else if (Ebene = 6)
@@ -680,26 +678,26 @@ return
neo_u:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x00FA,0x00DA)
- or CheckDeadUni12("a2",0x00F9,0x00D9)
- or CheckDeadUni12("a5",0x0173,0x0172)
- or CheckDeadUni12("a6",0x016F,0x016E)
- or CheckDeadUni12("c1",0x00FB,0x00DB)
- or CheckDeadUni12("c2",0x01D4,0x01D3)
- or CheckDeadUni12("c3",0x016D,0x016C)
- or CheckDeadUni12("t1",0x0169,0x0168)
- or CheckDeadUni12("t2",0x016B,0x016A)
- or CheckDeadAsc12("t3","ü","Ü")
- or CheckDeadUni12("t5",0x0171,0x0170)))
+ or CheckDeadUni12("a2",0x00F9,0x00D9)
+ or CheckDeadUni12("a5",0x0173,0x0172)
+ or CheckDeadUni12("a6",0x016F,0x016E)
+ or CheckDeadUni12("c1",0x00FB,0x00DB)
+ or CheckDeadUni12("c2",0x01D4,0x01D3)
+ or CheckDeadUni12("c3",0x016D,0x016C)
+ or CheckDeadUni12("t1",0x0169,0x0168)
+ or CheckDeadUni12("t2",0x016B,0x016A)
+ or CheckDeadAsc12("t3","ü","Ü")
+ or CheckDeadUni12("t5",0x0171,0x0170)))
OutputChar("u","U")
else if (Ebene = 3)
send {blind}\
else if (Ebene = 4)
Send {blind}{Home}
- else if (Ebene = 5)
+ else if (Ebene = 5) ; leer
{
CompKey := PriorCompKey
DeadKey := PriorDeadKey
- } ; leer
+ }
else if (Ebene = 6)
SendUnicodeChar(0x222E) ; contour integral
return
@@ -707,21 +705,21 @@ return
neo_i:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x00ED,0x00CD)
- or CheckDeadUni12("a2",0x00EC,0x00CC)
- or CheckDeadUni12("a4",0x012F,0x012E)
- or CheckDeadUni12("a5",0x0131,0x0130)
- or CheckDeadUni12("c1",0x00EE,0x00CE)
- or CheckDeadUni12("c2",0x01D0,0x01CF)
- or CheckDeadUni12("c3",0x012D,0x012C)
- or CheckDeadUni12("t1",0x0129,0x0128)
- or CheckDeadUni12("t2",0x012B,0x012A)
- or CheckDeadAsc12("t3","ï","Ï")))
+ or CheckDeadUni12("a2",0x00EC,0x00CC)
+ or CheckDeadUni12("a4",0x012F,0x012E)
+ or CheckDeadUni12("a5",0x0131,0x0130)
+ or CheckDeadUni12("c1",0x00EE,0x00CE)
+ or CheckDeadUni12("c2",0x01D0,0x01CF)
+ or CheckDeadUni12("c3",0x012D,0x012C)
+ or CheckDeadUni12("t1",0x0129,0x0128)
+ or CheckDeadUni12("t2",0x012B,0x012A)
+ or CheckDeadAsc12("t3","ï","Ï")))
OutputChar("i","I")
else if (Ebene = 3)
send {blind}`/
else if (Ebene = 4)
Send {Blind}{Left}
- else if (Ebene = 5 )
+ else if (Ebene = 5)
SendUnicodeChar(0x03B9) ; iota
else if (Ebene = 6)
SendUnicodeChar(0x222B) ; integral
@@ -730,65 +728,65 @@ return
neo_a:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x00E1,0x00C1)
- or CheckDeadUni12("a2",0x00E0,0x00C0)
- or CheckDeadUni12("a5",0x0105,0x0104)
- or CheckDeadAsc12("a6","å","Å")
- or CheckDeadUni12("c1",0x00E2,0x00C2)
- or CheckDeadUni12("c2",0x01CE,0x01CD)
- or CheckDeadUni12("c3",0x0103,0x0102)
- or CheckDeadUni12("t1",0x00E3,0x00C3)
- or CheckDeadUni12("t2",0x0101,0x0100)
- or CheckDeadAsc12("t3","ä","Ä")))
+ or CheckDeadUni12("a2",0x00E0,0x00C0)
+ or CheckDeadUni12("a5",0x0105,0x0104)
+ or CheckDeadAsc12("a6","å","Å")
+ or CheckDeadUni12("c1",0x00E2,0x00C2)
+ or CheckDeadUni12("c2",0x01CE,0x01CD)
+ or CheckDeadUni12("c3",0x0103,0x0102)
+ or CheckDeadUni12("t1",0x00E3,0x00C3)
+ or CheckDeadUni12("t2",0x0101,0x0100)
+ or CheckDeadAsc12("t3","ä","Ä")))
OutputChar("a","A")
else if (Ebene = 3)
send {blind}{{}
else if (Ebene = 4)
Send {Blind}{Down}
else if (Ebene = 5)
- SendUnicodeChar(0x03B1) ;alpha
+ SendUnicodeChar(0x03B1) ; alpha
else if (Ebene = 6)
- SendUnicodeChar(0x2200) ;für alle
+ SendUnicodeChar(0x2200) ; für alle
return
neo_e:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x00E9,0x00C9)
- or CheckDeadUni12("a2",0x00E8,0x00C8)
- or CheckDeadUni12("a4",0x0117,0x0116)
- or CheckDeadUni12("a5",0x0119,0x0118)
- or CheckDeadUni12("c1",0x00EA,0x00CA)
- or CheckDeadUni12("c2",0x011B,0x011A)
- or CheckDeadUni12("c3",0x0115,0x0114)
- or CheckDeadUni12("t2",0x0113,0x0112)
- or CheckDeadAsc12("t3","ë","Ë")
- or CheckCompAsc12("a","æ","Æ")
- or CheckCompAsc12("A","Æ","Æ")
- or CheckCompAsc12("o","œ","Œ")
- or CheckCompAsc12("O","Œ","Œ")))
+ or CheckDeadUni12("a2",0x00E8,0x00C8)
+ or CheckDeadUni12("a4",0x0117,0x0116)
+ or CheckDeadUni12("a5",0x0119,0x0118)
+ or CheckDeadUni12("c1",0x00EA,0x00CA)
+ or CheckDeadUni12("c2",0x011B,0x011A)
+ or CheckDeadUni12("c3",0x0115,0x0114)
+ or CheckDeadUni12("t2",0x0113,0x0112)
+ or CheckDeadAsc12("t3","ë","Ë")
+ or CheckCompAsc12("a","æ","Æ")
+ or CheckCompAsc12("A","Æ","Æ")
+ or CheckCompAsc12("o","œ","Œ")
+ or CheckCompAsc12("O","Œ","Œ")))
OutputChar("e","E")
- else if (Ebene = 3) ; {
+ else if (Ebene = 3)
send {blind}{}}
else if (Ebene = 4)
Send {Blind}{Right}
else if (Ebene = 5)
- SendUnicodeChar(0x03B5) ;epsilon
+ SendUnicodeChar(0x03B5) ; epsilon
else if (Ebene = 6)
- SendUnicodeChar(0x2203) ;es existiert
+ SendUnicodeChar(0x2203) ; es existiert
return
neo_o:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x00F3,0x00D3)
- or CheckDeadUni12("a2",0x00F2,0x00D2)
- or CheckDeadUni12("a5",0x01EB,0x01EA)
- or CheckDeadUni12("c1",0x00F4,0x00D4)
- or CheckDeadUni12("c2",0x01D2,0x01D1)
- or CheckDeadUni12("c3",0x014F,0x014E)
- or CheckDeadUni12("t1",0x00F5,0x00D5)
- or CheckDeadUni12("t2",0x014D,0x014C)
- or CheckDeadAsc12("t3","ö","Ö")
- or CheckDeadUni12("t4",0x00F8,0x00D8)
- or CheckDeadUni12("t5",0x0151,0x0150)))
+ or CheckDeadUni12("a2",0x00F2,0x00D2)
+ or CheckDeadUni12("a5",0x01EB,0x01EA)
+ or CheckDeadUni12("c1",0x00F4,0x00D4)
+ or CheckDeadUni12("c2",0x01D2,0x01D1)
+ or CheckDeadUni12("c3",0x014F,0x014E)
+ or CheckDeadUni12("t1",0x00F5,0x00D5)
+ or CheckDeadUni12("t2",0x014D,0x014C)
+ or CheckDeadAsc12("t3","ö","Ö")
+ or CheckDeadUni12("t4",0x00F8,0x00D8)
+ or CheckDeadUni12("t5",0x0151,0x0150)))
OutputChar("o","O")
else if (Ebene = 3)
send {blind}*
@@ -803,35 +801,55 @@ return
neo_s:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x015B,0x015A)
- or CheckDeadUni12("a3",0x015F,0x015E)
- or CheckDeadUni12("a4",0x1E61,0x1E60)
- or CheckDeadUni12("c1",0x015D,0x015C)
- or CheckDeadUni12("c2",0x0161,0x0160)
- or CheckDeadUni12("c6",0x1E63,0x1A62)))
+ or CheckDeadUni12("a3",0x015F,0x015E)
+ or CheckDeadUni12("a4",0x1E61,0x1E60)
+ or CheckDeadUni12("c1",0x015D,0x015C)
+ or CheckDeadUni12("c2",0x0161,0x0160)
+ or CheckDeadUni12("c6",0x1E63,0x1A62)))
{
if (Ebene = 1)
{
if LangSTastatur
if (GetKeyState("CapsLock","T"))
+ {
send {blind}s
+ if (PriorDeadKey = "comp")
+ Compkey := "s"
+ }
else
+ {
SendUnicodeChar(0x017F) ;langes S
+ if (PriorDeadKey = "comp")
+ CompKey := "lang_s"
+ }
else
+ {
send {blind}s
- if (PriorDeadKey = "comp")
- CompKey := "s"
+ if (PriorDeadKey = "comp")
+ CompKey := "s"
+ }
}
else if (Ebene = 2)
{
if LangSTastatur
if (GetKeyState("CapsLock","T"))
+ {
SendUnicodeChar(0x017F) ;langes S
+ if (PriorDeadKey = "comp")
+ CompKey := "lang_s"
+ }
else
+ {
send {blind}S
+ if (PriorDeadKey = "comp")
+ CompKey := "s"
+ }
else
+ {
send {blind}S
- if (PriorDeadKey = "comp")
- CompKey := "S"
+ if (PriorDeadKey = "comp")
+ CompKey := "S"
+ }
}
}
else if (Ebene = 3)
@@ -841,21 +859,21 @@ neo_s:
else if (Ebene = 5)
SendUnicodeChar(0x03C3) ;sigma
else if (Ebene = 6)
- SendUnicodeChar(0x03A3) ; Sigma
+ SendUnicodeChar(0x03A3) ;Sigma
return
neo_n:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x0144,0x0143)
- or CheckDeadUni12("a3",0x0146,0x0145)
- or CheckDeadUni12("a4",0x1E45,0x1E44)
- or CheckDeadUni12("c2",0x0148,0x0147)
- or CheckDeadUni12("t1",0x00F1,0x00D1)))
+ or CheckDeadUni12("a3",0x0146,0x0145)
+ or CheckDeadUni12("a4",0x1E45,0x1E44)
+ or CheckDeadUni12("c2",0x0148,0x0147)
+ or CheckDeadUni12("t1",0x00F1,0x00D1)))
OutputChar("n","N")
else if (Ebene = 3)
- send {blind}( ; )
+ send {blind}(
else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2074)
- or CheckDeadUni("c5",0x2084)))
+ or CheckDeadUni("c5",0x2084)))
Send {blind}{NumPad4}
else if (Ebene = 5)
SendUnicodeChar(0x03BD) ; nu
@@ -866,17 +884,17 @@ return
neo_r:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x0155,0x0154)
- or CheckDeadUni12("a3",0x0157,0x0156)
- or CheckDeadUni12("a4",0x0E59,0x0E58)
- or CheckDeadUni12("c2",0x0159,0x0158)
- or CheckDeadUni12("c6",0x1E5B,0x1E5A)
- or CheckCompAsc12("o","®","®")
- or CheckCompAsc12("O","®","®")))
+ or CheckDeadUni12("a3",0x0157,0x0156)
+ or CheckDeadUni12("a4",0x0E59,0x0E58)
+ or CheckDeadUni12("c2",0x0159,0x0158)
+ or CheckDeadUni12("c6",0x1E5B,0x1E5A)
+ or CheckCompAsc12("o","®","®")
+ or CheckCompAsc12("O","®","®")))
OutputChar("r","R")
- else if (Ebene = 3) ;(
+ else if (Ebene = 3)
send {blind})
else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2075)
- or CheckDeadUni("c5",0x2085)))
+ or CheckDeadUni("c5",0x2085)))
Send {blind}{NumPad5}
else if (Ebene = 5)
SendUnicodeChar(0x03F1) ; rho symbol (varrho)
@@ -887,20 +905,20 @@ return
neo_t:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a3",0x0163,0x0162)
- or CheckDeadUni12("a4",0x1E6B,0x1E6A)
- or CheckDeadUni12("c2",0x0165,0x0164)
- or CheckDeadUni12("c5",0x0167,0x0166)
- or CheckDeadUni12("c6",0x1E6D,0x1E6C)))
+ or CheckDeadUni12("a4",0x1E6B,0x1E6A)
+ or CheckDeadUni12("c2",0x0165,0x0164)
+ or CheckDeadUni12("c5",0x0167,0x0166)
+ or CheckDeadUni12("c6",0x1E6D,0x1E6C)))
OutputChar("t","T")
else if (Ebene = 3)
- send {blind}- ; Bis
+ send {blind}- ; Bisstrich
else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2076)
or CheckDeadUni("c5",0x2086)))
Send {blind}{NumPad6}
else if (Ebene = 5)
SendUnicodeChar(0x03C4) ; tau
else if (Ebene = 6)
- SendUnicodeChar(0x2202 ) ; partielle Ableitung
+ SendUnicodeChar(0x2202) ; partielle Ableitung
return
neo_d:
@@ -916,16 +934,16 @@ neo_d:
else if (Ebene = 4)
send `,
else if (Ebene = 5)
- SendUnicodeChar(0x03B4) ;delta
+ SendUnicodeChar(0x03B4) ; delta
else if (Ebene = 6)
- SendUnicodeChar(0x0394) ; Delta
+ SendUnicodeChar(0x0394) ; Delta
return
neo_y:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x00FD,0x00DD)
- or CheckDeadUni12("c1",0x0177,0x0176)
- or CheckDeadAsc12("t3","ÿ",Ÿ)))
+ or CheckDeadUni12("c1",0x0177,0x0176)
+ or CheckDeadAsc12("t3","ÿ","Ÿ")))
OutputChar("y","Y")
else if (Ebene = 3)
send {blind}@
@@ -946,19 +964,19 @@ return
neo_ü:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x01D8,0x01D7)
- or CheckDeadUni12("a2",0x01DC,0x01DB)
- or CheckDeadUni12("c2",0x01DA,0x01D9)
- or CheckDeadUni12("t2",0x01D6,0x01D5)))
+ or CheckDeadUni12("a2",0x01DC,0x01DB)
+ or CheckDeadUni12("c2",0x01DA,0x01D9)
+ or CheckDeadUni12("t2",0x01D6,0x01D5)))
OutputChar("ü","Ü")
else if (Ebene = 3)
send {#}
else if (Ebene = 4)
Send {blind}{Esc}
- else if (Ebene = 5)
+ else if (Ebene = 5) ; leer
{
DeadKey := PriorDeadKey
CompKey := PriorCompKey
- } ; leer
+ }
else if (Ebene = 6)
SendUnicodeChar(0x221D) ; proportional
return
@@ -987,11 +1005,11 @@ neo_ä:
else if (Ebene = 3)
send {blind}|
else if (Ebene = 4)
- Send {blind}{PgDn} ; Next
+ Send {blind}{PgDn} ; Next
else if (Ebene = 5)
SendUnicodeChar(0x03B7) ; eta
else if (Ebene = 6)
- SendUnicodeChar(0x211C) ; altes R
+ SendUnicodeChar(0x211C) ; Fraktur R
return
neo_p:
@@ -1003,29 +1021,29 @@ neo_p:
else if (Ebene = 4)
Send {blind}{Enter}
else if (Ebene = 5)
- SendUnicodeChar(0x03C0) ;pi
+ SendUnicodeChar(0x03C0) ; pi
else if (Ebene = 6)
- SendUnicodeChar(0x03A0) ; Pi
+ SendUnicodeChar(0x03A0) ; Pi
return
neo_z:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x017A,0x0179)
- or CheckDeadUni12("a4",0x017C,0x017B)
- or CheckDeadUni12("c2",0x017E,0x017D)
- or CheckDeadUni12("c6",0x1E93,0x1E92)))
+ or CheckDeadUni12("a4",0x017C,0x017B)
+ or CheckDeadUni12("c2",0x017E,0x017D)
+ or CheckDeadUni12("c6",0x1E93,0x1E92)))
OutputChar("z","Z")
else if (Ebene = 3)
- send ``{space} ; untot
+ send ``{space} ; untot
else if (Ebene = 4)
{
DeadKey := PriorDeadKey
CompKey := PriorCompKey
} ; leer
else if (Ebene = 5)
- SendUnicodeChar(0x03B6) ;zeta
+ SendUnicodeChar(0x03B6) ; zeta
else if (Ebene = 6)
- SendUnicodeChar(0x2124) ; Z (ganze Zahlen)
+ SendUnicodeChar(0x2124) ; Z (ganze Zahlen)
return
neo_b:
@@ -1045,17 +1063,14 @@ return
neo_m:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a4",0x1E41,0x1E40)
- or CheckDeadUni12("c6",0x1E43,0x1E42)
- or CheckCompUni12("t",0x2122,0x2122) ; TM
- or CheckCompUni12("T",0x2122,0x2122) ; TM
- or CheckCompUni12("s",0x2120,0x2120) ; SM
- or CheckCompUni12("S",0x2120,0x2120))) ; SM
-
+ or CheckDeadUni12("c6",0x1E43,0x1E42)
+ or CheckCompUni12("t",0x2122,0x2122) ; TM
+ or CheckCompUni12("s",0x2120,0x2120))) ; SM
OutputChar("m","M")
else if (Ebene = 3)
send {blind}`%
else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B9)
- or CheckDeadUni("c5",0x2081)))
+ or CheckDeadUni("c5",0x2081)))
Send {blind}{NumPad1}
else if (Ebene = 5)
SendUnicodeChar(0x03BC) ; griechisch mu, micro wäre 0x00B5
@@ -1075,7 +1090,7 @@ neo_komma:
else if (Ebene = 3)
send {blind}"
else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B2)
- or CheckDeadUni("c5",0x2082)))
+ or CheckDeadUni("c5",0x2082)))
Send {blind}{NumPad2}
else if (Ebene = 5)
SendUnicodeChar(0x03C1) ; rho
@@ -1095,12 +1110,12 @@ neo_punkt:
else if (Ebene = 3)
send {blind}'
else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B3)
- or CheckDeadUni("c5",0x2083)))
+ or CheckDeadUni("c5",0x2083)))
Send {blind}{NumPad3}
else if (Ebene = 5)
SendUnicodeChar(0x03D1) ; theta symbol (vartheta)
else if (Ebene = 6)
- SendUnicodeChar(0x0398) ; Theta
+ SendUnicodeChar(0x0398) ; Theta
return
@@ -1108,12 +1123,12 @@ neo_j:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("c1",0x0135,0x0134)
or CheckDeadUni12("c2",0x01F0,"")
- or CheckCompUni12("i",0x0133,"") ; ij
- or CheckCompUni12("I","",0x0132) ; IJ
- or CheckCompUni12("l",0x01C9,"") ; lj
- or CheckCompUni12("L",0x01C8,0x01C7) ; Lj/LJ
- or CheckCompUni12("n",0x01CC,"") ; nj
- or CheckCompUni12("N",0x01CB,0x01CA))) ; Nj/NJ
+ or CheckCompUni("i",0x0133) ; ij
+ or CheckCompUni("l",0x01C9) ; lj
+ or CheckCompUni("n",0x01CC) ; nj
+ or CheckCompUni("I",0x0132) ; IJ
+ or CheckCompUni12("L",0x01C8,0x01C7) ; Lj/LJ
+ or CheckCompUni12("N",0x01CB,0x01CA))) ; Nj/NJ
OutputChar("j","J")
else if (Ebene = 3)
send {blind}`;
@@ -1129,343 +1144,325 @@ return
Numpad
-
- folgende Tasten verhalten sich bei ein- und ausgeschaltetem
- NumLock gleich:
*/
+neo_NumLock:
+ EbeneAktualisieren()
+ if (Ebene = 1)
+ send `=
+ if (Ebene = 2) ; Funktioniert nicht
+ {
+ SetNumLockState
+ send {NumLock}
+ }
+ if (Ebene = 3)
+ SendUnicodeChar(0x2248) ; Fast gleich
+ if (Ebene = 4)
+ SendUnicodeChar(0x2260) ; Ungleich zu
+return
+
neo_NumpadDiv:
EbeneAktualisieren()
- if ((Ebene = 1) or (Ebene = 2))
+ if Ebene14
send {blind}{NumpadDiv}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x2215) ; Slash
else if (Ebene = 3)
send {blind}÷
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x2215) ; slash
return
neo_NumpadMult:
EbeneAktualisieren()
- if ((Ebene = 1) or (Ebene = 2))
+ if Ebene14
send {blind}{NumpadMult}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x22C5) ; Cdot
else if (Ebene = 3)
send {blind}×
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x22C5) ; cdot
return
neo_NumpadSub:
EbeneAktualisieren()
- if (((Ebene = 1) or (Ebene = 2)) and !(CheckDeadUni("c1",0x207B)
- or CheckDeadUni("c5",0x208B)))
+ if (Ebene14 and !(CheckDeadUni("c1",0x207B)
+ or CheckDeadUni("c5",0x208B)))
send {blind}{NumpadSub}
else if (Ebene = 3)
- SendUnicodeChar(0x2212) ; echtes minus
+ SendUnicodeChar(0x2212) ; Echtes Minus
return
neo_NumpadAdd:
EbeneAktualisieren()
- if (((Ebene = 1) or (Ebene = 2)) and !(CheckDeadUni("c1",0x207A)
- or CheckDeadUni("c5",0x208A)))
+ if (Ebene14 and !(CheckDeadUni("c1",0x207A)
+ or CheckDeadUni("c5",0x208A)))
send {blind}{NumpadAdd}
else if (Ebene = 3)
send {blind}±
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x2213) ; -+
+ else if (Ebene = 2)
+ SendUnicodeChar(0x2213) ; Inverses ±
return
neo_NumpadEnter:
- EbeneAktualisieren()
- if ((Ebene = 1) or (Ebene = 2))
- send {blind}{NumpadEnter}
- else if (Ebene = 3)
- SendUnicodeChar(0x2260) ; neq
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x2248) ; approx
+ send {blind}{NumpadEnter}
return
-/*
- folgende Tasten verhalten sich bei ein- und ausgeschaltetem NumLock
- unterschiedlich
-*/
-
-
-
neo_Numpad7:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadHome}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadHome}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
+ if (Ebene = 1)
{
- if (Ebene = 1)
+ if NumLock
send {blind}{Numpad7}
else
- send {blind){Shift up}{Numpad7}{Shift down}
-
+ send {blind){Shift up}{Numpad7}
if (PriorDeadKey = "comp")
- CompKey := "Num_7"
+ CompKey := "7"
}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x2020) ; Kreuz
else if (Ebene = 3)
- SendUnicodeChar(0x2195) ; Hoch-Runter-Pfeil
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x226A) ; ll
+ SendUnicodeChar(0x2195) ; Hoch-Runter-Pfeil
+ else if (Ebene = 4)
+ if NumLock
+ send {blind}{Shift up}{NumpadHome}
+ else
+ send {blind}{NumpadHome}
return
neo_Numpad8:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadUp}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadUp}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
+ if ((Ebene = 1) and !(CheckCompUni("1",0x215B) ; 1/8
+ or CheckCompUni("3",0x215C) ; 3/8
+ or CheckCompUni("5",0x215D) ; 5/8
+ or CheckCompUni("7",0x215E))) ; 7/8
{
- if !(CheckCompUni("Num_1",0x215B) ; 1/8
- or CheckCompUni("1",0x215B) ; 1/8
- or CheckCompUni("Num_3",0x215C) ; 3/8
- or CheckCompUni("3",0x215C) ; 3/8
- or CheckCompUni("Num_5",0x215D) ; 3/8
- or CheckCompUni("5",0x215D) ; 5/8
- or CheckCompUni("Num_7",0x215E) ; 7/8
- or CheckCompUni("7",0x215E)) ; 7/8
- if (Ebene = 1)
- send {blind}{Numpad8}
- else
- send {blind){Shift up}{Numpad8}{Shift down}
-
+ if NumLock
+ send {blind}{Numpad8}
+ else
+ send {blind){Shift up}{Numpad8}
if (PriorDeadKey = "comp")
- CompKey := "Num_8"
+ CompKey := "8"
}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x2229) ; Durchschnitt
else if (Ebene = 3)
- SendUnicodeChar(0x2191) ; uparrow
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x2229) ; intersection
+ SendUnicodeChar(0x2191) ; Hochpfeil
+ else if (Ebene = 4)
+ if NumLock
+ send {blind}{Shift up}{NumpadUp}
+ else
+ send {blind}{NumpadUp}
return
neo_Numpad9:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadPgUp}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadPgUp}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
+ if (Ebene = 1)
{
- if (Ebene = 1)
+ if NumLock
send {blind}{Numpad9}
else
- send {blind){Shift up}{Numpad9}{Shift down}
-
+ send {blind){Shift up}{Numpad9}
if (PriorDeadKey = "comp")
- CompKey := "Num_9"
+ CompKey := "9"
}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x2297) ; Tensorprodukt / Vektor in die Ebene zeigend
else if (Ebene = 3)
- SendUnicodeChar(0x2297) ; Tensorprodukt ; Vektor in die Ebene zeigend
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x226B) ; gg
+ SendUnicodeChar(0x220D) ; Kleines umgekehrtes Elementzeichen
+ else if (Ebene = 4)
+ if NumLock
+ send {blind}{Shift up}{NumpadPgUp}
+ else
+ send {blind}{NumpadPgUp}
return
-
-
neo_Numpad4:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadLeft}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadLeft}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
+ if ((Ebene = 1) and !(CheckCompUni("1",0x00BC) ; 1/4
+ or CheckCompUni("3",0x00BE))) ; 3/4
{
- if !(CheckCompUni("Num_1",0x00BC) ; 1/4
- or CheckCompUni("1",0x00BE) ; 1/4
- or CheckCompUni("Num_3",0x00BE) ; 3/4
- or CheckCompUni("3",0x00BE)) ; 3/4
- if (Ebene = 1)
- send {blind}{Numpad4}
- else
- send {blind){Shift up}{Numpad4}{Shift down}
-
+ if NumLock
+ send {blind}{Numpad4}
+ else
+ send {blind){Shift up}{Numpad4}
if (PriorDeadKey = "comp")
- CompKey := "Num_4"
+ CompKey := "4"
}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x2282) ; Teilmenge
else if (Ebene = 3)
- SendUnicodeChar(0x2190) ; leftarrow
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x2282) ; subset of
+ SendUnicodeChar(0x2190) ; Linkspfeil
+ else if (Ebene = 4)
+ if NumLock
+ send {blind}{Shift up}{NumpadLeft}
+ else
+ send {blind}{NumpadLeft}
return
neo_Numpad5:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadClear}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadClear}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
+ if ((Ebene = 1) and !(CheckCompUni("1",0x2155) ; 1/5
+ or CheckCompUni("2",0x2156) ; 2/5
+ or CheckCompUni("3",0x2157) ; 3/5
+ or CheckCompUni("4",0x2158))) ; 4/5
{
- if !(CheckCompUni("Num_1",0x2155) ; 1/5
- or CheckCompUni("1",0x2155) ; 1/5
- or CheckCompUni("Num_2",0x2156) ; 2/5
- or CheckCompUni("2",0x2156) ; 2/5
- or CheckCompUni("Num_3",0x2157) ; 3/5
- or CheckCompUni("3",0x2157) ; 3/5
- or CheckCompUni("Num_4",0x2158) ; 4/5
- or CheckCompUni("4",0x2158)) ; 4/5
- if (Ebene = 1)
- send {blind}{Numpad5}
- else
- send {blind){Shift up}{Numpad5}{Shift down}
-
+ if NumLock
+ send {blind}{Numpad5}
+ else
+ send {blind){Shift up}{Numpad5}
if (PriorDeadKey = "comp")
- CompKey := "Num_5"
+ CompKey := "5"
}
else if (Ebene = 3)
- SendUnicodeChar(0x221E) ; INFINITY
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x220B) ; enthält das Element
+ SendUnicodeChar(0x221E) ; Unendlich
+ else if (Ebene = 2)
+ SendUnicodeChar(0x20AC) ; Euro
+ else if (Ebene = 4) ; Beg
+ if NumLock
+ send {NumPad5}
+ else
+ send {Shift}{Numpad5}
return
neo_Numpad6:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadRight}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadRight}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
+ if ((Ebene = 1) and !(CheckCompUni("1",0x2159) ; 1/6
+ or CheckCompUni("5",0x215a))) ; 5/6
{
- if !(CheckCompUni("Num_1",0x2159) ; 1/6
- or CheckCompUni("1",0x2159) ; 1/6
- or CheckCompUni("Num_5",0x215A) ; 5/6
- or CheckCompUni("5",0x215A)) ; 5/6
- if (Ebene = 1)
- send {blind}{Numpad6}
- else
- send {blind){Shift up}{Numpad6}{Shift down}
-
+ if NumLock
+ send {blind}{Numpad6}
+ else
+ send {blind){Shift up}{Numpad6}
if (PriorDeadKey = "comp")
- CompKey := "Num_6"
+ CompKey := "6"
}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x2283) ; Obermenge
else if (Ebene = 3)
- SendUnicodeChar(0x2192) ; rightarrow
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x2283) ; superset of
+ SendUnicodeChar(0x2192) ; Rechtspfeil
+ else if (Ebene = 4)
+ if NumLock
+ send {blind}{Shift up}{NumpadRight}
+ else
+ send {blind}{NumpadRight}
return
neo_Numpad1:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadEnd}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadEnd}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
+ if (Ebene = 1)
{
- if (Ebene = 1)
+ if NumLock
send {blind}{Numpad1}
else
- send {blind){Shift up}{Numpad1}{Shift down}
-
+ send {blind){Shift up}{Numpad1}
if (PriorDeadKey = "comp")
- CompKey := "Num_1"
+ CompKey := "1"
}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x2714) ; Häkchen
else if (Ebene = 3)
SendUnicodeChar(0x2194) ; Links-Rechts-Pfeil
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x2264) ; leq
+ else if (Ebene = 4)
+ if NumLock
+ send {blind}{Shift up}{NumpadEnd}
+ else
+ send {blind}{NumpadEnd}
return
neo_Numpad2:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadDown}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadDown}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
+ if ((Ebene = 1) and !(CheckCompUni("1",0x00BD))) ; 1/2
{
- if !(CheckCompUni("Num_1",0x00BD) ; 1/2
- or CheckCompUni("1",0x00BD)) ; 1/2
- if (Ebene = 1)
- send {blind}{Numpad2}
- else
- send {blind){Shift up}{Numpad2}{Shift down}
-
+ if NumLock
+ send {blind}{Numpad2}
+ else
+ send {blind){Shift up}{Numpad2}
if (PriorDeadKey = "comp")
- CompKey := "Num_2"
+ CompKey := "2"
}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x222A) ; Vereinigung
else if (Ebene = 3)
- SendUnicodeChar(0x2193) ; downarrow
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x222A) ; vereinigt
+ SendUnicodeChar(0x2192) ; Untenpfeil
+ else if (Ebene = 4)
+ if NumLock
+ send {blind}{Shift up}{NumpadDown}
+ else
+ send {blind}{NumpadDown}
return
neo_Numpad3:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadPgDn}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadPgDn}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
+ if ((Ebene = 1) and !(CheckCompUni("1",0x2153) ; 1/3
+ or CheckCompUni("5",0x2154))) ; 2/3
{
- if !(CheckCompUni("Num_1",0x2153) ; 1/3
- or CheckCompUni("1",0x2154) ; 1/3
- or CheckCompUni("Num_2",0x2154) ; 2/3
- or CheckCompUni("2",0x2154)) ; 2/3
- if (Ebene = 1)
- send {blind}{Numpad3}
- else
- send {blind){Shift up}{Numpad3}{Shift down}
-
+ if NumLock
+ send {blind}{Numpad3}
+ else
+ send {blind){Shift up}{Numpad3}
if (PriorDeadKey = "comp")
- CompKey := "Num_3"
+ CompKey := "3"
}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x2718) ; Kreuzchen
else if (Ebene = 3)
- SendUnicodeChar(0x21CC) ; RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x2265) ; geq
+ SendUnicodeChar(0x2192) ; Rechtspfeil
+ else if (Ebene = 4)
+ if NumLock
+ send {blind}{Shift up}{NumpadPgDn}
+ else
+ send {blind}{NumpadPgDn}
return
neo_Numpad0:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadIns}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadIns}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
+ if (Ebene = 1)
{
- if (Ebene = 1)
+ if NumLock
send {blind}{Numpad0}
else
- send {blind){Shift up}{Numpad0}{Shift down}
-
+ send {blind){Shift up}{Numpad0}
if (PriorDeadKey = "comp")
- CompKey := "Num_0"
+ CompKey := "0"
}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x2030) ; Promille
else if (Ebene = 3)
- send {blind}`%
- else if ((Ebene = 4) or (Ebene = 5))
- send ‰
+ SendUnicodeChar(0x0025) ; Prozent
+ else if (Ebene = 4)
+ if NumLock
+ send {blind}{Shift up}{NumpadIns}
+ else
+ send {blind}{NumpadIns}
return
neo_NumpadDot:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadDel}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadDel}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
- if (Ebene = 1)
+ if (Ebene = 1)
+ {
+ if NumLock
send {blind}{NumpadDot}
- else
- send {blind){Shift up}{NumpadDot}{Shift down}
+ else
+ send {blind){Shift up}{NumpadDot}
+ }
+ else if (Ebene = 2)
+ send `,
else if (Ebene = 3)
send {blind}.
- else if ((Ebene = 4) or (Ebene = 5))
- send `,
+ else if (Ebene = 4)
+ if NumLock
+ send {blind}{Shift up}{NumpadDel}
+ else
+ send {blind}{NumpadDel}
return
+
+
/*
Sondertasten
*/
+
*space::
if ((einHandNeo))
spacepressed := 1
@@ -1512,11 +1509,7 @@ return
/*
Folgende Tasten sind nur aufgeführt, um PriorDeadKey zu leeren.
Irgendwie sieht das noch nicht schön aus. Vielleicht lässt sich dieses
- Problem irgendwie eleganter lösen...
-
- Nachtrag:
- Weil es mit Alt+Tab Probleme gab, wird hier jetzt erstmal rumgeflickschustert,
- bis eine allgemeinere Lösung gefunden wurde.
+ Problem auch eleganter lösen...
*/
*Enter::
@@ -1535,6 +1528,7 @@ return
}
return
+
*Del::
if (not(lernModus) or lernModus_std_Entf)
send {Blind}{Del}
diff --git a/windows/autohotkey/Source/Keys-Qwert-to-Neo.ahk b/windows/autohotkey/Source/Keys-Qwert-to-Neo.ahk
index 8485b03..062fcb2 100644
--- a/windows/autohotkey/Source/Keys-Qwert-to-Neo.ahk
+++ b/windows/autohotkey/Source/Keys-Qwert-to-Neo.ahk
@@ -443,6 +443,7 @@ VK09SC00F::goto neo_tab
}
; Numpad
+*VK90SC145::goto neo_NumLock
*VK6FSC135::goto neo_NumpadDiv
*VK6ASC037::goto neo_NumpadMult
*VK6DSC04A::goto neo_NumpadSub
diff --git a/windows/autohotkey/Source/Methods-Layers.ahk b/windows/autohotkey/Source/Methods-Layers.ahk
index e2cdb99..362858c 100644
--- a/windows/autohotkey/Source/Methods-Layers.ahk
+++ b/windows/autohotkey/Source/Methods-Layers.ahk
@@ -1,103 +1,137 @@
-/*
- ------------------------------------------------------
- Modifier
- ------------------------------------------------------
-*/
-
-
-;LShift+RShift == CapsLock (simuliert)
+; LShift+RShift == CapsLock (simuliert)
; Es werden nur die beiden Tastenkombinationen abgefragt,
; daher kommen LShift und RShift ungehindert bis in die
; Applikation. Dies ist aber merkwürdig, da beide Shift-
; Tasten nun /modifier keys/ werden und, wie in der AHK-
; Hilfe beschrieben, eigentlich nicht mehr bis zur App
; durchkommen sollten.
+; KeyboardLED(4,"switch") hatte ich zuerst genommen, aber
+; das schaltet, oh Wunder, die LED nicht wieder aus.
+isMod2Locked = 0
VKA1SC136 & VKA0SC02A:: ; RShift, dann LShift
VKA0SC02A & VKA1SC136:: ; LShift, dann RShift
-;
-; mit diesen funktioniert das automatische Übernehmen der
-; gedrückten Shift-Tasten nicht, also z.B. Shift-Ins, wenn Ins
-; bei gedrückter Shift-Taste {blind} gesendet wird
-; *VKA1SC136::
-; *VKA0SC02A::
- if (GetKeyState("VKA1SC136", "P") and GetKeyState("VKA0SC02A", "P"))
- send {blind}{CapsLock}
+ if (GetKeyState("VKA1SC136", "P") and GetKeyState("VKA0SC02A", "P"))
+ {
+ if isMod2Locked
+ {
+ isMod2Locked = 0
+ KeyboardLED(4,"off")
+ }
+ else
+ {
+ isMod2Locked = 1
+ KeyBoardLED(4,"on")
+ }
+ }
return
-
-; Mod3+Mod3 == Mod3-Lock
-; Im Gegensatz zu LShift+RShift werden die beiden Tasten
-; _nicht_ zur Applikation weitergeleitet, da '#' kein
-; Modifier ist und CapsLock sonst den CapsLock-Status
-; beeinflusst. Dafür werden sämtliche Events dieser
-; Tasten abgefangen, und nur bei gleichzeitigem Drücken
-; wird der Mod3-Lock aktiviert und angezeigt.
-
-IsMod3Locked := 0
-; VKBFSC02B & VK14SC03A::
-; VK14SC03A & VKBFSC02B::
+;Mod3-Tasten (Wichtig, sie werden sonst nicht verarbeitet!)
*VKBFSC02B:: ; #
*VK14SC03A:: ; CapsLock
- if (GetKeyState("VKBFSC02B", "P") and GetKeyState("VK14SC03A", "P"))
- {
- if (IsMod3Locked)
- {
- IsMod3Locked = 0
- if (zeigeLockBoxen==1)
- {
- MsgBox Mod3-Feststellung aufgebehoben!
- }
- }
- else
- {
- IsMod3Locked = 1
- if (zeigeLockBoxen==1)
- {
- MsgBox Mod3 festgestellt: Um Mod3 wieder zu lösen drücke beide Mod3 Tasten gleichzeitig!
- }
-
- }
- }
return
-; Mod4+Mod4 == Mod4-Lock
-; Wie bei Mod3-Lock werden im Gegensatz zu LShift+RShift
-; die beiden Tasten _nicht_ zur Applikation weitergeleitet,
-; und nur bei gleichzeitigem Drücken wird der Mod4-Lock
-; aktiviert und angezeigt.
+;Mod4+Mod4 == Mod4-Lock
+; Im Gegensatz zu LShift+RShift werden die beiden Tasten
+; _nicht_ zur Applikation weitergeleitet, und nur bei
+; gleichzeitigem Drücken wird der Mod4-Lock aktiviert und
+; angezeigt.
IsMod4Locked := 0
-; VKA5SC138 & VKE2SC056:: ; AltGr, dann <
-; VKE2SC056 & VKA5SC138:: ; <, dann AltGr
*VKA5SC138::
*VKE2SC056::
- if (GetKeyState("VKA5SC138", "P") and GetKeyState("VKE2SC056", "P"))
- {
- ; Mod4-Lock durch Mod4(rechts)+Mod4(links)
- if (IsMod4Locked)
- {
- if (zeigeLockBoxen==1)
- {
- MsgBox Mod4-Feststellung aufgebehoben!
- }
- IsMod4Locked = 0
- if (UseMod4Light==1)
- {
- KeyboardLED(1,"off")
- }
- }
- else
- {
- if (zeigeLockBoxen==1)
- {
- MsgBox Mod4 festgestellt: Um Mod4 wieder zu lösen drücke beide Mod3 Tasten gleichzeitig!
- }
- IsMod4Locked = 1
- if (UseMod4Light==1)
- {
- KeyboardLED(1,"on")
- }
- }
- }
+ if (GetKeyState("VKA5SC138", "P") and GetKeyState("VKE2SC056", "P"))
+ {
+ if IsMod4Locked
+ {
+ if zeigeLockBox
+ MsgBox Mod4-Feststellung aufgebehoben!
+ IsMod4Locked = 0
+ if UseMod4Light
+ KeyboardLED(1,"off")
+ }
+ else
+ {
+ if zeigeLockBox
+ MsgBox Mod4 festgestellt: Um Mod4 wieder zu lösen, drücke beide Mod4-Tasten gleichzeitig!
+ IsMod4Locked = 1
+ if UseMod4Light
+ KeyboardLED(1,"on")
+ }
+ }
return
+
+Ebene12 := 0
+Ebene7 := 0
+Ebene8 := 0
+
+EbeneAktualisieren()
+{
+ global
+ PriorDeadKey := DeadKey
+ PriorCompKey := CompKey
+ DeadKey := ""
+ CompKey := ""
+ Modstate := IsMod4Pressed() . IsMod3Pressed() . IsShiftPressed()
+ if ahkTreiberKombi
+ if ( Modstate = "001")
+ Ebene = 6
+ else
+ Ebene = -1
+ else
+ if (Modstate = "000") ; Ebene 1: Ohne Mod
+ Ebene = 1
+ else if (Modstate = "001") ; Ebene 2: Shift
+ Ebene = 2
+ else if (Modstate = "010") ; Ebene 3: Mod3
+ Ebene = 3
+ else if (Modstate = "100") ; Ebene 4: Mod4
+ Ebene = 4
+ else if (Modstate = "011") ; Ebene 5: Shift+Mod3
+ Ebene = 5
+ else if (Modstate = "110") ; Ebene 6: Mod3+Mod4
+ Ebene = 6
+ else if (Modstate = "101") ; Ebene 7: Shift+Mod4 impliziert Ebene 4
+ {
+ Ebene = 4
+ Ebene7 = 1
+ }
+ else if (Modstate = "111") ; Ebene 8: Shift+Mod3+Mod4 impliziert Ebene 6
+ {
+ Ebene = 6
+ Ebene8 = 1
+ }
+ Ebene12 := ((Ebene = 1) or (Ebene = 2))
+ Ebene14 := ((Ebene = 1) or (Ebene = 4))
+ GetKeyState("NumLock","T")
+}
+
+
+IsShiftPressed()
+{aAAA
+ global
+ return ((GetKeyState("Shift","P")) = !(isMod2Locked)) ;xor
+}
+
+IsMod3Pressed()
+{
+ global
+ return ((GetKeyState("CapsLock","P")) or (GetKeyState("#","P")))
+}
+
+IsMod4Pressed()
+{
+ global
+ if( not(einHandNeo) or not(spacepressed))
+ if IsMod4Locked
+ return (not ( GetKeyState("<","P") or GetKeyState("SC138","P")))
+ else
+ return ( GetKeyState("<","P") or GetKeyState("SC138","P"))
+ else
+ if IsMod4Lock
+ return (not ( GetKeyState("<","P") or GetKeyState("SC138","P") or GetKeyState("ä","P")))
+ else
+ return ( GetKeyState("<","P") or GetKeyState("SC138","P") or GetKeyState("ä","P"))
+}
+
+
diff --git a/windows/autohotkey/Source/Methods-Lights.ahk b/windows/autohotkey/Source/Methods-Lights.ahk
index 4c327e1..860d583 100644
--- a/windows/autohotkey/Source/Methods-Lights.ahk
+++ b/windows/autohotkey/Source/Methods-Lights.ahk
@@ -6,7 +6,7 @@
Benutzungshinweise: Man benutze
KeyboardLED(LEDvalue,"Cmd"), wobei
Cmd = on/off/switch,
- LEDvalue: ScrollLock=1, NumLock=2, CapsLock=4
+ LEDvalue: ScrollLock=1, NumLock=2, CapsLock=4,
bzw. eine beliebige Summe dieser Werte:
AlleAus=0, CapsLock+NumLock=6, etc.
@@ -14,7 +14,7 @@
http://www.autohotkey.com/forum/viewtopic.php?t=10532
Um eventuelle Wechselwirkungen mit dem bestehenden
- Code (insb. der Unicode-Konvertierung) auszuschießen,
+ Code (insb. der Unicode-Konvertierung) auszuschließen,
sind auch alle (Hilfsmethoden) mit dem Postfix LED
versehen worden.
------------------------------------------------------
diff --git a/windows/autohotkey/Source/Methods-Other.ahk b/windows/autohotkey/Source/Methods-Other.ahk
index e80d2e4..610f763 100644
--- a/windows/autohotkey/Source/Methods-Other.ahk
+++ b/windows/autohotkey/Source/Methods-Other.ahk
@@ -1,135 +1,3 @@
-/*
- Funktionen
-*/
-
-/*
-Ebenen laut Referenz:
-1. Ebene (kein Mod) 4. Ebene (Mod4)
-2. Ebene (Umschalt) 5. Ebene (Umschalt+Mod3)
-3. Ebene (Mod3) 6. Ebene (Mod3+Mod4)
-*/
-
-EbeneAktualisieren()
-{
- global
- PriorDeadKey := DeadKey
- PriorCompKey := CompKey
- DeadKey := ""
- CompKey := ""
- Ebene12 := 0
- Ebene7 := 0
- Ebene8 := 0
- Modstate := IsShiftPressed() . IsMod3Pressed() . IsMod4Pressed()
-
- if (ahkTreiberKombi)
- if ( Modstate = "001")
- Ebene = 6
- else
- Ebene = -1
- else
- if (Modstate = "000")
- Ebene = 1 ; Ebene 1: Ohne Mod
- else if (Modstate = "100")
- Ebene = 2 ; Ebene 2: Shift
- else if (Modstate = "010")
- Ebene = 3 ; Ebene 3: Mod3
- else if (Modstate = "001")
- Ebene = 4 ; Ebene 4: Mod4
- else if (Modstate = "110")
- Ebene = 5 ; Ebene 5: Shift+Mod3
- else if (Modstate = "011")
- Ebene = 6 ; Ebene 6: Mod3+Mod4
- else if (Modstate = "101")
- {
- Ebene = 4 ; Ebene 7: Shift+Mod4 impliziert Ebene 4
- Ebene7 = 1
- }
- else if (Modstate = "111")
- {
- Ebene = 6 ; Ebene 8: Shift+Mod3+Mod4 impliziert Ebene 6
- Ebene8 = 1
- }
-
- Ebene12 := ((Ebene = 1) or (Ebene = 2))
-
- if GetKeyState("NumLock","T")
- NumLock = 1
- else
- NumLock = 0
-}
-
-
-IsShiftPressed()
-{
- return GetKeyState("Shift","P")
-}
-
-IsMod3Pressed()
-{
- global
- if (IsMod3Locked)
- {
- return (not ( GetKeyState("CapsLock","P") or GetKeyState("#","P") )) ; # = SC02B
- }
- else {
- return ( GetKeyState("CapsLock","P") or GetKeyState("#","P") ) ; # = SC02B
- }
-}
-
-IsMod4Pressed()
-{
- global
- if( not(einHandNeo) or not(spacepressed) )
- {
- if (IsMod4Locked)
- {
- return (not ( GetKeyState("<","P") or GetKeyState("SC138","P")))
- }
- else {
- return ( GetKeyState("<","P") or GetKeyState("SC138","P"))
- }
- }
- else
- {
- if (IsMod4Locked)
- {
- return (not ( GetKeyState("<","P") or GetKeyState("SC138","P") or GetKeyState("ä","P")))
- }
- else {
- return ( GetKeyState("<","P") or GetKeyState("SC138","P") or GetKeyState("ä","P"))
- }
- }
-
-}
-
-
-SendUnicodeChar(charCode)
-{
- IfWinActive, ahk_class gdkWindowToplevel
- {
- StringLower, charCode, charCode
- send % "^+u" . SubStr(charCode,3) . " "
- } else {
- VarSetCapacity(ki, 28 * 2, 0)
-
- EncodeInteger(&ki + 0, 1)
- EncodeInteger(&ki + 6, charCode)
- EncodeInteger(&ki + 8, 4)
- EncodeInteger(&ki +28, 1)
- EncodeInteger(&ki +34, charCode)
- EncodeInteger(&ki +36, 4|2)
-
- DllCall("SendInput", "UInt", 2, "UInt", &ki, "Int", 28)
- }
-}
-/*
-Über den GTK-Workaround:
-Dieser basiert auf http://www.autohotkey.com/forum/topic32947.html
-
-Der Aufruf von »SubStr(charCode,3)« geht davon aus, dass alle charCodes in Hex mit führendem „0x“ angegeben sind. Die abenteuerliche „^+u“-Konstruktion benötigt im Übrigen den Hex-Wert in Kleinschrift, was derzeit nicht bei den Zeichendefinitionen umgesetzt ist, daher zentral und weniger fehlerträchtig an dieser Stelle. Außerdem ein abschließend gesendetes Space, sonst bleibt der „eingetippte“ Unicode-Wert noch kurz sichtbar stehen, bevor er sich GTK-sei-dank in das gewünschte Zeichen verwandelt.
-*/
-
-
BSSendUnicodeChar(charCode)
{
send {bs}
@@ -148,12 +16,6 @@ Comp3UnicodeChar(charCode)
SendUnicodeChar(charCode)
}
-
-EncodeInteger(ref, val)
-{
- DllCall("ntdll\RtlFillMemoryUlong", "Uint", ref, "Uint", 4, "Uint", val)
-}
-
deadAsc(val)
{
global
diff --git a/windows/autohotkey/Source/Methods-ScreenKeyboard.ahk b/windows/autohotkey/Source/Methods-ScreenKeyboard.ahk
index 6b12990..a64c426 100644
--- a/windows/autohotkey/Source/Methods-ScreenKeyboard.ahk
+++ b/windows/autohotkey/Source/Methods-ScreenKeyboard.ahk
@@ -173,98 +173,4 @@ ToggleAlwaysOnTop:
alwaysOnTop = 1
}
Return
- ; Ende der BildschirmTastatur
-
-/*
- ------------------------------------------------------
- Shift+Pause "pausiert" das Script.
- ------------------------------------------------------
-*/
-
-*pause::
-Suspend, Permit
- if isshiftpressed()
- goto togglesuspend
- else
- send {blind}{pause}
-return
-
-; ------------------------------------
-
-^.::einHandNeo := not(einHandNeo) ; Punkt
-^,::lernModus := not(lernModus) ; Komma
-
-
-
-togglesuspend:
- if A_IsSuspended
- {
- menu, tray, rename, %enable%, %disable%
- menu, tray, tip, %name%
- if (iconBenutzen)
- menu, tray, icon, %ResourceFolder%\neo.ico,,1
- suspend , off ; Schaltet Suspend aus -> NEO
- }
- else
- {
- menu, tray, rename, %disable%, %enable%
- menu, tray, tip, %name% : Deaktiviert
- if (iconBenutzen)
- menu, tray, icon, %ResourceFolder%\neo_disabled.ico,,1
- suspend , on ; Schaltet Suspend ein -> QWERTZ
- }
-
-return
-
-
-help:
- Run, %A_WinDir%\hh mk:@MSITStore:autohotkey.chm
-return
-
-
-about:
- msgbox, 64, %name% – Ergonomische Tastaturbelegung,
- (
- %name%
- `nDas Neo-Layout ersetzt das übliche deutsche
- Tastaturlayout mit der Alternative Neo,
- beschrieben auf http://neo-layout.org/.
- `nDazu sind keine Administratorrechte nötig.
- `nWenn Autohotkey aktiviert ist, werden alle Tastendrucke
- abgefangen und statt dessen eine Übersetzung weitergeschickt.
- `nDies geschieht transparent für den Anwender,
- es muss nichts installiert werden.
- `nDie Zeichenübersetzung kann leicht über das Icon im
- Systemtray deaktiviert werden. `n
- )
-return
-
-
-neo:
- run http://neo-layout.org/
-return
-
-autohotkey:
- run http://autohotkey.com/
-return
-
-open:
- ListLines ; shows the Autohotkey window
-return
-
-edit:
- edit
-return
-
-reload:
- Reload
-return
-
-hide:
- menu, tray, noicon
-return
-
-exitprogram:
- exitapp
-return
diff --git a/windows/autohotkey/Source/Methods-Unicode.ahk b/windows/autohotkey/Source/Methods-Unicode.ahk
index 00a5ba5..227bedf 100644
--- a/windows/autohotkey/Source/Methods-Unicode.ahk
+++ b/windows/autohotkey/Source/Methods-Unicode.ahk
@@ -32,5 +32,34 @@ BSUnicode(code)
Neuer Weg – Benutzung der entsprechenden Win32-API-Methode
************************************************************/
+/*
+Über den GTK-Workaround:
+Dieser basiert auf http://www.autohotkey.com/forum/topic32947.html
+Der Aufruf von »SubStr(charCode,3)« geht davon aus, dass alle charCodes in Hex mit führendem „0x“ angegeben sind. Die abenteuerliche „^+u“-Konstruktion benötigt im Übrigen den Hex-Wert in Kleinschrift, was derzeit nicht bei den Zeichendefinitionen umgesetzt ist, daher zentral und weniger fehlerträchtig an dieser Stelle. Außerdem ein abschließend gesendetes Space, sonst bleibt der „eingetippte“ Unicode-Wert noch kurz sichtbar stehen, bevor er sich GTK-sei-dank in das gewünschte Zeichen verwandelt.
+*/
+
+SendUnicodeChar(charCode)
+{
+ IfWinActive, ahk_class gdkWindowToplevel
+ {
+ StringLower, charCode, charCode
+ send % "^+u" . SubStr(charCode,3) . " "
+ } else {
+ VarSetCapacity(ki, 28 * 2, 0)
+
+ EncodeInteger(&ki + 0, 1)
+ EncodeInteger(&ki + 6, charCode)
+ EncodeInteger(&ki + 8, 4)
+ EncodeInteger(&ki +28, 1)
+ EncodeInteger(&ki +34, charCode)
+ EncodeInteger(&ki +36, 4|2)
+ DllCall("SendInput", "UInt", 2, "UInt", &ki, "Int", 28)
+ }
+}
+
+EncodeInteger(ref, val)
+{
+ DllCall("ntdll\RtlFillMemoryUlong", "Uint", ref, "Uint", 4, "Uint", val)
+}
diff --git a/windows/autohotkey/Source/Warning.ahk b/windows/autohotkey/Source/Warning.ahk
index 6148298..514b391 100644
--- a/windows/autohotkey/Source/Warning.ahk
+++ b/windows/autohotkey/Source/Warning.ahk
@@ -10,7 +10,6 @@ Alle weiterführende Informationen finden sich im Abschnitt
== Hinweise für Entwickler ==
in der Datei README.txt!
*******************************************
-*/
@@ -28,7 +27,9 @@ in der Datei README.txt!
-/*
+
+
+
*******************************************
Das war die letzte WARNUNG, ich hoffe nur dass
Sie wirklich wissen was Sie hier tun wollen ...
diff --git a/windows/autohotkey/neo20.ahk b/windows/autohotkey/neo20.ahk
index a7da125..1bec1ea 100644
--- a/windows/autohotkey/neo20.ahk
+++ b/windows/autohotkey/neo20.ahk
@@ -1,219 +1,4 @@
-/*
-*******************************************
-WICHTIGE WARNUNG:
-
-Dies ist inzwischen eine automatisch generierte
-Datei! Sie wird regelmäßig überschrieben und
-sollte deshalb nicht mehr direkt bearbeitet werden!
-
-Alle weiterführende Informationen finden sich im Abschnitt
-== Hinweise für Entwickler ==
-in der Datei README.txt!
-*******************************************
-*/
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-/*
-*******************************************
-Das war die letzte WARNUNG, ich hoffe nur dass
-Sie wirklich wissen was Sie hier tun wollen ...
-*******************************************
-*/
-
-
-/************************************
-* NEO 2.0 (beta) AutoHotkey-Treiber *
-*************************************
-
-Autoren:
-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>
-...
-
-*********
-* TODO: *
-*********
-- Compose vollständig implementieren (Welche Methode ist hierzu am besten geeignet?)
-- ausgiebig testen... (besonders Vollständigkeit bei Deadkeys)
-- Bessere Lösung für das Leeren von PriorDeadKey finden, damit die Sondertasten nicht mehr abgefangen werden müssen.
-- Testen, ob die Capslocklösung (siehe *1:: ebene 1) auch für Numpad gebraucht wird
-- Die Ebenen vom Tastenblock an die neue Referenz anpassen (wenn da ein Konsens gefunden wurde)
-
-**********
-* IDEEN: *
-**********
-- Die Varianten (lernModus, einHandNeo, Lang-s-Tastatur, Qwertz/pausieren) sollten einheitlich (de-)aktiviert werden, etwa über M4+F9-F12
-
-******************
-* CHANGEHISTORY: *
-******************
-
-Revision 748 (von Dennis Heidsiek)
-- Neue Globale Variable »zeigeLockBoxen«: Soll mit MessageBoxen 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
-- #(2L) sendet nicht mehr '
-- Variablen Ebene7 und Ebene8 zum Abfragen eingeführt
-- s(12)(2L)-Bug von Matthias Wächter behoben
-Revision 744 (von Stefan Mayer)
-- Ebene4-Ziffernblock: auf neo_d nun Komma (wie Referenz), "NumPadKomma" gibt es nicht
-Revision 743 (von Matthias Wächter, commit durch Stefan Mayer)
-- Ebene4-Ziffernblock: NumPadAdd und NumPadSub korrigiert
-Revision 740 (von Matthias Wächter, commit durch HCW)
-- "Mega-Patch" (Skript verkürzt, Ebenenabfrage verändert, ...), siehe CHANGES.txt
-- Blinde tote Tasten auf M4+F9 (Toggle)
-- Blinde Compose auf M4+F10 (Toggle)
-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):
-- LangSTastatur auf M4+F11
-- Entwickler können durch das Erstellen einer Datei »LangSTastaturStandardmäßigEingeschaltet.ahk« mit dem Inhalt »LangSTastatur := 1« diese standardmäßig aktivieren
-- Mehrere DeadKeys aktualisiert (T*, Ebene 4 und T*, Ebene 5)
-Revision 687 (von Dennis Heidsiek):
-- Die SendUnicodeChar-Methode um den GDK-Workarround von Matthias Wächter ergänzt
-- (An/Aus) Icons an Favicon der neuen Homepage angepasst
-Revision 645 (von Martin Roppelt):
-- Ellipse zusätzlich auf M3+x
-- Lang-s-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-s-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-s-Tastatur (ein- und auszuschalten durch Mod4+ß)
-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 (M3+NP5, M5+NP5 und M3+NP9 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 (Verständlichkeit, mögliche Compilerprobleme 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 geladen
-Revision 528 (von Matthias Berg):
-- Neo-Icon
-- Neo-Prozess jetzt automatisch auf hoher Prioritaet
- (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 grossen 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
-*/
-
-
+SetNumLockState AlwaysOff
/****************
* Verzeichnisse *
@@ -251,8 +36,8 @@ IniRead, einHandNeo, %ApplicationFolder%\NEO2.ini, Global, einHandNeo, 0
; Soll der Lernmodus aktiviert werden?
IniRead, lernModus, %ApplicationFolder%\NEO2.ini, Global, lernModus, 0
-; Soll mit MessageBoxen explizit auf das Ein- und Ausschalten des Mod{3,4}-Locks hingewiesen werden?
-IniRead, zeigeLockBoxen, %ApplicationFolder%\NEO2.ini, Global, zeigeLockBoxen, 1
+; Soll mit einer MsgBox explizit auf das Ein- und Ausschalten des Mod4-Locks hingewiesen werden?
+IniRead, zeigeLockBox, %ApplicationFolder%\NEO2.ini, Global, zeigeLockBox, 1
; Soll aktivierter Mod4-Lock über die Rollen-LED des Keybord angezeigt werden (analog zu CapsLock)?
IniRead, UseMod4Light, %ApplicationFolder%\NEO2.ini, Global, UseMod4Light, 1
@@ -475,109 +260,238 @@ return
else
send {blind}{Esc}
return
+
/*
------------------------------------------------------
- Modifier
+ Shift+Pause "pausiert" das Skript.
------------------------------------------------------
*/
+*pause::
+Suspend, Permit
+ if isshiftpressed()
+ goto togglesuspend
+ else
+ send {blind}{pause}
+return
+
+; ------------------------------------
+
+^.::einHandNeo := not(einHandNeo) ; Punkt
+^,::lernModus := not(lernModus) ; Komma
+
+
+
+togglesuspend:
+ if A_IsSuspended
+ {
+ menu, tray, rename, %enable%, %disable%
+ menu, tray, tip, %name%
+ if (iconBenutzen)
+ menu, tray, icon, %ResourceFolder%\neo.ico,,1
+ suspend , off ; Schaltet Suspend aus -> NEO
+ }
+ else
+ {
+ menu, tray, rename, %disable%, %enable%
+ menu, tray, tip, %name% : Deaktiviert
+ if (iconBenutzen)
+ menu, tray, icon, %ResourceFolder%\neo_disabled.ico,,1
+ suspend , on ; Schaltet Suspend ein -> QWERTZ
+ }
-;LShift+RShift == CapsLock (simuliert)
+return
+
+
+help:
+ Run, %A_WinDir%\hh mk:@MSITStore:autohotkey.chm
+return
+
+
+about:
+ msgbox, 64, %name% – Ergonomische Tastaturbelegung,
+ (
+ %name%
+ `nDas Neo-Layout ersetzt das übliche deutsche
+ Tastaturlayout mit der Alternative Neo,
+ beschrieben auf http://neo-layout.org/.
+ `nDazu sind keine Administratorrechte nötig.
+ `nWenn Autohotkey aktiviert ist, werden alle Tastendrucke
+ abgefangen und statt dessen eine Übersetzung weitergeschickt.
+ `nDies geschieht transparent für den Anwender,
+ es muss nichts installiert werden.
+ `nDie Zeichenübersetzung kann leicht über das Icon im
+ Systemtray deaktiviert werden. `n
+ )
+return
+
+
+neo:
+ run http://neo-layout.org/
+return
+
+autohotkey:
+ run http://autohotkey.com/
+return
+
+open:
+ ListLines ; shows the Autohotkey window
+return
+
+edit:
+ edit
+return
+
+reload:
+ Reload
+return
+
+hide:
+ menu, tray, noicon
+return
+
+exitprogram:
+ exitapp
+return
+
+
+; LShift+RShift == CapsLock (simuliert)
; Es werden nur die beiden Tastenkombinationen abgefragt,
; daher kommen LShift und RShift ungehindert bis in die
; Applikation. Dies ist aber merkwürdig, da beide Shift-
; Tasten nun /modifier keys/ werden und, wie in der AHK-
; Hilfe beschrieben, eigentlich nicht mehr bis zur App
; durchkommen sollten.
+; KeyboardLED(4,"switch") hatte ich zuerst genommen, aber
+; das schaltet, oh Wunder, die LED nicht wieder aus.
+isMod2Locked = 0
VKA1SC136 & VKA0SC02A:: ; RShift, dann LShift
VKA0SC02A & VKA1SC136:: ; LShift, dann RShift
-;
-; mit diesen funktioniert das automatische Übernehmen der
-; gedrückten Shift-Tasten nicht, also z.B. Shift-Ins, wenn Ins
-; bei gedrückter Shift-Taste {blind} gesendet wird
-; *VKA1SC136::
-; *VKA0SC02A::
- if (GetKeyState("VKA1SC136", "P") and GetKeyState("VKA0SC02A", "P"))
- send {blind}{CapsLock}
+ if (GetKeyState("VKA1SC136", "P") and GetKeyState("VKA0SC02A", "P"))
+ {
+ if isMod2Locked
+ {
+ isMod2Locked = 0
+ KeyboardLED(4,"off")
+ }
+ else
+ {
+ isMod2Locked = 1
+ KeyBoardLED(4,"on")
+ }
+ }
return
-
-; Mod3+Mod3 == Mod3-Lock
-; Im Gegensatz zu LShift+RShift werden die beiden Tasten
-; _nicht_ zur Applikation weitergeleitet, da '#' kein
-; Modifier ist und CapsLock sonst den CapsLock-Status
-; beeinflusst. Dafür werden sämtliche Events dieser
-; Tasten abgefangen, und nur bei gleichzeitigem Drücken
-; wird der Mod3-Lock aktiviert und angezeigt.
-
-IsMod3Locked := 0
-; VKBFSC02B & VK14SC03A::
-; VK14SC03A & VKBFSC02B::
+;Mod3-Tasten (Wichtig, sie werden sonst nicht verarbeitet!)
*VKBFSC02B:: ; #
*VK14SC03A:: ; CapsLock
- if (GetKeyState("VKBFSC02B", "P") and GetKeyState("VK14SC03A", "P"))
- {
- if (IsMod3Locked)
- {
- IsMod3Locked = 0
- if (zeigeLockBoxen==1)
- {
- MsgBox Mod3-Feststellung aufgebehoben!
- }
- }
- else
- {
- IsMod3Locked = 1
- if (zeigeLockBoxen==1)
- {
- MsgBox Mod3 festgestellt: Um Mod3 wieder zu lösen drücke beide Mod3 Tasten gleichzeitig!
- }
-
- }
- }
return
-; Mod4+Mod4 == Mod4-Lock
-; Wie bei Mod3-Lock werden im Gegensatz zu LShift+RShift
-; die beiden Tasten _nicht_ zur Applikation weitergeleitet,
-; und nur bei gleichzeitigem Drücken wird der Mod4-Lock
-; aktiviert und angezeigt.
+;Mod4+Mod4 == Mod4-Lock
+; Im Gegensatz zu LShift+RShift werden die beiden Tasten
+; _nicht_ zur Applikation weitergeleitet, und nur bei
+; gleichzeitigem Drücken wird der Mod4-Lock aktiviert und
+; angezeigt.
IsMod4Locked := 0
-; VKA5SC138 & VKE2SC056:: ; AltGr, dann <
-; VKE2SC056 & VKA5SC138:: ; <, dann AltGr
*VKA5SC138::
*VKE2SC056::
- if (GetKeyState("VKA5SC138", "P") and GetKeyState("VKE2SC056", "P"))
- {
- ; Mod4-Lock durch Mod4(rechts)+Mod4(links)
- if (IsMod4Locked)
- {
- if (zeigeLockBoxen==1)
- {
- MsgBox Mod4-Feststellung aufgebehoben!
- }
- IsMod4Locked = 0
- if (UseMod4Light==1)
- {
- KeyboardLED(1,"off")
- }
- }
- else
- {
- if (zeigeLockBoxen==1)
- {
- MsgBox Mod4 festgestellt: Um Mod4 wieder zu lösen drücke beide Mod3 Tasten gleichzeitig!
- }
- IsMod4Locked = 1
- if (UseMod4Light==1)
- {
- KeyboardLED(1,"on")
- }
- }
- }
+ if (GetKeyState("VKA5SC138", "P") and GetKeyState("VKE2SC056", "P"))
+ {
+ if IsMod4Locked
+ {
+ if zeigeLockBox
+ MsgBox Mod4-Feststellung aufgebehoben!
+ IsMod4Locked = 0
+ if UseMod4Light
+ KeyboardLED(1,"off")
+ }
+ else
+ {
+ if zeigeLockBox
+ MsgBox Mod4 festgestellt: Um Mod4 wieder zu lösen, drücke beide Mod4-Tasten gleichzeitig!
+ IsMod4Locked = 1
+ if UseMod4Light
+ KeyboardLED(1,"on")
+ }
+ }
return
+
+Ebene12 := 0
+Ebene7 := 0
+Ebene8 := 0
+
+EbeneAktualisieren()
+{
+ global
+ PriorDeadKey := DeadKey
+ PriorCompKey := CompKey
+ DeadKey := ""
+ CompKey := ""
+ Modstate := IsMod4Pressed() . IsMod3Pressed() . IsShiftPressed()
+ if ahkTreiberKombi
+ if ( Modstate = "001")
+ Ebene = 6
+ else
+ Ebene = -1
+ else
+ if (Modstate = "000") ; Ebene 1: Ohne Mod
+ Ebene = 1
+ else if (Modstate = "001") ; Ebene 2: Shift
+ Ebene = 2
+ else if (Modstate = "010") ; Ebene 3: Mod3
+ Ebene = 3
+ else if (Modstate = "100") ; Ebene 4: Mod4
+ Ebene = 4
+ else if (Modstate = "011") ; Ebene 5: Shift+Mod3
+ Ebene = 5
+ else if (Modstate = "110") ; Ebene 6: Mod3+Mod4
+ Ebene = 6
+ else if (Modstate = "101") ; Ebene 7: Shift+Mod4 impliziert Ebene 4
+ {
+ Ebene = 4
+ Ebene7 = 1
+ }
+ else if (Modstate = "111") ; Ebene 8: Shift+Mod3+Mod4 impliziert Ebene 6
+ {
+ Ebene = 6
+ Ebene8 = 1
+ }
+ Ebene12 := ((Ebene = 1) or (Ebene = 2))
+ Ebene14 := ((Ebene = 1) or (Ebene = 4))
+ GetKeyState("NumLock","T")
+}
+
+
+IsShiftPressed()
+{aAAA
+ global
+ return ((GetKeyState("Shift","P")) = !(isMod2Locked)) ;xor
+}
+
+IsMod3Pressed()
+{
+ global
+ return ((GetKeyState("CapsLock","P")) or (GetKeyState("#","P")))
+}
+
+IsMod4Pressed()
+{
+ global
+ if( not(einHandNeo) or not(spacepressed))
+ if IsMod4Locked
+ return (not ( GetKeyState("<","P") or GetKeyState("SC138","P")))
+ else
+ return ( GetKeyState("<","P") or GetKeyState("SC138","P"))
+ else
+ if IsMod4Lock
+ return (not ( GetKeyState("<","P") or GetKeyState("SC138","P") or GetKeyState("ä","P")))
+ else
+ return ( GetKeyState("<","P") or GetKeyState("SC138","P") or GetKeyState("ä","P"))
+}
+
+
/*
------------------------------------------------------
QWERTZ->Neo umwandlung
@@ -1023,6 +937,7 @@ VK09SC00F::goto neo_tab
}
; Numpad
+*VK90SC145::goto neo_NumLock
*VK6FSC135::goto neo_NumpadDiv
*VK6ASC037::goto neo_NumpadMult
*VK6DSC04A::goto neo_NumpadSub
@@ -1065,13 +980,13 @@ VK09SC00F::goto neo_tab
Die eigentliche NEO-Belegung und der Hauptteil des AHK-Treibers.
Ablauf bei toten Tasten:
- 1. Ebene Aktualisieren
- 2. Abhängig von der Variablen "Ebene" Zeichen ausgeben und die Variable "PriorDeadKey" setzen
+ 1. Ebene Aktualisieren.
+ 2. Abhängig von der Variablen "Ebene" Zeichen ausgeben und die Variable "PriorDeadKey" setzen.
Ablauf bei "untoten" Tasten:
- 1. Ebene Aktualisieren
- 2. Abhängig von den Variablen "Ebene" und "PriorDeadKey" Zeichen ausgeben
- 3. "PriorDeadKey" mit leerem String überschreiben
+ 1. Ebene Aktualisieren.
+ 2. Abhängig von den Variablen "Ebene" und "PriorDeadKey" Zeichen ausgeben.
+ 3. "PriorDeadKey" mit leerem String überschreiben.
Reihe 1
*/
@@ -1101,12 +1016,12 @@ neo_tot1:
}
else if (Ebene = 5)
{
- deadAsc("-") ; Querstrich, tot
+ deadUni(0x002D) ; Querstrich, tot
DeadKey := "c5"
}
else if (Ebene = 6)
{
- deadAsc(".") ; Punkt drunter (Colon), tot
+ deadUni(0x002E) ; Punkt drunter (Colon), tot
DeadKey := "c6"
}
CompKey := PriorCompKey
@@ -1135,9 +1050,9 @@ neo_1:
else if (Ebene = 2)
send °
else if (Ebene = 3)
- SendUnicodeChar(0x00B9) ; 2 Hochgestellte
+ SendUnicodeChar(0x00B9) ; Hochgestellte 2
else if (Ebene = 4)
- SendUnicodeChar(0x2022) ; bullet
+ SendUnicodeChar(0x2022) ; Bullet
else if (Ebene = 5)
SendUnicodeChar(0x2640) ; Piktogramm weiblich
else if (Ebene = 6)
@@ -1163,11 +1078,11 @@ neo_2:
CompKey := "2"
}
else if (Ebene = 2)
- SendUnicodeChar(0x2116) ; numero
+ SendUnicodeChar(0x2116) ; Numero
else if (Ebene = 3)
- SendUnicodeChar(0x00B2) ; 2 Hochgestellte
+ SendUnicodeChar(0x00B2) ; Hochgestellte 2
else if (Ebene = 4)
- SendUnicodeChar(0x2023) ; aufzaehlungspfeil
+ SendUnicodeChar(0x2023) ; Aufzählungspfeil
else if (Ebene = 5)
SendUnicodeChar(0x26A5) ; Piktogramm Zwitter
else if (Ebene = 6)
@@ -1195,7 +1110,7 @@ neo_3:
else if (Ebene = 2)
send §
else if (Ebene = 3)
- SendUnicodeChar(0x00B3) ; 3 Hochgestellte
+ SendUnicodeChar(0x00B3) ; Hochgestellte 3
else if (Ebene = 4)
{
CompKey := PriorCompKey
@@ -1224,11 +1139,11 @@ neo_4:
CompKey := "4"
}
else if (Ebene = 2)
- SendUnicodeChar(0x00BB) ; », Double guillemot right
+ SendUnicodeChar(0x00BB) ; Double guillemot right
else if (Ebene = 3)
Send {blind}› ; Single guillemot right
else if (Ebene = 4)
- Send {blind}{PgUp} ; Prev
+ Send {blind}{PgUp}
else if (Ebene = 5)
SendUnicodeChar(0x2113) ; Script small L
else if (Ebene = 6)
@@ -1358,7 +1273,7 @@ neo_8:
else if (Ebene = 4)
Send {blind}{NumpadDiv}
else if (Ebene = 5)
- SendUnicodeChar(0x27E8) ;bra (öffnende spitze klammer)
+ SendUnicodeChar(0x27E8) ; bra (öffnende spitze Klammer)
else if (Ebene = 6)
SendUnicodeChar(0x2204) ; es existiert nicht
return
@@ -1386,7 +1301,7 @@ neo_9:
else if (Ebene = 4)
Send {blind}{NumpadMult}
else if (Ebene = 5)
- SendUnicodeChar(0x27E9) ;ket (schließende spitze klammer)
+ SendUnicodeChar(0x27E9) ; ket (schließende spitze Klammer)
else if (Ebene = 6)
SendUnicodeChar(0x2226) ; nicht parallel
return
@@ -1433,11 +1348,11 @@ neo_strich:
SendUnicodeChar(0x2013) ; Gedankenstrich
else if (Ebene = 3)
SendUnicodeChar(0x2014) ; Englischer Gedankenstrich (Geviertstrich)
- else if (Ebene = 4)
+ else if (Ebene = 4) ; leer
{
CompKey := PriorCompKey
DeadKey := PriorDeadKey
- } ; leer
+ }
else if (Ebene = 5)
SendUnicodeChar(0x2011) ; geschützter Bindestrich (Bindestrich ohne Zeilenumbruch)
else if (Ebene = 6)
@@ -1491,11 +1406,13 @@ neo_x:
if (Ebene12)
OutputChar("x","X")
else if (Ebene = 3)
- SendUnicodeChar(0x2026) ;Ellipse
+ SendUnicodeChar(0x2026) ;Ellipse horizontal
+ else if (Ebene = 4)
+ SendUnicodeChar(0x22EE) ;Ellipse vertikal
else if (Ebene = 5)
SendUnicodeChar(0x03BE) ;xi
else if (Ebene = 6)
- SendUnicodeChar(0x039E) ; Xi
+ SendUnicodeChar(0x039E) ;Xi
return
@@ -1508,11 +1425,11 @@ neo_v:
else if (Ebene = 4)
if (not(lernModus) or lernModus_neo_Backspace)
Send {blind}{Backspace}
- else
+ else ; leer
{
CompKey := PriorCompKey
DeadKey := PriorDeadKey
- } ; leer
+ }
else if (Ebene = 6)
SendUnicodeChar(0x2259) ; estimates
return
@@ -1522,11 +1439,11 @@ return
neo_l:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x013A,0x0139)
- or CheckDeadUni12("a3",0x013C,0x013B)
- or CheckDeadUni12("c2",0x013E,0x013D)
- or CheckDeadUni12("c4",0x0140,0x013F)
- or CheckDeadUni12("c6",0x1E37,0x1E36)
- or CheckDeadUni12("t4",0x0142,0x0141)))
+ or CheckDeadUni12("a3",0x013C,0x013B)
+ or CheckDeadUni12("c2",0x013E,0x013D)
+ or CheckDeadUni12("c4",0x0140,0x013F)
+ or CheckDeadUni12("c6",0x1E37,0x1E36)
+ or CheckDeadUni12("t4",0x0142,0x0141)))
OutputChar("l","L")
else if (Ebene = 3)
send {blind}[
@@ -1542,27 +1459,26 @@ return
neo_c:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x0107,0x0106)
- or CheckDeadUni12("a3",0x00E7,0x00E6)
- or CheckDeadUni12("a4",0x010B,0x010A)
- or CheckDeadUni12("c1",0x0109,0x0108)
- or CheckDeadUni12("c2",0x010D,0x010C)
- or CheckCompAsc12("o","©","©")
- or CheckCompAsc12("O","©","©")))
+ or CheckDeadUni12("a3",0x00E7,0x00E6)
+ or CheckDeadUni12("a4",0x010B,0x010A)
+ or CheckDeadUni12("c1",0x0109,0x0108)
+ or CheckDeadUni12("c2",0x010D,0x010C)
+ or CheckCompAsc("o","©")))
OutputChar("c","C")
else if (Ebene = 3)
send {blind}]
else if (Ebene = 4)
if (not(lernModus) or lernModus_neo_Entf)
Send {blind}{Del}
- else
+ else ; leer
{
CompKey := PriorCompKey
DeadKey := PriorDeadKey
- } ; leer
+ }
else if (Ebene = 5)
- SendUnicodeChar(0x03C7) ;chi
+ SendUnicodeChar(0x03C7) ; chi
else if (Ebene = 6)
- SendUnicodeChar(0x2102) ; C (Komplexe Zahlen)
+ SendUnicodeChar(0x2102) ; C (Komplexe Zahlen)
return
neo_w:
@@ -1570,10 +1486,9 @@ neo_w:
if (Ebene12 and !(CheckDeadUni12("c1",0x0175,0x0174)))
OutputChar("w","W")
else if (Ebene = 3)
- SendUnicodeChar(0x005E) ; untotes ^ - Unicode-Name: CIRCUMFLEX ACCENT
- ;send {^}{space} ; Funktioniert nicht unter Java-Programmen
+ SendUnicodeChar(0x005E) ; Zirkumflex
else if (Ebene = 4)
- Send {blind}{Insert}
+ Send {blind}{Insert} ; Einfg
else if (Ebene = 5)
SendUnicodeChar(0x03C9) ; omega
else if (Ebene = 6)
@@ -1583,7 +1498,7 @@ return
neo_k:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a3",0x0137,0x0136)
- or CheckDeadUni12("c6",0x1E33,0x1E32)))
+ or CheckDeadUni12("c6",0x1E33,0x1E32)))
OutputChar("k","K")
else if (Ebene = 3)
send {blind}{!}
@@ -1598,9 +1513,9 @@ return
neo_h:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a4",0x1E23,0x1E22)
- or CheckDeadUni12("c1",0x0125,0x0124)
- or CheckDeadUni12("c5",0x0127,0x0126)
- or CheckDeadUni12("c6",0x1E25,0x1E24)))
+ or CheckDeadUni12("c1",0x0125,0x0124)
+ or CheckDeadUni12("c5",0x0127,0x0126)
+ or CheckDeadUni12("c6",0x1E25,0x1E24)))
OutputChar("h","H")
else if ((Ebene = 3) and !(CheckDeadUni("c5",0x2264))) ; kleiner gleich
send {blind}<
@@ -1608,27 +1523,27 @@ neo_h:
or CheckDeadUni("c5",0x2087)))
Send {blind}{NumPad7}
else if (Ebene = 5)
- SendUnicodeChar(0x03C8) ;psi
+ SendUnicodeChar(0x03C8) ; psi
else if (Ebene = 6)
- SendUnicodeChar(0x03A8) ; Psi
+ SendUnicodeChar(0x03A8) ; Psi
return
neo_g:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a3",0x0123,0x0122)
- or CheckDeadUni12("a4",0x0121,0x0120)
- or CheckDeadUni12("c1",0x011D,0x011C)
- or CheckDeadUni12("c3",0x011F,0x011E)))
+ or CheckDeadUni12("a4",0x0121,0x0120)
+ or CheckDeadUni12("c1",0x011D,0x011C)
+ or CheckDeadUni12("c3",0x011F,0x011E)))
OutputChar("g","G")
- else if ((Ebene = 3) and !(CheckDeadUni("c5",0x2265))) ; größer gleich
- send {blind}>
+ else if ((Ebene = 3) and !(CheckDeadUni("c5",0x2265)))
+ send {blind}> ; größer gleich
else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2078)
- or CheckDeadUni("c5",0x2088)))
+ or CheckDeadUni("c5",0x2088)))
Send {blind}{NumPad8}
else if (Ebene = 5)
- SendUnicodeChar(0x03B3) ;gamma
+ SendUnicodeChar(0x03B3) ; gamma
else if (Ebene = 6)
- SendUnicodeChar(0x0393) ; Gamma
+ SendUnicodeChar(0x0393) ; Gamma
return
neo_f:
@@ -1637,19 +1552,19 @@ neo_f:
or CheckDeadUni12("t4",0x0192,0x0191)))
OutputChar("f","F")
else if ((Ebene = 3) and !(CheckDeadUni("a6",0x2257) ; ring equal to
- or CheckDeadUni("c1",0x2259) ; entspricht
- or CheckDeadUni("c2",0x225A) ; EQUIANGULAR TO
- or CheckDeadUni("c5",0x2261) ; identisch
- or CheckDeadUni("t1",0x2245) ; ungefähr gleich
- or CheckDeadUni("t4",0x2260))) ; ungleich
+ or CheckDeadUni("c1",0x2259) ; entspricht
+ or CheckDeadUni("c2",0x225A) ; EQUIANGULAR TO
+ or CheckDeadUni("c5",0x2261) ; identisch
+ or CheckDeadUni("t1",0x2245) ; ungefähr gleich
+ or CheckDeadUni("t4",0x2260))) ; ungleich
send {blind}`=
else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2079)
- or CheckDeadUni("c5",0x2089)))
- Send {blind}{NumPad9}
+ or CheckDeadUni("c5",0x2089)))
+ send {blind}{NumPad9}
else if (Ebene = 5)
SendUnicodeChar(0x03C6) ; phi
else if (Ebene = 6)
- SendUnicodeChar(0x03A6) ; Phi
+ SendUnicodeChar(0x03A6) ; Phi
return
neo_q:
@@ -1672,27 +1587,27 @@ neo_sz:
if (Ebene = 1)
if (GetKeyState("CapsLock","T"))
SendUnicodeChar(0x1E9E) ; versal-ß
- else if (LangSTastatur = 1)
+ else if LangSTastatur
send {blind}s
else
send ß
else if (Ebene = 2)
if (GetKeyState("CapsLock","T"))
- if (LangSTastatur = 1)
+ if LangSTastatur
send {blind}s
else
send ß
else
SendUnicodeChar(0x1E9E) ; versal-ß
else if (Ebene = 3)
- if (LangSTastatur = 1)
+ if LangSTastatur
send ß
else
SendUnicodeChar(0x017F) ; langes s
else if (Ebene = 5)
- SendUnicodeChar(0x03C2) ; varsigma
+ SendUnicodeChar(0x03C2) ; varsigma
else if (Ebene = 6)
- SendUnicodeChar(0x2218) ; Verknüpfungsoperator
+ SendUnicodeChar(0x2218) ; Verknüpfungsoperator
return
@@ -1700,7 +1615,7 @@ neo_tot3:
EbeneAktualisieren()
if (Ebene = 1)
{
- deadUni(0x02DC) ;Tilde, tot
+ deadUni(0x02DC) ; Tilde, tot
DeadKey := "t1"
}
else if (Ebene = 2)
@@ -1720,7 +1635,7 @@ neo_tot3:
}
else if (Ebene = 5)
{
- deadUni(0x02DD) ;Doppelakut
+ deadUni(0x02DD) ; Doppelakut
DeadKey := "t5"
}
else if (Ebene = 6)
@@ -1741,26 +1656,26 @@ return
neo_u:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x00FA,0x00DA)
- or CheckDeadUni12("a2",0x00F9,0x00D9)
- or CheckDeadUni12("a5",0x0173,0x0172)
- or CheckDeadUni12("a6",0x016F,0x016E)
- or CheckDeadUni12("c1",0x00FB,0x00DB)
- or CheckDeadUni12("c2",0x01D4,0x01D3)
- or CheckDeadUni12("c3",0x016D,0x016C)
- or CheckDeadUni12("t1",0x0169,0x0168)
- or CheckDeadUni12("t2",0x016B,0x016A)
- or CheckDeadAsc12("t3","ü","Ü")
- or CheckDeadUni12("t5",0x0171,0x0170)))
+ or CheckDeadUni12("a2",0x00F9,0x00D9)
+ or CheckDeadUni12("a5",0x0173,0x0172)
+ or CheckDeadUni12("a6",0x016F,0x016E)
+ or CheckDeadUni12("c1",0x00FB,0x00DB)
+ or CheckDeadUni12("c2",0x01D4,0x01D3)
+ or CheckDeadUni12("c3",0x016D,0x016C)
+ or CheckDeadUni12("t1",0x0169,0x0168)
+ or CheckDeadUni12("t2",0x016B,0x016A)
+ or CheckDeadAsc12("t3","ü","Ü")
+ or CheckDeadUni12("t5",0x0171,0x0170)))
OutputChar("u","U")
else if (Ebene = 3)
send {blind}\
else if (Ebene = 4)
Send {blind}{Home}
- else if (Ebene = 5)
+ else if (Ebene = 5) ; leer
{
CompKey := PriorCompKey
DeadKey := PriorDeadKey
- } ; leer
+ }
else if (Ebene = 6)
SendUnicodeChar(0x222E) ; contour integral
return
@@ -1768,21 +1683,21 @@ return
neo_i:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x00ED,0x00CD)
- or CheckDeadUni12("a2",0x00EC,0x00CC)
- or CheckDeadUni12("a4",0x012F,0x012E)
- or CheckDeadUni12("a5",0x0131,0x0130)
- or CheckDeadUni12("c1",0x00EE,0x00CE)
- or CheckDeadUni12("c2",0x01D0,0x01CF)
- or CheckDeadUni12("c3",0x012D,0x012C)
- or CheckDeadUni12("t1",0x0129,0x0128)
- or CheckDeadUni12("t2",0x012B,0x012A)
- or CheckDeadAsc12("t3","ï","Ï")))
+ or CheckDeadUni12("a2",0x00EC,0x00CC)
+ or CheckDeadUni12("a4",0x012F,0x012E)
+ or CheckDeadUni12("a5",0x0131,0x0130)
+ or CheckDeadUni12("c1",0x00EE,0x00CE)
+ or CheckDeadUni12("c2",0x01D0,0x01CF)
+ or CheckDeadUni12("c3",0x012D,0x012C)
+ or CheckDeadUni12("t1",0x0129,0x0128)
+ or CheckDeadUni12("t2",0x012B,0x012A)
+ or CheckDeadAsc12("t3","ï","Ï")))
OutputChar("i","I")
else if (Ebene = 3)
send {blind}`/
else if (Ebene = 4)
Send {Blind}{Left}
- else if (Ebene = 5 )
+ else if (Ebene = 5)
SendUnicodeChar(0x03B9) ; iota
else if (Ebene = 6)
SendUnicodeChar(0x222B) ; integral
@@ -1791,65 +1706,65 @@ return
neo_a:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x00E1,0x00C1)
- or CheckDeadUni12("a2",0x00E0,0x00C0)
- or CheckDeadUni12("a5",0x0105,0x0104)
- or CheckDeadAsc12("a6","å","Å")
- or CheckDeadUni12("c1",0x00E2,0x00C2)
- or CheckDeadUni12("c2",0x01CE,0x01CD)
- or CheckDeadUni12("c3",0x0103,0x0102)
- or CheckDeadUni12("t1",0x00E3,0x00C3)
- or CheckDeadUni12("t2",0x0101,0x0100)
- or CheckDeadAsc12("t3","ä","Ä")))
+ or CheckDeadUni12("a2",0x00E0,0x00C0)
+ or CheckDeadUni12("a5",0x0105,0x0104)
+ or CheckDeadAsc12("a6","å","Å")
+ or CheckDeadUni12("c1",0x00E2,0x00C2)
+ or CheckDeadUni12("c2",0x01CE,0x01CD)
+ or CheckDeadUni12("c3",0x0103,0x0102)
+ or CheckDeadUni12("t1",0x00E3,0x00C3)
+ or CheckDeadUni12("t2",0x0101,0x0100)
+ or CheckDeadAsc12("t3","ä","Ä")))
OutputChar("a","A")
else if (Ebene = 3)
send {blind}{{}
else if (Ebene = 4)
Send {Blind}{Down}
else if (Ebene = 5)
- SendUnicodeChar(0x03B1) ;alpha
+ SendUnicodeChar(0x03B1) ; alpha
else if (Ebene = 6)
- SendUnicodeChar(0x2200) ;für alle
+ SendUnicodeChar(0x2200) ; für alle
return
neo_e:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x00E9,0x00C9)
- or CheckDeadUni12("a2",0x00E8,0x00C8)
- or CheckDeadUni12("a4",0x0117,0x0116)
- or CheckDeadUni12("a5",0x0119,0x0118)
- or CheckDeadUni12("c1",0x00EA,0x00CA)
- or CheckDeadUni12("c2",0x011B,0x011A)
- or CheckDeadUni12("c3",0x0115,0x0114)
- or CheckDeadUni12("t2",0x0113,0x0112)
- or CheckDeadAsc12("t3","ë","Ë")
- or CheckCompAsc12("a","æ","Æ")
- or CheckCompAsc12("A","Æ","Æ")
- or CheckCompAsc12("o","œ","Œ")
- or CheckCompAsc12("O","Œ","Œ")))
+ or CheckDeadUni12("a2",0x00E8,0x00C8)
+ or CheckDeadUni12("a4",0x0117,0x0116)
+ or CheckDeadUni12("a5",0x0119,0x0118)
+ or CheckDeadUni12("c1",0x00EA,0x00CA)
+ or CheckDeadUni12("c2",0x011B,0x011A)
+ or CheckDeadUni12("c3",0x0115,0x0114)
+ or CheckDeadUni12("t2",0x0113,0x0112)
+ or CheckDeadAsc12("t3","ë","Ë")
+ or CheckCompAsc12("a","æ","Æ")
+ or CheckCompAsc12("A","Æ","Æ")
+ or CheckCompAsc12("o","œ","Œ")
+ or CheckCompAsc12("O","Œ","Œ")))
OutputChar("e","E")
- else if (Ebene = 3) ; {
+ else if (Ebene = 3)
send {blind}{}}
else if (Ebene = 4)
Send {Blind}{Right}
else if (Ebene = 5)
- SendUnicodeChar(0x03B5) ;epsilon
+ SendUnicodeChar(0x03B5) ; epsilon
else if (Ebene = 6)
- SendUnicodeChar(0x2203) ;es existiert
+ SendUnicodeChar(0x2203) ; es existiert
return
neo_o:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x00F3,0x00D3)
- or CheckDeadUni12("a2",0x00F2,0x00D2)
- or CheckDeadUni12("a5",0x01EB,0x01EA)
- or CheckDeadUni12("c1",0x00F4,0x00D4)
- or CheckDeadUni12("c2",0x01D2,0x01D1)
- or CheckDeadUni12("c3",0x014F,0x014E)
- or CheckDeadUni12("t1",0x00F5,0x00D5)
- or CheckDeadUni12("t2",0x014D,0x014C)
- or CheckDeadAsc12("t3","ö","Ö")
- or CheckDeadUni12("t4",0x00F8,0x00D8)
- or CheckDeadUni12("t5",0x0151,0x0150)))
+ or CheckDeadUni12("a2",0x00F2,0x00D2)
+ or CheckDeadUni12("a5",0x01EB,0x01EA)
+ or CheckDeadUni12("c1",0x00F4,0x00D4)
+ or CheckDeadUni12("c2",0x01D2,0x01D1)
+ or CheckDeadUni12("c3",0x014F,0x014E)
+ or CheckDeadUni12("t1",0x00F5,0x00D5)
+ or CheckDeadUni12("t2",0x014D,0x014C)
+ or CheckDeadAsc12("t3","ö","Ö")
+ or CheckDeadUni12("t4",0x00F8,0x00D8)
+ or CheckDeadUni12("t5",0x0151,0x0150)))
OutputChar("o","O")
else if (Ebene = 3)
send {blind}*
@@ -1864,35 +1779,55 @@ return
neo_s:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x015B,0x015A)
- or CheckDeadUni12("a3",0x015F,0x015E)
- or CheckDeadUni12("a4",0x1E61,0x1E60)
- or CheckDeadUni12("c1",0x015D,0x015C)
- or CheckDeadUni12("c2",0x0161,0x0160)
- or CheckDeadUni12("c6",0x1E63,0x1A62)))
+ or CheckDeadUni12("a3",0x015F,0x015E)
+ or CheckDeadUni12("a4",0x1E61,0x1E60)
+ or CheckDeadUni12("c1",0x015D,0x015C)
+ or CheckDeadUni12("c2",0x0161,0x0160)
+ or CheckDeadUni12("c6",0x1E63,0x1A62)))
{
if (Ebene = 1)
{
if LangSTastatur
if (GetKeyState("CapsLock","T"))
+ {
send {blind}s
+ if (PriorDeadKey = "comp")
+ Compkey := "s"
+ }
else
+ {
SendUnicodeChar(0x017F) ;langes S
+ if (PriorDeadKey = "comp")
+ CompKey := "lang_s"
+ }
else
+ {
send {blind}s
- if (PriorDeadKey = "comp")
- CompKey := "s"
+ if (PriorDeadKey = "comp")
+ CompKey := "s"
+ }
}
else if (Ebene = 2)
{
if LangSTastatur
if (GetKeyState("CapsLock","T"))
+ {
SendUnicodeChar(0x017F) ;langes S
+ if (PriorDeadKey = "comp")
+ CompKey := "lang_s"
+ }
else
+ {
send {blind}S
+ if (PriorDeadKey = "comp")
+ CompKey := "s"
+ }
else
+ {
send {blind}S
- if (PriorDeadKey = "comp")
- CompKey := "S"
+ if (PriorDeadKey = "comp")
+ CompKey := "S"
+ }
}
}
else if (Ebene = 3)
@@ -1902,21 +1837,21 @@ neo_s:
else if (Ebene = 5)
SendUnicodeChar(0x03C3) ;sigma
else if (Ebene = 6)
- SendUnicodeChar(0x03A3) ; Sigma
+ SendUnicodeChar(0x03A3) ;Sigma
return
neo_n:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x0144,0x0143)
- or CheckDeadUni12("a3",0x0146,0x0145)
- or CheckDeadUni12("a4",0x1E45,0x1E44)
- or CheckDeadUni12("c2",0x0148,0x0147)
- or CheckDeadUni12("t1",0x00F1,0x00D1)))
+ or CheckDeadUni12("a3",0x0146,0x0145)
+ or CheckDeadUni12("a4",0x1E45,0x1E44)
+ or CheckDeadUni12("c2",0x0148,0x0147)
+ or CheckDeadUni12("t1",0x00F1,0x00D1)))
OutputChar("n","N")
else if (Ebene = 3)
- send {blind}( ; )
+ send {blind}(
else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2074)
- or CheckDeadUni("c5",0x2084)))
+ or CheckDeadUni("c5",0x2084)))
Send {blind}{NumPad4}
else if (Ebene = 5)
SendUnicodeChar(0x03BD) ; nu
@@ -1927,17 +1862,17 @@ return
neo_r:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x0155,0x0154)
- or CheckDeadUni12("a3",0x0157,0x0156)
- or CheckDeadUni12("a4",0x0E59,0x0E58)
- or CheckDeadUni12("c2",0x0159,0x0158)
- or CheckDeadUni12("c6",0x1E5B,0x1E5A)
- or CheckCompAsc12("o","®","®")
- or CheckCompAsc12("O","®","®")))
+ or CheckDeadUni12("a3",0x0157,0x0156)
+ or CheckDeadUni12("a4",0x0E59,0x0E58)
+ or CheckDeadUni12("c2",0x0159,0x0158)
+ or CheckDeadUni12("c6",0x1E5B,0x1E5A)
+ or CheckCompAsc12("o","®","®")
+ or CheckCompAsc12("O","®","®")))
OutputChar("r","R")
- else if (Ebene = 3) ;(
+ else if (Ebene = 3)
send {blind})
else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2075)
- or CheckDeadUni("c5",0x2085)))
+ or CheckDeadUni("c5",0x2085)))
Send {blind}{NumPad5}
else if (Ebene = 5)
SendUnicodeChar(0x03F1) ; rho symbol (varrho)
@@ -1948,20 +1883,20 @@ return
neo_t:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a3",0x0163,0x0162)
- or CheckDeadUni12("a4",0x1E6B,0x1E6A)
- or CheckDeadUni12("c2",0x0165,0x0164)
- or CheckDeadUni12("c5",0x0167,0x0166)
- or CheckDeadUni12("c6",0x1E6D,0x1E6C)))
+ or CheckDeadUni12("a4",0x1E6B,0x1E6A)
+ or CheckDeadUni12("c2",0x0165,0x0164)
+ or CheckDeadUni12("c5",0x0167,0x0166)
+ or CheckDeadUni12("c6",0x1E6D,0x1E6C)))
OutputChar("t","T")
else if (Ebene = 3)
- send {blind}- ; Bis
+ send {blind}- ; Bisstrich
else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2076)
or CheckDeadUni("c5",0x2086)))
Send {blind}{NumPad6}
else if (Ebene = 5)
SendUnicodeChar(0x03C4) ; tau
else if (Ebene = 6)
- SendUnicodeChar(0x2202 ) ; partielle Ableitung
+ SendUnicodeChar(0x2202) ; partielle Ableitung
return
neo_d:
@@ -1977,16 +1912,16 @@ neo_d:
else if (Ebene = 4)
send `,
else if (Ebene = 5)
- SendUnicodeChar(0x03B4) ;delta
+ SendUnicodeChar(0x03B4) ; delta
else if (Ebene = 6)
- SendUnicodeChar(0x0394) ; Delta
+ SendUnicodeChar(0x0394) ; Delta
return
neo_y:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x00FD,0x00DD)
- or CheckDeadUni12("c1",0x0177,0x0176)
- or CheckDeadAsc12("t3","ÿ",Ÿ)))
+ or CheckDeadUni12("c1",0x0177,0x0176)
+ or CheckDeadAsc12("t3","ÿ","Ÿ")))
OutputChar("y","Y")
else if (Ebene = 3)
send {blind}@
@@ -2007,19 +1942,19 @@ return
neo_ü:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x01D8,0x01D7)
- or CheckDeadUni12("a2",0x01DC,0x01DB)
- or CheckDeadUni12("c2",0x01DA,0x01D9)
- or CheckDeadUni12("t2",0x01D6,0x01D5)))
+ or CheckDeadUni12("a2",0x01DC,0x01DB)
+ or CheckDeadUni12("c2",0x01DA,0x01D9)
+ or CheckDeadUni12("t2",0x01D6,0x01D5)))
OutputChar("ü","Ü")
else if (Ebene = 3)
send {#}
else if (Ebene = 4)
Send {blind}{Esc}
- else if (Ebene = 5)
+ else if (Ebene = 5) ; leer
{
DeadKey := PriorDeadKey
CompKey := PriorCompKey
- } ; leer
+ }
else if (Ebene = 6)
SendUnicodeChar(0x221D) ; proportional
return
@@ -2048,11 +1983,11 @@ neo_ä:
else if (Ebene = 3)
send {blind}|
else if (Ebene = 4)
- Send {blind}{PgDn} ; Next
+ Send {blind}{PgDn} ; Next
else if (Ebene = 5)
SendUnicodeChar(0x03B7) ; eta
else if (Ebene = 6)
- SendUnicodeChar(0x211C) ; altes R
+ SendUnicodeChar(0x211C) ; Fraktur R
return
neo_p:
@@ -2064,29 +1999,29 @@ neo_p:
else if (Ebene = 4)
Send {blind}{Enter}
else if (Ebene = 5)
- SendUnicodeChar(0x03C0) ;pi
+ SendUnicodeChar(0x03C0) ; pi
else if (Ebene = 6)
- SendUnicodeChar(0x03A0) ; Pi
+ SendUnicodeChar(0x03A0) ; Pi
return
neo_z:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x017A,0x0179)
- or CheckDeadUni12("a4",0x017C,0x017B)
- or CheckDeadUni12("c2",0x017E,0x017D)
- or CheckDeadUni12("c6",0x1E93,0x1E92)))
+ or CheckDeadUni12("a4",0x017C,0x017B)
+ or CheckDeadUni12("c2",0x017E,0x017D)
+ or CheckDeadUni12("c6",0x1E93,0x1E92)))
OutputChar("z","Z")
else if (Ebene = 3)
- send ``{space} ; untot
+ send ``{space} ; untot
else if (Ebene = 4)
{
DeadKey := PriorDeadKey
CompKey := PriorCompKey
} ; leer
else if (Ebene = 5)
- SendUnicodeChar(0x03B6) ;zeta
+ SendUnicodeChar(0x03B6) ; zeta
else if (Ebene = 6)
- SendUnicodeChar(0x2124) ; Z (ganze Zahlen)
+ SendUnicodeChar(0x2124) ; Z (ganze Zahlen)
return
neo_b:
@@ -2106,17 +2041,14 @@ return
neo_m:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a4",0x1E41,0x1E40)
- or CheckDeadUni12("c6",0x1E43,0x1E42)
- or CheckCompUni12("t",0x2122,0x2122) ; TM
- or CheckCompUni12("T",0x2122,0x2122) ; TM
- or CheckCompUni12("s",0x2120,0x2120) ; SM
- or CheckCompUni12("S",0x2120,0x2120))) ; SM
-
+ or CheckDeadUni12("c6",0x1E43,0x1E42)
+ or CheckCompUni12("t",0x2122,0x2122) ; TM
+ or CheckCompUni12("s",0x2120,0x2120))) ; SM
OutputChar("m","M")
else if (Ebene = 3)
send {blind}`%
else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B9)
- or CheckDeadUni("c5",0x2081)))
+ or CheckDeadUni("c5",0x2081)))
Send {blind}{NumPad1}
else if (Ebene = 5)
SendUnicodeChar(0x03BC) ; griechisch mu, micro wäre 0x00B5
@@ -2136,7 +2068,7 @@ neo_komma:
else if (Ebene = 3)
send {blind}"
else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B2)
- or CheckDeadUni("c5",0x2082)))
+ or CheckDeadUni("c5",0x2082)))
Send {blind}{NumPad2}
else if (Ebene = 5)
SendUnicodeChar(0x03C1) ; rho
@@ -2156,12 +2088,12 @@ neo_punkt:
else if (Ebene = 3)
send {blind}'
else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B3)
- or CheckDeadUni("c5",0x2083)))
+ or CheckDeadUni("c5",0x2083)))
Send {blind}{NumPad3}
else if (Ebene = 5)
SendUnicodeChar(0x03D1) ; theta symbol (vartheta)
else if (Ebene = 6)
- SendUnicodeChar(0x0398) ; Theta
+ SendUnicodeChar(0x0398) ; Theta
return
@@ -2169,12 +2101,12 @@ neo_j:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("c1",0x0135,0x0134)
or CheckDeadUni12("c2",0x01F0,"")
- or CheckCompUni12("i",0x0133,"") ; ij
- or CheckCompUni12("I","",0x0132) ; IJ
- or CheckCompUni12("l",0x01C9,"") ; lj
- or CheckCompUni12("L",0x01C8,0x01C7) ; Lj/LJ
- or CheckCompUni12("n",0x01CC,"") ; nj
- or CheckCompUni12("N",0x01CB,0x01CA))) ; Nj/NJ
+ or CheckCompUni("i",0x0133) ; ij
+ or CheckCompUni("l",0x01C9) ; lj
+ or CheckCompUni("n",0x01CC) ; nj
+ or CheckCompUni("I",0x0132) ; IJ
+ or CheckCompUni12("L",0x01C8,0x01C7) ; Lj/LJ
+ or CheckCompUni12("N",0x01CB,0x01CA))) ; Nj/NJ
OutputChar("j","J")
else if (Ebene = 3)
send {blind}`;
@@ -2190,343 +2122,325 @@ return
Numpad
-
- folgende Tasten verhalten sich bei ein- und ausgeschaltetem
- NumLock gleich:
*/
+neo_NumLock:
+ EbeneAktualisieren()
+ if (Ebene = 1)
+ send `=
+ if (Ebene = 2) ; Funktioniert nicht
+ {
+ SetNumLockState
+ send {NumLock}
+ }
+ if (Ebene = 3)
+ SendUnicodeChar(0x2248) ; Fast gleich
+ if (Ebene = 4)
+ SendUnicodeChar(0x2260) ; Ungleich zu
+return
+
neo_NumpadDiv:
EbeneAktualisieren()
- if ((Ebene = 1) or (Ebene = 2))
+ if Ebene14
send {blind}{NumpadDiv}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x2215) ; Slash
else if (Ebene = 3)
send {blind}÷
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x2215) ; slash
return
neo_NumpadMult:
EbeneAktualisieren()
- if ((Ebene = 1) or (Ebene = 2))
+ if Ebene14
send {blind}{NumpadMult}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x22C5) ; Cdot
else if (Ebene = 3)
send {blind}×
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x22C5) ; cdot
return
neo_NumpadSub:
EbeneAktualisieren()
- if (((Ebene = 1) or (Ebene = 2)) and !(CheckDeadUni("c1",0x207B)
- or CheckDeadUni("c5",0x208B)))
+ if (Ebene14 and !(CheckDeadUni("c1",0x207B)
+ or CheckDeadUni("c5",0x208B)))
send {blind}{NumpadSub}
else if (Ebene = 3)
- SendUnicodeChar(0x2212) ; echtes minus
+ SendUnicodeChar(0x2212) ; Echtes Minus
return
neo_NumpadAdd:
EbeneAktualisieren()
- if (((Ebene = 1) or (Ebene = 2)) and !(CheckDeadUni("c1",0x207A)
- or CheckDeadUni("c5",0x208A)))
+ if (Ebene14 and !(CheckDeadUni("c1",0x207A)
+ or CheckDeadUni("c5",0x208A)))
send {blind}{NumpadAdd}
else if (Ebene = 3)
send {blind}±
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x2213) ; -+
+ else if (Ebene = 2)
+ SendUnicodeChar(0x2213) ; Inverses ±
return
neo_NumpadEnter:
- EbeneAktualisieren()
- if ((Ebene = 1) or (Ebene = 2))
- send {blind}{NumpadEnter}
- else if (Ebene = 3)
- SendUnicodeChar(0x2260) ; neq
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x2248) ; approx
+ send {blind}{NumpadEnter}
return
-/*
- folgende Tasten verhalten sich bei ein- und ausgeschaltetem NumLock
- unterschiedlich
-*/
-
-
-
neo_Numpad7:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadHome}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadHome}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
+ if (Ebene = 1)
{
- if (Ebene = 1)
+ if NumLock
send {blind}{Numpad7}
else
- send {blind){Shift up}{Numpad7}{Shift down}
-
+ send {blind){Shift up}{Numpad7}
if (PriorDeadKey = "comp")
- CompKey := "Num_7"
+ CompKey := "7"
}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x2020) ; Kreuz
else if (Ebene = 3)
- SendUnicodeChar(0x2195) ; Hoch-Runter-Pfeil
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x226A) ; ll
+ SendUnicodeChar(0x2195) ; Hoch-Runter-Pfeil
+ else if (Ebene = 4)
+ if NumLock
+ send {blind}{Shift up}{NumpadHome}
+ else
+ send {blind}{NumpadHome}
return
neo_Numpad8:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadUp}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadUp}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
- {
- if !(CheckCompUni("Num_1",0x215B) ; 1/8
- or CheckCompUni("1",0x215B) ; 1/8
- or CheckCompUni("Num_3",0x215C) ; 3/8
- or CheckCompUni("3",0x215C) ; 3/8
- or CheckCompUni("Num_5",0x215D) ; 3/8
- or CheckCompUni("5",0x215D) ; 5/8
- or CheckCompUni("Num_7",0x215E) ; 7/8
- or CheckCompUni("7",0x215E)) ; 7/8
- if (Ebene = 1)
- send {blind}{Numpad8}
- else
- send {blind){Shift up}{Numpad8}{Shift down}
-
+ if ((Ebene = 1) and !(CheckCompUni("1",0x215B) ; 1/8
+ or CheckCompUni("3",0x215C) ; 3/8
+ or CheckCompUni("5",0x215D) ; 5/8
+ or CheckCompUni("7",0x215E))) ; 7/8
+ {
+ if NumLock
+ send {blind}{Numpad8}
+ else
+ send {blind){Shift up}{Numpad8}
if (PriorDeadKey = "comp")
- CompKey := "Num_8"
+ CompKey := "8"
}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x2229) ; Durchschnitt
else if (Ebene = 3)
- SendUnicodeChar(0x2191) ; uparrow
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x2229) ; intersection
+ SendUnicodeChar(0x2191) ; Hochpfeil
+ else if (Ebene = 4)
+ if NumLock
+ send {blind}{Shift up}{NumpadUp}
+ else
+ send {blind}{NumpadUp}
return
neo_Numpad9:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadPgUp}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadPgUp}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
+ if (Ebene = 1)
{
- if (Ebene = 1)
+ if NumLock
send {blind}{Numpad9}
else
- send {blind){Shift up}{Numpad9}{Shift down}
-
+ send {blind){Shift up}{Numpad9}
if (PriorDeadKey = "comp")
- CompKey := "Num_9"
+ CompKey := "9"
}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x2297) ; Tensorprodukt / Vektor in die Ebene zeigend
else if (Ebene = 3)
- SendUnicodeChar(0x2297) ; Tensorprodukt ; Vektor in die Ebene zeigend
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x226B) ; gg
+ SendUnicodeChar(0x220D) ; Kleines umgekehrtes Elementzeichen
+ else if (Ebene = 4)
+ if NumLock
+ send {blind}{Shift up}{NumpadPgUp}
+ else
+ send {blind}{NumpadPgUp}
return
-
-
neo_Numpad4:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadLeft}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadLeft}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
- {
- if !(CheckCompUni("Num_1",0x00BC) ; 1/4
- or CheckCompUni("1",0x00BE) ; 1/4
- or CheckCompUni("Num_3",0x00BE) ; 3/4
- or CheckCompUni("3",0x00BE)) ; 3/4
- if (Ebene = 1)
- send {blind}{Numpad4}
- else
- send {blind){Shift up}{Numpad4}{Shift down}
-
+ if ((Ebene = 1) and !(CheckCompUni("1",0x00BC) ; 1/4
+ or CheckCompUni("3",0x00BE))) ; 3/4
+ {
+ if NumLock
+ send {blind}{Numpad4}
+ else
+ send {blind){Shift up}{Numpad4}
if (PriorDeadKey = "comp")
- CompKey := "Num_4"
+ CompKey := "4"
}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x2282) ; Teilmenge
else if (Ebene = 3)
- SendUnicodeChar(0x2190) ; leftarrow
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x2282) ; subset of
+ SendUnicodeChar(0x2190) ; Linkspfeil
+ else if (Ebene = 4)
+ if NumLock
+ send {blind}{Shift up}{NumpadLeft}
+ else
+ send {blind}{NumpadLeft}
return
neo_Numpad5:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadClear}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadClear}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
- {
- if !(CheckCompUni("Num_1",0x2155) ; 1/5
- or CheckCompUni("1",0x2155) ; 1/5
- or CheckCompUni("Num_2",0x2156) ; 2/5
- or CheckCompUni("2",0x2156) ; 2/5
- or CheckCompUni("Num_3",0x2157) ; 3/5
- or CheckCompUni("3",0x2157) ; 3/5
- or CheckCompUni("Num_4",0x2158) ; 4/5
- or CheckCompUni("4",0x2158)) ; 4/5
- if (Ebene = 1)
- send {blind}{Numpad5}
- else
- send {blind){Shift up}{Numpad5}{Shift down}
-
+ if ((Ebene = 1) and !(CheckCompUni("1",0x2155) ; 1/5
+ or CheckCompUni("2",0x2156) ; 2/5
+ or CheckCompUni("3",0x2157) ; 3/5
+ or CheckCompUni("4",0x2158))) ; 4/5
+ {
+ if NumLock
+ send {blind}{Numpad5}
+ else
+ send {blind){Shift up}{Numpad5}
if (PriorDeadKey = "comp")
- CompKey := "Num_5"
+ CompKey := "5"
}
else if (Ebene = 3)
- SendUnicodeChar(0x221E) ; INFINITY
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x220B) ; enthält das Element
+ SendUnicodeChar(0x221E) ; Unendlich
+ else if (Ebene = 2)
+ SendUnicodeChar(0x20AC) ; Euro
+ else if (Ebene = 4) ; Beg
+ if NumLock
+ send {NumPad5}
+ else
+ send {Shift}{Numpad5}
return
neo_Numpad6:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadRight}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadRight}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
- {
- if !(CheckCompUni("Num_1",0x2159) ; 1/6
- or CheckCompUni("1",0x2159) ; 1/6
- or CheckCompUni("Num_5",0x215A) ; 5/6
- or CheckCompUni("5",0x215A)) ; 5/6
- if (Ebene = 1)
- send {blind}{Numpad6}
- else
- send {blind){Shift up}{Numpad6}{Shift down}
-
+ if ((Ebene = 1) and !(CheckCompUni("1",0x2159) ; 1/6
+ or CheckCompUni("5",0x215a))) ; 5/6
+ {
+ if NumLock
+ send {blind}{Numpad6}
+ else
+ send {blind){Shift up}{Numpad6}
if (PriorDeadKey = "comp")
- CompKey := "Num_6"
+ CompKey := "6"
}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x2283) ; Obermenge
else if (Ebene = 3)
- SendUnicodeChar(0x2192) ; rightarrow
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x2283) ; superset of
+ SendUnicodeChar(0x2192) ; Rechtspfeil
+ else if (Ebene = 4)
+ if NumLock
+ send {blind}{Shift up}{NumpadRight}
+ else
+ send {blind}{NumpadRight}
return
neo_Numpad1:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadEnd}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadEnd}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
+ if (Ebene = 1)
{
- if (Ebene = 1)
+ if NumLock
send {blind}{Numpad1}
else
- send {blind){Shift up}{Numpad1}{Shift down}
-
+ send {blind){Shift up}{Numpad1}
if (PriorDeadKey = "comp")
- CompKey := "Num_1"
+ CompKey := "1"
}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x2714) ; Häkchen
else if (Ebene = 3)
SendUnicodeChar(0x2194) ; Links-Rechts-Pfeil
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x2264) ; leq
+ else if (Ebene = 4)
+ if NumLock
+ send {blind}{Shift up}{NumpadEnd}
+ else
+ send {blind}{NumpadEnd}
return
neo_Numpad2:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadDown}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadDown}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
- {
- if !(CheckCompUni("Num_1",0x00BD) ; 1/2
- or CheckCompUni("1",0x00BD)) ; 1/2
- if (Ebene = 1)
- send {blind}{Numpad2}
- else
- send {blind){Shift up}{Numpad2}{Shift down}
-
+ if ((Ebene = 1) and !(CheckCompUni("1",0x00BD))) ; 1/2
+ {
+ if NumLock
+ send {blind}{Numpad2}
+ else
+ send {blind){Shift up}{Numpad2}
if (PriorDeadKey = "comp")
- CompKey := "Num_2"
+ CompKey := "2"
}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x222A) ; Vereinigung
else if (Ebene = 3)
- SendUnicodeChar(0x2193) ; downarrow
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x222A) ; vereinigt
+ SendUnicodeChar(0x2192) ; Untenpfeil
+ else if (Ebene = 4)
+ if NumLock
+ send {blind}{Shift up}{NumpadDown}
+ else
+ send {blind}{NumpadDown}
return
neo_Numpad3:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadPgDn}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadPgDn}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
- {
- if !(CheckCompUni("Num_1",0x2153) ; 1/3
- or CheckCompUni("1",0x2154) ; 1/3
- or CheckCompUni("Num_2",0x2154) ; 2/3
- or CheckCompUni("2",0x2154)) ; 2/3
- if (Ebene = 1)
- send {blind}{Numpad3}
- else
- send {blind){Shift up}{Numpad3}{Shift down}
-
+ if ((Ebene = 1) and !(CheckCompUni("1",0x2153) ; 1/3
+ or CheckCompUni("5",0x2154))) ; 2/3
+ {
+ if NumLock
+ send {blind}{Numpad3}
+ else
+ send {blind){Shift up}{Numpad3}
if (PriorDeadKey = "comp")
- CompKey := "Num_3"
+ CompKey := "3"
}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x2718) ; Kreuzchen
else if (Ebene = 3)
- SendUnicodeChar(0x21CC) ; RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x2265) ; geq
+ SendUnicodeChar(0x2192) ; Rechtspfeil
+ else if (Ebene = 4)
+ if NumLock
+ send {blind}{Shift up}{NumpadPgDn}
+ else
+ send {blind}{NumpadPgDn}
return
neo_Numpad0:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadIns}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadIns}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
+ if (Ebene = 1)
{
- if (Ebene = 1)
+ if NumLock
send {blind}{Numpad0}
else
- send {blind){Shift up}{Numpad0}{Shift down}
-
+ send {blind){Shift up}{Numpad0}
if (PriorDeadKey = "comp")
- CompKey := "Num_0"
+ CompKey := "0"
}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x2030) ; Promille
else if (Ebene = 3)
- send {blind}`%
- else if ((Ebene = 4) or (Ebene = 5))
- send ‰
+ SendUnicodeChar(0x0025) ; Prozent
+ else if (Ebene = 4)
+ if NumLock
+ send {blind}{Shift up}{NumpadIns}
+ else
+ send {blind}{NumpadIns}
return
neo_NumpadDot:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadDel}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadDel}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
- if (Ebene = 1)
+ if (Ebene = 1)
+ {
+ if NumLock
send {blind}{NumpadDot}
- else
- send {blind){Shift up}{NumpadDot}{Shift down}
+ else
+ send {blind){Shift up}{NumpadDot}
+ }
+ else if (Ebene = 2)
+ send `,
else if (Ebene = 3)
send {blind}.
- else if ((Ebene = 4) or (Ebene = 5))
- send `,
+ else if (Ebene = 4)
+ if NumLock
+ send {blind}{Shift up}{NumpadDel}
+ else
+ send {blind}{NumpadDel}
return
+
+
/*
Sondertasten
*/
+
*space::
if ((einHandNeo))
spacepressed := 1
@@ -2573,11 +2487,7 @@ return
/*
Folgende Tasten sind nur aufgeführt, um PriorDeadKey zu leeren.
Irgendwie sieht das noch nicht schön aus. Vielleicht lässt sich dieses
- Problem irgendwie eleganter lösen...
-
- Nachtrag:
- Weil es mit Alt+Tab Probleme gab, wird hier jetzt erstmal rumgeflickschustert,
- bis eine allgemeinere Lösung gefunden wurde.
+ Problem auch eleganter lösen...
*/
*Enter::
@@ -2596,6 +2506,7 @@ return
}
return
+
*Del::
if (not(lernModus) or lernModus_std_Entf)
send {Blind}{Del}
@@ -2701,7 +2612,7 @@ return
Benutzungshinweise: Man benutze
KeyboardLED(LEDvalue,"Cmd"), wobei
Cmd = on/off/switch,
- LEDvalue: ScrollLock=1, NumLock=2, CapsLock=4
+ LEDvalue: ScrollLock=1, NumLock=2, CapsLock=4,
bzw. eine beliebige Summe dieser Werte:
AlleAus=0, CapsLock+NumLock=6, etc.
@@ -2709,7 +2620,7 @@ return
http://www.autohotkey.com/forum/viewtopic.php?t=10532
Um eventuelle Wechselwirkungen mit dem bestehenden
- Code (insb. der Unicode-Konvertierung) auszuschießen,
+ Code (insb. der Unicode-Konvertierung) auszuschließen,
sind auch alle (Hilfsmethoden) mit dem Postfix LED
versehen worden.
------------------------------------------------------
@@ -2816,138 +2727,6 @@ InsertIntegerLED(pInteger, ByRef pDest, pOffset = 0, pSize = 4)
-/*
- Funktionen
-*/
-
-/*
-Ebenen laut Referenz:
-1. Ebene (kein Mod) 4. Ebene (Mod4)
-2. Ebene (Umschalt) 5. Ebene (Umschalt+Mod3)
-3. Ebene (Mod3) 6. Ebene (Mod3+Mod4)
-*/
-
-EbeneAktualisieren()
-{
- global
- PriorDeadKey := DeadKey
- PriorCompKey := CompKey
- DeadKey := ""
- CompKey := ""
- Ebene12 := 0
- Ebene7 := 0
- Ebene8 := 0
- Modstate := IsShiftPressed() . IsMod3Pressed() . IsMod4Pressed()
-
- if (ahkTreiberKombi)
- if ( Modstate = "001")
- Ebene = 6
- else
- Ebene = -1
- else
- if (Modstate = "000")
- Ebene = 1 ; Ebene 1: Ohne Mod
- else if (Modstate = "100")
- Ebene = 2 ; Ebene 2: Shift
- else if (Modstate = "010")
- Ebene = 3 ; Ebene 3: Mod3
- else if (Modstate = "001")
- Ebene = 4 ; Ebene 4: Mod4
- else if (Modstate = "110")
- Ebene = 5 ; Ebene 5: Shift+Mod3
- else if (Modstate = "011")
- Ebene = 6 ; Ebene 6: Mod3+Mod4
- else if (Modstate = "101")
- {
- Ebene = 4 ; Ebene 7: Shift+Mod4 impliziert Ebene 4
- Ebene7 = 1
- }
- else if (Modstate = "111")
- {
- Ebene = 6 ; Ebene 8: Shift+Mod3+Mod4 impliziert Ebene 6
- Ebene8 = 1
- }
-
- Ebene12 := ((Ebene = 1) or (Ebene = 2))
-
- if GetKeyState("NumLock","T")
- NumLock = 1
- else
- NumLock = 0
-}
-
-
-IsShiftPressed()
-{
- return GetKeyState("Shift","P")
-}
-
-IsMod3Pressed()
-{
- global
- if (IsMod3Locked)
- {
- return (not ( GetKeyState("CapsLock","P") or GetKeyState("#","P") )) ; # = SC02B
- }
- else {
- return ( GetKeyState("CapsLock","P") or GetKeyState("#","P") ) ; # = SC02B
- }
-}
-
-IsMod4Pressed()
-{
- global
- if( not(einHandNeo) or not(spacepressed) )
- {
- if (IsMod4Locked)
- {
- return (not ( GetKeyState("<","P") or GetKeyState("SC138","P")))
- }
- else {
- return ( GetKeyState("<","P") or GetKeyState("SC138","P"))
- }
- }
- else
- {
- if (IsMod4Locked)
- {
- return (not ( GetKeyState("<","P") or GetKeyState("SC138","P") or GetKeyState("ä","P")))
- }
- else {
- return ( GetKeyState("<","P") or GetKeyState("SC138","P") or GetKeyState("ä","P"))
- }
- }
-
-}
-
-
-SendUnicodeChar(charCode)
-{
- IfWinActive, ahk_class gdkWindowToplevel
- {
- StringLower, charCode, charCode
- send % "^+u" . SubStr(charCode,3) . " "
- } else {
- VarSetCapacity(ki, 28 * 2, 0)
-
- EncodeInteger(&ki + 0, 1)
- EncodeInteger(&ki + 6, charCode)
- EncodeInteger(&ki + 8, 4)
- EncodeInteger(&ki +28, 1)
- EncodeInteger(&ki +34, charCode)
- EncodeInteger(&ki +36, 4|2)
-
- DllCall("SendInput", "UInt", 2, "UInt", &ki, "Int", 28)
- }
-}
-/*
-Über den GTK-Workaround:
-Dieser basiert auf http://www.autohotkey.com/forum/topic32947.html
-
-Der Aufruf von »SubStr(charCode,3)« geht davon aus, dass alle charCodes in Hex mit führendem „0x“ angegeben sind. Die abenteuerliche „^+u“-Konstruktion benötigt im Übrigen den Hex-Wert in Kleinschrift, was derzeit nicht bei den Zeichendefinitionen umgesetzt ist, daher zentral und weniger fehlerträchtig an dieser Stelle. Außerdem ein abschließend gesendetes Space, sonst bleibt der „eingetippte“ Unicode-Wert noch kurz sichtbar stehen, bevor er sich GTK-sei-dank in das gewünschte Zeichen verwandelt.
-*/
-
-
BSSendUnicodeChar(charCode)
{
send {bs}
@@ -2966,12 +2745,6 @@ Comp3UnicodeChar(charCode)
SendUnicodeChar(charCode)
}
-
-EncodeInteger(ref, val)
-{
- DllCall("ntdll\RtlFillMemoryUlong", "Uint", ref, "Uint", 4, "Uint", val)
-}
-
deadAsc(val)
{
global
@@ -3271,7 +3044,36 @@ BSUnicode(code)
Neuer Weg – Benutzung der entsprechenden Win32-API-Methode
************************************************************/
+/*
+Über den GTK-Workaround:
+Dieser basiert auf http://www.autohotkey.com/forum/topic32947.html
+Der Aufruf von »SubStr(charCode,3)« geht davon aus, dass alle charCodes in Hex mit führendem „0x“ angegeben sind. Die abenteuerliche „^+u“-Konstruktion benötigt im Übrigen den Hex-Wert in Kleinschrift, was derzeit nicht bei den Zeichendefinitionen umgesetzt ist, daher zentral und weniger fehlerträchtig an dieser Stelle. Außerdem ein abschließend gesendetes Space, sonst bleibt der „eingetippte“ Unicode-Wert noch kurz sichtbar stehen, bevor er sich GTK-sei-dank in das gewünschte Zeichen verwandelt.
+*/
+
+SendUnicodeChar(charCode)
+{
+ IfWinActive, ahk_class gdkWindowToplevel
+ {
+ StringLower, charCode, charCode
+ send % "^+u" . SubStr(charCode,3) . " "
+ } else {
+ VarSetCapacity(ki, 28 * 2, 0)
+
+ EncodeInteger(&ki + 0, 1)
+ EncodeInteger(&ki + 6, charCode)
+ EncodeInteger(&ki + 8, 4)
+ EncodeInteger(&ki +28, 1)
+ EncodeInteger(&ki +34, charCode)
+ EncodeInteger(&ki +36, 4|2)
+
+ DllCall("SendInput", "UInt", 2, "UInt", &ki, "Int", 28)
+ }
+}
+EncodeInteger(ref, val)
+{
+ DllCall("ntdll\RtlFillMemoryUlong", "Uint", ref, "Uint", 4, "Uint", val)
+}
/*
------------------------------------------------------
@@ -3448,99 +3250,5 @@ ToggleAlwaysOnTop:
alwaysOnTop = 1
}
Return
- ; Ende der BildschirmTastatur
-
-
-/*
- ------------------------------------------------------
- Shift+Pause "pausiert" das Script.
- ------------------------------------------------------
-*/
-
-*pause::
-Suspend, Permit
- if isshiftpressed()
- goto togglesuspend
- else
- send {blind}{pause}
-return
-
-; ------------------------------------
-
-^.::einHandNeo := not(einHandNeo) ; Punkt
-^,::lernModus := not(lernModus) ; Komma
-
-
-
-togglesuspend:
- if A_IsSuspended
- {
- menu, tray, rename, %enable%, %disable%
- menu, tray, tip, %name%
- if (iconBenutzen)
- menu, tray, icon, %ResourceFolder%\neo.ico,,1
- suspend , off ; Schaltet Suspend aus -> NEO
- }
- else
- {
- menu, tray, rename, %disable%, %enable%
- menu, tray, tip, %name% : Deaktiviert
- if (iconBenutzen)
- menu, tray, icon, %ResourceFolder%\neo_disabled.ico,,1
- suspend , on ; Schaltet Suspend ein -> QWERTZ
- }
-
-return
-
-
-help:
- Run, %A_WinDir%\hh mk:@MSITStore:autohotkey.chm
-return
-
-
-about:
- msgbox, 64, %name% – Ergonomische Tastaturbelegung,
- (
- %name%
- `nDas Neo-Layout ersetzt das übliche deutsche
- Tastaturlayout mit der Alternative Neo,
- beschrieben auf http://neo-layout.org/.
- `nDazu sind keine Administratorrechte nötig.
- `nWenn Autohotkey aktiviert ist, werden alle Tastendrucke
- abgefangen und statt dessen eine Übersetzung weitergeschickt.
- `nDies geschieht transparent für den Anwender,
- es muss nichts installiert werden.
- `nDie Zeichenübersetzung kann leicht über das Icon im
- Systemtray deaktiviert werden. `n
- )
-return
-
-
-neo:
- run http://neo-layout.org/
-return
-
-autohotkey:
- run http://autohotkey.com/
-return
-
-open:
- ListLines ; shows the Autohotkey window
-return
-
-edit:
- edit
-return
-
-reload:
- Reload
-return
-
-hide:
- menu, tray, noicon
-return
-exitprogram:
- exitapp
-return
 \ No newline at end of file
diff --git a/windows/autohotkey/neo20.exe b/windows/autohotkey/neo20.exe
index 8490524..beef924 100644
--- a/windows/autohotkey/neo20.exe
+++ b/windows/autohotkey/neo20.exe
Binary files differ