2008-08-18 19:25:20 +00:00
SetNumLockState AlwaysOff
2008-07-02 14:06:46 +00:00
2008-08-12 00:03:21 +00:00
/* * * * * * * * * * * * * * * *
* Verzeichnisse *
* * * * * * * * * * * * * * * * *
2008-08-07 23:22:27 +00:00
* /
; Setzt den Pfad zu einem tempor<6F> 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%
2008-08-12 00:03:21 +00:00
/* * * * * * * * * * * * * * * * * * *
* Globale Schalter *
* * * * * * * * * * * * * * * * * * * *
2008-06-14 12:48:46 +00:00
* /
2008-06-22 01:27:36 +00:00
; Im folgenden gilt (soweit nicht anders angegeben) Ja = 1, Nein = 0:
2008-08-07 23:22:27 +00:00
; Syntaxhinweis: IniRead, Variable, InputFilename, Section, Key [, DefaultValue]
2008-07-25 06:46:11 +00:00
2008-08-07 23:22:27 +00:00
; Sollen die Bilder f<> r die Bildschirmtastatur in die compilierte EXE-Datei miteingebunden werden? (Nachteil: gr<67> ssere Dateigr<67> sse, Vorteil: Referenz f<> r Anf<6E> nger stets einfach verf<72> gbar)
bildschirmTastaturEinbinden := 1
; Sollen Ebenen 1-4 ignoriert werden (kann z.B. vom dll Treiber <20> bernommen werden)?
IniRead , ahkTreiberKombi , %ApplicationFolder% \NEO2 . ini , Global , ahkTreiberKombi , 0
; Soll der Treiber im Einhandmodus betrieben werden?
IniRead , einHandNeo , %ApplicationFolder% \NEO2 . ini , Global , einHandNeo , 0
; Soll der Lernmodus aktiviert werden?
IniRead , lernModus , %ApplicationFolder% \NEO2 . ini , Global , lernModus , 0
2008-08-18 19:25:20 +00:00
; Soll mit einer MsgBox explizit auf das Ein- und Ausschalten des Mod4-Locks hingewiesen werden?
IniRead , zeigeLockBox , %ApplicationFolder% \NEO2 . ini , Global , zeigeLockBox , 1
2008-08-12 01:24:03 +00:00
2008-08-12 00:03:21 +00:00
; Soll aktivierter Mod4-Lock <20> ber die Rollen-LED des Keybord angezeigt werden (analog zu CapsLock)?
2008-08-07 23:22:27 +00:00
IniRead , UseMod4Light , %ApplicationFolder% \NEO2 . ini , Global , UseMod4Light , 1
2008-08-12 00:03:21 +00:00
; Soll Lang-s auf s, s auf <20> und <20> auf Lang-s gelegt (bzw. vertauscht) werden?
2008-08-07 23:22:27 +00:00
IniRead , LangSTastatur , %ApplicationFolder% \NEO2 . ini , Global , LangSTastatur , 0
2008-08-12 00:03:21 +00:00
; Sollen tote Tasten blind angezeigt werden?
IniRead , DeadCompose , %ApplicationFolder% \NEO2 . ini , Global , DeadCompose , 0
2008-06-18 23:26:43 +00:00
2008-08-12 00:03:21 +00:00
;Sollen Compose-Tasten blind angezeigt werden?
IniRead , DeadSilence , %ApplicationFolder% \NEO2 . ini , Global , DeadSilence , 0
2008-06-22 01:27:36 +00:00
2008-08-12 00:03:21 +00:00
/* * * * * * * * * * * * * * * * * * * * * * *
* Recourcen - Verwaltung *
* * * * * * * * * * * * * * * * * * * * * * * *
* /
2008-07-31 02:55:02 +00:00
if ( FileExist ( " ResourceFolder " ) < > false ) {
2008-08-12 00:03:21 +00:00
; 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
}
2008-07-31 02:55:02 +00:00
} else {
2008-08-12 00:03:21 +00:00
MsgBox , " Das Verzeichnis %ResourceFolder% konnte nicht angelegt werden! " ; Diese Zeile dient nur der eventuellen Fehlersuche und sollte eigentlich niemals auftauchen.
2008-06-22 01:27:36 +00:00
}
2008-07-31 02:55:02 +00:00
; Benutze die Dateien auch dann, wenn sie eventuell im aktuellen Verzeichnis vorhanden sind
2008-06-16 17:29:58 +00:00
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 " ) )
2008-06-14 21:24:20 +00:00
iconBenutzen = 1
2008-06-14 20:31:51 +00:00
2008-06-21 19:27:39 +00:00
2008-08-12 00:03:21 +00:00
/* * * * * * * * * * * * * * * * * * * * * * * * * *
* lernModus Konfiguration *
* nur relevant wenn *
* lernModus = 1 *
* Strg + Komma schaltet um *
* * * * * * * * * * * * * * * * * * * * * * * * * * *
2008-06-21 19:27:39 +00:00
* /
; 0 = aus, 1 = an
; die Nachfolgenden sind n<> tzlich um sich die Qwertz-Tasten abzugew<65> 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
2008-06-22 00:21:54 +00:00
lernModus_std_Pos0 = 0
2008-06-21 19:27:39 +00:00
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
2008-08-12 00:03:21 +00:00
; aus Noras Skript kopiert:
2008-08-07 23:22:27 +00:00
Process , Priority , , High
2008-05-06 11:41:19 +00:00
#usehook on
#singleinstance force
#LTrim
; Quelltext kann einger<65> ckt werden,
; msgbox ist trotzdem linksb<73> ndig
SetTitleMatchMode 2
2008-07-02 14:06:46 +00:00
SendMode Input
2008-05-06 11:41:19 +00:00
name = Neo 2.0
enable = Aktiviere %name%
disable = Deaktiviere %name%
; <20> berpr<70> 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
{
2008-08-12 00:03:21 +00:00
suspend
regread , inputlocale , HKEY_LOCAL_MACHINE
, SYSTEM \CurrentControlSet \Control \Keyboard Layouts \%inputlocale%
, Layout Text
msgbox , 48 , Warnung ! ,
(
Nicht kompatibles Tastaturlayout :
`t %inputlocale%
`n Das deutsche QWERTZ muss als Standardlayout eingestellt
sein , damit %name% wie erwartet funktioniert .
`n <EFBFBD> ndern Sie die Tastatureinstellung unter
`t Systemsteuerung
`t - > Regions - und Sprachoptionen
`t - > Sprachen
`t - > Details . . . `n
)
exitapp
2008-05-06 11:41:19 +00:00
}
2008-07-02 14:06:46 +00:00
2008-05-06 11:41:19 +00:00
; Men<65> des Systray-Icons
; ----------------------
2008-06-14 20:31:51 +00:00
if ( iconBenutzen )
2008-08-12 00:03:21 +00:00
menu , tray , icon , %ResourceFolder% \neo . ico , , 1
2008-05-06 11:41:19 +00:00
menu , tray , nostandard
menu , tray , add , <EFBFBD> ffnen , open
2008-08-12 00:03:21 +00:00
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
2008-06-10 20:35:23 +00:00
menu , tray , add , Hilfe , : helpmenu
2008-05-06 11:41:19 +00:00
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%
/*
2008-08-12 00:03:21 +00:00
Variablen initialisieren
2008-05-06 11:41:19 +00:00
* /
2008-08-10 18:43:18 +00:00
DeadKey = " "
CompKey = " "
PriorDeadKey = " "
PriorCompKey = " "
Ebene12 = 0
2008-05-06 11:41:19 +00:00
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
2008-06-18 23:26:43 +00:00
/*
2008-08-12 00:03:21 +00:00
EinHandNeo
2008-06-18 23:26:43 +00:00
* /
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_ <EFBFBD>
gespiegelt_punkt = neo_ <EFBFBD>
gespiegelt_j = neo_ <EFBFBD>
2008-08-12 00:03:21 +00:00
;Blinde/Sichtbare Tote Tasten
* F9 : :
if ( isMod4pressed ( ) )
DeadSilence := not ( DeadSilence )
else
send { blind } { F9 }
return
;Blinde/Sichtbare Compose
* F10 : :
if ( isMod4pressed ( ) )
DeadCompose := not ( DeadCompose )
else
send { blind } { F10 }
return
2008-06-18 23:26:43 +00:00
2008-08-12 00:03:21 +00:00
;Lang-s-Tastatur:
* F11 : :
if ( isMod4pressed ( ) )
LangSTastatur := not ( LangSTastatur ) ; schaltet die Lang-s-Tastatur ein und aus
else
send { blind } { F11 }
return
2008-07-02 14:06:46 +00:00
2008-08-12 00:03:21 +00:00
* Esc : :
if ( isMod4pressed ( ) )
reload
else
send { blind } { Esc }
return
2008-08-18 19:25:20 +00:00
2008-05-06 11:41:19 +00:00
/*
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
2008-08-18 19:25:20 +00:00
Shift + Pause " pausiert " das Skript .
2008-05-06 11:41:19 +00:00
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* /
2008-08-18 19:25:20 +00:00
* pause : :
Suspend , Permit
if isshiftpressed ( )
goto togglesuspend
else
send { blind } { pause }
return
; ------------------------------------
^ . : : einHandNeo := not ( einHandNeo ) ; Punkt
^ , : : lernModus := not ( lernModus ) ; Komma
togglesuspend:
if A_IsSuspended
{
menu , tray , rename , %enable% , %disable%
menu , tray , tip , %name%
if ( iconBenutzen )
menu , tray , icon , %ResourceFolder% \neo . ico , , 1
suspend , off ; Schaltet Suspend aus -> NEO
}
else
{
menu , tray , rename , %disable% , %enable%
menu , tray , tip , %name% : Deaktiviert
if ( iconBenutzen )
menu , tray , icon , %ResourceFolder% \neo_disabled . ico , , 1
suspend , on ; Schaltet Suspend ein -> QWERTZ
}
return
2008-06-10 20:35:23 +00:00
2008-08-18 19:25:20 +00:00
help:
Run , %A_WinDir% \hh mk : @MSITStore : autohotkey . chm
return
about:
msgbox , 64 , %name% <EFBFBD> Ergonomische Tastaturbelegung ,
(
%name%
`n Das Neo - Layout ersetzt das <EFBFBD> bliche deutsche
Tastaturlayout mit der Alternative Neo ,
beschrieben auf http : / / neo - layout . org / .
`n Dazu sind keine Administratorrechte n <EFBFBD> tig .
`n Wenn Autohotkey aktiviert ist , werden alle Tastendrucke
abgefangen und statt dessen eine <EFBFBD> bersetzung weitergeschickt .
`n Dies geschieht transparent f <EFBFBD> r den Anwender ,
es muss nichts installiert werden .
`n Die Zeichen <EFBFBD> bersetzung kann leicht <EFBFBD> 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)
2008-08-10 18:43:18 +00:00
; Es werden nur die beiden Tastenkombinationen abgefragt,
; daher kommen LShift und RShift ungehindert bis in die
; Applikation. Dies ist aber merkw<6B> rdig, da beide Shift-
; Tasten nun /modifier keys/ werden und, wie in der AHK-
; Hilfe beschrieben, eigentlich nicht mehr bis zur App
; durchkommen sollten.
2008-08-18 19:25:20 +00:00
; KeyboardLED(4,"switch") hatte ich zuerst genommen, aber
; das schaltet, oh Wunder, die LED nicht wieder aus.
2008-06-10 20:35:23 +00:00
2008-08-18 19:25:20 +00:00
isMod2Locked = 0
2008-08-10 18:43:18 +00:00
VKA1SC136 & VKA0SC02A : : ; RShift, dann LShift
VKA0SC02A & VKA1SC136 : : ; LShift, dann RShift
2008-08-18 19:25:20 +00:00
if ( GetKeyState ( " VKA1SC136 " , " P " ) and GetKeyState ( " VKA0SC02A " , " P " ) )
{
if isMod2Locked
{
isMod2Locked = 0
KeyboardLED ( 4 , " off " )
}
else
{
isMod2Locked = 1
KeyBoardLED ( 4 , " on " )
}
}
2008-06-10 20:35:23 +00:00
return
2008-08-18 19:25:20 +00:00
;Mod3-Tasten (Wichtig, sie werden sonst nicht verarbeitet!)
2008-08-10 18:43:18 +00:00
* VKBFSC02B : : ; #
* VK14SC03A : : ; CapsLock
2008-05-06 11:41:19 +00:00
return
2008-08-18 19:25:20 +00:00
;Mod4+Mod4 == Mod4-Lock
; Im Gegensatz zu LShift+RShift werden die beiden Tasten
; _nicht_ zur Applikation weitergeleitet, und nur bei
; gleichzeitigem Dr<44> cken wird der Mod4-Lock aktiviert und
; angezeigt.
2008-08-10 18:43:18 +00:00
2008-06-14 11:43:05 +00:00
IsMod4Locked := 0
2008-08-10 18:43:18 +00:00
* VKA5SC138 : :
* VKE2SC056 : :
2008-08-18 19:25:20 +00:00
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 <EFBFBD> sen , dr <EFBFBD> cke beide Mod4 - Tasten gleichzeitig !
IsMod4Locked = 1
if UseMod4Light
KeyboardLED ( 1 , " on " )
}
}
2008-06-14 11:43:05 +00:00
return
2008-08-18 19:25:20 +00:00
Ebene12 := 0
Ebene7 := 0
Ebene8 := 0
EbeneAktualisieren ( )
{
global
PriorDeadKey := DeadKey
PriorCompKey := CompKey
DeadKey := " "
CompKey := " "
Modstate := IsMod4Pressed ( ) . IsMod3Pressed ( ) . IsShiftPressed ( )
if ahkTreiberKombi
if ( Modstate = " 001 " )
Ebene = 6
else
Ebene = - 1
else
if ( Modstate = " 000 " ) ; Ebene 1: Ohne Mod
Ebene = 1
else if ( Modstate = " 001 " ) ; Ebene 2: Shift
Ebene = 2
else if ( Modstate = " 010 " ) ; Ebene 3: Mod3
Ebene = 3
else if ( Modstate = " 100 " ) ; Ebene 4: Mod4
Ebene = 4
else if ( Modstate = " 011 " ) ; Ebene 5: Shift+Mod3
Ebene = 5
else if ( Modstate = " 110 " ) ; Ebene 6: Mod3+Mod4
Ebene = 6
else if ( Modstate = " 101 " ) ; Ebene 7: Shift+Mod4 impliziert Ebene 4
{
Ebene = 4
Ebene7 = 1
}
else if ( Modstate = " 111 " ) ; Ebene 8: Shift+Mod3+Mod4 impliziert Ebene 6
{
Ebene = 6
Ebene8 = 1
}
Ebene12 := ( ( Ebene = 1 ) or ( Ebene = 2 ) )
Ebene14 := ( ( Ebene = 1 ) or ( Ebene = 4 ) )
GetKeyState ( " NumLock " , " T " )
}
IsShiftPressed ( )
2008-08-18 22:22:41 +00:00
{
2008-08-18 19:25:20 +00:00
global
return ( ( GetKeyState ( " Shift " , " P " ) ) = ! ( isMod2Locked ) ) ;xor
}
IsMod3Pressed ( )
{
global
return ( ( GetKeyState ( " CapsLock " , " P " ) ) or ( GetKeyState ( " # " , " P " ) ) )
}
IsMod4Pressed ( )
{
global
if ( not ( einHandNeo ) or not ( spacepressed ) )
if IsMod4Locked
return ( not ( GetKeyState ( " < " , " P " ) or GetKeyState ( " SC138 " , " P " ) ) )
else
return ( GetKeyState ( " < " , " P " ) or GetKeyState ( " SC138 " , " P " ) )
else
if IsMod4Lock
return ( not ( GetKeyState ( " < " , " P " ) or GetKeyState ( " SC138 " , " P " ) or GetKeyState ( " <EFBFBD> " , " P " ) ) )
else
return ( GetKeyState ( " < " , " P " ) or GetKeyState ( " SC138 " , " P " ) or GetKeyState ( " <EFBFBD> " , " P " ) )
}
2008-06-18 23:26:43 +00:00
/*
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
QWERTZ - > Neo umwandlung
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* /
; Reihe 1
2008-08-10 18:43:18 +00:00
* 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 : :
2008-06-18 23:26:43 +00:00
if ( not ( einHandNeo ) or not ( spacepressed ) )
goto neo_7
else
{
keypressed := 1
goto %gespiegelt_7%
}
2008-08-10 18:43:18 +00:00
* VK38SC009 : :
2008-06-18 23:26:43 +00:00
if ( not ( einHandNeo ) or not ( spacepressed ) )
goto neo_8
else
{
keypressed := 1
goto %gespiegelt_8%
}
2008-08-10 18:43:18 +00:00
* VK39SC00A : :
2008-06-18 23:26:43 +00:00
if ( not ( einHandNeo ) or not ( spacepressed ) )
goto neo_9
else
{
keypressed := 1
goto %gespiegelt_9%
}
2008-08-10 18:43:18 +00:00
* VK30SC00B : :
2008-06-18 23:26:43 +00:00
if ( not ( einHandNeo ) or not ( spacepressed ) )
goto neo_0
else
{
keypressed := 1
goto %gespiegelt_0%
}
2008-08-10 18:43:18 +00:00
* VKDBSC00C : : ; <20>
2008-06-19 09:24:55 +00:00
if ( not ( ahkTreiberKombi ) )
2008-06-18 23:26:43 +00:00
{
if ( not ( einHandNeo ) or not ( spacepressed ) )
goto neo_strich
else
{
keypressed := 1
goto %gespiegelt_strich%
}
}
else
{
goto neo_sz
}
2008-08-10 18:43:18 +00:00
* VKDDSC00D : : goto neo_tot2 ; Akut
2008-06-18 23:26:43 +00:00
; Reihe 2
2008-08-10 18:43:18 +00:00
VK09SC00F:: goto neo_tab
* VK51SC010 : : ; q (x)
2008-06-19 09:24:55 +00:00
if ( not ( ahkTreiberKombi ) )
2008-06-18 23:26:43 +00:00
{
goto neo_x
}
else
{
goto neo_q
}
2008-08-10 18:43:18 +00:00
* VK57SC011 : : ; w (v)
2008-06-19 09:24:55 +00:00
if ( not ( ahkTreiberKombi ) )
2008-06-18 23:26:43 +00:00
{
2008-07-02 14:06:46 +00:00
goto neo_v
2008-06-18 23:26:43 +00:00
}
else
{
goto neo_w
}
2008-08-10 18:43:18 +00:00
* VK45SC012 : : ; e (l)
2008-06-19 09:24:55 +00:00
if ( not ( ahkTreiberKombi ) )
2008-06-18 23:26:43 +00:00
{
2008-07-02 14:06:46 +00:00
goto neo_l
2008-06-18 23:26:43 +00:00
}
else
{
goto neo_e
}
2008-08-10 18:43:18 +00:00
* VK52SC013 : : ; r (c)
2008-06-19 09:24:55 +00:00
if ( not ( ahkTreiberKombi ) )
2008-06-18 23:26:43 +00:00
{
goto neo_c
}
else
{
goto neo_r
}
2008-08-10 18:43:18 +00:00
* VK54SC014 : : ; t (w)
2008-06-19 09:24:55 +00:00
if ( not ( ahkTreiberKombi ) )
2008-06-18 23:26:43 +00:00
{
goto neo_w
}
else
{
goto neo_t
}
2008-08-10 18:43:18 +00:00
* VK5ASC015 : : ; z (k)
2008-06-19 09:24:55 +00:00
if ( not ( ahkTreiberKombi ) )
2008-06-18 23:26:43 +00:00
{
if ( not ( einHandNeo ) or not ( spacepressed ) )
goto neo_k
else
{
keypressed := 1
goto %gespiegelt_k%
}
}
else
{
goto neo_z
}
2008-08-10 18:43:18 +00:00
* VK55SC016 : : ; u (h)
2008-06-19 09:24:55 +00:00
if ( not ( ahkTreiberKombi ) )
2008-06-18 23:26:43 +00:00
{
if ( not ( einHandNeo ) or not ( spacepressed ) )
goto neo_h
else
{
keypressed := 1
goto %gespiegelt_h%
}
}
else
{
goto neo_u
}
2008-08-10 18:43:18 +00:00
* VK49SC017 : : ; i (g)
2008-06-19 09:24:55 +00:00
if ( not ( ahkTreiberKombi ) )
2008-06-18 23:26:43 +00:00
{
if ( not ( einHandNeo ) or not ( spacepressed ) )
goto neo_g
else
{
keypressed := 1
goto %gespiegelt_g%
}
}
else
{
goto neo_i
}
2008-08-10 18:43:18 +00:00
* VK4FSC018 : : ; o (f)
2008-06-19 09:24:55 +00:00
if ( not ( ahkTreiberKombi ) )
2008-06-18 23:26:43 +00:00
{
if ( not ( einHandNeo ) or not ( spacepressed ) )
goto neo_f
else
{
keypressed := 1
goto %gespiegelt_f%
}
}
else
{
goto neo_o
}
2008-08-10 18:43:18 +00:00
* VK50SC019 : : ; p (q)
2008-06-19 09:24:55 +00:00
if ( not ( ahkTreiberKombi ) )
2008-06-18 23:26:43 +00:00
{
if ( not ( einHandNeo ) or not ( spacepressed ) )
goto neo_q
else
{
keypressed := 1
goto %gespiegelt_q%
}
}
else
{
goto neo_p
}
2008-08-10 18:43:18 +00:00
* VKBASC01A : : ; <20> (<28> )
2008-06-19 09:24:55 +00:00
if ( not ( ahkTreiberKombi ) )
2008-06-18 23:26:43 +00:00
{
if ( not ( einHandNeo ) or not ( spacepressed ) )
goto neo_sz
else
{
keypressed := 1
goto %gespiegelt_sz%
}
}
else
{
goto neo_ <EFBFBD>
}
2008-08-10 18:43:18 +00:00
* VKBBSC01B : : ; + (tot3)
2008-06-19 09:24:55 +00:00
if ( not ( ahkTreiberKombi ) )
2008-06-18 23:26:43 +00:00
{
if ( not ( einHandNeo ) or not ( spacepressed ) )
goto neo_tot3
else
{
keypressed := 1
goto %gespiegelt_tot3%
}
}
else
{ } ; this should never happen
2008-08-10 18:43:18 +00:00
2008-06-18 23:26:43 +00:00
; Reihe 3
2008-08-10 18:43:18 +00:00
* VK41SC01E : : ; a (u)
2008-06-19 09:24:55 +00:00
if ( not ( ahkTreiberKombi ) )
2008-06-18 23:26:43 +00:00
{
goto neo_u
}
else
{
goto neo_a
}
2008-08-10 18:43:18 +00:00
* VK53SC01F : : ; s (i)
2008-06-19 09:24:55 +00:00
if ( not ( ahkTreiberKombi ) )
2008-06-18 23:26:43 +00:00
{
goto neo_i
}
else
{
goto neo_s
}
2008-08-10 18:43:18 +00:00
* VK44SC020 : : ; d (a)
2008-06-19 09:24:55 +00:00
if ( not ( ahkTreiberKombi ) )
2008-06-18 23:26:43 +00:00
{
goto neo_a
}
else
{
goto neo_d
}
2008-08-10 18:43:18 +00:00
* VK46SC021 : : ; f (e)
2008-06-19 09:24:55 +00:00
if ( not ( ahkTreiberKombi ) )
2008-06-18 23:26:43 +00:00
{
goto neo_e
}
else
{
goto neo_f
}
2008-08-10 18:43:18 +00:00
* VK47SC022 : : ; g (o)
2008-06-19 09:24:55 +00:00
if ( not ( ahkTreiberKombi ) )
2008-06-18 23:26:43 +00:00
{
goto neo_o
}
else
{
goto neo_g
}
2008-08-10 18:43:18 +00:00
* VK48SC023 : : ; h (s)
2008-06-19 09:24:55 +00:00
if ( not ( ahkTreiberKombi ) )
2008-06-18 23:26:43 +00:00
{
if ( not ( einHandNeo ) or not ( spacepressed ) )
goto neo_s
else
{
keypressed := 1
goto %gespiegelt_s%
}
}
else
{
goto neo_h
}
2008-08-10 18:43:18 +00:00
* VK4ASC024 : : ; j (n)
2008-06-19 09:24:55 +00:00
if ( not ( ahkTreiberKombi ) )
2008-06-18 23:26:43 +00:00
{
if ( not ( einHandNeo ) or not ( spacepressed ) )
goto neo_n
else
{
keypressed := 1
goto %gespiegelt_n%
}
}
else
{
goto neo_j
}
2008-08-10 18:43:18 +00:00
* VK4BSC025 : : ; k (r)
2008-06-19 09:24:55 +00:00
if ( not ( ahkTreiberKombi ) )
2008-06-18 23:26:43 +00:00
{
if ( not ( einHandNeo ) or not ( spacepressed ) )
goto neo_r
else
{
keypressed := 1
goto %gespiegelt_r%
}
}
else
{
goto neo_k
}
2008-08-10 18:43:18 +00:00
* VK4CSC026 : : ; l (t)
2008-06-19 09:24:55 +00:00
if ( not ( ahkTreiberKombi ) )
2008-06-18 23:26:43 +00:00
{
if ( not ( einHandNeo ) or not ( spacepressed ) )
goto neo_t
else
{
keypressed := 1
goto %gespiegelt_t%
}
}
else
{
goto neo_l
}
2008-08-10 18:43:18 +00:00
* VKC0SC027 : : ; <20> (d)
2008-06-19 09:24:55 +00:00
if ( not ( ahkTreiberKombi ) )
2008-06-18 23:26:43 +00:00
{
if ( not ( einHandNeo ) or not ( spacepressed ) )
goto neo_d
else
{
keypressed := 1
goto %gespiegelt_d%
}
}
else
{
goto neo_ <EFBFBD>
}
2008-08-10 18:43:18 +00:00
* VKDESC028 : : ; <20> (y)
2008-06-19 09:24:55 +00:00
if ( not ( ahkTreiberKombi ) )
2008-06-18 23:26:43 +00:00
{
goto neo_y
}
else
{
goto neo_ <EFBFBD>
}
2008-08-10 18:43:18 +00:00
2008-06-18 23:26:43 +00:00
; Reihe 4
2008-08-10 18:43:18 +00:00
* VK59SC02C : : ; y (<28> )
2008-06-19 09:24:55 +00:00
if ( not ( ahkTreiberKombi ) )
2008-06-18 23:26:43 +00:00
{
goto neo_ <EFBFBD>
}
else
{
goto neo_y
}
2008-08-10 18:43:18 +00:00
* VK58SC02D : : ; x (<28> )
2008-06-19 09:24:55 +00:00
if ( not ( ahkTreiberKombi ) )
2008-06-18 23:26:43 +00:00
{
goto neo_ <EFBFBD>
}
else
{
goto neo_x
}
2008-08-10 18:43:18 +00:00
* VK43SC02E : : ; c (<28> )
2008-06-19 09:24:55 +00:00
if ( not ( ahkTreiberKombi ) )
2008-06-18 23:26:43 +00:00
{
goto neo_ <EFBFBD>
}
else
{
goto neo_c
}
2008-08-10 18:43:18 +00:00
* VK56SC02F : : ; v (p)
2008-06-19 09:24:55 +00:00
if ( not ( ahkTreiberKombi ) )
2008-06-18 23:26:43 +00:00
{
goto neo_p
}
else
{
goto neo_v
}
2008-08-10 18:43:18 +00:00
* VK42SC030 : : ; b (z)
2008-06-19 09:24:55 +00:00
if ( not ( ahkTreiberKombi ) )
2008-06-18 23:26:43 +00:00
{
goto neo_z
}
else
{
goto neo_b
}
2008-08-10 18:43:18 +00:00
* VK4ESC031 : : ; n (b)
2008-06-19 09:24:55 +00:00
if ( not ( ahkTreiberKombi ) )
2008-06-18 23:26:43 +00:00
{
if ( not ( einHandNeo ) or not ( spacepressed ) )
goto neo_b
else
{
keypressed := 1
goto %gespiegelt_b%
}
}
else
{
goto neo_n
}
2008-08-10 18:43:18 +00:00
* VK4DSC032 : : ; m (m)
2008-06-18 23:26:43 +00:00
if ( not ( einHandNeo ) or not ( spacepressed ) )
goto neo_m
else
{
keypressed := 1
goto %gespiegelt_m%
}
2008-08-10 18:43:18 +00:00
* VKBCSC033 : : ; , (,)
2008-06-18 23:26:43 +00:00
if ( not ( einHandNeo ) or not ( spacepressed ) )
goto neo_komma
else
{
keypressed := 1
goto %gespiegelt_komma%
}
2008-08-10 18:43:18 +00:00
* VKBESC034 : : ; . (.)
2008-06-18 23:26:43 +00:00
if ( not ( einHandNeo ) or not ( spacepressed ) )
goto neo_punkt
else
{
keypressed := 1
goto %gespiegelt_punkt%
}
2008-08-10 18:43:18 +00:00
* VKBDSC035 : : ; - (j)
2008-06-19 09:24:55 +00:00
if ( not ( ahkTreiberKombi ) )
2008-06-18 23:26:43 +00:00
{
if ( not ( einHandNeo ) or not ( spacepressed ) )
goto neo_j
else
{
keypressed := 1
goto %gespiegelt_j%
}
}
else
{
goto neo_strich
}
2008-08-10 18:43:18 +00:00
2008-06-18 23:26:43 +00:00
; Numpad
2008-08-18 19:25:20 +00:00
* VK90SC145 : : goto neo_NumLock
2008-08-10 18:43:18 +00:00
* VK6FSC135 : : goto neo_NumpadDiv
* VK6ASC037 : : goto neo_NumpadMult
* VK6DSC04A : : goto neo_NumpadSub
* VK6BSC04E : : goto neo_NumpadAdd
* VK0DSC11C : : goto neo_NumpadEnter
2008-06-18 23:26:43 +00:00
2008-08-10 18:43:18 +00:00
* VK67SC047 : : ; NumPad7 (mit NumLock und ohne Shift)
* VK24SC047 : : goto neo_Numpad7 ; NumPadHome (ohne Numlock oder mit Shift)
2008-07-02 14:06:46 +00:00
2008-08-10 18:43:18 +00:00
* VK68SC048 : : ; NumPad8 (mit NumLock und ohne Shift)
* VK26SC048 : : goto neo_Numpad8 ; NumPadUp (ohne Numlock oder mit Shift)
2008-07-02 14:06:46 +00:00
2008-08-10 18:43:18 +00:00
* VK69SC049 : : ; NumPad9 (mit NumLock und ohne Shift)
* VK21SC049 : : goto neo_Numpad9 ; NumPadPgUp (ohne Numlock oder mit Shift)
* VK64SC04B : : ; NumPad4 (mit NumLock und ohne Shift)
* VK25SC04B : : goto neo_Numpad4 ; NumPadLeft (ohne Numlock oder mit Shift)
* VK65SC04C : : ; NumPad5 (mit NumLock und ohne Shift)
* VK0CSC04C : : goto neo_Numpad5 ; NumPadClear(ohne Numlock oder mit Shift)
* VK66SC04D : : ; NumPad6 (mit NumLock und ohne Shift)
* VK27SC04D : : goto neo_Numpad6 ; NumPadRight(ohne Numlock oder mit Shift)
* VK61SC04F : : ; NumPad1 (mit NumLock und ohne Shift)
* VK23SC04F : : goto neo_Numpad1 ; NumPadEnd (ohne Numlock oder mit Shift)
* VK62SC050 : : ; NumPad2 (mit NumLock und ohne Shift)
* VK28SC050 : : goto neo_Numpad2 ; NumPadDown (ohne Numlock oder mit Shift)
* VK63SC051 : : ; NumPad3 (mit NumLock und ohne Shift)
* VK22SC051 : : goto neo_Numpad3 ; NumPadPgDn (ohne Numlock oder mit Shift)
* VK60SC052 : : ; NumPad0 (mit NumLock und ohne Shift)
* VK2DSC052 : : goto neo_Numpad0 ; NumPadIns (ohne Numlock oder mit Shift)
* VK6ESC053 : : ; NumPadDot (mit NumLock und ohne Shift)
* VK2ESC053 : : goto neo_NumpadDot ; NumPadIns (ohne Numlock oder mit Shift)
2008-05-06 11:41:19 +00:00
/*
2008-07-02 14:06:46 +00:00
Die eigentliche NEO - Belegung und der Hauptteil des AHK - Treibers .
2008-08-12 00:03:21 +00:00
Ablauf bei toten Tasten :
2008-08-18 19:25:20 +00:00
1. Ebene Aktualisieren .
2. Abh <EFBFBD> ngig von der Variablen " Ebene " Zeichen ausgeben und die Variable " PriorDeadKey " setzen .
2008-07-02 14:06:46 +00:00
2008-08-12 00:03:21 +00:00
Ablauf bei " untoten " Tasten :
2008-08-18 19:25:20 +00:00
1. Ebene Aktualisieren .
2. Abh <EFBFBD> ngig von den Variablen " Ebene " und " PriorDeadKey " Zeichen ausgeben .
3. " PriorDeadKey " mit leerem String <EFBFBD> berschreiben .
2008-05-06 11:41:19 +00:00
2008-08-12 00:03:21 +00:00
Reihe 1
2008-05-06 11:41:19 +00:00
* /
2008-06-18 23:26:43 +00:00
neo_tot1:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene = 1 )
{
deadUni ( 0x02C6 ) ; Zirkumflex, tot
DeadKey := " c1 "
}
else if ( Ebene = 2 )
{
deadUni ( 0x02C7 ) ; Caron, tot
DeadKey := " c2 "
}
else if ( Ebene = 3 )
{
deadUni ( 0x02D8 ) ; Brevis, tot
DeadKey := " c3 "
}
else if ( Ebene = 4 )
{
deadUni ( 0x00B7 ) ; Mittenpunkt, tot
DeadKey := " c4 "
}
else if ( Ebene = 5 )
{
2008-08-18 19:25:20 +00:00
deadUni ( 0x002D ) ; Querstrich, tot
2008-08-12 00:03:21 +00:00
DeadKey := " c5 "
}
else if ( Ebene = 6 )
{
2008-08-18 19:25:20 +00:00
deadUni ( 0x002E ) ; Punkt drunter (Colon), tot
2008-08-12 00:03:21 +00:00
DeadKey := " c6 "
}
CompKey := PriorCompKey
2008-05-06 11:41:19 +00:00
return
2008-06-18 23:26:43 +00:00
neo_1:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene = 1 )
{
if ! ( CheckDeadUni ( " c1 " , 0x00B9 )
or CheckDeadUni ( " c5 " , 0x2081 )
or CheckComp3Uni ( " r_1 " , 0x217A ) ; r<> misch xi
or CheckComp3Uni ( " R_1 " , 0x216A ) ) ; r<> misch XI
if ( GetKeyState ( " CapsLock " , " T " ) )
send { blind } { Shift down } 1 { Shift up }
else if ( not ( lernModus ) or lernModus_std_ZahlenReihe )
send { blind } 1
2008-08-10 18:43:18 +00:00
if ( PriorDeadKey = " comp " )
2008-05-06 11:41:19 +00:00
CompKey := " 1 "
2008-08-11 10:55:06 +00:00
else if ( PriorCompKey == " r " )
2008-08-10 18:43:18 +00:00
CompKey := " r_1 "
2008-08-11 10:55:06 +00:00
else if ( PriorCompKey == " R " )
2008-08-10 18:43:18 +00:00
CompKey := " R_1 "
2008-05-06 11:41:19 +00:00
}
2008-08-10 18:43:18 +00:00
else if ( Ebene = 2 )
2008-05-06 11:41:19 +00:00
send <EFBFBD>
2008-08-10 18:43:18 +00:00
else if ( Ebene = 3 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x00B9 ) ; Hochgestellte 2
2008-08-10 18:43:18 +00:00
else if ( Ebene = 4 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x2022 ) ; Bullet
2008-08-10 18:43:18 +00:00
else if ( Ebene = 5 )
2008-06-14 11:43:05 +00:00
SendUnicodeChar ( 0x2640 ) ; Piktogramm weiblich
2008-08-10 18:43:18 +00:00
else if ( Ebene = 6 )
2008-06-14 11:43:05 +00:00
SendUnicodeChar ( 0x00AC ) ; Nicht-Symbol
2008-05-06 11:41:19 +00:00
return
2008-06-18 23:26:43 +00:00
neo_2:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene = 1 )
{
if ! ( CheckDeadUni ( " c1 " , 0x00B2 )
or CheckDeadUni ( " c5 " , 0x2082 )
or CheckCompUni ( " r " , 0x2171 ) ; r<> misch ii
or CheckCompUni ( " R " , 0x2161 ) ; r<> misch II
or CheckComp3Uni ( " r_1 " , 0x217B ) ; r<> misch xii
or CheckComp3Uni ( " R_1 " , 0x216B ) ) ; r<> misch XII
if ( GetKeyState ( " CapsLock " , " T " ) )
send { blind } { Shift down } 2 { Shift up }
else if ( not ( lernModus ) or lernModus_std_ZahlenReihe )
send { blind } 2
2008-08-10 18:43:18 +00:00
2008-08-12 00:03:21 +00:00
if ( PriorDeadKey = " comp " )
CompKey := " 2 "
}
else if ( Ebene = 2 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x2116 ) ; Numero
2008-08-12 00:03:21 +00:00
else if ( Ebene = 3 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x00B2 ) ; Hochgestellte 2
2008-08-12 00:03:21 +00:00
else if ( Ebene = 4 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x2023 ) ; Aufz<66> hlungspfeil
2008-08-12 00:03:21 +00:00
else if ( Ebene = 5 )
SendUnicodeChar ( 0x26A5 ) ; Piktogramm Zwitter
else if ( Ebene = 6 )
SendUnicodeChar ( 0x2228 ) ; Logisches Oder
2008-05-06 11:41:19 +00:00
return
2008-06-18 23:26:43 +00:00
neo_3:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene = 1 )
{
if ! ( CheckDeadUni ( " c1 " , 0x00B3 )
or CheckDeadUni ( " c5 " , 0x2083 )
or CheckCompUni ( " 1 " , 0x2153 ) ; 1/3
or CheckCompUni ( " 2 " , 0x2154 ) ; 2/3
or CheckCompUni ( " r " , 0x2172 ) ; r<> misch iii
or CheckCompUni ( " R " , 0x2162 ) ) ; r<> misch III
if ( GetKeyState ( " CapsLock " , " T " ) )
send { blind } { Shift down } 3 { Shift up }
else if ( not ( lernModus ) or lernModus_std_ZahlenReihe )
send { blind } 3
2008-08-10 18:43:18 +00:00
2008-08-12 00:03:21 +00:00
if ( PriorDeadKey = " comp " )
CompKey := " 3 "
}
else if ( Ebene = 2 )
send <EFBFBD>
else if ( Ebene = 3 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x00B3 ) ; Hochgestellte 3
2008-08-12 00:03:21 +00:00
else if ( Ebene = 4 )
{
CompKey := PriorCompKey
DeadKey := PriorDeadKey
} ; leer
else if ( Ebene = 5 )
SendUnicodeChar ( 0x2642 ) ; Piktogramm Mann
else if ( Ebene = 6 )
SendUnicodeChar ( 0x2227 ) ; Logisches Und
2008-05-06 11:41:19 +00:00
return
2008-06-18 23:26:43 +00:00
neo_4:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene = 1 )
{
if ! ( CheckDeadUni ( " c1 " , 0x2074 )
or CheckDeadUni ( " c5 " , 0x2084 )
or CheckCompUni ( " r " , 0x2173 ) ; r<> misch iv
or CheckCompUni ( " R " , 0x2163 ) ) ; r<> misch IV
if ( GetKeyState ( " CapsLock " , " T " ) )
send { blind } { Shift down } 4 { Shift up }
else if ( not ( lernModus ) or lernModus_std_ZahlenReihe )
send { blind } 4
2008-08-10 18:43:18 +00:00
2008-08-12 00:03:21 +00:00
if ( PriorDeadKey = " comp " )
CompKey := " 4 "
}
else if ( Ebene = 2 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x00BB ) ; Double guillemot right
2008-08-12 00:03:21 +00:00
else if ( Ebene = 3 )
Send { blind } <EFBFBD> ; Single guillemot right
else if ( Ebene = 4 )
2008-08-18 19:25:20 +00:00
Send { blind } { PgUp }
2008-08-12 00:03:21 +00:00
else if ( Ebene = 5 )
SendUnicodeChar ( 0x2113 ) ; Script small L
else if ( Ebene = 6 )
SendUnicodeChar ( 0x22A5 ) ; Senkrecht
2008-05-06 11:41:19 +00:00
return
2008-06-18 23:26:43 +00:00
neo_5:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene = 1 )
{
if ! ( CheckDeadUni ( " c1 " , 0x2075 )
or CheckDeadUni ( " c5 " , 0x2085 )
or CheckCompUni ( " 1 " , 0x2155 ) ; 1/5
or CheckCompUni ( " 2 " , 0x2156 ) ; 2/5
or CheckCompUni ( " 3 " , 0x2157 ) ; 3/5
or CheckCompUni ( " 4 " , 0x2158 ) ; 4/5
or CheckCompUni ( " r " , 0x2174 ) ; r<> misch v
or CheckCompUni ( " R " , 0x2164 ) ) ; r<> misch V
if ( GetKeyState ( " CapsLock " , " T " ) )
send { blind } { Shift down } 5 { Shift up }
else if ( not ( lernModus ) or lernModus_std_ZahlenReihe )
send { blind } 5
2008-08-10 18:43:18 +00:00
2008-08-12 00:03:21 +00:00
if ( PriorDeadKey = " comp " )
CompKey := " 5 "
}
else if ( Ebene = 2 )
SendUnicodeChar ( 0x00AB ) ; Double guillemot left
else if ( Ebene = 3 )
Send { blind } <EFBFBD> ; Single guillemot left
else if ( Ebene = 4 )
{
CompKey := PriorCompKey
DeadKey := PriorDeadKey
} ; leer
else if ( Ebene = 5 )
SendUnicodeChar ( 0x2020 ) ; Kreuz (Dagger)
else if ( Ebene = 6 )
SendUnicodeChar ( 0x2221 ) ; Winkel
2008-05-06 11:41:19 +00:00
return
2008-06-18 23:26:43 +00:00
neo_6:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene = 1 )
{
if ! ( CheckDeadUni ( " c1 " , 0x2076 )
or CheckDeadUni ( " c5 " , 0x2086 )
or CheckCompUni ( " 1 " , 0x2159 ) ; 1/6
or CheckCompUni ( " 5 " , 0x215A ) ; 5/6
or CheckCompUni ( " r " , 0x2175 ) ; r<> misch vi
or CheckCompUni ( " R " , 0x2165 ) ) ; r<> misch VI
if ( GetKeyState ( " CapsLock " , " T " ) )
send { blind } { Shift down } 6 { Shift up }
else if ( not ( lernModus ) or lernModus_std_ZahlenReihe )
send { blind } 6
2008-08-10 18:43:18 +00:00
2008-08-12 00:03:21 +00:00
if ( PriorDeadKey = " comp " )
CompKey := " 6 "
}
else if ( Ebene = 2 )
send <EFBFBD>
else if ( Ebene = 3 )
send { blind } <EFBFBD>
else if ( Ebene = 4 )
send { blind } <EFBFBD>
else if ( Ebene = 5 )
{
CompKey := PriorCompKey
DeadKey := PriorDeadKey
} ; leer
else if ( Ebene = 6 )
SendUnicodeChar ( 0x2225 ) ; parallel
2008-05-06 11:41:19 +00:00
return
2008-06-18 23:26:43 +00:00
neo_7:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene = 1 )
{
if ! ( CheckDeadUni ( " c1 " , 0x2077 )
or CheckDeadUni ( " c5 " , 0x2087 )
or CheckCompUni ( " r " , 0x2176 ) ; r<> misch vii
or CheckCompUni ( " R " , 0x2166 ) ) ; r<> misch VII
if ( GetKeyState ( " CapsLock " , " T " ) )
send { blind } { Shift down } 7 { Shift up }
else if ( not ( lernModus ) or lernModus_std_ZahlenReihe )
send { blind } 7
2008-08-10 18:43:18 +00:00
2008-08-12 00:03:21 +00:00
if ( PriorDeadKey = " comp " )
CompKey := " 7 "
}
else if ( Ebene = 2 )
send $
else if ( Ebene = 3 )
send { blind } <EFBFBD>
else if ( Ebene = 4 )
send { blind } <EFBFBD>
else if ( Ebene = 5 )
SendUnicodeChar ( 0x03BA ) ; greek small letter kappa
else if ( Ebene = 6 )
SendUnicodeChar ( 0x2209 ) ; nicht Element von
2008-05-06 11:41:19 +00:00
return
2008-06-18 23:26:43 +00:00
neo_8:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene = 1 )
{
if ! ( CheckDeadUni ( " c1 " , 0x2078 )
or CheckDeadUni ( " c5 " , 0x2088 )
or CheckCompUni ( " 1 " , 0x215B ) ; 1/8
or CheckCompUni ( " 3 " , 0x215C ) ; 3/8
or CheckCompUni ( " 5 " , 0x215D ) ; 5/8
or CheckCompUni ( " 7 " , 0x215E ) ; 7/8
or CheckCompUni ( " r " , 0x2177 ) ; r<> misch viii
or CheckCompUni ( " R " , 0x2167 ) ) ; r<> misch VIII
if ( GetKeyState ( " CapsLock " , " T " ) )
send { blind } { Shift down } 8 { Shift up }
else if ( not ( lernModus ) or lernModus_std_ZahlenReihe )
send { blind } 8
2008-08-10 18:43:18 +00:00
2008-08-12 00:03:21 +00:00
if ( PriorDeadKey = " comp " )
CompKey := " 8 "
}
else if ( Ebene = 2 )
send <EFBFBD>
else if ( Ebene = 3 )
send { blind } <EFBFBD>
else if ( Ebene = 4 )
Send { blind } { NumpadDiv }
else if ( Ebene = 5 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x27E8 ) ; bra (<28> ffnende spitze Klammer)
2008-08-12 00:03:21 +00:00
else if ( Ebene = 6 )
SendUnicodeChar ( 0x2204 ) ; es existiert nicht
2008-05-06 11:41:19 +00:00
return
2008-06-18 23:26:43 +00:00
neo_9:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene = 1 )
{
if ! ( CheckDeadUni ( " c1 " , 0x2079 )
or CheckDeadUni ( " c5 " , 0x2089 )
or CheckCompUni ( " r " , 0x2178 ) ; r<> misch ix
or CheckCompUni ( " R " , 0x2168 ) ) ; r<> misch IX
if ( GetKeyState ( " CapsLock " , " T " ) )
send { blind } { Shift down } 9 { Shift up }
else if ( not ( lernModus ) or lernModus_std_ZahlenReihe )
send { blind } 9
2008-08-10 18:43:18 +00:00
2008-08-12 00:03:21 +00:00
if ( PriorDeadKey = " comp " )
CompKey := " 9 "
}
else if ( Ebene = 2 )
send <EFBFBD>
else if ( Ebene = 3 )
send { blind } <EFBFBD>
else if ( Ebene = 4 )
Send { blind } { NumpadMult }
else if ( Ebene = 5 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x27E9 ) ; ket (schlie<69> ende spitze Klammer)
2008-08-12 00:03:21 +00:00
else if ( Ebene = 6 )
SendUnicodeChar ( 0x2226 ) ; nicht parallel
2008-05-06 11:41:19 +00:00
return
2008-06-18 23:26:43 +00:00
neo_0:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene = 1 )
{
if ! ( CheckDeadUni ( " c1 " , 0x2070 )
or CheckDeadUni ( " c5 " , 0x2080 )
or CheckComp3Uni ( " r_1 " , 0x2179 ) ; r<> misch x
or CheckComp3Uni ( " R_1 " , 0x2169 ) ) ; r<> misch X
if ( GetKeyState ( " CapsLock " , " T " ) )
send { blind } { Shift down } 0 { Shift up }
else if ( not ( lernModus ) or lernModus_std_ZahlenReihe )
send { blind } 0
2008-08-10 18:43:18 +00:00
2008-06-14 11:43:05 +00:00
if ( PriorDeadKey = " comp " )
2008-05-06 11:41:19 +00:00
CompKey := " 0 "
}
2008-08-10 18:43:18 +00:00
else if ( Ebene = 2 )
send <EFBFBD>
else if ( Ebene = 3 )
send { blind } <EFBFBD>
else if ( Ebene = 4 )
2008-08-11 10:55:06 +00:00
Send { blind } { NumpadSub }
2008-08-10 18:43:18 +00:00
else if ( Ebene = 5 )
{
CompKey := PriorCompKey
DeadKey := PriorDeadKey
} ; leer
else if ( Ebene = 6 )
2008-06-14 11:43:05 +00:00
SendUnicodeChar ( 0x2205 ) ; leere Menge
2008-05-06 11:41:19 +00:00
return
2008-06-18 23:26:43 +00:00
neo_strich:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene = 1 )
if ( GetKeyState ( " CapsLock " , " T " ) )
send { blind } { Shift down } - { Shift up }
else
send { blind } - ; Bindestrich-Minus
else if ( Ebene = 2 )
SendUnicodeChar ( 0x2013 ) ; Gedankenstrich
else if ( Ebene = 3 )
SendUnicodeChar ( 0x2014 ) ; Englischer Gedankenstrich (Geviertstrich)
2008-08-18 19:25:20 +00:00
else if ( Ebene = 4 ) ; leer
2008-08-12 00:03:21 +00:00
{
CompKey := PriorCompKey
DeadKey := PriorDeadKey
2008-08-18 19:25:20 +00:00
}
2008-08-12 00:03:21 +00:00
else if ( Ebene = 5 )
SendUnicodeChar ( 0x2011 ) ; gesch<63> tzter Bindestrich (Bindestrich ohne Zeilenumbruch)
else if ( Ebene = 6 )
SendUnicodeChar ( 0x00AD ) ; weicher Bindestrich
2008-05-06 11:41:19 +00:00
return
2008-06-18 23:26:43 +00:00
neo_tot2:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene = 1 )
{
deadAsc ( " {<7B> }{space} " ) ; Akut, tot
DeadKey := " a1 "
}
else if ( Ebene = 2 )
{
deadAsc ( " `` {space} " ) ; Gravis, tot
DeadKey := " a2 "
}
else if ( Ebene = 3 )
{
deadAsc ( " <EFBFBD> " ) ; Cedilla, tot
DeadKey := " a3 "
}
else if ( Ebene = 4 )
{
deadUni ( 0x02D9 ) ; Punkt obendr<64> ber
DeadKey := " a4 "
}
else if ( Ebene = 5 )
{
deadUni ( 0x02DB ) ; Ogonek
DeadKey := " a5 "
}
else if ( Ebene = 6 )
{
deadUni ( 0x02DA ) ; Ring obendrauf
DeadKey := " a6 "
}
CompKey := PriorCompKey
return
/*
Reihe 2
* /
2008-06-18 23:26:43 +00:00
neo_x:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene12 )
OutputChar ( " x " , " X " )
else if ( Ebene = 3 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x2026 ) ;Ellipse horizontal
else if ( Ebene = 4 )
SendUnicodeChar ( 0x22EE ) ;Ellipse vertikal
2008-08-12 00:03:21 +00:00
else if ( Ebene = 5 )
SendUnicodeChar ( 0x03BE ) ;xi
else if ( Ebene = 6 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x039E ) ;Xi
2008-05-06 11:41:19 +00:00
return
2008-06-18 23:26:43 +00:00
neo_v:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene12 and ! ( CheckDeadUni12 ( " c6 " , 0x1E7F , 0x1E7E ) ) )
OutputChar ( " v " , " V " )
else if ( Ebene = 3 )
send { blind } _
else if ( Ebene = 4 )
if ( not ( lernModus ) or lernModus_neo_Backspace )
Send { blind } { Backspace }
2008-08-18 19:25:20 +00:00
else ; leer
2008-08-12 00:03:21 +00:00
{
CompKey := PriorCompKey
DeadKey := PriorDeadKey
2008-08-18 19:25:20 +00:00
}
2008-08-12 00:03:21 +00:00
else if ( Ebene = 6 )
SendUnicodeChar ( 0x2259 ) ; estimates
2008-05-06 11:41:19 +00:00
return
2008-06-18 23:26:43 +00:00
neo_l:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene12 and ! ( CheckDeadUni12 ( " a1 " , 0x013A , 0x0139 )
2008-08-18 19:25:20 +00:00
or CheckDeadUni12 ( " a3 " , 0x013C , 0x013B )
or CheckDeadUni12 ( " c2 " , 0x013E , 0x013D )
or CheckDeadUni12 ( " c4 " , 0x0140 , 0x013F )
or CheckDeadUni12 ( " c6 " , 0x1E37 , 0x1E36 )
or CheckDeadUni12 ( " t4 " , 0x0142 , 0x0141 ) ) )
2008-08-12 00:03:21 +00:00
OutputChar ( " l " , " L " )
else if ( Ebene = 3 )
send { blind } [
else if ( Ebene = 4 )
Send { Blind } { Up }
else if ( Ebene = 5 )
SendUnicodeChar ( 0x03BB ) ; lambda
else if ( Ebene = 6 )
SendUnicodeChar ( 0x039B ) ; Lambda
2008-05-06 11:41:19 +00:00
return
2008-06-18 23:26:43 +00:00
neo_c:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene12 and ! ( CheckDeadUni12 ( " a1 " , 0x0107 , 0x0106 )
2008-08-18 19:25:20 +00:00
or CheckDeadUni12 ( " a3 " , 0x00E7 , 0x00E6 )
or CheckDeadUni12 ( " a4 " , 0x010B , 0x010A )
or CheckDeadUni12 ( " c1 " , 0x0109 , 0x0108 )
or CheckDeadUni12 ( " c2 " , 0x010D , 0x010C )
or CheckCompAsc ( " o " , " <EFBFBD> " ) ) )
2008-08-12 00:03:21 +00:00
OutputChar ( " c " , " C " )
else if ( Ebene = 3 )
send { blind } ]
else if ( Ebene = 4 )
if ( not ( lernModus ) or lernModus_neo_Entf )
Send { blind } { Del }
2008-08-18 19:25:20 +00:00
else ; leer
2008-08-12 00:03:21 +00:00
{
CompKey := PriorCompKey
DeadKey := PriorDeadKey
2008-08-18 19:25:20 +00:00
}
2008-08-12 00:03:21 +00:00
else if ( Ebene = 5 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x03C7 ) ; chi
2008-08-12 00:03:21 +00:00
else if ( Ebene = 6 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x2102 ) ; C (Komplexe Zahlen)
2008-05-06 11:41:19 +00:00
return
2008-06-18 23:26:43 +00:00
neo_w:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene12 and ! ( CheckDeadUni12 ( " c1 " , 0x0175 , 0x0174 ) ) )
OutputChar ( " w " , " W " )
else if ( Ebene = 3 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x005E ) ; Zirkumflex
2008-08-12 00:03:21 +00:00
else if ( Ebene = 4 )
2008-08-18 19:25:20 +00:00
Send { blind } { Insert } ; Einfg
2008-08-12 00:03:21 +00:00
else if ( Ebene = 5 )
SendUnicodeChar ( 0x03C9 ) ; omega
else if ( Ebene = 6 )
SendUnicodeChar ( 0x03A9 ) ; Omega
2008-05-06 11:41:19 +00:00
return
2008-06-18 23:26:43 +00:00
neo_k:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene12 and ! ( CheckDeadUni12 ( " a3 " , 0x0137 , 0x0136 )
2008-08-18 19:25:20 +00:00
or CheckDeadUni12 ( " c6 " , 0x1E33 , 0x1E32 ) ) )
2008-08-12 00:03:21 +00:00
OutputChar ( " k " , " K " )
else if ( Ebene = 3 )
send { blind } { ! }
else if ( Ebene = 4 )
Send <EFBFBD>
else if ( Ebene = 5 )
SendUnicodeChar ( 0x03F0 ) ;kappa symbol (varkappa)
else if ( Ebene = 6 )
SendUnicodeChar ( 0x221A ) ; Wurzel
2008-05-06 11:41:19 +00:00
return
2008-06-18 23:26:43 +00:00
neo_h:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene12 and ! ( CheckDeadUni12 ( " a4 " , 0x1E23 , 0x1E22 )
2008-08-18 19:25:20 +00:00
or CheckDeadUni12 ( " c1 " , 0x0125 , 0x0124 )
or CheckDeadUni12 ( " c5 " , 0x0127 , 0x0126 )
or CheckDeadUni12 ( " c6 " , 0x1E25 , 0x1E24 ) ) )
2008-08-12 00:03:21 +00:00
OutputChar ( " h " , " H " )
else if ( ( Ebene = 3 ) and ! ( CheckDeadUni ( " c5 " , 0x2264 ) ) ) ; kleiner gleich
send { blind } <
else if ( ( Ebene = 4 ) and ! ( CheckDeadUni ( " c1 " , 0x2077 )
or CheckDeadUni ( " c5 " , 0x2087 ) ) )
Send { blind } { NumPad7 }
else if ( Ebene = 5 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x03C8 ) ; psi
2008-08-12 00:03:21 +00:00
else if ( Ebene = 6 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x03A8 ) ; Psi
2008-05-06 11:41:19 +00:00
return
2008-06-18 23:26:43 +00:00
neo_g:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene12 and ! ( CheckDeadUni12 ( " a3 " , 0x0123 , 0x0122 )
2008-08-18 19:25:20 +00:00
or CheckDeadUni12 ( " a4 " , 0x0121 , 0x0120 )
or CheckDeadUni12 ( " c1 " , 0x011D , 0x011C )
or CheckDeadUni12 ( " c3 " , 0x011F , 0x011E ) ) )
2008-08-12 00:03:21 +00:00
OutputChar ( " g " , " G " )
2008-08-18 19:25:20 +00:00
else if ( ( Ebene = 3 ) and ! ( CheckDeadUni ( " c5 " , 0x2265 ) ) )
send { blind } > ; gr<67> <72> er gleich
2008-08-12 00:03:21 +00:00
else if ( ( Ebene = 4 ) and ! ( CheckDeadUni ( " c1 " , 0x2078 )
2008-08-18 19:25:20 +00:00
or CheckDeadUni ( " c5 " , 0x2088 ) ) )
2008-08-12 00:03:21 +00:00
Send { blind } { NumPad8 }
else if ( Ebene = 5 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x03B3 ) ; gamma
2008-08-12 00:03:21 +00:00
else if ( Ebene = 6 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x0393 ) ; Gamma
2008-05-06 11:41:19 +00:00
return
2008-06-18 23:26:43 +00:00
neo_f:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene12 and ! ( CheckDeadUni12 ( " a4 " , 0x1E1F , 0x1E1E )
or CheckDeadUni12 ( " t4 " , 0x0192 , 0x0191 ) ) )
OutputChar ( " f " , " F " )
else if ( ( Ebene = 3 ) and ! ( CheckDeadUni ( " a6 " , 0x2257 ) ; ring equal to
2008-08-18 19:25:20 +00:00
or CheckDeadUni ( " c1 " , 0x2259 ) ; entspricht
or CheckDeadUni ( " c2 " , 0x225A ) ; EQUIANGULAR TO
or CheckDeadUni ( " c5 " , 0x2261 ) ; identisch
or CheckDeadUni ( " t1 " , 0x2245 ) ; ungef<65> hr gleich
or CheckDeadUni ( " t4 " , 0x2260 ) ) ) ; ungleich
2008-08-12 00:03:21 +00:00
send { blind } ` =
else if ( ( Ebene = 4 ) and ! ( CheckDeadUni ( " c1 " , 0x2079 )
2008-08-18 19:25:20 +00:00
or CheckDeadUni ( " c5 " , 0x2089 ) ) )
send { blind } { NumPad9 }
2008-08-12 00:03:21 +00:00
else if ( Ebene = 5 )
SendUnicodeChar ( 0x03C6 ) ; phi
else if ( Ebene = 6 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x03A6 ) ; Phi
2008-05-06 11:41:19 +00:00
return
2008-06-18 23:26:43 +00:00
neo_q:
2008-05-06 11:41:19 +00:00
EbeneAktualisieren ( )
2008-08-10 18:43:18 +00:00
if ( Ebene12 )
OutputChar ( " q " , " Q " )
else if ( Ebene = 3 )
send { blind } { & }
else if ( ( Ebene = 4 ) and ! ( CheckDeadUni ( " c1 " , 0x207A )
or CheckDeadUni ( " c5 " , 0x208A ) ) )
2008-08-11 10:55:06 +00:00
Send { blind } { NumPadAdd }
2008-08-10 18:43:18 +00:00
else if ( Ebene = 5 )
2008-07-08 21:22:57 +00:00
SendUnicodeChar ( 0x03D5 ) ; phi symbol (varphi)
2008-08-10 18:43:18 +00:00
else if ( Ebene = 6 )
2008-06-14 11:43:05 +00:00
SendUnicodeChar ( 0x211A ) ; Q (rationale Zahlen)
2008-05-06 11:41:19 +00:00
return
2008-06-18 23:26:43 +00:00
neo_sz:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene = 1 )
if ( GetKeyState ( " CapsLock " , " T " ) )
SendUnicodeChar ( 0x1E9E ) ; versal-<2D>
2008-08-18 19:25:20 +00:00
else if LangSTastatur
2008-08-12 00:03:21 +00:00
send { blind } s
else
send <EFBFBD>
else if ( Ebene = 2 )
if ( GetKeyState ( " CapsLock " , " T " ) )
2008-08-18 19:25:20 +00:00
if LangSTastatur
2008-08-12 00:03:21 +00:00
send { blind } s
2008-07-08 21:22:57 +00:00
else
2008-08-12 00:03:21 +00:00
send <EFBFBD>
else
SendUnicodeChar ( 0x1E9E ) ; versal-<2D>
else if ( Ebene = 3 )
2008-08-18 19:25:20 +00:00
if LangSTastatur
2008-08-12 00:03:21 +00:00
send <EFBFBD>
else
SendUnicodeChar ( 0x017F ) ; langes s
else if ( Ebene = 5 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x03C2 ) ; varsigma
2008-08-12 00:03:21 +00:00
else if ( Ebene = 6 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x2218 ) ; Verkn<6B> pfungsoperator
2008-05-06 11:41:19 +00:00
return
2008-06-18 23:26:43 +00:00
neo_tot3:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene = 1 )
{
2008-08-18 19:25:20 +00:00
deadUni ( 0x02DC ) ; Tilde, tot
2008-08-12 00:03:21 +00:00
DeadKey := " t1 "
}
else if ( Ebene = 2 )
{
deadUni ( 0x00AF ) ; Macron, tot
DeadKey := " t2 "
}
else if ( Ebene = 3 )
{
deadUni ( 0x00A8 ) ; Di<44> rese
DeadKey := " t3 "
}
else if ( Ebene = 4 )
{
deadUni ( 0x002F ) ; Schr<68> gstrich, tot
DeadKey := " t4 "
}
else if ( Ebene = 5 )
{
2008-08-18 19:25:20 +00:00
deadUni ( 0x02DD ) ; Doppelakut
2008-08-12 00:03:21 +00:00
DeadKey := " t5 "
}
else if ( Ebene = 6 )
{
deadUni ( 0x02CF ) ; Komma drunter, tot
DeadKey := " t6 "
}
2008-05-06 11:41:19 +00:00
return
/*
2008-08-12 00:03:21 +00:00
Reihe 3
2008-05-06 11:41:19 +00:00
* /
2008-06-18 23:26:43 +00:00
neo_u:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene12 and ! ( CheckDeadUni12 ( " a1 " , 0x00FA , 0x00DA )
2008-08-18 19:25:20 +00:00
or CheckDeadUni12 ( " a2 " , 0x00F9 , 0x00D9 )
or CheckDeadUni12 ( " a5 " , 0x0173 , 0x0172 )
or CheckDeadUni12 ( " a6 " , 0x016F , 0x016E )
or CheckDeadUni12 ( " c1 " , 0x00FB , 0x00DB )
or CheckDeadUni12 ( " c2 " , 0x01D4 , 0x01D3 )
or CheckDeadUni12 ( " c3 " , 0x016D , 0x016C )
or CheckDeadUni12 ( " t1 " , 0x0169 , 0x0168 )
or CheckDeadUni12 ( " t2 " , 0x016B , 0x016A )
or CheckDeadAsc12 ( " t3 " , " <EFBFBD> " , " <EFBFBD> " )
or CheckDeadUni12 ( " t5 " , 0x0171 , 0x0170 ) ) )
2008-08-12 00:03:21 +00:00
OutputChar ( " u " , " U " )
else if ( Ebene = 3 )
send { blind } \
else if ( Ebene = 4 )
Send { blind } { Home }
2008-08-18 19:25:20 +00:00
else if ( Ebene = 5 ) ; leer
2008-08-12 00:03:21 +00:00
{
CompKey := PriorCompKey
DeadKey := PriorDeadKey
2008-08-18 19:25:20 +00:00
}
2008-08-12 00:03:21 +00:00
else if ( Ebene = 6 )
SendUnicodeChar ( 0x222E ) ; contour integral
2008-05-06 11:41:19 +00:00
return
2008-06-18 23:26:43 +00:00
neo_i:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene12 and ! ( CheckDeadUni12 ( " a1 " , 0x00ED , 0x00CD )
2008-08-18 19:25:20 +00:00
or CheckDeadUni12 ( " a2 " , 0x00EC , 0x00CC )
or CheckDeadUni12 ( " a4 " , 0x012F , 0x012E )
or CheckDeadUni12 ( " a5 " , 0x0131 , 0x0130 )
or CheckDeadUni12 ( " c1 " , 0x00EE , 0x00CE )
or CheckDeadUni12 ( " c2 " , 0x01D0 , 0x01CF )
or CheckDeadUni12 ( " c3 " , 0x012D , 0x012C )
or CheckDeadUni12 ( " t1 " , 0x0129 , 0x0128 )
or CheckDeadUni12 ( " t2 " , 0x012B , 0x012A )
or CheckDeadAsc12 ( " t3 " , " <EFBFBD> " , " <EFBFBD> " ) ) )
2008-08-12 00:03:21 +00:00
OutputChar ( " i " , " I " )
else if ( Ebene = 3 )
send { blind } ` /
else if ( Ebene = 4 )
Send { Blind } { Left }
2008-08-18 19:25:20 +00:00
else if ( Ebene = 5 )
2008-08-12 00:03:21 +00:00
SendUnicodeChar ( 0x03B9 ) ; iota
else if ( Ebene = 6 )
SendUnicodeChar ( 0x222B ) ; integral
2008-05-06 11:41:19 +00:00
return
2008-06-18 23:26:43 +00:00
neo_a:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene12 and ! ( CheckDeadUni12 ( " a1 " , 0x00E1 , 0x00C1 )
2008-08-18 19:25:20 +00:00
or CheckDeadUni12 ( " a2 " , 0x00E0 , 0x00C0 )
or CheckDeadUni12 ( " a5 " , 0x0105 , 0x0104 )
or CheckDeadAsc12 ( " a6 " , " <EFBFBD> " , " <EFBFBD> " )
or CheckDeadUni12 ( " c1 " , 0x00E2 , 0x00C2 )
or CheckDeadUni12 ( " c2 " , 0x01CE , 0x01CD )
or CheckDeadUni12 ( " c3 " , 0x0103 , 0x0102 )
or CheckDeadUni12 ( " t1 " , 0x00E3 , 0x00C3 )
or CheckDeadUni12 ( " t2 " , 0x0101 , 0x0100 )
or CheckDeadAsc12 ( " t3 " , " <EFBFBD> " , " <EFBFBD> " ) ) )
2008-08-12 00:03:21 +00:00
OutputChar ( " a " , " A " )
else if ( Ebene = 3 )
send { blind } { { }
else if ( Ebene = 4 )
Send { Blind } { Down }
else if ( Ebene = 5 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x03B1 ) ; alpha
2008-08-12 00:03:21 +00:00
else if ( Ebene = 6 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x2200 ) ; f<> r alle
2008-05-06 11:41:19 +00:00
return
2008-06-18 23:26:43 +00:00
neo_e:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene12 and ! ( CheckDeadUni12 ( " a1 " , 0x00E9 , 0x00C9 )
2008-08-18 19:25:20 +00:00
or CheckDeadUni12 ( " a2 " , 0x00E8 , 0x00C8 )
or CheckDeadUni12 ( " a4 " , 0x0117 , 0x0116 )
or CheckDeadUni12 ( " a5 " , 0x0119 , 0x0118 )
or CheckDeadUni12 ( " c1 " , 0x00EA , 0x00CA )
or CheckDeadUni12 ( " c2 " , 0x011B , 0x011A )
or CheckDeadUni12 ( " c3 " , 0x0115 , 0x0114 )
or CheckDeadUni12 ( " t2 " , 0x0113 , 0x0112 )
or CheckDeadAsc12 ( " t3 " , " <EFBFBD> " , " <EFBFBD> " )
or CheckCompAsc12 ( " a " , " <EFBFBD> " , " <EFBFBD> " )
or CheckCompAsc12 ( " A " , " <EFBFBD> " , " <EFBFBD> " )
or CheckCompAsc12 ( " o " , " <EFBFBD> " , " <EFBFBD> " )
or CheckCompAsc12 ( " O " , " <EFBFBD> " , " <EFBFBD> " ) ) )
2008-08-12 00:03:21 +00:00
OutputChar ( " e " , " E " )
2008-08-18 19:25:20 +00:00
else if ( Ebene = 3 )
2008-08-12 00:03:21 +00:00
send { blind } { } }
else if ( Ebene = 4 )
Send { Blind } { Right }
else if ( Ebene = 5 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x03B5 ) ; epsilon
2008-08-12 00:03:21 +00:00
else if ( Ebene = 6 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x2203 ) ; es existiert
2008-05-06 11:41:19 +00:00
return
2008-06-18 23:26:43 +00:00
neo_o:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene12 and ! ( CheckDeadUni12 ( " a1 " , 0x00F3 , 0x00D3 )
2008-08-18 19:25:20 +00:00
or CheckDeadUni12 ( " a2 " , 0x00F2 , 0x00D2 )
or CheckDeadUni12 ( " a5 " , 0x01EB , 0x01EA )
or CheckDeadUni12 ( " c1 " , 0x00F4 , 0x00D4 )
or CheckDeadUni12 ( " c2 " , 0x01D2 , 0x01D1 )
or CheckDeadUni12 ( " c3 " , 0x014F , 0x014E )
or CheckDeadUni12 ( " t1 " , 0x00F5 , 0x00D5 )
or CheckDeadUni12 ( " t2 " , 0x014D , 0x014C )
or CheckDeadAsc12 ( " t3 " , " <EFBFBD> " , " <EFBFBD> " )
or CheckDeadUni12 ( " t4 " , 0x00F8 , 0x00D8 )
or CheckDeadUni12 ( " t5 " , 0x0151 , 0x0150 ) ) )
2008-08-12 00:03:21 +00:00
OutputChar ( " o " , " O " )
else if ( Ebene = 3 )
send { blind } *
else if ( Ebene = 4 )
Send { blind } { End }
else if ( Ebene = 5 )
SendUnicodeChar ( 0x03BF ) ; omicron
else if ( Ebene = 6 )
SendUnicodeChar ( 0x2208 ) ; element of
2008-05-06 11:41:19 +00:00
return
2008-06-18 23:26:43 +00:00
neo_s:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene12 and ! ( CheckDeadUni12 ( " a1 " , 0x015B , 0x015A )
2008-08-18 19:25:20 +00:00
or CheckDeadUni12 ( " a3 " , 0x015F , 0x015E )
or CheckDeadUni12 ( " a4 " , 0x1E61 , 0x1E60 )
or CheckDeadUni12 ( " c1 " , 0x015D , 0x015C )
or CheckDeadUni12 ( " c2 " , 0x0161 , 0x0160 )
or CheckDeadUni12 ( " c6 " , 0x1E63 , 0x1A62 ) ) )
2008-08-12 02:30:35 +00:00
{
2008-08-12 00:03:21 +00:00
if ( Ebene = 1 )
{
if LangSTastatur
if ( GetKeyState ( " CapsLock " , " T " ) )
2008-08-18 19:25:20 +00:00
{
2008-08-12 00:03:21 +00:00
send { blind } s
2008-08-18 19:25:20 +00:00
if ( PriorDeadKey = " comp " )
Compkey := " s "
}
2008-08-12 00:03:21 +00:00
else
2008-08-18 19:25:20 +00:00
{
2008-08-12 00:03:21 +00:00
SendUnicodeChar ( 0x017F ) ;langes S
2008-08-18 19:25:20 +00:00
if ( PriorDeadKey = " comp " )
CompKey := " lang_s "
}
2008-08-12 00:03:21 +00:00
else
2008-08-18 19:25:20 +00:00
{
2008-08-12 00:03:21 +00:00
send { blind } s
2008-08-18 19:25:20 +00:00
if ( PriorDeadKey = " comp " )
CompKey := " s "
}
2008-08-12 00:03:21 +00:00
}
else if ( Ebene = 2 )
{
if LangSTastatur
if ( GetKeyState ( " CapsLock " , " T " ) )
2008-08-18 19:25:20 +00:00
{
2008-08-12 00:03:21 +00:00
SendUnicodeChar ( 0x017F ) ;langes S
2008-08-18 19:25:20 +00:00
if ( PriorDeadKey = " comp " )
CompKey := " lang_s "
}
2008-08-12 00:03:21 +00:00
else
2008-08-18 19:25:20 +00:00
{
2008-08-12 00:03:21 +00:00
send { blind } S
2008-08-18 19:25:20 +00:00
if ( PriorDeadKey = " comp " )
CompKey := " s "
}
2008-08-12 00:03:21 +00:00
else
2008-08-18 19:25:20 +00:00
{
2008-08-12 00:03:21 +00:00
send { blind } S
2008-08-18 19:25:20 +00:00
if ( PriorDeadKey = " comp " )
CompKey := " S "
}
2008-08-12 00:03:21 +00:00
}
2008-08-12 02:30:35 +00:00
}
2008-08-12 00:03:21 +00:00
else if ( Ebene = 3 )
send { blind } ?
else if ( Ebene = 4 )
Send <EFBFBD>
else if ( Ebene = 5 )
SendUnicodeChar ( 0x03C3 ) ;sigma
else if ( Ebene = 6 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x03A3 ) ;Sigma
2008-05-06 11:41:19 +00:00
return
2008-06-18 23:26:43 +00:00
neo_n:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene12 and ! ( CheckDeadUni12 ( " a1 " , 0x0144 , 0x0143 )
2008-08-18 19:25:20 +00:00
or CheckDeadUni12 ( " a3 " , 0x0146 , 0x0145 )
or CheckDeadUni12 ( " a4 " , 0x1E45 , 0x1E44 )
or CheckDeadUni12 ( " c2 " , 0x0148 , 0x0147 )
or CheckDeadUni12 ( " t1 " , 0x00F1 , 0x00D1 ) ) )
2008-08-12 00:03:21 +00:00
OutputChar ( " n " , " N " )
else if ( Ebene = 3 )
2008-08-18 19:25:20 +00:00
send { blind } (
2008-08-12 00:03:21 +00:00
else if ( ( Ebene = 4 ) and ! ( CheckDeadUni ( " c1 " , 0x2074 )
2008-08-18 19:25:20 +00:00
or CheckDeadUni ( " c5 " , 0x2084 ) ) )
2008-08-12 00:03:21 +00:00
Send { blind } { NumPad4 }
else if ( Ebene = 5 )
SendUnicodeChar ( 0x03BD ) ; nu
else if ( Ebene = 6 )
SendUnicodeChar ( 0x2115 ) ; N (nat<61> rliche Zahlen)
2008-05-06 11:41:19 +00:00
return
2008-06-18 23:26:43 +00:00
neo_r:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene12 and ! ( CheckDeadUni12 ( " a1 " , 0x0155 , 0x0154 )
2008-08-18 19:25:20 +00:00
or CheckDeadUni12 ( " a3 " , 0x0157 , 0x0156 )
or CheckDeadUni12 ( " a4 " , 0x0E59 , 0x0E58 )
or CheckDeadUni12 ( " c2 " , 0x0159 , 0x0158 )
or CheckDeadUni12 ( " c6 " , 0x1E5B , 0x1E5A )
or CheckCompAsc12 ( " o " , " <EFBFBD> " , " <EFBFBD> " )
or CheckCompAsc12 ( " O " , " <EFBFBD> " , " <EFBFBD> " ) ) )
2008-08-12 00:03:21 +00:00
OutputChar ( " r " , " R " )
2008-08-18 19:25:20 +00:00
else if ( Ebene = 3 )
2008-08-12 00:03:21 +00:00
send { blind } )
else if ( ( Ebene = 4 ) and ! ( CheckDeadUni ( " c1 " , 0x2075 )
2008-08-18 19:25:20 +00:00
or CheckDeadUni ( " c5 " , 0x2085 ) ) )
2008-08-12 00:03:21 +00:00
Send { blind } { NumPad5 }
else if ( Ebene = 5 )
SendUnicodeChar ( 0x03F1 ) ; rho symbol (varrho)
else if ( Ebene = 6 )
SendUnicodeChar ( 0x211D ) ; R (reelle Zahlen)
2008-05-06 11:41:19 +00:00
return
2008-06-18 23:26:43 +00:00
neo_t:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene12 and ! ( CheckDeadUni12 ( " a3 " , 0x0163 , 0x0162 )
2008-08-18 19:25:20 +00:00
or CheckDeadUni12 ( " a4 " , 0x1E6B , 0x1E6A )
or CheckDeadUni12 ( " c2 " , 0x0165 , 0x0164 )
or CheckDeadUni12 ( " c5 " , 0x0167 , 0x0166 )
or CheckDeadUni12 ( " c6 " , 0x1E6D , 0x1E6C ) ) )
2008-08-12 00:03:21 +00:00
OutputChar ( " t " , " T " )
else if ( Ebene = 3 )
2008-08-18 19:25:20 +00:00
send { blind } - ; Bisstrich
2008-08-12 00:03:21 +00:00
else if ( ( Ebene = 4 ) and ! ( CheckDeadUni ( " c1 " , 0x2076 )
or CheckDeadUni ( " c5 " , 0x2086 ) ) )
Send { blind } { NumPad6 }
else if ( Ebene = 5 )
SendUnicodeChar ( 0x03C4 ) ; tau
else if ( Ebene = 6 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x2202 ) ; partielle Ableitung
2008-05-06 11:41:19 +00:00
return
2008-06-18 23:26:43 +00:00
neo_d:
2008-05-06 11:41:19 +00:00
EbeneAktualisieren ( )
2008-08-10 18:43:18 +00:00
if ( Ebene12 and ! ( CheckDeadUni12 ( " a4 " , 0x1E0B , 0x1E0A )
or CheckDeadUni12 ( " c2 " , 0x010F , 0x010E )
or CheckDeadUni12 ( " c5 " , 0x0111 , 0x0110 )
or CheckDeadUni12 ( " c6 " , 0x1E0D , 0x1E0C )
or CheckDeadUni12 ( " t4 " , 0x00F0 , 0x00D0 ) ) )
OutputChar ( " d " , " D " )
else if ( Ebene = 3 )
send { blind } :
else if ( Ebene = 4 )
2008-08-11 12:12:27 +00:00
send `,
2008-08-10 18:43:18 +00:00
else if ( Ebene = 5 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x03B4 ) ; delta
2008-08-10 18:43:18 +00:00
else if ( Ebene = 6 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x0394 ) ; Delta
2008-05-06 11:41:19 +00:00
return
2008-06-18 23:26:43 +00:00
neo_y:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene12 and ! ( CheckDeadUni12 ( " a1 " , 0x00FD , 0x00DD )
2008-08-18 19:25:20 +00:00
or CheckDeadUni12 ( " c1 " , 0x0177 , 0x0176 )
or CheckDeadAsc12 ( " t3 " , " <EFBFBD> " , " <EFBFBD> " ) ) )
2008-08-12 00:03:21 +00:00
OutputChar ( " y " , " Y " )
else if ( Ebene = 3 )
send { blind } @
else if ( Ebene = 4 )
Send { blind } .
else if ( Ebene = 5 )
SendUnicodeChar ( 0x03C5 ) ; upsilon
else if ( Ebene = 6 )
SendUnicodeChar ( 0x2207 ) ; nabla
2008-05-06 11:41:19 +00:00
return
/*
2008-08-12 00:03:21 +00:00
Reihe 4
2008-05-06 11:41:19 +00:00
* /
2008-06-18 23:26:43 +00:00
neo_<EFBFBD> :
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene12 and ! ( CheckDeadUni12 ( " a1 " , 0x01D8 , 0x01D7 )
2008-08-18 19:25:20 +00:00
or CheckDeadUni12 ( " a2 " , 0x01DC , 0x01DB )
or CheckDeadUni12 ( " c2 " , 0x01DA , 0x01D9 )
or CheckDeadUni12 ( " t2 " , 0x01D6 , 0x01D5 ) ) )
2008-08-12 00:03:21 +00:00
OutputChar ( " <EFBFBD> " , " <EFBFBD> " )
else if ( Ebene = 3 )
send { # }
else if ( Ebene = 4 )
Send { blind } { Esc }
2008-08-18 19:25:20 +00:00
else if ( Ebene = 5 ) ; leer
2008-08-12 00:03:21 +00:00
{
DeadKey := PriorDeadKey
CompKey := PriorCompKey
2008-08-18 19:25:20 +00:00
}
2008-08-12 00:03:21 +00:00
else if ( Ebene = 6 )
SendUnicodeChar ( 0x221D ) ; proportional
2008-05-06 11:41:19 +00:00
return
2008-06-18 23:26:43 +00:00
neo_<EFBFBD> :
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene12 and ! ( CheckDeadUni12 ( " t2 " , 0x022B , 0x022A ) ) )
OutputChar ( " <EFBFBD> " , " <EFBFBD> " )
else if ( Ebene = 3 )
send { blind } $
else if ( Ebene = 4 )
send { blind } { Tab }
else if ( Ebene = 5 )
{
DeadKey := PriorDeadKey
CompKey := PriorCompKey
} ; leer
else if ( Ebene = 6 )
SendUnicodeChar ( 0x2111 ) ; Fraktur I
2008-05-06 11:41:19 +00:00
return
2008-06-18 23:26:43 +00:00
neo_<EFBFBD> :
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene12 and ! ( CheckDeadUni12 ( " t2 " , 0x01DF , 0x01DE ) ) )
OutputChar ( " <EFBFBD> " , " <EFBFBD> " )
else if ( Ebene = 3 )
send { blind } |
else if ( Ebene = 4 )
2008-08-18 19:25:20 +00:00
Send { blind } { PgDn } ; Next
2008-08-12 00:03:21 +00:00
else if ( Ebene = 5 )
SendUnicodeChar ( 0x03B7 ) ; eta
else if ( Ebene = 6 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x211C ) ; Fraktur R
2008-05-06 11:41:19 +00:00
return
2008-06-18 23:26:43 +00:00
neo_p:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene12 and ! ( CheckDeadUni12 ( " a4 " , 0x1E57 , 0x1E56 ) ) )
OutputChar ( " p " , " P " )
else if ( ( Ebene = 3 ) and ! ( CheckDeadUni ( " t1 " , 0x2248 ) ) )
send { blind } ~
else if ( Ebene = 4 )
Send { blind } { Enter }
else if ( Ebene = 5 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x03C0 ) ; pi
2008-08-12 00:03:21 +00:00
else if ( Ebene = 6 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x03A0 ) ; Pi
2008-05-06 11:41:19 +00:00
return
2008-06-18 23:26:43 +00:00
neo_z:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene12 and ! ( CheckDeadUni12 ( " a1 " , 0x017A , 0x0179 )
2008-08-18 19:25:20 +00:00
or CheckDeadUni12 ( " a4 " , 0x017C , 0x017B )
or CheckDeadUni12 ( " c2 " , 0x017E , 0x017D )
or CheckDeadUni12 ( " c6 " , 0x1E93 , 0x1E92 ) ) )
2008-08-12 00:03:21 +00:00
OutputChar ( " z " , " Z " )
else if ( Ebene = 3 )
2008-08-18 19:25:20 +00:00
send `` { space } ; untot
2008-08-12 00:03:21 +00:00
else if ( Ebene = 4 )
{
DeadKey := PriorDeadKey
CompKey := PriorCompKey
} ; leer
else if ( Ebene = 5 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x03B6 ) ; zeta
2008-08-12 00:03:21 +00:00
else if ( Ebene = 6 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x2124 ) ; Z (ganze Zahlen)
2008-05-06 11:41:19 +00:00
return
2008-06-18 23:26:43 +00:00
neo_b:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene12 and ! ( CheckDeadUni12 ( " a4 " , 0x1E03 , 0x1E02 ) ) )
OutputChar ( " b " , " B " )
else if ( Ebene = 3 )
send { blind } { + }
else if ( Ebene = 4 )
send { blind } :
else if ( Ebene = 5 )
SendUnicodeChar ( 0x03B2 ) ; beta
else if ( Ebene = 6 )
SendUnicodeChar ( 0x21D2 ) ; Doppel-Pfeil rechts
2008-05-06 11:41:19 +00:00
return
2008-06-18 23:26:43 +00:00
neo_m:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene12 and ! ( CheckDeadUni12 ( " a4 " , 0x1E41 , 0x1E40 )
2008-08-18 19:25:20 +00:00
or CheckDeadUni12 ( " c6 " , 0x1E43 , 0x1E42 )
or CheckCompUni12 ( " t " , 0x2122 , 0x2122 ) ; TM
or CheckCompUni12 ( " s " , 0x2120 , 0x2120 ) ) ) ; SM
2008-08-12 00:03:21 +00:00
OutputChar ( " m " , " M " )
else if ( Ebene = 3 )
send { blind } `%
else if ( ( Ebene = 4 ) and ! ( CheckDeadUni ( " c1 " , 0x00B9 )
2008-08-18 19:25:20 +00:00
or CheckDeadUni ( " c5 " , 0x2081 ) ) )
2008-08-12 00:03:21 +00:00
Send { blind } { NumPad1 }
else if ( Ebene = 5 )
SendUnicodeChar ( 0x03BC ) ; griechisch mu, micro w<> re 0x00B5
else if ( Ebene = 6 )
SendUnicodeChar ( 0x21D4 ) ; doppelter Doppelpfeil (genau dann wenn)
2008-05-06 11:41:19 +00:00
return
2008-06-18 23:26:43 +00:00
neo_komma:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene = 1 )
if ( GetKeyState ( " CapsLock " , " T " ) )
send { blind } { Shift down } , { Shift up }
else
send { blind } ,
else if ( Ebene = 2 )
SendUnicodeChar ( 0x22EE ) ; vertikale ellipse
else if ( Ebene = 3 )
send { blind } "
else if ( ( Ebene = 4 ) and ! ( CheckDeadUni ( " c1 " , 0x00B2 )
2008-08-18 19:25:20 +00:00
or CheckDeadUni ( " c5 " , 0x2082 ) ) )
2008-08-12 00:03:21 +00:00
Send { blind } { NumPad2 }
else if ( Ebene = 5 )
SendUnicodeChar ( 0x03C1 ) ; rho
else if ( Ebene = 6 )
SendUnicodeChar ( 0x21D0 ) ; Doppelpfeil links
2008-05-06 11:41:19 +00:00
return
2008-06-18 23:26:43 +00:00
neo_punkt:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene = 1 )
if ( GetKeyState ( " CapsLock " , " T " ) )
send { blind } { Shift down } . { Shift up }
else
send { blind } .
else if ( Ebene = 2 )
SendUnicodeChar ( 0x2026 ) ; ellipse
else if ( Ebene = 3 )
send { blind } '
else if ( ( Ebene = 4 ) and ! ( CheckDeadUni ( " c1 " , 0x00B3 )
2008-08-18 19:25:20 +00:00
or CheckDeadUni ( " c5 " , 0x2083 ) ) )
2008-08-12 00:03:21 +00:00
Send { blind } { NumPad3 }
else if ( Ebene = 5 )
SendUnicodeChar ( 0x03D1 ) ; theta symbol (vartheta)
else if ( Ebene = 6 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x0398 ) ; Theta
2008-05-06 11:41:19 +00:00
return
2008-06-18 23:26:43 +00:00
neo_j:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( Ebene12 and ! ( CheckDeadUni12 ( " c1 " , 0x0135 , 0x0134 )
or CheckDeadUni12 ( " c2 " , 0x01F0 , " " )
2008-08-18 19:25:20 +00:00
or CheckCompUni ( " i " , 0x0133 ) ; ij
or CheckCompUni ( " l " , 0x01C9 ) ; lj
or CheckCompUni ( " n " , 0x01CC ) ; nj
or CheckCompUni ( " I " , 0x0132 ) ; IJ
or CheckCompUni12 ( " L " , 0x01C8 , 0x01C7 ) ; Lj/LJ
or CheckCompUni12 ( " N " , 0x01CB , 0x01CA ) ) ) ; Nj/NJ
2008-08-12 00:03:21 +00:00
OutputChar ( " j " , " J " )
else if ( Ebene = 3 )
send { blind } `;
else if ( Ebene = 4 )
Send { blind } `;
else if ( Ebene = 5 )
SendUnicodeChar ( 0x03B8 ) ; theta
else if ( Ebene = 6 )
SendUnicodeChar ( 0x2261 ) ; identisch
2008-05-06 11:41:19 +00:00
return
/*
2008-08-10 18:43:18 +00:00
2008-08-12 00:03:21 +00:00
Numpad
2008-08-10 18:43:18 +00:00
* /
2008-08-18 19:25:20 +00:00
neo_NumLock:
EbeneAktualisieren ( )
if ( Ebene = 1 )
send ` =
if ( Ebene = 2 ) ; Funktioniert nicht
{
SetNumLockState
send { NumLock }
}
if ( Ebene = 3 )
SendUnicodeChar ( 0x2248 ) ; Fast gleich
if ( Ebene = 4 )
SendUnicodeChar ( 0x2260 ) ; Ungleich zu
return
2008-08-10 18:43:18 +00:00
neo_NumpadDiv:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
2008-08-18 19:25:20 +00:00
if Ebene14
2008-08-12 00:03:21 +00:00
send { blind } { NumpadDiv }
2008-08-18 19:25:20 +00:00
else if ( Ebene = 2 )
SendUnicodeChar ( 0x2215 ) ; Slash
2008-08-12 00:03:21 +00:00
else if ( Ebene = 3 )
send { blind } <EFBFBD>
2008-05-06 11:41:19 +00:00
return
2008-08-10 18:43:18 +00:00
neo_NumpadMult:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
2008-08-18 19:25:20 +00:00
if Ebene14
2008-08-12 00:03:21 +00:00
send { blind } { NumpadMult }
2008-08-18 19:25:20 +00:00
else if ( Ebene = 2 )
SendUnicodeChar ( 0x22C5 ) ; Cdot
2008-08-12 00:03:21 +00:00
else if ( Ebene = 3 )
send { blind } <EFBFBD>
2008-05-06 11:41:19 +00:00
return
2008-08-10 18:43:18 +00:00
neo_NumpadSub:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
2008-08-18 19:25:20 +00:00
if ( Ebene14 and ! ( CheckDeadUni ( " c1 " , 0x207B )
or CheckDeadUni ( " c5 " , 0x208B ) ) )
2008-08-12 00:03:21 +00:00
send { blind } { NumpadSub }
else if ( Ebene = 3 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x2212 ) ; Echtes Minus
2008-05-06 11:41:19 +00:00
return
2008-08-10 18:43:18 +00:00
neo_NumpadAdd:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
2008-08-18 19:25:20 +00:00
if ( Ebene14 and ! ( CheckDeadUni ( " c1 " , 0x207A )
or CheckDeadUni ( " c5 " , 0x208A ) ) )
2008-08-12 00:03:21 +00:00
send { blind } { NumpadAdd }
else if ( Ebene = 3 )
send { blind } <EFBFBD>
2008-08-18 19:25:20 +00:00
else if ( Ebene = 2 )
SendUnicodeChar ( 0x2213 ) ; Inverses <20>
2008-08-10 18:43:18 +00:00
return
neo_NumpadEnter:
2008-08-18 19:25:20 +00:00
send { blind } { NumpadEnter }
2008-05-06 11:41:19 +00:00
return
2008-08-10 18:43:18 +00:00
neo_Numpad7:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
2008-08-18 19:25:20 +00:00
if ( Ebene = 1 )
2008-08-12 00:03:21 +00:00
{
2008-08-18 19:25:20 +00:00
if NumLock
2008-08-12 00:03:21 +00:00
send { blind } { Numpad7 }
else
2008-08-18 19:25:20 +00:00
send { blind ) { Shift up } { Numpad7 }
2008-08-12 00:03:21 +00:00
if ( PriorDeadKey = " comp " )
2008-08-18 19:25:20 +00:00
CompKey := " 7 "
2008-08-12 00:03:21 +00:00
}
2008-08-18 19:25:20 +00:00
else if ( Ebene = 2 )
SendUnicodeChar ( 0x2020 ) ; Kreuz
2008-08-12 00:03:21 +00:00
else if ( Ebene = 3 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x2195 ) ; Hoch-Runter-Pfeil
else if ( Ebene = 4 )
if NumLock
send { blind } { Shift up } { NumpadHome }
else
send { blind } { NumpadHome }
2008-05-06 11:41:19 +00:00
return
2008-08-10 18:43:18 +00:00
neo_Numpad8:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
2008-08-18 19:25:20 +00:00
if ( ( Ebene = 1 ) and ! ( CheckCompUni ( " 1 " , 0x215B ) ; 1/8
or CheckCompUni ( " 3 " , 0x215C ) ; 3/8
or CheckCompUni ( " 5 " , 0x215D ) ; 5/8
or CheckCompUni ( " 7 " , 0x215E ) ) ) ; 7/8
{
if NumLock
send { blind } { Numpad8 }
else
send { blind ) { Shift up } { Numpad8 }
2008-08-12 00:03:21 +00:00
if ( PriorDeadKey = " comp " )
2008-08-18 19:25:20 +00:00
CompKey := " 8 "
2008-08-12 00:03:21 +00:00
}
2008-08-18 19:25:20 +00:00
else if ( Ebene = 2 )
SendUnicodeChar ( 0x2229 ) ; Durchschnitt
2008-08-12 00:03:21 +00:00
else if ( Ebene = 3 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x2191 ) ; Hochpfeil
else if ( Ebene = 4 )
if NumLock
send { blind } { Shift up } { NumpadUp }
else
send { blind } { NumpadUp }
2008-05-06 11:41:19 +00:00
return
2008-08-10 18:43:18 +00:00
neo_Numpad9:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
2008-08-18 19:25:20 +00:00
if ( Ebene = 1 )
2008-08-12 00:03:21 +00:00
{
2008-08-18 19:25:20 +00:00
if NumLock
2008-08-12 00:03:21 +00:00
send { blind } { Numpad9 }
else
2008-08-18 19:25:20 +00:00
send { blind ) { Shift up } { Numpad9 }
2008-08-12 00:03:21 +00:00
if ( PriorDeadKey = " comp " )
2008-08-18 19:25:20 +00:00
CompKey := " 9 "
2008-08-12 00:03:21 +00:00
}
2008-08-18 19:25:20 +00:00
else if ( Ebene = 2 )
SendUnicodeChar ( 0x2297 ) ; Tensorprodukt / Vektor in die Ebene zeigend
2008-08-12 00:03:21 +00:00
else if ( Ebene = 3 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x220D ) ; Kleines umgekehrtes Elementzeichen
else if ( Ebene = 4 )
if NumLock
send { blind } { Shift up } { NumpadPgUp }
else
send { blind } { NumpadPgUp }
2008-05-06 11:41:19 +00:00
return
2008-08-10 18:43:18 +00:00
neo_Numpad4:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
2008-08-18 19:25:20 +00:00
if ( ( Ebene = 1 ) and ! ( CheckCompUni ( " 1 " , 0x00BC ) ; 1/4
or CheckCompUni ( " 3 " , 0x00BE ) ) ) ; 3/4
{
if NumLock
send { blind } { Numpad4 }
else
send { blind ) { Shift up } { Numpad4 }
2008-08-12 00:03:21 +00:00
if ( PriorDeadKey = " comp " )
2008-08-18 19:25:20 +00:00
CompKey := " 4 "
2008-08-12 00:03:21 +00:00
}
2008-08-18 19:25:20 +00:00
else if ( Ebene = 2 )
SendUnicodeChar ( 0x2282 ) ; Teilmenge
2008-08-12 00:03:21 +00:00
else if ( Ebene = 3 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x2190 ) ; Linkspfeil
else if ( Ebene = 4 )
if NumLock
send { blind } { Shift up } { NumpadLeft }
else
send { blind } { NumpadLeft }
2008-05-06 11:41:19 +00:00
return
2008-08-10 18:43:18 +00:00
neo_Numpad5:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
2008-08-18 19:25:20 +00:00
if ( ( Ebene = 1 ) and ! ( CheckCompUni ( " 1 " , 0x2155 ) ; 1/5
or CheckCompUni ( " 2 " , 0x2156 ) ; 2/5
or CheckCompUni ( " 3 " , 0x2157 ) ; 3/5
or CheckCompUni ( " 4 " , 0x2158 ) ) ) ; 4/5
{
if NumLock
send { blind } { Numpad5 }
else
send { blind ) { Shift up } { Numpad5 }
2008-08-12 00:03:21 +00:00
if ( PriorDeadKey = " comp " )
2008-08-18 19:25:20 +00:00
CompKey := " 5 "
2008-08-12 00:03:21 +00:00
}
else if ( Ebene = 3 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x221E ) ; Unendlich
else if ( Ebene = 2 )
SendUnicodeChar ( 0x20AC ) ; Euro
else if ( Ebene = 4 ) ; Beg
if NumLock
send { NumPad5 }
else
send { Shift } { Numpad5 }
2008-05-06 11:41:19 +00:00
return
2008-08-10 18:43:18 +00:00
neo_Numpad6:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
2008-08-18 19:25:20 +00:00
if ( ( Ebene = 1 ) and ! ( CheckCompUni ( " 1 " , 0x2159 ) ; 1/6
or CheckCompUni ( " 5 " , 0x215a ) ) ) ; 5/6
{
if NumLock
send { blind } { Numpad6 }
else
send { blind ) { Shift up } { Numpad6 }
2008-08-12 00:03:21 +00:00
if ( PriorDeadKey = " comp " )
2008-08-18 19:25:20 +00:00
CompKey := " 6 "
2008-08-12 00:03:21 +00:00
}
2008-08-18 19:25:20 +00:00
else if ( Ebene = 2 )
SendUnicodeChar ( 0x2283 ) ; Obermenge
2008-08-12 00:03:21 +00:00
else if ( Ebene = 3 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x2192 ) ; Rechtspfeil
else if ( Ebene = 4 )
if NumLock
send { blind } { Shift up } { NumpadRight }
else
send { blind } { NumpadRight }
2008-05-06 11:41:19 +00:00
return
2008-08-10 18:43:18 +00:00
neo_Numpad1:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
2008-08-18 19:25:20 +00:00
if ( Ebene = 1 )
2008-08-12 00:03:21 +00:00
{
2008-08-18 19:25:20 +00:00
if NumLock
2008-08-12 00:03:21 +00:00
send { blind } { Numpad1 }
else
2008-08-18 19:25:20 +00:00
send { blind ) { Shift up } { Numpad1 }
2008-08-12 00:03:21 +00:00
if ( PriorDeadKey = " comp " )
2008-08-18 19:25:20 +00:00
CompKey := " 1 "
2008-08-12 00:03:21 +00:00
}
2008-08-18 19:25:20 +00:00
else if ( Ebene = 2 )
SendUnicodeChar ( 0x2714 ) ; H<> kchen
2008-08-12 00:03:21 +00:00
else if ( Ebene = 3 )
SendUnicodeChar ( 0x2194 ) ; Links-Rechts-Pfeil
2008-08-18 19:25:20 +00:00
else if ( Ebene = 4 )
if NumLock
send { blind } { Shift up } { NumpadEnd }
else
send { blind } { NumpadEnd }
2008-05-06 11:41:19 +00:00
return
2008-08-10 18:43:18 +00:00
neo_Numpad2:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
2008-08-18 19:25:20 +00:00
if ( ( Ebene = 1 ) and ! ( CheckCompUni ( " 1 " , 0x00BD ) ) ) ; 1/2
{
if NumLock
send { blind } { Numpad2 }
else
send { blind ) { Shift up } { Numpad2 }
2008-08-12 00:03:21 +00:00
if ( PriorDeadKey = " comp " )
2008-08-18 19:25:20 +00:00
CompKey := " 2 "
2008-08-12 00:03:21 +00:00
}
2008-08-18 19:25:20 +00:00
else if ( Ebene = 2 )
SendUnicodeChar ( 0x222A ) ; Vereinigung
2008-08-12 00:03:21 +00:00
else if ( Ebene = 3 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x2192 ) ; Untenpfeil
else if ( Ebene = 4 )
if NumLock
send { blind } { Shift up } { NumpadDown }
else
send { blind } { NumpadDown }
2008-05-06 11:41:19 +00:00
return
2008-08-10 18:43:18 +00:00
neo_Numpad3:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
2008-08-18 19:25:20 +00:00
if ( ( Ebene = 1 ) and ! ( CheckCompUni ( " 1 " , 0x2153 ) ; 1/3
or CheckCompUni ( " 5 " , 0x2154 ) ) ) ; 2/3
{
if NumLock
send { blind } { Numpad3 }
else
send { blind ) { Shift up } { Numpad3 }
2008-08-12 00:03:21 +00:00
if ( PriorDeadKey = " comp " )
2008-08-18 19:25:20 +00:00
CompKey := " 3 "
2008-08-12 00:03:21 +00:00
}
2008-08-18 19:25:20 +00:00
else if ( Ebene = 2 )
SendUnicodeChar ( 0x2718 ) ; Kreuzchen
2008-08-12 00:03:21 +00:00
else if ( Ebene = 3 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x2192 ) ; Rechtspfeil
else if ( Ebene = 4 )
if NumLock
send { blind } { Shift up } { NumpadPgDn }
else
send { blind } { NumpadPgDn }
2008-05-06 11:41:19 +00:00
return
2008-08-10 18:43:18 +00:00
neo_Numpad0:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
2008-08-18 19:25:20 +00:00
if ( Ebene = 1 )
2008-08-12 00:03:21 +00:00
{
2008-08-18 19:25:20 +00:00
if NumLock
2008-08-12 00:03:21 +00:00
send { blind } { Numpad0 }
else
2008-08-18 19:25:20 +00:00
send { blind ) { Shift up } { Numpad0 }
2008-08-12 00:03:21 +00:00
if ( PriorDeadKey = " comp " )
2008-08-18 19:25:20 +00:00
CompKey := " 0 "
2008-08-12 00:03:21 +00:00
}
2008-08-18 19:25:20 +00:00
else if ( Ebene = 2 )
SendUnicodeChar ( 0x2030 ) ; Promille
2008-08-12 00:03:21 +00:00
else if ( Ebene = 3 )
2008-08-18 19:25:20 +00:00
SendUnicodeChar ( 0x0025 ) ; Prozent
else if ( Ebene = 4 )
if NumLock
send { blind } { Shift up } { NumpadIns }
else
send { blind } { NumpadIns }
2008-05-06 11:41:19 +00:00
return
2008-08-10 18:43:18 +00:00
neo_NumpadDot:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
2008-08-18 19:25:20 +00:00
if ( Ebene = 1 )
{
if NumLock
2008-08-12 00:03:21 +00:00
send { blind } { NumpadDot }
2008-08-18 19:25:20 +00:00
else
send { blind ) { Shift up } { NumpadDot }
}
else if ( Ebene = 2 )
send `,
2008-08-12 00:03:21 +00:00
else if ( Ebene = 3 )
send { blind } .
2008-08-18 19:25:20 +00:00
else if ( Ebene = 4 )
if NumLock
send { blind } { Shift up } { NumpadDel }
else
send { blind } { NumpadDel }
2008-05-06 11:41:19 +00:00
return
2008-08-18 19:25:20 +00:00
2008-05-06 11:41:19 +00:00
/*
2008-08-12 00:03:21 +00:00
Sondertasten
2008-05-06 11:41:19 +00:00
* /
2008-08-18 19:25:20 +00:00
2008-06-18 23:26:43 +00:00
* space : :
2008-08-12 00:03:21 +00:00
if ( ( einHandNeo ) )
spacepressed := 1
else
goto neo_SpaceUp
2008-06-18 23:26:43 +00:00
return
* space up : :
2008-08-12 00:03:21 +00:00
if ( ( einHandNeo ) )
{
if ( ( keypressed ) )
{
keypressed := 0
spacepressed := 0
}
else
{
goto neo_SpaceUp
}
}
else
{ } ;do nothing
return
2008-05-06 11:41:19 +00:00
2008-06-18 23:26:43 +00:00
neo_SpaceUp:
2008-08-12 00:03:21 +00:00
EbeneAktualisieren ( )
if ( ( Ebene = 1 ) and ! ( CheckComp3Uni ( " r_1 " , 0x2170 ) ; r<> misch i
or CheckComp3Uni ( " R_1 " , 0x2160 ) ) ) ; r<> misch I
Send { blind } { Space }
else if ( ( Ebene = 2 ) or ( Ebene = 3 ) )
Send { blind } { Space }
else if ( Ebene = 4 and ! ( CheckDeadUni ( " c1 " , 0x2070 )
or CheckDeadUni ( " c5 " , 0x2080 ) ) )
Send { blind } { NumPad0 }
else if ( Ebene = 5 )
SendUnicodeChar ( 0x00A0 ) ; gesch<63> tztes Leerzeichen
else if ( Ebene = 6 )
SendUnicodeChar ( 0x202F ) ; schmales Leerzeichen
DeadKey := " " CompKey := " "
spacepressed := 0
keypressed := 0
2008-06-18 23:26:43 +00:00
return
2008-05-06 11:41:19 +00:00
/*
2008-08-12 00:03:21 +00:00
Folgende Tasten sind nur aufgef <EFBFBD> hrt , um PriorDeadKey zu leeren .
Irgendwie sieht das noch nicht sch <EFBFBD> n aus . Vielleicht l <EFBFBD> sst sich dieses
2008-08-18 19:25:20 +00:00
Problem auch eleganter l <EFBFBD> sen . . .
2008-05-06 11:41:19 +00:00
* /
* Enter : :
2008-08-12 00:03:21 +00:00
if ( not ( lernModus ) or lernModus_std_Return )
{
send { Blind } { Enter }
DeadKey := " " CompKey := " "
}
2008-05-06 11:41:19 +00:00
return
* Backspace : :
2008-08-12 00:03:21 +00:00
if ( not ( lernModus ) or lernModus_std_Backspace )
{
send { Blind } { Backspace }
DeadKey := " " CompKey := " "
}
2008-05-06 11:41:19 +00:00
return
2008-08-18 19:25:20 +00:00
2008-06-21 19:27:39 +00:00
* Del : :
2008-08-12 00:03:21 +00:00
if ( not ( lernModus ) or lernModus_std_Entf )
send { Blind } { Del }
2008-06-21 19:27:39 +00:00
return
* Ins : :
2008-08-12 00:03:21 +00:00
if ( not ( lernModus ) or lernModus_std_Einf )
send { Blind } { Ins }
2008-06-21 19:27:39 +00:00
return
2008-05-06 11:41:19 +00:00
/*
2008-08-10 18:43:18 +00:00
Auf Mod3 + Tab liegt Compose .
2008-05-06 11:41:19 +00:00
* /
2008-06-18 23:26:43 +00:00
neo_tab:
2008-08-12 00:03:21 +00:00
if ( IsMod3Pressed ( ) ) ;#
{
DeadKey := " comp "
CompKey := " "
}
else
{
send { blind } { Tab }
DeadKey := " "
CompKey := " "
}
2008-05-06 11:41:19 +00:00
return
2008-06-21 19:27:39 +00:00
* Home : :
2008-08-12 00:03:21 +00:00
if ( not ( lernModus ) or lernModus_std_Pos1 )
{
send { Blind } { Home }
DeadKey := " " CompKey := " "
}
2008-05-06 11:41:19 +00:00
return
* End : :
2008-08-12 00:03:21 +00:00
if ( not ( lernModus ) or lernModus_std_Ende )
{
send { Blind } { End }
DeadKey := " " CompKey := " "
}
2008-05-06 11:41:19 +00:00
return
* PgUp : :
2008-08-12 00:03:21 +00:00
if ( not ( lernModus ) or lernModus_std_PgUp )
{
send { Blind } { PgUp }
DeadKey := " " CompKey := " "
}
2008-05-06 11:41:19 +00:00
return
* PgDn : :
2008-08-12 00:03:21 +00:00
if ( not ( lernModus ) or lernModus_std_PgDn )
{
send { Blind } { PgDn }
DeadKey := " " CompKey := " "
}
2008-05-06 11:41:19 +00:00
return
* Up : :
2008-08-12 00:03:21 +00:00
if ( not ( lernModus ) or lernModus_std_Hoch )
{
send { Blind } { Up }
DeadKey := " " CompKey := " "
}
2008-05-06 11:41:19 +00:00
return
* Down : :
2008-08-12 00:03:21 +00:00
if ( not ( lernModus ) or lernModus_std_Runter )
{
send { Blind } { Down }
DeadKey := " " CompKey := " "
}
2008-05-06 11:41:19 +00:00
return
* Left : :
2008-08-12 00:03:21 +00:00
if ( not ( lernModus ) or lernModus_std_Links )
{
send { Blind } { Left }
DeadKey := " " CompKey := " "
}
2008-05-06 11:41:19 +00:00
return
* Right : :
2008-08-12 00:03:21 +00:00
if ( not ( lernModus ) or lernModus_std_Rechts )
{
send { Blind } { Right }
DeadKey := " " CompKey := " "
}
2008-05-06 11:41:19 +00:00
return
2008-07-02 14:06:46 +00:00
2008-08-11 10:55:06 +00:00
2008-07-02 14:06:46 +00:00
/*
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Methode KeyboardLED zur Steuerung der Keyboard - LEDs
( N u m L o c k / C a p s L o c k / S c r o l l L o c k - L i c h t e r )
Benutzungshinweise: Man benutze
KeyboardLED ( LEDvalue , " Cmd " ) , wobei
Cmd = on / off / switch ,
2008-08-18 19:25:20 +00:00
LEDvalue: ScrollLock = 1 , NumLock = 2 , CapsLock = 4 ,
2008-07-02 14:06:46 +00:00
bzw . eine beliebige Summe dieser Werte :
AlleAus = 0 , CapsLock + NumLock = 6 , etc .
Der folgende Code wurde <EFBFBD> bernommen von :
http: / / www . autohotkey . com / forum / viewtopic . php ? t = 10532
Um eventuelle Wechselwirkungen mit dem bestehenden
2008-08-18 19:25:20 +00:00
Code ( insb . der Unicode - Konvertierung ) auszuschlie <EFBFBD> en ,
2008-07-02 14:06:46 +00:00
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 )
}
2008-05-06 11:41:19 +00:00
BSSendUnicodeChar ( charCode )
{
send { bs }
2008-06-11 17:08:16 +00:00
SendUnicodeChar ( charCode )
2008-05-06 11:41:19 +00:00
}
CompUnicodeChar ( charCode )
{
send { bs }
2008-07-25 06:46:11 +00:00
SendUnicodeChar ( charCode )
2008-05-06 11:41:19 +00:00
}
Comp3UnicodeChar ( charCode )
{
2008-08-10 18:43:18 +00:00
send { bs } { bs }
2008-06-11 17:08:16 +00:00
SendUnicodeChar ( charCode )
2008-05-06 11:41:19 +00:00
}
2008-08-10 18:43:18 +00:00
deadAsc ( val )
{
global
if ( DeadSilence )
{ } ; keine Ausgabe
else
send % " {blind} " . val
}
deadUni ( val )
{
global
if ( DeadSilence )
{ } ; keine Ausgabe
else
SendUnicodeChar ( val )
}
undeadAsc ( val )
{
global
if ( DeadSilence )
send % " {blind} " . val
else
send % " {blind}{bs} " . val
}
undeadUni ( val )
{
global
if ( DeadSilence )
{ } ; keine ausgabe
else
send { bs }
SendUnicodeChar ( val )
}
CheckDeadAsc ( d , val )
{
global
if ( PriorDeadKey == d )
{
undeadAsc ( val )
return 1
}
else
return 0
}
CheckDeadUni ( d , val )
{
global
if ( PriorDeadKey == d )
{
undeadUni ( val )
return 1
}
else
return 0
}
CheckDeadAsc12 ( d , val1 , val2 )
{
global
if ( PriorDeadKey == d )
{
if ( ( Ebene = 1 ) and ( val1 != " " ) )
{
undeadAsc ( val1 )
return 1
}
else if ( ( Ebene = 2 ) and ( val2 != " " ) )
{
undeadAsc ( val2 )
return 1
}
else
return 0
}
else
return 0
}
CheckDeadUni12 ( d , val1 , val2 )
{
global
if ( PriorDeadKey == d )
{
if ( ( Ebene = 1 ) and ( val1 != " " ) )
{
undeadUni ( val1 )
return 1
}
else if ( ( Ebene = 2 ) and ( val2 != " " ) )
{
undeadUni ( val2 )
return 1
}
else
return 0
}
else
return 0
}
compAsc ( val )
{
global
if ( DeadCompose )
{ } ; keine Ausgabe
else
send % " {blind} " . val
}
compUni ( val )
{
global
if ( DeadCompose )
{ } ; keine Ausgabe
else
SendUnicodeChar ( val )
}
uncompAsc ( val )
{
global
if ( DeadCompose )
send % " {blind} " . val
else
send % " {blind}{bs} " . val
}
uncompUni ( val )
{
global
if ( DeadCompose )
{ } ; keine ausgabe
else
send { bs }
SendUnicodeChar ( val )
}
uncomp3Uni ( val )
{
global
if ( DeadCompose )
{ } ; keine ausgabe
else
send { bs } { bs }
SendUnicodeChar ( val )
}
CheckCompAsc ( d , val )
{
global
if ( PriorCompKey == d )
{
uncompAsc ( val )
return 1
}
else
return 0
}
CheckCompAsc12 ( d , val1 , val2 )
{
global
if ( PriorCompKey == d )
if ( ( Ebene = 1 ) and ( val1 != " " ) )
{
uncompAsc ( val1 )
return 1
}
else if ( ( Ebene = 2 ) and ( val2 != " " ) )
{
uncompAsc ( val2 )
return 1
}
else
return 0
else
return 0
}
CheckCompUni ( d , val )
{
global
if ( PriorCompKey == d )
{
uncompUni ( val )
return 1
}
else
return 0
}
CheckCompUni12 ( d , val1 , val2 )
{
global
if ( PriorCompKey == d )
{
if ( ( Ebene = 1 ) and ( val1 != " " ) )
{
uncompUni ( val1 )
return 1
}
else if ( ( Ebene = 2 ) and ( val2 != " " ) )
{
uncompUni ( val2 )
return 1
}
else
return 0
}
else
return 0
}
CheckComp3Uni ( d , val )
{
global
if ( PriorCompKey == d )
{
uncomp3Uni ( val )
return 1
}
else
return 0
}
CheckComp3Uni12 ( d , val1 , val2 )
{
global
if ( PriorCompKey == d )
{
if ( ( Ebene = 1 ) and ( val1 != " " ) )
{
uncomp3Uni ( val1 )
return 1
}
else if ( ( Ebene = 2 ) and ( val2 != " " ) )
{
uncomp3Uni ( val2 )
return 1
}
else
return 0
}
else
return 0
}
outputChar ( val1 , val2 )
{
global
if ( Ebene = 1 )
c := val1
else
c := val2
send % " {blind} " . c
if ( PriorDeadKey = " comp " )
CompKey := c
}
2008-07-24 00:16:58 +00:00
/*
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Methoden zum Senden von Unicode - Zeichen
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* /
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Alter Weg <EFBFBD> Copy / Paste <EFBFBD> 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 <EFBFBD> Benutzung der entsprechenden Win32 - API - Methode
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
2008-08-18 19:25:20 +00:00
/*
<EFBFBD> ber den GTK - Workaround :
Dieser basiert auf http : / / www . autohotkey . com / forum / topic32947 . html
Der Aufruf von <EFBFBD> SubStr ( charCode , 3 ) <EFBFBD> geht davon aus , dass alle charCodes in Hex mit f <EFBFBD> hrendem <EFBFBD> 0 x <EFBFBD> angegeben sind . Die abenteuerliche <EFBFBD> ^ + u <EFBFBD> - Konstruktion ben <EFBFBD> tigt im <EFBFBD> brigen den Hex - Wert in Kleinschrift , was derzeit nicht bei den Zeichendefinitionen umgesetzt ist , daher zentral und weniger fehlertr <EFBFBD> chtig an dieser Stelle . Au <EFBFBD> erdem ein abschlie <EFBFBD> end gesendetes Space , sonst bleibt der <EFBFBD> eingetippte <EFBFBD> Unicode - Wert noch kurz sichtbar stehen , bevor er sich GTK - sei - dank in das gew <EFBFBD> nschte Zeichen verwandelt .
* /
SendUnicodeChar ( charCode )
{
IfWinActive , ahk_class gdkWindowToplevel
{
StringLower , charCode , charCode
send % " ^+u " . SubStr ( charCode , 3 ) . " "
} else {
VarSetCapacity ( ki , 28 * 2 , 0 )
EncodeInteger ( & ki + 0 , 1 )
EncodeInteger ( & ki + 6 , charCode )
EncodeInteger ( & ki + 8 , 4 )
EncodeInteger ( & ki + 28 , 1 )
EncodeInteger ( & ki + 34 , charCode )
EncodeInteger ( & ki + 36 , 4 | 2 )
DllCall ( " SendInput " , " UInt " , 2 , " UInt " , & ki , " Int " , 28 )
}
}
2008-07-24 00:16:58 +00:00
2008-08-18 19:25:20 +00:00
EncodeInteger ( ref , val )
{
DllCall ( " ntdll\RtlFillMemoryUlong " , " Uint " , ref , " Uint " , 4 , " Uint " , val )
}
2008-07-24 00:16:58 +00:00
/*
2008-06-16 17:29:58 +00:00
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BildschirmTastatur
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* /
guiErstellt = 0
alwaysOnTop = 1
2008-08-10 18:43:18 +00:00
* F1 : :
if ( isMod4Pressed ( ) and zeigeBildschirmTastatur )
2008-06-16 17:29:58 +00:00
goto Switch1
2008-08-10 18:43:18 +00:00
else
send { blind } { F1 }
return
* F2 : :
if ( isMod4Pressed ( ) and zeigeBildschirmTastatur )
2008-06-16 17:29:58 +00:00
goto Switch2
2008-08-10 18:43:18 +00:00
else
send { blind } { F2 }
return
* F3 : :
if ( isMod4Pressed ( ) and zeigeBildschirmTastatur )
2008-06-16 17:29:58 +00:00
goto Switch3
2008-08-10 18:43:18 +00:00
else
send { blind } { F3 }
return
* F4 : :
if ( isMod4Pressed ( ) and zeigeBildschirmTastatur )
2008-06-16 17:29:58 +00:00
goto Switch4
2008-08-10 18:43:18 +00:00
else
send { blind } { F4 }
return
* F5 : :
if ( isMod4Pressed ( ) and zeigeBildschirmTastatur )
2008-06-16 17:29:58 +00:00
goto Switch5
2008-08-10 18:43:18 +00:00
else
send { blind } { F5 }
return
* F6 : :
if ( isMod4Pressed ( ) and zeigeBildschirmTastatur )
2008-06-16 17:29:58 +00:00
goto Switch6
2008-08-10 18:43:18 +00:00
else
send { blind } { F6 }
return
* F7 : :
if ( isMod4Pressed ( ) and zeigeBildschirmTastatur )
2008-06-16 17:29:58 +00:00
goto Show
2008-08-10 18:43:18 +00:00
else
send { blind } { F7 }
return
* F8 : :
if ( isMod4Pressed ( ) and zeigeBildschirmTastatur )
2008-07-02 14:06:46 +00:00
goto ToggleAlwaysOnTop
2008-08-10 18:43:18 +00:00
else
send { blind } { F8 }
return
2008-06-16 17:29:58 +00:00
Switch1:
2008-08-10 18:43:18 +00:00
tImage := ResourceFolder . " \ebene1.png "
goto Switch
2008-06-16 17:29:58 +00:00
Return
Switch2:
2008-08-10 18:43:18 +00:00
tImage := ResourceFolder . " \ebene2.png "
goto Switch
2008-06-16 17:29:58 +00:00
Return
Switch3:
2008-08-10 18:43:18 +00:00
tImage := ResourceFolder . " \ebene3.png "
goto Switch
2008-06-16 17:29:58 +00:00
Return
Switch4:
2008-08-10 18:43:18 +00:00
tImage := ResourceFolder . " \ebene4.png "
goto Switch
2008-06-16 17:29:58 +00:00
Return
Switch5:
2008-08-10 18:43:18 +00:00
tImage := ResourceFolder . " \ebene5.png "
goto Switch
2008-06-16 17:29:58 +00:00
Return
Switch6:
2008-08-10 18:43:18 +00:00
tImage := ResourceFolder . " \ebene6.png "
goto Switch
Return
Switch:
2008-06-16 17:29:58 +00:00
if ( guiErstellt )
{
2008-08-10 18:43:18 +00:00
if ( Image = tImage )
2008-06-16 17:29:58 +00:00
goto Close
else
{
2008-08-10 18:43:18 +00:00
Image := tImage
2008-06-16 17:29:58 +00:00
SetTimer , Refresh
}
}
else
{
2008-08-10 18:43:18 +00:00
Image := tImage
2008-06-16 17:29:58 +00:00
goto Show
}
Return
Show:
if ( guiErstellt )
{
goto Close
}
else
{
2008-07-02 14:06:46 +00:00
if ( Image = " " )
2008-06-16 17:29:58 +00:00
{
2008-08-10 18:43:18 +00:00
Image := ResourceFolder . " \ebene1.png "
2008-06-16 17:29:58 +00:00
}
yPosition := A_ScreenHeight - 270
2008-07-02 14:06:46 +00:00
Gui , Color , FFFFFF
2008-06-16 17:29:58 +00:00
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 <EFBFBD> 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
2008-08-10 18:43:18 +00:00
; SetTimer, Refresh
2008-06-16 17:29:58 +00:00
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
2008-05-06 11:41:19 +00:00
2008-07-02 14:06:46 +00:00