50b88f3852
git-svn-id: https://svn.neo-layout.org@694 b9310e46-f624-0410-8ea1-cfbb3a30dc96
5161 lines
No EOL
124 KiB
AutoHotkey
5161 lines
No EOL
124 KiB
AutoHotkey
/*
|
||
*******************************************
|
||
WICHTIGE WARNUNG:
|
||
|
||
Dies ist inzwischen eine automatisch generierte
|
||
Datei! Sie wird regelmäßig überschrieben und
|
||
sollte deshalb nicht mehr direkt bearbeitet werden!
|
||
|
||
DIE AUSFÜHRBARE DATEI AKTUALISIEREN:
|
||
|
||
Um die neo20-all-in-one.exe auf den neuesten Stand zu
|
||
bringen, reicht (wenn Autohotkey im Standardverzeichnis
|
||
installiert wurde) ein Doppelklick auf die Batch-Datei
|
||
Build-Update.bat
|
||
|
||
HINWEISE FÜR AHK-ENTWICKLER:
|
||
|
||
Anstatt dieser Datei müssen die Dateien/Module im
|
||
Source-Unterverzeichnis bearbeitet werden, etwa:
|
||
Source\Changelog-and-Todo.ahk
|
||
Source\Keys-Neo.ahk
|
||
Source\Keys-Qwert-to-Neo.ahk
|
||
Source\Methods-Layers.ahk
|
||
Source\Methods-Lights.ahk
|
||
|
||
Um die gemachten Änderungen zu testen, sollte die Datei
|
||
Source\All.ahk
|
||
verwendet werden, die alle Module einbindet und
|
||
regulär durch einen Doppelklick mit dem AHK-Interpreter
|
||
gestartet werden kann.
|
||
|
||
Der grosse Vorteil dieser Methode liegt daran, dass sich die
|
||
Zeilennummern eventueller Fehlermeldungen nicht mehr auf
|
||
die grosse "vereinigte" AHK-Datei, sondern auf die tatsäch-
|
||
lich relevanten Module beziehen, z.B.:
|
||
|
||
Error at line 64 in #include file "C:\...\autohotkey\Source\Methods-Lights.ahk"
|
||
Line Text: CTL_CODE_LED(p_device_type, p_function, p_method, p_access)
|
||
Error: Functions cannot contain functions.
|
||
The programm will exit.
|
||
|
||
AHK-LINKS
|
||
|
||
Eine kurze Einführung (Installation und Beispielscipt) findet man etwa auf
|
||
http://www.kikizas.net/en/usbapps.ahk.html
|
||
|
||
Eine alphabetische Liste aller erlaubten Kommandos findet man online unter
|
||
http://www.autohotkey.com/docs/commands.htm
|
||
|
||
|
||
*******************************************
|
||
*/
|
||
|
||
/*
|
||
*************************************
|
||
* NEO 2.0 (beta) Autohotkey-Treiber *
|
||
*************************************
|
||
Autoren:
|
||
Stefan Mayer <stm (at) neo-layout. o r g>
|
||
Nora Geissler <nora_geissler (at) yahoo. d e>
|
||
Matthias Berg <neo (at) matthias-berg. e u>
|
||
...
|
||
|
||
|
||
|
||
*********
|
||
* TODO: *
|
||
*********
|
||
- Die Bildschirmtastatur mit Mod4 hat den Mod4-Lock deaktiviert!
|
||
- Auf der 6. Ebene von 2 und 3 werden noch immer Delta und Nabla gesendet, aber nicht die logischen Symbole UND und ODER (wie in der Referenz); siehe hierzu auch http://de.autohotkey.com/forum/post-26040.html
|
||
- send und send{blind} durch SendUnicodeChar ersetzen (aus Performance-Gründen jedoch nicht a-z, A-Z, 0-9)
|
||
- 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: *
|
||
**********
|
||
- Tastatur-Reset: mod4+escape (oder ev. ein anderer Hotkey) soll die Tastatur wieder in den Normalzustand versetzen (d.h. alle Ebenen unlocken und Einhand, Lang-s oder Sonstwelche-Modi deaktivieren)
|
||
- Die Varianten (lernModus, einHandNeo, Lang-s-Tastatur, Qwertz/pausieren) sollten einheitlich (de-)aktiviert werden, etwa über Mod4 F9-F12
|
||
- bei Ebene 4 rechte Hand (Numpad) z.B. Numpad5 statt 5 senden
|
||
|
||
|
||
|
||
******************
|
||
* CHANGEHISTORY: *
|
||
******************
|
||
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) testweise 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 (Mod3+Numpad5, Mod5+Numpad5 und Mod3+Numpad9 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):
|
||
- 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 Anfänger stets einfach verfügbar)
|
||
UseMod4Light := 1 ; Aktivierter Mod4-Lock wird über die Rollen-LED des Keybord angezeigt (analog zu CapsLock)
|
||
LangSTastatur := 0 ; Sollen Lang-s auf s, s auf ß und ß auf ß(3) gelegt werden?
|
||
#Include *i %a_scriptdir%\LangSTastaturStandardmäßigEingeschaltet.ahk
|
||
#Include *i %a_scriptdir%\source\LangSTastaturStandardmäßigEingeschaltet.ahk
|
||
; Wenn diese Datei vorhanden ist und die Zeichenfolge »LangSTastatur := 1« enthält,
|
||
; ist die LangSTastatur beim Starten der ahk/exe-Datei automatisch eingeschaltet.
|
||
|
||
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_ü
|
||
|
||
|
||
|
||
|
||
/*
|
||
------------------------------------------------------
|
||
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 ; Akut
|
||
; 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
|
||
|
||
|
||
|
||
/*
|
||
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
|
||
|
||
Ablauf bei "untoten" Tasten:
|
||
1. Ebene Aktualisieren
|
||
2. Abhängig von den Variablen "Ebene" und "PriorDeadKey" Zeichen ausgeben
|
||
3. "PriorDeadKey" mit leerem String überschreiben
|
||
|
||
------------------------------------------------------
|
||
Reihe 1
|
||
------------------------------------------------------
|
||
*/
|
||
|
||
|
||
neo_tot1:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
SendUnicodeChar(0x02C6) ; circumflex, tot
|
||
PriorDeadKey := "c1"
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
SendUnicodeChar(0x02C7) ; caron, tot
|
||
PriorDeadKey := "c2"
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
SendUnicodeChar(0x02D8) ; brevis
|
||
PriorDeadKey := "c3"
|
||
}
|
||
else if Ebene = 4
|
||
{
|
||
SendUnicodeChar(0x00B7) ; Mittenpunkt, tot
|
||
PriorDeadKey := "c4"
|
||
}
|
||
else if Ebene = 5
|
||
{
|
||
send - ; querstrich, tot
|
||
PriorDeadKey := "c5"
|
||
}
|
||
else if Ebene = 6
|
||
{
|
||
Send . ; punkt darunter (colon)
|
||
PriorDeadKey := "c6"
|
||
}
|
||
return
|
||
|
||
neo_1:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex 1
|
||
BSSendUnicodeChar(0x00B9)
|
||
else if (PriorDeadKey = "c5") ; toter -
|
||
BSSendUnicodeChar(0x2081)
|
||
else if (CompKey = "r_small_1")
|
||
Comp3UnicodeChar(0x217A) ; römisch xi
|
||
else if (CompKey = "r_capital_1")
|
||
Comp3UnicodeChar(0x216A) ; römisch XI
|
||
else
|
||
{
|
||
if GetKeyState("CapsLock","T")
|
||
{
|
||
if (IsModifierPressed())
|
||
{
|
||
send {blind}1
|
||
}
|
||
else
|
||
{
|
||
send 1
|
||
}
|
||
}
|
||
else {
|
||
if ( not(lernModus) or (lernModus_std_ZahlenReihe) )
|
||
{
|
||
send {blind}1
|
||
}
|
||
}
|
||
}
|
||
if (PriorDeadKey = "comp")
|
||
CompKey := "1"
|
||
else if (CompKey = "r_small")
|
||
CompKey := "r_small_1"
|
||
else if (CompKey = "r_capital")
|
||
CompKey := "r_capital_1"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
send °
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
SendUnicodeChar(0x00B9) ; 2 Hochgestellte
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 4
|
||
{
|
||
SendUnicodeChar(0x2022) ; bullet
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 5
|
||
{
|
||
SendUnicodeChar(0x2640) ; Piktogramm weiblich
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 6
|
||
{
|
||
SendUnicodeChar(0x00AC) ; Nicht-Symbol
|
||
CompKey := ""
|
||
}
|
||
PriorDeadKey := ""
|
||
return
|
||
|
||
neo_2:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x00B2)
|
||
else if (PriorDeadKey = "c5") ; toter -
|
||
BSSendUnicodeChar(0x2082)
|
||
else if (CompKey = "r_small")
|
||
CompUnicodeChar(0x2171) ; römisch ii
|
||
else if (CompKey = "r_capital")
|
||
CompUnicodeChar(0x2161) ; römisch II
|
||
else if (CompKey = "r_small_1")
|
||
Comp3UnicodeChar(0x217B) ; römisch xii
|
||
else if (CompKey = "r_capital_1")
|
||
Comp3UnicodeChar(0x216B) ; römisch XII
|
||
else
|
||
{
|
||
if GetKeyState("CapsLock","T")
|
||
{
|
||
if (IsModifierPressed())
|
||
{
|
||
send {blind}2
|
||
}
|
||
else
|
||
{
|
||
send 2
|
||
}
|
||
|
||
}
|
||
else {
|
||
if ( not(lernModus) or (lernModus_std_ZahlenReihe) )
|
||
{
|
||
send {blind}2
|
||
}
|
||
}
|
||
}
|
||
if (PriorDeadKey = "comp")
|
||
CompKey := "2"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
SendUnicodeChar(0x2116) ; numero
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
SendUnicodeChar(0x00B2) ; 2 Hochgestellte
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 4
|
||
{
|
||
SendUnicodeChar(0x2023) ; aufzaehlungspfeil
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 5
|
||
{
|
||
SendUnicodeChar(0x26A5) ; Piktogramm Zwitter
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 6
|
||
{
|
||
SendUnicodeChar(0x2228) ; Logisches Oder
|
||
CompKey := ""
|
||
}
|
||
PriorDeadKey := ""
|
||
return
|
||
|
||
neo_3:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x00B3)
|
||
else if (PriorDeadKey = "c5") ; toter -
|
||
BSSendUnicodeChar(0x2083)
|
||
else if (CompKey = "1")
|
||
CompUnicodeChar(0x2153) ; 1/3
|
||
else if (CompKey = "2")
|
||
CompUnicodeChar(0x2154) ; 2/3
|
||
else if (CompKey = "r_small")
|
||
CompUnicodeChar(0x2172) ; römisch iii
|
||
else if (CompKey = "r_capital")
|
||
CompUnicodeChar(0x2162) ; römisch III
|
||
else
|
||
{
|
||
if GetKeyState("CapsLock","T")
|
||
{
|
||
if (IsModifierPressed())
|
||
{
|
||
send {blind}3
|
||
}
|
||
else
|
||
{
|
||
send 3
|
||
}
|
||
}
|
||
else {
|
||
if ( not(lernModus) or (lernModus_std_ZahlenReihe) )
|
||
{
|
||
send {blind}3
|
||
}
|
||
}
|
||
}
|
||
if (PriorDeadKey = "comp")
|
||
CompKey := "3"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
send §
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
SendUnicodeChar(0x00B3) ; 3 Hochgestellte
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 4
|
||
{ } ; leer
|
||
else if Ebene = 5
|
||
{
|
||
SendUnicodeChar(0x2642) ; Piktogramm Mann
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 6
|
||
{
|
||
SendUnicodeChar(0x2227) ; Logisches Und
|
||
CompKey := ""
|
||
}
|
||
PriorDeadKey := ""
|
||
return
|
||
|
||
neo_4:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x2074)
|
||
else if (PriorDeadKey = "c5") ; toter -
|
||
BSSendUnicodeChar(0x2084)
|
||
else if (CompKey = "r_small")
|
||
CompUnicodeChar(0x2173) ; römisch iv
|
||
else if (CompKey = "r_capital")
|
||
CompUnicodeChar(0x2163) ; römisch IV
|
||
else
|
||
{
|
||
if GetKeyState("CapsLock","T")
|
||
{
|
||
if (IsModifierPressed())
|
||
{
|
||
send {blind}4
|
||
}
|
||
else
|
||
{
|
||
send 4
|
||
}
|
||
|
||
}
|
||
else
|
||
{
|
||
if ( not(lernModus) or (lernModus_std_ZahlenReihe) )
|
||
{
|
||
send {blind}4
|
||
}
|
||
}
|
||
}
|
||
if (PriorDeadKey = "comp")
|
||
CompKey := "4"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
send »
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
send ›
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 4
|
||
{
|
||
Send {PgUp} ; Prev
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 5
|
||
{
|
||
SendUnicodeChar(0x2113) ; Script small L
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 6
|
||
{
|
||
SendUnicodeChar(0x22A5) ; Senkrecht
|
||
CompKey := ""
|
||
}
|
||
PriorDeadKey := ""
|
||
return
|
||
|
||
neo_5:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x2075)
|
||
else if (PriorDeadKey = "c5") ; toter -
|
||
BSSendUnicodeChar(0x2085)
|
||
else if (CompKey = "1")
|
||
CompUnicodeChar(0x2155) ; 1/5
|
||
else if (CompKey = "2")
|
||
CompUnicodeChar(0x2156) ; 2/5
|
||
else if (CompKey = "3")
|
||
CompUnicodeChar(0x2157) ; 3/5
|
||
else if (CompKey = "4")
|
||
CompUnicodeChar(0x2158) ; 4/5
|
||
else if (CompKey = "r_small")
|
||
CompUnicodeChar(0x2174) ; römisch v
|
||
else if (CompKey = "r_capital")
|
||
CompUnicodeChar(0x2164) ; römisch V
|
||
else
|
||
{
|
||
if GetKeyState("CapsLock","T")
|
||
{
|
||
if (IsModifierPressed())
|
||
{
|
||
send {blind}5
|
||
}
|
||
else
|
||
{
|
||
send 5
|
||
}
|
||
|
||
}
|
||
else {
|
||
if ( not(lernModus) or (lernModus_std_ZahlenReihe) )
|
||
{
|
||
send {blind}5
|
||
}
|
||
}
|
||
}
|
||
if (PriorDeadKey = "comp")
|
||
CompKey := "5"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
send «
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
send ‹
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 4
|
||
{ } ; leer
|
||
else if Ebene = 5
|
||
{
|
||
SendUnicodeChar(0x2020) ; Kreuz (Dagger)
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 6
|
||
{
|
||
SendUnicodeChar(0x2221) ; Winkel
|
||
CompKey := ""
|
||
}
|
||
PriorDeadKey := ""
|
||
return
|
||
|
||
neo_6:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x2076)
|
||
else if (PriorDeadKey = "c5") ; toter -
|
||
BSSendUnicodeChar(0x2086)
|
||
else if (CompKey = "1")
|
||
CompUnicodeChar(0x2159) ; 1/6
|
||
else if (CompKey = "5")
|
||
CompUnicodeChar(0x215A) ; 5/6
|
||
else if (CompKey = "r_small")
|
||
CompUnicodeChar(0x2175) ; römisch vi
|
||
else if (CompKey = "r_capital")
|
||
CompUnicodeChar(0x2165) ; römisch VI
|
||
else
|
||
{
|
||
if GetKeyState("CapsLock","T")
|
||
{
|
||
if (IsModifierPressed())
|
||
{
|
||
send {blind}6
|
||
}
|
||
else
|
||
{
|
||
send 6
|
||
}
|
||
|
||
}
|
||
else {
|
||
if ( not(lernModus) or (lernModus_std_ZahlenReihe) )
|
||
{
|
||
send {blind}6
|
||
}
|
||
}
|
||
}
|
||
if (PriorDeadKey = "comp")
|
||
CompKey := "6"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
send €
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
send ¢
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 4
|
||
{
|
||
send £
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 5
|
||
{ } ; leer
|
||
else if Ebene = 6
|
||
{
|
||
SendUnicodeChar(0x2225) ; parallel
|
||
CompKey := ""
|
||
}
|
||
PriorDeadKey := ""
|
||
return
|
||
|
||
neo_7:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x2077)
|
||
else if (PriorDeadKey = "c5") ; toter -
|
||
BSSendUnicodeChar(0x2087)
|
||
else if (CompKey = "r_small")
|
||
CompUnicodeChar(0x2176) ; römisch vii
|
||
else if (CompKey = "r_capital")
|
||
CompUnicodeChar(0x2166) ; römisch VII
|
||
else
|
||
{
|
||
if GetKeyState("CapsLock","T")
|
||
{
|
||
if (IsModifierPressed())
|
||
{
|
||
send {blind}7
|
||
}
|
||
else
|
||
{
|
||
send 7
|
||
}
|
||
|
||
}
|
||
else {
|
||
if ( not(lernModus) or (lernModus_std_ZahlenReihe) )
|
||
{
|
||
send {blind}7
|
||
}
|
||
}
|
||
}
|
||
if (PriorDeadKey = "comp")
|
||
CompKey := "7"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
send $
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
send ¥
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 4
|
||
{
|
||
send ¤
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 5
|
||
{
|
||
SendUnicodeChar(0x03BA) ; greek small letter kappa
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 6
|
||
{
|
||
SendUnicodeChar(0x2209) ; nicht Element von
|
||
CompKey := ""
|
||
}
|
||
PriorDeadKey := ""
|
||
return
|
||
|
||
neo_8:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x2078)
|
||
else if (PriorDeadKey = "c5") ; toter -
|
||
BSSendUnicodeChar(0x2088)
|
||
else if (CompKey = "1")
|
||
CompUnicodeChar(0x215B) ; 1/8
|
||
else if (CompKey = "3")
|
||
CompUnicodeChar(0x215C) ; 3/8
|
||
else if (CompKey = "5")
|
||
CompUnicodeChar(0x215D) ; 5/8
|
||
else if (CompKey = "7")
|
||
CompUnicodeChar(0x215E) ; 7/8
|
||
else if (CompKey = "r_small")
|
||
CompUnicodeChar(0x2177) ; römisch viii
|
||
else if (CompKey = "r_capital")
|
||
CompUnicodeChar(0x2167) ; römisch VIII
|
||
else
|
||
{
|
||
if GetKeyState("CapsLock","T")
|
||
{
|
||
if (IsModifierPressed())
|
||
{
|
||
send {blind}8
|
||
}
|
||
else
|
||
{
|
||
send 8
|
||
}
|
||
|
||
}
|
||
else {
|
||
if ( not(lernModus) or (lernModus_std_ZahlenReihe) )
|
||
{
|
||
send {blind}8
|
||
}
|
||
}
|
||
}
|
||
if (PriorDeadKey = "comp")
|
||
CompKey := "8"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
send „
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
send ‚
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 4
|
||
{
|
||
Send /
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 5
|
||
{
|
||
SendUnicodeChar(0x27E8) ;bra (öffnende spitze klammer)
|
||
}
|
||
else if Ebene = 6
|
||
{
|
||
SendUnicodeChar(0x2204) ; es existiert nicht
|
||
CompKey := ""
|
||
}
|
||
PriorDeadKey := ""
|
||
return
|
||
|
||
neo_9:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x2079)
|
||
else if (PriorDeadKey = "c5") ; toter -
|
||
BSSendUnicodeChar(0x2089)
|
||
else if (CompKey = "r_small")
|
||
CompUnicodeChar(0x2178) ; römisch ix
|
||
else if (CompKey = "r_capital")
|
||
CompUnicodeChar(0x2168) ; römisch IX
|
||
else
|
||
{
|
||
if GetKeyState("CapsLock","T")
|
||
{
|
||
if (IsModifierPressed())
|
||
{
|
||
send {blind}9
|
||
}
|
||
else
|
||
{
|
||
send 9
|
||
}
|
||
|
||
}
|
||
else {
|
||
if ( not(lernModus) or (lernModus_std_ZahlenReihe) )
|
||
{
|
||
send {blind}9
|
||
}
|
||
}
|
||
}
|
||
if (PriorDeadKey = "comp")
|
||
CompKey := "9"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
send “
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
send ‘
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 4
|
||
{
|
||
Send *
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 5
|
||
{
|
||
SendUnicodeChar(0x27E9) ;ket (schließende spitze klammer)
|
||
}
|
||
else if Ebene = 6
|
||
{
|
||
SendUnicodeChar(0x2226) ; nicht parallel
|
||
CompKey := ""
|
||
}
|
||
PriorDeadKey := ""
|
||
return
|
||
|
||
neo_0:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x2070)
|
||
else if (PriorDeadKey = "c5") ; toter -
|
||
BSSendUnicodeChar(0x2080)
|
||
else if (CompKey = "r_small_1")
|
||
Comp3UnicodeChar(0x2179) ; römisch x
|
||
else if (CompKey = "r_capital_1")
|
||
Comp3UnicodeChar(0x2169) ; römisch X
|
||
else
|
||
{
|
||
if GetKeyState("CapsLock","T")
|
||
{
|
||
if (IsModifierPressed())
|
||
{
|
||
send {blind}0
|
||
}
|
||
else
|
||
{
|
||
send 0
|
||
}
|
||
|
||
}
|
||
else {
|
||
if ( not(lernModus) or (lernModus_std_ZahlenReihe) )
|
||
{
|
||
send {blind}0
|
||
}
|
||
}
|
||
}
|
||
if (PriorDeadKey = "comp")
|
||
CompKey := "0"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
send ”
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
send ’
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 4
|
||
{
|
||
Send -
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 5
|
||
{ } ; leer
|
||
else if Ebene = 6
|
||
{
|
||
SendUnicodeChar(0x2205) ; leere Menge
|
||
CompKey := ""
|
||
}
|
||
PriorDeadKey := ""
|
||
return
|
||
|
||
neo_strich:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if GetKeyState("CapsLock","T")
|
||
{
|
||
if (IsModifierPressed())
|
||
{
|
||
send {blind}-
|
||
}
|
||
else
|
||
{
|
||
send -
|
||
}
|
||
|
||
}
|
||
else {
|
||
send {blind}- ;Bindestrich
|
||
}
|
||
}
|
||
else if Ebene = 2
|
||
SendUnicodeChar(0x2013) ; Gedankenstrich
|
||
else if Ebene = 3
|
||
SendUnicodeChar(0x2014) ; Englische Gedankenstrich
|
||
else if Ebene = 4
|
||
{ } ; leer ... SendUnicodeChar(0x254C)
|
||
else if Ebene = 5
|
||
SendUnicodeChar(0x2011) ; geschützter Bindestrich
|
||
else if Ebene = 6
|
||
SendUnicodeChar(0x00AD) ; weicher Trennstrich
|
||
PriorDeadKey := "" CompKey := ""
|
||
return
|
||
|
||
neo_tot2:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
send {´}{space} ; akut, tot
|
||
PriorDeadKey := "a1"
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
send ``{space}
|
||
PriorDeadKey := "a2"
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
send ¸ ; cedilla
|
||
PriorDeadKey := "a3"
|
||
}
|
||
else if Ebene = 4
|
||
{
|
||
SendUnicodeChar(0x02D9) ; punkt oben drüber
|
||
PriorDeadKey := "a4"
|
||
}
|
||
else if Ebene = 5
|
||
{
|
||
SendUnicodeChar(0x02DB) ; ogonek
|
||
PriorDeadKey := "a5"
|
||
}
|
||
else if Ebene = 6
|
||
{
|
||
SendUnicodeChar(0x02DA) ; ring obendrauf
|
||
PriorDeadKey := "a6"
|
||
}
|
||
return
|
||
|
||
|
||
/*
|
||
------------------------------------------------------
|
||
Reihe 2
|
||
------------------------------------------------------
|
||
*/
|
||
|
||
neo_x:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
sendinput {blind}x
|
||
else if Ebene = 2
|
||
sendinput {blind}X
|
||
else if Ebene = 3
|
||
SendUnicodeChar(0x2026) ;Ellipse
|
||
else if Ebene = 5
|
||
SendUnicodeChar(0x03BE) ;xi
|
||
else if Ebene = 6
|
||
SendUnicodeChar(0x039E) ; Xi
|
||
PriorDeadKey := "" CompKey := ""
|
||
return
|
||
|
||
|
||
neo_v:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (PriorDeadKey = "c6") ; punkt darunter
|
||
BSSendUnicodeChar(0x1E7F)
|
||
else
|
||
sendinput {blind}v
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
if (PriorDeadKey = "c6") ; punkt darunter
|
||
BSSendUnicodeChar(0x1E7E)
|
||
else
|
||
sendinput {blind}V
|
||
}
|
||
else if Ebene = 3
|
||
send _
|
||
else if Ebene = 4
|
||
if ( not(lernModus) or (lernModus_neo_Backspace) )
|
||
{
|
||
Send {Backspace}
|
||
}
|
||
else
|
||
{} ; leer
|
||
else if Ebene = 6
|
||
SendUnicodeChar(0x2259) ; estimates
|
||
PriorDeadKey := "" CompKey := ""
|
||
return
|
||
|
||
|
||
|
||
neo_l:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (PriorDeadKey = "t4") ; Schrägstrich
|
||
BSSendUnicodeChar(0x0142)
|
||
else if (PriorDeadKey = "a1") ; akut
|
||
BSSendUnicodeChar(0x013A)
|
||
else if (PriorDeadKey = "c2") ; caron
|
||
BSSendUnicodeChar(0x013E)
|
||
else if (PriorDeadKey = "a3") ; cedilla
|
||
BSSendUnicodeChar(0x013C)
|
||
else if (PriorDeadKey = "c4") ; Mittenpunkt
|
||
BSSendUnicodeChar(0x0140)
|
||
else if (PriorDeadKey = "c6") ; punkt darunter
|
||
BSSendUnicodeChar(0x1E37)
|
||
else
|
||
sendinput {blind}l
|
||
if (PriorDeadKey = "comp") ; compose
|
||
CompKey := "l_small"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
if (PriorDeadKey = "a1") ; akut
|
||
BSSendUnicodeChar(0x0139)
|
||
else if (PriorDeadKey = "c2") ; caron
|
||
BSSendUnicodeChar(0x013D)
|
||
else if (PriorDeadKey = "a3") ; cedilla
|
||
BSSendUnicodeChar(0x013B)
|
||
else if (PriorDeadKey = "t4") ; Schrägstrich
|
||
BSSendUnicodeChar(0x0141)
|
||
else if (PriorDeadKey = "c4") ; Mittenpunkt
|
||
BSSendUnicodeChar(0x013F)
|
||
else if (PriorDeadKey = "c6") ; punkt darunter
|
||
BSSendUnicodeChar(0x1E36)
|
||
else
|
||
sendinput {blind}L
|
||
if (PriorDeadKey = "comp") ; compose
|
||
CompKey := "l_capital"
|
||
else CompKey := ""
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
send [
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 4
|
||
{
|
||
Sendinput {Blind}{Up}
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 5
|
||
{
|
||
SendUnicodeChar(0x03BB) ; lambda
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 6
|
||
{
|
||
SendUnicodeChar(0x039B) ; Lambda
|
||
CompKey := ""
|
||
}
|
||
PriorDeadKey := ""
|
||
return
|
||
|
||
|
||
neo_c:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x0109)
|
||
else if (PriorDeadKey = "c2") ; caron
|
||
BSSendUnicodeChar(0x010D)
|
||
else if (PriorDeadKey = "a1") ; akut
|
||
BSSendUnicodeChar(0x0107)
|
||
else if (PriorDeadKey = "a3") ; cedilla
|
||
BSSendUnicodeChar(0x00E7)
|
||
else if (PriorDeadKey = "a4") ; punkt darüber
|
||
BSSendUnicodeChar(0x010B)
|
||
else if ( (CompKey = "o_small") or (CompKey = "o_capital") )
|
||
Send {bs}©
|
||
else
|
||
{
|
||
sendinput {blind}c
|
||
}
|
||
if (PriorDeadKey = "comp")
|
||
CompKey := "c_small"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x0108)
|
||
else if (PriorDeadKey = "c2") ; caron
|
||
BSSendUnicodeChar(0x010C)
|
||
else if (PriorDeadKey = "a1") ; akut
|
||
BSSendUnicodeChar(0x0106)
|
||
else if (PriorDeadKey = "a3") ; cedilla
|
||
BSSendUnicodeChar(0x00E6)
|
||
else if (PriorDeadKey = "a4") ; punkt darüber
|
||
BSSendUnicodeChar(0x010A)
|
||
else if ( (CompKey = "o_small") or (CompKey = "o_capital") )
|
||
Send {bs}©
|
||
else
|
||
sendinput {blind}C
|
||
if (PriorDeadKey = "comp")
|
||
CompKey = "c_capital"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
send ]
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 4
|
||
{
|
||
if ( not(lernModus) or (lernModus_neo_Entf) )
|
||
{
|
||
Send {Del}
|
||
CompKey := ""
|
||
}
|
||
else
|
||
{} ; leer
|
||
}
|
||
else if Ebene = 5
|
||
{
|
||
SendUnicodeChar(0x03C7) ;chi
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 6
|
||
{
|
||
SendUnicodeChar(0x2102) ; C (Komplexe Zahlen)
|
||
CompKey := ""
|
||
}
|
||
PriorDeadKey := ""
|
||
return
|
||
|
||
neo_w:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x0175)
|
||
else
|
||
sendinput {blind}w
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x0174)
|
||
else
|
||
sendinput {blind}W
|
||
}
|
||
else if Ebene = 3
|
||
SendUnicodeChar(0x005E) ; untotes ^ - Unicode-Name: CIRCUMFLEX ACCENT
|
||
;send {^}{space} ; Funktioniert nicht unter Java-Programmen
|
||
else if Ebene = 4
|
||
Send {Insert}
|
||
else if Ebene = 5
|
||
SendUnicodeChar(0x03C9) ; omega
|
||
else if Ebene = 6
|
||
SendUnicodeChar(0x03A9) ; Omega
|
||
PriorDeadKey := "" CompKey := ""
|
||
return
|
||
|
||
neo_k:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (PriorDeadKey = "a3") ; cedilla
|
||
BSSendUnicodeChar(0x0137)
|
||
else if (PriorDeadKey = "c6") ; punkt darunter
|
||
BSSendUnicodeChar(0x1E33)
|
||
else
|
||
sendinput {blind}k
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
if (PriorDeadKey = "a3") ; cedilla
|
||
BSSendUnicodeChar(0x0136)
|
||
else if (PriorDeadKey = "c6") ; punkt darunter
|
||
BSSendUnicodeChar(0x1E32)
|
||
else
|
||
sendinput {blind}K
|
||
}
|
||
else if Ebene = 3
|
||
sendraw !
|
||
else if Ebene = 4
|
||
Send ¡
|
||
else if Ebene = 5
|
||
SendUnicodeChar(0x03F0) ;kappa symbol (varkappa)
|
||
else if Ebene = 6
|
||
SendUnicodeChar(0x221A) ; Wurzel
|
||
PriorDeadKey := "" CompKey := ""
|
||
return
|
||
|
||
neo_h:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x0125)
|
||
else if (PriorDeadKey = "c5") ; Querstrich
|
||
BSSendUnicodeChar(0x0127)
|
||
else if (PriorDeadKey = "a4") ; punkt darüber
|
||
BSSendUnicodeChar(0x1E23)
|
||
else if (PriorDeadKey = "c6") ; punkt darunter
|
||
BSSendUnicodeChar(0x1E25)
|
||
else sendinput {blind}h
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x0124)
|
||
else if (PriorDeadKey = "c5") ; Querstrich
|
||
BSSendUnicodeChar(0x0126)
|
||
else if (PriorDeadKey = "a4") ; punkt darüber
|
||
BSSendUnicodeChar(0x1E22)
|
||
else if (PriorDeadKey = "c6") ; punkt darunter
|
||
BSSendUnicodeChar(0x1E24)
|
||
else sendinput {blind}H
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
if (PriorDeadKey = "c5") ; Querstrich
|
||
BSSendUnicodeChar(0x2264) ; kleiner gleich
|
||
else
|
||
send {blind}<
|
||
}
|
||
else if Ebene = 4
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x2077)
|
||
else if (PriorDeadKey = "c5") ; toter -
|
||
BSSendUnicodeChar(0x2087)
|
||
else
|
||
Send 7
|
||
}
|
||
else if Ebene = 5
|
||
SendUnicodeChar(0x03C8) ;psi
|
||
else if Ebene = 6
|
||
SendUnicodeChar(0x03A8) ; Psi
|
||
PriorDeadKey := "" CompKey := ""
|
||
return
|
||
|
||
neo_g:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x011D)
|
||
else if (PriorDeadKey = "c3") ; brevis
|
||
BSSendUnicodeChar(0x011F)
|
||
else if (PriorDeadKey = "a3") ; cedilla
|
||
BSSendUnicodeChar(0x0123)
|
||
else if (PriorDeadKey = "a4") ; punkt darüber
|
||
BSSendUnicodeChar(0x0121)
|
||
else sendinput {blind}g
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x011C)
|
||
else if (PriorDeadKey = "c3") ; brevis
|
||
BSSendUnicodeChar(0x011E)
|
||
else if (PriorDeadKey = "a3") ; cedilla
|
||
BSSendUnicodeChar(0x0122)
|
||
else if (PriorDeadKey = "a4") ; punkt darüber
|
||
BSSendUnicodeChar(0x0120)
|
||
else sendinput {blind}G
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
if (PriorDeadKey = "c5") ; Querstrich
|
||
SendUnicodeChar(0x2265) ; größer gleich
|
||
else
|
||
send >
|
||
}
|
||
else if Ebene = 4
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x2078)
|
||
else if (PriorDeadKey = "c5") ; toter -
|
||
BSSendUnicodeChar(0x2088)
|
||
else
|
||
Send 8
|
||
}
|
||
else if Ebene = 5
|
||
SendUnicodeChar(0x03B3) ;gamma
|
||
else if Ebene = 6
|
||
SendUnicodeChar(0x0393) ; Gamma
|
||
PriorDeadKey := "" CompKey := ""
|
||
return
|
||
|
||
neo_f:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (PriorDeadKey = "t4") ; durchgestrichen
|
||
BSSendUnicodeChar(0x0192)
|
||
else if (PriorDeadKey = "a4") ; punkt darüber
|
||
BSSendUnicodeChar(0x1E1F)
|
||
else sendinput {blind}f
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
if (PriorDeadKey = "t4") ; durchgestrichen
|
||
BSSendUnicodeChar(0x0191)
|
||
else if (PriorDeadKey = "a4") ; punkt darüber
|
||
BSSendUnicodeChar(0x1E1E)
|
||
else sendinput {blind}F
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x2259) ; entspricht
|
||
else if (PriorDeadKey = "t1") ; tilde
|
||
BSSendUnicodeChar(0x2245) ; ungefähr gleich
|
||
else if (PriorDeadKey = "t4") ; Schrägstrich
|
||
BSSendUnicodeChar(0x2260) ; ungleich
|
||
else if (PriorDeadKey = "c5") ; Querstrich
|
||
BSSendUnicodeChar(0x2261) ; identisch
|
||
else if (PriorDeadKey = "c2") ; caron
|
||
BSSendUnicodeChar(0x225A) ; EQUIANGULAR TO
|
||
else if (PriorDeadKey = "a6") ; ring drüber
|
||
BSSendUnicodeChar(0x2257) ; ring equal to
|
||
else
|
||
send `=
|
||
}
|
||
else if Ebene = 4
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x2079)
|
||
else if (PriorDeadKey = "c5") ; toter -
|
||
BSSendUnicodeChar(0x2089)
|
||
else
|
||
Send 9
|
||
}
|
||
else if Ebene = 5
|
||
SendUnicodeChar(0x03C6) ; phi
|
||
else if Ebene = 6
|
||
SendUnicodeChar(0x03A6) ; Phi
|
||
PriorDeadKey := "" CompKey := ""
|
||
return
|
||
|
||
neo_q:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
sendinput {blind}q
|
||
else if Ebene = 2
|
||
sendinput {blind}Q
|
||
else if Ebene = 3
|
||
send {&}
|
||
else if Ebene = 4
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x207A)
|
||
else if (PriorDeadKey = "c5") ; toter -
|
||
BSSendUnicodeChar(0x208A)
|
||
else
|
||
Send {+}
|
||
}
|
||
else if Ebene = 5
|
||
SendUnicodeChar(0x03D5) ; phi symbol (varphi)
|
||
else if Ebene = 6
|
||
SendUnicodeChar(0x211A) ; Q (rationale Zahlen)
|
||
PriorDeadKey := "" CompKey := ""
|
||
return
|
||
|
||
neo_sz:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
if GetKeyState("CapsLock","T")
|
||
{
|
||
SendUnicodeChar(0x1E9E) ; verssal-ß
|
||
}
|
||
else
|
||
{
|
||
if (LangSTastatur = 1)
|
||
{
|
||
sendinput {blind}s
|
||
}
|
||
else
|
||
{
|
||
send ß
|
||
}
|
||
}
|
||
else if Ebene = 2
|
||
if GetKeyState("CapsLock","T")
|
||
{
|
||
if (LangSTastatur = 1)
|
||
{
|
||
sendinput {blind}s
|
||
}
|
||
else
|
||
{
|
||
send ß
|
||
}
|
||
}
|
||
else
|
||
{
|
||
SendUnicodeChar(0x1E9E) ; versal-ß
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
if (LangSTastatur = 1)
|
||
send ß
|
||
else
|
||
SendUnicodeChar(0x017F) ; langes s
|
||
}
|
||
else if Ebene = 5
|
||
SendUnicodeChar(0x03C2) ; varsigma
|
||
else if Ebene = 6
|
||
SendUnicodeChar(0x2218) ; Verknüpfungsoperator
|
||
PriorDeadKey := "" CompKey := ""
|
||
return
|
||
|
||
|
||
neo_tot3:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
SendUnicodeChar(0x02DC) ; tilde, tot
|
||
PriorDeadKey := "t1"
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
SendUnicodeChar(0x00AF) ; macron, tot
|
||
PriorDeadKey := "t2"
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
SendUnicodeChar(0x00A8) ; diaerese
|
||
PriorDeadKey := "t3"
|
||
}
|
||
else if Ebene = 4
|
||
{
|
||
SendUnicodeChar(0x002F) ; Schrägstrich, tot
|
||
PriorDeadKey := "t4"
|
||
}
|
||
else if Ebene = 5
|
||
{
|
||
sendUnicodeChar(0x02DD) ;doppelakut
|
||
PriorDeadKey := "t5"
|
||
}
|
||
else if Ebene = 6
|
||
{
|
||
SendUnicodeChar(0x02CF) ; komma drunter, tot
|
||
PriorDeadKey := "t6"
|
||
}
|
||
return
|
||
|
||
|
||
/*
|
||
------------------------------------------------------
|
||
Reihe 3
|
||
------------------------------------------------------
|
||
*/
|
||
|
||
neo_u:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x00FB)
|
||
else if (PriorDeadKey = "a1") ; akut
|
||
BSSendUnicodeChar(0x00FA)
|
||
else if (PriorDeadKey = "a2") ; grave
|
||
BSSendUnicodeChar(0x00F9)
|
||
else if (PriorDeadKey = "t3") ; diaerese
|
||
Send, {bs}ü
|
||
else if (PriorDeadKey = "t5") ; doppelakut
|
||
BSSendUnicodeChar(0x0171)
|
||
else if (PriorDeadKey = "c3") ; brevis
|
||
BSSendUnicodeChar(0x016D)
|
||
else if (PriorDeadKey = "t2") ; macron
|
||
BSSendUnicodeChar(0x016B)
|
||
else if (PriorDeadKey = "a5") ; ogonek
|
||
BSSendUnicodeChar(0x0173)
|
||
else if (PriorDeadKey = "a6") ; Ring
|
||
BSSendUnicodeChar(0x016F)
|
||
else if (PriorDeadKey = "t1") ; tilde
|
||
BSSendUnicodeChar(0x0169)
|
||
else if (PriorDeadKey = "c2") ; caron
|
||
BSSendUnicodeChar(0x01D4)
|
||
else
|
||
sendinput {blind}u
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x00DB)
|
||
else if (PriorDeadKey = "a1") ; akut
|
||
BSSendUnicodeChar(0x00DA)
|
||
else if (PriorDeadKey = "a2") ; grave
|
||
BSSendUnicodeChar(0x00D9)
|
||
else if (PriorDeadKey = "t3") ; diaerese
|
||
Send, {bs}Ü
|
||
else if (PriorDeadKey = "a6") ; Ring
|
||
BSSendUnicodeChar(0x016E)
|
||
else if (PriorDeadKey = "c3") ; brevis
|
||
BSSendUnicodeChar(0x016C)
|
||
else if (PriorDeadKey = "t5") ; doppelakut
|
||
BSSendUnicodeChar(0x0170)
|
||
else if (PriorDeadKey = "c2") ; caron
|
||
BSSendUnicodeChar(0x01D3)
|
||
else if (PriorDeadKey = "t2") ; macron
|
||
BSSendUnicodeChar(0x016A)
|
||
else if (PriorDeadKey = "a5") ; ogonek
|
||
BSSendUnicodeChar(0x0172)
|
||
else if (PriorDeadKey = "t1") ; tilde
|
||
BSSendUnicodeChar(0x0168)
|
||
else
|
||
sendinput {blind}U
|
||
}
|
||
else if Ebene = 3
|
||
send \
|
||
else if Ebene = 4
|
||
Send {blind}{Home}
|
||
else if Ebene = 5
|
||
{ } ; leer
|
||
else if Ebene = 6
|
||
SendUnicodeChar(0x222E) ; contour integral
|
||
PriorDeadKey := "" CompKey := ""
|
||
return
|
||
|
||
neo_i:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x00EE)
|
||
else if (PriorDeadKey = "a1") ; akut
|
||
BSSendUnicodeChar(0x00ED)
|
||
else if (PriorDeadKey = "a2") ; grave
|
||
BSSendUnicodeChar(0x00EC)
|
||
else if (PriorDeadKey = "t3") ; diaerese
|
||
Send, {bs}ï
|
||
else if (PriorDeadKey = "t2") ; macron - defekt
|
||
BSSendUnicodeChar(0x012B)
|
||
else if (PriorDeadKey = "c3") ; brevis
|
||
BSSendUnicodeChar(0x012D)
|
||
else if (PriorDeadKey = "a4") ; ogonek
|
||
BSSendUnicodeChar(0x012F)
|
||
else if (PriorDeadKey = "t1") ; tilde
|
||
BSSendUnicodeChar(0x0129)
|
||
else if (PriorDeadKey = "a5") ; punkt darüber
|
||
BSSendUnicodeChar(0x0131)
|
||
else if (PriorDeadKey = "c2") ; caron
|
||
BSSendUnicodeChar(0x01D0)
|
||
else
|
||
sendinput {blind}i
|
||
if (PriorDeadKey = "comp") ; compose
|
||
CompKey := "i_small"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x00CE)
|
||
else if (PriorDeadKey = "a1") ; akut
|
||
BSSendUnicodeChar(0x00CD)
|
||
else if (PriorDeadKey = "a2") ; grave
|
||
BSSendUnicodeChar(0x00CC)
|
||
else if (PriorDeadKey = "t3") ; diaerese
|
||
Send, {bs}Ï
|
||
else if (PriorDeadKey = "t2") ; macron
|
||
BSSendUnicodeChar(0x012A)
|
||
else if (PriorDeadKey = "c3") ; brevis
|
||
BSSendUnicodeChar(0x012C)
|
||
else if (PriorDeadKey = "a5") ; ogonek
|
||
BSSendUnicodeChar(0x012E)
|
||
else if (PriorDeadKey = "t1") ; tilde
|
||
BSSendUnicodeChar(0x0128)
|
||
else if (PriorDeadKey = "a4") ; punkt darüber
|
||
BSSendUnicodeChar(0x0130)
|
||
else if (PriorDeadKey = "c2") ; caron
|
||
BSSendUnicodeChar(0x01CF)
|
||
else
|
||
sendinput {blind}I
|
||
if (PriorDeadKey = "comp") ; compose
|
||
CompKey := "i_capital"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
send `/
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 4
|
||
{
|
||
Sendinput {Blind}{Left}
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 5
|
||
{
|
||
SendUnicodeChar(0x03B9) ; iota
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 6
|
||
{
|
||
SendUnicodeChar(0x222B) ; integral
|
||
CompKey := ""
|
||
}
|
||
PriorDeadKey := ""
|
||
return
|
||
|
||
neo_a:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x00E2)
|
||
else if (PriorDeadKey = "a1") ; akut
|
||
BSSendUnicodeChar(0x00E1)
|
||
else if (PriorDeadKey = "a2") ; grave
|
||
BSSendUnicodeChar(0x00E0)
|
||
else if (PriorDeadKey = "t3") ; diaerese
|
||
send {bs}ä
|
||
else if (PriorDeadKey = "a6") ; Ring
|
||
Send {bs}å
|
||
else if (PriorDeadKey = "t1") ; tilde
|
||
BSSendUnicodeChar(0x00E3)
|
||
else if (PriorDeadKey = "a5") ; ogonek
|
||
BSSendUnicodeChar(0x0105)
|
||
else if (PriorDeadKey = "t2") ; macron
|
||
BSSendUnicodeChar(0x0101)
|
||
else if (PriorDeadKey = "c3") ; brevis
|
||
BSSendUnicodeChar(0x0103)
|
||
else if (PriorDeadKey = "c2") ; caron
|
||
BSSendUnicodeChar(0x01CE)
|
||
else
|
||
sendinput {blind}a
|
||
if (PriorDeadKey = "comp") ; compose
|
||
CompKey := "a_small"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x00C2)
|
||
else if (PriorDeadKey = "a1") ; akut
|
||
BSSendUnicodeChar(0x00C1)
|
||
else if (PriorDeadKey = "a2") ; grave
|
||
BSSendUnicodeChar(0x00C0)
|
||
else if (PriorDeadKey = "t3") ; diaerese
|
||
send {bs}Ä
|
||
else if (PriorDeadKey = "t1") ; tilde
|
||
BSSendUnicodeChar(0x00C3)
|
||
else if (PriorDeadKey = "a6") ; Ring
|
||
Send {bs}Å
|
||
else if (PriorDeadKey = "t2") ; macron
|
||
BSSendUnicodeChar(0x0100)
|
||
else if (PriorDeadKey = "c3") ; brevis
|
||
BSSendUnicodeChar(0x0102)
|
||
else if (PriorDeadKey = "a5") ; ogonek
|
||
BSSendUnicodeChar(0x0104)
|
||
else if (PriorDeadKey = "c2") ; caron
|
||
BSSendUnicodeChar(0x01CD)
|
||
else
|
||
sendinput {blind}A
|
||
if (PriorDeadKey = "comp") ; compose
|
||
CompKey := "a_capital"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
sendraw {
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 4
|
||
{
|
||
Sendinput {Blind}{Down}
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 5
|
||
{
|
||
SendUnicodeChar(0x03B1) ;alpha
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 6
|
||
{
|
||
SendUnicodeChar(0x2200) ;fuer alle
|
||
CompKey := ""
|
||
}
|
||
PriorDeadKey := ""
|
||
return
|
||
|
||
neo_e:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x00EA)
|
||
else if (PriorDeadKey = "a1") ; akut
|
||
BSSendUnicodeChar(0x00E9)
|
||
else if (PriorDeadKey = "a2") ; grave
|
||
BSSendUnicodeChar(0x00E8)
|
||
else if (PriorDeadKey = "t3") ; diaerese
|
||
Send, {bs}ë
|
||
else if (PriorDeadKey = "a5") ; ogonek
|
||
BSSendUnicodeChar(0x0119)
|
||
else if (PriorDeadKey = "t2") ; macron
|
||
BSSendUnicodeChar(0x0113)
|
||
else if (PriorDeadKey = "c3") ; brevis - defekt
|
||
BSSendUnicodeChar(0x0115)
|
||
else if (PriorDeadKey = "c2") ; caron - defekt
|
||
BSSendUnicodeChar(0x011B)
|
||
else if (PriorDeadKey = "a4") ; punkt darüber
|
||
BSSendUnicodeChar(0x0117)
|
||
else if (CompKey = "a_small") ; compose
|
||
{
|
||
Send {bs}æ
|
||
CompKey := ""
|
||
}
|
||
else if (CompKey = "o_small") ; compose
|
||
{
|
||
Send {bs}œ
|
||
CompKey := ""
|
||
}
|
||
else
|
||
sendinput {blind}e
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x00CA)
|
||
else if (PriorDeadKey = "a1") ; akut
|
||
BSSendUnicodeChar(0x00C9)
|
||
else if (PriorDeadKey = "a2") ; grave
|
||
BSSendUnicodeChar(0x00C8)
|
||
else if (PriorDeadKey = "t3") ; diaerese
|
||
Send, {bs}Ë
|
||
else if (PriorDeadKey = "c2") ; caron
|
||
BSSendUnicodeChar(0x011A)
|
||
else if (PriorDeadKey = "t2") ; macron
|
||
BSSendUnicodeChar(0x0112)
|
||
else if (PriorDeadKey = "c3") ; brevis
|
||
BSSendUnicodeChar(0x0114)
|
||
else if (PriorDeadKey = "a5") ; ogonek
|
||
BSSendUnicodeChar(0x0118)
|
||
else if (PriorDeadKey = "a4") ; punkt darüber
|
||
BSSendUnicodeChar(0x0116)
|
||
else if (CompKey = "a_capital") ; compose
|
||
{
|
||
Send {bs}Æ
|
||
CompKey := ""
|
||
}
|
||
else if (CompKey = "o_capital") ; compose
|
||
{
|
||
Send {bs}Œ
|
||
CompKey := ""
|
||
}
|
||
else
|
||
sendinput {blind}E
|
||
}
|
||
else if Ebene = 3
|
||
sendraw }
|
||
else if Ebene = 4
|
||
Sendinput {Blind}{Right}
|
||
else if Ebene = 5
|
||
SendUnicodeChar(0x03B5) ;epsilon
|
||
else if Ebene = 6
|
||
SendUnicodeChar(0x2203) ;es existiert
|
||
PriorDeadKey := "" CompKey := ""
|
||
return
|
||
|
||
neo_o:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x00F4)
|
||
else if (PriorDeadKey = "a1") ; akut
|
||
BSSendUnicodeChar(0x00F3)
|
||
else if (PriorDeadKey = "a2") ; grave
|
||
BSSendUnicodeChar(0x00F2)
|
||
else if (PriorDeadKey = "t3") ; diaerese
|
||
Send, {bs}ö
|
||
else if (PriorDeadKey = "t1") ; tilde
|
||
BSSendUnicodeChar(0x00F5)
|
||
else if (PriorDeadKey = "t5") ; doppelakut
|
||
BSSendUnicodeChar(0x0151)
|
||
else if (PriorDeadKey = "t4") ; Schrägstrich
|
||
BSSendUnicodeChar(0x00F8)
|
||
else if (PriorDeadKey = "t2") ; macron
|
||
BSSendUnicodeChar(0x014D)
|
||
else if (PriorDeadKey = "c3") ; brevis
|
||
BSSendUnicodeChar(0x014F)
|
||
else if (PriorDeadKey = "a5") ; ogonek
|
||
BSSendUnicodeChar(0x01EB)
|
||
else if (PriorDeadKey = "c2") ; caron
|
||
BSSendUnicodeChar(0x01D2)
|
||
else
|
||
sendinput {blind}o
|
||
if (PriorDeadKey = "comp") ; compose
|
||
CompKey := "o_small"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x00D4)
|
||
else if (PriorDeadKey = "a1") ; akut
|
||
BSSendUnicodeChar(0x00D3)
|
||
else if (PriorDeadKey = "a2") ; grave
|
||
BSSendUnicodeChar(0x00D2)
|
||
else if (PriorDeadKey = "t4") ; Schrägstrich
|
||
BSSendUnicodeChar(0x00D8)
|
||
else if (PriorDeadKey = "t1") ; tilde
|
||
BSSendUnicodeChar(0x00D5)
|
||
else if (PriorDeadKey = "t5") ; doppelakut
|
||
BSSendUnicodeChar(0x0150)
|
||
else if (PriorDeadKey = "t3") ; diaerese
|
||
send {bs}Ö
|
||
else if (PriorDeadKey = "t2") ; macron
|
||
BSSendUnicodeChar(0x014C)
|
||
else if (PriorDeadKey = "c3") ; brevis
|
||
BSSendUnicodeChar(0x014E)
|
||
else if (PriorDeadKey = "a5") ; ogonek
|
||
BSSendUnicodeChar(0x01EA)
|
||
else if (PriorDeadKey = "c2") ; caron
|
||
BSSendUnicodeChar(0x01D1)
|
||
else
|
||
sendinput {blind}O
|
||
if (PriorDeadKey = "comp") ; compose
|
||
CompKey := "o_capital"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
send *
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 4
|
||
{
|
||
Send {blind}{End}
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 5
|
||
{
|
||
SendUnicodeChar(0x03BF) ; omicron
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 6
|
||
{
|
||
SendUnicodeChar(0x2208) ; element of
|
||
CompKey := ""
|
||
}
|
||
PriorDeadKey := ""
|
||
return
|
||
|
||
neo_s:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x015D)
|
||
else if (PriorDeadKey = "a1") ; akut
|
||
BSSendUnicodeChar(0x015B)
|
||
else if (PriorDeadKey = "c2") ; caron
|
||
BSSendUnicodeChar(0x0161)
|
||
else if (PriorDeadKey = "a3") ; cedilla
|
||
BSSendUnicodeChar(0x015F)
|
||
else if (PriorDeadKey = "a4") ; punkt darüber
|
||
BSSendUnicodeChar(0x1E61)
|
||
else if (PriorDeadKey = "c6") ; punkt darunter
|
||
BSSendUnicodeChar(0x1E63)
|
||
else
|
||
{
|
||
if (LangSTastatur = 1)
|
||
{
|
||
if GetKeyState("CapsLock","T")
|
||
sendinput {blind}s
|
||
else
|
||
SendUnicodeChar(0x017F) ; langes s
|
||
}
|
||
else
|
||
sendinput {blind}s
|
||
}
|
||
if (PriorDeadKey = "comp")
|
||
CompKey := "s_small"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x015C)
|
||
else if (PriorDeadKey = "c2") ; caron
|
||
BSSendUnicodeChar(0x0160)
|
||
else if (PriorDeadKey = "a1") ; akut
|
||
BSSendUnicodeChar(0x015A)
|
||
else if (PriorDeadKey = "a3") ; cedilla
|
||
BSSendUnicodeChar(0x015E)
|
||
else if (PriorDeadKey = "a4") ; punkt darüber
|
||
BSSendUnicodeChar(0x1E60)
|
||
else if (PriorDeadKey = "c6") ; punkt darunter
|
||
BSSendUnicodeChar(0x1E62)
|
||
else
|
||
{
|
||
if GetKeyState("CapsLock","T") && (LangSTastatur = 1)
|
||
SendUnicodeChar(0x017F)
|
||
else
|
||
sendinput {blind}S
|
||
}
|
||
if (PriorDeadKey = "comp")
|
||
CompKey := "s_capital"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
send ?
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 4
|
||
{
|
||
Send ¿
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 5
|
||
{
|
||
SendUnicodeChar(0x03C3) ;sigma
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 6
|
||
{
|
||
SendUnicodeChar(0x03A3) ; Sigma
|
||
CompKey := ""
|
||
}
|
||
PriorDeadKey := ""
|
||
return
|
||
|
||
neo_n:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (PriorDeadKey = "a1") ; akut
|
||
BSSendUnicodeChar(0x0144)
|
||
else if (PriorDeadKey = "t1") ; tilde
|
||
BSSendUnicodeChar(0x00F1)
|
||
else if (PriorDeadKey = "c2") ; caron
|
||
BSSendUnicodeChar(0x0148)
|
||
else if (PriorDeadKey = "a3") ; cedilla
|
||
BSSendUnicodeChar(0x0146)
|
||
else if (PriorDeadKey = "a4") ; punkt darüber
|
||
BSSendUnicodeChar(0x1E45)
|
||
else
|
||
sendinput {blind}n
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
if (PriorDeadKey = "c2") ; caron
|
||
BSSendUnicodeChar(0x0147)
|
||
else if (PriorDeadKey = "t1") ; tilde
|
||
BSSendUnicodeChar(0x00D1)
|
||
else if (PriorDeadKey = "a1") ; akut
|
||
BSSendUnicodeChar(0x0143)
|
||
else if (PriorDeadKey = "a3") ; cedilla
|
||
BSSendUnicodeChar(0x0145)
|
||
else if (PriorDeadKey = "a4") ; punkt darüber
|
||
BSSendUnicodeChar(0x1E44)
|
||
else
|
||
sendinput {blind}N
|
||
}
|
||
else if Ebene = 3
|
||
send (
|
||
else if Ebene = 4
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x2074)
|
||
else if (PriorDeadKey = "c5") ; toter -
|
||
BSSendUnicodeChar(0x2084)
|
||
else
|
||
Send 4
|
||
}
|
||
else if Ebene = 5
|
||
SendUnicodeChar(0x03BD) ; nu
|
||
else if Ebene = 6
|
||
SendUnicodeChar(0x2115) ; N (natürliche Zahlen)
|
||
PriorDeadKey := "" CompKey := ""
|
||
return
|
||
|
||
neo_r:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (PriorDeadKey = "a1") ; akut
|
||
BSSendUnicodeChar(0x0155)
|
||
else if (PriorDeadKey = "c2") ; caron
|
||
BSSendUnicodeChar(0x0159)
|
||
else if (PriorDeadKey = "a3") ; cedilla
|
||
BSSendUnicodeChar(0x0157)
|
||
else if (PriorDeadKey = "a4") ; punkt darüber
|
||
BSSendUnicodeChar(0x0E59)
|
||
else if (PriorDeadKey = "c6") ; punkt darunter
|
||
BSSendUnicodeChar(0x1E5B)
|
||
else
|
||
sendinput {blind}r
|
||
if (PriorDeadKey = "comp")
|
||
CompKey := "r_small"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
if (PriorDeadKey = "c2") ; caron
|
||
BSSendUnicodeChar(0x0158)
|
||
else if (PriorDeadKey = "a1") ; akut
|
||
BSSendUnicodeChar(0x0154)
|
||
else if (PriorDeadKey = "a3") ; cedilla
|
||
BSSendUnicodeChar(0x0156)
|
||
else if (PriorDeadKey = "a4") ; punkt darüber
|
||
BSSendUnicodeChar(0x1E58)
|
||
else if (PriorDeadKey = "c6") ; punkt darunter
|
||
BSSendUnicodeChar(0x1E5A)
|
||
else
|
||
sendinput {blind}R
|
||
if (PriorDeadKey = "comp")
|
||
CompKey := "r_capital"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
send )
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 4
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x2075)
|
||
else if (PriorDeadKey = "c5") ; toter -
|
||
BSSendUnicodeChar(0x2085)
|
||
else
|
||
Send 5
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 5
|
||
{
|
||
SendUnicodeChar(0x03F1) ; rho symbol (varrho)
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 6
|
||
{
|
||
SendUnicodeChar(0x211D) ; R (reelle Zahlen)
|
||
CompKey := ""
|
||
}
|
||
PriorDeadKey := ""
|
||
return
|
||
|
||
neo_t:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (PriorDeadKey = "c2") ; caron
|
||
BSSendUnicodeChar(0x0165)
|
||
else if (PriorDeadKey = "a3") ; cedilla
|
||
BSSendUnicodeChar(0x0163)
|
||
else if (PriorDeadKey = "c5") ; Querstrich
|
||
BSSendUnicodeChar(0x0167)
|
||
else if (PriorDeadKey = "a4") ; punkt darüber
|
||
BSSendUnicodeChar(0x1E6B)
|
||
else if (PriorDeadKey = "c6") ; punkt darunter
|
||
BSSendUnicodeChar(0x1E6D)
|
||
else
|
||
sendinput {blind}t
|
||
if (PriorDeadKey = "comp")
|
||
CompKey := "t_small"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
if (PriorDeadKey = "c2") ; caron
|
||
BSSendUnicodeChar(0x0164)
|
||
else if (PriorDeadKey = "a3") ; cedilla
|
||
BSSendUnicodeChar(0x0162)
|
||
else if (PriorDeadKey = "c5") ; Querstrich
|
||
BSSendUnicodeChar(0x0166)
|
||
else if (PriorDeadKey = "a4") ; punkt darüber
|
||
BSSendUnicodeChar(0x1E6A)
|
||
else if (PriorDeadKey = "c6") ; punkt darunter
|
||
BSSendUnicodeChar(0x1E6C)
|
||
else
|
||
sendinput {blind}T
|
||
if (PriorDeadKey = "comp")
|
||
CompKey := "t_capital"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
send {blind}- ; Bis
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 4
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x2076)
|
||
else if (PriorDeadKey = "c5") ; toter -
|
||
BSSendUnicodeChar(0x2086)
|
||
else
|
||
Send 6
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 5
|
||
{
|
||
SendUnicodeChar(0x03C4) ; tau
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 6
|
||
{
|
||
SendUnicodeChar(0x2202 ) ; partielle Ableitung
|
||
CompKey := ""
|
||
}
|
||
PriorDeadKey := ""
|
||
return
|
||
|
||
neo_d:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (PriorDeadKey = "c5") ; Querstrich
|
||
BSSendUnicodeChar(0x0111)
|
||
else if (PriorDeadKey = "t4") ; Schrägstrich
|
||
BSSendUnicodeChar(0x00F0)
|
||
else if (PriorDeadKey = "c2") ; caron
|
||
BSSendUnicodeChar(0x010F)
|
||
else if (PriorDeadKey = "a4") ; punkt darüber
|
||
BSSendUnicodeChar(0x1E0B)
|
||
else if (PriorDeadKey = "c6") ; punkt darunter
|
||
BSSendUnicodeChar(0x1E0D)
|
||
else
|
||
sendinput {blind}d
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
if (PriorDeadKey = "c5") ; Querstrich
|
||
BSSendUnicodeChar(0x0110)
|
||
else if (PriorDeadKey = "t4") ; Schrägstrich
|
||
BSSendUnicodeChar(0x00D0)
|
||
else if (PriorDeadKey = "c2") ; caron
|
||
BSSendUnicodeChar(0x010E)
|
||
else if (PriorDeadKey = "a4") ; punkt darüber
|
||
BSSendUnicodeChar(0x1E0A)
|
||
else if (PriorDeadKey = "c6") ; punkt darunter
|
||
BSSendUnicodeChar(0x1E0D)
|
||
else sendinput {blind}D
|
||
}
|
||
else if Ebene = 3
|
||
send :
|
||
else if Ebene = 4
|
||
Send `,
|
||
else if Ebene = 5
|
||
SendUnicodeChar(0x03B4) ;delta
|
||
else if Ebene = 6
|
||
SendUnicodeChar(0x0394) ; Delta
|
||
PriorDeadKey := "" CompKey := ""
|
||
return
|
||
|
||
neo_y:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (PriorDeadKey = "t3") ; diaerese
|
||
Send {bs}ÿ
|
||
else if (PriorDeadKey = "a1") ; akut
|
||
BSSendUnicodeChar(0x00FD)
|
||
else if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x0177)
|
||
else
|
||
sendinput {blind}y
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
if (PriorDeadKey = "a1") ; akut
|
||
BSSendUnicodeChar(0x00DD)
|
||
else if (PriorDeadKey = "t3") ; diaerese
|
||
Send {bs}Ÿ
|
||
else if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x0176)
|
||
else
|
||
sendinput {blind}Y
|
||
}
|
||
else if Ebene = 3
|
||
send @
|
||
else if Ebene = 4
|
||
Send .
|
||
else if Ebene = 5
|
||
SendUnicodeChar(0x03C5) ; upsilon
|
||
else if Ebene = 6
|
||
SendUnicodeChar(0x2207) ; nabla
|
||
PriorDeadKey := "" CompKey := ""
|
||
return
|
||
|
||
;SC02B (#) wird zu Mod3
|
||
|
||
|
||
/*
|
||
------------------------------------------------------
|
||
Reihe 4
|
||
------------------------------------------------------
|
||
*/
|
||
|
||
;SC056 (<) wird zu Mod4
|
||
|
||
neo_ü:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (PriorDeadKey = "t2") ; macron
|
||
BSSendUnicodeChar(0x01D6)
|
||
else if (PriorDeadKey = "a1") ; akut
|
||
BSSendUnicodeChar(0x01D8)
|
||
else if (PriorDeadKey = "a2") ; grave
|
||
BSSendUnicodeChar(0x01DC)
|
||
else if (PriorDeadKey = "c2") ; caron
|
||
BSSendUnicodeChar(0x01DA)
|
||
else
|
||
sendinput {blind}ü
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
if (PriorDeadKey = "t2") ; macron
|
||
BSSendUnicodeChar(0x01D5)
|
||
else if (PriorDeadKey = "a1") ; akut
|
||
BSSendUnicodeChar(0x01D7)
|
||
else if (PriorDeadKey = "a2") ; grave
|
||
BSSendUnicodeChar(0x01DB)
|
||
else if (PriorDeadKey = "c2") ; caron
|
||
BSSendUnicodeChar(0x01D9)
|
||
else
|
||
sendinput {blind}Ü
|
||
}
|
||
else if Ebene = 3
|
||
send {blind}{#}
|
||
else if Ebene = 4
|
||
Send {Esc}
|
||
else if Ebene = 5
|
||
{} ; leer
|
||
else if Ebene = 6
|
||
SendUnicodeChar(0x221D) ; proportional
|
||
|
||
PriorDeadKey := "" CompKey := ""
|
||
return
|
||
|
||
neo_ö:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (PriorDeadKey = "t2") ; macron
|
||
BSSendUnicodeChar(0x022B)
|
||
else
|
||
sendinput {blind}ö
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
if (PriorDeadKey = "t2") ; macron
|
||
BSSendUnicodeChar(0x022A)
|
||
else
|
||
sendinput {blind}Ö
|
||
}
|
||
else if Ebene = 3
|
||
send $
|
||
else if Ebene = 4
|
||
goto neo_tab
|
||
else if Ebene = 5
|
||
{} ;leer
|
||
else if Ebene = 6
|
||
SendUnicodeChar(0x2111) ; Fraktur I
|
||
PriorDeadKey := "" CompKey := ""
|
||
return
|
||
|
||
neo_ä:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (PriorDeadKey = "t2") ; macron
|
||
BSSendUnicodeChar(0x01DF)
|
||
else
|
||
sendinput {blind}ä
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
if (PriorDeadKey = "t2") ; macron
|
||
BSSendUnicodeChar(0x001DE)
|
||
else
|
||
sendinput {blind}Ä
|
||
}
|
||
else if Ebene = 3
|
||
send |
|
||
else if Ebene = 4
|
||
Send {PgDn} ; Next
|
||
else if Ebene = 5
|
||
SendUnicodeChar(0x03B7) ; eta
|
||
else if Ebene = 6
|
||
SendUnicodeChar(0x211C) ; altes R
|
||
PriorDeadKey := "" CompKey := ""
|
||
return
|
||
|
||
neo_p:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (PriorDeadKey = "a4") ; punkt darüber
|
||
BSSendUnicodeChar(0x1E57)
|
||
else
|
||
sendinput {blind}p
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
if (PriorDeadKey = "a4") ; punkt darüber
|
||
BSSendUnicodeChar(0x1E56)
|
||
else
|
||
sendinput {blind}P
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
if (PriorDeadKey = "t1") ; tilde
|
||
BSSendUnicodeChar(0x2248)
|
||
else
|
||
sendraw ~
|
||
}
|
||
else if Ebene = 4
|
||
Send {Enter}
|
||
else if Ebene = 5
|
||
SendUnicodeChar(0x03C0) ;pi
|
||
else if Ebene = 6
|
||
SendUnicodeChar(0x03A0) ; Pi
|
||
PriorDeadKey := "" CompKey := ""
|
||
return
|
||
|
||
neo_z:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (PriorDeadKey = "c2") ; caron
|
||
BSSendUnicodeChar(0x017E)
|
||
else if (PriorDeadKey = "a1") ; akut
|
||
BSSendUnicodeChar(0x017A)
|
||
else if (PriorDeadKey = "a4") ; punkt drüber
|
||
BSSendUnicodeChar(0x017C)
|
||
else if (PriorDeadKey = "c6") ; punkt drunter
|
||
BSSendUnicodeChar(0x1E93)
|
||
else
|
||
sendinput {blind}z
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
if (PriorDeadKey = "c2") ; caron
|
||
BSSendUnicodeChar(0x017D)
|
||
else if (PriorDeadKey = "a1") ; akut
|
||
BSSendUnicodeChar(0x0179)
|
||
else if (PriorDeadKey = "a4") ; punkt darüber
|
||
BSSendUnicodeChar(0x017B)
|
||
else if (PriorDeadKey = "c6") ; punkt drunter
|
||
BSSendUnicodeChar(0x1E92)
|
||
else
|
||
sendinput {blind}Z
|
||
}
|
||
else if Ebene = 3
|
||
send ``{space} ; untot
|
||
else if Ebene = 4
|
||
{} ; leer
|
||
else if Ebene = 5
|
||
SendUnicodeChar(0x03B6) ;zeta
|
||
else if Ebene = 6
|
||
SendUnicodeChar(0x2124) ; Z (ganze Zahlen)
|
||
PriorDeadKey := "" CompKey := ""
|
||
return
|
||
|
||
neo_b:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (PriorDeadKey = "a4") ; punkt darüber
|
||
BSSendUnicodeChar(0x1E03)
|
||
else
|
||
sendinput {blind}b
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
if (PriorDeadKey = "a4") ; punkt darüber
|
||
BSSendUnicodeChar(0x1E02)
|
||
else
|
||
sendinput {blind}B
|
||
}
|
||
else if Ebene = 3
|
||
send {blind}{+}
|
||
else if Ebene = 4
|
||
send :
|
||
else if Ebene = 5
|
||
SendUnicodeChar(0x03B2) ; beta
|
||
else if Ebene = 6
|
||
SendUnicodeChar(0x21D2) ; Doppel-Pfeil rechts
|
||
PriorDeadKey := "" CompKey := ""
|
||
return
|
||
|
||
neo_m:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (PriorDeadKey = "a4") ; punkt darüber
|
||
BSSendUnicodeChar(0x1E41)
|
||
else if (PriorDeadKey = "c6") ; punkt darunter
|
||
BSSendUnicodeChar(0x1E43)
|
||
else if ( (CompKey = "t_small") or (CompKey = "t_capital") ) ; compose
|
||
CompUnicodeChar(0x2122) ; TM
|
||
else if ( (CompKey = "s_small") or (CompKey = "s_capital") ) ; compose
|
||
CompUnicodeChar(0x2120) ; SM
|
||
else
|
||
sendinput {blind}m
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
if (PriorDeadKey = "a4") ; punkt darüber
|
||
BSSendUnicodeChar(0x1E40)
|
||
else if (PriorDeadKey = "c6") ; punkt darunter
|
||
BSSendUnicodeChar(0x1E42)
|
||
else if ( (CompKey = "t_capital") or (CompKey = "t_small") ) ; compose
|
||
CompUnicodeChar(0x2122) ; TM
|
||
else if ( (CompKey = "s_capital") or (CompKey = "s_small") ) ; compose
|
||
CompUnicodeChar(0x2120) ; SM
|
||
else
|
||
sendinput {blind}M
|
||
}
|
||
else if Ebene = 3
|
||
send `%
|
||
else if Ebene = 4
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x00B9)
|
||
else if (PriorDeadKey = "c5") ; toter -
|
||
BSSendUnicodeChar(0x2081)
|
||
else
|
||
Send 1
|
||
}
|
||
else if Ebene = 5
|
||
SendUnicodeChar(0x03BC) ; griechisch mu, micro wäre 0x00B5
|
||
else if Ebene = 6
|
||
SendUnicodeChar(0x21D4) ; doppelter Doppelpfeil (genau dann wenn)
|
||
PriorDeadKey := "" CompKey := ""
|
||
return
|
||
|
||
neo_komma:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if GetKeyState("CapsLock","T")
|
||
{
|
||
if (IsModifierPressed())
|
||
{
|
||
send {blind},
|
||
}
|
||
else
|
||
{
|
||
send `,
|
||
}
|
||
|
||
}
|
||
else
|
||
{
|
||
send {blind},
|
||
}
|
||
}
|
||
else if Ebene = 2
|
||
SendUnicodeChar(0x22EE) ; vertikale ellipse
|
||
else if Ebene = 3
|
||
send "
|
||
else if Ebene = 4
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x00B2)
|
||
else if (PriorDeadKey = "c5") ; toter -
|
||
BSSendUnicodeChar(0x2082)
|
||
else
|
||
Send 2
|
||
}
|
||
else if Ebene = 5
|
||
SendUnicodeChar(0x03C1) ; rho
|
||
else if Ebene = 6
|
||
SendUnicodeChar(0x21D0) ; Doppelpfeil links
|
||
PriorDeadKey := "" CompKey := ""
|
||
return
|
||
|
||
neo_punkt:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if GetKeyState("CapsLock","T")
|
||
{
|
||
if (IsModifierPressed())
|
||
{
|
||
send {blind}.
|
||
}
|
||
else
|
||
{
|
||
send .
|
||
}
|
||
|
||
}
|
||
else {
|
||
send {blind}.
|
||
}
|
||
}
|
||
else if Ebene = 2
|
||
SendUnicodeChar(0x2026) ; ellipse
|
||
else if Ebene = 3
|
||
send '
|
||
else if Ebene = 4
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x00B3)
|
||
else if (PriorDeadKey = "c5") ; toter -
|
||
BSSendUnicodeChar(0x2083)
|
||
else
|
||
Send 3
|
||
}
|
||
else if Ebene = 5
|
||
SendUnicodeChar(0x03D1) ; theta symbol (vartheta)
|
||
else if Ebene = 6
|
||
SendUnicodeChar(0x0398) ; Theta
|
||
PriorDeadKey := "" CompKey := ""
|
||
return
|
||
|
||
|
||
neo_j:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x0135)
|
||
else if (PriorDeadKey = "c2") ; caron
|
||
BSSendUnicodeChar(0x01F0)
|
||
else if (CompKey = "i_small") ; compose
|
||
CompUnicodeChar(0x0133) ; ij
|
||
else if (CompKey = "l_small") ; compose
|
||
CompUnicodeChar(0x01C9) ; lj
|
||
else if (CompKey = "l_capital") ; compose
|
||
CompUnicodeChar(0x01C8) ; Lj
|
||
else
|
||
sendinput {blind}j
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x0134)
|
||
else if (CompKey = "i_capital") ; compose
|
||
CompUnicodeChar(0x0132) ; IJ
|
||
else if (CompKey = "l_capital") ; compose
|
||
CompUnicodeChar(0x01C7) ; LJ
|
||
else
|
||
sendinput {blind}J
|
||
}
|
||
else if Ebene = 3
|
||
send `;
|
||
else if Ebene = 4
|
||
Send `;
|
||
else if Ebene = 5
|
||
SendUnicodeChar(0x03B8) ; theta
|
||
else if Ebene = 6
|
||
SendUnicodeChar(0x2261) ; identisch
|
||
PriorDeadKey := "" CompKey := ""
|
||
return
|
||
|
||
/*
|
||
------------------------------------------------------
|
||
Numpad
|
||
------------------------------------------------------
|
||
|
||
folgende Tasten verhalten sich bei ein- und ausgeschaltetem
|
||
NumLock gleich:
|
||
*/
|
||
|
||
neo_NumpadDiv:
|
||
EbeneAktualisieren()
|
||
if ( (Ebene = 1) or (Ebene = 2) )
|
||
send {NumpadDiv}
|
||
else if Ebene = 3
|
||
send ÷
|
||
else if ( (Ebene = 4) or (Ebene = 5) )
|
||
SendUnicodeChar(0x2215) ; slash
|
||
PriorDeadKey := "" CompKey := ""
|
||
return
|
||
|
||
neo_NumpadMult:
|
||
EbeneAktualisieren()
|
||
if ( (Ebene = 1) or (Ebene = 2) )
|
||
send {NumpadMult}
|
||
else if Ebene = 3
|
||
send ×
|
||
else if ( (Ebene = 4) or (Ebene = 5) )
|
||
SendUnicodeChar(0x22C5) ; cdot
|
||
PriorDeadKey := "" CompKey := ""
|
||
return
|
||
|
||
neo_NumpadSub:
|
||
EbeneAktualisieren()
|
||
if ( (Ebene = 1) or (Ebene = 2) )
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x207B)
|
||
else if (PriorDeadKey = "c5") ; toter -
|
||
BSSendUnicodeChar(0x208B)
|
||
else
|
||
send {blind}{NumpadSub}
|
||
}
|
||
else if Ebene = 3
|
||
SendUnicodeChar(0x2212) ; echtes minus
|
||
PriorDeadKey := "" CompKey := ""
|
||
return
|
||
|
||
neo_NumpadAdd:
|
||
EbeneAktualisieren()
|
||
if ( (Ebene = 1) or (Ebene = 2) )
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x207A)
|
||
else if (PriorDeadKey = "c5") ; toter -
|
||
BSSendUnicodeChar(0x208A)
|
||
else
|
||
send {blind}{NumpadAdd}
|
||
}
|
||
else if Ebene = 3
|
||
send ±
|
||
else if ( (Ebene = 4) or (Ebene = 5) )
|
||
SendUnicodeChar(0x2213) ; -+
|
||
PriorDeadKey := "" CompKey := ""
|
||
return
|
||
|
||
neo_NumpadEnter:
|
||
EbeneAktualisieren()
|
||
if ( (Ebene = 1) or (Ebene = 2) )
|
||
send {NumpadEnter}
|
||
else if Ebene = 3
|
||
SendUnicodeChar(0x2260) ; neq
|
||
else if ( (Ebene = 4) or (Ebene = 5) )
|
||
SendUnicodeChar(0x2248) ; approx
|
||
PriorDeadKey := "" CompKey := ""
|
||
return
|
||
|
||
/*
|
||
folgende Tasten verhalten sich bei ein- und ausgeschaltetem NumLock
|
||
unterschiedlich:
|
||
|
||
bei NumLock ein
|
||
*/
|
||
|
||
|
||
|
||
neo_Numpad7:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
send {blind}{Numpad7}
|
||
if (PriorDeadKey = "comp")
|
||
CompKey := "Num_7"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
send {NumpadHome}
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
SendUnicodeChar(0x2195) ; Hoch-Runter-Pfeil
|
||
CompKey := ""
|
||
}
|
||
else if ( (Ebene = 4) or (Ebene = 5) )
|
||
{
|
||
SendUnicodeChar(0x226A) ; ll
|
||
CompKey := ""
|
||
}
|
||
PriorDeadKey := ""
|
||
return
|
||
|
||
neo_Numpad8:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (CompKey = "Num_1")
|
||
CompUnicodeChar(0x215B) ; 1/8
|
||
else if (CompKey = "Num_3")
|
||
CompUnicodeChar(0x215C) ; 3/8
|
||
else if (CompKey = "Num_5")
|
||
CompUnicodeChar(0x215D) ; 5/8
|
||
else if (CompKey = "Num_7")
|
||
CompUnicodeChar(0x215E) ; 7/8
|
||
else
|
||
send {blind}{Numpad8}
|
||
if (PriorDeadKey = "comp")
|
||
CompKey := "Num_8"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
send {NumpadUp}
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
SendUnicodeChar(0x2191) ; uparrow
|
||
CompKey := ""
|
||
}
|
||
else if ( (Ebene = 4) or (Ebene = 5) )
|
||
{
|
||
SendUnicodeChar(0x2229) ; intersection
|
||
CompKey := ""
|
||
}
|
||
PriorDeadKey := "" CompKey := ""
|
||
return
|
||
|
||
neo_Numpad9:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
send {blind}{Numpad9}
|
||
if (PriorDeadKey = "comp")
|
||
CompKey := "Num_9"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
send {NumpadPgUp}
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
SendUnicodeChar(0x2297) ; Tensorprodukt ; Vektor in die Ebene zeigend
|
||
CompKey := ""
|
||
}
|
||
else if ( (Ebene = 4) or (Ebene = 5) )
|
||
{
|
||
SendUnicodeChar(0x226B) ; gg
|
||
CompKey := ""
|
||
}
|
||
PriorDeadKey := ""
|
||
return
|
||
|
||
|
||
|
||
neo_Numpad4:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (CompKey = "Num_1")
|
||
CompUnicodeChar(0x00BC) ; 1/4
|
||
else if (CompKey = "Num_3")
|
||
CompUnicodeChar(0x00BE) ; 3/4
|
||
else
|
||
send {blind}{Numpad4}
|
||
if (PriorDeadKey = "comp")
|
||
CompKey := "Num_4"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
send {NumpadLeft}
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
SendUnicodeChar(0x2190) ; leftarrow
|
||
CompKey := ""
|
||
}
|
||
else if ( (Ebene = 4) or (Ebene = 5) )
|
||
{
|
||
SendUnicodeChar(0x2282) ; subset of
|
||
CompKey := ""
|
||
}
|
||
PriorDeadKey := ""
|
||
return
|
||
|
||
neo_Numpad5:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (CompKey = "Num_1")
|
||
CompUnicodeChar(0x2155) ; 1/5
|
||
else if (CompKey = "Num_2")
|
||
CompUnicodeChar(0x2156) ; 2/5
|
||
else if (CompKey = "Num_3")
|
||
CompUnicodeChar(0x2157) ; 3/5
|
||
else if (CompKey = "Num_4")
|
||
CompUnicodeChar(0x2158) ; 4/5
|
||
else
|
||
send {blind}{Numpad5}
|
||
if (PriorDeadKey = "comp")
|
||
CompKey := "Num_5"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
send {NumpadClear}
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
SendUnicodeChar(0x221E) ; INFINITY
|
||
CompKey := ""
|
||
}
|
||
else if ( (Ebene = 4) or (Ebene = 5) )
|
||
{
|
||
SendUnicodeChar(0x220B) ; enthält das Element
|
||
CompKey := ""
|
||
}
|
||
PriorDeadKey := ""
|
||
return
|
||
|
||
neo_Numpad6:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (CompKey = "Num_1")
|
||
CompUnicodeChar(0x2159) ; 1/6
|
||
else if (CompKey = "Num_5")
|
||
CompUnicodeChar(0x215A) ; 5/6
|
||
else
|
||
send {blind}{Numpad6}
|
||
if (PriorDeadKey = "comp")
|
||
CompKey := "Num_6"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
send {NumpadRight}
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
SendUnicodeChar(0x2192) ; rightarrow
|
||
CompKey := ""
|
||
}
|
||
else if ( (Ebene = 4) or (Ebene = 5) )
|
||
{
|
||
SendUnicodeChar(0x2283) ; superset of
|
||
CompKey := ""
|
||
}
|
||
PriorDeadKey := ""
|
||
return
|
||
|
||
neo_Numpad1:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
send {blind}{Numpad1}
|
||
if (PriorDeadKey = "comp")
|
||
CompKey := "Num_1"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
send {NumpadEnd}
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
SendUnicodeChar(0x2194) ; Links-Rechts-Pfeil
|
||
CompKey := ""
|
||
}
|
||
else if ( (Ebene = 4) or (Ebene = 5) )
|
||
{
|
||
SendUnicodeChar(0x2264) ; leq
|
||
CompKey := ""
|
||
}
|
||
PriorDeadKey := ""
|
||
return
|
||
|
||
neo_Numpad2:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (CompKey = "Num_1")
|
||
CompUnicodeChar(0x00BD) ; 1/2
|
||
else
|
||
send {blind}{Numpad2}
|
||
if (PriorDeadKey = "comp")
|
||
CompKey := "Num_2"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
send {NumpadDown}
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
SendUnicodeChar(0x2193) ; downarrow
|
||
CompKey := ""
|
||
}
|
||
else if ( (Ebene = 4) or (Ebene = 5) )
|
||
{
|
||
SendUnicodeChar(0x222A) ; vereinigt
|
||
CompKey := ""
|
||
}
|
||
PriorDeadKey := ""
|
||
return
|
||
|
||
neo_Numpad3:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (CompKey = "Num_1")
|
||
CompUnicodeChar(0x2153) ; 1/3
|
||
else if (CompKey = "Num_2")
|
||
CompUnicodeChar(0x2154) ; 2/3
|
||
else
|
||
send {blind}{Numpad3}
|
||
if (PriorDeadKey = "comp")
|
||
CompKey := "Num_3"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 2
|
||
send {NumpadPgDn}
|
||
else if Ebene = 3
|
||
SendUnicodeChar(0x21CC) ; RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON
|
||
else if ( (Ebene = 4) or (Ebene = 5) )
|
||
SendUnicodeChar(0x2265) ; geq
|
||
PriorDeadKey := "" CompKey := ""
|
||
return
|
||
|
||
neo_Numpad0:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
send {blind}{Numpad0}
|
||
if (PriorDeadKey = "comp")
|
||
CompKey := "Num_0"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
send {NumpadIns}
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
send `%
|
||
CompKey := ""
|
||
}
|
||
else if ( (Ebene = 4) or (Ebene = 5) )
|
||
{
|
||
send ‰
|
||
CompKey := ""
|
||
}
|
||
PriorDeadKey := ""
|
||
return
|
||
|
||
neo_NumpadDot:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
send {NumpadDot}
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
send {NumpadDel}
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
send .
|
||
CompKey := ""
|
||
}
|
||
else if ( (Ebene = 4) or (Ebene = 5) )
|
||
{
|
||
send `,
|
||
CompKey := ""
|
||
}
|
||
PriorDeadKey := ""
|
||
return
|
||
|
||
/*
|
||
bei NumLock aus
|
||
*/
|
||
|
||
neo_NumpadHome:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
send {NumpadHome}
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
send {Numpad7}
|
||
if (PriorDeadKey = "comp")
|
||
CompKey := "Num_7"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if ( (Ebene = 4) or (Ebene = 5) )
|
||
{
|
||
SendUnicodeChar(0x226A) ; ll
|
||
CompKey := ""
|
||
}
|
||
PriorDeadKey := ""
|
||
return
|
||
|
||
neo_NumpadUp:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
send {NumpadUp}
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
if (CompKey = "Num_1")
|
||
CompUnicodeChar(0x215B) ; 1/8
|
||
else if (CompKey = "Num_3")
|
||
CompUnicodeChar(0x215C) ; 3/8
|
||
else if (CompKey = "Num_5")
|
||
CompUnicodeChar(0x215D) ; 5/8
|
||
else if (CompKey = "Num_7")
|
||
CompUnicodeChar(0x215E) ; 7/8
|
||
else
|
||
send {Numpad8}
|
||
if (PriorDeadKey = "comp")
|
||
CompKey := "Num_8"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
SendUnicodeChar(0x2191) ; uparrow
|
||
CompKey := ""
|
||
}
|
||
else if ( (Ebene = 4) or (Ebene = 5) )
|
||
{
|
||
SendUnicodeChar(0x2229) ; intersection
|
||
CompKey := ""
|
||
}
|
||
PriorDeadKey := ""
|
||
return
|
||
|
||
neo_NumpadPgUp:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
send {NumpadPgUp}
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
send {Numpad9}
|
||
if (PriorDeadKey = "comp")
|
||
CompKey := "Num_9"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if ( (Ebene = 4) or (Ebene = 5) )
|
||
{
|
||
|
||
SendUnicodeChar(0x226B) ; gg
|
||
CompKey := ""
|
||
}
|
||
PriorDeadKey := ""
|
||
return
|
||
|
||
neo_NumpadLeft:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
send {NumpadLeft}
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
if (CompKey = "Num_1")
|
||
CompUnicodeChar(0x00BC) ; 1/4
|
||
else if (CompKey = "Num_3")
|
||
CompUnicodeChar(0x00BE) ; 3/4
|
||
else
|
||
send {Numpad4}
|
||
if (PriorDeadKey = "comp")
|
||
CompKey := "Num_4"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
SendUnicodeChar(0x2190) ; leftarrow
|
||
CompKey := ""
|
||
}
|
||
else if ( (Ebene = 4) or (Ebene = 5) )
|
||
{
|
||
SendUnicodeChar(0x2282) ; subset of
|
||
CompKey := ""
|
||
}
|
||
PriorDeadKey := ""
|
||
return
|
||
|
||
neo_NumpadClear:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
send {NumpadClear}
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
if (CompKey = "Num_1")
|
||
CompUnicodeChar(0x2155) ; 1/5
|
||
else if (CompKey = "Num_2")
|
||
CompUnicodeChar(0x2156) ; 2/5
|
||
else if (CompKey = "Num_3")
|
||
CompUnicodeChar(0x2157) ; 3/5
|
||
else if (CompKey = "Num_4")
|
||
CompUnicodeChar(0x2158) ; 4/5
|
||
else
|
||
send {Numpad5}
|
||
if (PriorDeadKey = "comp")
|
||
CompKey := "Num_5"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
send †
|
||
CompKey := ""
|
||
}
|
||
else if ( (Ebene = 4) or (Ebene = 5) )
|
||
{
|
||
SendUnicodeChar(0x220A) ; small element of
|
||
CompKey := ""
|
||
}
|
||
PriorDeadKey := ""
|
||
return
|
||
|
||
neo_NumpadRight:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
send {NumpadRight}
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
if (CompKey = "Num_1")
|
||
CompUnicodeChar(0x2159) ; 1/6
|
||
else if (CompKey = "Num_5")
|
||
CompUnicodeChar(0x215A) ; 5/6
|
||
else
|
||
send {Numpad6}
|
||
if (PriorDeadKey = "comp")
|
||
CompKey := "Num_6"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
SendUnicodeChar(0x2192) ; rightarrow
|
||
CompKey := ""
|
||
}
|
||
else if ( (Ebene = 4) or (Ebene = 5) )
|
||
{
|
||
SendUnicodeChar(0x2283) ; superset of
|
||
CompKey := ""
|
||
}
|
||
PriorDeadKey := ""
|
||
return
|
||
|
||
neo_NumpadEnd:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
send {NumpadEnd}
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
send {Numpad1}
|
||
if (PriorDeadKey = "comp")
|
||
CompKey := "Num_1"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
SendUnicodeChar(0x21CB) ; LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON
|
||
CompKey := ""
|
||
}
|
||
else if ( (Ebene = 4) or (Ebene = 5) )
|
||
{
|
||
SendUnicodeChar(0x2264) ; leq
|
||
CompKey := ""
|
||
}
|
||
PriorDeadKey := ""
|
||
return
|
||
|
||
neo_NumpadDown:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
send {NumpadDown}
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
if (CompKey = "Num_1")
|
||
CompUnicodeChar(0x00BD) ; 1/2
|
||
else
|
||
send {Numpad2}
|
||
if (PriorDeadKey = "comp")
|
||
CompKey := "Num_2"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
SendUnicodeChar(0x2193) ; downarrow
|
||
CompKey := ""
|
||
}
|
||
else if ( (Ebene = 4) or (Ebene = 5) )
|
||
{
|
||
SendUnicodeChar(0x222A) ; vereinigt
|
||
CompKey := ""
|
||
}
|
||
PriorDeadKey := ""
|
||
return
|
||
|
||
neo_NumpadPgDn:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
send {NumpadPgDn}
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
if (CompKey = "Num_1")
|
||
CompUnicodeChar(0x2153) ; 1/3
|
||
else if (CompKey = "Num_2")
|
||
CompUnicodeChar(0x2154) ; 2/3
|
||
else
|
||
send {Numpad3}
|
||
if (PriorDeadKey = "comp")
|
||
CompKey := "Num_3"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
SendUnicodeChar(0x21CC) ; RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON
|
||
CompKey := ""
|
||
}
|
||
else if ( (Ebene = 4) or (Ebene = 5) )
|
||
{
|
||
SendUnicodeChar(0x2265) ; geq
|
||
CompKey := ""
|
||
}
|
||
PriorDeadKey := ""
|
||
return
|
||
|
||
neo_NumpadIns:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
send {NumpadIns}
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
send {Numpad0}
|
||
if (PriorDeadKey = "comp")
|
||
CompKey := "Num_0"
|
||
else
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
send `%
|
||
CompKey := ""
|
||
}
|
||
else if ( (Ebene = 4) or (Ebene = 5) )
|
||
{
|
||
send ‰
|
||
CompKey := ""
|
||
}
|
||
PriorDeadKey := ""
|
||
return
|
||
|
||
neo_NumpadDel:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
send {NumpadDel}
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 2
|
||
{
|
||
send {NumpadDot}
|
||
CompKey := ""
|
||
}
|
||
else if Ebene = 3
|
||
{
|
||
send .
|
||
CompKey := ""
|
||
}
|
||
else if ( (Ebene = 4) or (Ebene = 5) )
|
||
{
|
||
send `,
|
||
CompKey := ""
|
||
}
|
||
PriorDeadKey := ""
|
||
return
|
||
|
||
|
||
/*
|
||
------------------------------------------------------
|
||
Sondertasten
|
||
------------------------------------------------------
|
||
*/
|
||
*space::
|
||
if (einHandNeo)
|
||
spacepressed := 1
|
||
else
|
||
goto neo_SpaceUp
|
||
return
|
||
|
||
*space up::
|
||
if (einHandNeo)
|
||
{
|
||
if (keypressed)
|
||
{
|
||
keypressed := 0
|
||
spacepressed := 0
|
||
}
|
||
else
|
||
{
|
||
goto neo_SpaceUp
|
||
}
|
||
}
|
||
else
|
||
{ } ;do nothing
|
||
return
|
||
|
||
neo_SpaceUp:
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (CompKey = "r_small_1")
|
||
Comp3UnicodeChar(0x2170) ; römisch i
|
||
else if (CompKey = "r_capital_1")
|
||
Comp3UnicodeChar(0x2160) ; römisch I
|
||
else
|
||
Send {blind}{Space}
|
||
}
|
||
if Ebene = 2
|
||
Send {blind}{Space}
|
||
if Ebene = 3
|
||
Send {blind}{Space}
|
||
if Ebene = 4
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x2070)
|
||
else if (PriorDeadKey = "c5") ; toter -
|
||
BSSendUnicodeChar(0x2080)
|
||
else
|
||
Send 0
|
||
}
|
||
else if Ebene = 5
|
||
SendUnicodeChar(0x00A0) ; geschütztes Leerzeichen
|
||
else if Ebene = 6
|
||
SendUnicodeChar(0x202F) ; schmales Leerzeichen
|
||
PriorDeadKey := "" CompKey := ""
|
||
spacepressed := 0
|
||
keypressed := 0
|
||
return
|
||
|
||
/*
|
||
*Space::
|
||
EbeneAktualisieren()
|
||
if Ebene = 1
|
||
{
|
||
if (CompKey = "r_small_1")
|
||
Comp3UnicodeChar(0x2170) ; römisch i
|
||
else if (CompKey = "r_capital_1")
|
||
Comp3UnicodeChar(0x2160) ; römisch I
|
||
else
|
||
Send {blind}{Space}
|
||
}
|
||
if Ebene = 2
|
||
Send {blind}{Space}
|
||
if Ebene = 3
|
||
Send {blind}{Space}
|
||
if Ebene = 4
|
||
{
|
||
if (PriorDeadKey = "c1") ; circumflex
|
||
BSSendUnicodeChar(0x2070)
|
||
else if (PriorDeadKey = "c5") ; toter -
|
||
BSSendUnicodeChar(0x2080)
|
||
else
|
||
Send 0
|
||
}
|
||
else if Ebene = 5
|
||
SendUnicodeChar(0x00A0) ; geschütztes Leerzeichen
|
||
else if Ebene = 6
|
||
SendUnicodeChar(0x202F) ; schmales Leerzeichen
|
||
PriorDeadKey := "" CompKey := ""
|
||
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.
|
||
*/
|
||
|
||
*Enter::
|
||
if ( not(lernModus) or (lernModus_std_Return) )
|
||
{
|
||
sendinput {Blind}{Enter}
|
||
PriorDeadKey := "" CompKey := ""
|
||
}
|
||
return
|
||
|
||
*Backspace::
|
||
if ( not(lernModus) or (lernModus_std_Backspace) )
|
||
{
|
||
sendinput {Blind}{Backspace}
|
||
PriorDeadKey := "" CompKey := ""
|
||
}
|
||
return
|
||
|
||
*Del::
|
||
if ( not(lernModus) or (lernModus_std_Entf) )
|
||
{
|
||
sendinput {Blind}{Del}
|
||
}
|
||
return
|
||
|
||
*Ins::
|
||
if ( not(lernModus) or (lernModus_std_Einf) )
|
||
{
|
||
sendinput {Blind}{Ins}
|
||
}
|
||
return
|
||
|
||
|
||
|
||
|
||
|
||
/*
|
||
Auf Mod3+Tab liegt Compose. AltTab funktioniert, jedoch ShiftAltTab nicht.
|
||
Wenigstens kommt es jetzt nicht mehr zu komischen Ergebnissen, wenn man Tab
|
||
nach einem DeadKey drückt...
|
||
*/
|
||
|
||
neo_tab:
|
||
if ( GetKeyState("SC038","P") )
|
||
{
|
||
Send,{Blind}{AltDown}{tab}
|
||
|
||
/*
|
||
if (isShiftPressed())
|
||
{
|
||
Send,{ShiftDown}{AltDown}{tab}
|
||
}
|
||
else
|
||
{
|
||
; msgbox alt+tab
|
||
Send,{AltDown}{tab}
|
||
; SC038 & Tab::AltTab ; http://de.autohotkey.com/docs/Hotkeys.htm#AltTabDetail
|
||
}
|
||
*/
|
||
}
|
||
else if (IsMod3Pressed()) ;#
|
||
{
|
||
#Include *i %a_scriptdir%\ComposeLaunch.ahk
|
||
#Include *i %a_scriptdir%\Source\ComposeLaunch.ahk
|
||
PriorDeadKey := "comp"
|
||
CompKey := ""
|
||
}
|
||
else
|
||
{
|
||
send {blind}{Tab}
|
||
PriorDeadKey := ""
|
||
CompKey := ""
|
||
}
|
||
return
|
||
|
||
*SC038 up::
|
||
PriorDeadKey := "" CompKey := ""
|
||
send {blind}{AltUp}
|
||
return
|
||
|
||
*SC038 down:: ; LAlt, damit AltTab funktioniert
|
||
Send,{Blind}{AltDown}
|
||
PriorDeadKey := "" CompKey := ""
|
||
return
|
||
|
||
*Home::
|
||
if ( not(lernModus) or (lernModus_std_Pos1) )
|
||
{
|
||
sendinput {Blind}{Home}
|
||
PriorDeadKey := "" CompKey := ""
|
||
}
|
||
return
|
||
|
||
*End::
|
||
if ( not(lernModus) or (lernModus_std_Ende) )
|
||
{
|
||
sendinput {Blind}{End}
|
||
PriorDeadKey := "" CompKey := ""
|
||
}
|
||
return
|
||
|
||
*PgUp::
|
||
if ( not(lernModus) or (lernModus_std_PgUp) )
|
||
{
|
||
sendinput {Blind}{PgUp}
|
||
PriorDeadKey := "" CompKey := ""
|
||
}
|
||
return
|
||
|
||
*PgDn::
|
||
if ( not(lernModus) or (lernModus_std_PgDn) )
|
||
{
|
||
sendinput {Blind}{PgDn}
|
||
PriorDeadKey := "" CompKey := ""
|
||
}
|
||
return
|
||
|
||
*Up::
|
||
if ( not(lernModus) or (lernModus_std_Hoch) )
|
||
{
|
||
sendinput {Blind}{Up}
|
||
PriorDeadKey := "" CompKey := ""
|
||
}
|
||
return
|
||
|
||
*Down::
|
||
if ( not(lernModus) or (lernModus_std_Runter) )
|
||
{
|
||
sendinput {Blind}{Down}
|
||
PriorDeadKey := "" CompKey := ""
|
||
}
|
||
return
|
||
|
||
*Left::
|
||
if ( not(lernModus) or (lernModus_std_Links) )
|
||
{
|
||
sendinput {Blind}{Left}
|
||
PriorDeadKey := "" CompKey := ""
|
||
}
|
||
return
|
||
|
||
*Right::
|
||
if ( not(lernModus) or (lernModus_std_Rechts) )
|
||
{
|
||
sendinput {Blind}{Right}
|
||
PriorDeadKey := "" CompKey := ""
|
||
}
|
||
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
|
||
------------------------------------------------------
|
||
*/
|
||
|
||
/*
|
||
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
|
||
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() )
|
||
{ ; Umschalt 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() )
|
||
{ ; Umschalt UND Mod4 NICHT Mod3
|
||
; Ebene 7 impliziert Ebene 4
|
||
Ebene = 4
|
||
}
|
||
else
|
||
{ ; Umschalt 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 )
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
|
||
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)
|
||
{
|
||
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 GDK-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}
|
||
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)
|
||
}
|
||
|
||
|
||
;Lang-s-Tastatur:
|
||
SC056 & *F11::
|
||
LangSTastatur := not(LangSTastatur) ; schaltet die Lang-s-Tastatur ein und aus
|
||
return
|
||
|
||
/*
|
||
------------------------------------------------------
|
||
Methoden zum Senden von Unicode-Zeichen
|
||
------------------------------------------------------
|
||
*/
|
||
|
||
|
||
/************************************************************
|
||
Alter Weg – Copy/Paste über die Zwischenablage
|
||
************************************************************/
|
||
|
||
/*
|
||
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
|
||
}
|
||
*/
|
||
|
||
|
||
/************************************************************
|
||
Neuer Weg – Benutzung der entsprechenden Win32-API-Methode
|
||
************************************************************/
|
||
|
||
|
||
|
||
/*
|
||
------------------------------------------------------
|
||
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
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|