5310 lines
208 KiB
AutoHotkey
5310 lines
208 KiB
AutoHotkey
/*
|
||
*******************************************
|
||
WICHTIGE WARNUNG:
|
||
|
||
Dies ist inzwischen eine automatisch generierte
|
||
Datei! Sie wird regelmäßig überschrieben und
|
||
sollte deshalb nicht mehr direkt bearbeitet werden!
|
||
|
||
Alle weiterführenden Informationen finden sich im Abschnitt
|
||
== Hinweise für Entwickler ==
|
||
in der Datei README.txt!
|
||
|
||
Versionshinweise (SVN Keywords) für diese Datei:
|
||
$LastChangedRevision$
|
||
$LastChangedDate$
|
||
$LastChangedBy$
|
||
$HeadURL$
|
||
*******************************************
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
*******************************************
|
||
Das war die letzte WARNUNG, ich hoffe nur, dass
|
||
Sie wirklich wissen, was Sie hier tun wollen ...
|
||
*******************************************
|
||
*/
|
||
|
||
|
||
/******************
|
||
* Initialisierung *
|
||
*******************
|
||
*/
|
||
DeadKey := ""
|
||
CompKey := ""
|
||
PriorDeadKey := ""
|
||
PriorCompKey := ""
|
||
Ebene12 = 0
|
||
noCaps = 0
|
||
isFurtherCompkey = 0
|
||
|
||
EbeneAktualisieren()
|
||
SetBatchLines -1
|
||
SetCapsLockState Off
|
||
KeyboardLED(4, "off")
|
||
SetNumLockState Off
|
||
SetScrollLockState Off
|
||
|
||
name=Neo 2.0 (%A_ScriptName%) ($Revision$)
|
||
enable=Aktiviere %name%
|
||
disable=Deaktiviere %name%
|
||
#usehook on
|
||
#singleinstance force
|
||
#LTrim ; Quelltext kann eingerückt werden
|
||
Process,Priority,,High
|
||
SendMode Input
|
||
|
||
/****************
|
||
* Verzeichnisse *
|
||
*****************
|
||
*/
|
||
; Setzt den Pfad zu einem temporären Verzeichnis
|
||
EnvGet,WindowsEnvTempFolder,TEMP
|
||
ResourceFolder = %WindowsEnvTempFolder%\NEO2
|
||
FileCreateDir,%ResourceFolder%
|
||
|
||
; Setzt den Pfad zu den NEO-Anwendungsdateien
|
||
EnvGet,WindowsEnvAppDataFolder,APPDATA
|
||
ApplicationFolder = %WindowsEnvAppDataFolder%\NEO2
|
||
FileCreateDir,%ApplicationFolder%
|
||
ini = %ApplicationFolder%\NEO2.ini
|
||
|
||
/*******************
|
||
* Globale Schalter *
|
||
********************
|
||
*/
|
||
; Im folgenden gilt (soweit nicht anders angegeben) Ja = 1, Nein = 0:
|
||
|
||
; Sollen die Bilder für die Bildschirmtastatur in die compilierte EXE-Datei miteingebunden werden?
|
||
; (Nachteil: grössere Dateigrösse, Vorteil: Referenz für Anfänger stets einfach verfügbar)
|
||
bildschirmTastaturEinbinden := 1
|
||
|
||
; Syntaxhinweis: IniRead, Variable, InputFilename, Section, Key [, DefaultValue]
|
||
|
||
; Soll der Treiber im Einhandmodus betrieben werden?
|
||
IniRead,einHandNeo,%ini%,Global,einHandNeo,0
|
||
|
||
; Soll der Lernmodus aktiviert werden?
|
||
IniRead,lernModus,%ini%,Global,lernModus,0
|
||
|
||
; Soll mit einer MsgBox explizit auf das Ein- und Ausschalten des Mod4-Locks hingewiesen werden?
|
||
IniRead,zeigeLockBox,%ini%,Global,zeigeLockBox,1
|
||
|
||
; Soll aktivierter Mod4-Lock über die Rollen-LED des Keybord angezeigt werden (analog zu CapsLock)?
|
||
IniRead,UseMod4Light,%ini%,Global,UseMod4Light,1
|
||
|
||
; Soll Lang-s auf s, s auf ß und ß auf Lang-s gelegt (bzw. vertauscht) werden?
|
||
IniRead,LangSTastatur,%ini%,Global,LangSTastatur,0
|
||
If LangSTastatur
|
||
KeyboardLED(2,"on")
|
||
|
||
; Sollen tote Tasten blind angezeigt werden?
|
||
IniRead,DeadSilence,%ini%,Global,DeadSilence,1
|
||
|
||
;Sollen Compose-Tasten blind angezeigt werden?
|
||
IniRead,DeadCompose,%ini%,Global,DeadCompose,1
|
||
|
||
;Soll der Mod2Lock auch auf die Akzente, die Ziffernreihe und das Numpad angewandt werden?
|
||
IniRead,striktesMod2Lock,%ini%,Global,striktesMod2Lock,0
|
||
|
||
/***********************
|
||
* Recourcen-Verwaltung *
|
||
************************
|
||
*/
|
||
if (FileExist("ResourceFolder") <> false) {
|
||
; Versuche, alle möglicherweise in die EXE eingebundenen Dateien zu extrahieren
|
||
FileInstall,neo.ico,%ResourceFolder%\neo.ico,1
|
||
FileInstall,neo_disabled.ico,%ResourceFolder%\neo_disabled.ico,1
|
||
iconBenutzen=1
|
||
if (bildschirmTastaturEinbinden = 1) {
|
||
FileInstall,ebene1.png,%ResourceFolder%\ebene1.png,1
|
||
FileInstall,ebene2.png,%ResourceFolder%\ebene2.png,1
|
||
FileInstall,ebene3.png,%ResourceFolder%\ebene3.png,1
|
||
FileInstall,ebene4.png,%ResourceFolder%\ebene4.png,1
|
||
FileInstall,ebene5.png,%ResourceFolder%\ebene5.png,1
|
||
FileInstall,ebene6.png,%ResourceFolder%\ebene6.png,1
|
||
zeigeBildschirmTastatur = 1
|
||
}
|
||
}
|
||
|
||
; Benutze die Dateien auch dann, wenn sie eventuell im aktuellen Verzeichnis 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
|
||
|
||
/*******************************************
|
||
* Ü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% and 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,%ResourceFolder%\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,add
|
||
menu,tray,add,Bearbeiten,edit
|
||
menu,tray,add,Neu Laden,reload
|
||
menu,tray,add
|
||
menu,tray,add,Nicht im Systray anzeigen,hide
|
||
menu,tray,add,%name% beenden,exitprogram
|
||
menu,tray,default,%disable%
|
||
menu,tray,tip,%name%
|
||
|
||
/**************************
|
||
* 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
|
||
|
||
/****************************
|
||
* EinHandNeo *
|
||
* Umschalten mit Strg+Punkt *
|
||
*****************************
|
||
*/
|
||
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_ü
|
||
|
||
/**********************
|
||
* Tastenkombinationen *
|
||
***********************
|
||
*/
|
||
;Blinde/Sichtbare Tote Tasten
|
||
*F9::
|
||
if isMod4pressed()
|
||
DeadSilence := !DeadSilence
|
||
else send {blind}{F9}
|
||
return
|
||
|
||
;Blinde/Sichtbare Compose
|
||
*F10::
|
||
if isMod4pressed()
|
||
DeadCompose := !DeadCompose
|
||
else send {blind}{F10}
|
||
return
|
||
|
||
;Lang-s-Tastatur:
|
||
*F11::
|
||
if isMod4pressed() {
|
||
LangSTastatur := !LangSTastatur
|
||
if LangSTastatur
|
||
KeyboardLED(2,"on")
|
||
else KeyboardLED(2,"off")
|
||
} else send {blind}{F11}
|
||
return
|
||
|
||
;Alle Modi und Locks in den Normalzustand versetzen, bzw. Skript neu laden:
|
||
*Esc::
|
||
if isMod4pressed()
|
||
reload
|
||
else send {blind}{Esc}
|
||
return
|
||
|
||
*pause::
|
||
Suspend, Permit
|
||
if isShiftpressed()
|
||
goto togglesuspend
|
||
else send {blind}{pause}
|
||
return
|
||
|
||
^,::lernModus := !lernModus
|
||
|
||
^.::einHandNeo := !einHandNeo
|
||
|
||
/*****************
|
||
* Menüfunktionen *
|
||
******************
|
||
*/
|
||
togglesuspend:
|
||
if A_IsSuspended {
|
||
menu,tray,rename,%enable%,%disable%
|
||
menu,tray,tip,%name%
|
||
if (iconBenutzen)
|
||
menu,tray,icon,%ResourceFolder%\neo.ico,,1
|
||
suspend,off ; Schaltet Suspend aus -> NEO
|
||
} else {
|
||
menu,tray,rename,%disable%, %enable%
|
||
menu,tray,tip,%name% : Deaktiviert
|
||
if (iconBenutzen)
|
||
menu,tray,icon, %ResourceFolder%\neo_disabled.ico,,1
|
||
suspend,on ; Schaltet Suspend ein -> QWERTZ
|
||
} return
|
||
|
||
help:
|
||
Run, %A_WinDir%\hh mk:@MSITStore:autohotkey.chm
|
||
return
|
||
|
||
about:
|
||
msgbox, 64, %name% – Ergonomische Tastaturbelegung,
|
||
(
|
||
%name%
|
||
`nDas Neo-Layout ersetzt das übliche deutsche
|
||
Tastaturlayout mit der Alternative Neo,
|
||
beschrieben auf http://neo-layout.org/.
|
||
`nDazu sind keine Administratorrechte nötig.
|
||
`nWenn Autohotkey aktiviert ist, werden alle Tastendrucke
|
||
abgefangen und statt dessen eine Übersetzung weitergeschickt.
|
||
`nDies geschieht transparent für den Anwender,
|
||
es muss nichts installiert werden.
|
||
`nDie Zeichenübersetzung kann leicht über das Icon im
|
||
Systemtray deaktiviert werden. `n
|
||
)
|
||
return
|
||
|
||
neo:
|
||
run http://neo-layout.org/
|
||
return
|
||
|
||
autohotkey:
|
||
run http://autohotkey.com/
|
||
return
|
||
|
||
open:
|
||
ListLines ; shows the Autohotkey window
|
||
return
|
||
|
||
edit:
|
||
edit
|
||
return
|
||
|
||
reload:
|
||
Reload
|
||
return
|
||
|
||
hide:
|
||
menu, tray, noicon
|
||
return
|
||
|
||
exitprogram:
|
||
exitapp
|
||
return
|
||
|
||
|
||
; LShift+RShift == CapsLock (simuliert)
|
||
; Es werden nur die beiden Tastenkombinationen abgefragt,
|
||
; daher kommen LShift und RShift ungehindert bis in die
|
||
; Applikation. Dies ist aber merkwürdig, da beide Shift-
|
||
; Tasten nun /modifier keys/ werden und, wie in der AHK-
|
||
; Hilfe beschrieben, eigentlich nicht mehr bis zur App
|
||
; durchkommen sollten.
|
||
; KeyboardLED(4,"switch") hatte ich zuerst genommen, aber
|
||
; das schaltet, oh Wunder, die LED nicht wieder aus.
|
||
|
||
isMod2Locked = 0
|
||
VKA1SC136 & VKA0SC02A:: ; RShift, dann LShift
|
||
VKA0SC02A & VKA1SC136:: ; LShift, dann RShift
|
||
if GetKeyState("VKA1SC136", "P") and GetKeyState("VKA0SC02A", "P") {
|
||
if isMod2Locked {
|
||
isMod2Locked = 0
|
||
KeyboardLED(4, "off")
|
||
} else {
|
||
isMod2Locked = 1
|
||
KeyBoardLED(4, "on")
|
||
}
|
||
}
|
||
return
|
||
|
||
;Mod3-Tasten (Wichtig, sie werden sonst nicht verarbeitet!)
|
||
;Auf Mod3+Mod3 liegt zusätzlich zu Mod3+Tab Compose
|
||
*VKBFSC02B:: ; #
|
||
*VK14SC03A:: ; CapsLock
|
||
if GetKeyState("VKBFSC02B", "P") and GetKeyState("VK14SC03A", "P") {
|
||
DeadKey := "comp"
|
||
CompKey := ""
|
||
}
|
||
return
|
||
|
||
;Mod4+Mod4 == Mod4-Lock
|
||
; Im Gegensatz zu LShift+RShift werden die beiden Tasten
|
||
; _nicht_ zur Applikation weitergeleitet, und nur bei
|
||
; gleichzeitigem Drücken wird der Mod4-Lock aktiviert und
|
||
; angezeigt.
|
||
|
||
IsMod4Locked := 0
|
||
*VKA5SC138::
|
||
*VKE2SC056::
|
||
if GetKeyState("VKA5SC138", "P") and GetKeyState("VKE2SC056", "P") {
|
||
if IsMod4Locked {
|
||
if zeigeLockBox
|
||
MsgBox Mod4-Feststellung aufgebehoben!
|
||
IsMod4Locked = 0
|
||
if UseMod4Light
|
||
KeyboardLED(1, "off")
|
||
} else {
|
||
if zeigeLockBox
|
||
MsgBox Mod4 festgestellt: Um Mod4 wieder zu lösen, drücke beide Mod4-Tasten gleichzeitig!
|
||
IsMod4Locked = 1
|
||
if UseMod4Light
|
||
KeyboardLED(1, "on")
|
||
}
|
||
}
|
||
return
|
||
|
||
EbeneAktualisieren() {
|
||
global
|
||
PriorDeadKey := DeadKey
|
||
PriorCompKey := CompKey
|
||
DeadKey := ""
|
||
CompKey := ""
|
||
Modstate := IsMod4Pressed() . IsMod3Pressed() . IsShiftPressed()
|
||
Ebene7 := 0
|
||
Ebene8 := 0
|
||
if (Modstate = "000") ; Ebene 1: Ohne Mod
|
||
Ebene = 1
|
||
else if (Modstate = "001") ; Ebene 2: Shift
|
||
Ebene = 2
|
||
else if (Modstate = "010") ; Ebene 3: Mod3
|
||
Ebene = 3
|
||
else if (Modstate = "100") ; Ebene 4: Mod4
|
||
Ebene = 4
|
||
else if (Modstate = "011") ; Ebene 5: Shift+Mod3
|
||
Ebene = 5
|
||
else if (Modstate = "110") ; Ebene 6: Mod3+Mod4
|
||
Ebene = 6
|
||
else if (Modstate = "101") { ; Ebene 7: Shift+Mod4 impliziert Ebene 4
|
||
Ebene = 4
|
||
Ebene7 = 1
|
||
} else if (Modstate = "111") { ; Ebene 8: Shift+Mod3+Mod4 impliziert Ebene 6
|
||
Ebene = 6
|
||
Ebene8 = 1
|
||
} Ebene12 := ((Ebene = 1) or (Ebene = 2))
|
||
NumLock := GetKeyState("NumLock", "T")
|
||
noCaps := 0
|
||
}
|
||
|
||
IsShiftPressed()
|
||
{
|
||
global
|
||
if !(NoCaps and GetKeyState("Shift", "P") and (GetKeyState("Alt", "P") or GetKeyState("Strg", "P"))) {
|
||
if striktesMod2Lock
|
||
noCaps = 0
|
||
if GetKeyState("Shift","P")
|
||
if isMod2Locked and !noCaps
|
||
return 0
|
||
else return 1
|
||
else if isMod2Locked and !noCaps
|
||
return 1
|
||
else return 0
|
||
}
|
||
}
|
||
|
||
IsMod3Pressed()
|
||
{
|
||
global
|
||
return (GetKeyState("VKBFSC02B","P") or GetKeyState("VK14SC03A","P"))
|
||
}
|
||
|
||
IsMod4Pressed()
|
||
{
|
||
global
|
||
if !(einHandNeo) or !(spacepressed)
|
||
if IsMod4Locked
|
||
return !(GetKeyState("<","P") or GetKeyState("SC138","P"))
|
||
else
|
||
return (GetKeyState("<","P") or GetKeyState("SC138","P"))
|
||
else
|
||
if IsMod4Locked
|
||
return !(GetKeyState("<","P") or GetKeyState("SC138","P") or GetKeyState("ä","P"))
|
||
else
|
||
return (GetKeyState("<","P") or GetKeyState("SC138","P") or GetKeyState("ä","P"))
|
||
}
|
||
|
||
|
||
|
||
/*
|
||
------------------------------------------------------
|
||
QWERTZ->Neo umwandlung
|
||
------------------------------------------------------
|
||
*/
|
||
|
||
; Reihe 1
|
||
*VKDCSC029::goto neo_tot1 ; Zirkumflex
|
||
*VK31SC002::goto neo_1
|
||
*VK32SC003::goto neo_2
|
||
*VK33SC004::goto neo_3
|
||
*VK34SC005::goto neo_4
|
||
*VK35SC006::goto neo_5
|
||
*VK36SC007::goto neo_6
|
||
*VK37SC008::
|
||
if !einHandNeo or !spacepressed
|
||
goto neo_7
|
||
else {
|
||
keypressed := 1
|
||
goto %gespiegelt_7%
|
||
}
|
||
*VK38SC009::
|
||
if !einHandNeo or !spacepressed
|
||
goto neo_8
|
||
else {
|
||
keypressed := 1
|
||
goto %gespiegelt_8%
|
||
}
|
||
*VK39SC00A::
|
||
if !einHandNeo or !spacepressed
|
||
goto neo_9
|
||
else {
|
||
keypressed := 1
|
||
goto %gespiegelt_9%
|
||
}
|
||
*VK30SC00B::
|
||
if !einHandNeo or !spacepressed
|
||
goto neo_0
|
||
else {
|
||
keypressed := 1
|
||
goto %gespiegelt_0%
|
||
}
|
||
*VKDBSC00C:: ; ß
|
||
if !einHandNeo or !spacepressed
|
||
goto neo_strich
|
||
else {
|
||
keypressed := 1
|
||
goto %gespiegelt_strich%
|
||
}
|
||
*VKDDSC00D::goto neo_tot2 ; Akut
|
||
|
||
; Reihe 2
|
||
|
||
VK09SC00F::goto neo_tab
|
||
*VK51SC010:: ; q (x)
|
||
goto neo_x
|
||
*VK57SC011:: ; w (v)
|
||
goto neo_v
|
||
*VK45SC012:: ; e (l)
|
||
goto neo_l
|
||
*VK52SC013:: ; r (c)
|
||
goto neo_c
|
||
*VK54SC014:: ; t (w)
|
||
goto neo_w
|
||
*VK5ASC015:: ; z (k)
|
||
if !einHandNeo or !spacepressed
|
||
goto neo_k
|
||
else {
|
||
keypressed := 1
|
||
goto %gespiegelt_k%
|
||
}
|
||
*VK55SC016:: ; u (h)
|
||
if !einHandNeo or !spacepressed
|
||
goto neo_h
|
||
else {
|
||
keypressed := 1
|
||
goto %gespiegelt_h%
|
||
}
|
||
*VK49SC017:: ; i (g)
|
||
if !einHandNeo or !spacepressed
|
||
goto neo_g
|
||
else {
|
||
keypressed := 1
|
||
goto %gespiegelt_g%
|
||
}
|
||
*VK4FSC018:: ; o (f)
|
||
if !einHandNeo or !spacepressed
|
||
goto neo_f
|
||
else {
|
||
keypressed := 1
|
||
goto %gespiegelt_f%
|
||
}
|
||
*VK50SC019:: ; p (q)
|
||
if !einHandNeo or !spacepressed
|
||
goto neo_q
|
||
else {
|
||
keypressed := 1
|
||
goto %gespiegelt_q%
|
||
}
|
||
*VKBASC01A:: ; ü (ß)
|
||
if !einHandNeo or !spacepressed
|
||
goto neo_sz
|
||
else {
|
||
keypressed := 1
|
||
goto %gespiegelt_sz%
|
||
}
|
||
*VKBBSC01B:: ; + (tot3)
|
||
if !einHandNeo or !spacepressed
|
||
goto neo_tot3
|
||
else {
|
||
keypressed := 1
|
||
goto %gespiegelt_tot3%
|
||
}
|
||
|
||
; Reihe 3
|
||
*VK41SC01E:: ; a (u)
|
||
goto neo_u
|
||
*VK53SC01F:: ; s (i)
|
||
goto neo_i
|
||
*VK44SC020:: ; d (a)
|
||
goto neo_a
|
||
*VK46SC021:: ; f (e)
|
||
goto neo_e
|
||
*VK47SC022:: ; g (o)
|
||
goto neo_o
|
||
*VK48SC023:: ; h (s)
|
||
if !einHandNeo or !spacepressed
|
||
goto neo_s
|
||
else {
|
||
keypressed := 1
|
||
goto %gespiegelt_s%
|
||
}
|
||
*VK4ASC024:: ; j (n)
|
||
if !einHandNeo or !spacepressed
|
||
goto neo_n
|
||
else {
|
||
keypressed := 1
|
||
goto %gespiegelt_n%
|
||
}
|
||
*VK4BSC025:: ; k (r)
|
||
if !einHandNeo or !spacepressed
|
||
goto neo_r
|
||
else {
|
||
keypressed := 1
|
||
goto %gespiegelt_r%
|
||
}
|
||
*VK4CSC026:: ; l (t)
|
||
if !einHandNeo or !spacepressed
|
||
goto neo_t
|
||
else {
|
||
keypressed := 1
|
||
goto %gespiegelt_t%
|
||
}
|
||
*VKC0SC027:: ; ö (d)
|
||
if !einHandNeo or !spacepressed
|
||
goto neo_d
|
||
else {
|
||
keypressed := 1
|
||
goto %gespiegelt_d%
|
||
}
|
||
*VKDESC028:: ; ä (y)
|
||
goto neo_y
|
||
|
||
; Reihe 4
|
||
*VK59SC02C:: ; y (ü)
|
||
goto neo_ü
|
||
*VK58SC02D:: ; x (ö)
|
||
goto neo_ö
|
||
*VK43SC02E:: ; c (ä)
|
||
goto neo_ä
|
||
*VK56SC02F:: ; v (p)
|
||
goto neo_p
|
||
*VK42SC030:: ; b (z)
|
||
goto neo_z
|
||
*VK4ESC031:: ; n (b)
|
||
if !einHandNeo or !spacepressed
|
||
goto neo_b
|
||
else {
|
||
keypressed := 1
|
||
goto %gespiegelt_b%
|
||
}
|
||
*VK4DSC032:: ; m (m)
|
||
if !einHandNeo or !spacepressed
|
||
goto neo_m
|
||
else {
|
||
keypressed := 1
|
||
goto %gespiegelt_m%
|
||
}
|
||
*VKBCSC033:: ; , (,)
|
||
if !einHandNeo or !spacepressed
|
||
goto neo_komma
|
||
else {
|
||
keypressed := 1
|
||
goto %gespiegelt_komma%
|
||
}
|
||
*VKBESC034:: ; . (.)
|
||
if !einHandNeo or !spacepressed
|
||
goto neo_punkt
|
||
else {
|
||
keypressed := 1
|
||
goto %gespiegelt_punkt%
|
||
}
|
||
*VKBDSC035:: ; - (j)
|
||
if !einHandNeo or !spacepressed
|
||
goto neo_j
|
||
else {
|
||
keypressed := 1
|
||
goto %gespiegelt_j%
|
||
}
|
||
|
||
; Numpad
|
||
*VK90SC145::goto neo_NumLock
|
||
*VK6FSC135::goto neo_NumpadDiv
|
||
*VK6ASC037::goto neo_NumpadMult
|
||
*VK6DSC04A::goto neo_NumpadSub
|
||
*VK6BSC04E::goto neo_NumpadAdd
|
||
*VK0DSC11C::goto neo_NumpadEnter
|
||
*VK67SC047:: ; NumPad7
|
||
*VK24SC047::goto neo_Numpad7 ; NumPadHome
|
||
*VK68SC048:: ; NumPad8
|
||
*VK26SC048::goto neo_Numpad8 ; NumPadUp
|
||
*VK69SC049:: ; NumPad9
|
||
*VK21SC049::goto neo_Numpad9 ; NumPadPgUp
|
||
*VK64SC04B:: ; NumPad4
|
||
*VK25SC04B::goto neo_Numpad4 ; NumPadLeft
|
||
*VK65SC04C:: ; NumPad5
|
||
*VK0CSC04C::goto neo_Numpad5 ; NumPadClear
|
||
*VK66SC04D:: ; NumPad6
|
||
*VK27SC04D::goto neo_Numpad6 ; NumPadRight
|
||
*VK61SC04F:: ; NumPad1
|
||
*VK23SC04F::goto neo_Numpad1 ; NumPadEnd
|
||
*VK62SC050:: ; NumPad2
|
||
*VK28SC050::goto neo_Numpad2 ; NumPadDown
|
||
*VK63SC051:: ; NumPad3
|
||
*VK22SC051::goto neo_Numpad3 ; NumPadPgDn
|
||
*VK60SC052:: ; NumPad0
|
||
*VK2DSC052::goto neo_Numpad0 ; NumPadIns
|
||
*VK6ESC053:: ; NumPadDot
|
||
*VK2ESC053::goto neo_NumpadDot ; NumPadIns
|
||
|
||
|
||
neo_a:
|
||
EbeneAktualisieren()
|
||
if (((Ebene = 2) and !(CheckDeadUni("a5g1",0x1F02)
|
||
or CheckDeadUni("g5g1",0x1F03)))
|
||
or (Ebene12 and !(CheckDeadUni12("c1",0x00E2,0x00C2)
|
||
or CheckDeadUni12("c2",0x00E3,0x00C3)
|
||
or CheckDeadAsc12("c3","å","Å")
|
||
or CheckDeadUni12("c4",0x01CE,0x01CD)
|
||
or CheckDeadUni12("c5",0x0103,0x0102)
|
||
or CheckDeadUni12("c6",0x0101,0x0100)
|
||
or CheckDeadUni12("g1",0x00E0,0x00C0)
|
||
or CheckDeadAsc12("g3","ä","Ä")
|
||
or CheckDeadUni12("g4",0x0201,0x0200)
|
||
or CheckDeadUni12("a1",0x00E1,0x00C1)
|
||
or CheckDeadUni12("a2",0x0105,0x0104)
|
||
or CheckDeadUni12("a3",0x2C65,0x023A)
|
||
or CheckDeadUni12("a6",0x0227,0x0226))))
|
||
OutputChar12("a","A","a","A")
|
||
else if (Ebene = 3)
|
||
OutputChar("{{}", "braceleft")
|
||
else if (Ebene = 4)
|
||
OutputChar("{Down}", "Down")
|
||
else if (Ebene = 5 and !(CheckDeadUni("c1",0x1FB6)
|
||
or CheckDeadUni("c5",0x1FB0)
|
||
or CheckDeadUni("c6",0x1FB1)
|
||
or CheckDeadUni("g1",0x1F70)
|
||
or CheckDeadUni("g5",0x1F01)
|
||
or CheckDeadUni("a1",0x03AC)
|
||
or CheckDeadUni("a2",0x1FB3)
|
||
or CheckDeadUni("a5",0x1F00)))
|
||
SendUnicodeChar(0x03B1, "Greek_alpha") ; alpha
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x2200, "U2200") ; für alle
|
||
return
|
||
|
||
neo_b:
|
||
EbeneAktualisieren()
|
||
if (Ebene12 and !(CheckDeadUni12("c6",0x1E07,0x1E06)
|
||
or CheckDeadUni12("a6",0x1E03,0x1E02)))
|
||
OutputChar12("b","B","b","B")
|
||
else if (Ebene = 3)
|
||
if isMod2Locked
|
||
OutputChar("{Shift Up}{+}{Shift down}", "plus")
|
||
else OutputChar("{blind}{+}", "plus")
|
||
else if (Ebene = 4)
|
||
OutputChar(":", "colon")
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x03B2, "Greek_beta") ; beta
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x21D0, "U21D0") ; Doppelpfeil links
|
||
return
|
||
|
||
neo_c:
|
||
EbeneAktualisieren()
|
||
if (Ebene12 and !(CheckDeadUni12("c1",0x0109,0x0108)
|
||
or CheckDeadUni12("c4",0x010D,0x010C)
|
||
or CheckDeadUni12("a1",0x0107,0x0106)
|
||
or CheckDeadUni12("a2",0x00E7,0x00E6)
|
||
or CheckDeadUni12("a6",0x010B,0x010A)))
|
||
OutputChar12("c","C","c","C")
|
||
else if (Ebene = 3)
|
||
OutputChar("]", "bracketright")
|
||
else if (Ebene = 4) and (!lernModus or lernModus_neo_Entf)
|
||
OutputChar("{Del}", "Delete")
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x03C7, "Greek_chi") ; chi
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x2102, "U2102") ; C (Komplexe Zahlen)]
|
||
return
|
||
|
||
neo_d:
|
||
EbeneAktualisieren()
|
||
if (Ebene12 and !(CheckDeadUni12("c1",0x1E13,0x1E12)
|
||
or CheckDeadUni( "c2",0x1D6D)
|
||
or CheckDeadUni12("c4",0x010F,0x010E)
|
||
or CheckDeadUni12("g3",0x1E0D,0x1E0C)
|
||
or CheckDeadUni12("a1",0x00F0,0x00D0)
|
||
or CheckDeadUni12("a2",0x1E11,0x1E10)
|
||
or CheckDeadUni12("a3",0x0111,0x0110)
|
||
or CheckDeadUni12("a6",0x1E0B,0x1E0A)))
|
||
OutputChar12("d","D","d","D")
|
||
else if (Ebene = 3)
|
||
OutputChar(":", "colon")
|
||
else if (Ebene = 4)
|
||
OutputChar("{NumpadDot}", "comma")
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x03B4, "Greek_delta") ; delta
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x0394, "Greek_DELTA") ; Delta
|
||
return
|
||
|
||
neo_e:
|
||
EbeneAktualisieren()
|
||
if (Ebene12 and !(CheckDeadUni12("c1",0x00EA,0x00CA)
|
||
or CheckDeadUni12("c2",0x1EBD,0x1EBC)
|
||
or CheckDeadUni12("c4",0x011B,0x011A)
|
||
or CheckDeadUni12("c5",0x0115,0x0114)
|
||
or CheckDeadUni12("c6",0x0113,0x0112)
|
||
or CheckDeadUni12("g1",0x00E8,0x00C8)
|
||
or CheckDeadAsc12("g3","ë","Ë")
|
||
or CheckDeadUni12("g4",0x0205,0x0204)
|
||
or CheckDeadUni12("a1",0x00E9,0x00C9)
|
||
or CheckDeadUni12("a2",0x0119,0x0118)
|
||
or CheckDeadUni12("a6",0x0117,0x0116)))
|
||
OutputChar12("e","E","e","E")
|
||
else if (Ebene = 3)
|
||
OutputChar("{}}", "braceright")
|
||
else if (Ebene = 4)
|
||
OutputChar("{Right}", "Right")
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x03B5, "Greek_epsilon") ; epsilon
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x2203, "U2203") ; es existiert
|
||
return
|
||
|
||
neo_f:
|
||
EbeneAktualisieren()
|
||
if (Ebene12 and !(CheckDeadUni12("a6",0x1E1F,0x1E1E)))
|
||
OutputChar12("f","F","f","F")
|
||
else if ((Ebene = 3) and !(CheckDeadUni("c1",0x2259) ; entspricht
|
||
or CheckDeadUni("c2",0x2245) ; ungefähr gleich
|
||
or CheckDeadUni("c3",0x2257) ; ring equal to
|
||
or CheckDeadUni("c4",0x225A) ; EQUIANGULAR TO
|
||
or CheckDeadUni("c6",0x2261) ; identisch
|
||
or CheckDeadUni("a3",0x2260))) ; ungleich
|
||
OutputChar("`=", "equal")
|
||
else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2079)
|
||
or CheckDeadUni("a3",0x2089)))
|
||
OutputChar("{Numpad9}", "KP_9")
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x03C6, "Greek_phi") ; phi
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x03A6, "Greek_PHI") ; Phi
|
||
return
|
||
|
||
neo_g:
|
||
EbeneAktualisieren()
|
||
if (Ebene12 and !(CheckDeadUni12("c1",0x011D,0x011C)
|
||
or CheckDeadUni12("c5",0x011F,0x011E)
|
||
or CheckDeadUni12("a2",0x0123,0x0122)
|
||
or CheckDeadUni12("a6",0x0121,0x0120)))
|
||
OutputChar12("g","G","g","G")
|
||
else if ((Ebene = 3) and !(CheckDeadUni("a3",0x2265))) ; größer gleich
|
||
OutputChar(">", "greater")
|
||
else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2078)
|
||
or CheckDeadUni("a3",0x2088)))
|
||
OutputChar("{Numpad8}", "KP_8")
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x03B3, "Greek_gamma") ; gamma
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x0393, "Greek_GAMMA") ; Gamma
|
||
return
|
||
|
||
neo_h:
|
||
EbeneAktualisieren()
|
||
if (Ebene12 and !(CheckDeadUni12("c1",0x0125,0x0124)
|
||
or CheckDeadUni12("a3",0x0127,0x0126)
|
||
or CheckDeadUni12("a6",0x1E23,0x1E22)))
|
||
OutputChar12("h","H","h","H")
|
||
else if ((Ebene = 3) and !(CheckDeadUni("a3",0x2264))) ; kleiner gleich
|
||
OutputChar("<", "less")
|
||
else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2077)
|
||
or CheckDeadUni("a3",0x2087)))
|
||
OutputChar("{Numpad7}", "KP_7")
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x03C8, "Greek_psi") ; psi
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x03A8, "Greek_PSI") ; Psi
|
||
return
|
||
|
||
neo_i:
|
||
EbeneAktualisieren()
|
||
if (Ebene12 and !(CheckDeadUni12("c1",0x00EE,0x00CE)
|
||
or CheckDeadUni12("c2",0x0129,0x0128)
|
||
or CheckDeadUni12("c4",0x01D0,0x01CF)
|
||
or CheckDeadUni12("c5",0x012D,0x012C)
|
||
or CheckDeadUni12("c6",0x012B,0x012A)
|
||
or CheckDeadUni12("g1",0x00EC,0x00CC)
|
||
or CheckDeadAsc12("g3","ï","Ï")
|
||
or CheckDeadUni12("g4",0x0209,0x0208)
|
||
or CheckDeadUni12("a1",0x00ED,0x00CD)
|
||
or CheckDeadUni12("a2",0x012F,0x012E)
|
||
or CheckDeadUni12("a3",0x0268,0x0197)
|
||
or CheckDeadUni12("a6",0x0131,0x0130)))
|
||
OutputChar12("i","I","i","I")
|
||
else if (Ebene = 3)
|
||
OutputChar("`/", "slash")
|
||
else if (Ebene = 4)
|
||
OutputChar("{Left}", "Left")
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x03B9, "Greek_iota") ; iota
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x222B, "integral") ; integral
|
||
return
|
||
|
||
neo_j:
|
||
EbeneAktualisieren()
|
||
if (Ebene12 and !(CheckDeadUni12("c1",0x0135,0x0134)
|
||
or CheckDeadUni( "c4",0x01F0)
|
||
or CheckDeadUni12("a3",0x0249,0x0248)))
|
||
OutputChar12("j","J","j","J")
|
||
else if (Ebene = 3)
|
||
OutputChar("`;", "semicolon")
|
||
else if (Ebene = 4)
|
||
OutputChar("`;", "semicolon")
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x03B8, "Greek_theta") ; theta
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x221D, "variation") ; proportional
|
||
return
|
||
|
||
neo_k:
|
||
EbeneAktualisieren()
|
||
if (Ebene12 and !(CheckDeadUni12("a2",0x0137,0x0136)
|
||
or CheckDeadUni12("a6",0x1E33,0x1E32)))
|
||
OutputChar12("k","K","k","K")
|
||
else if (Ebene = 3)
|
||
OutputChar("{!}", "exclam")
|
||
else if (Ebene = 4)
|
||
OutputChar("¡", "exclamdown")
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x03F0, "U03F0") ; kappa symbol (varkappa)
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x221A, "radical") ; Wurzel
|
||
return
|
||
|
||
neo_l:
|
||
EbeneAktualisieren()
|
||
if (Ebene12 and !(CheckDeadUni12("c4",0x013E,0x013D)
|
||
or CheckDeadUni12("a1",0x013A,0x0139)
|
||
or CheckDeadUni12("a2",0x013C,0x013B)
|
||
or CheckDeadUni12("a3",0x0142,0x0141)
|
||
or CheckDeadUni12("a6",0x1E37,0x1E36)))
|
||
OutputChar12("l","L","l","L")
|
||
else if (Ebene = 3)
|
||
OutputChar("[", "bracketleft")
|
||
else if (Ebene = 4)
|
||
OutputChar("{Up}", "Up")
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x03BB, "Greek_lambda") ; lambda
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x039B, "Greek_LAMBDA") ; Lambda
|
||
return
|
||
|
||
neo_m:
|
||
EbeneAktualisieren()
|
||
if (Ebene12 and !CheckDeadUni12("a6",0x1E41,0x1E40))
|
||
OutputChar12("m","M","m","M")
|
||
else if (Ebene = 3)
|
||
OutputChar("`%", "percent")
|
||
else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B9)
|
||
or CheckDeadUni("a3",0x2081)))
|
||
OutputChar("{Numpad1}", "KP_1")
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x03BC, "Greek_mu") ; griechisch mu, micro wäre 0x00B5
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x21D4, "ifonlyif") ; doppelter Doppelpfeil (genau dann wenn)
|
||
return
|
||
|
||
neo_n:
|
||
EbeneAktualisieren()
|
||
if (Ebene12 and !(CheckDeadUni12("c2",0x00F1,0x00D1)
|
||
or CheckDeadUni12("c4",0x0148,0x0147)
|
||
or CheckDeadUni12("a1",0x0144,0x0143)
|
||
or CheckDeadUni12("a2",0x0146,0x0145)
|
||
or CheckDeadUni12("a6",0x1E45,0x1E44)))
|
||
OutputChar12("n","N","n","N")
|
||
else if (Ebene = 3)
|
||
OutputChar("(", "parenleft")
|
||
else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2074)
|
||
or CheckDeadUni("a3",0x2084)))
|
||
OutputChar("{Numpad4}", "KP_4")
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x03BD, "Greek_nu") ; nu
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x2115, "U2115") ; N (natürliche Zahlen)
|
||
return
|
||
|
||
neo_o:
|
||
EbeneAktualisieren()
|
||
if (Ebene12 and !(CheckDeadUni12("c1",0x00F4,0x00D4)
|
||
or CheckDeadUni12("c2",0x00F5,0x00D5)
|
||
or CheckDeadUni12("c4",0x01D2,0x01D1)
|
||
or CheckDeadUni12("c5",0x014F,0x014E)
|
||
or CheckDeadUni12("c6",0x014D,0x014C)
|
||
or CheckDeadUni12("g1",0x00F2,0x00D2)
|
||
or CheckDeadAsc12("g3","ö","Ö")
|
||
or CheckDeadUni12("a1",0x00F3,0x00D3)
|
||
or CheckDeadUni12("a2",0x01EB,0x01EA)
|
||
or CheckDeadUni12("a3",0x00F8,0x00D8)
|
||
or CheckDeadUni12("a4",0x0151,0x0150)))
|
||
OutputChar12("o","O","o","O")
|
||
else if (Ebene = 3)
|
||
OutputChar("*", "asterisk")
|
||
else if (Ebene = 4)
|
||
OutputChar("{End}", "End")
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x03BF, "Greek_omicron") ; omicron
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x2208, "elementof") ; element of
|
||
return
|
||
|
||
neo_p:
|
||
EbeneAktualisieren()
|
||
if (Ebene12 and !(CheckDeadUni12("a6",0x1E57,0x1E56)))
|
||
OutputChar12("p","P","p","P")
|
||
else if ((Ebene = 3) and !(CheckDeadUni("c2",0x2248)))
|
||
OutputChar("~", "asciitilde")
|
||
else if (Ebene = 4)
|
||
OutputChar("{Enter}", "Return")
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x03C0, "Greek_pi") ; pi
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x03A0, "Greek_PI") ; Pi
|
||
return
|
||
|
||
neo_q:
|
||
EbeneAktualisieren()
|
||
if (Ebene12)
|
||
OutputChar12("q","Q","q","Q")
|
||
else if (Ebene = 3)
|
||
OutputChar("{&}", "ampersand")
|
||
else if ((Ebene = 4) and !(CheckDeadUni("c1",0x207A)
|
||
or CheckDeadUni("a3",0x208A)))
|
||
OutputChar("{NumPadAdd}", "KP_Add")
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x03D5, "U03D5") ; phi symbol (varphi)
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x211A, "U211A") ; Q (rationale Zahlen)
|
||
return
|
||
|
||
neo_r:
|
||
EbeneAktualisieren()
|
||
if (Ebene12 and !(CheckDeadUni12("c4",0x0159,0x0158)
|
||
or CheckDeadUni12("g3",0x1E5B,0x1E5A)
|
||
or CheckDeadUni12("a1",0x0155,0x0154)
|
||
or CheckDeadUni12("a2",0x0157,0x0156)
|
||
or CheckDeadUni12("a6",0x0E59,0x0E58)))
|
||
OutputChar12("r","R","r","R")
|
||
else if (Ebene = 3)
|
||
OutputChar(")", "parenright")
|
||
else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2075)
|
||
or CheckDeadUni("a3",0x2085)))
|
||
OutputChar("{Numpad5}", "KP_5")
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x03F1, "U03F1") ; rho symbol (varrho)
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x211D, "U221D") ; R (reelle Zahlen)
|
||
return
|
||
|
||
neo_s:
|
||
EbeneAktualisieren()
|
||
if (Ebene12 and !(CheckDeadUni12("a1",0x015B,0x015A)
|
||
or CheckDeadUni12("a2",0x015F,0x015E)
|
||
or CheckDeadUni12("a6",0x1E61,0x1E60)
|
||
or CheckDeadUni12("c1",0x015D,0x015C)
|
||
or CheckDeadUni12("c4",0x0161,0x0160)
|
||
or CheckDeadUni12("a6",0x1E63,0x1A62))) {
|
||
if (LangSTastatur and (Ebene = 1))
|
||
SendUnicodeChar(0x017F, "17F") ; langes s
|
||
else OutputChar12("s","S","s","S")
|
||
} else if (Ebene = 3)
|
||
OutputChar("?", "question")
|
||
else if (Ebene = 4)
|
||
OutputChar("¿", "questiondown")
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x03C3, "Greek_sigma") ;sigma
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x03A3, "Greek_SIGMA") ;Sigma
|
||
return
|
||
|
||
neo_t:
|
||
EbeneAktualisieren()
|
||
if (Ebene12 and !(CheckDeadUni12("a2",0x0163,0x0162)
|
||
or CheckDeadUni12("a6",0x1E6B,0x1E6A)
|
||
or CheckDeadUni12("c4",0x0165,0x0164)
|
||
or CheckDeadUni( "g3",0x1E97)))
|
||
OutputChar12("t","T","t","T")
|
||
else if (Ebene = 3)
|
||
OutputChar("-", "minus") ; Bisstrich
|
||
else if (Ebene = 4) and !(CheckDeadUni("c1",0x2076)
|
||
or CheckDeadUni("c5",0x2086))
|
||
OutputChar("{Numpad6}", "KP_6")
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x03C4, "Greek_tau") ; tau
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x2202, "partialderivative") ; partielle Ableitung
|
||
return
|
||
|
||
neo_u:
|
||
EbeneAktualisieren()
|
||
if (Ebene12 and !(CheckDeadUni12("c1",0x00FB,0x00DB)
|
||
or CheckDeadUni12("c2",0x0169,0x0168)
|
||
or CheckDeadUni12("c3",0x016F,0x016E)
|
||
or CheckDeadUni12("c4",0x01D4,0x01D3)
|
||
or CheckDeadUni12("c5",0x016D,0x016C)
|
||
or CheckDeadUni12("c6",0x016B,0x016A)
|
||
or CheckDeadUni12("g1",0x00F9,0x00D9)
|
||
or CheckDeadAsc12("g3","ü","Ü")
|
||
or CheckDeadUni12("a1",0x00FA,0x00DA)
|
||
or CheckDeadUni12("a2",0x0173,0x0172)
|
||
or CheckDeadUni12("a4",0x0171,0x0170)))
|
||
OutputChar12("u","U","u","U")
|
||
else if (Ebene = 3)
|
||
OutputChar("\", "backslash")
|
||
else if (Ebene = 4)
|
||
OutputChar("{Home}", "Home")
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x222E, "U222E") ; contour integral
|
||
return
|
||
|
||
neo_v:
|
||
EbeneAktualisieren()
|
||
if (Ebene12 and !(CheckDeadUni12("a6",0x1E7F,0x1E7E)))
|
||
OutputChar12("v","V","v","V")
|
||
else if (Ebene = 3)
|
||
OutputChar("_","underscore")
|
||
else if (Ebene = 4) and (!lernModus or lernModus_neo_Backspace)
|
||
OutputChar("{Backspace}", "BackSpace")
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x2259, "U2259") ; estimates/entspricht
|
||
return
|
||
|
||
neo_w:
|
||
EbeneAktualisieren()
|
||
if (Ebene12 and !(CheckDeadUni12("c1",0x0175,0x0174)))
|
||
OutputChar12("w","W","w","W")
|
||
else if (Ebene = 3)
|
||
OutputChar("{^}{space}", "asciicircum") ; Zirkumflex
|
||
else if (Ebene = 4)
|
||
OutputChar("{Insert}", "Insert") ; Einfg
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x03C9, "Greek_omega") ; omega
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x03A9, "Greek_OMEGA") ; Omega
|
||
return
|
||
|
||
neo_x:
|
||
EbeneAktualisieren()
|
||
if Ebene12
|
||
OutputChar12("x","X","x","X")
|
||
else if (Ebene = 3)
|
||
OutputChar("…", "ellipsis") ; Ellipse horizontal
|
||
else if (Ebene = 4)
|
||
SendUnicodeChar(0x22EE, "U22EE") ; Ellipse vertikal
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x03BE, "Greek_xi") ; xi
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x039E, "Greek_XI") ; Xi
|
||
return
|
||
|
||
neo_y:
|
||
EbeneAktualisieren()
|
||
if (Ebene12 and !(CheckDeadUni12("c1",0x0177,0x0176)
|
||
or CheckDeadAsc12("g3","ÿ","Ÿ")
|
||
or CheckDeadUni12("a1",0x00FD,0x00DD)))
|
||
OutputChar12("y","Y","y","Y")
|
||
else if (Ebene = 3)
|
||
OutputChar("@", "at")
|
||
else if (Ebene = 4)
|
||
OutputChar(".", "period")
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x03C5, "Greek_upsilon") ; upsilon
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x2207, "nabla") ; nabla
|
||
return
|
||
|
||
neo_z:
|
||
EbeneAktualisieren()
|
||
if (Ebene12 and !(CheckDeadUni12("a1",0x017A,0x0179)
|
||
or CheckDeadUni12("a6",0x017C,0x017B)
|
||
or CheckDeadUni12("c4",0x017E,0x017D)))
|
||
OutputChar12("z","Z","z","Z")
|
||
else if (Ebene = 3)
|
||
OutputChar("``{space}", "grave") ; untot
|
||
else if (Ebene = 4)
|
||
send {Ctrl down}z{Ctrl up}
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x03B6, "Greek_zeta") ; zeta
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x2124, "U2124") ; Z (ganze Zahlen)
|
||
return
|
||
|
||
neo_ä:
|
||
EbeneAktualisieren()
|
||
if (Ebene12 and !(CheckDeadUni12("c6",0x01DF,0x01DE)))
|
||
OutputChar12("ä","Ä","adiaeresis","Adiaeresis")
|
||
else if (Ebene = 3)
|
||
OutputChar("|", "bar")
|
||
else if (Ebene = 4)
|
||
OutputChar("{PgDn}", "Next")
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x03B7, "Greek_eta") ; eta
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x2135, "U2135") ; Kardinalzahlen, Aleph-Symbol
|
||
return
|
||
|
||
neo_ö:
|
||
EbeneAktualisieren()
|
||
if (Ebene12 and !(CheckDeadUni12("c6",0x022B,0x022A)))
|
||
OutputChar12("ö","Ö","odiaeresis","Odiaeresis")
|
||
else if (Ebene = 3)
|
||
OutputChar("$", "dollar")
|
||
else if (Ebene = 4)
|
||
OutputChar("{Tab}", "Tab")
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x2111, "U2221") ; Fraktur I
|
||
return
|
||
|
||
neo_ü:
|
||
EbeneAktualisieren()
|
||
if (Ebene12 and !(CheckDeadUni12("a1",0x01D8,0x01D7)
|
||
or CheckDeadUni12("g1",0x01DC,0x01DB)
|
||
or CheckDeadUni12("c4",0x01DA,0x01D9)
|
||
or CheckDeadUni12("c6",0x01D6,0x01D5)))
|
||
OutputChar12("ü","Ü","udiaeresis","Udiaeresis")
|
||
else if (Ebene = 3)
|
||
if isMod2Locked
|
||
OutputChar("{Shift Up}{#}", "numbersign")
|
||
else OutputChar("{blind}{#}", "numbersign")
|
||
else if (Ebene = 4)
|
||
OutputChar("{Esc}", "Escape")
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x211C, "U221C") ; Fraktur R
|
||
return
|
||
|
||
neo_sz:
|
||
EbeneAktualisieren()
|
||
if (Ebene = 1)
|
||
if LangSTastatur
|
||
OutputChar("s", "s")
|
||
else OutputChar("ß", "ssharp")
|
||
else if (Ebene = 2)
|
||
SendUnicodeChar(0x1E9E, "U1E9E") ; versal-ß
|
||
else if (Ebene = 3)
|
||
if LangSTastatur
|
||
OutputChar("ß", "ssharp")
|
||
else SendUnicodeChar(0x017F, "17F") ; langes s
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x03C2, "Greek_finalsmallsigma") ; varsigma
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x2218, "jot") ; Verknüpfungsoperator
|
||
return
|
||
|
||
neo_0:
|
||
noCaps = 1
|
||
EbeneAktualisieren()
|
||
if Ebene12 and !(CheckDeadUni("c1",0x2070) ; Hochgestellte 0
|
||
or CheckDeadUni("a3",0x2080)) ; Tiefgestellte 0
|
||
OutputChar12(0,"”",0,"rightdoublequotemark")
|
||
else if (Ebene = 3)
|
||
OutputChar("’", "rightsingleqoutemark")
|
||
else if (Ebene = 4)
|
||
OutputChar("{NumpadSub}", "KP_Minus")
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x2080, "U2080")
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x2205, "emptyset") ; leere Menge
|
||
return
|
||
|
||
neo_1:
|
||
noCaps=1
|
||
EbeneAktualisieren()
|
||
if Ebene12 and !(CheckDeadUni("c1",0x00B9) ; Hochgestellte 1
|
||
or CheckDeadUni("a3",0x2081)) ; Tiefgestellte 1
|
||
OutputChar12(1,"°",1,"degree")
|
||
else if (Ebene = 3)
|
||
OutputChar("¹", "onesuperior") ; Hochgestellte 1
|
||
else if (Ebene = 4)
|
||
OutputChar("º", "U00BA") ; männlicher Ordinalindikator (º)
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x2081, "U2081") ; Tiefgestellte 1
|
||
else if (Ebene = 6)
|
||
OutputChar("¬", "notsign") ; Nicht-Symbol
|
||
return
|
||
|
||
neo_2:
|
||
noCaps = 1
|
||
EbeneAktualisieren()
|
||
if Ebene12 and !(CheckDeadUni("c1",0x00B2) ; Hochgestellte 2
|
||
or CheckDeadUni("a3",0x2082)) ; Tiefgestellte 2
|
||
OutputChar12(2,"§",2,"section")
|
||
else if (Ebene = 3)
|
||
OutputChar("²", "twosuperior") ; Hochgestellte 2
|
||
else if (Ebene = 4)
|
||
OutputChar("ª", "U00AA") ; weiblicher Ordinalindikator (ª)
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x2082, "U2082") ; Tiefgestellte 2
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x2228, "logicalor") ; Logisches Oder
|
||
return
|
||
|
||
neo_3:
|
||
noCaps = 1
|
||
EbeneAktualisieren()
|
||
if (Ebene = 1) and !(CheckDeadUni("c1",0x00B3) ; Hochgestellte 3
|
||
or CheckDeadUni("a3",0x2083)) ; Tiefgestellte 3
|
||
OutputChar(3,3)
|
||
else if (Ebene = 2)
|
||
SendUnicodeChar(0x2113, "U2113") ; kleines l (Skript)
|
||
else if (Ebene = 3)
|
||
OutputChar("³", "threesuperior") ; Hochgestellte 3
|
||
else if (Ebene = 4)
|
||
SendUnicodeChar(0x2116, "numerosign") ; Numero
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x2083, "U2083") ; Tiefgestellte 3
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x2227, "logicaland") ; Logisches Und
|
||
return
|
||
|
||
neo_4:
|
||
noCaps = 1
|
||
EbeneAktualisieren()
|
||
if (Ebene = 1) and !(CheckDeadUni("c1",0x2074) ; Hochgestellte 4
|
||
or CheckDeadUni("a3",0x2084)) ; Tiefgestellte 4
|
||
OutputChar(4,4)
|
||
else if (Ebene = 2)
|
||
OutputChar("»", "guillemotright")
|
||
else if (Ebene = 3)
|
||
OutputChar("›", "U230A") ; Single guillemot right
|
||
else if (Ebene = 4)
|
||
OutputChar("{PgUp}", "Prior") ; Bild auf
|
||
else if (Ebene = 5)
|
||
OutputChar("†", "dagger") ; Kreuz
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x22A5, "uptack") ; Senkrecht
|
||
return
|
||
|
||
neo_5:
|
||
noCaps = 1
|
||
EbeneAktualisieren()
|
||
if (Ebene = 1) and !(CheckDeadUni("c1",0x2075) ; Hochgestellte 5
|
||
or CheckDeadUni("a3",0x2085)) ; Tiefgestellte 5
|
||
OutputChar(5,5)
|
||
else if (Ebene = 2)
|
||
OutputChar("«", "guillemotleft") ; Double guillemot left
|
||
else if (Ebene = 3)
|
||
OutputChar("‹", "U2039") ; Single guillemot left
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x2640, "femalesymbol")
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x2221, "U2221") ; Winkel
|
||
return
|
||
|
||
neo_6:
|
||
noCaps = 1
|
||
EbeneAktualisieren()
|
||
if (Ebene = 1) and !(CheckDeadUni("c1",0x2076) ; Hochgestellte 6
|
||
or CheckDeadUni("a3",0x2086)) ; Tiefgestellte 6
|
||
OutputChar(6,6)
|
||
else if (Ebene = 2)
|
||
SendUnicodeChar(0x20AC, "EuroSign")
|
||
else if (Ebene = 3)
|
||
OutputChar("¢", "cent")
|
||
else if (Ebene = 4)
|
||
OutputChar("£", "sterling")
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x2642, "malesymbol")
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x2225, "U2225") ; parallel
|
||
return
|
||
|
||
neo_7:
|
||
noCaps = 1
|
||
EbeneAktualisieren()
|
||
if Ebene12 and !(CheckDeadUni("c1",0x2077) ; Hochgestellte 7
|
||
or CheckDeadUni("a3",0x2087)) ; Tiefgestellte 7
|
||
OutputChar12(7,"$",7,"dollar")
|
||
else if (Ebene = 3)
|
||
OutputChar("¥", "yen")
|
||
else if (Ebene = 4)
|
||
OutputChar("¤", "currency")
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x03BA, "Greek_kappa") ; greek small letter kappa
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x2192, "rightarrow") ; Rechtspfeil
|
||
return
|
||
|
||
neo_8:
|
||
noCaps = 1
|
||
EbeneAktualisieren()
|
||
if Ebene12 and !(CheckDeadUni("c1",0x2078) ; Hochgestellte 8
|
||
or CheckDeadUni("a3",0x2088)) ; Tiefgestellte 8
|
||
OutputChar12(8,"„",8,"doublelowquotemark")
|
||
else if (Ebene = 3)
|
||
OutputChar("‚", "singlelowquotemark")
|
||
else if (Ebene = 4)
|
||
OutputChar("{NumpadDiv}", "KP_Divide")
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x27E8, "U27E8") ; bra (öffnende spitze Klammer)
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x221E, "infinity")
|
||
return
|
||
|
||
neo_9:
|
||
noCaps = 1
|
||
EbeneAktualisieren()
|
||
if Ebene12 and !(CheckDeadUni("c1",0x2079) ; Hochgestellte 9
|
||
or CheckDeadUni("a3",0x2089)) ; Tiefgestellte 9
|
||
OutputChar12(9,"“",9,"leftdoublequotemark")
|
||
else if (Ebene = 3)
|
||
OutputChar("‘", "leftsinglequotemark")
|
||
else if (Ebene = 4)
|
||
OutputChar("{NumpadMult}", "KP_Multiply")
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x27E9, "U27E9") ; ket (schließende spitze Klammer)
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x2226, "U2226") ; nicht parallel
|
||
return
|
||
|
||
neo_punkt:
|
||
noCaps = 1
|
||
EbeneAktualisieren()
|
||
if (Ebene = 1)
|
||
OutputChar(".", "period")
|
||
else if (Ebene = 2)
|
||
SendUnicodeChar(0x2023, "") ; Dreieckiges Aufzählungszeichen
|
||
else if (Ebene = 3)
|
||
OutputChar("'", "apostrophe")
|
||
else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B3)
|
||
or CheckDeadUni("t4",0x2083)))
|
||
OutputChar("{Numpad3}", "KP_3")
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x03D1, "U03D1") ; theta symbol (vartheta)
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x0398, "Greek_THETA") ; Theta
|
||
return
|
||
|
||
neo_komma:
|
||
noCaps = 1
|
||
EbeneAktualisieren()
|
||
if (Ebene = 1)
|
||
OutputChar(",", "comma")
|
||
else if (Ebene = 2)
|
||
OutputChar("•", "enfilledcircbullet") ; Bullet
|
||
else if (Ebene = 3)
|
||
OutputChar(Chr(34), "quotedbl")
|
||
else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B2)
|
||
or CheckDeadUni("c5",0x2082)))
|
||
OutputChar("{Numpad2}", "KP_2")
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x03C1, "Greek_rho") ; rho
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x21D2, "implies") ; Doppelpfeil rechts
|
||
return
|
||
|
||
neo_strich:
|
||
noCaps = 1
|
||
EbeneAktualisieren()
|
||
if (Ebene = 1)
|
||
OutputChar("-", "minus") ; Bindestrich-Minus
|
||
else if (Ebene = 2)
|
||
SendUnicodeChar(0x2013, "endash") ; Gedankenstrich
|
||
else if (Ebene = 3)
|
||
SendUnicodeChar(0x2014, "emdash") ; Englischer Gedankenstrich (Geviertstrich)
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x2011, "U2011") ; geschützter Bindestrich (Bindestrich ohne Zeilenumbruch)
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x00AD, "hyphen") ; weicher Bindestrich
|
||
return
|
||
|
||
*space::
|
||
if einHandNeo
|
||
spacepressed := 1
|
||
else goto neo_SpaceUp
|
||
return
|
||
|
||
*space up::
|
||
if einHandNeo
|
||
if keypressed {
|
||
keypressed := 0
|
||
spacepressed := 0
|
||
} else goto neo_SpaceUp
|
||
return
|
||
|
||
neo_SpaceUp:
|
||
EbeneAktualisieren()
|
||
if (Ebene = 1) and !CheckDeadUni("a3",0x2010) ; Echter Bindestrich
|
||
OutputChar("{Space}", "Space")
|
||
else if (Ebene = 2) or (Ebene = 3)
|
||
Send {blind}{Space}
|
||
else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2070)
|
||
or CheckDeadUni("a3",0x2080)))
|
||
OutputChar("{Numpad0}", "KP_0")
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x00A0, "U00A0") ; geschütztes Leerzeichen
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x202F, "U202F") ; schmales geschütztes Leerzeichen
|
||
DeadKey := ""
|
||
CompKey := ""
|
||
spacepressed := 0
|
||
keypressed := 0
|
||
return
|
||
|
||
*Enter::
|
||
EbeneAktualisieren()
|
||
if !lernModus or lernModus_std_Return {
|
||
if (Ebene = 4)
|
||
send {blind}{NumpadEnter}
|
||
else send {blind}{Enter}
|
||
DeadKey := ""
|
||
CompKey := ""
|
||
} return
|
||
|
||
*Backspace::
|
||
if !lernModus or lernModus_std_Backspace {
|
||
send {Blind}{Backspace}
|
||
DeadKey := ""
|
||
CompKey := ""
|
||
} return
|
||
|
||
*Del::
|
||
if !lernModus or lernModus_std_Entf
|
||
send {Blind}{Del}
|
||
return
|
||
|
||
*Ins::
|
||
if !lernModus or lernModus_std_Einf
|
||
send {Blind}{Ins}
|
||
return
|
||
|
||
neo_tab:
|
||
EbeneAktualisieren()
|
||
if IsMod3Pressed() { ; Compose!
|
||
DeadKey := "comp"
|
||
CompKey := ""
|
||
} else {
|
||
OutputChar("{Tab}", "Tab")
|
||
DeadKey := ""
|
||
CompKey := ""
|
||
} return
|
||
|
||
*Home::
|
||
if !lernModus or lernModus_std_Pos1 {
|
||
send {Blind}{Home}
|
||
DeadKey := ""
|
||
CompKey := ""
|
||
} return
|
||
|
||
*End::
|
||
if !lernModus or lernModus_std_Ende {
|
||
send {Blind}{End}
|
||
DeadKey := ""
|
||
CompKey := ""
|
||
} return
|
||
|
||
*PgUp::
|
||
if !lernModus or lernModus_std_PgUp {
|
||
send {Blind}{PgUp}
|
||
DeadKey := ""
|
||
CompKey := ""
|
||
} return
|
||
|
||
*PgDn::
|
||
if !lernModus or lernModus_std_PgDn {
|
||
send {Blind}{PgDn}
|
||
DeadKey := ""
|
||
CompKey := ""
|
||
} return
|
||
|
||
*Up::
|
||
if !lernModus or lernModus_std_Hoch {
|
||
send {Blind}{Up}
|
||
DeadKey := ""
|
||
CompKey := ""
|
||
} return
|
||
|
||
*Down::
|
||
if !lernModus or lernModus_std_Runter {
|
||
send {Blind}{Down}
|
||
DeadKey := ""
|
||
CompKey := ""
|
||
} return
|
||
|
||
*Left::
|
||
if !lernModus or lernModus_std_Links {
|
||
send {Blind}{Left}
|
||
DeadKey := ""
|
||
CompKey := ""
|
||
} return
|
||
|
||
*Right::
|
||
if !lernModus or lernModus_std_Rechts {
|
||
send {Blind}{Right}
|
||
DeadKey := ""
|
||
CompKey := ""
|
||
} return
|
||
|
||
neo_Numpad0:
|
||
EbeneAktualisieren()
|
||
if (Ebene = 1)
|
||
OutputChar("{Numpad0}", "KP_0")
|
||
else if (Ebene = 2)
|
||
SendUnicodeChar(0x2423, "U2423") ; space sign
|
||
else if (Ebene = 3)
|
||
SendUnicodeChar(0x0025, "percent") ; Prozent
|
||
else if (Ebene = 4)
|
||
send {blind}{NumpadIns}
|
||
else if (Ebene = 5)
|
||
OutputChar("‰", "U2030") ; Promille
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x25A1, "U25A1") ; white square
|
||
return
|
||
|
||
neo_Numpad1:
|
||
EbeneAktualisieren()
|
||
if (Ebene = 1)
|
||
OutputChar("{Numpad1}", "KP_1")
|
||
else if (Ebene = 2)
|
||
SendUnicodeChar(0x2666, "diamond") ; Karo
|
||
else if (Ebene = 3)
|
||
SendUnicodeChar(0x2194, "U2194") ; Links-Rechts-Pfeil
|
||
else if (Ebene = 4)
|
||
send {blind}{NumpadEnd}
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x2264, "lessthanequal")
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x230A, "downstile") ;linke Untergrenze
|
||
return
|
||
|
||
neo_Numpad2:
|
||
EbeneAktualisieren()
|
||
if (Ebene = 1)
|
||
OutputChar("{Numpad2}", "KP_2")
|
||
else if (Ebene = 2)
|
||
SendUnicodeChar(0x2265, "heart")
|
||
else if (Ebene = 3)
|
||
SendUnicodeChar(0x2192, "downarrow")
|
||
else if (Ebene = 4)
|
||
send {blind}{NumpadDown}
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x222A, "union") ; Vereinigung
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x22C3, "U22C3") ; n-ary union
|
||
return
|
||
|
||
neo_Numpad3:
|
||
EbeneAktualisieren()
|
||
if (Ebene = 1)
|
||
OutputChar("{Numpad3}", "KP_3")
|
||
else if (Ebene = 2)
|
||
SendUnicodeChar(0x2660, "U2660") ; Pik
|
||
else if (Ebene = 3)
|
||
SendUnicodeChar(0x21CC, "U21CC") ; Harpune
|
||
else if (Ebene = 4)
|
||
send {blind}{NumpadPgDn}
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x2265, "greaterthanequal")
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x230B, "U230B") ; rechte Untergrenze
|
||
return
|
||
|
||
neo_Numpad4:
|
||
EbeneAktualisieren()
|
||
if (Ebene = 1)
|
||
OutputChar("{Numpad4}", "KP_4")
|
||
else if (Ebene = 2)
|
||
SendUnicodeChar(0x2663, "club") ; schwarzes Kreuz
|
||
else if (Ebene = 3)
|
||
SendUnicodeChar(0x2190, "leftarrow") ; Linkspfeil
|
||
else if (Ebene = 4)
|
||
send {blind}{NumpadLeft}
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x2282, "includein") ; Teilmenge
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x2286, "U2286") ; Teilmenge-gleich
|
||
return
|
||
|
||
neo_Numpad5:
|
||
EbeneAktualisieren()
|
||
if (Ebene = 1)
|
||
OutputChar("{Numpad5}", "KP_5")
|
||
else if (Ebene = 2)
|
||
SendUnicodeChar(0x20AC, "EuroSign") ; Euro
|
||
else if (Ebene = 3)
|
||
SendUnicodeChar(0x00A6, "brokenbar")
|
||
else if (Ebene = 4)
|
||
send {blind}{NumPadClear} ; begin
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x22B6, "U22B6") ; original of
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x22B7, "U22B7") ; image of
|
||
return
|
||
|
||
neo_Numpad6:
|
||
EbeneAktualisieren()
|
||
if (Ebene = 1)
|
||
OutputChar("{Numpad6}", "KP_6")
|
||
else if (Ebene = 3)
|
||
SendUnicodeChar(0x2192, "rightarrow") ; Rechtspfeil
|
||
else if (Ebene = 4)
|
||
send {blind}{NumpadRight}
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x2283, "includes") ; Obermenge
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x2287, "U2287") ; Obermenge-gleich
|
||
return
|
||
|
||
neo_Numpad7:
|
||
EbeneAktualisieren()
|
||
if (Ebene = 1)
|
||
OutputChar("{Numpad7}", "KP_7")
|
||
else if (Ebene = 2)
|
||
SendUnicodeChar(0x2714, "U2714") ; check mark
|
||
else if (Ebene = 3)
|
||
SendUnicodeChar(0x2195, "U2195") ; Hoch-Runter-Pfeil
|
||
else if (Ebene = 4)
|
||
send {blind}{NumpadHome}
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x226A, "U226A") ; much less
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x2308, "upstile") ; linke Obergrenze
|
||
return
|
||
|
||
neo_Numpad8:
|
||
EbeneAktualisieren()
|
||
if (Ebene = 1)
|
||
OutputChar("{Numpad8}", "KP_8")
|
||
else if (Ebene = 2)
|
||
SendUnicodeChar(0x2718, "U2718") ; ballot x
|
||
else if (Ebene = 3)
|
||
SendUnicodeChar(0x2191, "uparrow") ; Hochpfeil
|
||
else if (Ebene = 4)
|
||
send {blind}{NumpadUp}
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x2229, "intersection") ; Durchschnitt
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x22C2, "U22C2") ; n-ary intersection
|
||
return
|
||
|
||
neo_Numpad9:
|
||
EbeneAktualisieren()
|
||
if (Ebene = 1)
|
||
OutputChar("{Numpad9}", "KP_9")
|
||
else if (Ebene = 2)
|
||
SendUnicodeChar(0x2020, "dagger") ; Kreuz
|
||
else if (Ebene = 3)
|
||
SendUnicodeChar(0x20D7, "U20D7") ; Vektor
|
||
else if (Ebene = 4)
|
||
send {blind}{NumpadPgUp}
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x226B, "U226B") ; much greater
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x2309, "U2309") ; rechte Obergrenze
|
||
return
|
||
|
||
neo_NumLock:
|
||
EbeneAktualisieren()
|
||
if Ebene12
|
||
OutputChar("{Tab}", "Tab")
|
||
else if (Ebene = 3)
|
||
OutputChar("`=", "equal")
|
||
else if (Ebene = 4)
|
||
SendUnicodeChar(0x2260, "notequal") ; Ungleich zu
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x2248, "approxeq") ; Fast gleich
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x2261, "identical")
|
||
return
|
||
|
||
neo_NumpadDiv:
|
||
EbeneAktualisieren()
|
||
if Ebene12
|
||
OutputChar("{NumpadDiv}", "KP_Divide")
|
||
else if (Ebene = 3)
|
||
OutputChar("÷", "division")
|
||
else if (Ebene = 4)
|
||
SendUnicodeChar(0x2300, "U2300") ; diameter
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x2223, "U2223") ; divides
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x2044, "U2044") ; fraction slash
|
||
return
|
||
|
||
neo_NumpadMult:
|
||
EbeneAktualisieren()
|
||
if Ebene12
|
||
send {blind}{NumpadMult}
|
||
else if (Ebene = 3)
|
||
SendUnicodeChar(0x22C5, "U22C5") ; multiplication dot
|
||
else if (Ebene = 4)
|
||
SendUnicodeChar(0x2299, "U2299") ; circled dot
|
||
else if (Ebene = 5)
|
||
OutputChar("×", "multiply")
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x2297, "U2297") ; circled times
|
||
return
|
||
|
||
neo_NumpadSub:
|
||
EbeneAktualisieren()
|
||
if (Ebene12 and !(CheckDeadUni("c1",0x207B)
|
||
or CheckDeadUni("a3",0x208B)))
|
||
send {blind}{NumpadSub}
|
||
else if (Ebene = 3)
|
||
SendUnicodeChar(0x2212, "U2212") ; Echtes Minus
|
||
else if (Ebene = 4)
|
||
SendUnicodeChar(0x2296, "U2296") ; circled minus
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x2216, "U2216") ; set minus
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x2238, "U2238") ; dot minus
|
||
return
|
||
|
||
neo_NumpadAdd:
|
||
EbeneAktualisieren()
|
||
if (Ebene12 and !(CheckDeadUni("c1",0x207A)
|
||
or CheckDeadUni("a3",0x208A)))
|
||
send {blind}{NumpadAdd}
|
||
else if (Ebene = 3)
|
||
OutputChar("±", "plusminus")
|
||
else if (Ebene = 4)
|
||
SendUnicodeChar(0x2295, "U2295") ; circled plus
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x2213, "U2213") ; minus-plus
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x2214, "U2214") ; dot plus
|
||
return
|
||
|
||
neo_NumpadEnter:
|
||
send {blind}{NumpadEnter}
|
||
return
|
||
|
||
neo_NumpadDot:
|
||
EbeneAktualisieren()
|
||
if (Ebene = 1)
|
||
send {blind}{NumpadDot}
|
||
else if (Ebene = 2)
|
||
send {blind}.
|
||
else if (Ebene = 3)
|
||
send `,
|
||
else if (Ebene = 4)
|
||
send {blind}{NumpadDel}
|
||
else if (Ebene = 5)
|
||
SendUnicodeChar(0x2032, "minutes")
|
||
else if (Ebene = 6)
|
||
SendUnicodeChar(0x2033, "seconds")
|
||
return
|
||
|
||
neo_tot1:
|
||
noCaps = 1
|
||
EbeneAktualisieren()
|
||
if (Ebene = 1) and !CheckDeadUni("c1",0x0302) ; Zirkumflex, tot
|
||
|
||
deadUni(0x02C6, "dead_circumflex", "c1")
|
||
|
||
else if (Ebene = 2) and !CheckDeadUni("c2",0x0303) ; Tilde, tot
|
||
|
||
deadUni(0x02DC, "dead_tilde", "c2")
|
||
|
||
else if (Ebene = 3) and !CheckDeadUni("c3",0x030A) ; Ring, tot
|
||
|
||
deadUni(0x02DA, "dead_breve", "c3")
|
||
|
||
else if (Ebene = 4) and !CheckDeadUni("c4",0x030C) ; Caron, tot
|
||
|
||
deadUni(0x02C7, "dead_caron", "c4")
|
||
|
||
else if (Ebene = 5) and !CheckDeadUni("c5",0x0306) ; Brevis, tot
|
||
|
||
deadUni(0x02D8, "dead_breve", "c5")
|
||
|
||
else if (Ebene = 6) and !CheckDeadUni("c6",0x0304) ; Makron, tot
|
||
|
||
deadAsc("¯", "dead_macron", "c6")
|
||
return
|
||
|
||
neo_tot2:
|
||
noCaps = 1
|
||
EbeneAktualisieren()
|
||
if (Ebene = 1) and !CheckDeadUni("g1",0x0300) ; Gravis, tot
|
||
|
||
deadAsc("``{space}", "dead_grave", "g1")
|
||
|
||
else if (Ebene = 3) and !CheckDeadUni("g3",0x0308) ; Diärese, tot
|
||
|
||
deadUni(0x00A8, "dead_diaeresis", "g3")
|
||
|
||
else if (Ebene = 4) and !CheckDeadUni("g4",0x030F) ; Doppelgravis, tot
|
||
|
||
deadUni(0x02F5, "dead_doublegrave", "g4")
|
||
|
||
else if (Ebene = 5) and !CheckDeadUni("g5",0x0485) ; Spiritus asper, tot
|
||
|
||
deadUni(0x1FFE, "U1FFE", "g5")
|
||
return
|
||
|
||
neo_tot3:
|
||
noCaps = 1
|
||
EbeneAktualisieren()
|
||
if (Ebene = 1) and !CheckDeadUni("a1",0x0301) ; Akut, tot
|
||
|
||
deadAsc("{´}{space}", "dead_acute", "a1")
|
||
|
||
else if (Ebene = 2) and !CheckDeadUni("a2",0x0327) ; Cedille, tot
|
||
|
||
deadAsc("¸", "dead_cedilla", "a2")
|
||
|
||
else if (Ebene = 3) and !CheckDeadUni("a3",0x0337) ; Strich, tot
|
||
|
||
deadUni(0x002F, "dead_stroke", "a3")
|
||
|
||
else if (Ebene = 4) and !CheckDeadUni("a4",0x0338) ; Doppelakut, tot
|
||
|
||
deadUni(0x02DD, "dead_doubleacute", "a4")
|
||
|
||
else if (Ebene = 5) and !CheckDeadUni("a5",0x0486) ; Spiritus lenis, tot
|
||
|
||
deadUni(0x1FBF, "U1FBF", "a5")
|
||
|
||
else if (Ebene = 6) and !CheckDeadUni("a6",0x0307) ; Punkt darüber, tot
|
||
|
||
deadUni(0x02D9, "dead_abovedot", "a6")
|
||
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) auszuschließ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," |