summaryrefslogtreecommitdiff
path: root/windows/neo-vars/src/source
diff options
context:
space:
mode:
authormartin_r <martin_r@b9310e46-f624-0410-8ea1-cfbb3a30dc96>2008-11-15 23:20:16 +0000
committermartin_r <martin_r@b9310e46-f624-0410-8ea1-cfbb3a30dc96>2008-11-15 23:20:16 +0000
commita65635420c3b1905a051ea2f242fcc7f1b940e00 (patch)
tree501b462ef1ed345637d3ff04ac37dc4f05651b4b /windows/neo-vars/src/source
parente3546b5589136bfea6d09e784901350f0cab30e0 (diff)
downloadneo-layout-a65635420c3b1905a051ea2f242fcc7f1b940e00.tar.gz
neo-layout-a65635420c3b1905a051ea2f242fcc7f1b940e00.tar.bz2
neo-layout-a65635420c3b1905a051ea2f242fcc7f1b940e00.zip
Bildschirmtastatur gefixt
git-svn-id: https://svn.neo-layout.org@1209 b9310e46-f624-0410-8ea1-cfbb3a30dc96
Diffstat (limited to 'windows/neo-vars/src/source')
-rw-r--r--windows/neo-vars/src/source/recycle.ahk822
-rw-r--r--windows/neo-vars/src/source/resources.ahk2
2 files changed, 1 insertions, 823 deletions
diff --git a/windows/neo-vars/src/source/recycle.ahk b/windows/neo-vars/src/source/recycle.ahk
deleted file mode 100644
index a9cc8e0..0000000
--- a/windows/neo-vars/src/source/recycle.ahk
+++ /dev/null
@@ -1,822 +0,0 @@
-/******************
-* Initialisierung *
-*******************
-*/
-
-SetCapsLockState Off
-SetNumLockState Off
-SetScrollLockState Off
-
-name=Neo 2.0 (%A_ScriptName%) (r%Revision%-r%CompRevision%)
-enable=Aktiviere %name%
-disable=Deaktiviere %name%
-#LTrim ; Quelltext kann eingerückt werden,
-
-/****************
-* Verzeichnisse *
-*****************
-*/
-; Setzt den Pfad zu einem temporären Verzeichnis
-EnvGet, WindowsEnvTempFolder, TEMP
-ResourceFolder = %WindowsEnvTempFolder%\NEO2
-FileCreateDir, %ResourceFolder%
-
-; Setzt den Pfad zu den NEO-Anwendungsdateien
-EnvGet, WindowsEnvAppDataFolder, APPDATA
-ApplicationFolder = %WindowsEnvAppDataFolder%\NEO2
-FileCreateDir, %ApplicationFolder%
-ini = %ApplicationFolder%\NEO2.ini
-
-/*******************
-* Globale Schalter *
-********************
-*/
-; Im folgenden gilt (soweit nicht anders angegeben) Ja = 1, Nein = 0:
-
-; Sollen die Bilder für die Bildschirmtastatur in die compilierte EXE-Datei miteingebunden werden? (Nachteil: grössere Dateigrösse, Vorteil: Referenz für Anfänger stets einfach verfügbar)
-bildschirmTastaturEinbinden := 1
-
-; Syntaxhinweis: IniRead, Variable, InputFilename, Section, Key [, DefaultValue]
-
-; Soll der Treiber im Einhandmodus betrieben werden?
-IniRead,einHandNeo,%ini%,Global,einHandNeo,0
-
-; Soll der Lernmodus aktiviert werden?
-IniRead,lernModus,%ini%,Global,lernModus,0
-
-; Soll mit einer MsgBox explizit auf das Ein- und Ausschalten des Mod4-Locks hingewiesen werden?
-IniRead,zeigeLockBox,%ini%,Global,zeigeLockBox,1
-
-; Soll mit einer MsgBox explizit auf das Ein- und Ausschalten der alternativen Modi (Lernmodus, Einhandmodus, lang-s-Modus, VM-Belegung) hingewiesen werden?
-IniRead,zeigeModusBox,%ini%,Global,zeigeModusBox,1
-
-; Soll aktivierter Mod4-Lock über die Rollen-LED des Keybord angezeigt werden (analog zu CapsLock)?
-IniRead,UseMod4Light,%ini%,Global,UseMod4Light,1
-
-; Soll Lang-s auf s, s auf ß und ß auf Lang-s gelegt (bzw. vertauscht) werden?
-IniRead,LangSTastatur,%ini%,Global,LangSTastatur,0
-If LangSTastatur
- CharProc("LnS1")
-else
- KeyboardLED(2,"off") ; deaktivieren, falls sie doch brennt
-
-IniRead,isVM,%ini%,Global,isVM,0
-if (isVM)
- CharProc("_VM1")
-
-;Soll der Mod2Lock auch auf die Akzente, die Ziffernreihe und das Numpad angewandt werden?
-; Wird striktesMod2Lock auf 1 gesetzt, wirkt CapsLock wie ShiftLock
-IniRead,striktesMod2Lock,%ini%,Global,striktesMod2Lock,0
-
-
-/***********************
-* Resourcen-Verwaltung *
-************************
-*/
-if(FileExist("ResourceFolder")<>false){
- ; Versuche, alle möglicherweise in die EXE eingebundenen Dateien zu extrahieren
- FileInstall,neo_enabled.ico,%ResourceFolder%\neo_enabled.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
- }
-}else{
- MsgBox,"Das Verzeichnis %ResourceFolder% konnte nicht angelegt werden!" ; Diese Zeile dient nur der eventuellen Fehlersuche und sollte eigentlich niemals auftauchen.
-}
-
-; Benutze die Dateien auch dann, wenn sie eventuell im aktuellen Verzeichnis vorhanden sind
-if(FileExist("ebene1.png")&&FileExist("ebene2.png")&&FileExist("ebene3.png")&&FileExist("ebene4.png")&&FileExist("ebene5.png")&&FileExist("ebene6.png"))
- zeigeBildschirmTastatur=1
-if(FileExist("neo_enabled.ico")&&FileExist("neo_disabled.ico"))
- iconBenutzen=1
-
-/*******************************************
-* Überprüfung auf deutsches Tastaturlayout *
-********************************************
-*/
-regread,inputlocale,HKEY_CURRENT_USER,Keyboard Layout\Preload,1
-regread,inputlocalealias,HKEY_CURRENT_USER,Keyboard Layout\Substitutes,%inputlocale%
-if (inputlocalealias<>inputlocale=%inputlocalealias% and inputlocale<>00000407) {
- suspend
- regread,inputlocale,HKEY_LOCAL_MACHINE,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\%inputlocale%,Layout Text
- msgbox, 48, Warnung!,
- (
- Nicht kompatibles Tastaturlayout:
- `t%inputlocale%
- `nDas deutsche QWERTZ muss als Standardlayout eingestellt
- sein, damit %name% wie erwartet funktioniert.
- `nÄndern Sie die Tastatureinstellung unter
- `tSystemsteuerung
- `t-> Regions- und Sprachoptionen
- `t-> Sprachen
- `t-> Details... `n
- )
- exitapp
-}
-
-/*************************
-* Menü des Systray-Icons *
-**************************
-*/
-if (iconBenutzen)
- menu,tray,icon,%ResourceFolder%\neo_enabled.ico,,1
-menu,tray,nostandard
-menu,tray,add,Öffnen,open
- menu,helpmenu,add,About,about
- menu,helpmenu,add,Autohotkey-Hilfe,help
- menu,helpmenu,add
- menu,helpmenu,add,http://autohotkey.com/,autohotkey
- menu,helpmenu,add,http://www.neo-layout.org/,neo
-menu,tray,add,Hilfe,:helpmenu
-menu,tray,add
-menu,tray,add,%disable%,togglesuspend
-menu,tray,add
-menu,tray,add,Bearbeiten,edit
-menu,tray,add,Neu Laden,reload
-menu,tray,add
-menu,tray,add,Nicht im Systray anzeigen,hide
-menu,tray,add,%name% beenden, exitprogram
-menu,tray,default,%disable%
-menu,tray,tip,%name%
-
-/*
-Sonstige Variablen
-*/
-guiErstellt := 0
-alwaysOnTop := 1
-wasNonShiftKeyPressed := 0
-isShiftRPressed := 0
-isShiftLPressed := 0
-isShiftPressed := 0
-isMod2Locked := 0
-IsMod3RPressed := 0
-IsMod3LPressed := 0
-IsMod3Pressed := 0
-IsMod4RPressed := 0
-IsMod4LPressed := 0
-IsMod4Pressed := 0
-IsMod4Locked := 0
-EbeneAktualisieren()
-; die Nachfolgenden sind nützlich um sich die Qwertz-Tasten abzugewöhnen, da alle auf der 4. Ebene vorhanden.
-lernModus_std_Return := 0
-lernModus_std_Backspace := 0
-lernModus_std_PgUp := 0
-lernModus_std_PgDn := 0
-lernModus_std_Einf := 0
-lernModus_std_Entf := 0
-lernModus_std_Pos0 := 0
-lernModus_std_Ende := 0
-lernModus_std_Hoch := 0
-lernModus_std_Runter := 0
-lernModus_std_Links := 0
-lernModus_std_Rechts := 0
-lernModus_std_ZahlenReihe := 0
-
-; im folgenden kann man auch noch ein paar Tasten der 4. Ebene deaktivieren
-; nützlich um sich zu zwingen, richtig zu schreiben
-lernModus_neo_Backspace := 0
-lernModus_neo_Entf := 1
-
-
-
-EbeneAktualisieren() {
- global
- Modstate := IsMod4Active() . IsMod3Active()
- Ebene7 := 0
- Ebene8 := 0
- if (Modstate == "00") { ; Ebene 1 oder 2
- if (IsShiftActive()) ; Ebene 2: Shift oder CapsLock
- EbeneC := 2
- else ; Ebene 1: Ohne Mod oder CapsLock mit Shift
- EbeneC := 1
- if (IsShiftPressed) ; NC: Ebene 2: Shift (ignoriert CapsLock)
- EbeneNC := 2
- else ; NC: Ebene 1: Ohne Mod (ignoriert CapsLock)
- EbeneNC := 1
- } else if (Modstate == "01") { ; Ebene 3 oder 5 (ignoriert CapsLock)
- if (IsShiftPressed) ; Ebene 5: Shift+Mod3
- EbeneC := 5
- else ; Ebene 3: Mod3
- EbeneC := 3
- EbeneNC := EbeneC ; NC: gleich
- } else if (Modstate == "10") { ; Ebene 4 (Mit Shift: Auch Ebene 7) (ignoriert CapsLock)
- EbeneC := 4
- if (IsShiftPressed) ; Ebene 7: Shift+Mod4
- Ebene7 := 1
- EbeneNC := EbeneC ; NC: gleich
- } else if (ModState == "11") { ; Ebene 6 (Mit Shift Xoder CapsLock: Auch Ebene 8)
- EbeneC := 6
- if (IsShiftPressed) ; Ebene 8: Shift (ignoriert CapsLock)
- Ebene8 := 1
- EbeneNC := EbeneC ; NC: gleich
- }
-}
-
-IsShiftActive() {
- global
- if (isMod2Locked)
- if (isShiftPressed)
- return 0
- else
- return 1
- else
- if (isShiftPressed)
- return 1
- else
- return 0
-}
-
-IsMod3Active() {
- global
- return isMod3Pressed
-}
-
-IsMod4Active() {
- global
- if (isMod4Locked)
- if (isMod4Pressed)
- return 0
- else
- return 1
- else
- if (isMod4Pressed)
- return 1
- else
- return 0
-}
-
-/*
- ------------------------------------------------------
- Methode KeyboardLED zur Steuerung der Keyboard-LEDs
- (NumLock/CapsLock/ScrollLock-Lichter)
-
- Benutzungshinweise: Man benutze
- KeyboardLED(LEDvalue,"Cmd"), wobei
- Cmd = on/off/switch,
- LEDvalue: ScrollLock=1, NumLock=2, CapsLock=4,
- bzw. eine beliebige Summe dieser Werte:
- AlleAus=0, CapsLock+NumLock=6, etc.
-
- Der folgende Code wurde übernommen von:
- http://www.autohotkey.com/forum/viewtopic.php?t=10532
-
- Um eventuelle Wechselwirkungen mit dem bestehenden
- Code (insb. der Unicode-Konvertierung) auszuschließen,
- sind auch alle (Hilfsmethoden) mit dem Postfix LED
- versehen worden.
- ------------------------------------------------------
-*/
-
-KeyboardLED(LEDvalue, Cmd){ ; LEDvalue: ScrollLock=1, NumLock=2, CapsLock=4 ; Cmd = on/off/switch
- Static h_device
- If ! h_device ; initialise
- {
- device=\Device\KeyBoardClass0
- SetUnicodeStrLED(fn,device)
- h_device:=NtCreateFileLED(fn,0+0x00000100+0x00000080+0x00100000,1,1,0x00000040+0x00000020,0)
- }
- VarSetCapacity(output_actual,4,0)
- input_size=4
- VarSetCapacity(input,input_size,0)
- If Cmd=switch ;switches every LED according to LEDvalue
- KeyLED:=LEDvalue
- If Cmd=on ;forces all choosen LED's to ON (LEDvalue= 0 ->LED's according to keystate)
- KeyLED:=LEDvalue | (GetKeyState("ScrollLock", "T") + 2*GetKeyState("NumLock", "T") + 4*GetKeyState("CapsLock", "T"))
- If Cmd=off ;forces all choosen LED's to OFF (LEDvalue= 0 ->LED's according to keystate)
- {
- LEDvalue:=LEDvalue ^ 7
- KeyLED:=LEDvalue & (GetKeyState("ScrollLock","T") + 2*GetKeyState("NumLock","T") + 4*GetKeyState("CapsLock","T"))
- }
- ; EncodeIntegerLED(KeyLED,1,&input,2) ;input bit pattern (KeyLED): bit 0 = scrolllock ;bit 1 = numlock ;bit 2 = capslock
- input:=Chr(1) Chr(1) Chr(KeyLED)
- input:=Chr(1)
- input=
- success:=DllCall("DeviceIoControl"
- , "uint", h_device
- , "uint", CTL_CODE_LED( 0x0000000b ; FILE_DEVICE_KEYBOARD
- , 2
- , 0 ; METHOD_BUFFERED
- , 0 ) ; FILE_ANY_ACCESS
- , "uint", &input
- , "uint", input_size
- , "uint", 0
- , "uint", 0
- , "uint", &output_actual
- , "uint", 0 )
-}
-
-CTL_CODE_LED(p_device_type,p_function,p_method,p_access ){
- Return, ( p_device_type << 16 ) | ( p_access << 14 ) | ( p_function << 2 ) | p_method
-}
-
-NtCreateFileLED(ByRef wfilename,desiredaccess,sharemode,createdist,flags,fattribs){
- VarSetCapacity(fh,4,0)
- VarSetCapacity(objattrib,24,0)
- VarSetCapacity(io,8,0)
- VarSetCapacity(pus,8)
- uslen:=DllCall("lstrlenW","str",wfilename)*2
- InsertIntegerLED(uslen,pus,0,2)
- InsertIntegerLED(uslen,pus,2,2)
- InsertIntegerLED(&wfilename,pus,4)
- InsertIntegerLED(24,objattrib,0)
- InsertIntegerLED(&pus,objattrib,8)
- status:=DllCall("ntdll\ZwCreateFile","str",fh,"UInt",desiredaccess,"str",objattrib,"str",io,"UInt",0,"UInt",fattribs
- ,"UInt",sharemode,"UInt",createdist,"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)
-}
-
-/*
- ------------------------------------------------------
- Methoden zum Senden von Unicode-Zeichen
- ------------------------------------------------------
-
-Über den GTK-Workaround:
-Dieser basiert auf http://www.autohotkey.com/forum/topic32947.html
-Der Aufruf von »SubStr(charCode,3)« geht davon aus, dass alle charCodes in Hex mit führendem „0x“ angegeben sind. Die abenteuerliche „^+u“-Konstruktion benötigt im Übrigen den Hex-Wert in Kleinschrift, was derzeit nicht bei den Zeichendefinitionen umgesetzt ist, daher zentral und weniger fehlerträchtig an dieser Stelle. Außerdem ein abschließend gesendetes Space, sonst bleibt der „eingetippte“ Unicode-Wert noch kurz sichtbar stehen, bevor er sich GTK-sei-dank in das gewünschte Zeichen verwandelt.
-Optimierungen von http://fmate14.web.elte.hu/autohotkey/SendU/SendU.ahk
-*/
-
-SendUnicodeChar(charCode){
- IfWinActive,ahk_class gdkWindowToplevel
- {
- StringLower,charCode,charCode
- send % "^+u" . SubStr(charCode,3) . " "
- } else {
- static ki := "#"
- if (ki =="#") {
- VarSetCapacity(ki,28*2,0)
- DllCall("RtlFillMemory","uint",&ki+ 0,"uint",1,"uint",1)
- DllCall("RtlFillMemory","uint",&ki+28+0,"uint",1,"uint",1)
- }
- DllCall("ntdll.dll\RtlFillMemoryUlong","uint",&ki+ 6,"uint",4,"uint",0x40000|charCode) ;KEYEVENTF_UNICODE
- DllCall("ntdll.dll\RtlFillMemoryUlong","uint",&ki+28+6,"uint",4,"uint",0x60000|charCode) ;KEYEVENTF_KEYUP|KEYEVENTF_UNICODE
- DllCall("SendInput","UInt",2,"UInt",&ki,"Int",28)
- }
-}
-
-SendUnicodeCharDown(charCode){
- IfWinActive,ahk_class gdkWindowToplevel
- {
- StringLower,charCode,charCode
- send % "^+u" . SubStr(charCode,3) . " "
- } else {
- static ki := "#"
- if (ki =="#") {
- VarSetCapacity(ki,28,0)
- DllCall("RtlFillMemory","uint",&ki,"uint",1,"uint",1)
- }
- DllCall("ntdll.dll\RtlFillMemoryUlong","uint",&ki+6,"uint",4,"uint",0x40000|charCode) ;KEYEVENTF_UNICODE
- DllCall("SendInput","UInt",1,"UInt",&ki,"Int",28)
- }
-}
-
-SendUnicodeCharUp(charCode){
- IfWinActive,ahk_class gdkWindowToplevel
- {
- ; nothing
- } else {
- static ki := "#"
- if (ki =="#") {
- VarSetCapacity(ki,28,0)
- DllCall("RtlFillMemory","uint",&ki,"uint",1,"uint",1)
- }
- DllCall("ntdll.dll\RtlFillMemoryUlong","uint",&ki+6,"uint",4,"uint",0x60000|charCode) ;KEYEVENTF_KEYUP|KEYEVENTF_UNICODE
- DllCall("SendInput","UInt",1,"UInt",&ki,"Int",28)
- }
-}
-
-/**********************
-* Tastenkombinationen *
-***********************
-*/
-
-; dieser Hook fixt einen AHK-Bug, dass dieses bei Reload und gedruecktem Mod4
-; den ersten hook ausfuehrt, als waere dieser tatsaechlich aufgerufen worden.
-; Wenn man hier einen unverfaenglichen Hook eintraegt, gibt es keine Broesel.
-~F24::return
-
-+pause::
-Suspend, Permit
- goto togglesuspend
-
-/*****************
-* Menüfunktionen *
-******************
-*/
-togglesuspend:
- if A_IsSuspended {
- menu, tray, rename, %enable%, %disable%
- menu, tray, tip, %name%
- if (iconBenutzen)
- menu, tray, icon, %ResourceFolder%\neo_enabled.ico,,1
- suspend , off ; Schaltet Suspend aus -> NEO
- } else {
- menu, tray, rename, %disable%, %enable%
- menu, tray, tip, %name% : Deaktiviert
- if (iconBenutzen)
- menu, tray, icon, %ResourceFolder%\neo_disabled.ico,,1
- suspend , on ; Schaltet Suspend ein -> QWERTZ
- }
-return
-
-help:
- Run, %A_WinDir%\hh mk:@MSITStore:autohotkey.chm
-return
-
-about:
- msgbox, 64, %name% – Ergonomische Tastaturbelegung,
- (
- %name%
- `nDas Neo-Layout ersetzt das übliche deutsche
- Tastaturlayout mit der Alternative Neo,
- beschrieben auf http://neo-layout.org/.
- `nDazu sind keine Administratorrechte nötig.
- `nWenn Autohotkey aktiviert ist, werden alle Tastendrucke
- abgefangen und statt dessen eine Übersetzung weitergeschickt.
- `nDies geschieht transparent für den Anwender,
- es muss nichts installiert werden.
- `nDie Zeichenübersetzung kann leicht über das Icon im
- Systemtray deaktiviert werden. `n
- )
-return
-
-neo:
- run http://neo-layout.org/
-return
-
-autohotkey:
- run http://autohotkey.com/
-return
-
-open:
- ListLines ; shows the Autohotkey window
-return
-
-edit:
- edit
-return
-
-reload:
- Reload
-return
-
-hide:
- menu, tray, noicon
-return
-
-exitprogram:
- exitapp
-return
-
-; LShift+RShift == CapsLock (simuliert)
-; Es werden nur die beiden Tastenkombinationen abgefragt,
-; daher kommen LShift und RShift ungehindert bis in die
-; Applikation. Dies ist aber merkwürdig, da beide Shift-
-; Tasten nun /modifier keys/ werden und, wie in der AHK-
-; Hilfe beschrieben, eigentlich nicht mehr bis zur App
-; durchkommen sollten.
-; KeyboardLED(4,"switch") hatte ich zuerst genommen, aber
-; das schaltet, oh Wunder, die LED nicht wieder aus.
-
-~*VKA1SC136::
- if (isShiftLPressed and !isShiftRPressed and !wasNonShiftKeyPressed)
- ToggleMod2Lock()
- isShiftRPressed := 1
- isShiftPressed := 1
- wasNonShiftKeyPressed := 0
- EbeneAktualisieren()
-return
-
-~*VKA1SC136 up::
- isShiftRPressed := 0
- isShiftPressed := isShiftLPressed
- EbeneAktualisieren()
-return
-
-~*VKA0SC02A::
- if (isShiftRPressed and !isShiftLPressed and !wasNonShiftKeyPressed)
- ToggleMod2Lock()
- isShiftLPressed := 1
- isShiftPressed := 1
- wasNonShiftKeyPressed := 0
- EbeneAktualisieren()
-return
-
-~*VKA0SC02A up::
- isShiftLPressed := 0
- isShiftPressed := isShiftRPressed
- EbeneAktualisieren()
-return
-
-ToggleMod2Lock() {
- global
- if (isMod2Locked)
- {
- isMod2Locked := 0
- KeyboardLED(4,"off")
- }
- else
- {
- isMod2Locked := 1
- KeyBoardLED(4,"on")
- }
-}
-
-
-*VKBFSC02B::
- if (isMod3LPressed and !isMod3RPressed and !wasNonShiftKeyPressed)
- CharStarDown("MOD3", "MOD3", "SComp")
- isMod3RPressed := 1
- isMod3Pressed := 1
- wasNonShiftKeyPressed := 0
- EbeneAktualisieren()
-return
-
-*VKBFSC02B up::
- if (isMod3LPressed)
- CharStarUp("MOD3")
- isMod3RPressed := 0
- isMod3Pressed := isMod3LPressed
- EbeneAktualisieren()
-return
-
-*VK14SC03A::
- if (isMod3RPressed and !isMod3LPressed and !wasNonShiftKeyPressed)
- CharStarDown("MOD3", "MOD3", "SComp")
- isMod3LPressed := 1
- isMod3Pressed := 1
- wasNonShiftKeyPressed := 0
- EbeneAktualisieren()
-return
-
-*VK14SC03A up::
- if (isMod3RPressed)
- CharStarUp("MOD3")
- isMod3LPressed := 0
- isMod3Pressed := isMod3RPressed
- EbeneAktualisieren()
-return
-
-;Mod4+Mod4 == Mod4-Lock
-; Im Gegensatz zu LShift+RShift werden die beiden Tasten
-; _nicht_ zur Applikation weitergeleitet, und nur bei
-; gleichzeitigem Drücken wird der Mod4-Lock aktiviert und
-; angezeigt.
-
-*VKA5SC138::
- wasMod4RPressed := isMod4RPressed
- isMod4RPressed := 1
- isMod4Pressed := 1
- waswasNonShiftKeyPressed := wasNonShiftKeyPressed
- wasNonShiftKeyPressed := 0
- EbeneAktualisieren()
- if (isMod4LPressed and !wasMod4RPressed and !waswasNonShiftKeyPressed)
- ToggleMod4Lock()
-return
-
-*VKA5SC138 up::
- isMod4RPressed := 0
- isMod4Pressed := isMod4LPressed
- EbeneAktualisieren()
-return
-
-*VKE2SC056::
- wasMod4LPressed := isMod4LPressed
- isMod4LPressed := 1
- isMod4Pressed := 1
- waswasNonShiftKeyPressed := wasNonShiftKeyPressed
- wasNonShiftKeyPressed := 0
- EbeneAktualisieren()
- if (isMod4RPressed and !wasMod4LPressed and !waswasNonShiftKeyPressed)
- ToggleMod4Lock()
-return
-
-*VKE2SC056 up::
- isMod4LPressed := 0
- isMod4Pressed := isMod4RPressed
- EbeneAktualisieren()
-return
-
-ToggleMod4Lock() {
- global
- if (IsMod4Locked) {
- IsMod4Locked := 0
- if (UseMod4Light)
- KeyboardLED(1,"off")
- if (zeigeLockBox)
- TrayTip,Mod4-Feststellung,Die Feststellung wurde aufgehoben.,3,1
- } else {
- IsMod4Locked := 1
- if (UseMod4Light)
- KeyboardLED(1,"on")
- if (zeigeLockBox)
- TrayTip,Mod4-Feststellung,Um Mod4 wieder zu lösen`, drücke beide Mod4-Tasten gleichzeitig!,3,1
- }
-}
-
-/*
- ------------------------------------------------------
- BildschirmTastatur
- ------------------------------------------------------
-*/
-
-F1::
- if(isMod4Active() && zeigeBildschirmTastatur)
- goto Switch1
- else send {blind}{F1}
-return
-
-F2::
- if(isMod4Active() && zeigeBildschirmTastatur)
- goto Switch2
- else send {blind}{F2}
-return
-
-F3::
- if(isMod4Active() && zeigeBildschirmTastatur)
- goto Switch3
- else send {blind}{F3}
-return
-
-F4::
- if(isMod4Active() && zeigeBildschirmTastatur)
- goto Switch4
- else send {blind}{F4}
-return
-
-F5::
- if(isMod4Active() && zeigeBildschirmTastatur)
- goto Switch5
- else send {blind}{F5}
-return
-
-F6::
- if(isMod4Active() && zeigeBildschirmTastatur)
- goto Switch6
- else send {blind}{F6}
-return
-
-F7::
- if(isMod4Active() && zeigeBildschirmTastatur)
- goto Show
- else send {blind}{F7}
-return
-
-F8::
- if(isMod4Active() && zeigeBildschirmTastatur)
- goto ToggleAlwaysOnTop
- else send {blind}{F8}
-return
-
-Switch1:
- tImage := ResourceFolder . "\ebene1.png"
- goto Switch
-Return
-
-Switch2:
- tImage := ResourceFolder . "\ebene2.png"
- goto Switch
-Return
-
-Switch3:
- tImage := ResourceFolder . "\ebene3.png"
- goto Switch
-Return
-
-Switch4:
- tImage := ResourceFolder . "\ebene4.png"
- goto Switch
-Return
-
-Switch5:
- tImage := ResourceFolder . "\ebene5.png"
- goto Switch
-Return
-
-Switch6:
- tImage := ResourceFolder . "\ebene6.png"
- goto Switch
-Return
-
-SwitchDK:
- tImage := ResourceFolder . "\deadkeys.png"
- goto Switch
-Return
-
-Switch:
- if (guiErstellt)
- {
- if (Image = tImage)
- goto Close
- else
- {
- Image := tImage
- SetTimer, Refresh
- }
- }
- else
- {
- Image := tImage
- goto Show
- }
-Return
-
-Show:
- if (guiErstellt)
- {
- goto Close
- }
- else
- {
- if (Image = "")
- {
- Image := ResourceFolder . "\ebene1.png"
- }
- yPosition := A_ScreenHeight -270
- Gui, Color, FFFFFF
- Gui, Add, Button, xm+5 gSwitch1, F1
- Gui, Add, Text, x+5, kleine Buchstaben
- Gui, Add, Button, xm+5 gSwitch2, F2
- Gui, Add, Text, x+5, große Buchstaben
- Gui, Add, Button, xm+5 gSwitch3, F3
- Gui, Add, Text, x+5, Satz-/Sonderzeichen
- Gui, Add, Button, xm+5 gSwitch4, F4
- Gui, Add, Text, x+5, Zahlen / Steuerung
- Gui, Add, Button, xm+5 gSwitch5, F5
- Gui, Add, Text, x+5, Sprachen
- Gui, Add, Button, xm+5 gSwitch6, F6
- Gui, Add, Text, x+5, Mathesymbole
- Gui, Add, Button, xm+5 gShow, F7
- Gui, Add, Text, x+5, An /
- Gui, Add, Text, y+3, Aus
- Gui, Add, Button, x+10 y+-30 gShow, F8
- Gui, Add, Text, x+5, OnTop
- Gui, Add, Button, xm+5 gSwitchDK, Deadkeys
- Gui, Add, Picture,AltSubmit ys w729 h199 vPicture, %Image%
- Gui, +AlwaysOnTop
- Gui, Show, y%yposition% Autosize
-; SetTimer, Refresh
- guiErstellt = 1
- }
-Return
-
-Close:
- guiErstellt = 0
- Gui, Destroy
-Return
-
-Refresh:
- If (Image != OldImage)
- {
- GuiControl, , Picture, %Image%
- OldImage := Image
- }
-Return
-
-ToggleAlwaysOnTop:
- if (alwaysOnTop)
- {
- Gui, -AlwaysOnTop
- alwaysOnTop = 0
- }
- else
- {
- Gui, +AlwaysOnTop
- alwaysOnTop = 1
- }
-Return
diff --git a/windows/neo-vars/src/source/resources.ahk b/windows/neo-vars/src/source/resources.ahk
index 8f88d4b..56a8736 100644
--- a/windows/neo-vars/src/source/resources.ahk
+++ b/windows/neo-vars/src/source/resources.ahk
@@ -2,7 +2,7 @@ EnvGet, WindowsEnvTempFolder, TEMP
ResourceFolder = %WindowsEnvTempFolder%\NEO2
FileCreateDir, %ResourceFolder%
-if (FileExist("ResourceFolder")) {
+if (FileExist("ResourceFolder")<>false) {
FileInstall,neo_enabled.ico,%ResourceFolder%\neo_enabled.ico,1
FileInstall,neo_disabled.ico,%ResourceFolder%\neo_disabled.ico,1
iconBenutzen=1