NumLock-Bug behoben.
This commit is contained in:
parent
030f71e5fb
commit
e642e82c95
|
@ -1,4 +1,4 @@
|
|||
-------------------------------------------------------------------------------
|
||||
-------------------------------------------------------------------------------
|
||||
ACHTUNG:
|
||||
Damit alles ordentlich dargestellt wird, muss man für die Darstellung z. B. im
|
||||
Texteditor eine dicktengleiche Schrift einstellen!
|
||||
|
@ -157,7 +157,7 @@ Siehe auch http://de.wikipedia.org/wiki/Dezimaltrennzeichen
|
|||
│ ↘3 ♫ │U ⇱ ∮│I ⇠ ∫│A ⇣ ∀│E ⇢ ∃│O ⇲ ∈│S ¿ Σ│N 4 ℕ│R 5 ℝ│T 6 ∂│D , Δ│Y . ∇│↘3 │ ↲ │
|
||||
│ │u \ │i / ι│a { α│e } ε│o * ο│s ? σ│n ( ν│r ) ϱ│t - τ│d : δ│y @ υ│ │ │
|
||||
├──────┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴─────┴─────┤
|
||||
│Cps_Lk│↙4 │Ü ⌧ ∝│Ö ⇥ ℑ│Ä ⇟ ℜ│P ↲ Π│Z ⎌ ℤ│B : ⇐│M 1 ⇔│ 2 ⇒│ 3 Θ│J ; ≡│ Caps_Lock │
|
||||
│Cps_Lk│↙4 │Ü ⌧ ∝│Ö ⇥ ℑ│Ä ⇟ ℜ│P ↲ Π│Z ⍓ ℤ│B : ⇐│M 1 ⇔│ 2 ⇒│ 3 Θ│J ; ≡│ Caps_Lock │
|
||||
│Umsch │4Lock│ü # │ö $ │ä | η│p ~ π│z ` ζ│b + β│m % µ│, " ρ│. ' ϑ│j ; θ│ Umschalt │
|
||||
├──────┼─────┴┬────┴─┬───┴─────┴─────┴─────┴─────┴─────┴────┬┴─────┼─────┴┬──────┬──────┤
|
||||
│ Strg │ Fen- │ Alt │ Leerz.␣ 0 schmal.Lz.¦ │↙4 │ Fen- │ Menu │ Strg │
|
||||
|
@ -247,44 +247,46 @@ Um die Vielseitigkeit und Funktionsfähigkeit der NEO‐Tastatur zu gewährleist
|
|||
sollten für alle Elemente auf dem Keypad wenn möglch die KP_‐Variante verwendet werden!
|
||||
|
||||
=== Legende – Ziffernblock ===
|
||||
┌─────┐ 1 … 1. Ebene (kein Mod)
|
||||
│ 2 4 │ 2 … 2. Ebene (Umschalt)
|
||||
│ 1 3 │ 3 … 3. Ebene (Mod3)
|
||||
└─────┘ 4 … 5. Ebene (Mod3+Umschalt)
|
||||
┌───────┐ 1 … 1. Ebene (kein Mod)
|
||||
│ 2 4 6 │ 2 … 2. Ebene (Umschalt)
|
||||
│ 1 3 5 │ 3 … 3. Ebene (Mod3)
|
||||
└───────┘ 4 … 4. Ebene (Mod4)
|
||||
5 … 5. Ebene (Mod3+Umschalt) (z.Zt. noch nicht belegt)
|
||||
6 … 6. Ebene (Mod3+Mod4) (z.Zt. noch nicht belegt)
|
||||
|
||||
=== Rechenzeichen ===
|
||||
┬─────┬ 1 … ASCII-Schrägstrich
|
||||
│ ∕ │ 2 … ASCII-Schrägstrich
|
||||
│ / ÷ │ 3 … Geteiltzeichen (U+00F7 DIVISION SIGN)
|
||||
┼─────┼ 4 … Geteiltstrich (U+2215 DIVISION SLASH)
|
||||
┬───────┬ 1 … ASCII-Schrägstrich
|
||||
│ / ⁄ │ 2 … ASCII-Schrägstrich
|
||||
│ / ÷ │ 3 … Geteiltzeichen (U+00F7 DIVISION SIGN)
|
||||
┼───────┼ 4 … Geteiltstrich (U+2215 DIVISION SLASH)
|
||||
|
||||
┬─────┬ 1 … ASCII-Malzeichen
|
||||
│ ∙ │ 2 … ASCII-Malzeichen
|
||||
│ * × │ 3 … Malkreuz (U+00D7 MULTIPLICATION SIGN)
|
||||
┼─────┼ 4 … Malpunkt (U+2219 BULLET OPERATOR)
|
||||
┬───────┬ 1 … ASCII-Malzeichen
|
||||
│ * × │ 2 … ASCII-Malzeichen
|
||||
│ * ∙ │ 3 … Malpunkt (U+2219 BULLET OPERATOR)
|
||||
┼───────┼ 4 … Malkreuz (U+00D7 MULTIPLICATION SIGN)
|
||||
|
||||
┬─────┐ 1 … ASCII-Minus
|
||||
│ │ 2 … ASCII-Minus
|
||||
│ - − │ 3 … Minuszeichen (U+2212 MINUS SIGN)
|
||||
┼─────┤
|
||||
┬───────┐ 1 … ASCII-Minus
|
||||
│ - − │ 2 … ASCII-Minus
|
||||
│ - − │ 3 … Minuszeichen (U+2212 MINUS SIGN)
|
||||
┼───────┤ 4 … Minuszeichen (U+2212 MINUS SIGN)
|
||||
|
||||
=== Alle Ebenen – Ziffernblock ===
|
||||
┌─────┬─────┬─────┬─────┐
|
||||
│ ≠ ⍓ │ /frc│ * × │ - − │ ⍓ turns on/off the keyboard mouse control
|
||||
│ = ≈ │ / ÷ │ * ⋅ │ - - │ frc means fraction slash ⁄
|
||||
├─────┼─────┼─────┼─────┤
|
||||
│† Hom│∩ KP↑│⊗ PgU│ │
|
||||
│ 7 ↕│ 8 ↑│ 9 ∋│ + ∓ │
|
||||
├─────┼─────┼─────┤ │
|
||||
│⊂ KP←│€ Beg│⊃ KP→│ + ± │
|
||||
│ 4 ←│ 5 ∞│ 6 →│ │
|
||||
├─────┼─────┼─────┼─────┤
|
||||
│✔ End│∪ KP↓│✗ PgD│ │
|
||||
│ 1 ↔│ 2 ↓│ 3 ⇌│ │
|
||||
├─────┴─────┼─────┤ │
|
||||
│ Ins ‰ │Del S│ │ S: ,/. KP_Seperator
|
||||
│ 0 % │ , .│Enter│
|
||||
└───────────┴─────┴─────┘
|
||||
┌───────┬───────┬───────┬───────┐
|
||||
│ ≠ ⍓ │ / ⁄ │ * × │ - − │
|
||||
│ = ≈ │ / ÷ │ * ⋅ │ - − │
|
||||
├───────┼───────┼───────┼───────┤
|
||||
│† Hom │∩ KP↑ │⊗ PgD │ │
|
||||
│7 ↕ │8 ↑ │9 ∍ │ │
|
||||
├───────┼───────┼───────┤ │
|
||||
│⊂ KP← │€ Beg │⊃ KP→ │ + ∓ │
|
||||
│4 ← │5 ∞ │6 → │ + ± │
|
||||
├───────┼───────┼───────┼───────┤
|
||||
│✔ End │∪ KP↓ │✗ PgD │ │
|
||||
│1 ↔ │2 ↓ │3 ⇌ │ │
|
||||
├───────┴───────┼───────┤ │
|
||||
│ % Ins │. Del │ │
|
||||
│ 0 ‰ │, ,/. │ Enter │
|
||||
└───────────────┴───────┴───────┘
|
||||
|
||||
=== Erste Ebene – Miniatur ===
|
||||
┌───┬───┬───┬───┐
|
||||
|
@ -309,20 +311,20 @@ sollten für alle Elemente auf dem Keypad wenn möglch die KP_‐Variante verwen
|
|||
├───┼───┼───┼───┤
|
||||
│ ✔ │ ∪ │ ✗ │ │
|
||||
├───┴───┼───┤ │
|
||||
│ Ins │Del│Ent│
|
||||
│ % │ . │Ent│
|
||||
└───────┴───┴───┘
|
||||
|
||||
=== Dritte Ebene – Miniatur ===
|
||||
┌───┬───┬───┬───┐
|
||||
│ ≈ │ ÷ │ ∙ │ - │
|
||||
│ ≈ │ ÷ │ ∙ │ − │
|
||||
├───┼───┼───┼───┤
|
||||
│ ↕ │ ↑ │ ∋ │ │
|
||||
│ ↕ │ ↑ │ ∍ │ │
|
||||
├───┼───┼───┤ │
|
||||
│ ← │ ∞ │ → │ ± │
|
||||
├───┼───┼───┼───┤
|
||||
│ ↔ │ ↓ │ ⇌ │ │
|
||||
├───┴───┼───┤ │
|
||||
│ % │ . │Ent│
|
||||
│ ‰ │,/.│Ent│
|
||||
└───────┴───┴───┘
|
||||
|
||||
=== Vierte Ebene – Miniatur ===
|
||||
|
@ -331,18 +333,18 @@ sollten für alle Elemente auf dem Keypad wenn möglch die KP_‐Variante verwen
|
|||
├───┼───┼───┼───┤ frc means fraction slash ⁄
|
||||
│Hom│KP↑│PgU│ │
|
||||
├───┼───┼───┤ │
|
||||
│KP←│Beg│KP→│ ∓ │
|
||||
│KP←│Beg│KP→│ ∓ │ Beg invokes click of the keyboard mouse
|
||||
├───┼───┼───┼───┤
|
||||
│End│KP↓│PgD│ │
|
||||
├───┴───┼───┤ │
|
||||
│ ‰ │,/.│Ent│
|
||||
│ Ins │Del│Ent│
|
||||
└───────┴───┴───┘
|
||||
|
||||
== Tipp ==
|
||||
Trägt man unter Linux/Mac/BSD folgende Zeilen in die ~/.bashrc, ~/.zshrc oder
|
||||
vergleichbares ein, bekommt man anschließend mittels Eingabe von »neo« oder
|
||||
»num« die aktuelle Belegung in der Konsole angezeigt:
|
||||
alias num='grep -m 1 -B 15 "┴─────┘" PFAD_ZUR_DATEI/neo20.txt'
|
||||
alias num='grep -m 1 -B 15 "┴───────┘" PFAD_ZUR_DATEI/neo20.txt'
|
||||
alias neo='grep -m 1 -B 15 "┴──────┘" PFAD_ZUR_DATEI/neo20.txt'
|
||||
|
||||
Dazu muss »PFAD_ZUR_DATEI« durch den Pfad zu dieser Datei ersetzt werden.
|
||||
|
@ -386,7 +388,7 @@ Im Verzeichnis linux/bin sind umfangreichere Skripte mit größerer Funktionalit
|
|||
== Zeichenerläuterungen zur Mat-/Nat-Ebene – Ziffernblock ==
|
||||
⊗ … Tensorprodukt ; Vektor in die Ebene zeigend (U2297)
|
||||
∞ … unendlich (U221E)
|
||||
∋ … enthält das Element (U220B)
|
||||
∍ … enthält das Element (U220D)
|
||||
|
||||
== Hinweise zu Doppelbelegungen in Unicode ==
|
||||
Griechische Minuskel und Majuskel besitzten in der Regel eine weitere Bedeutung, z.B.
|
||||
|
|
5
TODO.txt
5
TODO.txt
|
@ -1,4 +1,4 @@
|
|||
21) Was spricht jetzt noch gegen eine „Veröffentlichung“ von Neo2? Es ist
|
||||
21) Was spricht jetzt noch gegen eine „Veröffentlichung“ von Neo2? Es ist
|
||||
doch nun bis auf minimalste Änderungen „fertig“.
|
||||
|
||||
23) Wie sollen die Modifier heißen? Mod3 und Mod4? Mod3 und ... oder wie?
|
||||
|
@ -16,7 +16,6 @@
|
|||
• auch wenn es z.B. unter OpenOffice nicht läuft: wir haben auch den
|
||||
Ziffernblock belegt – den sollte man also auch im Bild mit aufnehmen
|
||||
|
||||
|
||||
== Themen für das IRC-Treffen am Montag ==
|
||||
30) Homepage/Webpräsenz
|
||||
c) Wir sollten Aufgaben verteilen (wer dokumentiert was, wer macht
|
||||
|
@ -105,4 +104,4 @@ Man muss das ganze eben unter eine Lizenz stellen. Wenn die Lizenz "Mach damit,
|
|||
|
||||
Und wenn wir eine CreativeCommons-Lizenz nutzen wollen: ¿Welche? Ist z.B. die kommerzielle Nutzung erlaubt oder nicht – darf z.B. Apple eine NEO2-Variante zum neuen Apple-Tastatur-Standard im OS 10.8 erklären und dann überteuerte, nur mit Apple-Rechnern funktionierende »NEO2ε«-Tastaturen verkaufen?
|
||||
|
||||
17. Juli 2008: Reihenfolge auf Ebene 6 tauschen: ⇐⇔⇒ statt ⇒⇔⇐ (siehe Mails »Re: [neo] Antrag: Aufnahme der spitzen Klammern« vom 09.07.2008 00:10)
|
||||
41) Reihenfolge auf Ebene 6 tauschen: ⇐⇔⇒ statt ⇒⇔⇐ (siehe Mails »Re: [neo] Antrag: Aufnahme der spitzen Klammern« vom 09.07.2008 00:10)
|
||||
|
|
|
@ -116,7 +116,7 @@ Revision 558 (von Matthias Berg):
|
|||
- Icon-Bug behoben
|
||||
• Hotkeys dürfen nicht vor der folgenden Zeile stehen: »menu, tray, icon, neo.ico,,1«
|
||||
- lernModus-Konfigurations-Bug behoben: or statt and(not).
|
||||
- Ein paar leere Else-Fälle eingebaut (um die Verständlichkeit zu erhöhen und mögliche Compilerprobleme vermeiden).
|
||||
- Ein paar leere Else-Fälle eingebaut (um die Verständlichkeit zu erhöhen und mögliche Compilerprobleme zu vermeiden).
|
||||
Revision 556 (von Matthias Berg):
|
||||
- lernModus (an/aus mit Strg+Komma)
|
||||
• im Skript konfigurierbar.
|
||||
|
|
|
@ -11,8 +11,6 @@
|
|||
|
||||
------------------------------------------------------
|
||||
*/
|
||||
|
||||
|
||||
#Include %a_scriptdir%\Warning.ahk
|
||||
#Include %a_scriptdir%\Global-Part.ahk
|
||||
#Include %a_scriptdir%\Methods-Layers.ahk
|
||||
|
@ -22,7 +20,6 @@
|
|||
#Include %a_scriptdir%\Methods-Other.ahk
|
||||
#Include %a_scriptdir%\Methods-Unicode.ahk
|
||||
#Include %a_scriptdir%\Methods-ScreenKeyboard.ahk
|
||||
|
||||
; Eines schönen Tages sollten auch die Compose-Kombinationen automatisch aus der Referenz erzeugt werden. Derzeitig gibt es nur den (höchst instabilen und experimentellen!) Compose-Playground:
|
||||
;#Include *i %a_scriptdir%\..\Compose\Compose-all-in-one.ahk
|
||||
|
||||
|
|
|
@ -1,4 +1,28 @@
|
|||
SetNumLockState AlwaysOff
|
||||
/******************
|
||||
* Initialisierung *
|
||||
*******************
|
||||
*/
|
||||
DeadKey = ""
|
||||
CompKey = ""
|
||||
PriorDeadKey = ""
|
||||
PriorCompKey = ""
|
||||
Ebene12 = 0
|
||||
noCaps = 0
|
||||
|
||||
EbeneAktualisieren()
|
||||
SetBatchLines -1
|
||||
SetCapsLockState Off
|
||||
SetNumLockState Off
|
||||
SetScrollLockState Off
|
||||
|
||||
name=Neo 2.0 (%A_ScriptName%)
|
||||
enable=Aktiviere %name%
|
||||
disable=Deaktiviere %name%
|
||||
#usehook on
|
||||
#singleinstance force
|
||||
#LTrim ; Quelltext kann eingerückt werden,
|
||||
Process,Priority,,High
|
||||
SendMode Input
|
||||
|
||||
/****************
|
||||
* Verzeichnisse *
|
||||
|
@ -13,74 +37,245 @@ FileCreateDir, %ResourceFolder%
|
|||
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:
|
||||
; Syntaxhinweis: IniRead, Variable, InputFilename, Section, Key [, DefaultValue]
|
||||
|
||||
; 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]
|
||||
|
||||
; Sollen Ebenen 1-4 ignoriert werden (kann z.B. vom dll Treiber übernommen werden)?
|
||||
IniRead, ahkTreiberKombi, %ApplicationFolder%\NEO2.ini, Global, ahkTreiberKombi, 0
|
||||
IniRead,ahkTreiberKombi,%ini%,Global,ahkTreiberKombi,0
|
||||
|
||||
; Soll der Treiber im Einhandmodus betrieben werden?
|
||||
IniRead, einHandNeo, %ApplicationFolder%\NEO2.ini, Global, einHandNeo, 0
|
||||
IniRead,einHandNeo,%ini%,Global,einHandNeo,0
|
||||
|
||||
; Soll der Lernmodus aktiviert werden?
|
||||
IniRead, lernModus, %ApplicationFolder%\NEO2.ini, Global, lernModus, 0
|
||||
IniRead,lernModus,%ini%,Global,lernModus,0
|
||||
|
||||
; Soll mit einer MsgBox explizit auf das Ein- und Ausschalten des Mod4-Locks hingewiesen werden?
|
||||
IniRead, zeigeLockBox, %ApplicationFolder%\NEO2.ini, Global, zeigeLockBox, 1
|
||||
IniRead,zeigeLockBox,%ini%,Global,zeigeLockBox,1
|
||||
|
||||
; Soll aktivierter Mod4-Lock über die Rollen-LED des Keybord angezeigt werden (analog zu CapsLock)?
|
||||
IniRead, UseMod4Light, %ApplicationFolder%\NEO2.ini, Global, UseMod4Light, 1
|
||||
IniRead,UseMod4Light,%ini%,Global,UseMod4Light,1
|
||||
|
||||
; Soll Lang-s auf s, s auf ß und ß auf Lang-s gelegt (bzw. vertauscht) werden?
|
||||
IniRead, LangSTastatur, %ApplicationFolder%\NEO2.ini, Global, LangSTastatur, 0
|
||||
IniRead,LangSTastatur,%ini%,Global,LangSTastatur,0
|
||||
If LangSTastatur
|
||||
KeyboardLED(2,"on")
|
||||
|
||||
; Sollen tote Tasten blind angezeigt werden?
|
||||
IniRead, DeadCompose, %ApplicationFolder%\NEO2.ini, Global, DeadCompose, 0
|
||||
IniRead,DeadCompose,%ini%,Global,DeadCompose,0
|
||||
|
||||
;Sollen Compose-Tasten blind angezeigt werden?
|
||||
IniRead, DeadSilence, %ApplicationFolder%\NEO2.ini, Global, DeadSilence, 0
|
||||
IniRead,DeadSilence,%ini%,Global,DeadSilence,0
|
||||
|
||||
|
||||
/***********************
|
||||
* Recourcen-Verwaltung *
|
||||
************************
|
||||
*/
|
||||
|
||||
if(FileExist("ResourceFolder") <> false) {
|
||||
if(FileExist("ResourceFolder")<>false){
|
||||
; Versuche, alle möglicherweise in die EXE eingebundenen Dateien zu extrahieren
|
||||
FileInstall, neo.ico, %ResourceFolder%\neo.ico, 1
|
||||
FileInstall, neo_disabled.ico, %ResourceFolder%\neo_disabled.ico, 1
|
||||
iconBenutzen = 1
|
||||
if (bildschirmTastaturEinbinden==1) {
|
||||
FileInstall, ebene1.png, %ResourceFolder%\ebene1.png, 1
|
||||
FileInstall, ebene2.png, %ResourceFolder%\ebene2.png, 1
|
||||
FileInstall, ebene3.png, %ResourceFolder%\ebene3.png, 1
|
||||
FileInstall, ebene4.png, %ResourceFolder%\ebene4.png, 1
|
||||
FileInstall, ebene5.png, %ResourceFolder%\ebene5.png, 1
|
||||
FileInstall, ebene6.png, %ResourceFolder%\ebene6.png, 1
|
||||
zeigeBildschirmTastatur = 1
|
||||
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
|
||||
}
|
||||
} else {
|
||||
MsgBox, "Das Verzeichnis %ResourceFolder% konnte nicht angelegt werden!" ; Diese Zeile dient nur der eventuellen Fehlersuche und sollte eigentlich niemals auftauchen.
|
||||
}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.ico") && FileExist("neo_disabled.ico") )
|
||||
iconBenutzen = 1
|
||||
if(FileExist("ebene1.png")&&FileExist("ebene2.png")&&FileExist("ebene3.png")&&FileExist("ebene4.png")&&FileExist("ebene5.png")&&FileExist("ebene6.png"))
|
||||
zeigeBildschirmTastatur=1
|
||||
if(FileExist("neo.ico")&&FileExist("neo_disabled.ico"))
|
||||
iconBenutzen=1
|
||||
|
||||
/*******************************************
|
||||
* Überprüfung auf deutsches Tastaturlayout *
|
||||
********************************************
|
||||
*/
|
||||
regread,inputlocale,HKEY_CURRENT_USER,Keyboard Layout\Preload,1
|
||||
regread,inputlocalealias,HKEY_CURRENT_USER,Keyboard Layout\Substitutes,%inputlocale%
|
||||
if inputlocalealias<>inputlocale=%inputlocalealias%
|
||||
if inputlocale<>00000407
|
||||
{
|
||||
suspend
|
||||
regread,inputlocale,HKEY_LOCAL_MACHINE,SYSTEM\CurrentControlSet\Control\Keyboard Layouts\%inputlocale%,Layout Text
|
||||
msgbox, 48, Warnung!,
|
||||
(
|
||||
Nicht kompatibles Tastaturlayout:
|
||||
`t%inputlocale%
|
||||
`nDas deutsche QWERTZ muss als Standardlayout eingestellt
|
||||
sein, damit %name% wie erwartet funktioniert.
|
||||
`nÄndern Sie die Tastatureinstellung unter
|
||||
`tSystemsteuerung
|
||||
`t-> Regions- und Sprachoptionen
|
||||
`t-> Sprachen
|
||||
`t-> Details... `n
|
||||
)
|
||||
exitapp
|
||||
}
|
||||
|
||||
/*************************
|
||||
* Menü des Systray-Icons *
|
||||
**************************
|
||||
*/
|
||||
if (iconBenutzen)
|
||||
menu,tray,icon,%ResourceFolder%\neo.ico,,1
|
||||
menu,tray,nostandard
|
||||
menu,tray,add,Öffnen,open
|
||||
menu,helpmenu,add,About,about
|
||||
menu,helpmenu,add,Autohotkey-Hilfe,help
|
||||
menu,helpmenu,add
|
||||
menu,helpmenu,add,http://autohotkey.com/,autohotkey
|
||||
menu,helpmenu,add,http://www.neo-layout.org/,neo
|
||||
menu,tray,add,Hilfe,:helpmenu
|
||||
menu,tray,add
|
||||
menu,tray,add,%disable%,togglesuspend
|
||||
menu,tray,add
|
||||
menu,tray,add,Bearbeiten,edit
|
||||
menu,tray,add,Neu Laden,reload
|
||||
menu,tray,add
|
||||
menu,tray,add,Nicht im Systray anzeigen,hide
|
||||
menu,tray,add,%name% beenden, exitprogram
|
||||
menu,tray,default,%disable%
|
||||
menu,tray,tip,%name%
|
||||
|
||||
/**********************
|
||||
* Tastenkombinationen *
|
||||
***********************
|
||||
*/
|
||||
;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
|
||||
|
||||
;Lang-s-Tastatur:
|
||||
*F11::
|
||||
if (isMod4pressed()){
|
||||
LangSTastatur := not(LangSTastatur)
|
||||
if LangSTastatur
|
||||
KeyboardLED(2,"on")
|
||||
else KeyboardLED(2,"off")
|
||||
}
|
||||
else
|
||||
send {blind}{F11}
|
||||
return
|
||||
|
||||
;Alle Modi und Locks in den Normalzustand versetzen
|
||||
;bzw. Skript neu laden:
|
||||
*Esc::
|
||||
if (isMod4pressed())
|
||||
reload
|
||||
else
|
||||
send {blind}{Esc}
|
||||
return
|
||||
|
||||
*pause::
|
||||
Suspend, Permit
|
||||
if isShiftpressed()
|
||||
goto togglesuspend
|
||||
else=
|
||||
send {blind}{pause}
|
||||
return
|
||||
|
||||
/*****************
|
||||
* Menüfunktionen *
|
||||
******************
|
||||
*/
|
||||
togglesuspend:
|
||||
if A_IsSuspended
|
||||
{
|
||||
menu, tray, rename, %enable%, %disable%
|
||||
menu, tray, tip, %name%
|
||||
if (iconBenutzen)
|
||||
menu, tray, icon, %ResourceFolder%\neo.ico,,1
|
||||
suspend , off ; Schaltet Suspend aus -> NEO
|
||||
}
|
||||
else
|
||||
{
|
||||
menu, tray, rename, %disable%, %enable%
|
||||
menu, tray, tip, %name% : Deaktiviert
|
||||
if (iconBenutzen)
|
||||
menu, tray, icon, %ResourceFolder%\neo_disabled.ico,,1
|
||||
suspend , on ; Schaltet Suspend ein -> QWERTZ
|
||||
}
|
||||
return
|
||||
|
||||
help:
|
||||
Run, %A_WinDir%\hh mk:@MSITStore:autohotkey.chm
|
||||
return
|
||||
|
||||
about:
|
||||
msgbox, 64, %name% – Ergonomische Tastaturbelegung,
|
||||
(
|
||||
%name%
|
||||
`nDas Neo-Layout ersetzt das übliche deutsche
|
||||
Tastaturlayout mit der Alternative Neo,
|
||||
beschrieben auf http://neo-layout.org/.
|
||||
`nDazu sind keine Administratorrechte nötig.
|
||||
`nWenn Autohotkey aktiviert ist, werden alle Tastendrucke
|
||||
abgefangen und statt dessen eine Übersetzung weitergeschickt.
|
||||
`nDies geschieht transparent für den Anwender,
|
||||
es muss nichts installiert werden.
|
||||
`nDie Zeichenübersetzung kann leicht über das Icon im
|
||||
Systemtray deaktiviert werden. `n
|
||||
)
|
||||
return
|
||||
|
||||
neo:
|
||||
run http://neo-layout.org/
|
||||
return
|
||||
|
||||
autohotkey:
|
||||
run http://autohotkey.com/
|
||||
return
|
||||
|
||||
open:
|
||||
ListLines ; shows the Autohotkey window
|
||||
return
|
||||
|
||||
edit:
|
||||
edit
|
||||
return
|
||||
|
||||
reload:
|
||||
Reload
|
||||
return
|
||||
|
||||
hide:
|
||||
menu, tray, noicon
|
||||
return
|
||||
|
||||
exitprogram:
|
||||
exitapp
|
||||
return
|
||||
|
||||
/**************************
|
||||
* lernModus Konfiguration *
|
||||
|
@ -89,6 +284,8 @@ if ( FileExist("neo.ico") && FileExist("neo_disabled.ico") )
|
|||
* Strg+Komma schaltet um *
|
||||
***************************
|
||||
*/
|
||||
^,::lernModus := not(lernModus)
|
||||
|
||||
; 0 = aus, 1 = an
|
||||
|
||||
; die Nachfolgenden sind nützlich um sich die Qwertz-Tasten abzugewöhnen, da alle auf der 4. Ebene vorhanden.
|
||||
|
@ -111,90 +308,13 @@ lernModus_std_ZahlenReihe = 0
|
|||
lernModus_neo_Backspace = 0
|
||||
lernModus_neo_Entf = 1
|
||||
|
||||
; aus Noras Skript kopiert:
|
||||
Process,Priority,,High
|
||||
#usehook on
|
||||
#singleinstance force
|
||||
#LTrim
|
||||
; Quelltext kann eingerückt werden,
|
||||
; msgbox ist trotzdem linksbündig
|
||||
SetTitleMatchMode 2
|
||||
SendMode Input
|
||||
name = Neo 2.0
|
||||
enable = Aktiviere %name%
|
||||
disable = Deaktiviere %name%
|
||||
|
||||
; Ü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%
|
||||
if inputlocale <> 00000407
|
||||
{
|
||||
suspend
|
||||
regread, inputlocale, HKEY_LOCAL_MACHINE
|
||||
, SYSTEM\CurrentControlSet\Control\Keyboard Layouts\%inputlocale%
|
||||
, Layout Text
|
||||
msgbox, 48, Warnung!,
|
||||
(
|
||||
Nicht kompatibles Tastaturlayout:
|
||||
`t%inputlocale%
|
||||
`nDas deutsche QWERTZ muss als Standardlayout eingestellt
|
||||
sein, damit %name% wie erwartet funktioniert.
|
||||
`nÄndern Sie die Tastatureinstellung unter
|
||||
`tSystemsteuerung
|
||||
`t-> Regions- und Sprachoptionen
|
||||
`t-> Sprachen
|
||||
`t-> Details... `n
|
||||
)
|
||||
exitapp
|
||||
}
|
||||
|
||||
|
||||
; Menü des Systray-Icons
|
||||
; ----------------------
|
||||
|
||||
if (iconBenutzen)
|
||||
menu, tray, icon, %ResourceFolder%\neo.ico,,1
|
||||
menu, tray, nostandard
|
||||
menu, tray, add, Öffnen, open
|
||||
menu, helpmenu, add, About, about
|
||||
menu, helpmenu, add, Autohotkey-Hilfe, help
|
||||
menu, helpmenu, add
|
||||
menu, helpmenu, add, http://&autohotkey.com/, autohotkey
|
||||
menu, helpmenu, add, http://www.neo-layout.org/, neo
|
||||
menu, tray, add, Hilfe, :helpmenu
|
||||
menu, tray, add
|
||||
menu, tray, add, %disable%, togglesuspend
|
||||
menu, tray, 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%
|
||||
|
||||
|
||||
/*
|
||||
Variablen initialisieren
|
||||
/****************************
|
||||
* EinHandNeo *
|
||||
* Umschalten mit Strg+Punkt *
|
||||
*****************************
|
||||
*/
|
||||
^.::einHandNeo := not(einHandNeo)
|
||||
|
||||
DeadKey = ""
|
||||
CompKey = ""
|
||||
PriorDeadKey = ""
|
||||
PriorCompKey = ""
|
||||
Ebene12 = 0
|
||||
|
||||
EbeneAktualisieren()
|
||||
|
||||
|
||||
/*
|
||||
EinHandNeo
|
||||
*/
|
||||
spacepressed := 0
|
||||
keypressed:= 0
|
||||
|
||||
|
@ -230,129 +350,3 @@ gespiegelt_punkt = neo_
|
|||
gespiegelt_j = neo_ü
|
||||
|
||||
|
||||
;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
|
||||
|
||||
;Lang-s-Tastatur:
|
||||
*F11::
|
||||
if (isMod4pressed())
|
||||
LangSTastatur := not(LangSTastatur) ; schaltet die Lang-s-Tastatur ein und aus
|
||||
else
|
||||
send {blind}{F11}
|
||||
return
|
||||
|
||||
*Esc::
|
||||
if (isMod4pressed())
|
||||
reload
|
||||
else
|
||||
send {blind}{Esc}
|
||||
return
|
||||
|
||||
/*
|
||||
------------------------------------------------------
|
||||
Shift+Pause "pausiert" das Skript.
|
||||
------------------------------------------------------
|
||||
*/
|
||||
|
||||
*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
|
||||
|
||||
|
||||
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
|
||||
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
|
@ -61,10 +61,6 @@ IsMod4Locked := 0
|
|||
}
|
||||
return
|
||||
|
||||
Ebene12 := 0
|
||||
Ebene7 := 0
|
||||
Ebene8 := 0
|
||||
|
||||
EbeneAktualisieren()
|
||||
{
|
||||
global
|
||||
|
@ -73,6 +69,8 @@ EbeneAktualisieren()
|
|||
DeadKey := ""
|
||||
CompKey := ""
|
||||
Modstate := IsMod4Pressed() . IsMod3Pressed() . IsShiftPressed()
|
||||
Ebene7 := 0
|
||||
Ebene8 := 0
|
||||
if ahkTreiberKombi
|
||||
if ( Modstate = "001")
|
||||
Ebene = 6
|
||||
|
@ -103,23 +101,23 @@ EbeneAktualisieren()
|
|||
}
|
||||
Ebene12 := ((Ebene = 1) or (Ebene = 2))
|
||||
Ebene14 := ((Ebene = 1) or (Ebene = 4))
|
||||
GetKeyState("NumLock","T")
|
||||
NumLock := GetKeyState("NumLock","T")
|
||||
}
|
||||
|
||||
|
||||
IsShiftPressed()
|
||||
{
|
||||
global
|
||||
if GetKeyState("Shift","P")
|
||||
if isMod2Locked
|
||||
if isMod2Locked and !noCaps
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
else
|
||||
if isMod2Locked
|
||||
if isMod2Locked and !noCaps
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
noCaps = 0
|
||||
}
|
||||
|
||||
IsMod3Pressed()
|
||||
|
|
|
@ -20,55 +20,49 @@
|
|||
------------------------------------------------------
|
||||
*/
|
||||
|
||||
KeyboardLED(LEDvalue, Cmd) ; LEDvalue: ScrollLock=1, NumLock=2, CapsLock=4 ; Cmd = on/off/switch
|
||||
{
|
||||
KeyboardLED(LEDvalue, Cmd){ ; LEDvalue: ScrollLock=1, NumLock=2, CapsLock=4 ; Cmd = on/off/switch
|
||||
Static h_device
|
||||
If ! h_device ; initialise
|
||||
{
|
||||
device =\Device\KeyBoardClass0
|
||||
{
|
||||
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)
|
||||
}
|
||||
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"))
|
||||
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)
|
||||
; 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 )
|
||||
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 )
|
||||
{
|
||||
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)
|
||||
{
|
||||
NtCreateFileLED(ByRef wfilename,desiredaccess,sharemode,createdist,flags,fattribs){
|
||||
VarSetCapacity(fh,4,0)
|
||||
VarSetCapacity(objattrib,24,0)
|
||||
VarSetCapacity(io,8,0)
|
||||
|
@ -84,23 +78,19 @@ NtCreateFileLED(ByRef wfilename,desiredaccess,sharemode,createdist,flags,fattrib
|
|||
return ExtractIntegerLED(fh)
|
||||
}
|
||||
|
||||
|
||||
SetUnicodeStrLED(ByRef out, str_)
|
||||
{
|
||||
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)
|
||||
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)
|
||||
|
@ -109,11 +99,9 @@ ExtractIntegerLED(ByRef pSource, pOffset = 0, pIsSigned = false, pSize = 4)
|
|||
return -(0xFFFFFFFF - result + 1)
|
||||
}
|
||||
|
||||
|
||||
InsertIntegerLED(pInteger, ByRef pDest, pOffset = 0, pSize = 4)
|
||||
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)
|
||||
}
|
||||
|
|
|
@ -1,159 +1,95 @@
|
|||
BSSendUnicodeChar(charCode)
|
||||
{
|
||||
send {bs}
|
||||
SendUnicodeChar(charCode)
|
||||
}
|
||||
|
||||
CompUnicodeChar(charCode)
|
||||
{
|
||||
send {bs}
|
||||
SendUnicodeChar(charCode)
|
||||
}
|
||||
|
||||
Comp3UnicodeChar(charCode)
|
||||
{
|
||||
send {bs}{bs}
|
||||
SendUnicodeChar(charCode)
|
||||
}
|
||||
|
||||
deadAsc(val)
|
||||
{
|
||||
deadAsc(val){
|
||||
global
|
||||
if (DeadSilence)
|
||||
{} ; keine Ausgabe
|
||||
else
|
||||
send % "{blind}" . val
|
||||
if!(DeadSilence)
|
||||
send % val
|
||||
}
|
||||
|
||||
deadUni(val)
|
||||
{
|
||||
deadUni(val){
|
||||
global
|
||||
if (DeadSilence)
|
||||
{} ; keine Ausgabe
|
||||
else
|
||||
if!(DeadSilence)
|
||||
SendUnicodeChar(val)
|
||||
}
|
||||
|
||||
undeadAsc(val)
|
||||
{
|
||||
undeadAsc(val){
|
||||
global
|
||||
if (DeadSilence)
|
||||
send % "{blind}" . val
|
||||
if(DeadSilence)
|
||||
send % val
|
||||
else
|
||||
send % "{blind}{bs}" . val
|
||||
send % "{bs}" . val
|
||||
}
|
||||
|
||||
undeadUni(val)
|
||||
{
|
||||
undeadUni(val){
|
||||
global
|
||||
if (DeadSilence)
|
||||
{} ; keine ausgabe
|
||||
else
|
||||
if!(DeadSilence)
|
||||
send {bs}
|
||||
SendUnicodeChar(val)
|
||||
SendUnicodeChar(val)
|
||||
}
|
||||
|
||||
CheckDeadAsc(d,val)
|
||||
{
|
||||
CheckDeadAsc(d,val){
|
||||
global
|
||||
if (PriorDeadKey == d)
|
||||
{
|
||||
if(PriorDeadKey == d){
|
||||
undeadAsc(val)
|
||||
return 1
|
||||
}
|
||||
else
|
||||
return 0
|
||||
}else return 0
|
||||
}
|
||||
|
||||
CheckDeadUni(d,val)
|
||||
{
|
||||
CheckDeadUni(d,val){
|
||||
global
|
||||
if (PriorDeadKey == d)
|
||||
{
|
||||
if(PriorDeadKey == d){
|
||||
undeadUni(val)
|
||||
return 1
|
||||
}
|
||||
else
|
||||
return 0
|
||||
}else return 0
|
||||
}
|
||||
|
||||
CheckDeadAsc12(d,val1,val2)
|
||||
{
|
||||
CheckDeadAsc12(d,val1,val2){
|
||||
global
|
||||
if (PriorDeadKey == d)
|
||||
{
|
||||
if ((Ebene = 1) and (val1 != ""))
|
||||
{
|
||||
if(PriorDeadKey == d){
|
||||
if((Ebene = 1) and (val1 != "")){
|
||||
undeadAsc(val1)
|
||||
return 1
|
||||
}
|
||||
else if ((Ebene = 2) and (val2 != ""))
|
||||
{
|
||||
}else if((Ebene = 2) and (val2 != "")){
|
||||
undeadAsc(val2)
|
||||
return 1
|
||||
}
|
||||
else
|
||||
return 0
|
||||
}
|
||||
else
|
||||
return 0
|
||||
}else return 0
|
||||
}else return 0
|
||||
}
|
||||
|
||||
CheckDeadUni12(d,val1,val2)
|
||||
{
|
||||
CheckDeadUni12(d,val1,val2){
|
||||
global
|
||||
if (PriorDeadKey == d)
|
||||
{
|
||||
if ((Ebene = 1) and (val1 != ""))
|
||||
{
|
||||
if(PriorDeadKey == d){
|
||||
if((Ebene = 1) and (val1 != "")){
|
||||
undeadUni(val1)
|
||||
return 1
|
||||
}
|
||||
else if ((Ebene = 2) and (val2 != ""))
|
||||
{
|
||||
}else if((Ebene = 2) and (val2 != "")){
|
||||
undeadUni(val2)
|
||||
return 1
|
||||
}
|
||||
else
|
||||
return 0
|
||||
}
|
||||
else
|
||||
return 0
|
||||
}else return 0
|
||||
}else return 0
|
||||
}
|
||||
|
||||
compAsc(val)
|
||||
{
|
||||
compAsc(val){
|
||||
global
|
||||
if (DeadCompose)
|
||||
{} ; keine Ausgabe
|
||||
else
|
||||
send % "{blind}" . val
|
||||
if!(DeadCompose)
|
||||
send % val
|
||||
}
|
||||
|
||||
compUni(val)
|
||||
{
|
||||
compUni(val){
|
||||
global
|
||||
if (DeadCompose)
|
||||
{} ; keine Ausgabe
|
||||
else
|
||||
if!(DeadCompose)
|
||||
SendUnicodeChar(val)
|
||||
}
|
||||
|
||||
uncompAsc(val)
|
||||
{
|
||||
uncompAsc(val){
|
||||
global
|
||||
if (DeadCompose)
|
||||
send % "{blind}" . val
|
||||
else
|
||||
send % "{blind}{bs}" . val
|
||||
if(DeadCompose)
|
||||
send % val
|
||||
else send % "{bs}" . val
|
||||
}
|
||||
|
||||
uncompUni(val)
|
||||
{
|
||||
global
|
||||
if (DeadCompose)
|
||||
{} ; keine ausgabe
|
||||
else
|
||||
if!(DeadCompose)
|
||||
send {bs}
|
||||
SendUnicodeChar(val)
|
||||
}
|
||||
|
@ -161,126 +97,91 @@ uncompUni(val)
|
|||
uncomp3Uni(val)
|
||||
{
|
||||
global
|
||||
if (DeadCompose)
|
||||
{} ; keine ausgabe
|
||||
else
|
||||
if!(DeadCompose)
|
||||
send {bs}{bs}
|
||||
SendUnicodeChar(val)
|
||||
}
|
||||
|
||||
CheckCompAsc(d,val)
|
||||
{
|
||||
CheckCompAsc(d,val){
|
||||
global
|
||||
if (PriorCompKey == d)
|
||||
{
|
||||
if(PriorCompKey == d){
|
||||
uncompAsc(val)
|
||||
return 1
|
||||
}
|
||||
else
|
||||
return 0
|
||||
}else return 0
|
||||
}
|
||||
|
||||
CheckCompAsc12(d,val1,val2)
|
||||
{
|
||||
CheckCompAsc12(d,val1,val2){
|
||||
global
|
||||
if (PriorCompKey == d)
|
||||
if ((Ebene = 1) and (val1 != ""))
|
||||
{
|
||||
if(PriorCompKey == d)
|
||||
if((Ebene = 1) and (val1 != "")){
|
||||
uncompAsc(val1)
|
||||
return 1
|
||||
}
|
||||
else if ((Ebene = 2) and (val2 != ""))
|
||||
{
|
||||
}else if((Ebene = 2) and (val2 != "")){
|
||||
uncompAsc(val2)
|
||||
return 1
|
||||
}
|
||||
else
|
||||
return 0
|
||||
else
|
||||
return 0
|
||||
}else return 0
|
||||
else return 0
|
||||
}
|
||||
|
||||
CheckCompUni(d,val)
|
||||
{
|
||||
CheckCompUni(d,val){
|
||||
global
|
||||
if (PriorCompKey == d)
|
||||
{
|
||||
if(PriorCompKey == d){
|
||||
uncompUni(val)
|
||||
return 1
|
||||
}
|
||||
else
|
||||
return 0
|
||||
}else return 0
|
||||
}
|
||||
|
||||
CheckCompUni12(d,val1,val2)
|
||||
{
|
||||
CheckCompUni12(d,val1,val2){
|
||||
global
|
||||
if (PriorCompKey == d)
|
||||
{
|
||||
if ((Ebene = 1) and (val1 != ""))
|
||||
{
|
||||
if(PriorCompKey == d){
|
||||
if ((Ebene = 1) and (val1 != "")){
|
||||
uncompUni(val1)
|
||||
return 1
|
||||
}
|
||||
else if ((Ebene = 2) and (val2 != ""))
|
||||
{
|
||||
}else if((Ebene = 2) and (val2 != "")){
|
||||
uncompUni(val2)
|
||||
return 1
|
||||
}
|
||||
else
|
||||
return 0
|
||||
}
|
||||
else
|
||||
return 0
|
||||
}else return 0
|
||||
}else return 0
|
||||
}
|
||||
|
||||
CheckComp3Uni(d,val)
|
||||
{
|
||||
CheckComp3Uni(d,val){
|
||||
global
|
||||
if (PriorCompKey == d)
|
||||
{
|
||||
if(PriorCompKey == d){
|
||||
uncomp3Uni(val)
|
||||
return 1
|
||||
}
|
||||
else
|
||||
return 0
|
||||
}else return 0
|
||||
}
|
||||
|
||||
CheckComp3Uni12(d,val1,val2)
|
||||
{
|
||||
CheckComp3Uni12(d,val1,val2){
|
||||
global
|
||||
if (PriorCompKey == d)
|
||||
{
|
||||
if ((Ebene = 1) and (val1 != ""))
|
||||
{
|
||||
if(PriorCompKey == d){
|
||||
if((Ebene = 1) and (val1 != "")){
|
||||
uncomp3Uni(val1)
|
||||
return 1
|
||||
}
|
||||
else if ((Ebene = 2) and (val2 != ""))
|
||||
{
|
||||
}else if((Ebene = 2) and (val2 != "")){
|
||||
uncomp3Uni(val2)
|
||||
return 1
|
||||
}
|
||||
else
|
||||
return 0
|
||||
}
|
||||
else
|
||||
return 0
|
||||
}else return 0
|
||||
}else return 0
|
||||
}
|
||||
|
||||
outputChar(val1,val2)
|
||||
{
|
||||
outputChar(val1,val2){
|
||||
global
|
||||
if (Ebene = 1)
|
||||
if(Ebene = 1)
|
||||
c := val1
|
||||
else
|
||||
c := val2
|
||||
if GetKeyState("Shift","P") and isMod2Locked
|
||||
if GetKeyState("Shift","P") and isMod2Locked
|
||||
send % "{blind}{Shift Up}" . c . "{Shift Down}"
|
||||
else
|
||||
send % "{blind}" . c
|
||||
if (PriorDeadKey = "comp")
|
||||
if(PriorDeadKey = "comp")
|
||||
CompKey := c
|
||||
}
|
||||
|
||||
|
||||
checkComp(d){
|
||||
if(PriorDeadKey = "comp"){
|
||||
CompKey := d
|
||||
return 1
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,67 +3,60 @@
|
|||
BildschirmTastatur
|
||||
------------------------------------------------------
|
||||
*/
|
||||
|
||||
guiErstellt = 0
|
||||
alwaysOnTop = 1
|
||||
|
||||
*F1::
|
||||
if (isMod4Pressed() and zeigeBildschirmTastatur)
|
||||
if(isMod4Pressed()&&zeigeBildschirmTastatur)
|
||||
goto Switch1
|
||||
else
|
||||
send {blind}{F1}
|
||||
else send {blind}{F1}
|
||||
return
|
||||
|
||||
*F2::
|
||||
if (isMod4Pressed() and zeigeBildschirmTastatur)
|
||||
if(isMod4Pressed()&&zeigeBildschirmTastatur)
|
||||
goto Switch2
|
||||
else
|
||||
send {blind}{F2}
|
||||
else send {blind}{F2}
|
||||
return
|
||||
|
||||
*F3::
|
||||
if (isMod4Pressed() and zeigeBildschirmTastatur)
|
||||
if(isMod4Pressed()&&zeigeBildschirmTastatur)
|
||||
goto Switch3
|
||||
else
|
||||
send {blind}{F3}
|
||||
else send {blind}{F3}
|
||||
return
|
||||
|
||||
*F4::
|
||||
if (isMod4Pressed() and zeigeBildschirmTastatur)
|
||||
if(isMod4Pressed()&&zeigeBildschirmTastatur)
|
||||
goto Switch4
|
||||
else
|
||||
send {blind}{F4}
|
||||
else send {blind}{F4}
|
||||
return
|
||||
|
||||
*F5::
|
||||
if (isMod4Pressed() and zeigeBildschirmTastatur)
|
||||
if(isMod4Pressed()&&zeigeBildschirmTastatur)
|
||||
goto Switch5
|
||||
else
|
||||
send {blind}{F5}
|
||||
else send {blind}{F5}
|
||||
return
|
||||
|
||||
*F6::
|
||||
if (isMod4Pressed() and zeigeBildschirmTastatur)
|
||||
if(isMod4Pressed()&&zeigeBildschirmTastatur)
|
||||
goto Switch6
|
||||
else
|
||||
send {blind}{F6}
|
||||
else send {blind}{F6}
|
||||
return
|
||||
|
||||
*F7::
|
||||
if (isMod4Pressed() and zeigeBildschirmTastatur)
|
||||
if(isMod4Pressed()&&zeigeBildschirmTastatur)
|
||||
goto Show
|
||||
else
|
||||
send {blind}{F7}
|
||||
else send {blind}{F7}
|
||||
return
|
||||
|
||||
*F8::
|
||||
if (isMod4Pressed() and zeigeBildschirmTastatur)
|
||||
if(isMod4Pressed()&&zeigeBildschirmTastatur)
|
||||
goto ToggleAlwaysOnTop
|
||||
else
|
||||
send {blind}{F8}
|
||||
else send {blind}{F8}
|
||||
return
|
||||
|
||||
Switch1:
|
||||
tImage := ResourceFolder . "\ebene1.png"
|
||||
tImage:=ResourceFolder . "\ebene1.png"
|
||||
goto Switch
|
||||
Return
|
||||
|
||||
|
|
|
@ -2,71 +2,30 @@
|
|||
------------------------------------------------------
|
||||
Methoden zum Senden von Unicode-Zeichen
|
||||
------------------------------------------------------
|
||||
*/
|
||||
|
||||
|
||||
/************************************************************
|
||||
Alter Weg – Copy/Paste über die Zwischenablage
|
||||
************************************************************/
|
||||
/*
|
||||
Diese Variante sollte nicht mehr verwendet werden (könnte jedoch unter Umständen noch zu Testzwecken hilfreich sein).
|
||||
|
||||
hat den Vorteil, dass sie etwas kompatibler ist (es ist kein separater GTK-Workarround notwendig). Stefan zufolge wurde sie schon einmal getestet, dann jedoch wieder verworfen.
|
||||
|
||||
Das Problem war vor allem, daß bei einer etwas größeren Rechnerauslastung kein normales Schreiben mehr möglich war. Nicht nur, daß die Perfomanz sehr schlecht war (es dauerte lange, bis die Buchstaben überhaupt erschienen) -- viel schlimmer war, daß die Reihenfolge der Tastatureingabe nicht mehr eingehalten wurde, sondern die genommen wurde, die in der Zwischenablage war: genau umgekehrt.
|
||||
*/
|
||||
|
||||
/*
|
||||
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 – Benutzung der entsprechenden Win32-API-Methode
|
||||
************************************************************/
|
||||
|
||||
/*
|
||||
Ü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.
|
||||
*/
|
||||
|
||||
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)
|
||||
}
|
||||
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)
|
||||
}
|
||||
}
|
||||
|
||||
EncodeInteger(ref, val)
|
||||
{
|
||||
DllCall("ntdll\RtlFillMemoryUlong", "Uint", ref, "Uint", 4, "Uint", val)
|
||||
EncodeInteger(ref,val){
|
||||
DllCall("ntdll\RtlFillMemoryUlong","Uint",ref,"Uint",4,"Uint",val)
|
||||
}
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Loading…
Reference in New Issue