summaryrefslogtreecommitdiffstats
path: root/windows
diff options
context:
space:
mode:
authordennis <dennis@b9310e46-f624-0410-8ea1-cfbb3a30dc96>2008-07-02 14:06:46 +0000
committerdennis <dennis@b9310e46-f624-0410-8ea1-cfbb3a30dc96>2008-07-02 14:06:46 +0000
commitd7c07f2aad09fd84dc5eb43ffcfa4f5d19bf0e5e (patch)
tree4377013ab62a3836c53ae9a3ff5326ac1e6a18db /windows
parentb5884c3a7cbe08d9a56fa8adf7df470904e6545a (diff)
Der Versuch, das viel zu lange gewordenene AHK-Skript in logische Eizelteile aufzuteilen.
git-svn-id: https://svn.neo-layout.org@591 b9310e46-f624-0410-8ea1-cfbb3a30dc96
Diffstat (limited to 'windows')
-rw-r--r--windows/autohotkey/Build-Update.bat7
-rw-r--r--windows/autohotkey/Source/Changelog-and-Todo.ahk115
-rw-r--r--windows/autohotkey/Source/Global-Part.ahk198
-rw-r--r--windows/autohotkey/Source/Keys-Neo.ahk (renamed from windows/autohotkey/Source/neo20-all-in-one.ahk)1596
-rw-r--r--windows/autohotkey/Source/Keys-Qwert-to-Neo.ahk479
-rw-r--r--windows/autohotkey/Source/Methods-Layers.ahk127
-rw-r--r--windows/autohotkey/Source/Methods-Lights.ahk123
-rw-r--r--windows/autohotkey/Source/Methods-Other.ahk539
-rw-r--r--windows/autohotkey/Source/Warning.ahk3
-rw-r--r--windows/autohotkey/neo20-all-in-one.ahk387
-rw-r--r--windows/autohotkey/neo20-all-in-one.exebin421718 -> 421726 bytes
11 files changed, 1817 insertions, 1757 deletions
diff --git a/windows/autohotkey/Build-Update.bat b/windows/autohotkey/Build-Update.bat
index 98b4e8b..503620e 100644
--- a/windows/autohotkey/Build-Update.bat
+++ b/windows/autohotkey/Build-Update.bat
@@ -1,4 +1,4 @@
-@echo off
+REM @echo off
@@ -19,13 +19,16 @@ tskill neo20-all-in-one
echo Creating a new Driver from the Source code
-copy /B "%scr%\Warning.ahk" + "%scr%\neo20-all-in-one.ahk" "%svn%\%fn%.ahk"
+REM The order *is* important!
+copy "%scr%\Warning.ahk" + "%scr%\Changelog-and-Todo.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" "%svn%\%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 Driver Update complete! You can now close this log-window.
REM Start the new Driver
%fn%.exe
diff --git a/windows/autohotkey/Source/Changelog-and-Todo.ahk b/windows/autohotkey/Source/Changelog-and-Todo.ahk
new file mode 100644
index 0000000..840818f
--- /dev/null
+++ b/windows/autohotkey/Source/Changelog-and-Todo.ahk
@@ -0,0 +1,115 @@
+/*
+ Titel: NEO 2.0 beta Autohotkey-Treiber
+ $Revision: 583 $
+ $Date: 2008-06-28 02:23:42 +0200 (Sa, 28 Jun 2008) $
+ Autor: Stefan Mayer <stm (at) neo-layout.org>
+ Basiert auf: neo20-all-in-one.ahk vom 29.06.2007
+
+ TODO: - 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
+ - Sind Ebenen vom Touchpad noch richtig?
+
+ Ideen: - Symbol ändern (Neo-Logo abwarten)
+ - bei Ebene 4 rechte Hand (Numpad) z.B. Numpad5 statt 5 senden
+ CHANGEHISTORY:
+ Aktuelle Revision (von Matthias Berg):
+ - Bildschirmtastatur jetzt mit Mod4+F* statt Strg+F*
+ Revision 583 (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):
+ - Ebene 4 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 veringern
+ - 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ühte 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
+*/
+
+
diff --git a/windows/autohotkey/Source/Global-Part.ahk b/windows/autohotkey/Source/Global-Part.ahk
new file mode 100644
index 0000000..ccf5c2f
--- /dev/null
+++ b/windows/autohotkey/Source/Global-Part.ahk
@@ -0,0 +1,198 @@
+
+/******************
+ Globale Schalter *
+*******************
+*/
+
+; Im folgenden gilt (soweit nicht anders angegeben) Ja = 1, Nein = 0:
+ahkTreiberKombi := 0 ; Sollen Ebenen 1-4 ignoriert werden? (kann z.B. vom dll Treiber übernommen werden)
+einHandNeo := 0 ; Soll der Treiber im Einhandmodus betrieben werden?
+lernModus := 0 ; Soll der Lernmodus aktiviert werden?
+bildschirmTastaturEinbinden := 1 ; Sollen die Bilder für die Bildschirmtastatur in die EXE-Datei miteingebunden werden (Nachteil: grössere Dateigrösse, Vorteil: Referenz für Anfanger stets einfach verfügbar)
+UseMod4Light := 1 ; Aktivierter Mod4 Lock wird über die Rollen-LED des Keybord angezeigt (analog zu CapsLock)
+
+Process, Priority,, High
+
+
+/*************************
+ Recourcen-Verwaltung *
+**************************
+*/
+
+; Versuche zuerst, eventuell in die EXE eingebundenen Dateien zu extrahieren
+FileInstall, neo.ico, neo.ico, 1
+FileInstall, neo_disabled.ico, neo_disabled.ico, 1
+
+if(bildschirmTastaturEinbinden==1) {
+ FileInstall, ebene1.png, ebene1.png, 1
+ FileInstall, ebene2.png, ebene2.png, 1
+ FileInstall, ebene3.png, ebene3.png, 1
+ FileInstall, ebene4.png, ebene4.png, 1
+ FileInstall, ebene5.png, ebene5.png, 1
+ FileInstall, ebene6.png, ebene6.png, 1
+}
+
+; Benutze die Dateien (soweit sie vorhanden sind)
+if ( FileExist("ebene1.png") && FileExist("ebene2.png") && FileExist("ebene3.png") && FileExist("ebene4.png") && FileExist("ebene5.png") && FileExist("ebene6.png") )
+ zeigeBildschirmTastatur = 1
+
+if ( FileExist("neo.ico") && FileExist("neo_disabled.ico") )
+ iconBenutzen = 1
+
+
+/*************************
+ lernModus Konfiguration *
+ nur relevant wenn *
+ lernModus = 1 *
+ Strg+Komma schaltet um *
+**************************
+*/
+; 0 = aus, 1 = an
+
+
+; die Nachfolgenden sind nützlich um sich die Qwertz-Tasten abzugewöhnen, da alle auf der 4. Ebene vorhanden.
+lernModus_std_Return = 0
+lernModus_std_Backspace = 0
+lernModus_std_PgUp = 0
+lernModus_std_PgDn = 0
+lernModus_std_Einf = 0
+lernModus_std_Entf = 0
+lernModus_std_Pos0 = 0
+lernModus_std_Ende = 0
+lernModus_std_Hoch = 0
+lernModus_std_Runter = 0
+lernModus_std_Links = 0
+lernModus_std_Rechts = 0
+lernModus_std_ZahlenReihe = 0
+
+
+
+; im folgenden kann man auch noch ein paar Tasten der 4. Ebene deaktivieren
+; nützlich um sich zu zwingen, richtig zu schreiben
+lernModus_neo_Backspace = 0
+lernModus_neo_Entf = 1
+
+
+
+
+; aus Noras script kopiert:
+#usehook on
+#singleinstance force
+#LTrim
+ ; Quelltext kann eingerückt werden,
+ ; msgbox ist trotzdem linksbündig
+
+SetTitleMatchMode 2
+SendMode Input
+
+name = Neo 2.0
+enable = Aktiviere %name%
+disable = Deaktiviere %name%
+
+; Überprüfung auf deutsches Tastaturlayout
+; ----------------------------------------
+
+regread, inputlocale, HKEY_CURRENT_USER, Keyboard Layout\Preload, 1
+regread, inputlocalealias, HKEY_CURRENT_USER
+ , Keyboard Layout\Substitutes, %inputlocale%
+if inputlocalealias <>
+ inputlocale = %inputlocalealias%
+if inputlocale <> 00000407
+{
+ suspend
+ regread, inputlocale, HKEY_LOCAL_MACHINE
+ , SYSTEM\CurrentControlSet\Control\Keyboard Layouts\%inputlocale%
+ , Layout Text
+ msgbox, 48, Warnung!,
+ (
+ Nicht kompatibles Tastaturlayout:
+ `t%inputlocale%
+ `nDas deutsche QWERTZ muss als Standardlayout eingestellt
+ sein, damit %name% wie erwartet funktioniert.
+ `nÄndern Sie die Tastatureinstellung unter
+ `tSystemsteuerung
+ `t-> Regions- und Sprachoptionen
+ `t-> Sprachen
+ `t-> Details... `n
+ )
+ exitapp
+}
+
+
+
+; Menü des Systray-Icons
+; ----------------------
+
+if (iconBenutzen)
+ menu, tray, icon, neo.ico,,1
+menu, tray, nostandard
+menu, tray, add, Öffnen, open
+ menu, helpmenu, add, About, about
+ menu, helpmenu, add, Autohotkey-Hilfe, help
+ menu, helpmenu, add
+ menu, helpmenu, add, http://&autohotkey.com/, autohotkey
+ menu, helpmenu, add, http://www.neo-layout.org/, neo
+menu, tray, add, Hilfe, :helpmenu
+menu, tray, add
+menu, tray, add, %disable%, togglesuspend
+menu, tray, default, %disable%
+menu, tray, add
+menu, tray, add, Edit, edit
+menu, tray, add, Reload, reload
+menu, tray, add
+menu, tray, add, Nicht im Systray anzeigen, hide
+menu, tray, add, %name% beenden, exitprogram
+menu, tray, tip, %name%
+
+
+/*
+ Variablen initialisieren
+*/
+
+Ebene = 1
+PriorDeadKey := ""
+
+
+
+
+
+/*
+ EinHandNeo
+*/
+spacepressed := 0
+keypressed:= 0
+
+; Reihe 1
+gespiegelt_7 = neo_6
+gespiegelt_8 = neo_5
+gespiegelt_9 = neo_4
+gespiegelt_0 = neo_3
+gespiegelt_strich = neo_2
+gespiegelt_tot2 = neo_1
+
+; Reihe 2
+gespiegelt_k = neo_w
+gespiegelt_h = neo_c
+gespiegelt_g = neo_l
+gespiegelt_f = neo_v
+gespiegelt_q = neo_x
+gespiegelt_sz = neo_tab
+gespiegelt_tot3 = neo_tot1
+
+; Reihe 3
+gespiegelt_s = neo_o
+gespiegelt_n = neo_e
+gespiegelt_r = neo_a
+gespiegelt_t = neo_i
+gespiegelt_d = neo_u
+
+; Reihe 4
+gespiegelt_b = neo_z
+gespiegelt_m = neo_p
+gespiegelt_komma = neo_ä
+gespiegelt_punkt = neo_ö
+gespiegelt_j = neo_ü
+
+
+
+
diff --git a/windows/autohotkey/Source/neo20-all-in-one.ahk b/windows/autohotkey/Source/Keys-Neo.ahk
index 7ed9b99..5c269ad 100644
--- a/windows/autohotkey/Source/neo20-all-in-one.ahk
+++ b/windows/autohotkey/Source/Keys-Neo.ahk
@@ -1,914 +1,7 @@
/*
- Titel: NEO 2.0 beta Autohotkey-Treiber
- $Revision: 583 $
- $Date: 2008-06-28 02:23:42 +0200 (Sa, 28 Jun 2008) $
- Autor: Stefan Mayer <stm (at) neo-layout.org>
- Basiert auf: neo20-all-in-one.ahk vom 29.06.2007
-
- TODO: - 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
- - Sind Ebenen vom Touchpad noch richtig?
-
- Ideen: - Symbol ändern (Neo-Logo abwarten)
- - bei Ebene 4 rechte Hand (Numpad) z.B. Numpad5 statt 5 senden
- CHANGEHISTORY:
- Aktuelle Revision (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):
- - Ebene 4 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 veringern
- - 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ühte 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
-*/
-
-
-/******************
- Globale Schalter *
-*******************
-*/
-
-; Im folgenden gilt (soweit nicht anders angegeben) Ja = 1, Nein = 0:
-ahkTreiberKombi := 0 ; Sollen Ebenen 1-4 ignoriert werden? (kann z.B. vom dll Treiber übernommen werden)
-einHandNeo := 0 ; Soll der Treiber im Einhandmodus betrieben werden?
-lernModus := 0 ; Soll der Lernmodus aktiviert werden?
-bildschirmTastaturEinbinden := 1 ; Sollen die Bilder für die Bildschirmtastatur in die EXE-Datei miteingebunden werden (Nachteil: grössere Dateigrösse, Vorteil: Referenz für Anfanger stets einfach verfügbar)
-UseMod4Light := 1 ; Aktivierter Mod4 Lock wird über die Rollen-LED des Keybord angezeigt (analog zu CapsLock)
-
-Process, Priority,, High
-
-
-/*************************
- Recourcen-Verwaltung *
-**************************
-*/
-
-; Versuche zuerst, eventuell in die EXE eingebundenen Dateien zu extrahieren
-FileInstall, neo.ico, neo.ico, 1
-FileInstall, neo_disabled.ico, neo_disabled.ico, 1
-
-if(bildschirmTastaturEinbinden==1) {
- FileInstall, ebene1.png, ebene1.png, 1
- FileInstall, ebene2.png, ebene2.png, 1
- FileInstall, ebene3.png, ebene3.png, 1
- FileInstall, ebene4.png, ebene4.png, 1
- FileInstall, ebene5.png, ebene5.png, 1
- FileInstall, ebene6.png, ebene6.png, 1
-}
-
-; Benutze die Dateien (soweit sie vorhanden sind)
-if ( FileExist("ebene1.png") && FileExist("ebene2.png") && FileExist("ebene3.png") && FileExist("ebene4.png") && FileExist("ebene5.png") && FileExist("ebene6.png") )
- zeigeBildschirmTastatur = 1
-
-if ( FileExist("neo.ico") && FileExist("neo_disabled.ico") )
- iconBenutzen = 1
-
-
-/*************************
- lernModus Konfiguration *
- nur relevant wenn *
- lernModus = 1 *
- Strg+Komma schaltet um *
-**************************
-*/
-; 0 = aus, 1 = an
-
-
-; die Nachfolgenden sind nützlich um sich die Qwertz-Tasten abzugewöhnen, da alle auf der 4. Ebene vorhanden.
-lernModus_std_Return = 0
-lernModus_std_Backspace = 0
-lernModus_std_PgUp = 0
-lernModus_std_PgDn = 0
-lernModus_std_Einf = 0
-lernModus_std_Entf = 0
-lernModus_std_Pos0 = 0
-lernModus_std_Ende = 0
-lernModus_std_Hoch = 0
-lernModus_std_Runter = 0
-lernModus_std_Links = 0
-lernModus_std_Rechts = 0
-lernModus_std_ZahlenReihe = 0
-
-
-
-; im folgenden kann man auch noch ein paar Tasten der 4. Ebene deaktivieren
-; nützlich um sich zu zwingen, richtig zu schreiben
-lernModus_neo_Backspace = 0
-lernModus_neo_Entf = 1
-
-
-
-
-; aus Noras script kopiert:
-#usehook on
-#singleinstance force
-#LTrim
- ; Quelltext kann eingerückt werden,
- ; msgbox ist trotzdem linksbündig
-
-SetTitleMatchMode 2
-SendMode Input
-
-name = Neo 2.0
-enable = Aktiviere %name%
-disable = Deaktiviere %name%
-
-; Überprüfung auf deutsches Tastaturlayout
-; ----------------------------------------
-
-regread, inputlocale, HKEY_CURRENT_USER, Keyboard Layout\Preload, 1
-regread, inputlocalealias, HKEY_CURRENT_USER
- , Keyboard Layout\Substitutes, %inputlocale%
-if inputlocalealias <>
- inputlocale = %inputlocalealias%
-if inputlocale <> 00000407
-{
- suspend
- regread, inputlocale, HKEY_LOCAL_MACHINE
- , SYSTEM\CurrentControlSet\Control\Keyboard Layouts\%inputlocale%
- , Layout Text
- msgbox, 48, Warnung!,
- (
- Nicht kompatibles Tastaturlayout:
- `t%inputlocale%
- `nDas deutsche QWERTZ muss als Standardlayout eingestellt
- sein, damit %name% wie erwartet funktioniert.
- `nÄndern Sie die Tastatureinstellung unter
- `tSystemsteuerung
- `t-> Regions- und Sprachoptionen
- `t-> Sprachen
- `t-> Details... `n
- )
- exitapp
-}
-
-; Menü des Systray-Icons
-; ----------------------
-
-if (iconBenutzen)
- menu, tray, icon, neo.ico,,1
-menu, tray, nostandard
-menu, tray, add, Öffnen, open
- menu, helpmenu, add, About, about
- menu, helpmenu, add, Autohotkey-Hilfe, help
- menu, helpmenu, add
- menu, helpmenu, add, http://&autohotkey.com/, autohotkey
- menu, helpmenu, add, http://www.neo-layout.org/, neo
-menu, tray, add, Hilfe, :helpmenu
-menu, tray, add
-menu, tray, add, %disable%, togglesuspend
-menu, tray, default, %disable%
-menu, tray, add
-menu, tray, add, Edit, edit
-menu, tray, add, Reload, reload
-menu, tray, add
-menu, tray, add, Nicht im Systray anzeigen, hide
-menu, tray, add, %name% beenden, exitprogram
-menu, tray, tip, %name%
-
-
-/*
- Variablen initialisieren
-*/
-
-Ebene = 1
-PriorDeadKey := ""
-
-
-
-
+Die eigentliche NEO-Belegung und der Hauptteil des AHK-Treibers.
-/*
- EinHandNeo
-*/
-spacepressed := 0
-keypressed:= 0
-
-; Reihe 1
-gespiegelt_7 = neo_6
-gespiegelt_8 = neo_5
-gespiegelt_9 = neo_4
-gespiegelt_0 = neo_3
-gespiegelt_strich = neo_2
-gespiegelt_tot2 = neo_1
-
-; Reihe 2
-gespiegelt_k = neo_w
-gespiegelt_h = neo_c
-gespiegelt_g = neo_l
-gespiegelt_f = neo_v
-gespiegelt_q = neo_x
-gespiegelt_sz = neo_tab
-gespiegelt_tot3 = neo_tot1
-
-; Reihe 3
-gespiegelt_s = neo_o
-gespiegelt_n = neo_e
-gespiegelt_r = neo_a
-gespiegelt_t = neo_i
-gespiegelt_d = neo_u
-
-; Reihe 4
-gespiegelt_b = neo_z
-gespiegelt_m = neo_p
-gespiegelt_komma = neo_ä
-gespiegelt_punkt = neo_ö
-gespiegelt_j = neo_ü
-
-
-
-/*
- ------------------------------------------------------
- Modifier
- ------------------------------------------------------
-*/
-
-
-; CapsLock durch Umschalt+Umschalt
-;*CapsLock::return ; Nichts machen beim Capslock release event (weil es Mod3 ist)
-
-*#::return ; Nichts machen beim # release event (weil es Mod3 ist) ; # = SC02B
-
-;RShift wenn vorher LShift gedrückt wurde
-LShift & ~RShift::
- if GetKeyState("CapsLock","T")
- {
- setcapslockstate, off
- }
- else
- {
- setcapslockstate, on
- }
-return
-;LShift wenn vorher RShift gedrückt wurde
-RShift & ~LShift::
- if GetKeyState("CapsLock","T")
- {
- setcapslockstate, off
- }
- else
- {
- setcapslockstate, on
- }
-return
-
-; Mod4-Lock durch Mod4+Mod4
-IsMod4Locked := 0
-< & *SC138::
- if (IsMod4Locked)
- {
-; MsgBox Mod4-Feststellung aufgebehoben
- IsMod4Locked = 0
- if (UseMod4Light==1) {
- KeyboardLED(1,"off")
- }
- }
- else
- {
-; MsgBox Mod4 festgestellt: Um Mod4 wieder zu lösen drücke beide Mod4 Tasten gleichzeitig
- IsMod4Locked = 1
- if (UseMod4Light==1) {
- KeyboardLED(1,"on")
- }
-
- }
-return
-*SC138::
- altGrPressed := 1
-return ; Damit AltGr nicht extra etwas schickt und als stiller Modifier geht.
-*SC138 up::
- altGrPressed := 0
-return
-
-/* ; das folgende wird seltsamerweise nicht gebraucht :) oder führt zum AltGr Bug; Umschalt+‹ (Mod4) Zeigt ‹
-SC138 & *<::
- if (IsMod4Locked)
- {
- MsgBox Mod4-Feststellung aufgebehoben
- IsMod4Locked = 0
- }
- else
- {
- MsgBox Mod4 festgestellt: Um Mod4 wieder zu lösen drücke beide Mod4 Tasten gleichzeitig
- IsMod4Locked = 1
- }
-return
-*/
-
- ; Mod3-Lock durch Mod3+Mod3
-IsMod3Locked := 0
-SC02B & *Capslock:: ; #
- if (IsMod3Locked)
- {
- MsgBox Mod3-Feststellung aufgebehoben
- IsMod3Locked = 0
- }
- else
- {
- MsgBox Mod3 festgestellt: Um Mod3 wieder zu lösen drücke beide Mod3 Tasten gleichzeitig
- IsMod3Locked = 1
- }
-return
-
-
-*Capslock:: return
-;Capslock::MsgBox hallo
-/*
-Capslock & *:
- if (IsMod3Locked)
- {
- MsgBox Mod3-Feststellung aufgebehoben
- IsMod3Locked = 0
- }
- else
- {
- MsgBox Mod3 festgestellt: Um Mod3 wieder zu lösen drücke beide Mod3 Tasten gleichzeitig
- IsMod3Locked = 1
- }
-return
-*/
-
-/*
-; Wird nicht mehr gebraucht weil jetzt auf b (bzw. *n::)
-; KP_Decimal durch Mod4+Mod4
-*<::
-*SC138::
- if GetKeyState("<","P") and GetKeyState("SC138","P")
- {
- send {numpaddot}
- }
-return
-
-*/
-
-/*
- ------------------------------------------------------
- QWERTZ->Neo umwandlung
- ------------------------------------------------------
-*/
-; Reihe 1
-*SC029::goto neo_tot1 ; Zirkumflex ^
-*1::goto neo_1
-*2::goto neo_2
-*3::goto neo_3
-*4::goto neo_4
-*5::goto neo_5
-*6::goto neo_6
-*7::
- if( not(einHandNeo) or not(spacepressed) )
- goto neo_7
- else
- {
- keypressed := 1
- goto %gespiegelt_7%
- }
-return
-*8::
- if( not(einHandNeo) or not(spacepressed) )
- goto neo_8
- else
- {
- keypressed := 1
- goto %gespiegelt_8%
- }
-return
-*9::
- if( not(einHandNeo) or not(spacepressed) )
- goto neo_9
- else
- {
- keypressed := 1
- goto %gespiegelt_9%
- }
-return
-*0::
- if( not(einHandNeo) or not(spacepressed) )
- goto neo_0
- else
- {
- keypressed := 1
- goto %gespiegelt_0%
- }
-return
-*SC00C:: ; ß
- if ( not(ahkTreiberKombi) )
- {
- if( not(einHandNeo) or not(spacepressed) )
- goto neo_strich
- else
- {
- keypressed := 1
- goto %gespiegelt_strich%
- }
- }
- else
- {
- goto neo_sz
- }
-*SC00D::goto neo_tot2 ; Akkut
-; Reihe 2
-*Tab::goto neo_tab
-*q::
- if ( not(ahkTreiberKombi) )
- {
- goto neo_x
- }
- else
- {
- goto neo_q
- }
-*w::
- if ( not(ahkTreiberKombi) )
- {
- goto neo_v
- }
- else
- {
- goto neo_w
- }
-*e::
- if ( not(ahkTreiberKombi) )
- {
- goto neo_l
- }
- else
- {
- goto neo_e
- }
-*r::
- if ( not(ahkTreiberKombi) )
- {
- goto neo_c
- }
- else
- {
- goto neo_r
- }
-*t::
- if ( not(ahkTreiberKombi) )
- {
- goto neo_w
- }
- else
- {
- goto neo_t
- }
-*SC015:: ; z
- if ( not(ahkTreiberKombi) )
- {
- if( not(einHandNeo) or not(spacepressed) )
- goto neo_k
- else
- {
- keypressed := 1
- goto %gespiegelt_k%
- }
- }
- else
- {
- goto neo_z
- }
-*u::
- if ( not(ahkTreiberKombi) )
- {
- if( not(einHandNeo) or not(spacepressed) )
- goto neo_h
- else
- {
- keypressed := 1
- goto %gespiegelt_h%
- }
- }
- else
- {
- goto neo_u
- }
-*i::
- if ( not(ahkTreiberKombi) )
- {
- if( not(einHandNeo) or not(spacepressed) )
- goto neo_g
- else
- {
- keypressed := 1
- goto %gespiegelt_g%
- }
- }
- else
- {
- goto neo_i
- }
-*o::
- if ( not(ahkTreiberKombi) )
- {
- if( not(einHandNeo) or not(spacepressed) )
- goto neo_f
- else
- {
- keypressed := 1
- goto %gespiegelt_f%
- }
- }
- else
- {
- goto neo_o
- }
-*p::
- if ( not(ahkTreiberKombi) )
- {
- if( not(einHandNeo) or not(spacepressed) )
- goto neo_q
- else
- {
- keypressed := 1
- goto %gespiegelt_q%
- }
- }
- else
- {
- goto neo_p
- }
-*SC01A:: ; ü
- if ( not(ahkTreiberKombi) )
- {
- if( not(einHandNeo) or not(spacepressed) )
- goto neo_sz
- else
- {
- keypressed := 1
- goto %gespiegelt_sz%
- }
- }
- else
- {
- goto neo_ü
- }
-*SC01B:: ; +
- if ( not(ahkTreiberKombi) )
- {
- if( not(einHandNeo) or not(spacepressed) )
- goto neo_tot3
- else
- {
- keypressed := 1
- goto %gespiegelt_tot3%
- }
- }
- else
- { } ; this should never happen
-; Reihe 3
-*a::
- if ( not(ahkTreiberKombi) )
- {
- goto neo_u
- }
- else
- {
- goto neo_a
- }
-*s::
- if ( not(ahkTreiberKombi) )
- {
- goto neo_i
- }
- else
- {
- goto neo_s
- }
-*d::goto neo_a
- if ( not(ahkTreiberKombi) )
- {
- goto neo_a
- }
- else
- {
- goto neo_d
- }
-*f::
- if ( not(ahkTreiberKombi) )
- {
- goto neo_e
- }
- else
- {
- goto neo_f
- }
-*g::
- if ( not(ahkTreiberKombi) )
- {
- goto neo_o
- }
- else
- {
- goto neo_g
- }
-*h::
- if ( not(ahkTreiberKombi) )
- {
- if( not(einHandNeo) or not(spacepressed) )
- goto neo_s
- else
- {
- keypressed := 1
- goto %gespiegelt_s%
- }
- }
- else
- {
- goto neo_h
- }
-*j::
- if ( not(ahkTreiberKombi) )
- {
- if( not(einHandNeo) or not(spacepressed) )
- goto neo_n
- else
- {
- keypressed := 1
- goto %gespiegelt_n%
- }
- }
- else
- {
- goto neo_j
- }
-*k::
- if ( not(ahkTreiberKombi) )
- {
- if( not(einHandNeo) or not(spacepressed) )
- goto neo_r
- else
- {
- keypressed := 1
- goto %gespiegelt_r%
- }
- }
- else
- {
- goto neo_k
- }
-*l::
- if ( not(ahkTreiberKombi) )
- {
- if( not(einHandNeo) or not(spacepressed) )
- goto neo_t
- else
- {
- keypressed := 1
- goto %gespiegelt_t%
- }
- }
- else
- {
- goto neo_l
- }
-*SC027:: ; ö
- if ( not(ahkTreiberKombi) )
- {
- if( not(einHandNeo) or not(spacepressed) )
- goto neo_d
- else
- {
- keypressed := 1
- goto %gespiegelt_d%
- }
- }
- else
- {
- goto neo_ö
- }
-*SC028:: ; ä
- if ( not(ahkTreiberKombi) )
- {
- goto neo_y
- }
- else
- {
- goto neo_ä
- }
-; Reihe 4
-*SC02C:: ; y
- if ( not(ahkTreiberKombi) )
- {
- goto neo_ü
- }
- else
- {
- goto neo_y
- }
-*x::
- if ( not(ahkTreiberKombi) )
- {
- goto neo_ö
- }
- else
- {
- goto neo_x
- }
-*c::
- if ( not(ahkTreiberKombi) )
- {
- goto neo_ä
- }
- else
- {
- goto neo_c
- }
-*v::
- if ( not(ahkTreiberKombi) )
- {
- goto neo_p
- }
- else
- {
- goto neo_v
- }
-*b::
- if ( not(ahkTreiberKombi) )
- {
- goto neo_z
- }
- else
- {
- goto neo_b
- }
-*n::
- if ( not(ahkTreiberKombi) )
- {
- if( not(einHandNeo) or not(spacepressed) )
- goto neo_b
- else
- {
- keypressed := 1
- goto %gespiegelt_b%
- }
- }
- else
- {
- goto neo_n
- }
-*m::
- if( not(einHandNeo) or not(spacepressed) )
- goto neo_m
- else
- {
- keypressed := 1
- goto %gespiegelt_m%
- }
-return
-*SC033:: ; Komma ,
- if( not(einHandNeo) or not(spacepressed) )
- goto neo_komma
- else
- {
- keypressed := 1
- goto %gespiegelt_komma%
- }
-return
-*SC034:: ; Punkt .
- if( not(einHandNeo) or not(spacepressed) )
- goto neo_punkt
- else
- {
- keypressed := 1
- goto %gespiegelt_punkt%
- }
-return
-*SC035:: ; Minus -
- if ( not(ahkTreiberKombi) )
- {
- if( not(einHandNeo) or not(spacepressed) )
- goto neo_j
- else
- {
- keypressed := 1
- goto %gespiegelt_j%
- }
- }
- else
- {
- goto neo_strich
- }
-; Numpad
-*NumpadDiv::goto neo_NumpadDiv
-*NumpadMult::goto neo_NumpadMult
-*NumpadSub::goto neo_NumpadSub
-*NumpadAdd::goto neo_NumpadAdd
-*NumpadEnter::goto neo_NumpadEnter
-*Numpad7::goto neo_Numpad7
-*Numpad8::goto neo_Numpad8
-*Numpad9::goto neo_Numpad9
-*Numpad4::goto neo_Numpad4
-*Numpad5::goto neo_Numpad5
-*Numpad6::goto neo_Numpad6
-*Numpad1::goto neo_Numpad1
-*Numpad2::goto neo_Numpad2
-*Numpad3::goto neo_Numpad3
-*Numpad0::goto neo_Numpad0
-*NumpadDot::goto neo_NumpadDot
-*NumpadHome::goto neo_NumpadHome
-*NumpadUp::goto neo_NumpadUp
-*NumpadPgUp::goto neo_NumpadPgUp
-*NumpadLeft::goto neo_NumpadLeft
-*NumpadClear::goto neo_NumpadClear
-*NumpadRight::goto neo_NumpadRight
-*NumpadEnd::goto neo_NumpadEnd
-*NumpadDown::goto neo_NumpadDown
-*NumpadPgDn::goto neo_NumpadPgDn
-*NumpadIns::goto neo_NumpadIns
-*NumpadDel::goto neo_NumpadDel
-
-
-/*
Ablauf bei toten Tasten:
1. Ebene Aktualisieren
2. Abhängig von der Variablen "Ebene" Zeichen ausgeben und die Variable "PriorDeadKey" setzen
@@ -1075,7 +168,7 @@ neo_2:
CompKey := ""
}
else if Ebene = 3
- {
+ {
SendUnicodeChar(0x00B2) ; 2 Hochgestellte
CompKey := ""
}
@@ -1201,7 +294,7 @@ neo_4:
CompKey := "4"
else
CompKey := ""
- }
+ }
else if Ebene = 2
{
send »
@@ -1275,7 +368,7 @@ neo_5:
CompKey := "5"
else
CompKey := ""
- }
+ }
else if Ebene = 2
{
send «
@@ -1342,7 +435,7 @@ neo_6:
CompKey := "6"
else
CompKey := ""
- }
+ }
else if Ebene = 2
{
send €
@@ -1405,7 +498,7 @@ neo_7:
CompKey := "7"
else
CompKey := ""
- }
+ }
else if Ebene = 2
{
send $
@@ -1479,7 +572,7 @@ neo_8:
CompKey := "8"
else
CompKey := ""
- }
+ }
else if Ebene = 2
{
send „
@@ -1542,7 +635,7 @@ neo_9:
CompKey := "9"
else
CompKey := ""
- }
+ }
else if Ebene = 2
{
send “
@@ -1605,7 +698,7 @@ neo_0:
CompKey := "0"
else
CompKey := ""
- }
+ }
else if Ebene = 2
{
send ”
@@ -2256,7 +1349,7 @@ neo_u:
send \
else if Ebene = 4
Send {blind}{Home}
- else if Ebene = 5
+ else if Ebene = 5
{ } ; leer
else if Ebene = 6
SendUnicodeChar(0x222E) ; contour integral
@@ -2333,7 +1426,7 @@ neo_i:
Sendinput {Blind}{Left}
CompKey := ""
}
- else if Ebene = 5
+ else if Ebene = 5
{
SendUnicodeChar(0x03B9) ; iota
CompKey := ""
@@ -2533,7 +1626,7 @@ neo_o:
else if (PriorDeadKey = "a4") ; ogonek
BSSendUnicodeChar(0x01EB)
else if (PriorDeadKey = "c2") ; caron
- BSSendUnicodeChar(0x01D2)
+ BSSendUnicodeChar(0x01D2)
else
sendinput {blind}o
if (PriorDeadKey = "comp") ; compose
@@ -2917,9 +2010,9 @@ neo_y:
else if Ebene = 3
send @
else if Ebene = 4
- Send .
+ Send .
else if Ebene = 5
- SendUnicodeChar(0x03C5) ; upsilon
+ SendUnicodeChar(0x03C5) ; upsilon
else if Ebene = 6
SendUnicodeChar(0x2207) ; nabla
PriorDeadKey := "" CompKey := ""
@@ -3794,6 +2887,7 @@ neo_NumpadPgUp:
}
else if ( (Ebene = 4) or (Ebene = 5) )
{
+
SendUnicodeChar(0x226B) ; gg
CompKey := ""
}
@@ -4056,7 +3150,7 @@ return
*/
*space::
if (einHandNeo)
- spacepressed := 1
+ spacepressed := 1
else
goto neo_SpaceUp
return
@@ -4067,7 +3161,7 @@ return
if (keypressed)
{
keypressed := 0
- spacepressed := 0
+ spacepressed := 0
}
else
{
@@ -4107,8 +3201,8 @@ neo_SpaceUp:
else if Ebene = 6
SendUnicodeChar(0x202F) ; schmales Leerzeichen
PriorDeadKey := "" CompKey := ""
- spacepressed := 0
- keypressed := 0
+ spacepressed := 0
+ keypressed := 0
return
/*
@@ -4196,7 +3290,7 @@ nach einem DeadKey drückt...
neo_tab:
if ( GetKeyState("SC038","P") )
{
- Send,{Blind}{AltDown}{tab}
+ Send,{Blind}{AltDown}{tab}
/*
if (isShiftPressed())
@@ -4206,7 +3300,7 @@ neo_tab:
else
{
; msgbox alt+tab
- Send,{AltDown}{tab}
+ Send,{AltDown}{tab}
; SC038 & Tab::AltTab ; http://de.autohotkey.com/docs/Hotkeys.htm#AltTabDetail
}
*/
@@ -4228,7 +3322,7 @@ return
return
*SC038 down:: ; LAlt, damit AltTab funktioniert
- Send,{Blind}{AltDown}
+ Send,{Blind}{AltDown}
PriorDeadKey := "" CompKey := ""
return
@@ -4297,651 +3391,5 @@ return
return
-/*
- ------------------------------------------------------
- Funktionen
- ------------------------------------------------------
-*/
-
-/*
-Ebenen laut Referenz:
-1. Ebene (kein Mod) 4. Ebene (Mod4)
-2. Ebene (Umschalt) 5. Ebene (Mod3+Umschalt)
-3. Ebene (Mod3) 6. Ebene (Mod3+Mod4)
-*/
-
-EbeneAktualisieren()
-{
- global
- if (ahkTreiberKombi)
- {
- if ( IsMod4Pressed() and not(IsShiftPressed()) and not(IsMod3Pressed()))
- {
- Ebene = 6
- }
- else
- {
- Ebene = -1
- }
- }
- else
- {
- if ( IsShiftPressed() )
- { ; Umschalt
- if ( IsMod3Pressed() )
- { ; Umschalt UND Mod3
- if ( IsMod4Pressed() )
- { ; Umschald UND Mod3 UND Mod4
- ; Ebene 8 impliziert Ebene 6
- Ebene = 6
- }
- else
- { ; Umschald UND Mod3 NICHT Mod4
- Ebene = 5
- }
- }
- else
- { ; Umschalt NICHT Mod3
- if ( IsMod4Pressed() )
- { ; Umschald UND Mod4 NICHT Mod3
- ; Ebene 7 impliziert Ebene 4
- Ebene = 4
- }
- else
- { ; Umschald NICHT Mod3 NICHT Mod4
- Ebene = 2
- }
- }
- }
- else
- { ; NICHT Umschalt
- if ( IsMod3Pressed() )
- { ; Mod3 NICHT Umschalt
- if ( IsMod4Pressed() )
- { ; Mod3 UND Mod4 NICHT Umschalt
- Ebene = 6
- }
- else
- { ; Mod3 NICHT Mod4 NICHT Umschalt
- Ebene = 3
- }
- }
- else
- { ; NICHT Umschalt NICHT Mod3
- if ( IsMod4Pressed() )
- { ; Mod4 NICHT Umschalt NICHT Mod3
- Ebene = 4
- }
- else
- { ; NICHT Umschalt NICHT Mod3 NICHT Mod4
- Ebene = 1
- }
- }
- }
- }
-}
-
-
-
-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") or altGrPressed ))
- }
- else {
- return ( GetKeyState("<","P") or GetKeyState("SC138","P") or altGrPressed )
- }
- }
- else
- {
- if (IsMod4Locked)
- {
- return (not ( GetKeyState("<","P") or GetKeyState("SC138","P") or GetKeyState("ä","P") or altGrPressed ))
- }
- else {
- return ( GetKeyState("<","P") or GetKeyState("SC138","P") or GetKeyState("ä","P") or altGrPressed )
- }
- }
-
-}
-
-
-/*************************
- Alte Methoden
-*************************/
-
-/*
-Unicode(code)
-{
- saved_clipboard := ClipboardAll
- Transform, Clipboard, Unicode, %code%
- sendplay ^v
- Clipboard := saved_clipboard
-}
-
-BSUnicode(code)
-{
- saved_clipboard := ClipboardAll
- Transform, Clipboard, Unicode, %code%
- sendplay {bs}^v
- Clipboard := saved_clipboard
-}
-*/
-
-IsModifierPressed()
-{
- if (GetKeyState("LControl","P") or GetKeyState("RControl","P") or GetKeyState("LAlt","P") or GetKeyState("RAltl","P") or GetKeyState("LWin","P") or GetKeyState("RWin","P") or GetKeyState("LShift","P") or GetKeyState("RShift","P") or GetKeyState("AltGr","P") )
- {
- return 1
- }
- else
- {
- return 0
- }
-}
-
-SendUnicodeChar(charCode)
-{
- 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)
-}
-
-BSSendUnicodeChar(charCode)
-{
- send {bs}
- SendUnicodeChar(charCode)
-}
-
-CompUnicodeChar(charCode)
-{
- send {bs}
- SendUnicodeChar(charCode)
-}
-Comp3UnicodeChar(charCode)
-{
- send {bs}
- send {bs}
- SendUnicodeChar(charCode)
-}
-
-
-EncodeInteger(ref, val)
-{
- DllCall("ntdll\RtlFillMemoryUlong", "Uint", ref, "Uint", 4, "Uint", val)
-}
-
-
-
-
-/*
- ------------------------------------------------------
- Methode zur Steuerung der Keyboard-LEDs
- (NumLock/CapsLock/ScrollLock-Lichter)
-
- Benutzungshinweise:
- KeyboardLED(LEDvalue,"Cmd"), wobei
- Cmd = on/off/switch,
- LEDvalue: ScrollLock=1, NumLock=2, CapsLock=4
- bzw. eine beliebige Summe dieser Werte:
- AlleAus=0, CapsLock+NumLock=6, etc.
-
- Der folgende Code wurde übernommen von:
- http://www.autohotkey.com/forum/viewtopic.php?t=10532
-
- Um eventuelle Wechselwirkungen mit dem bestehenden
- Code (insb. der Unicode-Konvertierung) auszuschießen,
- sind auch alle (Hilfsmethoden) mit dem Postfix LED
- versehen worden.
- ------------------------------------------------------
-*/
-
-KeyboardLED(LEDvalue, Cmd) ; LEDvalue: ScrollLock=1, NumLock=2, CapsLock=4 ; Cmd = on/off/switch
-{
- Static h_device
- If ! h_device ; initialise
- {
- device =\Device\KeyBoardClass0
- SetUnicodeStrLED(fn,device)
- h_device:=NtCreateFileLED(fn,0+0x00000100+0x00000080+0x00100000,1,1,0x00000040+0x00000020,0)
- }
-
- VarSetCapacity( output_actual, 4, 0 )
- input_size = 4
- VarSetCapacity( input, input_size, 0 )
-
- If Cmd= switch ;switches every LED according to LEDvalue
- KeyLED:= LEDvalue
- If Cmd= on ;forces all choosen LED's to ON (LEDvalue= 0 ->LED's according to keystate)
- KeyLED:= LEDvalue | (GetKeyState("ScrollLock", "T") + 2*GetKeyState("NumLock", "T") + 4*GetKeyState("CapsLock", "T"))
- If Cmd= off ;forces all choosen LED's to OFF (LEDvalue= 0 ->LED's according to keystate)
- {
- LEDvalue:= LEDvalue ^ 7
- KeyLED:= LEDvalue & (GetKeyState("ScrollLock", "T") + 2*GetKeyState("NumLock", "T") + 4*GetKeyState("CapsLock", "T"))
- }
- ; EncodeIntegerLED( KeyLED, 1, &input, 2 ) ;input bit pattern (KeyLED): bit 0 = scrolllock ;bit 1 = numlock ;bit 2 = capslock
- input := Chr(1) Chr(1) Chr(KeyLED)
- input := Chr(1)
- input=
- success := DllCall( "DeviceIoControl"
- , "uint", h_device
- , "uint", CTL_CODE_LED( 0x0000000b ; FILE_DEVICE_KEYBOARD
- , 2
- , 0 ; METHOD_BUFFERED
- , 0 ) ; FILE_ANY_ACCESS
- , "uint", &input
- , "uint", input_size
- , "uint", 0
- , "uint", 0
- , "uint", &output_actual
- , "uint", 0 )
-}
-
-CTL_CODE_LED( p_device_type, p_function, p_method, p_access )
-{
- Return, ( p_device_type << 16 ) | ( p_access << 14 ) | ( p_function << 2 ) | p_method
-}
-
-
-NtCreateFileLED(ByRef wfilename,desiredaccess,sharemode,createdist,flags,fattribs)
-{
- VarSetCapacity(fh,4,0)
- VarSetCapacity(objattrib,24,0)
- VarSetCapacity(io,8,0)
- VarSetCapacity(pus,8)
- uslen:=DllCall("lstrlenW","str",wfilename)*2
- InsertIntegerLED(uslen,pus,0,2)
- InsertIntegerLED(uslen,pus,2,2)
- InsertIntegerLED(&wfilename,pus,4)
- InsertIntegerLED(24,objattrib,0)
- InsertIntegerLED(&pus,objattrib,8)
- status:=DllCall("ntdll\ZwCreateFile","str",fh,"UInt",desiredaccess,"str",objattrib,"str",io,"UInt",0,"UInt",fattribs
- ,"UInt",sharemode,"UInt",createdist,"UInt",flags,"UInt",0,"UInt",0, "UInt")
- return ExtractIntegerLED(fh)
-}
-
-
-SetUnicodeStrLED(ByRef out, str_)
-{
- VarSetCapacity(st1, 8, 0)
- InsertIntegerLED(0x530025, st1)
- VarSetCapacity(out, (StrLen(str_)+1)*2, 0)
- DllCall("wsprintfW", "str", out, "str", st1, "str", str_, "Cdecl UInt")
-}
-
-
-ExtractIntegerLED(ByRef pSource, pOffset = 0, pIsSigned = false, pSize = 4)
-; pSource is a string (buffer) whose memory area contains a raw/binary integer at pOffset.
-; The caller should pass true for pSigned to interpret the result as signed vs. unsigned.
-; pSize is the size of PSource's integer in bytes (e.g. 4 bytes for a DWORD or Int).
-; pSource must be ByRef to avoid corruption during the formal-to-actual copying process
-; (since pSource might contain valid data beyond its first binary zero).
-{
- Loop %pSize% ; Build the integer by adding up its bytes.
- result += *(&pSource + pOffset + A_Index-1) << 8*(A_Index-1)
- if (!pIsSigned OR pSize > 4 OR result < 0x80000000)
- return result ; Signed vs. unsigned doesn't matter in these cases.
- ; Otherwise, convert the value (now known to be 32-bit) to its signed counterpart:
- return -(0xFFFFFFFF - result + 1)
-}
-
-
-InsertIntegerLED(pInteger, ByRef pDest, pOffset = 0, pSize = 4)
-; The caller must ensure that pDest has sufficient capacity. To preserve any existing contents in pDest,
-; only pSize number of bytes starting at pOffset are altered in it.
-{
- Loop %pSize% ; Copy each byte in the integer into the structure as raw binary data.
- DllCall("RtlFillMemory", "UInt", &pDest + pOffset + A_Index-1, "UInt", 1, "UChar", pInteger >> 8*(A_Index-1) & 0xFF)
-}
-
-
-
-/*
- ------------------------------------------------------
- BildschirmTastatur
- ------------------------------------------------------
-*/
-guiErstellt = 0
-alwaysOnTop = 1
-aktuellesBild = ebene1.png
-^~F1::
-{
- if (zeigeBildschirmTastatur)
- goto Switch1
- return
-}
-^~F2::
-{
- if (zeigeBildschirmTastatur)
- goto Switch2
- return
-}
-^~F3::
-{
- if (zeigeBildschirmTastatur)
- goto Switch3
- return
-}
-^~F4::
-{
- if (zeigeBildschirmTastatur)
- goto Switch4
- return
-}
-^~F5::
-{
- if (zeigeBildschirmTastatur)
- goto Switch5
- return
-}
-^~F6::
-{
- if (zeigeBildschirmTastatur)
- goto Switch6
- return
-}
-^~F7::
-{
- if (zeigeBildschirmTastatur)
- goto Show
- return
-}
-^~F8::
-{
- if (zeigeBildschirmTastatur)
- goto ToggleAlwaysOnTop
- return
-}
-
-Switch1:
- if (guiErstellt)
- {
- if (Image == "ebene1.png")
- goto Close
- else
- {
- Image = ebene1.png
- SetTimer, Refresh
- }
- }
- else
- {
- Image = ebene1.png
- goto Show
- }
-Return
-
-Switch2:
- if (guiErstellt)
- {
- if (Image == "ebene2.png")
- goto Close
- else
- {
- Image = ebene2.png
- SetTimer, Refresh
- }
- }
- else
- {
- Image = ebene2.png
- goto Show
- }
-Return
-
-Switch3:
- if (guiErstellt)
- {
- if (Image == "ebene3.png")
- goto Close
- else
- {
- Image = ebene3.png
- SetTimer, Refresh
- }
- }
- else
- {
- Image = ebene3.png
- goto Show
- }
-Return
-
-Switch4:
- if (guiErstellt)
- {
- if (Image == "ebene4.png")
- goto Close
- else
- {
- Image = ebene4.png
- SetTimer, Refresh
- }
- }
- else
- {
- Image = ebene4.png
- goto Show
- }
-Return
-
-Switch5:
- if (guiErstellt)
- {
- if (Image == "ebene5.png")
- goto Close
- else
- {
- Image = ebene5.png
- SetTimer, Refresh
- }
- }
- else
- {
- Image = ebene5.png
- goto Show
- }
-Return
-
-Switch6:
- if (guiErstellt)
- {
- if (Image == "ebene6.png")
- goto Close
- else
- {
- Image = ebene6.png
- SetTimer, Refresh
- }
- }
- else
- {
- Image = ebene6.png
- goto Show
- }
-Return
-
-Show:
- if (guiErstellt)
- {
- goto Close
- }
- else
- {
- if (Image = "")
- {
- Image = ebene1.png
- }
- yPosition := A_ScreenHeight -270
- Gui, Color, FFFFFF
- Gui, Add, Button, xm+5 gSwitch1, F1
- Gui, Add, Text, x+5, kleine Buchstaben
- Gui, Add, Button, xm+5 gSwitch2, F2
- Gui, Add, Text, x+5, große Buchstaben
- Gui, Add, Button, xm+5 gSwitch3, F3
- Gui, Add, Text, x+5, Satz-/Sonderzeichen
- Gui, Add, Button, xm+5 gSwitch4, F4
- Gui, Add, Text, x+5, Zahlen / Steuerung
- Gui, Add, Button, xm+5 gSwitch5, F5
- Gui, Add, Text, x+5, Sprachen
- Gui, Add, Button, xm+5 gSwitch6, F6
- Gui, Add, Text, x+5, Mathesymbole
- Gui, Add, Button, xm+5 gShow, F7
- Gui, Add, Text, x+5, An /
- Gui, Add, Text, y+3, Aus
- Gui, Add, Button, x+10 y+-30 gShow, F8
- Gui, Add, Text, x+5, OnTop
- Gui, Add, Picture,AltSubmit ys w564 h200 vPicture, %Image%
- Gui, +AlwaysOnTop
- Gui, Show, y%yposition% Autosize
- SetTimer, Refresh
- guiErstellt = 1
- }
-Return
-
-Close:
- guiErstellt = 0
- Gui, Destroy
-Return
-
-Refresh:
- If (Image != OldImage)
- {
- GuiControl, , Picture, %Image%
- OldImage := Image
- }
-Return
-
-ToggleAlwaysOnTop:
- if (alwaysOnTop)
- {
- Gui, -AlwaysOnTop
- alwaysOnTop = 0
- }
- else
- {
- Gui, +AlwaysOnTop
- alwaysOnTop = 1
- }
-Return
- ; Ende der BildschirmTastatur
-
-
-/*
- ------------------------------------------------------
- Shift+Pause "pausiert" das Script.
- ------------------------------------------------------
-*/
-
-+pause::
-Suspend, Permit
- goto togglesuspend
-return
-
-; ------------------------------------
-
-^SC034::einHandNeo := not(einHandNeo) ; Punkt
-^SC033::lernModus := not(lernModus) ; Komma
-
-
-
-togglesuspend:
- if A_IsSuspended
- {
- menu, tray, rename, %enable%, %disable%
- menu, tray, tip, %name%
- if (iconBenutzen)
- menu, tray, icon, 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, 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-Qwert-to-Neo.ahk b/windows/autohotkey/Source/Keys-Qwert-to-Neo.ahk
new file mode 100644
index 0000000..facfa50
--- /dev/null
+++ b/windows/autohotkey/Source/Keys-Qwert-to-Neo.ahk
@@ -0,0 +1,479 @@
+/*
+ ------------------------------------------------------
+ QWERTZ->Neo umwandlung
+ ------------------------------------------------------
+*/
+; Reihe 1
+*SC029::goto neo_tot1 ; Zirkumflex ^
+*1::goto neo_1
+*2::goto neo_2
+*3::goto neo_3
+*4::goto neo_4
+*5::goto neo_5
+*6::goto neo_6
+*7::
+ if( not(einHandNeo) or not(spacepressed) )
+ goto neo_7
+ else
+ {
+ keypressed := 1
+ goto %gespiegelt_7%
+ }
+return
+*8::
+ if( not(einHandNeo) or not(spacepressed) )
+ goto neo_8
+ else
+ {
+ keypressed := 1
+ goto %gespiegelt_8%
+ }
+return
+*9::
+ if( not(einHandNeo) or not(spacepressed) )
+ goto neo_9
+ else
+ {
+ keypressed := 1
+ goto %gespiegelt_9%
+ }
+return
+*0::
+ if( not(einHandNeo) or not(spacepressed) )
+ goto neo_0
+ else
+ {
+ keypressed := 1
+ goto %gespiegelt_0%
+ }
+return
+*SC00C:: ; ß
+ if ( not(ahkTreiberKombi) )
+ {
+ if( not(einHandNeo) or not(spacepressed) )
+ goto neo_strich
+ else
+ {
+ keypressed := 1
+ goto %gespiegelt_strich%
+ }
+ }
+ else
+ {
+ goto neo_sz
+ }
+*SC00D::goto neo_tot2 ; Akkut
+; Reihe 2
+*Tab::goto neo_tab
+*q::
+ if ( not(ahkTreiberKombi) )
+ {
+ goto neo_x
+ }
+ else
+ {
+ goto neo_q
+ }
+*w::
+ if ( not(ahkTreiberKombi) )
+ {
+ goto neo_v
+ }
+ else
+ {
+ goto neo_w
+ }
+*e::
+ if ( not(ahkTreiberKombi) )
+ {
+ goto neo_l
+ }
+ else
+ {
+ goto neo_e
+ }
+*r::
+ if ( not(ahkTreiberKombi) )
+ {
+ goto neo_c
+ }
+ else
+ {
+ goto neo_r
+ }
+*t::
+ if ( not(ahkTreiberKombi) )
+ {
+ goto neo_w
+ }
+ else
+ {
+ goto neo_t
+ }
+*SC015:: ; z
+ if ( not(ahkTreiberKombi) )
+ {
+ if( not(einHandNeo) or not(spacepressed) )
+ goto neo_k
+ else
+ {
+ keypressed := 1
+ goto %gespiegelt_k%
+ }
+ }
+ else
+ {
+ goto neo_z
+ }
+*u::
+ if ( not(ahkTreiberKombi) )
+ {
+ if( not(einHandNeo) or not(spacepressed) )
+ goto neo_h
+ else
+ {
+ keypressed := 1
+ goto %gespiegelt_h%
+ }
+ }
+ else
+ {
+ goto neo_u
+ }
+*i::
+ if ( not(ahkTreiberKombi) )
+ {
+ if( not(einHandNeo) or not(spacepressed) )
+ goto neo_g
+ else
+ {
+ keypressed := 1
+ goto %gespiegelt_g%
+ }
+ }
+ else
+ {
+ goto neo_i
+ }
+*o::
+ if ( not(ahkTreiberKombi) )
+ {
+ if( not(einHandNeo) or not(spacepressed) )
+ goto neo_f
+ else
+ {
+ keypressed := 1
+ goto %gespiegelt_f%
+ }
+ }
+ else
+ {
+ goto neo_o
+ }
+*p::
+ if ( not(ahkTreiberKombi) )
+ {
+ if( not(einHandNeo) or not(spacepressed) )
+ goto neo_q
+ else
+ {
+ keypressed := 1
+ goto %gespiegelt_q%
+ }
+ }
+ else
+ {
+ goto neo_p
+ }
+*SC01A:: ; ü
+ if ( not(ahkTreiberKombi) )
+ {
+ if( not(einHandNeo) or not(spacepressed) )
+ goto neo_sz
+ else
+ {
+ keypressed := 1
+ goto %gespiegelt_sz%
+ }
+ }
+ else
+ {
+ goto neo_ü
+ }
+*SC01B:: ; +
+ if ( not(ahkTreiberKombi) )
+ {
+ if( not(einHandNeo) or not(spacepressed) )
+ goto neo_tot3
+ else
+ {
+ keypressed := 1
+ goto %gespiegelt_tot3%
+ }
+ }
+ else
+ { } ; this should never happen
+; Reihe 3
+*a::
+ if ( not(ahkTreiberKombi) )
+ {
+ goto neo_u
+ }
+ else
+ {
+ goto neo_a
+ }
+*s::
+ if ( not(ahkTreiberKombi) )
+ {
+ goto neo_i
+ }
+ else
+ {
+ goto neo_s
+ }
+*d::goto neo_a
+ if ( not(ahkTreiberKombi) )
+ {
+ goto neo_a
+ }
+ else
+ {
+ goto neo_d
+ }
+*f::
+ if ( not(ahkTreiberKombi) )
+ {
+ goto neo_e
+ }
+ else
+ {
+ goto neo_f
+ }
+*g::
+ if ( not(ahkTreiberKombi) )
+ {
+ goto neo_o
+ }
+ else
+ {
+ goto neo_g
+ }
+*h::
+ if ( not(ahkTreiberKombi) )
+ {
+ if( not(einHandNeo) or not(spacepressed) )
+ goto neo_s
+ else
+ {
+ keypressed := 1
+ goto %gespiegelt_s%
+ }
+ }
+ else
+ {
+ goto neo_h
+ }
+*j::
+ if ( not(ahkTreiberKombi) )
+ {
+ if( not(einHandNeo) or not(spacepressed) )
+ goto neo_n
+ else
+ {
+ keypressed := 1
+ goto %gespiegelt_n%
+ }
+ }
+ else
+ {
+ goto neo_j
+ }
+*k::
+ if ( not(ahkTreiberKombi) )
+ {
+ if( not(einHandNeo) or not(spacepressed) )
+ goto neo_r
+ else
+ {
+ keypressed := 1
+ goto %gespiegelt_r%
+ }
+ }
+ else
+ {
+ goto neo_k
+ }
+*l::
+ if ( not(ahkTreiberKombi) )
+ {
+ if( not(einHandNeo) or not(spacepressed) )
+ goto neo_t
+ else
+ {
+ keypressed := 1
+ goto %gespiegelt_t%
+ }
+ }
+ else
+ {
+ goto neo_l
+ }
+*SC027:: ; ö
+ if ( not(ahkTreiberKombi) )
+ {
+ if( not(einHandNeo) or not(spacepressed) )
+ goto neo_d
+ else
+ {
+ keypressed := 1
+ goto %gespiegelt_d%
+ }
+ }
+ else
+ {
+ goto neo_ö
+ }
+*SC028:: ; ä
+ if ( not(ahkTreiberKombi) )
+ {
+ goto neo_y
+ }
+ else
+ {
+ goto neo_ä
+ }
+; Reihe 4
+*SC02C:: ; y
+ if ( not(ahkTreiberKombi) )
+ {
+ goto neo_ü
+ }
+ else
+ {
+ goto neo_y
+ }
+*x::
+ if ( not(ahkTreiberKombi) )
+ {
+ goto neo_ö
+ }
+ else
+ {
+ goto neo_x
+ }
+*c::
+ if ( not(ahkTreiberKombi) )
+ {
+ goto neo_ä
+ }
+ else
+ {
+ goto neo_c
+ }
+*v::
+ if ( not(ahkTreiberKombi) )
+ {
+ goto neo_p
+ }
+ else
+ {
+ goto neo_v
+ }
+*b::
+ if ( not(ahkTreiberKombi) )
+ {
+ goto neo_z
+ }
+ else
+ {
+ goto neo_b
+ }
+*n::
+ if ( not(ahkTreiberKombi) )
+ {
+ if( not(einHandNeo) or not(spacepressed) )
+ goto neo_b
+ else
+ {
+ keypressed := 1
+ goto %gespiegelt_b%
+ }
+ }
+ else
+ {
+ goto neo_n
+ }
+*m::
+ if( not(einHandNeo) or not(spacepressed) )
+ goto neo_m
+ else
+ {
+ keypressed := 1
+ goto %gespiegelt_m%
+ }
+return
+*SC033:: ; Komma ,
+ if( not(einHandNeo) or not(spacepressed) )
+ goto neo_komma
+ else
+ {
+ keypressed := 1
+ goto %gespiegelt_komma%
+ }
+return
+*SC034:: ; Punkt .
+ if( not(einHandNeo) or not(spacepressed) )
+ goto neo_punkt
+ else
+ {
+ keypressed := 1
+ goto %gespiegelt_punkt%
+ }
+return
+*SC035:: ; Minus -
+ if ( not(ahkTreiberKombi) )
+ {
+ if( not(einHandNeo) or not(spacepressed) )
+ goto neo_j
+ else
+ {
+ keypressed := 1
+ goto %gespiegelt_j%
+ }
+ }
+ else
+ {
+ goto neo_strich
+ }
+; Numpad
+*NumpadDiv::goto neo_NumpadDiv
+*NumpadMult::goto neo_NumpadMult
+*NumpadSub::goto neo_NumpadSub
+*NumpadAdd::goto neo_NumpadAdd
+*NumpadEnter::goto neo_NumpadEnter
+*Numpad7::goto neo_Numpad7
+*Numpad8::goto neo_Numpad8
+*Numpad9::goto neo_Numpad9
+*Numpad4::goto neo_Numpad4
+*Numpad5::goto neo_Numpad5
+*Numpad6::goto neo_Numpad6
+*Numpad1::goto neo_Numpad1
+*Numpad2::goto neo_Numpad2
+*Numpad3::goto neo_Numpad3
+*Numpad0::goto neo_Numpad0
+*NumpadDot::goto neo_NumpadDot
+*NumpadHome::goto neo_NumpadHome
+*NumpadUp::goto neo_NumpadUp
+*NumpadPgUp::goto neo_NumpadPgUp
+*NumpadLeft::goto neo_NumpadLeft
+*NumpadClear::goto neo_NumpadClear
+*NumpadRight::goto neo_NumpadRight
+*NumpadEnd::goto neo_NumpadEnd
+*NumpadDown::goto neo_NumpadDown
+*NumpadPgDn::goto neo_NumpadPgDn
+*NumpadIns::goto neo_NumpadIns
+*NumpadDel::goto neo_NumpadDel
+
+
+
diff --git a/windows/autohotkey/Source/Methods-Layers.ahk b/windows/autohotkey/Source/Methods-Layers.ahk
new file mode 100644
index 0000000..b88724b
--- /dev/null
+++ b/windows/autohotkey/Source/Methods-Layers.ahk
@@ -0,0 +1,127 @@
+/*
+ ------------------------------------------------------
+ Modifier
+ ------------------------------------------------------
+*/
+
+
+; CapsLock durch Umschalt+Umschalt
+;*CapsLock::return ; Nichts machen beim Capslock release event (weil es Mod3 ist)
+
+*#::return ; Nichts machen beim # release event (weil es Mod3 ist) ; # = SC02B
+
+;RShift wenn vorher LShift gedrückt wurde
+LShift & ~RShift::
+ if GetKeyState("CapsLock","T")
+ {
+ setcapslockstate, off
+ }
+ else
+ {
+ setcapslockstate, on
+ }
+return
+
+;LShift wenn vorher RShift gedrückt wurde
+RShift & ~LShift::
+ if GetKeyState("CapsLock","T")
+ {
+ setcapslockstate, off
+ }
+ else
+ {
+ setcapslockstate, on
+ }
+return
+
+; Mod4-Lock durch Mod4+Mod4
+IsMod4Locked := 0
+< & *SC138::
+ if (IsMod4Locked)
+ {
+; MsgBox Mod4-Feststellung aufgebehoben
+ IsMod4Locked = 0
+ if (UseMod4Light==1) {
+ KeyboardLED(1,"off")
+ }
+ }
+ else
+ {
+; MsgBox Mod4 festgestellt: Um Mod4 wieder zu lösen drücke beide Mod4 Tasten gleichzeitig
+ IsMod4Locked = 1
+ if (UseMod4Light==1) {
+ KeyboardLED(1,"on")
+ }
+
+ }
+return
+*SC138::
+ altGrPressed := 1
+return ; Damit AltGr nicht extra etwas schickt und als stiller Modifier geht.
+*SC138 up::
+ altGrPressed := 0
+return
+
+/* ; das folgende wird seltsamerweise nicht gebraucht :) oder führt zum AltGr Bug; Umschalt+‹ (Mod4) Zeigt ‹
+SC138 & *<::
+ if (IsMod4Locked)
+ {
+ MsgBox Mod4-Feststellung aufgebehoben
+ IsMod4Locked = 0
+ }
+ else
+ {
+ MsgBox Mod4 festgestellt: Um Mod4 wieder zu lösen drücke beide Mod4 Tasten gleichzeitig
+ IsMod4Locked = 1
+ }
+return
+*/
+
+ ; Mod3-Lock durch Mod3+Mod3
+IsMod3Locked := 0
+SC02B & *Capslock:: ; #
+ if (IsMod3Locked)
+ {
+ MsgBox Mod3-Feststellung aufgebehoben
+ IsMod3Locked = 0
+ }
+ else
+ {
+ MsgBox Mod3 festgestellt: Um Mod3 wieder zu lösen drücke beide Mod3 Tasten gleichzeitig
+ IsMod3Locked = 1
+ }
+return
+
+
+*Capslock:: return
+;Capslock::MsgBox hallo
+/*
+Capslock & *:
+ if (IsMod3Locked)
+ {
+ MsgBox Mod3-Feststellung aufgebehoben
+ IsMod3Locked = 0
+ }
+ else
+ {
+ MsgBox Mod3 festgestellt: Um Mod3 wieder zu lösen drücke beide Mod3 Tasten gleichzeitig
+ IsMod3Locked = 1
+ }
+return
+*/
+
+/*
+; Wird nicht mehr gebraucht weil jetzt auf b (bzw. *n::)
+; KP_Decimal durch Mod4+Mod4
+*<::
+*SC138::
+ if GetKeyState("<","P") and GetKeyState("SC138","P")
+ {
+ send {numpaddot}
+ }
+return
+
+*/
+
+
+
diff --git a/windows/autohotkey/Source/Methods-Lights.ahk b/windows/autohotkey/Source/Methods-Lights.ahk
new file mode 100644
index 0000000..4c327e1
--- /dev/null
+++ b/windows/autohotkey/Source/Methods-Lights.ahk
@@ -0,0 +1,123 @@
+/*
+ ------------------------------------------------------
+ Methode KeyboardLED zur Steuerung der Keyboard-LEDs
+ (NumLock/CapsLock/ScrollLock-Lichter)
+
+ Benutzungshinweise: Man benutze
+ KeyboardLED(LEDvalue,"Cmd"), wobei
+ Cmd = on/off/switch,
+ LEDvalue: ScrollLock=1, NumLock=2, CapsLock=4
+ bzw. eine beliebige Summe dieser Werte:
+ AlleAus=0, CapsLock+NumLock=6, etc.
+
+ Der folgende Code wurde übernommen von:
+ http://www.autohotkey.com/forum/viewtopic.php?t=10532
+
+ Um eventuelle Wechselwirkungen mit dem bestehenden
+ Code (insb. der Unicode-Konvertierung) auszuschießen,
+ sind auch alle (Hilfsmethoden) mit dem Postfix LED
+ versehen worden.
+ ------------------------------------------------------
+*/
+
+KeyboardLED(LEDvalue, Cmd) ; LEDvalue: ScrollLock=1, NumLock=2, CapsLock=4 ; Cmd = on/off/switch
+{
+ Static h_device
+ If ! h_device ; initialise
+ {
+ device =\Device\KeyBoardClass0
+ SetUnicodeStrLED(fn,device)
+ h_device:=NtCreateFileLED(fn,0+0x00000100+0x00000080+0x00100000,1,1,0x00000040+0x00000020,0)
+ }
+
+ VarSetCapacity( output_actual, 4, 0 )
+ input_size = 4
+ VarSetCapacity( input, input_size, 0 )
+
+ If Cmd= switch ;switches every LED according to LEDvalue
+ KeyLED:= LEDvalue
+ If Cmd= on ;forces all choosen LED's to ON (LEDvalue= 0 ->LED's according to keystate)
+ KeyLED:= LEDvalue | (GetKeyState("ScrollLock", "T") + 2*GetKeyState("NumLock", "T") + 4*GetKeyState("CapsLock", "T"))
+ If Cmd= off ;forces all choosen LED's to OFF (LEDvalue= 0 ->LED's according to keystate)
+ {
+ LEDvalue:= LEDvalue ^ 7
+ KeyLED:= LEDvalue & (GetKeyState("ScrollLock", "T") + 2*GetKeyState("NumLock", "T") + 4*GetKeyState("CapsLock", "T"))
+ }
+ ; EncodeIntegerLED( KeyLED, 1, &input, 2 ) ;input bit pattern (KeyLED): bit 0 = scrolllock ;bit 1 = numlock ;bit 2 = capslock
+ input := Chr(1) Chr(1) Chr(KeyLED)
+ input := Chr(1)
+ input=
+ success := DllCall( "DeviceIoControl"
+ , "uint", h_device
+ , "uint", CTL_CODE_LED( 0x0000000b ; FILE_DEVICE_KEYBOARD
+ , 2
+ , 0 ; METHOD_BUFFERED
+ , 0 ) ; FILE_ANY_ACCESS
+ , "uint", &input
+ , "uint", input_size
+ , "uint", 0
+ , "uint", 0
+ , "uint", &output_actual
+ , "uint", 0 )
+}
+
+CTL_CODE_LED( p_device_type, p_function, p_method, p_access )
+{
+ Return, ( p_device_type << 16 ) | ( p_access << 14 ) | ( p_function << 2 ) | p_method
+}
+
+
+NtCreateFileLED(ByRef wfilename,desiredaccess,sharemode,createdist,flags,fattribs)
+{
+ VarSetCapacity(fh,4,0)
+ VarSetCapacity(objattrib,24,0)
+ VarSetCapacity(io,8,0)
+ VarSetCapacity(pus,8)
+ uslen:=DllCall("lstrlenW","str",wfilename)*2
+ InsertIntegerLED(uslen,pus,0,2)
+ InsertIntegerLED(uslen,pus,2,2)
+ InsertIntegerLED(&wfilename,pus,4)
+ InsertIntegerLED(24,objattrib,0)
+ InsertIntegerLED(&pus,objattrib,8)
+ status:=DllCall("ntdll\ZwCreateFile","str",fh,"UInt",desiredaccess,"str",objattrib,"str",io,"UInt",0,"UInt",fattribs
+ ,"UInt",sharemode,"UInt",createdist,"UInt",flags,"UInt",0,"UInt",0, "UInt")
+ return ExtractIntegerLED(fh)
+}
+
+
+SetUnicodeStrLED(ByRef out, str_)
+{
+ VarSetCapacity(st1, 8, 0)
+ InsertIntegerLED(0x530025, st1)
+ VarSetCapacity(out, (StrLen(str_)+1)*2, 0)
+ DllCall("wsprintfW", "str", out, "str", st1, "str", str_, "Cdecl UInt")
+}
+
+
+ExtractIntegerLED(ByRef pSource, pOffset = 0, pIsSigned = false, pSize = 4)
+; pSource is a string (buffer) whose memory area contains a raw/binary integer at pOffset.
+; The caller should pass true for pSigned to interpret the result as signed vs. unsigned.
+; pSize is the size of PSource's integer in bytes (e.g. 4 bytes for a DWORD or Int).
+; pSource must be ByRef to avoid corruption during the formal-to-actual copying process
+; (since pSource might contain valid data beyond its first binary zero).
+{
+ Loop %pSize% ; Build the integer by adding up its bytes.
+ result += *(&pSource + pOffset + A_Index-1) << 8*(A_Index-1)
+ if (!pIsSigned OR pSize > 4 OR result < 0x80000000)
+ return result ; Signed vs. unsigned doesn't matter in these cases.
+ ; Otherwise, convert the value (now known to be 32-bit) to its signed counterpart:
+ return -(0xFFFFFFFF - result + 1)
+}
+
+
+InsertIntegerLED(pInteger, ByRef pDest, pOffset = 0, pSize = 4)
+; The caller must ensure that pDest has sufficient capacity. To preserve any existing contents in pDest,
+; only pSize number of bytes starting at pOffset are altered in it.
+{
+ Loop %pSize% ; Copy each byte in the integer into the structure as raw binary data.
+ DllCall("RtlFillMemory", "UInt", &pDest + pOffset + A_Index-1, "UInt", 1, "UChar", pInteger >> 8*(A_Index-1) & 0xFF)
+}
+
+
+
+
diff --git a/windows/autohotkey/Source/Methods-Other.ahk b/windows/autohotkey/Source/Methods-Other.ahk
new file mode 100644
index 0000000..b3da1a6
--- /dev/null
+++ b/windows/autohotkey/Source/Methods-Other.ahk
@@ -0,0 +1,539 @@
+/*
+ ------------------------------------------------------
+ Funktionen
+ ------------------------------------------------------
+*/
+
+/*
+Ebenen laut Referenz:
+1. Ebene (kein Mod) 4. Ebene (Mod4)
+2. Ebene (Umschalt) 5. Ebene (Mod3+Umschalt)
+3. Ebene (Mod3) 6. Ebene (Mod3+Mod4)
+*/
+
+EbeneAktualisieren()
+{
+ global
+ if (ahkTreiberKombi)
+ {
+ if ( IsMod4Pressed() and not(IsShiftPressed()) and not(IsMod3Pressed()))
+ {
+ Ebene = 6
+ }
+ else
+ {
+ Ebene = -1
+ }
+ }
+ else
+ {
+ if ( IsShiftPressed() )
+ { ; Umschalt
+ if ( IsMod3Pressed() )
+ { ; Umschalt UND Mod3
+ if ( IsMod4Pressed() )
+ { ; Umschald UND Mod3 UND Mod4
+ ; Ebene 8 impliziert Ebene 6
+ Ebene = 6
+ }
+ else
+ { ; Umschald UND Mod3 NICHT Mod4
+ Ebene = 5
+ }
+ }
+ else
+ { ; Umschalt NICHT Mod3
+ if ( IsMod4Pressed() )
+ { ; Umschald UND Mod4 NICHT Mod3
+ ; Ebene 7 impliziert Ebene 4
+ Ebene = 4
+ }
+ else
+ { ; Umschald NICHT Mod3 NICHT Mod4
+ Ebene = 2
+ }
+ }
+ }
+ else
+ { ; NICHT Umschalt
+ if ( IsMod3Pressed() )
+ { ; Mod3 NICHT Umschalt
+ if ( IsMod4Pressed() )
+ { ; Mod3 UND Mod4 NICHT Umschalt
+ Ebene = 6
+ }
+ else
+ { ; Mod3 NICHT Mod4 NICHT Umschalt
+ Ebene = 3
+ }
+ }
+ else
+ { ; NICHT Umschalt NICHT Mod3
+ if ( IsMod4Pressed() )
+ { ; Mod4 NICHT Umschalt NICHT Mod3
+ Ebene = 4
+ }
+ else
+ { ; NICHT Umschalt NICHT Mod3 NICHT Mod4
+ Ebene = 1
+ }
+ }
+ }
+ }
+}
+
+
+
+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") or altGrPressed ))
+ }
+ else {
+ return ( GetKeyState("<","P") or GetKeyState("SC138","P") or altGrPressed )
+ }
+ }
+ else
+ {
+ if (IsMod4Locked)
+ {
+ return (not ( GetKeyState("<","P") or GetKeyState("SC138","P") or GetKeyState("ä","P") or altGrPressed ))
+ }
+ else {
+ return ( GetKeyState("<","P") or GetKeyState("SC138","P") or GetKeyState("ä","P") or altGrPressed )
+ }
+ }
+
+}
+
+
+/*************************
+ Alte Methoden
+*************************/
+
+/*
+Unicode(code)
+{
+ saved_clipboard := ClipboardAll
+ Transform, Clipboard, Unicode, %code%
+ sendplay ^v
+ Clipboard := saved_clipboard
+}
+
+BSUnicode(code)
+{
+ saved_clipboard := ClipboardAll
+ Transform, Clipboard, Unicode, %code%
+ sendplay {bs}^v
+ Clipboard := saved_clipboard
+}
+*/
+
+IsModifierPressed()
+{
+ if (GetKeyState("LControl","P") or GetKeyState("RControl","P") or GetKeyState("LAlt","P") or GetKeyState("RAltl","P") or GetKeyState("LWin","P") or GetKeyState("RWin","P") or GetKeyState("LShift","P") or GetKeyState("RShift","P") or GetKeyState("AltGr","P") )
+ {
+ return 1
+ }
+ else
+ {
+ return 0
+ }
+}
+
+SendUnicodeChar(charCode)
+{
+ 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)
+}
+
+BSSendUnicodeChar(charCode)
+{
+ send {bs}
+ SendUnicodeChar(charCode)
+}
+
+CompUnicodeChar(charCode)
+{
+ send {bs}
+ SendUnicodeChar(charCode)
+}
+
+Comp3UnicodeChar(charCode)
+{
+ send {bs}
+ send {bs}
+ SendUnicodeChar(charCode)
+}
+
+
+EncodeInteger(ref, val)
+{
+ DllCall("ntdll\RtlFillMemoryUlong", "Uint", ref, "Uint", 4, "Uint", val)
+}
+
+
+
+
+
+/*
+ ------------------------------------------------------
+ BildschirmTastatur
+ ------------------------------------------------------
+*/
+guiErstellt = 0
+alwaysOnTop = 1
+aktuellesBild = ebene1.png
+SC056 & *F1::
+SC138 & *F1::
+{
+ if (zeigeBildschirmTastatur)
+ goto Switch1
+ return
+}
+SC056 & *F2::
+SC138 & *F2::
+{
+ if (zeigeBildschirmTastatur)
+ goto Switch2
+ return
+}
+SC056 & *F3::
+SC138 & *F3::
+{
+ if (zeigeBildschirmTastatur)
+ goto Switch3
+ return
+}
+SC056 & *F4::
+SC138 & *F4::
+{
+ if (zeigeBildschirmTastatur)
+ goto Switch4
+ return
+}
+SC056 & *F5::
+SC138 & *F5::
+{
+ if (zeigeBildschirmTastatur)
+ goto Switch5
+ return
+}
+SC056 & *F6::
+SC138 & *F6::
+{
+ if (zeigeBildschirmTastatur)
+ goto Switch6
+ return
+}
+SC056 & *F7::
+SC138 & *F7::
+{
+ if (zeigeBildschirmTastatur)
+ goto Show
+ return
+}
+SC056 & *F8::
+SC138 & *F8::
+{
+ if (zeigeBildschirmTastatur)
+ goto ToggleAlwaysOnTop
+ return
+}
+Switch1:
+ if (guiErstellt)
+ {
+ if (Image == "ebene1.png")
+ goto Close
+ else
+ {
+ Image = ebene1.png
+ SetTimer, Refresh
+ }
+ }
+ else
+ {
+ Image = ebene1.png
+ goto Show
+ }
+Return
+
+Switch2:
+ if (guiErstellt)
+ {
+ if (Image == "ebene2.png")
+ goto Close
+ else
+ {
+ Image = ebene2.png
+ SetTimer, Refresh
+ }
+ }
+ else
+ {
+ Image = ebene2.png
+ goto Show
+ }
+Return
+
+Switch3:
+ if (guiErstellt)
+ {
+ if (Image == "ebene3.png")
+ goto Close
+ else
+ {
+ Image = ebene3.png
+ SetTimer, Refresh
+ }
+ }
+ else
+ {
+ Image = ebene3.png
+ goto Show
+ }
+Return
+
+Switch4:
+ if (guiErstellt)
+ {
+ if (Image == "ebene4.png")
+ goto Close
+ else
+ {
+ Image = ebene4.png
+ SetTimer, Refresh
+ }
+ }
+ else
+ {
+ Image = ebene4.png
+ goto Show
+ }
+Return
+
+Switch5:
+ if (guiErstellt)
+ {
+ if (Image == "ebene5.png")
+ goto Close
+ else
+ {
+ Image = ebene5.png
+ SetTimer, Refresh
+ }
+ }
+ else
+ {
+ Image = ebene5.png
+ goto Show
+ }
+Return
+
+Switch6:
+ if (guiErstellt)
+ {
+ if (Image == "ebene6.png")
+ goto Close
+ else
+ {
+ Image = ebene6.png
+ SetTimer, Refresh
+ }
+ }
+ else
+ {
+ Image = ebene6.png
+ goto Show
+ }
+Return
+
+Show:
+ if (guiErstellt)
+ {
+ goto Close
+ }
+ else
+ {
+ if (Image = "")
+ {
+ Image = ebene1.png
+ }
+ yPosition := A_ScreenHeight -270
+ Gui, Color, FFFFFF
+ Gui, Add, Button, xm+5 gSwitch1, F1
+ Gui, Add, Text, x+5, kleine Buchstaben
+ Gui, Add, Button, xm+5 gSwitch2, F2
+ Gui, Add, Text, x+5, große Buchstaben
+ Gui, Add, Button, xm+5 gSwitch3, F3
+ Gui, Add, Text, x+5, Satz-/Sonderzeichen
+ Gui, Add, Button, xm+5 gSwitch4, F4
+ Gui, Add, Text, x+5, Zahlen / Steuerung
+ Gui, Add, Button, xm+5 gSwitch5, F5
+ Gui, Add, Text, x+5, Sprachen
+ Gui, Add, Button, xm+5 gSwitch6, F6
+ Gui, Add, Text, x+5, Mathesymbole
+ Gui, Add, Button, xm+5 gShow, F7
+ Gui, Add, Text, x+5, An /
+ Gui, Add, Text, y+3, Aus
+ Gui, Add, Button, x+10 y+-30 gShow, F8
+ Gui, Add, Text, x+5, OnTop
+ Gui, Add, Picture,AltSubmit ys w564 h200 vPicture, %Image%
+ Gui, +AlwaysOnTop
+ Gui, Show, y%yposition% Autosize
+ SetTimer, Refresh
+ guiErstellt = 1
+ }
+Return
+
+Close:
+ guiErstellt = 0
+ Gui, Destroy
+Return
+
+Refresh:
+ If (Image != OldImage)
+ {
+ GuiControl, , Picture, %Image%
+ OldImage := Image
+ }
+Return
+
+ToggleAlwaysOnTop:
+ if (alwaysOnTop)
+ {
+ Gui, -AlwaysOnTop
+ alwaysOnTop = 0
+ }
+ else
+ {
+ Gui, +AlwaysOnTop
+ alwaysOnTop = 1
+ }
+Return
+ ; Ende der BildschirmTastatur
+
+
+/*
+ ------------------------------------------------------
+ Shift+Pause "pausiert" das Script.
+ ------------------------------------------------------
+*/
+
++pause::
+Suspend, Permit
+ goto togglesuspend
+return
+
+; ------------------------------------
+
+^SC034::einHandNeo := not(einHandNeo) ; Punkt
+^SC033::lernModus := not(lernModus) ; Komma
+
+
+
+togglesuspend:
+ if A_IsSuspended
+ {
+ menu, tray, rename, %enable%, %disable%
+ menu, tray, tip, %name%
+ if (iconBenutzen)
+ menu, tray, icon, 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, 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/Warning.ahk b/windows/autohotkey/Source/Warning.ahk
index 9852f11..1aca7d1 100644
--- a/windows/autohotkey/Source/Warning.ahk
+++ b/windows/autohotkey/Source/Warning.ahk
@@ -6,8 +6,7 @@ Dies ist inzwischen eine automatisch
generierte Datei!
Sie wird regelmäßig übrerschrieben und sollte
-deshalb nicht mehr bearbeitet werden!
-
+deshalb nicht mehr direkt bearbeitet werden!
Statdessen sollten die Dateien/Module im
diff --git a/windows/autohotkey/neo20-all-in-one.ahk b/windows/autohotkey/neo20-all-in-one.ahk
index 1532d71..72b4efc 100644
--- a/windows/autohotkey/neo20-all-in-one.ahk
+++ b/windows/autohotkey/neo20-all-in-one.ahk
@@ -6,8 +6,7 @@ Dies ist inzwischen eine automatisch
generierte Datei!
Sie wird regelmäßig übrerschrieben und sollte
-deshalb nicht mehr bearbeitet werden!
-
+deshalb nicht mehr direkt bearbeitet werden!
Statdessen sollten die Dateien/Module im
@@ -104,6 +103,8 @@ DU BIST GEWARNT WORDEN!
- bei Ebene 4 rechte Hand (Numpad) z.B. Numpad5 statt 5 senden
CHANGEHISTORY:
Aktuelle Revision (von Matthias Berg):
+ - Bildschirmtastatur jetzt mit Mod4+F* statt Strg+F*
+ Revision 583 (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
@@ -200,6 +201,7 @@ DU BIST GEWARNT WORDEN!
*/
+
/******************
Globale Schalter *
*******************
@@ -284,7 +286,7 @@ lernModus_neo_Entf = 1
; msgbox ist trotzdem linksbündig
SetTitleMatchMode 2
-SendMode Input
+SendMode Input
name = Neo 2.0
enable = Aktiviere %name%
@@ -319,6 +321,8 @@ if inputlocale <> 00000407
exitapp
}
+
+
; Menü des Systray-Icons
; ----------------------
@@ -394,6 +398,7 @@ gespiegelt_j = neo_ü
+
/*
------------------------------------------------------
Modifier
@@ -407,7 +412,7 @@ gespiegelt_j = neo_ü
*#::return ; Nichts machen beim # release event (weil es Mod3 ist) ; # = SC02B
;RShift wenn vorher LShift gedrückt wurde
-LShift & ~RShift::
+LShift & ~RShift::
if GetKeyState("CapsLock","T")
{
setcapslockstate, off
@@ -519,6 +524,8 @@ return
*/
+
+
/*
------------------------------------------------------
QWERTZ->Neo umwandlung
@@ -598,7 +605,7 @@ return
*w::
if ( not(ahkTreiberKombi) )
{
- goto neo_v
+ goto neo_v
}
else
{
@@ -607,7 +614,7 @@ return
*e::
if ( not(ahkTreiberKombi) )
{
- goto neo_l
+ goto neo_l
}
else
{
@@ -996,8 +1003,12 @@ return
*NumpadIns::goto neo_NumpadIns
*NumpadDel::goto neo_NumpadDel
-
+
+
/*
+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
@@ -1164,7 +1175,7 @@ neo_2:
CompKey := ""
}
else if Ebene = 3
- {
+ {
SendUnicodeChar(0x00B2) ; 2 Hochgestellte
CompKey := ""
}
@@ -1290,7 +1301,7 @@ neo_4:
CompKey := "4"
else
CompKey := ""
- }
+ }
else if Ebene = 2
{
send »
@@ -1364,7 +1375,7 @@ neo_5:
CompKey := "5"
else
CompKey := ""
- }
+ }
else if Ebene = 2
{
send «
@@ -1431,7 +1442,7 @@ neo_6:
CompKey := "6"
else
CompKey := ""
- }
+ }
else if Ebene = 2
{
send €
@@ -1494,7 +1505,7 @@ neo_7:
CompKey := "7"
else
CompKey := ""
- }
+ }
else if Ebene = 2
{
send $
@@ -1568,7 +1579,7 @@ neo_8:
CompKey := "8"
else
CompKey := ""
- }
+ }
else if Ebene = 2
{
send „
@@ -1631,7 +1642,7 @@ neo_9:
CompKey := "9"
else
CompKey := ""
- }
+ }
else if Ebene = 2
{
send “
@@ -1694,7 +1705,7 @@ neo_0:
CompKey := "0"
else
CompKey := ""
- }
+ }
else if Ebene = 2
{
send ”
@@ -2345,7 +2356,7 @@ neo_u:
send \
else if Ebene = 4
Send {blind}{Home}
- else if Ebene = 5
+ else if Ebene = 5
{ } ; leer
else if Ebene = 6
SendUnicodeChar(0x222E) ; contour integral
@@ -2422,7 +2433,7 @@ neo_i:
Sendinput {Blind}{Left}
CompKey := ""
}
- else if Ebene = 5
+ else if Ebene = 5
{
SendUnicodeChar(0x03B9) ; iota
CompKey := ""
@@ -2622,7 +2633,7 @@ neo_o:
else if (PriorDeadKey = "a4") ; ogonek
BSSendUnicodeChar(0x01EB)
else if (PriorDeadKey = "c2") ; caron
- BSSendUnicodeChar(0x01D2)
+ BSSendUnicodeChar(0x01D2)
else
sendinput {blind}o
if (PriorDeadKey = "comp") ; compose
@@ -3006,9 +3017,9 @@ neo_y:
else if Ebene = 3
send @
else if Ebene = 4
- Send .
+ Send .
else if Ebene = 5
- SendUnicodeChar(0x03C5) ; upsilon
+ SendUnicodeChar(0x03C5) ; upsilon
else if Ebene = 6
SendUnicodeChar(0x2207) ; nabla
PriorDeadKey := "" CompKey := ""
@@ -3883,6 +3894,7 @@ neo_NumpadPgUp:
}
else if ( (Ebene = 4) or (Ebene = 5) )
{
+
SendUnicodeChar(0x226B) ; gg
CompKey := ""
}
@@ -4145,7 +4157,7 @@ return
*/
*space::
if (einHandNeo)
- spacepressed := 1
+ spacepressed := 1
else
goto neo_SpaceUp
return
@@ -4156,7 +4168,7 @@ return
if (keypressed)
{
keypressed := 0
- spacepressed := 0
+ spacepressed := 0
}
else
{
@@ -4196,8 +4208,8 @@ neo_SpaceUp:
else if Ebene = 6
SendUnicodeChar(0x202F) ; schmales Leerzeichen
PriorDeadKey := "" CompKey := ""
- spacepressed := 0
- keypressed := 0
+ spacepressed := 0
+ keypressed := 0
return
/*
@@ -4285,7 +4297,7 @@ nach einem DeadKey drückt...
neo_tab:
if ( GetKeyState("SC038","P") )
{
- Send,{Blind}{AltDown}{tab}
+ Send,{Blind}{AltDown}{tab}
/*
if (isShiftPressed())
@@ -4295,7 +4307,7 @@ neo_tab:
else
{
; msgbox alt+tab
- Send,{AltDown}{tab}
+ Send,{AltDown}{tab}
; SC038 & Tab::AltTab ; http://de.autohotkey.com/docs/Hotkeys.htm#AltTabDetail
}
*/
@@ -4317,7 +4329,7 @@ return
return
*SC038 down:: ; LAlt, damit AltTab funktioniert
- Send,{Blind}{AltDown}
+ Send,{Blind}{AltDown}
PriorDeadKey := "" CompKey := ""
return
@@ -4386,6 +4398,131 @@ return
return
+
+
+/*
+ ------------------------------------------------------
+ Methode KeyboardLED zur Steuerung der Keyboard-LEDs
+ (NumLock/CapsLock/ScrollLock-Lichter)
+
+ Benutzungshinweise: Man benutze
+ KeyboardLED(LEDvalue,"Cmd"), wobei
+ Cmd = on/off/switch,
+ LEDvalue: ScrollLock=1, NumLock=2, CapsLock=4
+ bzw. eine beliebige Summe dieser Werte:
+ AlleAus=0, CapsLock+NumLock=6, etc.
+
+ Der folgende Code wurde übernommen von:
+ http://www.autohotkey.com/forum/viewtopic.php?t=10532
+
+ Um eventuelle Wechselwirkungen mit dem bestehenden
+ Code (insb. der Unicode-Konvertierung) auszuschießen,
+ sind auch alle (Hilfsmethoden) mit dem Postfix LED
+ versehen worden.
+ ------------------------------------------------------
+*/
+
+KeyboardLED(LEDvalue, Cmd) ; LEDvalue: ScrollLock=1, NumLock=2, CapsLock=4 ; Cmd = on/off/switch
+{
+ Static h_device
+ If ! h_device ; initialise
+ {
+ device =\Device\KeyBoardClass0
+ SetUnicodeStrLED(fn,device)
+ h_device:=NtCreateFileLED(fn,0+0x00000100+0x00000080+0x00100000,1,1,0x00000040+0x00000020,0)
+ }
+
+ VarSetCapacity( output_actual, 4, 0 )
+ input_size = 4
+ VarSetCapacity( input, input_size, 0 )
+
+ If Cmd= switch ;switches every LED according to LEDvalue
+ KeyLED:= LEDvalue
+ If Cmd= on ;forces all choosen LED's to ON (LEDvalue= 0 ->LED's according to keystate)
+ KeyLED:= LEDvalue | (GetKeyState("ScrollLock", "T") + 2*GetKeyState("NumLock", "T") + 4*GetKeyState("CapsLock", "T"))
+ If Cmd= off ;forces all choosen LED's to OFF (LEDvalue= 0 ->LED's according to keystate)
+ {
+ LEDvalue:= LEDvalue ^ 7
+ KeyLED:= LEDvalue & (GetKeyState("ScrollLock", "T") + 2*GetKeyState("NumLock", "T") + 4*GetKeyState("CapsLock", "T"))
+ }
+ ; EncodeIntegerLED( KeyLED, 1, &input, 2 ) ;input bit pattern (KeyLED): bit 0 = scrolllock ;bit 1 = numlock ;bit 2 = capslock
+ input := Chr(1) Chr(1) Chr(KeyLED)
+ input := Chr(1)
+ input=
+ success := DllCall( "DeviceIoControl"
+ , "uint", h_device
+ , "uint", CTL_CODE_LED( 0x0000000b ; FILE_DEVICE_KEYBOARD
+ , 2
+ , 0 ; METHOD_BUFFERED
+ , 0 ) ; FILE_ANY_ACCESS
+ , "uint", &input
+ , "uint", input_size
+ , "uint", 0
+ , "uint", 0
+ , "uint", &output_actual
+ , "uint", 0 )
+}
+
+CTL_CODE_LED( p_device_type, p_function, p_method, p_access )
+{
+ Return, ( p_device_type << 16 ) | ( p_access << 14 ) | ( p_function << 2 ) | p_method
+}
+
+
+NtCreateFileLED(ByRef wfilename,desiredaccess,sharemode,createdist,flags,fattribs)
+{
+ VarSetCapacity(fh,4,0)
+ VarSetCapacity(objattrib,24,0)
+ VarSetCapacity(io,8,0)
+ VarSetCapacity(pus,8)
+ uslen:=DllCall("lstrlenW","str",wfilename)*2
+ InsertIntegerLED(uslen,pus,0,2)
+ InsertIntegerLED(uslen,pus,2,2)
+ InsertIntegerLED(&wfilename,pus,4)
+ InsertIntegerLED(24,objattrib,0)
+ InsertIntegerLED(&pus,objattrib,8)
+ status:=DllCall("ntdll\ZwCreateFile","str",fh,"UInt",desiredaccess,"str",objattrib,"str",io,"UInt",0,"UInt",fattribs
+ ,"UInt",sharemode,"UInt",createdist,"UInt",flags,"UInt",0,"UInt",0, "UInt")
+ return ExtractIntegerLED(fh)
+}
+
+
+SetUnicodeStrLED(ByRef out, str_)
+{
+ VarSetCapacity(st1, 8, 0)
+ InsertIntegerLED(0x530025, st1)
+ VarSetCapacity(out, (StrLen(str_)+1)*2, 0)
+ DllCall("wsprintfW", "str", out, "str", st1, "str", str_, "Cdecl UInt")
+}
+
+
+ExtractIntegerLED(ByRef pSource, pOffset = 0, pIsSigned = false, pSize = 4)
+; pSource is a string (buffer) whose memory area contains a raw/binary integer at pOffset.
+; The caller should pass true for pSigned to interpret the result as signed vs. unsigned.
+; pSize is the size of PSource's integer in bytes (e.g. 4 bytes for a DWORD or Int).
+; pSource must be ByRef to avoid corruption during the formal-to-actual copying process
+; (since pSource might contain valid data beyond its first binary zero).
+{
+ Loop %pSize% ; Build the integer by adding up its bytes.
+ result += *(&pSource + pOffset + A_Index-1) << 8*(A_Index-1)
+ if (!pIsSigned OR pSize > 4 OR result < 0x80000000)
+ return result ; Signed vs. unsigned doesn't matter in these cases.
+ ; Otherwise, convert the value (now known to be 32-bit) to its signed counterpart:
+ return -(0xFFFFFFFF - result + 1)
+}
+
+
+InsertIntegerLED(pInteger, ByRef pDest, pOffset = 0, pSize = 4)
+; The caller must ensure that pDest has sufficient capacity. To preserve any existing contents in pDest,
+; only pSize number of bytes starting at pOffset are altered in it.
+{
+ Loop %pSize% ; Copy each byte in the integer into the structure as raw binary data.
+ DllCall("RtlFillMemory", "UInt", &pDest + pOffset + A_Index-1, "UInt", 1, "UChar", pInteger >> 8*(A_Index-1) & 0xFF)
+}
+
+
+
+
/*
------------------------------------------------------
Funktionen
@@ -4417,8 +4554,8 @@ EbeneAktualisieren()
{
if ( IsShiftPressed() )
{ ; Umschalt
- if ( IsMod3Pressed() )
- { ; Umschalt UND Mod3
+ if ( IsMod3Pressed() )
+ { ; Umschalt UND Mod3
if ( IsMod4Pressed() )
{ ; Umschald UND Mod3 UND Mod4
; Ebene 8 impliziert Ebene 6
@@ -4426,11 +4563,11 @@ EbeneAktualisieren()
}
else
{ ; Umschald UND Mod3 NICHT Mod4
- Ebene = 5
+ Ebene = 5
}
}
- else
- { ; Umschalt NICHT Mod3
+ else
+ { ; Umschalt NICHT Mod3
if ( IsMod4Pressed() )
{ ; Umschald UND Mod4 NICHT Mod3
; Ebene 7 impliziert Ebene 4
@@ -4438,25 +4575,25 @@ EbeneAktualisieren()
}
else
{ ; Umschald NICHT Mod3 NICHT Mod4
- Ebene = 2
+ Ebene = 2
}
}
}
else
{ ; NICHT Umschalt
- if ( IsMod3Pressed() )
- { ; Mod3 NICHT Umschalt
+ if ( IsMod3Pressed() )
+ { ; Mod3 NICHT Umschalt
if ( IsMod4Pressed() )
{ ; Mod3 UND Mod4 NICHT Umschalt
Ebene = 6
}
else
{ ; Mod3 NICHT Mod4 NICHT Umschalt
- Ebene = 3
+ Ebene = 3
}
}
- else
- { ; NICHT Umschalt NICHT Mod3
+ else
+ { ; NICHT Umschalt NICHT Mod3
if ( IsMod4Pressed() )
{ ; Mod4 NICHT Umschalt NICHT Mod3
Ebene = 4
@@ -4465,7 +4602,7 @@ EbeneAktualisieren()
{ ; NICHT Umschalt NICHT Mod3 NICHT Mod4
Ebene = 1
}
- }
+ }
}
}
}
@@ -4485,7 +4622,7 @@ IsMod3Pressed()
return (not ( GetKeyState("CapsLock","P") or GetKeyState("#","P") )) ; # = SC02B
}
else {
- return ( GetKeyState("CapsLock","P") or GetKeyState("#","P") ) ; # = SC02B
+ return ( GetKeyState("CapsLock","P") or GetKeyState("#","P") ) ; # = SC02B
}
}
@@ -4573,7 +4710,7 @@ BSSendUnicodeChar(charCode)
CompUnicodeChar(charCode)
{
send {bs}
- SendUnicodeChar(charCode)
+ SendUnicodeChar(charCode)
}
Comp3UnicodeChar(charCode)
@@ -4592,127 +4729,6 @@ EncodeInteger(ref, val)
-/*
- ------------------------------------------------------
- Methode zur Steuerung der Keyboard-LEDs
- (NumLock/CapsLock/ScrollLock-Lichter)
-
- Benutzungshinweise:
- KeyboardLED(LEDvalue,"Cmd"), wobei
- Cmd = on/off/switch,
- LEDvalue: ScrollLock=1, NumLock=2, CapsLock=4
- bzw. eine beliebige Summe dieser Werte:
- AlleAus=0, CapsLock+NumLock=6, etc.
-
- Der folgende Code wurde übernommen von:
- http://www.autohotkey.com/forum/viewtopic.php?t=10532
-
- Um eventuelle Wechselwirkungen mit dem bestehenden
- Code (insb. der Unicode-Konvertierung) auszuschießen,
- sind auch alle (Hilfsmethoden) mit dem Postfix LED
- versehen worden.
- ------------------------------------------------------
-*/
-
-KeyboardLED(LEDvalue, Cmd) ; LEDvalue: ScrollLock=1, NumLock=2, CapsLock=4 ; Cmd = on/off/switch
-{
- Static h_device
- If ! h_device ; initialise
- {
- device =\Device\KeyBoardClass0
- SetUnicodeStrLED(fn,device)
- h_device:=NtCreateFileLED(fn,0+0x00000100+0x00000080+0x00100000,1,1,0x00000040+0x00000020,0)
- }
-
- VarSetCapacity( output_actual, 4, 0 )
- input_size = 4
- VarSetCapacity( input, input_size, 0 )
-
- If Cmd= switch ;switches every LED according to LEDvalue
- KeyLED:= LEDvalue
- If Cmd= on ;forces all choosen LED's to ON (LEDvalue= 0 ->LED's according to keystate)
- KeyLED:= LEDvalue | (GetKeyState("ScrollLock", "T") + 2*GetKeyState("NumLock", "T") + 4*GetKeyState("CapsLock", "T"))
- If Cmd= off ;forces all choosen LED's to OFF (LEDvalue= 0 ->LED's according to keystate)
- {
- LEDvalue:= LEDvalue ^ 7
- KeyLED:= LEDvalue & (GetKeyState("ScrollLock", "T") + 2*GetKeyState("NumLock", "T") + 4*GetKeyState("CapsLock", "T"))
- }
- ; EncodeIntegerLED( KeyLED, 1, &input, 2 ) ;input bit pattern (KeyLED): bit 0 = scrolllock ;bit 1 = numlock ;bit 2 = capslock
- input := Chr(1) Chr(1) Chr(KeyLED)
- input := Chr(1)
- input=
- success := DllCall( "DeviceIoControl"
- , "uint", h_device
- , "uint", CTL_CODE_LED( 0x0000000b ; FILE_DEVICE_KEYBOARD
- , 2
- , 0 ; METHOD_BUFFERED
- , 0 ) ; FILE_ANY_ACCESS
- , "uint", &input
- , "uint", input_size
- , "uint", 0
- , "uint", 0
- , "uint", &output_actual
- , "uint", 0 )
-}
-
-CTL_CODE_LED( p_device_type, p_function, p_method, p_access )
-{
- Return, ( p_device_type << 16 ) | ( p_access << 14 ) | ( p_function << 2 ) | p_method
-}
-
-
-NtCreateFileLED(ByRef wfilename,desiredaccess,sharemode,createdist,flags,fattribs)
-{
- VarSetCapacity(fh,4,0)
- VarSetCapacity(objattrib,24,0)
- VarSetCapacity(io,8,0)
- VarSetCapacity(pus,8)
- uslen:=DllCall("lstrlenW","str",wfilename)*2
- InsertIntegerLED(uslen,pus,0,2)
- InsertIntegerLED(uslen,pus,2,2)
- InsertIntegerLED(&wfilename,pus,4)
- InsertIntegerLED(24,objattrib,0)
- InsertIntegerLED(&pus,objattrib,8)
- status:=DllCall("ntdll\ZwCreateFile","str",fh,"UInt",desiredaccess,"str",objattrib,"str",io,"UInt",0,"UInt",fattribs
- ,"UInt",sharemode,"UInt",createdist,"UInt",flags,"UInt",0,"UInt",0, "UInt")
- return ExtractIntegerLED(fh)
-}
-
-
-SetUnicodeStrLED(ByRef out, str_)
-{
- VarSetCapacity(st1, 8, 0)
- InsertIntegerLED(0x530025, st1)
- VarSetCapacity(out, (StrLen(str_)+1)*2, 0)
- DllCall("wsprintfW", "str", out, "str", st1, "str", str_, "Cdecl UInt")
-}
-
-
-ExtractIntegerLED(ByRef pSource, pOffset = 0, pIsSigned = false, pSize = 4)
-; pSource is a string (buffer) whose memory area contains a raw/binary integer at pOffset.
-; The caller should pass true for pSigned to interpret the result as signed vs. unsigned.
-; pSize is the size of PSource's integer in bytes (e.g. 4 bytes for a DWORD or Int).
-; pSource must be ByRef to avoid corruption during the formal-to-actual copying process
-; (since pSource might contain valid data beyond its first binary zero).
-{
- Loop %pSize% ; Build the integer by adding up its bytes.
- result += *(&pSource + pOffset + A_Index-1) << 8*(A_Index-1)
- if (!pIsSigned OR pSize > 4 OR result < 0x80000000)
- return result ; Signed vs. unsigned doesn't matter in these cases.
- ; Otherwise, convert the value (now known to be 32-bit) to its signed counterpart:
- return -(0xFFFFFFFF - result + 1)
-}
-
-
-InsertIntegerLED(pInteger, ByRef pDest, pOffset = 0, pSize = 4)
-; The caller must ensure that pDest has sufficient capacity. To preserve any existing contents in pDest,
-; only pSize number of bytes starting at pOffset are altered in it.
-{
- Loop %pSize% ; Copy each byte in the integer into the structure as raw binary data.
- DllCall("RtlFillMemory", "UInt", &pDest + pOffset + A_Index-1, "UInt", 1, "UChar", pInteger >> 8*(A_Index-1) & 0xFF)
-}
-
-
/*
------------------------------------------------------
@@ -4722,55 +4738,62 @@ InsertIntegerLED(pInteger, ByRef pDest, pOffset = 0, pSize = 4)
guiErstellt = 0
alwaysOnTop = 1
aktuellesBild = ebene1.png
-^~F1::
+SC056 & *F1::
+SC138 & *F1::
{
if (zeigeBildschirmTastatur)
goto Switch1
return
}
-^~F2::
+SC056 & *F2::
+SC138 & *F2::
{
if (zeigeBildschirmTastatur)
goto Switch2
return
}
-^~F3::
+SC056 & *F3::
+SC138 & *F3::
{
if (zeigeBildschirmTastatur)
goto Switch3
return
}
-^~F4::
+SC056 & *F4::
+SC138 & *F4::
{
if (zeigeBildschirmTastatur)
goto Switch4
return
}
-^~F5::
+SC056 & *F5::
+SC138 & *F5::
{
if (zeigeBildschirmTastatur)
goto Switch5
return
}
-^~F6::
+SC056 & *F6::
+SC138 & *F6::
{
if (zeigeBildschirmTastatur)
goto Switch6
return
}
-^~F7::
+SC056 & *F7::
+SC138 & *F7::
{
if (zeigeBildschirmTastatur)
goto Show
return
}
-^~F8::
+SC056 & *F8::
+SC138 & *F8::
{
if (zeigeBildschirmTastatur)
- goto ToggleAlwaysOnTop
+ goto ToggleAlwaysOnTop
return
}
-
Switch1:
if (guiErstellt)
{
@@ -4886,12 +4909,12 @@ Show:
}
else
{
- if (Image = "")
+ if (Image = "")
{
Image = ebene1.png
}
yPosition := A_ScreenHeight -270
- Gui, Color, FFFFFF
+ Gui, Color, FFFFFF
Gui, Add, Button, xm+5 gSwitch1, F1
Gui, Add, Text, x+5, kleine Buchstaben
Gui, Add, Button, xm+5 gSwitch2, F2
@@ -4967,8 +4990,8 @@ togglesuspend:
if A_IsSuspended
{
menu, tray, rename, %enable%, %disable%
- menu, tray, tip, %name%
- if (iconBenutzen)
+ menu, tray, tip, %name%
+ if (iconBenutzen)
menu, tray, icon, neo.ico,,1
suspend , off ; Schaltet Suspend aus -> NEO
}
@@ -4976,8 +4999,8 @@ togglesuspend:
{
menu, tray, rename, %disable%, %enable%
menu, tray, tip, %name% : Deaktiviert
- if (iconBenutzen)
- menu, tray, icon, neo_disabled.ico,,1
+ if (iconBenutzen)
+ menu, tray, icon, neo_disabled.ico,,1
suspend , on ; Schaltet Suspend ein -> QWERTZ
}
@@ -5033,4 +5056,10 @@ return
exitprogram:
exitapp
-return \ No newline at end of file
+return
+
+
+
+
+
+ \ No newline at end of file
diff --git a/windows/autohotkey/neo20-all-in-one.exe b/windows/autohotkey/neo20-all-in-one.exe
index 1e32eef..ae20e7d 100644
--- a/windows/autohotkey/neo20-all-in-one.exe
+++ b/windows/autohotkey/neo20-all-in-one.exe
Binary files differ