root/windows/neo-vars/Source/recycle.ahk @ 1099

Revision 1099, 22.1 KB (checked in by mösi, 5 years ago)

• getrennte Revisionsnummern für das AHK-Skript und das an völlig anderer Stelle liegende Compose-Directory implementiert. Sollte später durch einen Konsistenzcheck ersetzt werden, damit man nur eine Revisionsnummer braucht.

  • Property svn:keywords set to Revision
Line 
1/******************
2* Initialisierung *
3*******************
4*/
5
6#MaxThreadsPerHotKey 4
7
8EbeneAktualisieren()
9SetBatchLines -1
10SetCapsLockState Off
11SetNumLockState Off
12SetScrollLockState Off
13
14name=Neo 2.0 (%A_ScriptName%) (r%Revision%-r%CompRevision%)
15enable=Aktiviere %name%
16disable=Deaktiviere %name%
17#usehook on
18#singleinstance force
19#LTrim ; Quelltext kann einger�ckt werden,
20Process,Priority,,High
21Sendmode Input
22#MaxHotkeysPerInterval 2000
23
24/****************
25* Verzeichnisse *
26*****************
27*/
28; Setzt den Pfad zu einem tempor�ren Verzeichnis
29EnvGet, WindowsEnvTempFolder, TEMP
30ResourceFolder = %WindowsEnvTempFolder%\NEO2
31FileCreateDir, %ResourceFolder%
32
33; Setzt den Pfad zu den NEO-Anwendungsdateien
34EnvGet, WindowsEnvAppDataFolder, APPDATA
35ApplicationFolder = %WindowsEnvAppDataFolder%\NEO2
36FileCreateDir, %ApplicationFolder%
37ini = %ApplicationFolder%\NEO2.ini
38
39/*******************
40* Globale Schalter *
41********************
42*/
43; Im folgenden gilt (soweit nicht anders angegeben) Ja = 1, Nein = 0:
44
45; 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)
46bildschirmTastaturEinbinden := 1
47
48; Syntaxhinweis: IniRead, Variable, InputFilename, Section, Key [, DefaultValue]
49
50; Soll der Treiber im Einhandmodus betrieben werden?
51IniRead,einHandNeo,%ini%,Global,einHandNeo,0
52
53; Soll der Lernmodus aktiviert werden?
54IniRead,lernModus,%ini%,Global,lernModus,0
55
56; Soll mit einer MsgBox explizit auf das Ein- und Ausschalten des Mod4-Locks hingewiesen werden?
57IniRead,zeigeLockBox,%ini%,Global,zeigeLockBox,1
58
59; Soll aktivierter Mod4-Lock �ber die Rollen-LED des Keybord angezeigt werden (analog zu CapsLock)?
60IniRead,UseMod4Light,%ini%,Global,UseMod4Light,1
61
62; Soll Lang-s auf s, s auf � und � auf Lang-s gelegt (bzw. vertauscht) werden?
63IniRead,LangSTastatur,%ini%,Global,LangSTastatur,0
64If LangSTastatur
65  CharProc("LnS1")
66else
67  KeyboardLED(2,"off") ; deaktivieren, falls sie doch brennt
68
69IniRead,isVM,%ini%,Global,isVM,0
70if (isVM)
71  CharProc("_VM1")
72
73;Soll der Mod2Lock auch auf die Akzente, die Ziffernreihe und das Numpad angewandt werden?
74; Wird striktesMod2Lock auf 1 gesetzt, wirkt CapsLock wie ShiftLock
75IniRead,striktesMod2Lock,%ini%,Global,striktesMod2Lock,0
76
77
78/***********************
79* Resourcen-Verwaltung *
80************************
81*/
82if(FileExist("ResourceFolder")<>false){
83  ; Versuche, alle m�glicherweise in die EXE eingebundenen Dateien zu extrahieren
84  FileInstall,neo_enabled.ico,%ResourceFolder%\neo_enabled.ico,1
85  FileInstall,neo_disabled.ico,%ResourceFolder%\neo_disabled.ico,1
86  iconBenutzen=1
87  if (bildschirmTastaturEinbinden=1){
88    FileInstall,ebene1.png,%ResourceFolder%\ebene1.png,1
89    FileInstall,ebene2.png,%ResourceFolder%\ebene2.png,1
90    FileInstall,ebene3.png,%ResourceFolder%\ebene3.png,1
91    FileInstall,ebene4.png,%ResourceFolder%\ebene4.png,1
92    FileInstall,ebene5.png,%ResourceFolder%\ebene5.png,1
93    FileInstall,ebene6.png,%ResourceFolder%\ebene6.png,1
94    zeigeBildschirmTastatur=1
95  }
96}else{
97  MsgBox,"Das Verzeichnis %ResourceFolder% konnte nicht angelegt werden!" ; Diese Zeile dient nur der eventuellen Fehlersuche und sollte eigentlich niemals auftauchen.
98}
99
100; Benutze die Dateien auch dann, wenn sie eventuell im aktuellen Verzeichnis vorhanden sind
101if(FileExist("ebene1.png")&&FileExist("ebene2.png")&&FileExist("ebene3.png")&&FileExist("ebene4.png")&&FileExist("ebene5.png")&&FileExist("ebene6.png"))
102  zeigeBildschirmTastatur=1
103if(FileExist("neo_enabled.ico")&&FileExist("neo_disabled.ico"))
104  iconBenutzen=1
105
106/*******************************************
107* �berpr�fung auf deutsches Tastaturlayout *
108********************************************
109*/
110regread,inputlocale,HKEY_CURRENT_USER,Keyboard Layout\Preload,1
111regread,inputlocalealias,HKEY_CURRENT_USER,Keyboard Layout\Substitutes,%inputlocale%
112if (inputlocalealias<>inputlocale=%inputlocalealias% and inputlocale<>00000407) {
113  suspend   
114  regread,inputlocale,HKEY_LOCAL_MACHINE,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\%inputlocale%,Layout Text
115  msgbox, 48, Warnung!,
116    (
117    Nicht kompatibles Tastaturlayout:   
118    `t%inputlocale%   
119    `nDas deutsche QWERTZ muss als Standardlayout eingestellt 
120    sein, damit %name% wie erwartet funktioniert.   
121    `n�ndern Sie die Tastatureinstellung unter
122    `tSystemsteuerung   
123    `t-> Regions- und Sprachoptionen   
124    `t-> Sprachen
125    `t-> Details...   `n
126    )
127  exitapp
128}
129
130/*************************
131* Men� des Systray-Icons *
132**************************
133*/
134if (iconBenutzen)
135  menu,tray,icon,%ResourceFolder%\neo_enabled.ico,,1
136menu,tray,nostandard
137menu,tray,add,�ffnen,open
138  menu,helpmenu,add,About,about
139  menu,helpmenu,add,Autohotkey-Hilfe,help
140  menu,helpmenu,add
141  menu,helpmenu,add,http://autohotkey.com/,autohotkey
142  menu,helpmenu,add,http://www.neo-layout.org/,neo
143menu,tray,add,Hilfe,:helpmenu
144menu,tray,add
145menu,tray,add,%disable%,togglesuspend
146menu,tray,add
147menu,tray,add,Bearbeiten,edit
148menu,tray,add,Neu Laden,reload
149menu,tray,add
150menu,tray,add,Nicht im Systray anzeigen,hide
151menu,tray,add,%name% beenden, exitprogram
152menu,tray,default,%disable%
153menu,tray,tip,%name%
154
155/*
156Sonstige Variablen
157*/
158guiErstellt := 0
159alwaysOnTop := 1
160isShiftRPressed := 0
161isShiftLPressed := 0
162isShiftPressed := 0
163isMod2Locked := 0
164IsMod3RPressed := 0
165IsMod3LPressed := 0
166IsMod3Pressed := 0
167IsMod4RPressed := 0
168IsMod4LPressed := 0
169IsMod4Pressed := 0
170IsMod4Locked := 0
171; die Nachfolgenden sind n�tzlich um sich die Qwertz-Tasten abzugew�hnen, da alle auf der 4. Ebene vorhanden.
172lernModus_std_Return := 0
173lernModus_std_Backspace := 0
174lernModus_std_PgUp := 0
175lernModus_std_PgDn := 0
176lernModus_std_Einf := 0
177lernModus_std_Entf := 0
178lernModus_std_Pos0 := 0
179lernModus_std_Ende := 0
180lernModus_std_Hoch := 0
181lernModus_std_Runter := 0
182lernModus_std_Links := 0
183lernModus_std_Rechts := 0
184lernModus_std_ZahlenReihe := 0
185
186; im folgenden kann man auch noch ein paar Tasten der 4. Ebene deaktivieren
187; n�tzlich um sich zu zwingen, richtig zu schreiben
188lernModus_neo_Backspace := 0
189lernModus_neo_Entf := 1
190
191
192
193EbeneAktualisieren()
194{
195  global
196  Modstate := IsMod4Active() . IsMod3Active()
197  Ebene7 := 0
198  Ebene8 := 0
199  if        (Modstate == "00") { ; Ebene 1 oder 2
200    if (IsShiftActive())         ; Ebene 2: Shift oder CapsLock
201      Ebene := 2
202    else                         ; Ebene 1: Ohne Mod oder CapsLock mit Shift
203      Ebene := 1
204    if (IsShiftPressed)          ; NC: Ebene 2: Shift (ignoriert CapsLock)
205      EbeneNC := 2
206    else                         ; NC: Ebene 1: Ohne Mod (ignoriert CapsLock)
207      EbeneNC := 1
208  } else if (Modstate == "01") { ; Ebene 3 oder 5 (ignoriert CapsLock)
209    if (IsShiftPressed)          ; Ebene 5: Shift+Mod3
210      Ebene := 5
211    else                         ; Ebene 3: Mod3
212      Ebene := 3
213    EbeneNC := Ebene             ; NC: gleich
214  } else if (Modstate == "10") { ; Ebene 4 (Mit Shift: Auch Ebene 7) (ignoriert CapsLock)
215    Ebene := 4
216    if (IsShiftPressed)          ; Ebene 7: Shift+Mod4
217      Ebene7 := 1
218    EbeneNC := Ebene             ; NC: gleich
219  } else if (ModState == "11") { ; Ebene 6 (Mit Shift Xoder CapsLock: Auch Ebene 8)
220    Ebene := 6
221    if (IsShiftPressed)          ; Ebene 8: Shift (ignoriert CapsLock)
222      Ebene8 := 1
223    EbeneNC := Ebene             ; NC: gleich
224  }
225}
226
227IsShiftActive() {
228  global
229  if (isMod2Locked)
230    if (isShiftPressed)
231      return 0
232    else
233      return 1
234  else
235    if (isShiftPressed)
236      return 1
237    else
238      return 0
239}
240
241IsMod3Active() {
242   global
243   return isMod3Pressed
244}
245
246IsMod4Active() {
247  global
248  if (isMod4Locked)
249    if (isMod4Pressed)
250      return 0
251    else
252      return 1
253  else
254    if (isMod4Pressed)
255      return 1
256    else
257      return 0
258}
259
260/*
261   ------------------------------------------------------
262   Methode KeyboardLED zur Steuerung der Keyboard-LEDs
263   (NumLock/CapsLock/ScrollLock-Lichter)
264   
265   Benutzungshinweise: Man benutze
266   KeyboardLED(LEDvalue,"Cmd"), wobei
267   Cmd = on/off/switch,
268   LEDvalue: ScrollLock=1, NumLock=2, CapsLock=4,
269   bzw. eine beliebige Summe dieser Werte:
270   AlleAus=0, CapsLock+NumLock=6, etc.
271   
272   Der folgende Code wurde �bernommen von:
273   http://www.autohotkey.com/forum/viewtopic.php?t=10532
274   
275   Um eventuelle Wechselwirkungen mit dem bestehenden
276   Code (insb. der Unicode-Konvertierung) auszuschlie�en,
277   sind auch alle (Hilfsmethoden) mit dem Postfix LED
278   versehen worden.
279   ------------------------------------------------------
280*/
281
282KeyboardLED(LEDvalue, Cmd){ ; LEDvalue: ScrollLock=1, NumLock=2, CapsLock=4 ; Cmd = on/off/switch
283  Static h_device
284  If ! h_device ; initialise
285  {
286    device=\Device\KeyBoardClass0
287    SetUnicodeStrLED(fn,device)
288    h_device:=NtCreateFileLED(fn,0+0x00000100+0x00000080+0x00100000,1,1,0x00000040+0x00000020,0)
289  }
290  VarSetCapacity(output_actual,4,0)
291  input_size=4
292  VarSetCapacity(input,input_size,0)
293  If Cmd=switch ;switches every LED according to LEDvalue
294   KeyLED:=LEDvalue
295  If Cmd=on ;forces all choosen LED's to ON (LEDvalue= 0 ->LED's according to keystate)
296   KeyLED:=LEDvalue | (GetKeyState("ScrollLock", "T") + 2*GetKeyState("NumLock", "T") + 4*GetKeyState("CapsLock", "T"))
297  If Cmd=off ;forces all choosen LED's to OFF (LEDvalue= 0 ->LED's according to keystate)
298    {
299    LEDvalue:=LEDvalue ^ 7
300    KeyLED:=LEDvalue & (GetKeyState("ScrollLock","T") + 2*GetKeyState("NumLock","T") + 4*GetKeyState("CapsLock","T"))
301    }
302  ; EncodeIntegerLED(KeyLED,1,&input,2) ;input bit pattern (KeyLED): bit 0 = scrolllock ;bit 1 = numlock ;bit 2 = capslock
303  input:=Chr(1) Chr(1) Chr(KeyLED)
304  input:=Chr(1)
305  input=
306  success:=DllCall("DeviceIoControl"
307    , "uint", h_device
308    , "uint", CTL_CODE_LED( 0x0000000b     ; FILE_DEVICE_KEYBOARD
309              , 2
310              , 0             ; METHOD_BUFFERED
311              , 0  )          ; FILE_ANY_ACCESS
312    , "uint", &input
313    , "uint", input_size
314    , "uint", 0
315    , "uint", 0
316    , "uint", &output_actual
317    , "uint", 0 )
318}
319
320CTL_CODE_LED(p_device_type,p_function,p_method,p_access ){
321  Return, ( p_device_type << 16 ) | ( p_access << 14 ) | ( p_function << 2 ) | p_method
322}
323
324NtCreateFileLED(ByRef wfilename,desiredaccess,sharemode,createdist,flags,fattribs){
325  VarSetCapacity(fh,4,0)
326  VarSetCapacity(objattrib,24,0)
327  VarSetCapacity(io,8,0)
328  VarSetCapacity(pus,8)
329  uslen:=DllCall("lstrlenW","str",wfilename)*2
330  InsertIntegerLED(uslen,pus,0,2)
331  InsertIntegerLED(uslen,pus,2,2)
332  InsertIntegerLED(&wfilename,pus,4)
333  InsertIntegerLED(24,objattrib,0)
334  InsertIntegerLED(&pus,objattrib,8)
335  status:=DllCall("ntdll\ZwCreateFile","str",fh,"UInt",desiredaccess,"str",objattrib,"str",io,"UInt",0,"UInt",fattribs
336                  ,"UInt",sharemode,"UInt",createdist,"UInt",flags,"UInt",0,"UInt",0, "UInt")
337  return ExtractIntegerLED(fh)
338}
339
340SetUnicodeStrLED(ByRef out, str_){
341  VarSetCapacity(st1, 8, 0)
342  InsertIntegerLED(0x530025, st1)
343  VarSetCapacity(out, (StrLen(str_)+1)*2, 0)
344  DllCall("wsprintfW", "str", out, "str", st1, "str", str_, "Cdecl UInt")
345}
346
347ExtractIntegerLED(ByRef pSource, pOffset = 0, pIsSigned = false, pSize = 4){
348; pSource is a string (buffer) whose memory area contains a raw/binary integer at pOffset.
349; The caller should pass true for pSigned to interpret the result as signed vs. unsigned.
350; pSize is the size of PSource's integer in bytes (e.g. 4 bytes for a DWORD or Int).
351; pSource must be ByRef to avoid corruption during the formal-to-actual copying process
352; (since pSource might contain valid data beyond its first binary zero).
353  Loop %pSize%  ; Build the integer by adding up its bytes.
354    result += *(&pSource + pOffset + A_Index-1) << 8*(A_Index-1)
355  if (!pIsSigned OR pSize > 4 OR result < 0x80000000)
356    return result  ; Signed vs. unsigned doesn't matter in these cases.
357  ; Otherwise, convert the value (now known to be 32-bit) to its signed counterpart:
358  return -(0xFFFFFFFF - result + 1)
359}
360
361InsertIntegerLED(pInteger, ByRef pDest, pOffset = 0, pSize = 4){
362; The caller must ensure that pDest has sufficient capacity.  To preserve any existing contents in pDest,
363; only pSize number of bytes starting at pOffset are altered in it.
364  Loop %pSize%  ; Copy each byte in the integer into the structure as raw binary data.
365    DllCall("RtlFillMemory", "UInt", &pDest + pOffset + A_Index-1, "UInt", 1, "UChar", pInteger >> 8*(A_Index-1) & 0xFF)
366}
367
368/*
369   ------------------------------------------------------
370   Methoden zum Senden von Unicode-Zeichen
371   ------------------------------------------------------
372
373�ber den GTK-Workaround:
374Dieser basiert auf http://www.autohotkey.com/forum/topic32947.html
375Der 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.
376*/
377
378SendUnicodeChar(charCode){
379  IfWinActive,ahk_class gdkWindowToplevel
380  {
381    StringLower,charCode,charCode
382    send % "^+u" . SubStr(charCode,3) . " "
383  }else{
384    VarSetCapacity(ki,28*2,0)
385    EncodeInteger(&ki+0,1)
386    EncodeInteger(&ki+6,charCode)
387    EncodeInteger(&ki+8,4)
388    EncodeInteger(&ki+28,1)
389    EncodeInteger(&ki+34,charCode)
390    EncodeInteger(&ki+36,4|2)
391    DllCall("SendInput","UInt",2,"UInt",&ki,"Int",28)
392  }
393}
394
395SendUnicodeCharDown(charCode){
396  IfWinActive,ahk_class gdkWindowToplevel
397  {
398    StringLower,charCode,charCode
399    send % "^+u" . SubStr(charCode,3) . " "
400  }else{
401    VarSetCapacity(ki,28,0)
402    EncodeInteger(&ki+0,1)
403    EncodeInteger(&ki+6,charCode)
404    EncodeInteger(&ki+8,4)
405
406    DllCall("SendInput","UInt",1,"UInt",&ki,"Int",28)
407  }
408}
409
410SendUnicodeCharUp(charCode){
411  IfWinActive,ahk_class gdkWindowToplevel
412  {
413    ; nothing
414  }else{
415    VarSetCapacity(ki,28,0)
416    EncodeInteger(&ki+0,1)
417    EncodeInteger(&ki+6,charCode)
418    EncodeInteger(&ki+8,4|2)
419
420    DllCall("SendInput","UInt",1,"UInt",&ki,"Int",28)
421  }
422}
423
424EncodeInteger(ref,val){
425  DllCall("ntdll\RtlFillMemoryUlong","Uint",ref,"Uint",4,"Uint",val)
426}
427
428/**********************
429* Tastenkombinationen *
430***********************
431*/
432
433
434+pause::
435Suspend, Permit
436  goto togglesuspend
437
438/*****************
439* Men�funktionen *
440******************
441*/
442togglesuspend:
443  if A_IsSuspended {
444    menu, tray, rename, %enable%, %disable%
445    menu, tray, tip, %name%
446    if (iconBenutzen)
447      menu, tray, icon, %ResourceFolder%\neo_enabled.ico,,1
448    suspend , off ; Schaltet Suspend aus -> NEO
449  } else {
450    menu, tray, rename, %disable%, %enable%
451    menu, tray, tip, %name% : Deaktiviert
452    if (iconBenutzen)
453      menu, tray, icon, %ResourceFolder%\neo_disabled.ico,,1
454    suspend , on  ; Schaltet Suspend ein -> QWERTZ
455  }
456return
457
458help:
459  Run, %A_WinDir%\hh mk:@MSITStore:autohotkey.chm
460return
461
462about:
463  msgbox, 64, %name% � Ergonomische Tastaturbelegung,
464  (
465  %name%
466  `nDas Neo-Layout ersetzt das �bliche deutsche
467  Tastaturlayout mit der Alternative Neo,
468  beschrieben auf http://neo-layout.org/.
469  `nDazu sind keine Administratorrechte n�tig.
470  `nWenn Autohotkey aktiviert ist, werden alle Tastendrucke
471  abgefangen und statt dessen eine �bersetzung weitergeschickt.
472  `nDies geschieht transparent f�r den Anwender,
473  es muss nichts installiert werden.
474  `nDie Zeichen�bersetzung kann leicht �ber das Icon im
475  Systemtray deaktiviert werden.  `n
476  )
477return
478
479neo:
480  run http://neo-layout.org/
481return
482
483autohotkey:
484  run http://autohotkey.com/
485return
486
487open:
488  ListLines ; shows the Autohotkey window
489return
490
491edit:
492  edit
493return
494
495reload:
496  Reload
497return
498
499hide:
500  menu, tray, noicon
501return
502
503exitprogram:
504  exitapp
505return
506
507/**************************
508* lernModus Konfiguration *
509* nur relevant wenn       *
510* lernModus = 1           *
511* Strg+Komma schaltet um  *
512***************************
513*/
514^,::lernModus := not(lernModus)
515
516; 0 = aus, 1 = an
517
518; LShift+RShift == CapsLock (simuliert)
519; Es werden nur die beiden Tastenkombinationen abgefragt,
520; daher kommen LShift und RShift ungehindert bis in die
521; Applikation. Dies ist aber merkw�rdig, da beide Shift-
522; Tasten nun /modifier keys/ werden und, wie in der AHK-
523; Hilfe beschrieben, eigentlich nicht mehr bis zur App
524; durchkommen sollten.
525; KeyboardLED(4,"switch") hatte ich zuerst genommen, aber
526; das schaltet, oh Wunder, die LED nicht wieder aus.
527
528~*VKA1SC136::
529  if (isShiftLPressed and !isShiftRPressed)
530    ToggleMod2Lock()
531  isShiftRPressed := 1
532  isShiftPressed := 1
533return
534
535~*VKA1SC136 up::
536  isShiftRPressed := 0
537  isShiftPressed := isShiftLPressed
538return
539
540~*VKA0SC02A::
541  if (isShiftRPressed and !isShiftLPressed)
542    ToggleMod2Lock()
543  isShiftLPressed := 1
544  isShiftPressed := 1
545return
546
547~*VKA0SC02A up::
548  isShiftLPressed := 0
549  isShiftPressed := isShiftRPressed
550return
551
552ToggleMod2Lock() {
553  global
554  if (isMod2Locked)
555  {
556    isMod2Locked := 0
557    KeyboardLED(4,"off")
558  }
559  else
560  {
561    isMod2Locked := 1
562    KeyBoardLED(4,"on")
563  }
564}
565
566
567*VKBFSC02B::
568  if (isMod3LPressed and !isMod3RPressed)
569    CharStarDown("MOD3", "MOD3", "SComp")
570  isMod3RPressed := 1
571  isMod3Pressed := 1
572return
573
574*VKBFSC02B up::
575  if (isMod3LPressed)
576    CharStarUp("MOD3")
577  isMod3RPressed := 0
578  isMod3Pressed := isMod3LPressed
579return
580
581*VK14SC03A::
582  if (isMod3RPressed and !isMod3LPressed)
583    CharStarDown("MOD3", "MOD3", "SComp")
584  isMod3LPressed := 1
585  isMod3Pressed := 1
586return
587
588*VK14SC03A up::
589  if (isMod3RPressed)
590    CharStarUp("MOD3")
591  isMod3LPressed := 0
592  isMod3Pressed := isMod3RPressed
593return
594
595;Mod4+Mod4 == Mod4-Lock
596; Im Gegensatz zu LShift+RShift werden die beiden Tasten
597; _nicht_ zur Applikation weitergeleitet, und nur bei
598; gleichzeitigem Dr�cken wird der Mod4-Lock aktiviert und
599; angezeigt.
600
601*VKA5SC138::
602  wasMod4RPressed := isMod4RPressed
603  isMod4RPressed := 1
604  isMod4Pressed := 1
605  if (isMod4LPressed and !wasMod4RPressed)
606    ToggleMod4Lock()
607return
608
609*VKA5SC138 up::
610  isMod4RPressed := 0
611  isMod4Pressed := isMod4LPressed
612return
613
614*VKE2SC056::
615  wasMod4LPressed := isMod4LPressed
616  isMod4LPressed := 1
617  isMod4Pressed := 1
618  if (isMod4RPressed and !wasMod4LPressed)
619    ToggleMod4Lock()
620return
621
622*VKE2SC056 up::
623  isMod4LPressed := 0
624  isMod4Pressed := isMod4RPressed
625return
626
627ToggleMod4Lock() {
628  global
629  if (IsMod4Locked) {
630    IsMod4Locked := 0
631    if (UseMod4Light)
632      KeyboardLED(1,"off")
633    if (zeigeLockBox)
634      MsgBox Mod4-Feststellung aufgehoben!
635  } else {
636    IsMod4Locked := 1
637    if (UseMod4Light)
638      KeyboardLED(1,"on")
639    if (zeigeLockBox)
640      MsgBox Mod4 festgestellt: Um Mod4 wieder zu l�sen, dr�cke beide Mod4-Tasten gleichzeitig!
641  }
642}
643
644/*
645   ------------------------------------------------------
646   BildschirmTastatur
647   ------------------------------------------------------
648*/
649
650F1::
651  if(isMod4Active() && zeigeBildschirmTastatur)
652    goto Switch1
653  else send {blind}{F1}
654return
655
656F2::
657  if(isMod4Active() && zeigeBildschirmTastatur)
658    goto Switch2
659  else send {blind}{F2}
660return
661
662F3::
663  if(isMod4Active() && zeigeBildschirmTastatur)
664    goto Switch3
665  else send {blind}{F3}
666return
667
668F4::
669  if(isMod4Active() && zeigeBildschirmTastatur)
670    goto Switch4
671  else send {blind}{F4}
672return
673
674F5::
675  if(isMod4Active() && zeigeBildschirmTastatur)
676    goto Switch5
677  else send {blind}{F5}
678return
679
680F6::
681  if(isMod4Active() && zeigeBildschirmTastatur)
682    goto Switch6
683  else send {blind}{F6}
684return
685
686F7::
687  if(isMod4Active() && zeigeBildschirmTastatur)
688    goto Show
689  else send {blind}{F7}
690return
691
692F8::
693  if(isMod4Active() && zeigeBildschirmTastatur)
694    goto ToggleAlwaysOnTop
695  else send {blind}{F8}
696return
697
698Switch1:
699  tImage := ResourceFolder . "\ebene1.png"
700  goto Switch
701Return
702
703Switch2:
704  tImage := ResourceFolder . "\ebene2.png"
705  goto Switch
706Return
707
708Switch3:
709  tImage := ResourceFolder . "\ebene3.png"
710  goto Switch
711Return
712
713Switch4:
714  tImage := ResourceFolder . "\ebene4.png"
715  goto Switch
716Return
717
718Switch5:
719  tImage := ResourceFolder . "\ebene5.png"
720  goto Switch
721Return
722
723Switch6:
724  tImage := ResourceFolder . "\ebene6.png"
725  goto Switch
726Return
727
728Switch:
729  if (guiErstellt)
730  {
731     if (Image = tImage)
732        goto Close
733     else
734     {
735       Image := tImage
736       SetTimer, Refresh
737     }
738  }
739  else
740  {
741    Image := tImage
742    goto Show   
743  }
744Return
745
746Show:
747  if (guiErstellt)
748  {
749     goto Close
750  }
751  else
752  {
753    if (Image = "")
754    {
755      Image := ResourceFolder . "\ebene1.png"
756    }     
757    yPosition := A_ScreenHeight -270
758    Gui, Color, FFFFFF
759    Gui, Add, Button, xm+5 gSwitch1, F1
760    Gui, Add, Text, x+5, kleine Buchstaben
761    Gui, Add, Button, xm+5 gSwitch2, F2
762    Gui, Add, Text, x+5, gro�e Buchstaben
763    Gui, Add, Button, xm+5 gSwitch3, F3
764    Gui, Add, Text, x+5, Satz-/Sonderzeichen
765    Gui, Add, Button, xm+5 gSwitch4, F4
766    Gui, Add, Text, x+5, Zahlen / Steuerung
767    Gui, Add, Button, xm+5 gSwitch5, F5
768    Gui, Add, Text, x+5, Sprachen
769    Gui, Add, Button, xm+5 gSwitch6, F6
770    Gui, Add, Text, x+5, Mathesymbole
771    Gui, Add, Button, xm+5 gShow, F7
772    Gui, Add, Text, x+5, An /
773    Gui, Add, Text, y+3, Aus
774    Gui, Add, Button, x+10 y+-30 gShow, F8
775    Gui, Add, Text, x+5, OnTop
776    Gui, Add, Picture,AltSubmit ys w564 h200 vPicture, %Image%
777    Gui, +AlwaysOnTop
778    Gui, Show, y%yposition% Autosize
779;    SetTimer, Refresh
780    guiErstellt = 1
781  }
782Return
783
784Close:
785  guiErstellt = 0
786  Gui, Destroy
787Return
788
789Refresh:
790   If (Image != OldImage)
791   {
792      GuiControl, , Picture, %Image%
793      OldImage := Image
794   }
795Return
796
797ToggleAlwaysOnTop:
798    if (alwaysOnTop)
799    {
800      Gui, -AlwaysOnTop
801      alwaysOnTop = 0   
802    }
803    else
804    {
805      Gui, +AlwaysOnTop
806      alwaysOnTop = 1
807    }
808Return
Note: See TracBrowser for help on using the browser.