summaryrefslogtreecommitdiffstats
path: root/windows/autohotkey/neo20.ahk
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/autohotkey/neo20.ahk
parentfeb93d6b8ae1a59d0fbe479409906ad6a8f74620 (diff)
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/autohotkey/neo20.ahk')
-rw-r--r--windows/autohotkey/neo20.ahk1580
1 files changed, 644 insertions, 936 deletions
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