root/windows/neo-vars/src/Source/recycle.ahk @ 1128

Revision 1128, 22.5 KB (checked in by mösi, 5 years ago)

Yes, Yes, Yes!!! Es geht! Performance-Probleme bei hoher Prozessorlast in den Griff bekommen, man muss nur die Threads als uninterruptible markieren.

  • Property svn:keywords set to Revision
Line 
1/******************
2* Initialisierung *
3*******************
4*/
5
6#MaxThreadsPerHotKey 1
7Thread,Interrupt,-1,-1
8
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
171EbeneAktualisieren()
172; die Nachfolgenden sind n�tzlich um sich die Qwertz-Tasten abzugew�hnen, da alle auf der 4. Ebene vorhanden.
173lernModus_std_Return := 0
174lernModus_std_Backspace := 0
175lernModus_std_PgUp := 0
176lernModus_std_PgDn := 0
177lernModus_std_Einf := 0
178lernModus_std_Entf := 0
179lernModus_std_Pos0 := 0
180lernModus_std_Ende := 0
181lernModus_std_Hoch := 0
182lernModus_std_Runter := 0
183lernModus_std_Links := 0
184lernModus_std_Rechts := 0
185lernModus_std_ZahlenReihe := 0
186
187; im folgenden kann man auch noch ein paar Tasten der 4. Ebene deaktivieren
188; n�tzlich um sich zu zwingen, richtig zu schreiben
189lernModus_neo_Backspace := 0
190lernModus_neo_Entf := 1
191
192
193
194EbeneAktualisieren()
195{
196  global
197  Modstate := IsMod4Active() . IsMod3Active()
198  Ebene7 := 0
199  Ebene8 := 0
200  if        (Modstate == "00") { ; Ebene 1 oder 2
201    if (IsShiftActive())         ; Ebene 2: Shift oder CapsLock
202      Ebene := 2
203    else                         ; Ebene 1: Ohne Mod oder CapsLock mit Shift
204      Ebene := 1
205    if (IsShiftPressed)          ; NC: Ebene 2: Shift (ignoriert CapsLock)
206      EbeneNC := 2
207    else                         ; NC: Ebene 1: Ohne Mod (ignoriert CapsLock)
208      EbeneNC := 1
209  } else if (Modstate == "01") { ; Ebene 3 oder 5 (ignoriert CapsLock)
210    if (IsShiftPressed)          ; Ebene 5: Shift+Mod3
211      Ebene := 5
212    else                         ; Ebene 3: Mod3
213      Ebene := 3
214    EbeneNC := Ebene             ; NC: gleich
215  } else if (Modstate == "10") { ; Ebene 4 (Mit Shift: Auch Ebene 7) (ignoriert CapsLock)
216    Ebene := 4
217    if (IsShiftPressed)          ; Ebene 7: Shift+Mod4
218      Ebene7 := 1
219    EbeneNC := Ebene             ; NC: gleich
220  } else if (ModState == "11") { ; Ebene 6 (Mit Shift Xoder CapsLock: Auch Ebene 8)
221    Ebene := 6
222    if (IsShiftPressed)          ; Ebene 8: Shift (ignoriert CapsLock)
223      Ebene8 := 1
224    EbeneNC := Ebene             ; NC: gleich
225  }
226}
227
228IsShiftActive() {
229  global
230  if (isMod2Locked)
231    if (isShiftPressed)
232      return 0
233    else
234      return 1
235  else
236    if (isShiftPressed)
237      return 1
238    else
239      return 0
240}
241
242IsMod3Active() {
243   global
244   return isMod3Pressed
245}
246
247IsMod4Active() {
248  global
249  if (isMod4Locked)
250    if (isMod4Pressed)
251      return 0
252    else
253      return 1
254  else
255    if (isMod4Pressed)
256      return 1
257    else
258      return 0
259}
260
261/*
262   ------------------------------------------------------
263   Methode KeyboardLED zur Steuerung der Keyboard-LEDs
264   (NumLock/CapsLock/ScrollLock-Lichter)
265   
266   Benutzungshinweise: Man benutze
267   KeyboardLED(LEDvalue,"Cmd"), wobei
268   Cmd = on/off/switch,
269   LEDvalue: ScrollLock=1, NumLock=2, CapsLock=4,
270   bzw. eine beliebige Summe dieser Werte:
271   AlleAus=0, CapsLock+NumLock=6, etc.
272   
273   Der folgende Code wurde �bernommen von:
274   http://www.autohotkey.com/forum/viewtopic.php?t=10532
275   
276   Um eventuelle Wechselwirkungen mit dem bestehenden
277   Code (insb. der Unicode-Konvertierung) auszuschlie�en,
278   sind auch alle (Hilfsmethoden) mit dem Postfix LED
279   versehen worden.
280   ------------------------------------------------------
281*/
282
283KeyboardLED(LEDvalue, Cmd){ ; LEDvalue: ScrollLock=1, NumLock=2, CapsLock=4 ; Cmd = on/off/switch
284  Static h_device
285  If ! h_device ; initialise
286  {
287    device=\Device\KeyBoardClass0
288    SetUnicodeStrLED(fn,device)
289    h_device:=NtCreateFileLED(fn,0+0x00000100+0x00000080+0x00100000,1,1,0x00000040+0x00000020,0)
290  }
291  VarSetCapacity(output_actual,4,0)
292  input_size=4
293  VarSetCapacity(input,input_size,0)
294  If Cmd=switch ;switches every LED according to LEDvalue
295   KeyLED:=LEDvalue
296  If Cmd=on ;forces all choosen LED's to ON (LEDvalue= 0 ->LED's according to keystate)
297   KeyLED:=LEDvalue | (GetKeyState("ScrollLock", "T") + 2*GetKeyState("NumLock", "T") + 4*GetKeyState("CapsLock", "T"))
298  If Cmd=off ;forces all choosen LED's to OFF (LEDvalue= 0 ->LED's according to keystate)
299    {
300    LEDvalue:=LEDvalue ^ 7
301    KeyLED:=LEDvalue & (GetKeyState("ScrollLock","T") + 2*GetKeyState("NumLock","T") + 4*GetKeyState("CapsLock","T"))
302    }
303  ; EncodeIntegerLED(KeyLED,1,&input,2) ;input bit pattern (KeyLED): bit 0 = scrolllock ;bit 1 = numlock ;bit 2 = capslock
304  input:=Chr(1) Chr(1) Chr(KeyLED)
305  input:=Chr(1)
306  input=
307  success:=DllCall("DeviceIoControl"
308    , "uint", h_device
309    , "uint", CTL_CODE_LED( 0x0000000b     ; FILE_DEVICE_KEYBOARD
310              , 2
311              , 0             ; METHOD_BUFFERED
312              , 0  )          ; FILE_ANY_ACCESS
313    , "uint", &input
314    , "uint", input_size
315    , "uint", 0
316    , "uint", 0
317    , "uint", &output_actual
318    , "uint", 0 )
319}
320
321CTL_CODE_LED(p_device_type,p_function,p_method,p_access ){
322  Return, ( p_device_type << 16 ) | ( p_access << 14 ) | ( p_function << 2 ) | p_method
323}
324
325NtCreateFileLED(ByRef wfilename,desiredaccess,sharemode,createdist,flags,fattribs){
326  VarSetCapacity(fh,4,0)
327  VarSetCapacity(objattrib,24,0)
328  VarSetCapacity(io,8,0)
329  VarSetCapacity(pus,8)
330  uslen:=DllCall("lstrlenW","str",wfilename)*2
331  InsertIntegerLED(uslen,pus,0,2)
332  InsertIntegerLED(uslen,pus,2,2)
333  InsertIntegerLED(&wfilename,pus,4)
334  InsertIntegerLED(24,objattrib,0)
335  InsertIntegerLED(&pus,objattrib,8)
336  status:=DllCall("ntdll\ZwCreateFile","str",fh,"UInt",desiredaccess,"str",objattrib,"str",io,"UInt",0,"UInt",fattribs
337                  ,"UInt",sharemode,"UInt",createdist,"UInt",flags,"UInt",0,"UInt",0, "UInt")
338  return ExtractIntegerLED(fh)
339}
340
341SetUnicodeStrLED(ByRef out, str_){
342  VarSetCapacity(st1, 8, 0)
343  InsertIntegerLED(0x530025, st1)
344  VarSetCapacity(out, (StrLen(str_)+1)*2, 0)
345  DllCall("wsprintfW", "str", out, "str", st1, "str", str_, "Cdecl UInt")
346}
347
348ExtractIntegerLED(ByRef pSource, pOffset = 0, pIsSigned = false, pSize = 4){
349; pSource is a string (buffer) whose memory area contains a raw/binary integer at pOffset.
350; The caller should pass true for pSigned to interpret the result as signed vs. unsigned.
351; pSize is the size of PSource's integer in bytes (e.g. 4 bytes for a DWORD or Int).
352; pSource must be ByRef to avoid corruption during the formal-to-actual copying process
353; (since pSource might contain valid data beyond its first binary zero).
354  Loop %pSize%  ; Build the integer by adding up its bytes.
355    result += *(&pSource + pOffset + A_Index-1) << 8*(A_Index-1)
356  if (!pIsSigned OR pSize > 4 OR result < 0x80000000)
357    return result  ; Signed vs. unsigned doesn't matter in these cases.
358  ; Otherwise, convert the value (now known to be 32-bit) to its signed counterpart:
359  return -(0xFFFFFFFF - result + 1)
360}
361
362InsertIntegerLED(pInteger, ByRef pDest, pOffset = 0, pSize = 4){
363; The caller must ensure that pDest has sufficient capacity.  To preserve any existing contents in pDest,
364; only pSize number of bytes starting at pOffset are altered in it.
365  Loop %pSize%  ; Copy each byte in the integer into the structure as raw binary data.
366    DllCall("RtlFillMemory", "UInt", &pDest + pOffset + A_Index-1, "UInt", 1, "UChar", pInteger >> 8*(A_Index-1) & 0xFF)
367}
368
369/*
370   ------------------------------------------------------
371   Methoden zum Senden von Unicode-Zeichen
372   ------------------------------------------------------
373
374�ber den GTK-Workaround:
375Dieser basiert auf http://www.autohotkey.com/forum/topic32947.html
376Der 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.
377*/
378
379SendUnicodeChar(charCode){
380  IfWinActive,ahk_class gdkWindowToplevel
381  {
382    StringLower,charCode,charCode
383    send % "^+u" . SubStr(charCode,3) . " "
384  }else{
385    VarSetCapacity(ki,28*2,0)
386    EncodeInteger(&ki+0,1)
387    EncodeInteger(&ki+6,charCode)
388    EncodeInteger(&ki+8,4)
389    EncodeInteger(&ki+28,1)
390    EncodeInteger(&ki+34,charCode)
391    EncodeInteger(&ki+36,4|2)
392    DllCall("SendInput","UInt",2,"UInt",&ki,"Int",28)
393  }
394}
395
396SendUnicodeCharDown(charCode){
397  IfWinActive,ahk_class gdkWindowToplevel
398  {
399    StringLower,charCode,charCode
400    send % "^+u" . SubStr(charCode,3) . " "
401  }else{
402    VarSetCapacity(ki,28,0)
403    EncodeInteger(&ki+0,1)
404    EncodeInteger(&ki+6,charCode)
405    EncodeInteger(&ki+8,4)
406
407    DllCall("SendInput","UInt",1,"UInt",&ki,"Int",28)
408  }
409}
410
411SendUnicodeCharUp(charCode){
412  IfWinActive,ahk_class gdkWindowToplevel
413  {
414    ; nothing
415  }else{
416    VarSetCapacity(ki,28,0)
417    EncodeInteger(&ki+0,1)
418    EncodeInteger(&ki+6,charCode)
419    EncodeInteger(&ki+8,4|2)
420
421    DllCall("SendInput","UInt",1,"UInt",&ki,"Int",28)
422  }
423}
424
425EncodeInteger(ref,val){
426  DllCall("ntdll\RtlFillMemoryUlong","Uint",ref,"Uint",4,"Uint",val)
427}
428
429/**********************
430* Tastenkombinationen *
431***********************
432*/
433
434~F24::return
435
436+pause::
437Suspend, Permit
438  goto togglesuspend
439
440/*****************
441* Men�funktionen *
442******************
443*/
444togglesuspend:
445  if A_IsSuspended {
446    menu, tray, rename, %enable%, %disable%
447    menu, tray, tip, %name%
448    if (iconBenutzen)
449      menu, tray, icon, %ResourceFolder%\neo_enabled.ico,,1
450    suspend , off ; Schaltet Suspend aus -> NEO
451  } else {
452    menu, tray, rename, %disable%, %enable%
453    menu, tray, tip, %name% : Deaktiviert
454    if (iconBenutzen)
455      menu, tray, icon, %ResourceFolder%\neo_disabled.ico,,1
456    suspend , on  ; Schaltet Suspend ein -> QWERTZ
457  }
458return
459
460help:
461  Run, %A_WinDir%\hh mk:@MSITStore:autohotkey.chm
462return
463
464about:
465  msgbox, 64, %name% � Ergonomische Tastaturbelegung,
466  (
467  %name%
468  `nDas Neo-Layout ersetzt das �bliche deutsche
469  Tastaturlayout mit der Alternative Neo,
470  beschrieben auf http://neo-layout.org/.
471  `nDazu sind keine Administratorrechte n�tig.
472  `nWenn Autohotkey aktiviert ist, werden alle Tastendrucke
473  abgefangen und statt dessen eine �bersetzung weitergeschickt.
474  `nDies geschieht transparent f�r den Anwender,
475  es muss nichts installiert werden.
476  `nDie Zeichen�bersetzung kann leicht �ber das Icon im
477  Systemtray deaktiviert werden.  `n
478  )
479return
480
481neo:
482  run http://neo-layout.org/
483return
484
485autohotkey:
486  run http://autohotkey.com/
487return
488
489open:
490  ListLines ; shows the Autohotkey window
491return
492
493edit:
494  edit
495return
496
497reload:
498  Reload
499return
500
501hide:
502  menu, tray, noicon
503return
504
505exitprogram:
506  exitapp
507return
508
509/**************************
510* lernModus Konfiguration *
511* nur relevant wenn       *
512* lernModus = 1           *
513* Strg+Komma schaltet um  *
514***************************
515*/
516^,::lernModus := not(lernModus)
517
518; 0 = aus, 1 = an
519
520; LShift+RShift == CapsLock (simuliert)
521; Es werden nur die beiden Tastenkombinationen abgefragt,
522; daher kommen LShift und RShift ungehindert bis in die
523; Applikation. Dies ist aber merkw�rdig, da beide Shift-
524; Tasten nun /modifier keys/ werden und, wie in der AHK-
525; Hilfe beschrieben, eigentlich nicht mehr bis zur App
526; durchkommen sollten.
527; KeyboardLED(4,"switch") hatte ich zuerst genommen, aber
528; das schaltet, oh Wunder, die LED nicht wieder aus.
529
530~*VKA1SC136::
531  if (isShiftLPressed and !isShiftRPressed)
532    ToggleMod2Lock()
533  isShiftRPressed := 1
534  isShiftPressed := 1
535  EbeneAktualisieren()
536return
537
538~*VKA1SC136 up::
539  isShiftRPressed := 0
540  isShiftPressed := isShiftLPressed
541  EbeneAktualisieren()
542return
543
544~*VKA0SC02A::
545  if (isShiftRPressed and !isShiftLPressed)
546    ToggleMod2Lock()
547  isShiftLPressed := 1
548  isShiftPressed := 1
549  EbeneAktualisieren()
550return
551
552~*VKA0SC02A up::
553  isShiftLPressed := 0
554  isShiftPressed := isShiftRPressed
555  EbeneAktualisieren()
556return
557
558ToggleMod2Lock() {
559  global
560  if (isMod2Locked)
561  {
562    isMod2Locked := 0
563    KeyboardLED(4,"off")
564  }
565  else
566  {
567    isMod2Locked := 1
568    KeyBoardLED(4,"on")
569  }
570}
571
572
573*VKBFSC02B::
574  if (isMod3LPressed and !isMod3RPressed)
575    CharStarDown("MOD3", "MOD3", "SComp")
576  isMod3RPressed := 1
577  isMod3Pressed := 1
578  EbeneAktualisieren()
579return
580
581*VKBFSC02B up::
582  if (isMod3LPressed)
583    CharStarUp("MOD3")
584  isMod3RPressed := 0
585  isMod3Pressed := isMod3LPressed
586  EbeneAktualisieren()
587return
588
589*VK14SC03A::
590  if (isMod3RPressed and !isMod3LPressed)
591    CharStarDown("MOD3", "MOD3", "SComp")
592  isMod3LPressed := 1
593  isMod3Pressed := 1
594  EbeneAktualisieren()
595return
596
597*VK14SC03A up::
598  if (isMod3RPressed)
599    CharStarUp("MOD3")
600  isMod3LPressed := 0
601  isMod3Pressed := isMod3RPressed
602  EbeneAktualisieren()
603return
604
605;Mod4+Mod4 == Mod4-Lock
606; Im Gegensatz zu LShift+RShift werden die beiden Tasten
607; _nicht_ zur Applikation weitergeleitet, und nur bei
608; gleichzeitigem Dr�cken wird der Mod4-Lock aktiviert und
609; angezeigt.
610
611*VKA5SC138::
612  wasMod4RPressed := isMod4RPressed
613  isMod4RPressed := 1
614  isMod4Pressed := 1
615  EbeneAktualisieren()
616  if (isMod4LPressed and !wasMod4RPressed)
617    ToggleMod4Lock()
618return
619
620*VKA5SC138 up::
621  isMod4RPressed := 0
622  isMod4Pressed := isMod4LPressed
623  EbeneAktualisieren()
624return
625
626*VKE2SC056::
627  wasMod4LPressed := isMod4LPressed
628  isMod4LPressed := 1
629  isMod4Pressed := 1
630  EbeneAktualisieren()
631  if (isMod4RPressed and !wasMod4LPressed)
632    ToggleMod4Lock()
633return
634
635*VKE2SC056 up::
636  isMod4LPressed := 0
637  isMod4Pressed := isMod4RPressed
638  EbeneAktualisieren()
639return
640
641ToggleMod4Lock() {
642  global
643  if (IsMod4Locked) {
644    IsMod4Locked := 0
645    if (UseMod4Light)
646      KeyboardLED(1,"off")
647    if (zeigeLockBox)
648      MsgBox Mod4-Feststellung aufgehoben!
649  } else {
650    IsMod4Locked := 1
651    if (UseMod4Light)
652      KeyboardLED(1,"on")
653    if (zeigeLockBox)
654      MsgBox Mod4 festgestellt: Um Mod4 wieder zu l�sen, dr�cke beide Mod4-Tasten gleichzeitig!
655  }
656}
657
658/*
659   ------------------------------------------------------
660   BildschirmTastatur
661   ------------------------------------------------------
662*/
663
664F1::
665  if(isMod4Active() && zeigeBildschirmTastatur)
666    goto Switch1
667  else send {blind}{F1}
668return
669
670F2::
671  if(isMod4Active() && zeigeBildschirmTastatur)
672    goto Switch2
673  else send {blind}{F2}
674return
675
676F3::
677  if(isMod4Active() && zeigeBildschirmTastatur)
678    goto Switch3
679  else send {blind}{F3}
680return
681
682F4::
683  if(isMod4Active() && zeigeBildschirmTastatur)
684    goto Switch4
685  else send {blind}{F4}
686return
687
688F5::
689  if(isMod4Active() && zeigeBildschirmTastatur)
690    goto Switch5
691  else send {blind}{F5}
692return
693
694F6::
695  if(isMod4Active() && zeigeBildschirmTastatur)
696    goto Switch6
697  else send {blind}{F6}
698return
699
700F7::
701  if(isMod4Active() && zeigeBildschirmTastatur)
702    goto Show
703  else send {blind}{F7}
704return
705
706F8::
707  if(isMod4Active() && zeigeBildschirmTastatur)
708    goto ToggleAlwaysOnTop
709  else send {blind}{F8}
710return
711
712Switch1:
713  tImage := ResourceFolder . "\ebene1.png"
714  goto Switch
715Return
716
717Switch2:
718  tImage := ResourceFolder . "\ebene2.png"
719  goto Switch
720Return
721
722Switch3:
723  tImage := ResourceFolder . "\ebene3.png"
724  goto Switch
725Return
726
727Switch4:
728  tImage := ResourceFolder . "\ebene4.png"
729  goto Switch
730Return
731
732Switch5:
733  tImage := ResourceFolder . "\ebene5.png"
734  goto Switch
735Return
736
737Switch6:
738  tImage := ResourceFolder . "\ebene6.png"
739  goto Switch
740Return
741
742SwitchDK:
743  tImage := ResourceFolder . "\deadkeys.png"
744  goto Switch
745Return
746
747Switch:
748  if (guiErstellt)
749  {
750     if (Image = tImage)
751        goto Close
752     else
753     {
754       Image := tImage
755       SetTimer, Refresh
756     }
757  }
758  else
759  {
760    Image := tImage
761    goto Show   
762  }
763Return
764
765Show:
766  if (guiErstellt)
767  {
768     goto Close
769  }
770  else
771  {
772    if (Image = "")
773    {
774      Image := ResourceFolder . "\ebene1.png"
775    }     
776    yPosition := A_ScreenHeight -270
777    Gui, Color, FFFFFF
778    Gui, Add, Button, xm+5 gSwitch1, F1
779    Gui, Add, Text, x+5, kleine Buchstaben
780    Gui, Add, Button, xm+5 gSwitch2, F2
781    Gui, Add, Text, x+5, gro�e Buchstaben
782    Gui, Add, Button, xm+5 gSwitch3, F3
783    Gui, Add, Text, x+5, Satz-/Sonderzeichen
784    Gui, Add, Button, xm+5 gSwitch4, F4
785    Gui, Add, Text, x+5, Zahlen / Steuerung
786    Gui, Add, Button, xm+5 gSwitch5, F5
787    Gui, Add, Text, x+5, Sprachen
788    Gui, Add, Button, xm+5 gSwitch6, F6
789    Gui, Add, Text, x+5, Mathesymbole
790    Gui, Add, Button, xm+5 gShow, F7
791    Gui, Add, Text, x+5, An /
792    Gui, Add, Text, y+3, Aus
793    Gui, Add, Button, x+10 y+-30 gShow, F8
794    Gui, Add, Text, x+5, OnTop
795    Gui, Add, Button, xm+5 gSwitchDK, Deadkeys
796    Gui, Add, Picture,AltSubmit ys w729 h199 vPicture, %Image%
797    Gui, +AlwaysOnTop
798    Gui, Show, y%yposition% Autosize
799;    SetTimer, Refresh
800    guiErstellt = 1
801  }
802Return
803
804Close:
805  guiErstellt = 0
806  Gui, Destroy
807Return
808
809Refresh:
810   If (Image != OldImage)
811   {
812      GuiControl, , Picture, %Image%
813      OldImage := Image
814   }
815Return
816
817ToggleAlwaysOnTop:
818    if (alwaysOnTop)
819    {
820      Gui, -AlwaysOnTop
821      alwaysOnTop = 0   
822    }
823    else
824    {
825      Gui, +AlwaysOnTop
826      alwaysOnTop = 1
827    }
828Return
Note: See TracBrowser for help on using the browser.