summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormartin_r <martin_r@b9310e46-f624-0410-8ea1-cfbb3a30dc96>2008-08-18 19:25:20 +0000
committermartin_r <martin_r@b9310e46-f624-0410-8ea1-cfbb3a30dc96>2008-08-18 19:25:20 +0000
commitc63134e1ac0522b643dffd4c71bcff2b27eab30d (patch)
treea016dc31193ff9e157f4a1502dee0f56a5ffc290
parentfeb93d6b8ae1a59d0fbe479409906ad6a8f74620 (diff)
downloadneo-layout-c63134e1ac0522b643dffd4c71bcff2b27eab30d.tar.gz
neo-layout-c63134e1ac0522b643dffd4c71bcff2b27eab30d.tar.bz2
neo-layout-c63134e1ac0522b643dffd4c71bcff2b27eab30d.zip
Modularisierung des AHK konsequent weitergeführt.
neo20.txt: Ebenen 7 und 8 ergänzt, Ebenen 2 und 4 des Numpads vertauscht. Methods-Layers.ahk: Mod3-Lock abgeschafft, CapsLock neu geschrieben. + Viele kleine Änderungen. git-svn-id: https://svn.neo-layout.org@776 b9310e46-f624-0410-8ea1-cfbb3a30dc96
-rw-r--r--A-REFERENZ-A/neo20-test.txt399
-rw-r--r--A-REFERENZ-A/neo20.txt31
-rw-r--r--Subversion-Anleitung.txt68
-rw-r--r--windows/autohotkey/Build-Update.bat26
-rw-r--r--windows/autohotkey/Changelog-and-Todo.txt140
-rw-r--r--windows/autohotkey/README.txt133
-rw-r--r--windows/autohotkey/Source/All.ahk8
-rw-r--r--windows/autohotkey/Source/Global-Part.ahk102
-rw-r--r--windows/autohotkey/Source/Keys-Neo.ahk792
-rw-r--r--windows/autohotkey/Source/Keys-Qwert-to-Neo.ahk1
-rw-r--r--windows/autohotkey/Source/Methods-Layers.ahk200
-rw-r--r--windows/autohotkey/Source/Methods-Lights.ahk4
-rw-r--r--windows/autohotkey/Source/Methods-Other.ahk138
-rw-r--r--windows/autohotkey/Source/Methods-ScreenKeyboard.ahk94
-rw-r--r--windows/autohotkey/Source/Methods-Unicode.ahk29
-rw-r--r--windows/autohotkey/Source/Warning.ahk5
-rw-r--r--windows/autohotkey/neo20.ahk1580
-rw-r--r--windows/autohotkey/neo20.exebin446376 -> 424421 bytes
18 files changed, 1476 insertions, 2274 deletions
diff --git a/A-REFERENZ-A/neo20-test.txt b/A-REFERENZ-A/neo20-test.txt
deleted file mode 100644
index ccfbf11..0000000
--- a/A-REFERENZ-A/neo20-test.txt
+++ /dev/null
@@ -1,399 +0,0 @@
--------------------------------------------------------------------------------
-ACHTUNG:
-Damit alles ordentlich dargestellt wird, muss man für die Darstellung z. B. im
-Texteditor eine dicktengleiche Schrift einstellen!
-
-Im Browser (Firefox) muss man unter Ansicht, Zeichenkodierung auf Unicode
-(UTF-8) stellen.
-
-Unter Windows ist in der Grundinstallation leider keine dicktengleiche Schrift
-installiert, die befriedigend viele Unicodezeichen beinhaltet.
-Abhilfe schafft z. B. DejaVu Sans Mono (ist z. B. bei OpenOffice dabei):
-http://dejavu.sourceforge.net/
--------------------------------------------------------------------------------
-
-== Haupttastatur ==
-=== Legende – Haupttastatur ===
-┌─────┐ 1 … 1. Ebene (kein Mod) │ 4 … 4. Ebene (Mod4)
-│2 4 6│ 2 … 2. Ebene (Umschalt) │ 5 … 5. Ebene (Mod3+Umschalt)
-│1 3 5│ 3 … 3. Ebene (Mod3) │ 6 … 6. Ebene (Mod3+Mod4)
-└─────┘
-• Ebene 1: Kleinbuchstaben (kein Mod)
-• Ebene 2: Großbuchstaben (Umschalt)
-• Ebene 3: Sonderzeichen (Mod3)
-• Ebene 4: Navigation und Ziffernblock (Mod4)
-• Ebene 5: Griechische Kleinbuchstaben (Mod3+Umschalt)
-• Ebene 6: Griechische Großbuchstaben (Mod3+Mod4)
-
-• Kombo/Compose: Zusammen setzen von Zeichen (Mod3+Tab)
- Beispiel:
- »Compose« »Compose loslassen« »o« »c« = ©
-• Feststellen/Capslock: Dauergroßschreiben (Umschalt+Umschalt)
- Zum Lösen der Feststellung nochmals gleiche Kombination
-• Feststellen der Ebene 4: (Mod4+Mod4) oder (Umschalt+Mod3+Tab)
- Zum Lösen der Feststellung nochmals gleiche Kombination
-
- HINWEIS: Unter Linux ist es momentan noch nicht möglich die Feststellung
- zu lösen, indem man beide Mods drückt. Man muss dort nur einen drücken!
-
-=== Symbole ===
-⇞⇟ … Bild auf/Bild ab
-⇱⇲ … Pos1/Ende
-⌫ ⌦ … Backspace/Entf
-⌧ … Esc
-⎀ … Einf
-⇠⇡⇢⇣ … Links/Hoch/Rechts/Runter
-♫ … Steht als Symbol für die Kombotaste (Compose)
-╌ … Weicher Trennstrich (U+00AD SOFT HYPHEN)
-␣ … Leerzeichen (SPACE)
-⍽ … Geschütztes Leerzeichen (U+00A0 NO-BREAK SPACE)
-¦ … Schmales, geschütztes Leerzeichen (U+202F NARROW NO-BREAK SPACE)
-⍓ … (de)aktiviert die Maussteuerung über die Tastatur (Navigationsblock Ebene 2)
-⎌ … undo-Funktion
-
-=== Akzenttasten ===
-Zu den Akzenten siehe auch
-• http://unicode.e-workers.de/
-• http://de.wikipedia.org/wiki/Diakritisches_Zeichen
-• http://de.wikipedia.org/wiki/Liste_lateinisch-basierter_Alphabete
-
-T1 („Tote Taste 1“: Taste links neben der 1)
- 1 … Toter Zirkumflex (sieht aus wie U+0302 COMBINING CIRCUMFLEX ACCENT)
-┌─────┬ 2 … Toter Caron/Hatschek (sieht aus wie U+030C COMBINING CARON)
-│ˇ · .│ 3 … Toter Breve/Brevis (sieht aus wie U+0306 COMBINING BREVE)
-│^ ˘ -│ 4 … Toter Punkt in der Mitte, verwendet für Ŀ (???)
-├─────┴ 5 … Toter Querstrich (??? sieht aus wie U+0335 COMBINING SHORT STROKE OVERLAY)
- 6 … Toter Punkt darunter (sieht aus wie U+0323 COMBINING DOT BELOW)
-
-T2 („Tote Taste 2“: zwei Tasten rechts neben der 0)
- 1 … Toter Akut (sieht aus wie U+0301 COMBINING ACUTE ACCENT)
-┬─────┬ 2 … Toter Grave (sieht aus wie U+0300 COMBINING GRAVE ACCENT)
-│` ˙ ˚│ 3 … Tote Cedilla (sieht aus wie U+0327 COMBINING CEDILLA)
-│´ ¸ ˛│ 4 … Toter Punkt darüber (sieht aus wie U+0307 COMBINING DOT ABOVE)
-┴──┬──┴ 5 … Totes Ogonek (sieht aus wie U+0328 COMBINING OGONEK)
- 6 … Toter Ring (sieht aus wie U+030A COMBINING RING ABOVE)
-
-T3 („Tote Taste 3“: Taste rechts neben dem Eszett (ß))
- 1 … Tote Tilde (sieht aus wie U+0303 COMBINING TILDE)
-┬──┴──┬ 2 … Toter Makron (sieht aus wie U+0304 COMBINING MACRON)
-│ˉ / ,│ 3 … Tote(s) Trema/Diärese/Diaeresis (sieht aus wie U+0308 COMBINING DIAERESIS)
-│~ ¨ ˝│ 4 … Toter Schrägstrich (??? sieht aus wie U+0337 COMBINING SHORT SOLIDUS OVERLAY)
-┴┬────┴ 5 … Toter Doppelakut (sieht aus wie U+030B COMBINING DOUBLE ACUTE ACCENT)
- 6 … Totes Komma darunter (sieht aus wie U+0326 COMBINING COMMA BELOW)
-
-ACHTUNG: „Tote Tasten“ (Tasten zum Erzeugen toter Zeichen – also Zeichen die nicht
-gleich erscheinen, sondern nur in Kombination mit einem weiteren Buchstaben) werden
-folgendermaßen bedient (Beispiel):
-1. Tote Tilde »~« eingeben.
-2. Danach »n«.
-3. Es erscheint das »ñ«.
-
-TIPP: Mit den toten Tasten Zirkumflex und Querstrich kann man hoch(ˆ)- und tiefgestellte(-) Ziffern erzeugen.
-
-=== Taste mit Bindestrichen, Gedankenstrich usw. ===
-Zu den Gedankenstrichen usw. siehe
-• http://www.matthias-kammerer.de/SonsTypo3.htm
-• http://de.wikipedia.org/wiki/Weicher_Trennstrich
-
-Taste rechts neben der 0
- 1 … - Bindestrich/Minusersatz (U+002D HYPHEN-MINUS)
-┬─────┬ 2 … – Gedankenstrich (U+2013 EN DASH)
-│– ╌│ 3 … — Englischer Gedankenstrich (U+2014 EM DASH)
-│- — ‑│ 5 … ‑ Geschützter Bindestrich (U+2011 NON-BREAKING HYPHEN)
-┴──┬──┴ 6 … ╌ Weicher Trennstrich (U+00AD SOFT HYPHEN) Achtung: Falsches Zeichen in der Grafik!
-
-=== Anführungszeichen ===
-Siehe auch http://de.wikipedia.org/wiki/Anf%C3%BChrungszeichen
-
-┬─────┬
-│» ⇞ ⊥│ 2 … » öffnendes doppeltes Guillemet (U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK)
-│4 › ℓ│ 3 … › öffnendes einfaches Guillemet (U+203A SINGLE RIGHT-POINTING ANGLE QUOTATION MARK)
-┴──┬──┴
-
-┬─────┬
-│« ∡│ 2 … « schließendes doppeltes Guillemet (U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK)
-│5 ‹ †│ 3 … ‹ schließendes einfaches Guillemet (U+2039 SINGLE LEFT-POINTING ANGLE QUOTATION MARK)
-┴──┬──┴
-
-┬─────┬
-│„ / ∄│ 2 … „ öffnendes Gänsefüßchen (U+201E DOUBLE LOW-9 QUOTATION MARK)
-│8 ‚ │ 3 … ‚ öffnendes halbes Anführungszeichen (U+201A SINGLE LOW-9 QUOTATION MARK)
-┴──┬──┴
-
-┬─────┬
-│“ * ∦│ 2 … “ schließendes Gänsefüßchen, englisch öffnendes (U+201C LEFT DOUBLE QUOTATION MARK)
-│9 ‘ │ 3 ‘ schließ. halb. Anführz., engl. öffn. halb. Anführz. (U+2018 LEFT SINGLE QUOTATION MARK)
-┴──┬──┴
-
-┬─────┬
-│” - ∅│ 2 … ” englisches schließendes Gänsefüßchen (U+201D RIGHT DOUBLE QUOTATION MARK)
-│0 ’ │ 3 … ’ Apostroph, engl. schließendes halbes Anführungsz. (U+2019 RIGHT SINGLE QUOTATION MARK)
-┴──┬──┴
-
-=== Dezimaltrennzeichen ===
-Das Dezimaltrennzeichen ist auf englischen und südamerikanischen Systemen ein
-Punkt ».«.
-Auf deutschen, französischen, spanischen, schweizerischen und anderen ein
-Komma »,«.
-Siehe auch http://de.wikipedia.org/wiki/Dezimaltrennzeichen
-
-┬──┴──┬
-│B , ⇒│ 4 … ,/. Dezimaltrennzeichen (Komma oder Punkt)
-│b + β│
-┴─────┴
-
-=== Alle Ebenen – Haupttastatur ===
-┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────────┐
-│ˇ · .│° • ¬│№ ‣ ∨│§ ∧│» ⇞ ⊥│« ∡│€ £ ∥│$ ¤ ∉│„ / ∄│“ * ∦│” - ∅│– ╌│` ˙ ˚│Backspace│
-│^ ˘ -│1 ¹ ₁│2 ² ₂│3 ³ ₃│4 › ℓ│5 ‹ ♀│6 ¢ ♂│7 ¥ κ│8 ‚ ⟨│9 ‘ ⟩│0 ’ ₀│- — ‑│´ ¸ ˛│ ⌫ │
-├─────┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──────┤
-│Tab⇤ │X ⋮ Ξ│V ⌫ ≙│L ⇡ Λ│C ⌦ ℂ│W ⎀ Ω│K ¡ √│H 7 Ψ│G 8 Γ│F 9 Φ│Q + ℚ│ẞ ∘│ˉ / ˏ│ │
-│Tab⇥ ♫ │x … ξ│v _ │l [ λ│c ] χ│w ^ ω│k ! ϰ│h < ψ│g > γ│f = φ│q & ϕ│ß ſ ς│~ ¨ ˝│Enter │
-├────────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┐ │
-│ ↘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 │
-│Umsch │4Lock│ü # │ö $ │ä | η│p ~ π│z ` ζ│b + β│m % µ│, " ρ│. ' ϑ│j ; θ│ Umschalt │
-├──────┼─────┴┬────┴─┬───┴─────┴─────┴─────┴─────┴─────┴────┬┴─────┼─────┴┬──────┬──────┤
-│ Strg │ Fen- │ Alt │ Leerz.␣ 0 schmal.Lz.¦ │↙4 │ Fen- │ Menu │ Strg │
-│ │ ster │ │ Leerz.␣ Leerz.␣ geschütz.Lz.⍽ │ 4Lock│ ster │ │ │
-└──────┴──────┴──────┴──────────────────────────────────────┴──────┴──────┴──────┴──────┘
-
-=== Erste Ebene – Miniatur ===
-┌───┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬──────┐
-│ ^ │1│2│3│4│5│6│7│8│9│0│-│´│ Back │
-├───┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬─────┤
-│Tab⇥│x│v│l│c│w│k│h│g│f│q│ß│~│ Ret │
-├────┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴─┐ │
-│ M3 │u│i│a│e│o│s│n│r│t│d│y│M3│ │
-├───┬─┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴──┴───┤
-│Ums│M4│ü│ö│ä│p│z│b│m│,│.│j│ Umsch │
-├───┼──┼─┴┬┴─┴─┴─┴─┴─┴┬┴─┼─┴┬──┬───┤
-│Str│Fe│Al│Leerzeichei│M4│Fe│Me│Str│
-└───┴──┴──┴───────────┴──┴──┴──┴───┘
-
-=== Zweite Ebene – Miniatur ===
-┌───┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬──────┐
-│ ˇ │°│№│§│»│«│€│$│„│“│”│–│`│ Back │
-├───┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬─────┤
-│Tab⇤│X│V│L│C│W│K│H│G│F│Q│ẞ│ˉ│ Ret │
-├────┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴─┐ │
-│ M3 │U│I│A│E│O│S│N│R│T│D│Y│M3│ │
-├───┬─┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴──┴───┤
-│CpL│M4│Ü│Ö│Ä│P│Z│B│M│ │ │J│ Cps_Lk│
-├───┼──┼─┴┬┴─┴─┴─┴─┴─┴┬┴─┼─┴┬──┬───┤
-│Str│Fe│Al│Leerzeichei│M4│Fe│Me│Str│
-└───┴──┴──┴───────────┴──┴──┴──┴───┘
-
-=== Dritte Ebene – Miniatur ===
-┌───┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬──────┐
-│ ˘ │¹│²│³│›│‹│¢│¥│‚│‘│’│—│¸│ Back │
-├───┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬─────┤
-│ ♫ │…│_│[│]│^│!│<│>│=│&│ſ│¨│ Ret │
-├────┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴─┐ │
-│ M3 │\│/│{│}│*│?│(│)│-│:│@│M3│ │
-├───┬─┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴──┴───┤
-│Ums│M4│#│$│|│~│`│+│%│"│'│;│ Umsch │
-├───┼──┼─┴┬┴─┴─┴─┴─┴─┴┬┴─┼─┴┬──┬───┤
-│Str│Fe│Al│Leerzeichei│M4│Fe│Me│Str│
-└───┴──┴──┴───────────┴──┴──┴──┴───┘
-
-=== Vierte Ebene – Miniatur ===
-┌───┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬──────┐
-│ · │•│‣│ │⇞│ │£│¤│/│*│-│ │˙│ Back │
-├───┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬─────┤
-│ 4Lk│⋮│⌫│⇡│⌦│⎀│¡│7│8│9│+│ │/│ Ret │
-├────┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴─┐ │
-│ M3 │⇱│⇠│⇣│⇢│⇲│¿│4│5│6│,│.│M3│ │
-├───┬─┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴──┴───┤
-│Ums│4L│⌧│⇥│⇟│↲│⍓│:│1│2│3│;│ Umsch │
-├───┼──┼─┴┬┴─┴─┴─┴─┴─┴┬┴─┼─┴┬──┬───┤
-│Str│Fe│Al│ 0 │4L│Fe│Me│Str│
-└───┴──┴──┴───────────┴──┴──┴──┴───┘
-
-=== Fünfte Ebene – Miniatur ===
-┌───┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬──────┐
-│ - │₁│₂│₃│ℓ│♀│♂│κ│⟨│⟩│₀│‑│˛│ Back │
-├───┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬─────┤
-│ │ξ│ │λ│χ│ω│ϰ│ψ│γ│φ│ϕ│ς│˝│ Ret │
-├────┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴─┐ │
-│ M3 │ │ι│α│ε│ο│σ│ν│ϱ│τ│δ│υ│M3│ │
-├───┬─┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴──┴───┤
-│Ums│M4│ │ │η│π│ζ│β│µ│ρ│ϑ│θ│ Umsch │
-├───┼──┼─┴┬┴─┴─┴─┴─┴─┴┬┴─┼─┴┬──┬───┤
-│Str│Fe│Al│geschütz.Lz│M4│Fe│Me│Str│
-└───┴──┴──┴───────────┴──┴──┴──┴───┘
-
-=== Sechste Ebene – Miniatur ===
-┌───┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬──────┐
-│ . │¬│∨│∧│⊥│∡│∥│∉│∄│∦│∅│╌│˚│ Back │
-├───┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬─────┤
-│ │Ξ│≙│Λ│ℂ│Ω│√│Ψ│Γ│Φ│ℚ│∘│ˏ│ Ret │
-├────┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴─┐ │
-│ M3 │∮│∫│∀│∃│∈│Σ│ℕ│ℝ│∂│Δ│∇│M3│ │
-├───┬─┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴──┴───┤
-│Ums│M4│∝│ℑ│ℜ│Π│ℤ│⇐│⇔│⇒│Θ│≡│ Umsch │
-├───┼──┼─┴┬┴─┴─┴─┴─┴─┴┬┴─┼─┴┬──┬───┤
-│Str│Fe│Al│ schmal.Lz.│M4│Fe│Me│Str│
-└───┴──┴──┴───────────┴──┴──┴──┴───┘
-
-== Ziffernblock ==
-=== Legende – Ziffernblock ===
-┌─────┐ 1 … 1. Ebene (kein Mod)
-│ 2 4 │ 2 … 2. Ebene (Umschalt)
-│ 1 3 │ 3 … 3. Ebene (Mod3)
-└─────┘ 4 … 5. Ebene (Mod3+Umschalt)
-
-=== Rechenzeichen ===
-┬─────┬ 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-Minus
-│ │ 2 … ASCII-Minus
-│ - − │ 3 … Minuszeichen (U+2212 MINUS SIGN)
-┼─────┤
-
-=== Alle Ebenen – Ziffernblock ===
-┌─────┬─────┬─────┬─────┐
-│ ≠ ⍓ │ / ⁄ │ * × │ - − │
-│ = ≈ │ / ÷ │ * ⋅ │ - - │
-├─────┼─────┼─────┼─────┤
-│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│
-└───────────┴─────┴─────┘
-
-=== Erste Ebene – Miniatur ===
-┌───┬───┬───┬───┐
-│ = │ / │ * │ - │
-├───┼───┼───┼───┤
-│ 7 │ 8 │ 9 │ │
-├───┼───┼───┤ │
-│ 4 │ 5 │ 6 │ + │
-├───┼───┼───┼───┤
-│ 1 │ 2 │ 3 │ │
-├───┴───┼───┤ │
-│ 0 │ , │Ent│
-└───────┴───┴───┘
-
-=== Zweite Ebene – Miniatur ===
-┌───┬───┬───┬───┐
-│ ≠ │ / │ * │ - │
-├───┼───┼───┼───┤
-│Hom│KP↑│PgU│ │
-├───┼───┼───┤ │
-│KP←│Beg│KP→│ + │
-├───┼───┼───┼───┤
-│End│KP↓│PgD│ │
-├───┴───┼───┤ │
-│ Ins │Del│Ent│
-└───────┴───┴───┘
-
-
-=== Dritte Ebene – Miniatur ===
-┌───┬───┬───┬───┐
-│ ≈ │ ÷ │ ∙ │ - │
-├───┼───┼───┼───┤
-│ ↕ │ ↑ │ ∋ │ │
-├───┼───┼───┤ │
-│ ← │ ∞ │ → │ ± │
-├───┼───┼───┼───┤
-│ ↔ │ ↓ │ ⇌ │ │
-├───┴───┼───┤ │
-│ % │ . │Ent│
-└───────┴───┴───┘
-
-=== Vierte Ebene – Miniatur ===
-┌───┬───┬───┬───┐
-│ ⍓ │frc│ × │ − │ ⍓ turns on/off the keyboard mouse control
-├───┼───┼───┼───┤ frc means fraction slash ⁄
-│ † │ ∩ │ ⊗ │ │
-├───┼───┼───┤ │
-│ ⊂ │ € │ ⊃ │ ∓ │
-├───┼───┼───┼───┤
-│ ✔ │ ∪ │ ✗ │ │
-├───┴───┼───┤ │
-│ ‰ │,/.│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 neo='grep -m 1 -B 15 "┴──────┘" PFAD_ZUR_DATEI/neo20.txt'
-
-Dazu muss »PFAD_ZUR_DATEI« durch den Pfad zu dieser Datei ersetzt werden.
-
-Im Verzeichnis linux/bin sind umfangreichere Skripte mit größerer Funktionalität.
-
-== Zeichenerläuterungen zur Mat-/Nat-Ebene – Haupttastatur ==
-Ξ … Xi, griechischer Majuskel (U039E)
-≙ … entspricht (U2259)
-Λ … Lambda, griechischer Majuskel (U039B)
-ℂ … Menge der komplexen Zahlen (U2102)
-Ω … Omega, griechischer Majuskel (U03A9)
-√ … Wurzel aus (U221A)
-Ψ … Psi, griechischer Majuskel (U03A8)
-Γ … Gamma, griechischer Majuskel (U0393)
-Φ … Phi, griechischer Majuskel (U03A6)
-ℚ … Menge der rationalen Zahlen (U211A)
-∘ … Verknüpfungsoperator (U2218)
-∮ … Integral über eine geschlossene Kurve (U222E)
-∫ … Integral (U222B)
-∀ … Allquantor ; für alle (U2200)
-∃ … Existenzquantor ; es gibt (U2203)
-∈ … Element von (U2208)
-Σ … Sigma, griechischer Majuskel (U03A3)
-ℕ … Menge der natürlichen Zahlen (U2115)
-ℝ … Menge der reellen Zahlen (U211D)
-∂ … partielle Ableitung (U2202)
-Δ … Delta, griechischer Majuskel (U0394)
-∇ … Nablaoperator (Gradient, Divergenz, Rotation) (U2207)
-∝ … proportional zu (U221D)
-ℑ … Imaginärteil einer komplexen Zahl (U2111)
-ℜ … Realteil einer komplexen Zahl (U211C)
-Π … Pi, griechischer Majuskel (U03A0)
-ℤ … Menge der ganzen Zahlen (U2124)
-⇒ … Implikation ; daraus folgt ; hinreichend für (U21D2)
-⇔ … Äquivalenzzeichen (U21D4)
-⇐ … notwendig für ; nur dann, wenn (U21D0)
-Θ … Theta, griechischer Majuskel (U0398)
-≡ … identisch (U2261)
-
-== Zeichenerläuterungen zur Mat-/Nat-Ebene – Ziffernblock ==
-⊗ … Tensorprodukt ; Vektor in die Ebene zeigend (U2297)
-∞ … unendlich (U221E)
-∋ … enthält das Element (U220B)
-
-== Hinweise zu Doppelbelegungen in Unicode ==
-Griechische Minuskel und Majuskel besitzten in der Regel eine weitere Bedeutung, z.B.
-• Δ für Differenz oder Fehler
-• Θ für homöopathische Urtinktur
-• Γ für Gammafunktion
-
-Einige finden sich darum an mehreren Stellen im Unicode, um (eventuelle) Unterschiede
-deutliche machen zu können. Zur Platzersparnis haben wir stets eines (das einfachste
-und allgemeinste) Zeichen aufgenommen:
-• Ω (U03A9) ; Einheit des Widerstandes Ohm (U2126)
-• Σ (U03A3) ; Summenzeichen (U2211)
-• Δ (U0394) ; Laplaceoperator (2206) ; Dreieck, symmetrische Differenz (25B3)
-• ∇ (U2207) ; Dreieck (U25BD)
-• Π (U03A0) ; Produktzeichen ∏ (U220F)
-• µ (U03BC) ; SI-Vorsilbe micro (U00B5)
diff --git a/A-REFERENZ-A/neo20.txt b/A-REFERENZ-A/neo20.txt
index 0cf25b5..8b40bb0 100644
--- a/A-REFERENZ-A/neo20.txt
+++ b/A-REFERENZ-A/neo20.txt
@@ -1,4 +1,4 @@
--------------------------------------------------------------------------------
+-------------------------------------------------------------------------------
ACHTUNG:
Damit alles ordentlich dargestellt wird, muss man für die Darstellung z. B. im
Texteditor eine dicktengleiche Schrift einstellen!
@@ -18,7 +18,7 @@ http://dejavu.sourceforge.net/
│2 4 6│ 2 … 2. Ebene (Umschalt) │ 5 … 5. Ebene (Mod3+Umschalt)
│1 3 5│ 3 … 3. Ebene (Mod3) │ 6 … 6. Ebene (Mod3+Mod4)
└─────┘
-• Ebene 1: Kleinbuchstaben (kein Mod)
+• Ebene 1: Kleinbuchstaben (kein Mod)
• Ebene 2: Großbuchstaben (Umschalt)
• Ebene 3: Sonderzeichen (Mod3)
• Ebene 4: Navigation und Ziffernblock (Mod4)
@@ -248,7 +248,7 @@ sollten für alle Elemente auf dem Keypad wenn möglch die KP_‐Variante verwen
=== Legende – Ziffernblock ===
┌─────┐ 1 … 1. Ebene (kein Mod)
-│ 2 4 │ 2 … 2. Ebene (Umschalt)
+│ 4 2 │ 2 … 2. Ebene (Umschalt)
│ 1 3 │ 3 … 3. Ebene (Mod3)
└─────┘ 4 … 5. Ebene (Mod3+Umschalt)
@@ -301,18 +301,17 @@ sollten für alle Elemente auf dem Keypad wenn möglch die KP_‐Variante verwen
=== Zweite Ebene – Miniatur ===
┌───┬───┬───┬───┐
-│ ≠ │ / │ * │ - │
-├───┼───┼───┼───┤
-│Hom│KP↑│PgU│ │
+│ ⍓ │frc│ × │ − │ ⍓ turns on/off the keyboard mouse control
+├───┼───┼───┼───┤ frc means fraction slash ⁄
+│ † │ ∩ │ ⊗ │ │
├───┼───┼───┤ │
-│KP←│Beg│KP→│ + │
+│ ⊂ │ € │ ⊃ │ ∓ │
├───┼───┼───┼───┤
-│End│KP↓│PgD│ │
+│ ✔ │ ∪ │ ✗ │ │
├───┴───┼───┤ │
-│ Ins │Del│Ent│
+│ ‰ │,/.│Ent│
└───────┴───┴───┘
-
=== Dritte Ebene – Miniatur ===
┌───┬───┬───┬───┐
│ ≈ │ ÷ │ ∙ │ - │
@@ -328,15 +327,15 @@ sollten für alle Elemente auf dem Keypad wenn möglch die KP_‐Variante verwen
=== Vierte Ebene – Miniatur ===
┌───┬───┬───┬───┐
-│ ⍓ │frc│ × │ − │ ⍓ turns on/off the keyboard mouse control
-├───┼───┼───┼───┤ frc means fraction slash ⁄
-│ † │ ∩ │ ⊗ │ │
+│ ≠ │ / │ * │ - │
+├───┼───┼───┼───┤
+│Hom│KP↑│PgU│ │
├───┼───┼───┤ │
-│ ⊂ │ € │ ⊃ │ ∓ │
+│KP←│Beg│KP→│ + │
├───┼───┼───┼───┤
-│ ✔ │ ∪ │ ✗ │ │
+│End│KP↓│PgD│ │
├───┴───┼───┤ │
-│ ‰ │,/.│Ent│
+│ Ins │Del│Ent│
└───────┴───┴───┘
== Tipp ==
diff --git a/Subversion-Anleitung.txt b/Subversion-Anleitung.txt
index 97b8584..15f4663 100644
--- a/Subversion-Anleitung.txt
+++ b/Subversion-Anleitung.txt
@@ -1,51 +1,51 @@
-------------------------------------------------------------------------------
+------------------------------------------------------------------------------
Diese Datei beschreibt den Umgang mit dem Subversion Kommandozeilenclient.
------------------------------------------------------------------------------
Gliederung
1. Voraussetzung
1.1 Welche Software brauche ich?
-1.2 Dateien im SVN ändern
+1.2 Dateien im SVN ndern
1.3 Terminologie
-2. Verschiedene Arbeitsabläufe (Was will ich machen?)
+2. Verschiedene Arbeitsablufe (Was will ich machen?)
2.1 Das Repository lokal auf meinem Rechner haben
2.2 Das Repository auf meinem Rechner auf den neuesten Stand bringen
-2.3 Dateien im Repository ändern
-2.4 Dem Repository neue Dateien hinzufügen
+2.3 Dateien im Repository ndern
+2.4 Dem Repository neue Dateien hinzufgen
2.5 Dateien im Repository umbenennen
-2.6 Dateien aus dem Repository löschen
-2.7 Änderungen ins Repository hochladen
-3 Ratschläge / »best practice SVN usage«
+2.6 Dateien aus dem Repository lschen
+2.7 nderungen ins Repository hochladen
+3. Ratschlge / best practice SVN usage
------------------------------------------------------------------------------
1. Voraussetzung
------------------------------------------------------------------------------
1.1 Welche Software brauche ich?
-Benötigt wird das Programm subversion für die Kommandozeile:
+Bentigt wird das Programm subversion fr die Kommandozeile:
Download: http://svn.tigris.org
-Alternativ liegt für Windows auch ein komfortabler SVN-Client vor, der sich in die normale Dateiverwaltung integriert:
+Alternativ liegt fr Windows auch ein komfortabler SVN-Client vor, der sich in die normale Dateiverwaltung integriert:
http://www.tortoisesvn.net/
-Die weiteren Erläuterung beziehen sich auf den Kommandozeilen-Client, können aber sinngemäß auf einen graphischen Client übertragen werden.
+Die weiteren Erluterung beziehen sich auf den Kommandozeilen-Client, knnen aber sinngem auf einen graphischen Client bertragen werden.
------------------------------------------------------------------------------
-1.2 Dateien im SVN ändern
+1.2 Dateien im SVN ndern
-Will man auch Dateien im Repostiory ändern, braucht man einen Schreibzugang mit Namen und Passwort.
- → Ben fragen!
-Wenn es vorrausſichtlich bei einer einzigen Änderung bleiben wird, kann alternativ auch auf der Mailingliste Unterstützung für ein einmaliges »Einchecken« erbeten werden.
+Will man auch Dateien im Repostiory ndern, braucht man einen Schreibzugang mit Namen und Passwort.
+ ? Ben fragen!
+Wenn es voraussichtlich bei einer einzigen nderung bleiben wird, kann alternativ auch auf der Mailingliste Untersttzung fr ein einmaliges Einchecken erbeten werden.
------------------------------------------------------------------------------
1.3 Terminologie
-$REPOSITORY_HOME … Das Verzeichnis in dem das ausgecheckte Repository liegt
+$REPOSITORY_HOME Das Verzeichnis in dem das ausgecheckte Repository liegt
------------------------------------------------------------------------------
2. Was will ich machen?
------------------------------------------------------------------------------
2.1 Das Repository lokal auf meinem Rechner haben
-Angenommen ich möchte neo in das Verzeichnis „$VERZEICHNIS/$NEO“ runterladen:
+Angenommen ich mchte Neo in das Verzeichnis $VERZEICHNIS/$NEO runterladen:
cd $VERZEICHNIS
svn checkout https://neo.eigenheimstrasse.de/svn $NEO
@@ -59,12 +59,12 @@ $REPOSITORY_HOME ist dann $VERZEICHNIS/$NEO
svn update
------------------------------------------------------------------------------
-2.3 Dateien im Repository ändern
+2.3 Dateien im Repository ndern
-Einfach die Datei ändern und weiter gehts mit Abschnitt 2.7.
+Einfach die Datei ndern und weiter gehts mit Abschnitt 2.7.
------------------------------------------------------------------------------
-2.4 Dem Repository neue Dateien hinzufügen
+2.4 Dem Repository neue Dateien hinzufgen
Nachdem man die Datei in der lokalen Repositorykopie erstellt hat:
svn add $DATEI
@@ -77,35 +77,35 @@ weiter mit Abschnitt 2.7
weiter mit Abschnitt 2.7
------------------------------------------------------------------------------
-2.6 Dateien aus dem Repository löschen
+2.6 Dateien aus dem Repository lschen
svn rm $DATEI
weiter mit Abschnitt 2.7
------------------------------------------------------------------------------
-2.7 Änderungen ins Repository hochladen
+2.7 nderungen ins Repository hochladen
cd $REPOSITORY_HOME
- svn commit -m "$ÄNDERUNGSBESCHREIBUNG" --username $USER
+ svn commit -m "$NDERUNGSBESCHREIBUNG" --username $USER
Wenn man das Repository mit seinem Nutzernamen ausgecheckt hat,
-kann „--username $USER“ weggelassen werden.
+kann --username $USER weggelassen werden.
Statt auschecken wie in Abschnitt 2.1 beschrieben:
cd $VERZEICHNIS_WO_NEO_REIN_SOLL
svn checkout https://$USER@neo.eigenheimstrasse.de/svn neo
------------------------------------------------------------------------------
-3. Ratschläge / »best practice«
+3. Ratschlge / best practice
------------------------------------------------------------------------------
-In diesem Abschnitt geht es weniger um technische Fragen, sondern eher darum wie man sinnvoll/empfohlenerweise mit einem SVN arbeiten sollte. Diese Ratschläge haben sich in der Praxis als sinnvoll erwiesen:
+In diesem Abschnitt geht es weniger um technische Fragen, sondern eher darum, wie man sinnvoll/empfohlenerweise mit einem SVN arbeiten sollte. Diese Ratschlge haben sich in der Praxis als sinnvoll erwiesen:
-• Bevor man beginnt, die eigene SVN-Kopie zu bearbeiten, sollte immer erst ein Update durchgeführt werden (insbesondere, wenn das letzte Auschecken schon länger her liegt). Dies vermeidet mögliche Konflikte.
-• Es ist vorteilhaft, inhaltlich Zusammengehörendes auch gemeinsam zu committen, und Dinge, die voneinander unabhängig sind, auch einzeln einzuchecken.
-• Die Änderungsbeschreibung sollte immer eingegeben werden.
-• Längere Änderungsbeschreibungen sollten mit einer kurzen Zusammmenfassung der Form »[Adjektiv] Subjekt Prädikat: …« begonnen werden, etwa »Neues Feature: …«, »Caps-Lock-Fehler behoben: …«, »Dokumentation ergänzt: …«
-• Inhaltliche (bzw. »programmiertechnische«) Änderungen (oder Fehlerkorrekturen) sollten unabhängig von ästhetischen Korrekturen (wie Einrückungen oder der Korrektur von Rechtschreibfehlern) eingecheckt werden. Mögliche Änderungsbeschreibungen wären etwa: [Revision 698:] »Doku erweitert: Wie man NEO auf dem C64 installieren kann«, [Revision 699:] »Formatierung korregiert: Leere Zeiten entfernt, Einrückung angeglichen (r698)«
-• Grössere Commits können auch aufgeteilt werden, wenn die Intention dazu aus den Änderungsbeschreibungen hervor geht.
-• Wenn man Angst um kostbare Änderungen durch einen Headcrash während einer intensiven Change-Session hat, muss man halt einen Branch für den Zeitraum der Änderungen eröffnen.
-• …
+ Bevor man beginnt, die eigene SVN-Kopie zu bearbeiten, sollte immer erst ein Update durchgefhrt werden (insbesondere, wenn das letzte Auschecken schon lnger her liegt). Dies vermeidet mgliche Konflikte.
+ Es ist vorteilhaft, inhaltlich Zusammengehrendes auch gemeinsam zu committen, und Dinge, die voneinander unabhngig sind, auch einzeln einzuchecken.
+ Die nderungsbeschreibung sollte immer eingegeben werden.
+ Lngere nderungsbeschreibungen sollten mit einer kurzen Zusammenfassung der Form [Adjektiv] Subjekt Prdikat: begonnen werden, etwa Neues Feature: , Caps-Lock-Fehler behoben: , Dokumentation ergnzt:
+ Inhaltliche (bzw. programmiertechnische) nderungen (oder Fehlerkorrekturen) sollten unabhngig von sthetischen Korrekturen (wie Einrckungen oder der Korrektur von Rechtschreibfehlern) eingecheckt werden. Mgliche nderungsbeschreibungen wren etwa: [Revision 698:] Doku erweitert: Wie man NEO auf dem C64 installieren kann, [Revision 699:] Formatierung korrigiert: Leere Zeilen entfernt, Einrckung angeglichen (r698)
+ Grere Commits knnen auch aufgeteilt werden, wenn die Intention dazu aus den nderungsbeschreibungen hervor geht.
+ Wenn man Angst um kostbare nderungen durch einen Headcrash whrend einer intensiven Change-Session hat, muss man einen Branch fr den Zeitraum der nderungen erffnen.
+
------------------------------------------------------------------------------
diff --git a/windows/autohotkey/Build-Update.bat b/windows/autohotkey/Build-Update.bat
index abb5937..deae939 100644
--- a/windows/autohotkey/Build-Update.bat
+++ b/windows/autohotkey/Build-Update.bat
@@ -1,33 +1,23 @@
@echo off
-
-echo Setting local path variables
-
-REM The path to the AutoHotkey program
-set ahk=C:\Programme\AutoHotkey
-
-REM The path to the AutoHohotkey directory in the local svn copy
-set svn=.
-
-REM Just some useful shortcuts:
-set scr="%svn%\Source"
+cd Source
set fn=neo20
-echo Killing the old (AHK)Driver
+rem echo Killing the old (AHK)Driver
REM tskill neo20-all-in-one
echo Creating a new Driver from the Source code
REM The order *is* important!
-copy "%scr%\Warning.ahk" + "%scr%\Global-Part.ahk" + "%scr%\Methods-Layers.ahk" + "%scr%\Keys-Qwert-to-Neo.ahk" + "%scr%\Keys-Neo.ahk" + "%scr%\Methods-Lights.ahk" + "%scr%\Methods-Other.ahk" + "%scr%\Methods-Unicode.ahk" + "%scr%\Methods-ScreenKeyboard.ahk" "%svn%\%fn%.ahk"
-REM if exist "%svn%\Compose\Compose-all-in-one.ahk" copy "%svn%\%fn%.ahk" + "%svn%\Compose\Compose-all-in-one.ahk" "%svn%\%fn%.ahk"
+copy "Global-Part.ahk" + "Methods-Layers.ahk" + "Keys-Qwert-to-Neo.ahk" + "Keys-Neo.ahk" + "Methods-Lights.ahk" + "Methods-Other.ahk" + "Methods-Unicode.ahk" + "Methods-ScreenKeyboard.ahk" "..\%fn%.ahk"
+REM if exist "..\Compose\Compose-all-in-one.ahk" copy "..\%fn%.ahk" + "..\Compose\Compose-all-in-one.ahk" "..\%fn%.ahk"
-echo Compiling the new Driver using AutoHotkey
-"%ahk%\Compiler\Ahk2Exe.exe" /in "%svn%\%fn%.ahk" /out "%svn%\%fn%.exe" /icon "%svn%\neo.ico"
+echo Compiling the new Driver using AutoHotkey...
+"C:\Programme\AutoHotkey\Compiler\Ahk2Exe.exe" /in "..\%fn%.ahk" /out "..\%fn%.exe" /icon "..\neo.ico"
echo Driver Update complete! You can now close this log-window.
REM Start the new Driver
-%fn%.exe
+rem %fn%.exe
rem wie kann man hier mit der Skriptabarbeitung weitermachen?
rem Unter Windows XP scheint es nicht mglich zu sein, dies mit "Bordmitteln" zu erreichen, es gibt hierfr jedoch extere Programme, etwa
REM echo Start the new driver asynchronously, using "Hidden Start" (hstart.exe) from http://www.ntwind.com/software/utilities/hstart/
-REM hstart.exe /NOCONSOLE /D="%exe%" "%exe%\%fn%.exe" \ No newline at end of file
+REM hstart.exe /NOCONSOLE /D="." "%fn%.exe" \ No newline at end of file
diff --git a/windows/autohotkey/Changelog-and-Todo.txt b/windows/autohotkey/Changelog-and-Todo.txt
index 058b629..74e91c7 100644
--- a/windows/autohotkey/Changelog-and-Todo.txt
+++ b/windows/autohotkey/Changelog-and-Todo.txt
@@ -1,71 +1,75 @@
-== NEO 2.0 (beta) AutoHotkey-Treiber ==
+== NEO 2.0 (beta) AutoHotkey-Treiber ==
=== Autoren ===
-Alle E-Mail-Adressen sind »kodiert«, um die Erfassung durch E-Mail-Spider (und darauf folgenden Spam) zu vermeiden:
+Alle E-Mail-Adressen sind kodiert, um die Erfassung durch E-Mail-Spider (und darauf folgenden Spam) zu vermeiden:
Stefan Mayer <stm (at) neo-layout. o r g>
-Nora Geißler <nora_geissler (at) yahoo. d e>
+Nora Geiler <nora_geissler (at) yahoo. d e>
Matthias Berg <neo (at) matthias-berg. e u>
Martin Roppelt <m.p.roppelt (at) web. d e>
Dennis Heidsiek <HeidsiekB (at) aol. c o m>
-Matthias Wächter <matthias (at) waechter.wiz. a t>
+Matthias Wchter <matthias (at) waechter.wiz. a t>
=== To Do ===
-- Ausgiebig testen... (besonders Vollständigkeit bei Deadkeys).
-- Compose vollständig implementieren (Welche Methode ist hierzu am besten geeignet?).
-- Bessere Lösung für das Leeren von PriorDeadKey finden, damit die Sondertasten nicht mehr abgefangen werden müssen.
-- Testen, ob die Capslocklösung (siehe *1:: Ebene 1) auch für Numpad gebraucht wird.
+- Ausgiebig testen... (besonders Vollstndigkeit bei Deadkeys).
+- Compose vollstndig implementieren (Welche Methode ist hierzu am besten geeignet?).
+- Bessere Lsung fr das Leeren von PriorDeadKey finden, damit die Sondertasten nicht mehr abgefangen werden mssen.
+- Testen, ob die Capslocklsung (siehe *1:: Ebene 1) auch fr Numpad gebraucht wird.
- Die Ebenen vom Tastenblock an die neue Referenz anpassen (wenn da ein Konsens gefunden wurde).
- Blindes Compose implementieren.
+- CompKey in Abhngigkeit von CapsLock setzen.
+- CapsLock-Abhngigkeiten entfernen.
-
-=== Ideen und Vorschläge ===
-- Die Varianten (lernModus, einHandNeo, Lang-s-Tastatur, Qwertz/pausieren) sollten einheitlich (de-)aktiviert werden, etwa über M4+F9-F12.
-- Modi für vertauschte Ziffern in der Zahlenreihe und auf der 4. Ebene.
+=== Ideen und Vorschlge ===
+- Modi fr vertauschte Ziffern in der Zahlenreihe und auf der 4. Ebene.
- Die Compose-Kombinationen sollten automatisch aus den Referenzdateien im Compose-Verzeichnis erzeugt werden.
-=== Änderungshistorie ===
+=== nderungshistorie ===
+Revision 776 (von Martin Roppelt)
+- Global-Part.ahk, Keys-Neo.ahk: ZeigeLockBoxen in ZeigeLockBox umbenannt.
+- Keys-Neo.ahk: Fehler ausgebessert, Quelltext neu ausgerichtet, Numpad an die Referenz angeglichen, Ebenen 7 und 8 ergnzt;
+- Methods-Layers.ahk: Mod3-Lock abgeschafft
Revision 749 (von Dennis Heidsiek)
-- »?« und »¿« funktionieren wieder (Klammer vergessen).
+- ? und funktionieren wieder (Klammer vergessen).
Revision 748 (von Dennis Heidsiek)
-- Neue globale Variable »zeigeLockBoxen«: Soll mit MsgBoxen explizit auf das Ein- und Ausschalten des Mod{3,4}-Locks hingewiesen werden?
+- Neue globale Variable zeigeLockBoxen: Soll mit MsgBoxen explizit auf das Ein- und Ausschalten des Mod{3,4}-Locks hingewiesen werden?
Revision 746 (von Martin Roppelt)
-- Zurücksetzen der Tastatur über M4+Esc.
-- #[2] sendet nicht mehr »'«.
-- Variablen Ebene7 und Ebene8 zum Abfragen eingeführt.
-- s(12)[2s]-Bug von Matthias Wächter behoben (= Lang-s-Tastatur repariert).
+- Zurcksetzen der Tastatur ber M4+Esc.
+- #[2] sendet nicht mehr '.
+- Variablen Ebene7 und Ebene8 zum Abfragen eingefhrt.
+- s(12)[2s]-Bug von Matthias Wchter behoben (= Lang-s-Tastatur repariert).
Revision 744 (von Stefan Mayer)
- Ebene4-Ziffernblock: auf neo_d nun Komma (wie Referenz), "NumPadKomma" gibt es nicht.
-Revision 743 (von Matthias Wächter)
+Revision 743 (von Matthias Wchter)
- Ebene4-Ziffernblock: NumPadAdd und NumPadSub korrigiert.
-Revision 740 (von Matthias Wächter) - "Mega-Patch"
+Revision 740 (von Matthias Wchter) - "Mega-Patch"
- Straffung der Syntax bei der Abfrage der Ebenen und der Behandlung der toten Tasten und der Compose.
- Umstellung auf Virtual-Key-Scancodes, umgeht den AHK-Bug, dass Scancodemarken durch SendUnicodeChar angesprungen werden.
-- Die Scancodes für das Numpad (jeweils für ein- und ausgeschaltetes NumLock) haben jetzt paarweise Sprungmarken um die Tastenbehandlung untereinander konsistent zu halten.
+- Die Scancodes fr das Numpad (jeweils fr ein- und ausgeschaltetes NumLock) haben jetzt paarweise Sprungmarken um die Tastenbehandlung untereinander konsistent zu halten.
- Wiederherstellung der Modifier-Locks.
- Reparatur der Bildschirmtastatur in der All.ahk.
- Modifier werder seltener und nur noch innerhalb der Sprungmarken abgefragt.
- Blinde tote Tasten auf M4+F9 (Toggle)
- Blinde Compose auf M4+F10 (Toggle) (noch nicht implementiert).
Revision 728 (von Dennis Heidsiek):
-- Ist die Datei %APPDATA%\NEO2\NEO2.ini vorhanden, werden dort eventuell vorhandene Werte für die Globalen Schalter beim Start übernommen.
-- »LangSTastaturStandardmäßigEingeschaltet.ahk« wird nicht mehr unterstützt, weil sonst immer neu kompiliert werden muss.
+- Ist die Datei %APPDATA%\NEO2\NEO2.ini vorhanden, werden dort eventuell vorhandene Werte fr die Globalen Schalter beim Start bernommen.
+- LangSTastaturStandardmigEingeschaltet.ahk wird nicht mehr untersttzt, weil sonst immer neu kompiliert werden muss.
Revision 707 (von Dennis Heidsiek):
- Die Resourcen-Dateien (PNGs, ICOs) werden nun nach %TEMP%\NEO2\ extrahiert und nicht mehr in das Verzeichnis, in dem sich die EXE befindet.
-- Die doppelten französischen Anführungszeichen werden nun ebenfalls über SendUnicodeChar gesendet.
+- Die doppelten franzsischen Anfhrungszeichen werden nun ebenfalls ber SendUnicodeChar gesendet.
Revision 694 (von Martin Roppelt):
- LangSTastatur auf M4+F11.
-- Entwickler können durch das Erstellen einer Datei »LangSTastaturStandardmäßigEingeschaltet.ahk« mit dem Inhalt »LangSTastatur := 1« diese standardmäßig aktivieren.
+- Entwickler knnen durch das Erstellen einer Datei LangSTastaturStandardmigEingeschaltet.ahk mit dem Inhalt LangSTastatur := 1 diese standardmig aktivieren.
- Interne Darstellung der Ebenen (4 und 5 bei den toton Tasten wieder richtig getauscht.
Revision 687 (von Dennis Heidsiek):
-- Die SendUnicodeChar-Methode um den GDK-Workarround von Matthias Wächter ergänzt.
+- Die SendUnicodeChar-Methode um den GDK-Workarround von Matthias Wchter ergnzt.
- (An/Aus) Icons an Favicon der neuen Homepage angepasst.
Revision 645 (von Martin Roppelt):
-- Ellipse zusätzlich auf M3+x.
+- Ellipse zustzlich auf M3+x.
- Lang-s-Tastatur probeweise auf M4+Esc.
Revision 640 (von Dennis Heidsiek):
- Der untote Zirkumflex (^) auf Ebene 3 funktioniert jetzt auch in Java-Programmen.
@@ -74,50 +78,50 @@ Revision 639 (von Martin Roppelt):
Revision 629 (von Martin Roppelt):
- Spitze Klammern (bra und ket) auf M5+8/9.
Revision 624 (von Martin Roppelt):
-- Lang-s-Tastatur (ein- und auszuschalten durch Mod4+ß).
+- Lang-s-Tastatur (ein- und auszuschalten durch Mod4+).
Revision 616 (von Dennis Heidsiek):
- Der nicht funktionierende Mod5-Lock-Fix wurde wieder entfernt, da er sogar neue Fehler produzierte.
Revision 615 (von Dennis Heidsiek):
- Erfolgloser Versuch, den Mod4-Lock wiederherzustellen (durch eine Tilde vor den Scancodes der Bildschirmtastatur).
- Rechtschreibfehler korrigiert.
-- Zwei AHK-Links eingefügt.
+- Zwei AHK-Links eingefgt.
Revision 609 (von Dennis Heidsiek):
-- Vorläufiger Abschluss der AHK-Modularisierung.
-- Bessere Testmöglichkeit »All.ahk« für AHK-Entwickler hinzugefügt, bei der sich die Zeilenangaben in Fehlermeldungen auf die tatsächlichen Module und nicht auf das große »vereinigte« Skript beziehen.
+- Vorlufiger Abschluss der AHK-Modularisierung.
+- Bessere Testmglichkeit All.ahk fr AHK-Entwickler hinzugefgt, bei der sich die Zeilenangaben in Fehlermeldungen auf die tatschlichen Module und nicht auf das groe vereinigte Skript beziehen.
Revision 608 (von Martin Roppelt):
- Rechtschreibfehler korrigiert und Dateinamen aktualisiert und sortiert.
Revision 590 (von Dennis Heidsiek):
- Erste technische Vorarbeiten zur logischen Modularisierung des viel zu lange gewordenen AHK-Quellcodes.
- Neue Batch-Datei Build-Update.bat zur einfachen Aktualisierung der EXE-Datei.
Revision 583 (von Dennis Heidsiek):
-- Kleinere Korrekturen ((5)(3), (5)(5) und (9)(3) stimmen wieder mit der Referenz überein).
+- Kleinere Korrekturen ((5)(3), (5)(5) und (9)(3) stimmen wieder mit der Referenz berein).
Revision 580 (von Matthias Berg):
- Bildschirmtastatur jetzt mit Mod4+F* statt Strg+F*, dies deaktiviert jedoch leider den Mod4-Lock.
Revision 570 (von Matthias Berg):
-- Hotkeys für einHandNeo und lernModus durch entsprechende ScanCodes ersetzt
+- Hotkeys fr einHandNeo und lernModus durch entsprechende ScanCodes ersetzt
Revision 568 (von Matthias Berg):
- Sonderzeichen, Umlaute, z und y durch ScanCodes ersetzt.
- • jetzt wird auch bei eingestelltem US Layout Neo verwendet (z.B. für Chinesische InputMethodEditors).
- • rechter Mod3 geht noch nicht bei US-Layout (weder ScanCode noch "\").
+ jetzt wird auch bei eingestelltem US Layout Neo verwendet (z.B. fr Chinesische InputMethodEditors).
+ rechter Mod3 geht noch nicht bei US-Layout (weder ScanCode noch "\").
Revision 567 (von Dennis Heidsiek):
-- Aktivierter Mod4-Lock wird jetzt über die Rollen-LED des Keybord angezeigt (analog zu CapsLock), die Num-LED behält ihr bisheriges Verhalten.
+- Aktivierter Mod4-Lock wird jetzt ber die Rollen-LED des Keybord angezeigt (analog zu CapsLock), die Num-LED behlt ihr bisheriges Verhalten.
- Neue Option im Skript: UseMod4Light.
Revision 561 (von Matthias Berg):
-- M4+Tab verhält sich jetzt wie das andere Tab dank "goto neo_tab".
+- M4+Tab verhlt sich jetzt wie das andere Tab dank "goto neo_tab".
Revision 560 (von Dennis Heidsiek):
- Neue Option im Skript: bildschirmTastaturEinbinden bindet die PNG-Bilder der Bildschirmtastur mit in die exe-Datei ein, so dass sich der Benutzer nur eine Datei herunterladen muss.
Revision 559 (von Matthias Berg):
-- Shift+Alt+Tab Problem gelöst (muss noch mehr auf Nebeneffekte getestet werden).
+- Shift+Alt+Tab Problem gelst (muss noch mehr auf Nebeneffekte getestet werden).
Revision 558 (von Matthias Berg):
- Icon-Bug behoben
- • Hotkeys dürfen nicht vor der folgenden Zeile stehen: "menu, tray, icon, neo.ico,,1"
+ Hotkeys drfen 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 (Verständlichkeit, mögliche Compilerprobleme vermeiden).
+- Ein paar leere Else-Flle eingebaut (Verstndlichkeit, mgliche Compilerprobleme vermeiden).
Revision 556 (von Matthias Berg):
- lernModus (an/aus mit Strg+Komma)
- • im Skript konfigurierbar.
- • Schaltet z.B. Qwertz Tasten aus, die es auf der 4. Ebene gibt (Return, Backspace,...).
- • Kann auch Backspace und/oder Entfernen der 4. Ebene ausschalten (gut zum Lernen, richtig zu schreiben).
+ im Skript konfigurierbar.
+ Schaltet z.B. Qwertz Tasten aus, die es auf der 4. Ebene gibt (Return, Backspace,...).
+ Kann auch Backspace und/oder Entfernen der 4. Ebene ausschalten (gut zum Lernen, richtig zu schreiben).
- Bug aufgetaucht: Icons werden nicht mehr angezeigt.
Revision 544 (von Stefan Mayer):
- ,.:; auf dem Mod4-Ziffernblock an die aktuelle Referenz angepasst.
@@ -125,29 +129,29 @@ Revision 544 (von Stefan Mayer):
Revision 542 (von Matthias Berg):
- Bei EinHandNeo ist jetzt Space+y auch Mod4.
- AltGr-Bug hoffentlich wieder behoben. Diesmal mit extra altGrPressed Variable.
-- nurEbenenFuenfUndSechs umbenannt in ahkTreiberKombi und auf Ebene 4 statt 5 und 6 geändert.
+- nurEbenenFuenfUndSechs umbenannt in ahkTreiberKombi und auf Ebene 4 statt 5 und 6 gendert.
Revision 540 (von Matthias Berg):
-- Stark überarbeitet um Wartbarkeit zu erhöhen und Redundanz zu verringern.
+- Stark berarbeitet um Wartbarkeit zu erhhen und Redundanz zu verringern.
- nurEbenenFuenfUndSechs sollte nun auch auf Neo Treiber statt Qwertz laufen.
- • aber es muss noch jemand testen.
- • Problem: was kann man abfangen, wenn eine tote Taste gedrückt wird.
+ aber es muss noch jemand testen.
+ Problem: was kann man abfangen, wenn eine tote Taste gedrckt wird.
- einHandNeo:
- • An-/Ausschalten mit Strg+Punkt.
- • Buchstaben der rechten Hand werden mit Space zur linken Hand.
- • Nebeneffekt: es gibt beim Festhalten von Space keine wiederholten Leerzeichen mehr.
+ An-/Ausschalten mit Strg+Punkt.
+ Buchstaben der rechten Hand werden mit Space zur linken Hand.
+ Nebeneffekt: es gibt beim Festhalten von Space keine wiederholten Leerzeichen mehr.
Revision 532 (von Matthias Berg):
- BildschirmTastatur
- • aktiviert mit Strg+F1 bis 7, schaltet Keyboard ein oder aus.
- • Strg+F7 zeigt die zuletzt angezeigte Ebene an (und wieder aus).
- • Strg+F8 schaltet AlwaysOnTop um.
+ aktiviert mit Strg+F1 bis 7, schaltet Keyboard ein oder aus.
+ Strg+F7 zeigt die zuletzt angezeigte Ebene an (und wieder aus).
+ Strg+F8 schaltet AlwaysOnTop um.
Revision 529 (von Stefan Mayer):
- Icon wird automatisch geladen, falls .ico-Dateien im selbem Ordner.
- In der .exe sind die .ico mitgespeichert und werden geladen.
Revision 528 (von Matthias Berg):
- Neo-Icon.
-- Neo-Prozess jetzt automatisch auf hoher Priorität (siehe globale Schalter).
-- Mod3-Lock (nur wenn rechtes Mod3 zuerst gedrückt wird, andere Lösung führte zum Caps-Bug).
-- Mod4-Lock (nur wenn das linke Mod4 zuerst gedrückt wird, andere Lösung führte zum AltGr-Bug).
+- Neo-Prozess jetzt automatisch auf hoher Prioritt (siehe globale Schalter).
+- Mod3-Lock (nur wenn rechtes Mod3 zuerst gedrckt wird, andere Lsung fhrte zum Caps-Bug).
+- Mod4-Lock (nur wenn das linke Mod4 zuerst gedrckt wird, andere Lsung fhrte zum AltGr-Bug).
- Ein paar falsche Zeichen korrigiert.
Revision 527 (von Matthias Berg):
- AltGr-Problem hoffentlich behoben.
@@ -156,27 +160,27 @@ Revision 526 (von Matthias Berg):
- Ebenen 1 bis 4 ausschalten per Umschalter siehe erste Codezeile nurEbenenFuenfUndSechs = 0.
- Mod4-Lock durch Mod4+Mod4.
- EbenenAktualisierung neu geschrieben.
-- Ebene 6 über Mod3+Mod4.
-- Ebenen (besonders Matheebene) an Referenz angepasst (allerdings kaum um Ebenen 1&2 gekümmert, besonders Compose könnte noch überholt werden).
+- Ebene 6 ber Mod3+Mod4.
+- Ebenen (besonders Matheebene) an Referenz angepasst (allerdings kaum um Ebenen 1&2 gekmmert, besonders Compose knnte noch berholt werden).
Revision 525 (von Matthias Berg):
-- Capslock bei Zahlen und Sonderzeichen berücksichtigt.
+- Capslock bei Zahlen und Sonderzeichen bercksichtigt.
Revision 524 (von Matthias Berg):
-- umgekehrtes ^ für o, a, ü,i sowie für die grossen vokale ( 3. ton chinesisch).
- • damit wird jetzt PinYin vollständig unterstützt caron, macron, akut, grave auf uiaeoü.
+- umgekehrtes ^ fr o, a, ,i sowie fr die grossen vokale ( 3. ton chinesisch).
+ damit wird jetzt PinYin vollstndig untersttzt caron, macron, akut, grave auf uiaeo.
- Sonderzeichen senden wieder blind -> Shortcuts funktionieren, Capslock ist leider Shiftlock.
Revision 523 (von Matthias Berg):
- CapsLock geht jetzt auch bei allen Zeichen ('send Zeichen' statt 'send {blind} Zeichen').
- vertikale Ellipse eingebaut.
-- Umschalt+Umschalt für Capslock statt Mod3+Mod3.
+- Umschalt+Umschalt fr Capslock statt Mod3+Mod3.
- bei Suspend wird jetzt wirklich togglesuspend aufgerufen (auch beim Aktivieren per shift+pause).
Revsion 490 (von Stefan Mayer):
- SUBSCRIPT von 0 bis 9 sowie (auf Ziffernblock) + und -
- • auch bei Ziffernblock auf der 5. Ebene
-- Kein Parsen über die Zwischenablage mehr.
+ auch bei Ziffernblock auf der 5. Ebene
+- Kein Parsen ber die Zwischenablage mehr.
- Vista-kompatibel.
- Compose-Taste
- • Brüche (auf Zahlenreihe und Hardware-Ziffernblock).
- • römische Zahlen.
- • Ligaturen und Copyright.
+ Brche (auf Zahlenreihe und Hardware-Ziffernblock).
+ rmische Zahlen.
+ Ligaturen und Copyright.
diff --git a/windows/autohotkey/README.txt b/windows/autohotkey/README.txt
index c5485e4..4fde036 100644
--- a/windows/autohotkey/README.txt
+++ b/windows/autohotkey/README.txt
@@ -1,67 +1,91 @@
-== Neo 2.0 Autohotkey-Treiber für Windows ==
+== Neo 2.0 Autohotkey-Treiber fr Windows ==
-== Hinweise für Nutzer ==
+== Hinweise fr Nutzer ==
=== Direkte Installation ===
-Einfach die Datei neo20.exe herunterladen und irgendwo speichern (bspw. auf dem Desktop oder in dem Order »Eigenen Dateien«). Nach einem einfachen Doppelklick auf diese .exe-Datei steht Neo in voller Funktionalität zur Verfügung! Das alles geht ohne Administrator-Rechte und ist auf jedem Rechner sofort ausführbar.
+Einfach die Datei neo20.exe herunterladen und irgendwo speichern (bspw. auf dem Desktop oder in dem Order Eigenen Dateien). Nach einem einfachen Doppelklick auf diese .exe-Datei steht Neo in voller Funktionalitt zur Verfgung! Das alles geht ohne Administrator-Rechte und ist auf jedem Rechner sofort ausfhrbar.
-=== Rückkehr zum normalen Tastaturlayout ===
-Um kurzzeitig zwischen QWERTZ und Neo hin- und herzuwechseln, kann mit der Tastenkombination Shift+Pause das Skript pausiert bzw. wieder gestartet werden. Gleiches erreicht man auch über einen Doppelklick auf das rote/weiße Neo-Icon im Traybereich (bei der Uhr).
+=== Rckkehr zum normalen Tastaturlayout ===
+Um kurzzeitig zwischen QWERTZ und Neo hin- und herzuwechseln, kann mit der Tastenkombination Shift+Pause das Skript pausiert bzw. wieder gestartet werden. Gleiches erreicht man auch ber einen Doppelklick auf das rote/weie Neo-Icon im Traybereich (bei der Uhr).
-=== Bildschirmtastatur oder: Wo ist bloß XYZ abgeblieben? ===
-Mit den Tastenkominationen Mod4+F1 bis Mod4+F8 (Mod4 ist beim normalen Tastaturlayout AltGr oder die "<" Taste rechts neben der linken Großschreibetaste) erhält man eine graphische Zusammenfassung der Neo-Tastatur. Sie erleichert das Finden eines noch nicht so vertrauten Zeichens und hilft zudem beim Erlernen des Blindschreibens, da der Blick auf den Bildschirm und nicht auf die Tastatur gerichtet ist.
+=== Bildschirmtastatur oder: Wo ist blo XYZ abgeblieben? ===
+Mit den Tastenkominationen Mod4+F1 bis Mod4+F8 (Mod4 ist beim normalen Tastaturlayout AltGr oder die "<" Taste rechts neben der linken Groschreibetaste) erhlt man eine graphische Zusammenfassung der Neo-Tastatur. Sie erleichert das Finden eines noch nicht so vertrauten Zeichens und hilft zudem beim Erlernen des Blindschreibens, da der Blick auf den Bildschirm und nicht auf die Tastatur gerichtet ist.
+
+=== Globale Schalter und die Neo2.ini ===
+Es besteht die Mglichkeit, beim Starten des AHK-Treibers individuelle Anfangswerte fr die globalen Schalter des Programms vorzugeben.
+
+Dies geschieht ber die Konfigurationsdatei Neo2.ini (diese muss im gebruchlichen INI-Format vorliegen, also insbesondere ANSI-kodiert sein).
+Eine Neo2.ini, die alle Werte auf die Standardwerte ndert, she etwa so aus:
+[Global]
+# Im folgenden gilt (soweit nicht anders angegeben) Ja = 1, Nein = 0:
+
+ahkTreiberKombi=0
+einHandNeo=0
+lernModus=0
+zeigeLockBox=1
+UseMod4Light=1
+LangSTastatur=0
+DeadSilence=0
+DeadCompose=0
+
+Diese Datei muss manuell (etwa mit Notepad) in dem richtigen Verzeichnis innerhalb der Anwendungsdaten des aktuellen Nutzers angelegt werden. Unter Windows Vista ist dies etwa das Verzeichnis
+C:\Users\<BENUTZERNAME>\AppData\Roaming\Neo2\Neo2.ini
+unter Windows XP hingegen das Verzeichnis
+C:\Dokumente und Einstellungen\<BENUTZERNAME>\Anwendungsdaten\Neo2\Neo2.ini
+usw.
=== Automatischer Start ===
-Bei Bedarf kann man sich eine Verknüpfung mit neo20.exe in den Autostart-Ordner im Startmenü legen, dann hat man die Belegung direkt nach der Anmeldung. In diesem Fall sollte man jedoch auch einen Umstieg auf den nativen kbdNeo2-Treiber erwägen.
+Bei Bedarf kann man sich eine Verknpfung mit neo20.exe in den Autostart-Ordner im Startmen legen, dann hat man die Belegung direkt nach der Anmeldung. In diesem Fall sollte man jedoch auch einen Umstieg auf den nativen kbdNeo2-Treiber erwgen (der jedoch noch nicht vollstndig umgesetzt ist).
-=== Temporäre Dateien und gründliche Deinstallation ===
-Die .exe-Datei entpackt beim Ausführen Bilder für die Tray-Icons und die Bildschirmtastatur in einen Neo2-Unterordner des temporären Windows(Umgebungsvariablen-)Ordners (unter Windows XP ist dies etwa C:\Dokumente und Einstellungen\Mario Mustermann\Lokale Einstellungen\Temp\Neo2). Diese Dateien bitte während der Dateiausführung nicht verschieben oder löschen, ansonsten können Laufzeitfehler auftreten.
+=== Temporre Dateien und grndliche Deinstallation ===
+Die .exe-Datei entpackt beim Ausfhren Bilder fr die Tray-Icons und die Bildschirmtastatur in einen Neo2-Unterordner des temporren Windows(Umgebungsvariablen-)Ordners (unter Windows XP ist dies etwa C:\Dokumente und Einstellungen\Mario Mustermann\Lokale Einstellungen\Temp\Neo2). Diese Dateien bitte whrend der Dateiausfhrung nicht verschieben oder lschen, ansonsten knnen Laufzeitfehler auftreten.
+
+=== Lang-S-Tastatur ===
+Um den korrekten Satz des langen S (?) zu erleichtern, wurde der Lang-S-Modus geschaffen. Er ist ber die Tastenkombination Mod4+F11 ein- und ausschaltbar. Er vertauscht zyklisch s ? ? ? ? s.
=== FAQ ===
-Bei vielen Problemen hilt es weiter, zunächst in die allgemeine Neo-FAQ zu schauen; viele bekannte Probleme und Fragen sind dort mit entsprechendene Lösungshinweisen dokumentiert.
+Bei vielen Problemen hilt es weiter, zunchst in die allgemeine Neo-FAQ zu schauen; viele bekannte Probleme und Fragen sind dort mit entsprechendenen Lsungshinweisen dokumentiert.
-=== Hinweis zur Aktualität ===
-Achtung: Da sich Neo in aktiver Weiterentwicklung befindet, kann es vorkommen, dass die Bildschirmtastatur oder die neo20.exe mit der aktuellen Referenz (noch) nicht übereinstimmt. Scheuen Sie sich nicht, uns über die Homepage des Neo-Layouts (http://neo-layout.org) Verbesserungsvorschläge zukommen zu lassen!
+=== Hinweis zur Aktualitt ===
+Achtung: Da sich Neo in aktiver Weiterentwicklung befindet, kann es vorkommen, dass die Bildschirmtastatur oder die neo20.exe mit der aktuellen Referenz (noch) nicht bereinstimmt. Scheuen Sie sich nicht, uns ber die Homepage des Neo-Layouts (http://neo-layout.org) Verbesserungsvorschlge zukommen zu lassen!
=== Was noch nicht funktioniert ===
Derzeit sind erst einige wenige Compose-Funktionen im Treiber implementiert. Genauere Informationen befinden sich in der Datei Changelog-and-Todo.txt.
-== Hinweise für Entwickler ==
+== Hinweise fr Entwickler ==
-=== Autohotkey herunter laden ===
-Man sollte als erstes das Programm namens »Autohotkey« (http://www.autohotkey.com/download/AutohotkeyInstall.exe) herunterlanden. Es wird empfohlen, dieses Programm möglichst in dem vorgeschlagenen Standardverzeichnis zu installieren.
-Wenn man jedoch über KEINE Administratorrechte verfügt, kann man das Programm beispielsweise auch in das Verzeichnis »Eigene Dateien/Neo« (oder in ein anderes Verzeichnis, für das man Schreibrechte hat) installieren.
-In diesem Fall muss dann für eine Kompilierung des Skriptes noch die Datei Build-Update.bat lokal entsprechend angepasst werden (diese lokale Änderung der Build-Update.bat aber bitte nicht einchecken, da die allermeisten Entwickler Autohotkey im vorgeschlagenen Standardverzeichnis installiert haben!).
+=== AutoHotkey herunter laden ===
+Man sollte als erstes das Programm namens AutoHotkey (http://www.autohotkey.com/download/AutoHotkeyInstall.exe) herunterlanden. Es wird empfohlen, dieses Programm mglichst in dem vorgeschlagenen Standardverzeichnis zu installieren.
+Wenn man jedoch ber KEINE Administratorrechte verfgt, kann man das Programm beispielsweise auch in das Verzeichnis Eigene Dateien/Neo (oder in ein anderes Verzeichnis, fr das man Schreibrechte hat) installieren.
+In diesem Fall muss dann fr eine Kompilierung des Skriptes noch die Datei Build-Update.bat lokal entsprechend angepasst werden (diese lokale nderung der Build-Update.bat aber bitte nicht einchecken, da die allermeisten Entwickler Autohotkey im vorgeschlagenen Standardverzeichnis installiert haben!).
-=== Die ausführbare Datei aktualisieren ===
+=== Die ausfhrbare Datei aktualisieren ===
Um die neo20.exe auf den neuesten Stand zu bringen, reicht (wenn Autohotkey im Standardverzeichnis installiert wurde) ein Doppelklick auf die Batch-Datei Build-Update.bat
-Es ist empfehlenswert, diese Batch-Datei stets vor einem Commit auszuführen, damit die .exe-Datei immer auf dem aktuellsten Stand ist.
+Es ist empfehlenswert, diese Batch-Datei stets vor einem Commit auszufhren, damit die .exe-Datei immer auf dem aktuellsten Stand ist.
=== Den Sourcecode bearbeiten ===
-Die Datei neo20.ahk sollte auf keinen Fall mehr direkt bearbeitet werden, da sie inzwischen automatisch generiert und regelmäßig überschrieben wird.
+Die Datei neo20.ahk sollte auf keinen Fall mehr direkt bearbeitet werden, da sie inzwischen automatisch generiert und regelmig berschrieben wird.
-Stattdessen müssen die Dateien/Module im Source-Unterverzeichnis bearbeitet werden, etwa:
+Stattdessen mssen die Dateien/Module im Source-Unterverzeichnis bearbeitet werden, etwa:
Source\Keys-Neo.ahk
Source\Keys-Qwert-to-Neo.ahk
Source\Methods-Layers.ahk
Source\Methods-Lights.ahk
-Um die gemachten Änderungen zu testen, sollte die Datei
-Source\All.ahk
-verwendet werden, die alle Module einbindet und regulär durch einen Doppelklick mit dem AHK-Interpreter gestartet werden kann.
+Um die gemachten nderungen zu testen, sollte die Datei Source\All.ahk verwendet werden, die alle Module einbindet und regulr durch einen Doppelklick mit dem AHK-Interpreter gestartet werden kann.
-Der große Vorteil dieser Methode liegt darin, dass sich die Zeilennummern eventueller Fehlermeldungen nicht mehr auf die große »vereinigte« AHK-Datei, sondern auf die tatsächlich relevanten Module beziehen, z.B. :
+Der groe Vorteil dieser Methode liegt darin, dass sich die Zeilennummern eventueller Fehlermeldungen nicht mehr auf die groe vereinigte AHK-Datei, sondern auf die tatschlich relevanten Module beziehen, z.B.:
Error at line 64 in #include file "C:\...\autohotkey\Source\Methods-Lights.ahk"
Line Text: CTL_CODE_LED(p_device_type, p_function, p_method, p_access)
Error: Functions cannot contain functions.
The programm will exit.
-Zudem ist angedacht, den AHK-Treiber in voneinander möglichst unabhängige Teile aufzusplitten, um so die Übersichtlichkeit zu erhöhen und die Komplexität des Codes zu verringern.
+Zudem ist angedacht, den AHK-Treiber in voneinander mglichst unabhngige Teile aufzusplitten, um so die bersichtlichkeit zu erhhen und die Komplexitt des Codes zu verringern.
=== Links zur AHK/Autohotkey-Skriptsprache ===
-Eine kurze Einführung (Installation und Beispielscipt) findet man etwa auf
+Eine kurze Einfhrung (Installation und Beispielskript) findet man etwa auf
http://www.kikizas.net/en/usbapps.ahk.html
Eine alphabetische Liste aller erlaubten Kommandos findet man online unter
@@ -70,55 +94,6 @@ http://www.autohotkey.com/docs/commands.htm
=== Wie es funktioniert ===
Das Programm kann alle Tastendrucke abfangen und stattdessen andere Tasten simulieren. Die Zeile
a::send b
-fängt z. B. die Taste »a« ab und sendet stattdessen ein »b«. Die AHK-Dateien lassen sich mit einem Texteditor bearbeiten, man muss dann nur das Skript neu starten, um die Änderungen zu übernehmen.
-
-==== Bekannte Fehler ====
-Bisher reagieren nur die Buchstaben der 1. und 2. Ebene richtig auf CapsLock (also immer groß schreiben – CapsLock erreicht man unter Neo, wenn man beide Shift-Tasten gleichzeitig drückt).
-
-== Ziffernblock ==
-Der Ziffernblock reagiert nicht auf Tastenkombinationen mit Strg, Alt usw.
-
-Der Ziffernblock auf der 2. Ebene ist wahlweise
-- bei AUSgeschaltetem Numlock
-- bei EINgeschaltetem Numlock mit Shift
-zu erreichen.
-Der Ziffernblock auf der 3. Ebene funktioniert bei EINgeschaltetem Numlock mit Mod3 (Caps/#).
-Der Ziffernblock auf der 4. Ebene ist wahlweise
-- bei AUSgeschaltetem Numlock mit Mod3 + Shift
-- bei EINgeschaltetem Numlock über Mod4
-zu erreichen.
-Da die 2. Ebene über Shift ebenfalls bei EINgeschaltetem Numlock funktioniert, ist das Ausschalten des Ziffernblocks nicht unbedingt nötig.
-
-==== Besonderheiten bei der AHK-Windowsversion von Neo ====
-Ebene 5 des Ziffernblocks lässt sich außer über Mod3+Shift auch über
-Mod4 ansprechen.
-
-==== Warnung ====
-ACHTUNG! Unter Windows ist folgendes festgelegt:
-AltGr + Pos1 = Abmelden
-AltGr + Ende = Computer ausschalten
---> diese Kombinationen treten auf bei AUSgeschaltetem Numlock mit Mod4.
-
-=== Globale Schalter und die Neo2.ini ===
-Es besteht die Möglichkeit, beim Starten des AHK-Treibers individuelle Anfangswerte für die globalen Schalter des Programms vorzugeben.
-
-Dies geschieht über die Konfigurationsdatei Neo2.ini (diese muss im gebräuchlichen INI-Format vorliegen, also insbesondere ANSI-kodiert sein).
-Eine Neo2.ini, die alle Werte auf die Standardwerte »ändert«, sähe etwa so aus:
-[Global]
-# Im folgenden gilt (soweit nicht anders angegeben) Ja = 1, Nein = 0:
-ahkTreiberKombi=0
-einHandNeo=0
-lernModus=0
-zeigeLockBoxen=1
-UseMod4Light=1
-LangSTastatur=0
-DeadSilence=0
-DeadCompose=0
-
-Diese Datei muss manuell (etwa mit dem Notepad) in dem richtigen Verzeichnis innerhalb der Anwendungsdaten des aktuellen Nutzers angelegt werden. Unter Windows Vista ist dies etwa das Verzeichnis
-C:\Users\<BENUTZERNAME>\AppData\Roaming\Neo2\Neo2.ini
-unter Windows XP hingegen das Verzeichnis
-C:\Dokumente und Einstellungen\<BENUTZERNAME>\Anwendungsdaten\Neo2\Neo2.ini
-usw.
+fngt z.?B. die Taste a ab und sendet stattdessen ein b. Die AHK-Dateien lassen sich mit einem Texteditor bearbeiten, man muss dann nur das Skript neu starten, um die nderungen zu bernehmen.
-=== ... === \ No newline at end of file
+=== ... ===
diff --git a/windows/autohotkey/Source/All.ahk b/windows/autohotkey/Source/All.ahk
index a207bca..1b899b7 100644
--- a/windows/autohotkey/Source/All.ahk
+++ b/windows/autohotkey/Source/All.ahk
@@ -1,9 +1,11 @@
/*
------------------------------------------------------
- Liste der Module
-
+ All.ahk:
+ Diese Datei ist fr Entwickler zum schnellen Testen von nderungen vorgesehen. Bei Syntaxfehlern bietet sie zudem den Vorteil, dass die Zeilennummern relativ zu den einzelnen Modulen angezeigt werden.
+
Die Reihenfolge der Includes *ist* relevant!
-
+ Denn: Vor dem Men in der Global-Part.ahk drfen keine Tastenkombinationen definiert werden. Ansonsten knnen Sie die Dateien hier beliebig anordnen. :-)
+
Siehe auch:
http://www.autohotkey.com/docs/commands/_Include.htm
diff --git a/windows/autohotkey/Source/Global-Part.ahk b/windows/autohotkey/Source/Global-Part.ahk
index 105ad64..a0257d1 100644
--- a/windows/autohotkey/Source/Global-Part.ahk
+++ b/windows/autohotkey/Source/Global-Part.ahk
@@ -1,4 +1,4 @@
-
+SetNumLockState AlwaysOff
/****************
* Verzeichnisse *
@@ -36,8 +36,8 @@ IniRead, einHandNeo, %ApplicationFolder%\NEO2.ini, Global, einHandNeo, 0
; Soll der Lernmodus aktiviert werden?
IniRead, lernModus, %ApplicationFolder%\NEO2.ini, Global, lernModus, 0
-; Soll mit MessageBoxen explizit auf das Ein- und Ausschalten des Mod{3,4}-Locks hingewiesen werden?
-IniRead, zeigeLockBoxen, %ApplicationFolder%\NEO2.ini, Global, zeigeLockBoxen, 1
+; Soll mit einer MsgBox explizit auf das Ein- und Ausschalten des Mod4-Locks hingewiesen werden?
+IniRead, zeigeLockBox, %ApplicationFolder%\NEO2.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
@@ -260,3 +260,99 @@ return
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 ntig.
+ `nWenn Autohotkey aktiviert ist, werden alle Tastendrucke
+ abgefangen und statt dessen eine bersetzung weitergeschickt.
+ `nDies geschieht transparent fr den Anwender,
+ es muss nichts installiert werden.
+ `nDie Zeichenbersetzung 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
+
+
+ \ No newline at end of file
diff --git a/windows/autohotkey/Source/Keys-Neo.ahk b/windows/autohotkey/Source/Keys-Neo.ahk
index 15a8be1..2c1fd53 100644
--- a/windows/autohotkey/Source/Keys-Neo.ahk
+++ b/windows/autohotkey/Source/Keys-Neo.ahk
@@ -2,13 +2,13 @@
Die eigentliche NEO-Belegung und der Hauptteil des AHK-Treibers.
Ablauf bei toten Tasten:
- 1. Ebene Aktualisieren
- 2. Abhngig von der Variablen "Ebene" Zeichen ausgeben und die Variable "PriorDeadKey" setzen
+ 1. Ebene Aktualisieren.
+ 2. Abhngig von der Variablen "Ebene" Zeichen ausgeben und die Variable "PriorDeadKey" setzen.
Ablauf bei "untoten" Tasten:
- 1. Ebene Aktualisieren
- 2. Abhngig von den Variablen "Ebene" und "PriorDeadKey" Zeichen ausgeben
- 3. "PriorDeadKey" mit leerem String berschreiben
+ 1. Ebene Aktualisieren.
+ 2. Abhngig von den Variablen "Ebene" und "PriorDeadKey" Zeichen ausgeben.
+ 3. "PriorDeadKey" mit leerem String berschreiben.
Reihe 1
*/
@@ -38,12 +38,12 @@ neo_tot1:
}
else if (Ebene = 5)
{
- deadAsc("-") ; Querstrich, tot
+ deadUni(0x002D) ; Querstrich, tot
DeadKey := "c5"
}
else if (Ebene = 6)
{
- deadAsc(".") ; Punkt drunter (Colon), tot
+ deadUni(0x002E) ; Punkt drunter (Colon), tot
DeadKey := "c6"
}
CompKey := PriorCompKey
@@ -72,9 +72,9 @@ neo_1:
else if (Ebene = 2)
send
else if (Ebene = 3)
- SendUnicodeChar(0x00B9) ; 2 Hochgestellte
+ SendUnicodeChar(0x00B9) ; Hochgestellte 2
else if (Ebene = 4)
- SendUnicodeChar(0x2022) ; bullet
+ SendUnicodeChar(0x2022) ; Bullet
else if (Ebene = 5)
SendUnicodeChar(0x2640) ; Piktogramm weiblich
else if (Ebene = 6)
@@ -100,11 +100,11 @@ neo_2:
CompKey := "2"
}
else if (Ebene = 2)
- SendUnicodeChar(0x2116) ; numero
+ SendUnicodeChar(0x2116) ; Numero
else if (Ebene = 3)
- SendUnicodeChar(0x00B2) ; 2 Hochgestellte
+ SendUnicodeChar(0x00B2) ; Hochgestellte 2
else if (Ebene = 4)
- SendUnicodeChar(0x2023) ; aufzaehlungspfeil
+ SendUnicodeChar(0x2023) ; Aufzhlungspfeil
else if (Ebene = 5)
SendUnicodeChar(0x26A5) ; Piktogramm Zwitter
else if (Ebene = 6)
@@ -132,7 +132,7 @@ neo_3:
else if (Ebene = 2)
send
else if (Ebene = 3)
- SendUnicodeChar(0x00B3) ; 3 Hochgestellte
+ SendUnicodeChar(0x00B3) ; Hochgestellte 3
else if (Ebene = 4)
{
CompKey := PriorCompKey
@@ -161,11 +161,11 @@ neo_4:
CompKey := "4"
}
else if (Ebene = 2)
- SendUnicodeChar(0x00BB) ; , Double guillemot right
+ SendUnicodeChar(0x00BB) ; Double guillemot right
else if (Ebene = 3)
Send {blind} ; Single guillemot right
else if (Ebene = 4)
- Send {blind}{PgUp} ; Prev
+ Send {blind}{PgUp}
else if (Ebene = 5)
SendUnicodeChar(0x2113) ; Script small L
else if (Ebene = 6)
@@ -295,7 +295,7 @@ neo_8:
else if (Ebene = 4)
Send {blind}{NumpadDiv}
else if (Ebene = 5)
- SendUnicodeChar(0x27E8) ;bra (ffnende spitze klammer)
+ SendUnicodeChar(0x27E8) ; bra (ffnende spitze Klammer)
else if (Ebene = 6)
SendUnicodeChar(0x2204) ; es existiert nicht
return
@@ -323,7 +323,7 @@ neo_9:
else if (Ebene = 4)
Send {blind}{NumpadMult}
else if (Ebene = 5)
- SendUnicodeChar(0x27E9) ;ket (schlieende spitze klammer)
+ SendUnicodeChar(0x27E9) ; ket (schlieende spitze Klammer)
else if (Ebene = 6)
SendUnicodeChar(0x2226) ; nicht parallel
return
@@ -370,11 +370,11 @@ neo_strich:
SendUnicodeChar(0x2013) ; Gedankenstrich
else if (Ebene = 3)
SendUnicodeChar(0x2014) ; Englischer Gedankenstrich (Geviertstrich)
- else if (Ebene = 4)
+ else if (Ebene = 4) ; leer
{
CompKey := PriorCompKey
DeadKey := PriorDeadKey
- } ; leer
+ }
else if (Ebene = 5)
SendUnicodeChar(0x2011) ; geschtzter Bindestrich (Bindestrich ohne Zeilenumbruch)
else if (Ebene = 6)
@@ -447,11 +447,11 @@ neo_v:
else if (Ebene = 4)
if (not(lernModus) or lernModus_neo_Backspace)
Send {blind}{Backspace}
- else
+ else ; leer
{
CompKey := PriorCompKey
DeadKey := PriorDeadKey
- } ; leer
+ }
else if (Ebene = 6)
SendUnicodeChar(0x2259) ; estimates
return
@@ -461,11 +461,11 @@ return
neo_l:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x013A,0x0139)
- or CheckDeadUni12("a3",0x013C,0x013B)
- or CheckDeadUni12("c2",0x013E,0x013D)
- or CheckDeadUni12("c4",0x0140,0x013F)
- or CheckDeadUni12("c6",0x1E37,0x1E36)
- or CheckDeadUni12("t4",0x0142,0x0141)))
+ or CheckDeadUni12("a3",0x013C,0x013B)
+ or CheckDeadUni12("c2",0x013E,0x013D)
+ or CheckDeadUni12("c4",0x0140,0x013F)
+ or CheckDeadUni12("c6",0x1E37,0x1E36)
+ or CheckDeadUni12("t4",0x0142,0x0141)))
OutputChar("l","L")
else if (Ebene = 3)
send {blind}[
@@ -481,27 +481,26 @@ return
neo_c:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x0107,0x0106)
- or CheckDeadUni12("a3",0x00E7,0x00E6)
- or CheckDeadUni12("a4",0x010B,0x010A)
- or CheckDeadUni12("c1",0x0109,0x0108)
- or CheckDeadUni12("c2",0x010D,0x010C)
- or CheckCompAsc12("o","","")
- or CheckCompAsc12("O","","")))
+ or CheckDeadUni12("a3",0x00E7,0x00E6)
+ or CheckDeadUni12("a4",0x010B,0x010A)
+ or CheckDeadUni12("c1",0x0109,0x0108)
+ or CheckDeadUni12("c2",0x010D,0x010C)
+ or CheckCompAsc("o","")))
OutputChar("c","C")
else if (Ebene = 3)
send {blind}]
else if (Ebene = 4)
if (not(lernModus) or lernModus_neo_Entf)
Send {blind}{Del}
- else
+ else ; leer
{
CompKey := PriorCompKey
DeadKey := PriorDeadKey
- } ; leer
+ }
else if (Ebene = 5)
- SendUnicodeChar(0x03C7) ;chi
+ SendUnicodeChar(0x03C7) ; chi
else if (Ebene = 6)
- SendUnicodeChar(0x2102) ; C (Komplexe Zahlen)
+ SendUnicodeChar(0x2102) ; C (Komplexe Zahlen)
return
neo_w:
@@ -509,10 +508,9 @@ neo_w:
if (Ebene12 and !(CheckDeadUni12("c1",0x0175,0x0174)))
OutputChar("w","W")
else if (Ebene = 3)
- SendUnicodeChar(0x005E) ; untotes ^ - Unicode-Name: CIRCUMFLEX ACCENT
- ;send {^}{space} ; Funktioniert nicht unter Java-Programmen
+ SendUnicodeChar(0x005E) ; Zirkumflex
else if (Ebene = 4)
- Send {blind}{Insert}
+ Send {blind}{Insert} ; Einfg
else if (Ebene = 5)
SendUnicodeChar(0x03C9) ; omega
else if (Ebene = 6)
@@ -522,7 +520,7 @@ return
neo_k:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a3",0x0137,0x0136)
- or CheckDeadUni12("c6",0x1E33,0x1E32)))
+ or CheckDeadUni12("c6",0x1E33,0x1E32)))
OutputChar("k","K")
else if (Ebene = 3)
send {blind}{!}
@@ -537,9 +535,9 @@ return
neo_h:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a4",0x1E23,0x1E22)
- or CheckDeadUni12("c1",0x0125,0x0124)
- or CheckDeadUni12("c5",0x0127,0x0126)
- or CheckDeadUni12("c6",0x1E25,0x1E24)))
+ or CheckDeadUni12("c1",0x0125,0x0124)
+ or CheckDeadUni12("c5",0x0127,0x0126)
+ or CheckDeadUni12("c6",0x1E25,0x1E24)))
OutputChar("h","H")
else if ((Ebene = 3) and !(CheckDeadUni("c5",0x2264))) ; kleiner gleich
send {blind}<
@@ -547,27 +545,27 @@ neo_h:
or CheckDeadUni("c5",0x2087)))
Send {blind}{NumPad7}
else if (Ebene = 5)
- SendUnicodeChar(0x03C8) ;psi
+ SendUnicodeChar(0x03C8) ; psi
else if (Ebene = 6)
- SendUnicodeChar(0x03A8) ; Psi
+ SendUnicodeChar(0x03A8) ; Psi
return
neo_g:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a3",0x0123,0x0122)
- or CheckDeadUni12("a4",0x0121,0x0120)
- or CheckDeadUni12("c1",0x011D,0x011C)
- or CheckDeadUni12("c3",0x011F,0x011E)))
+ or CheckDeadUni12("a4",0x0121,0x0120)
+ or CheckDeadUni12("c1",0x011D,0x011C)
+ or CheckDeadUni12("c3",0x011F,0x011E)))
OutputChar("g","G")
- else if ((Ebene = 3) and !(CheckDeadUni("c5",0x2265))) ; grer gleich
- send {blind}>
+ else if ((Ebene = 3) and !(CheckDeadUni("c5",0x2265)))
+ send {blind}> ; grer gleich
else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2078)
- or CheckDeadUni("c5",0x2088)))
+ or CheckDeadUni("c5",0x2088)))
Send {blind}{NumPad8}
else if (Ebene = 5)
- SendUnicodeChar(0x03B3) ;gamma
+ SendUnicodeChar(0x03B3) ; gamma
else if (Ebene = 6)
- SendUnicodeChar(0x0393) ; Gamma
+ SendUnicodeChar(0x0393) ; Gamma
return
neo_f:
@@ -576,19 +574,19 @@ neo_f:
or CheckDeadUni12("t4",0x0192,0x0191)))
OutputChar("f","F")
else if ((Ebene = 3) and !(CheckDeadUni("a6",0x2257) ; ring equal to
- or CheckDeadUni("c1",0x2259) ; entspricht
- or CheckDeadUni("c2",0x225A) ; EQUIANGULAR TO
- or CheckDeadUni("c5",0x2261) ; identisch
- or CheckDeadUni("t1",0x2245) ; ungefhr gleich
- or CheckDeadUni("t4",0x2260))) ; ungleich
+ or CheckDeadUni("c1",0x2259) ; entspricht
+ or CheckDeadUni("c2",0x225A) ; EQUIANGULAR TO
+ or CheckDeadUni("c5",0x2261) ; identisch
+ or CheckDeadUni("t1",0x2245) ; ungefhr gleich
+ or CheckDeadUni("t4",0x2260))) ; ungleich
send {blind}`=
else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2079)
- or CheckDeadUni("c5",0x2089)))
- Send {blind}{NumPad9}
+ or CheckDeadUni("c5",0x2089)))
+ send {blind}{NumPad9}
else if (Ebene = 5)
SendUnicodeChar(0x03C6) ; phi
else if (Ebene = 6)
- SendUnicodeChar(0x03A6) ; Phi
+ SendUnicodeChar(0x03A6) ; Phi
return
neo_q:
@@ -611,27 +609,27 @@ neo_sz:
if (Ebene = 1)
if (GetKeyState("CapsLock","T"))
SendUnicodeChar(0x1E9E) ; versal-
- else if (LangSTastatur = 1)
+ else if LangSTastatur
send {blind}s
else
send
else if (Ebene = 2)
if (GetKeyState("CapsLock","T"))
- if (LangSTastatur = 1)
+ if LangSTastatur
send {blind}s
else
send
else
SendUnicodeChar(0x1E9E) ; versal-
else if (Ebene = 3)
- if (LangSTastatur = 1)
+ if LangSTastatur
send
else
SendUnicodeChar(0x017F) ; langes s
else if (Ebene = 5)
- SendUnicodeChar(0x03C2) ; varsigma
+ SendUnicodeChar(0x03C2) ; varsigma
else if (Ebene = 6)
- SendUnicodeChar(0x2218) ; Verknpfungsoperator
+ SendUnicodeChar(0x2218) ; Verknpfungsoperator
return
@@ -639,7 +637,7 @@ neo_tot3:
EbeneAktualisieren()
if (Ebene = 1)
{
- deadUni(0x02DC) ;Tilde, tot
+ deadUni(0x02DC) ; Tilde, tot
DeadKey := "t1"
}
else if (Ebene = 2)
@@ -659,7 +657,7 @@ neo_tot3:
}
else if (Ebene = 5)
{
- deadUni(0x02DD) ;Doppelakut
+ deadUni(0x02DD) ; Doppelakut
DeadKey := "t5"
}
else if (Ebene = 6)
@@ -680,26 +678,26 @@ return
neo_u:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x00FA,0x00DA)
- or CheckDeadUni12("a2",0x00F9,0x00D9)
- or CheckDeadUni12("a5",0x0173,0x0172)
- or CheckDeadUni12("a6",0x016F,0x016E)
- or CheckDeadUni12("c1",0x00FB,0x00DB)
- or CheckDeadUni12("c2",0x01D4,0x01D3)
- or CheckDeadUni12("c3",0x016D,0x016C)
- or CheckDeadUni12("t1",0x0169,0x0168)
- or CheckDeadUni12("t2",0x016B,0x016A)
- or CheckDeadAsc12("t3","","")
- or CheckDeadUni12("t5",0x0171,0x0170)))
+ or CheckDeadUni12("a2",0x00F9,0x00D9)
+ or CheckDeadUni12("a5",0x0173,0x0172)
+ or CheckDeadUni12("a6",0x016F,0x016E)
+ or CheckDeadUni12("c1",0x00FB,0x00DB)
+ or CheckDeadUni12("c2",0x01D4,0x01D3)
+ or CheckDeadUni12("c3",0x016D,0x016C)
+ or CheckDeadUni12("t1",0x0169,0x0168)
+ or CheckDeadUni12("t2",0x016B,0x016A)
+ or CheckDeadAsc12("t3","","")
+ or CheckDeadUni12("t5",0x0171,0x0170)))
OutputChar("u","U")
else if (Ebene = 3)
send {blind}\
else if (Ebene = 4)
Send {blind}{Home}
- else if (Ebene = 5)
+ else if (Ebene = 5) ; leer
{
CompKey := PriorCompKey
DeadKey := PriorDeadKey
- } ; leer
+ }
else if (Ebene = 6)
SendUnicodeChar(0x222E) ; contour integral
return
@@ -707,21 +705,21 @@ return
neo_i:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x00ED,0x00CD)
- or CheckDeadUni12("a2",0x00EC,0x00CC)
- or CheckDeadUni12("a4",0x012F,0x012E)
- or CheckDeadUni12("a5",0x0131,0x0130)
- or CheckDeadUni12("c1",0x00EE,0x00CE)
- or CheckDeadUni12("c2",0x01D0,0x01CF)
- or CheckDeadUni12("c3",0x012D,0x012C)
- or CheckDeadUni12("t1",0x0129,0x0128)
- or CheckDeadUni12("t2",0x012B,0x012A)
- or CheckDeadAsc12("t3","","")))
+ or CheckDeadUni12("a2",0x00EC,0x00CC)
+ or CheckDeadUni12("a4",0x012F,0x012E)
+ or CheckDeadUni12("a5",0x0131,0x0130)
+ or CheckDeadUni12("c1",0x00EE,0x00CE)
+ or CheckDeadUni12("c2",0x01D0,0x01CF)
+ or CheckDeadUni12("c3",0x012D,0x012C)
+ or CheckDeadUni12("t1",0x0129,0x0128)
+ or CheckDeadUni12("t2",0x012B,0x012A)
+ or CheckDeadAsc12("t3","","")))
OutputChar("i","I")
else if (Ebene = 3)
send {blind}`/
else if (Ebene = 4)
Send {Blind}{Left}
- else if (Ebene = 5 )
+ else if (Ebene = 5)
SendUnicodeChar(0x03B9) ; iota
else if (Ebene = 6)
SendUnicodeChar(0x222B) ; integral
@@ -730,65 +728,65 @@ return
neo_a:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x00E1,0x00C1)
- or CheckDeadUni12("a2",0x00E0,0x00C0)
- or CheckDeadUni12("a5",0x0105,0x0104)
- or CheckDeadAsc12("a6","","")
- or CheckDeadUni12("c1",0x00E2,0x00C2)
- or CheckDeadUni12("c2",0x01CE,0x01CD)
- or CheckDeadUni12("c3",0x0103,0x0102)
- or CheckDeadUni12("t1",0x00E3,0x00C3)
- or CheckDeadUni12("t2",0x0101,0x0100)
- or CheckDeadAsc12("t3","","")))
+ or CheckDeadUni12("a2",0x00E0,0x00C0)
+ or CheckDeadUni12("a5",0x0105,0x0104)
+ or CheckDeadAsc12("a6","","")
+ or CheckDeadUni12("c1",0x00E2,0x00C2)
+ or CheckDeadUni12("c2",0x01CE,0x01CD)
+ or CheckDeadUni12("c3",0x0103,0x0102)
+ or CheckDeadUni12("t1",0x00E3,0x00C3)
+ or CheckDeadUni12("t2",0x0101,0x0100)
+ or CheckDeadAsc12("t3","","")))
OutputChar("a","A")
else if (Ebene = 3)
send {blind}{{}
else if (Ebene = 4)
Send {Blind}{Down}
else if (Ebene = 5)
- SendUnicodeChar(0x03B1) ;alpha
+ SendUnicodeChar(0x03B1) ; alpha
else if (Ebene = 6)
- SendUnicodeChar(0x2200) ;fr alle
+ SendUnicodeChar(0x2200) ; fr alle
return
neo_e:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x00E9,0x00C9)
- or CheckDeadUni12("a2",0x00E8,0x00C8)
- or CheckDeadUni12("a4",0x0117,0x0116)
- or CheckDeadUni12("a5",0x0119,0x0118)
- or CheckDeadUni12("c1",0x00EA,0x00CA)
- or CheckDeadUni12("c2",0x011B,0x011A)
- or CheckDeadUni12("c3",0x0115,0x0114)
- or CheckDeadUni12("t2",0x0113,0x0112)
- or CheckDeadAsc12("t3","","")
- or CheckCompAsc12("a","","")
- or CheckCompAsc12("A","","")
- or CheckCompAsc12("o","","")
- or CheckCompAsc12("O","","")))
+ or CheckDeadUni12("a2",0x00E8,0x00C8)
+ or CheckDeadUni12("a4",0x0117,0x0116)
+ or CheckDeadUni12("a5",0x0119,0x0118)
+ or CheckDeadUni12("c1",0x00EA,0x00CA)
+ or CheckDeadUni12("c2",0x011B,0x011A)
+ or CheckDeadUni12("c3",0x0115,0x0114)
+ or CheckDeadUni12("t2",0x0113,0x0112)
+ or CheckDeadAsc12("t3","","")
+ or CheckCompAsc12("a","","")
+ or CheckCompAsc12("A","","")
+ or CheckCompAsc12("o","","")
+ or CheckCompAsc12("O","","")))
OutputChar("e","E")
- else if (Ebene = 3) ; {
+ else if (Ebene = 3)
send {blind}{}}
else if (Ebene = 4)
Send {Blind}{Right}
else if (Ebene = 5)
- SendUnicodeChar(0x03B5) ;epsilon
+ SendUnicodeChar(0x03B5) ; epsilon
else if (Ebene = 6)
- SendUnicodeChar(0x2203) ;es existiert
+ SendUnicodeChar(0x2203) ; es existiert
return
neo_o:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x00F3,0x00D3)
- or CheckDeadUni12("a2",0x00F2,0x00D2)
- or CheckDeadUni12("a5",0x01EB,0x01EA)
- or CheckDeadUni12("c1",0x00F4,0x00D4)
- or CheckDeadUni12("c2",0x01D2,0x01D1)
- or CheckDeadUni12("c3",0x014F,0x014E)
- or CheckDeadUni12("t1",0x00F5,0x00D5)
- or CheckDeadUni12("t2",0x014D,0x014C)
- or CheckDeadAsc12("t3","","")
- or CheckDeadUni12("t4",0x00F8,0x00D8)
- or CheckDeadUni12("t5",0x0151,0x0150)))
+ or CheckDeadUni12("a2",0x00F2,0x00D2)
+ or CheckDeadUni12("a5",0x01EB,0x01EA)
+ or CheckDeadUni12("c1",0x00F4,0x00D4)
+ or CheckDeadUni12("c2",0x01D2,0x01D1)
+ or CheckDeadUni12("c3",0x014F,0x014E)
+ or CheckDeadUni12("t1",0x00F5,0x00D5)
+ or CheckDeadUni12("t2",0x014D,0x014C)
+ or CheckDeadAsc12("t3","","")
+ or CheckDeadUni12("t4",0x00F8,0x00D8)
+ or CheckDeadUni12("t5",0x0151,0x0150)))
OutputChar("o","O")
else if (Ebene = 3)
send {blind}*
@@ -803,35 +801,55 @@ return
neo_s:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x015B,0x015A)
- or CheckDeadUni12("a3",0x015F,0x015E)
- or CheckDeadUni12("a4",0x1E61,0x1E60)
- or CheckDeadUni12("c1",0x015D,0x015C)
- or CheckDeadUni12("c2",0x0161,0x0160)
- or CheckDeadUni12("c6",0x1E63,0x1A62)))
+ or CheckDeadUni12("a3",0x015F,0x015E)
+ or CheckDeadUni12("a4",0x1E61,0x1E60)
+ or CheckDeadUni12("c1",0x015D,0x015C)
+ or CheckDeadUni12("c2",0x0161,0x0160)
+ or CheckDeadUni12("c6",0x1E63,0x1A62)))
{
if (Ebene = 1)
{
if LangSTastatur
if (GetKeyState("CapsLock","T"))
+ {
send {blind}s
+ if (PriorDeadKey = "comp")
+ Compkey := "s"
+ }
else
+ {
SendUnicodeChar(0x017F) ;langes S
+ if (PriorDeadKey = "comp")
+ CompKey := "lang_s"
+ }
else
+ {
send {blind}s
- if (PriorDeadKey = "comp")
- CompKey := "s"
+ if (PriorDeadKey = "comp")
+ CompKey := "s"
+ }
}
else if (Ebene = 2)
{
if LangSTastatur
if (GetKeyState("CapsLock","T"))
+ {
SendUnicodeChar(0x017F) ;langes S
+ if (PriorDeadKey = "comp")
+ CompKey := "lang_s"
+ }
else
+ {
send {blind}S
+ if (PriorDeadKey = "comp")
+ CompKey := "s"
+ }
else
+ {
send {blind}S
- if (PriorDeadKey = "comp")
- CompKey := "S"
+ if (PriorDeadKey = "comp")
+ CompKey := "S"
+ }
}
}
else if (Ebene = 3)
@@ -841,21 +859,21 @@ neo_s:
else if (Ebene = 5)
SendUnicodeChar(0x03C3) ;sigma
else if (Ebene = 6)
- SendUnicodeChar(0x03A3) ; Sigma
+ SendUnicodeChar(0x03A3) ;Sigma
return
neo_n:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x0144,0x0143)
- or CheckDeadUni12("a3",0x0146,0x0145)
- or CheckDeadUni12("a4",0x1E45,0x1E44)
- or CheckDeadUni12("c2",0x0148,0x0147)
- or CheckDeadUni12("t1",0x00F1,0x00D1)))
+ or CheckDeadUni12("a3",0x0146,0x0145)
+ or CheckDeadUni12("a4",0x1E45,0x1E44)
+ or CheckDeadUni12("c2",0x0148,0x0147)
+ or CheckDeadUni12("t1",0x00F1,0x00D1)))
OutputChar("n","N")
else if (Ebene = 3)
- send {blind}( ; )
+ send {blind}(
else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2074)
- or CheckDeadUni("c5",0x2084)))
+ or CheckDeadUni("c5",0x2084)))
Send {blind}{NumPad4}
else if (Ebene = 5)
SendUnicodeChar(0x03BD) ; nu
@@ -866,17 +884,17 @@ return
neo_r:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x0155,0x0154)
- or CheckDeadUni12("a3",0x0157,0x0156)
- or CheckDeadUni12("a4",0x0E59,0x0E58)
- or CheckDeadUni12("c2",0x0159,0x0158)
- or CheckDeadUni12("c6",0x1E5B,0x1E5A)
- or CheckCompAsc12("o","","")
- or CheckCompAsc12("O","","")))
+ or CheckDeadUni12("a3",0x0157,0x0156)
+ or CheckDeadUni12("a4",0x0E59,0x0E58)
+ or CheckDeadUni12("c2",0x0159,0x0158)
+ or CheckDeadUni12("c6",0x1E5B,0x1E5A)
+ or CheckCompAsc12("o","","")
+ or CheckCompAsc12("O","","")))
OutputChar("r","R")
- else if (Ebene = 3) ;(
+ else if (Ebene = 3)
send {blind})
else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2075)
- or CheckDeadUni("c5",0x2085)))
+ or CheckDeadUni("c5",0x2085)))
Send {blind}{NumPad5}
else if (Ebene = 5)
SendUnicodeChar(0x03F1) ; rho symbol (varrho)
@@ -887,20 +905,20 @@ return
neo_t:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a3",0x0163,0x0162)
- or CheckDeadUni12("a4",0x1E6B,0x1E6A)
- or CheckDeadUni12("c2",0x0165,0x0164)
- or CheckDeadUni12("c5",0x0167,0x0166)
- or CheckDeadUni12("c6",0x1E6D,0x1E6C)))
+ or CheckDeadUni12("a4",0x1E6B,0x1E6A)
+ or CheckDeadUni12("c2",0x0165,0x0164)
+ or CheckDeadUni12("c5",0x0167,0x0166)
+ or CheckDeadUni12("c6",0x1E6D,0x1E6C)))
OutputChar("t","T")
else if (Ebene = 3)
- send {blind}- ; Bis
+ send {blind}- ; Bisstrich
else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2076)
or CheckDeadUni("c5",0x2086)))
Send {blind}{NumPad6}
else if (Ebene = 5)
SendUnicodeChar(0x03C4) ; tau
else if (Ebene = 6)
- SendUnicodeChar(0x2202 ) ; partielle Ableitung
+ SendUnicodeChar(0x2202) ; partielle Ableitung
return
neo_d:
@@ -916,16 +934,16 @@ neo_d:
else if (Ebene = 4)
send `,
else if (Ebene = 5)
- SendUnicodeChar(0x03B4) ;delta
+ SendUnicodeChar(0x03B4) ; delta
else if (Ebene = 6)
- SendUnicodeChar(0x0394) ; Delta
+ SendUnicodeChar(0x0394) ; Delta
return
neo_y:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x00FD,0x00DD)
- or CheckDeadUni12("c1",0x0177,0x0176)
- or CheckDeadAsc12("t3","",)))
+ or CheckDeadUni12("c1",0x0177,0x0176)
+ or CheckDeadAsc12("t3","","")))
OutputChar("y","Y")
else if (Ebene = 3)
send {blind}@
@@ -946,19 +964,19 @@ return
neo_:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x01D8,0x01D7)
- or CheckDeadUni12("a2",0x01DC,0x01DB)
- or CheckDeadUni12("c2",0x01DA,0x01D9)
- or CheckDeadUni12("t2",0x01D6,0x01D5)))
+ or CheckDeadUni12("a2",0x01DC,0x01DB)
+ or CheckDeadUni12("c2",0x01DA,0x01D9)
+ or CheckDeadUni12("t2",0x01D6,0x01D5)))
OutputChar("","")
else if (Ebene = 3)
send {#}
else if (Ebene = 4)
Send {blind}{Esc}
- else if (Ebene = 5)
+ else if (Ebene = 5) ; leer
{
DeadKey := PriorDeadKey
CompKey := PriorCompKey
- } ; leer
+ }
else if (Ebene = 6)
SendUnicodeChar(0x221D) ; proportional
return
@@ -987,11 +1005,11 @@ neo_:
else if (Ebene = 3)
send {blind}|
else if (Ebene = 4)
- Send {blind}{PgDn} ; Next
+ Send {blind}{PgDn} ; Next
else if (Ebene = 5)
SendUnicodeChar(0x03B7) ; eta
else if (Ebene = 6)
- SendUnicodeChar(0x211C) ; altes R
+ SendUnicodeChar(0x211C) ; Fraktur R
return
neo_p:
@@ -1003,29 +1021,29 @@ neo_p:
else if (Ebene = 4)
Send {blind}{Enter}
else if (Ebene = 5)
- SendUnicodeChar(0x03C0) ;pi
+ SendUnicodeChar(0x03C0) ; pi
else if (Ebene = 6)
- SendUnicodeChar(0x03A0) ; Pi
+ SendUnicodeChar(0x03A0) ; Pi
return
neo_z:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x017A,0x0179)
- or CheckDeadUni12("a4",0x017C,0x017B)
- or CheckDeadUni12("c2",0x017E,0x017D)
- or CheckDeadUni12("c6",0x1E93,0x1E92)))
+ or CheckDeadUni12("a4",0x017C,0x017B)
+ or CheckDeadUni12("c2",0x017E,0x017D)
+ or CheckDeadUni12("c6",0x1E93,0x1E92)))
OutputChar("z","Z")
else if (Ebene = 3)
- send ``{space} ; untot
+ send ``{space} ; untot
else if (Ebene = 4)
{
DeadKey := PriorDeadKey
CompKey := PriorCompKey
} ; leer
else if (Ebene = 5)
- SendUnicodeChar(0x03B6) ;zeta
+ SendUnicodeChar(0x03B6) ; zeta
else if (Ebene = 6)
- SendUnicodeChar(0x2124) ; Z (ganze Zahlen)
+ SendUnicodeChar(0x2124) ; Z (ganze Zahlen)
return
neo_b:
@@ -1045,17 +1063,14 @@ return
neo_m:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a4",0x1E41,0x1E40)
- or CheckDeadUni12("c6",0x1E43,0x1E42)
- or CheckCompUni12("t",0x2122,0x2122) ; TM
- or CheckCompUni12("T",0x2122,0x2122) ; TM
- or CheckCompUni12("s",0x2120,0x2120) ; SM
- or CheckCompUni12("S",0x2120,0x2120))) ; SM
-
+ or CheckDeadUni12("c6",0x1E43,0x1E42)
+ or CheckCompUni12("t",0x2122,0x2122) ; TM
+ or CheckCompUni12("s",0x2120,0x2120))) ; SM
OutputChar("m","M")
else if (Ebene = 3)
send {blind}`%
else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B9)
- or CheckDeadUni("c5",0x2081)))
+ or CheckDeadUni("c5",0x2081)))
Send {blind}{NumPad1}
else if (Ebene = 5)
SendUnicodeChar(0x03BC) ; griechisch mu, micro wre 0x00B5
@@ -1075,7 +1090,7 @@ neo_komma:
else if (Ebene = 3)
send {blind}"
else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B2)
- or CheckDeadUni("c5",0x2082)))
+ or CheckDeadUni("c5",0x2082)))
Send {blind}{NumPad2}
else if (Ebene = 5)
SendUnicodeChar(0x03C1) ; rho
@@ -1095,12 +1110,12 @@ neo_punkt:
else if (Ebene = 3)
send {blind}'
else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B3)
- or CheckDeadUni("c5",0x2083)))
+ or CheckDeadUni("c5",0x2083)))
Send {blind}{NumPad3}
else if (Ebene = 5)
SendUnicodeChar(0x03D1) ; theta symbol (vartheta)
else if (Ebene = 6)
- SendUnicodeChar(0x0398) ; Theta
+ SendUnicodeChar(0x0398) ; Theta
return
@@ -1108,12 +1123,12 @@ neo_j:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("c1",0x0135,0x0134)
or CheckDeadUni12("c2",0x01F0,"")
- or CheckCompUni12("i",0x0133,"") ; ij
- or CheckCompUni12("I","",0x0132) ; IJ
- or CheckCompUni12("l",0x01C9,"") ; lj
- or CheckCompUni12("L",0x01C8,0x01C7) ; Lj/LJ
- or CheckCompUni12("n",0x01CC,"") ; nj
- or CheckCompUni12("N",0x01CB,0x01CA))) ; Nj/NJ
+ or CheckCompUni("i",0x0133) ; ij
+ or CheckCompUni("l",0x01C9) ; lj
+ or CheckCompUni("n",0x01CC) ; nj
+ or CheckCompUni("I",0x0132) ; IJ
+ or CheckCompUni12("L",0x01C8,0x01C7) ; Lj/LJ
+ or CheckCompUni12("N",0x01CB,0x01CA))) ; Nj/NJ
OutputChar("j","J")
else if (Ebene = 3)
send {blind}`;
@@ -1129,343 +1144,325 @@ return
Numpad
-
- folgende Tasten verhalten sich bei ein- und ausgeschaltetem
- NumLock gleich:
*/
+neo_NumLock:
+ EbeneAktualisieren()
+ if (Ebene = 1)
+ send `=
+ if (Ebene = 2) ; Funktioniert nicht
+ {
+ SetNumLockState
+ send {NumLock}
+ }
+ if (Ebene = 3)
+ SendUnicodeChar(0x2248) ; Fast gleich
+ if (Ebene = 4)
+ SendUnicodeChar(0x2260) ; Ungleich zu
+return
+
neo_NumpadDiv:
EbeneAktualisieren()
- if ((Ebene = 1) or (Ebene = 2))
+ if Ebene14
send {blind}{NumpadDiv}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x2215) ; Slash
else if (Ebene = 3)
send {blind}
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x2215) ; slash
return
neo_NumpadMult:
EbeneAktualisieren()
- if ((Ebene = 1) or (Ebene = 2))
+ if Ebene14
send {blind}{NumpadMult}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x22C5) ; Cdot
else if (Ebene = 3)
send {blind}
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x22C5) ; cdot
return
neo_NumpadSub:
EbeneAktualisieren()
- if (((Ebene = 1) or (Ebene = 2)) and !(CheckDeadUni("c1",0x207B)
- or CheckDeadUni("c5",0x208B)))
+ if (Ebene14 and !(CheckDeadUni("c1",0x207B)
+ or CheckDeadUni("c5",0x208B)))
send {blind}{NumpadSub}
else if (Ebene = 3)
- SendUnicodeChar(0x2212) ; echtes minus
+ SendUnicodeChar(0x2212) ; Echtes Minus
return
neo_NumpadAdd:
EbeneAktualisieren()
- if (((Ebene = 1) or (Ebene = 2)) and !(CheckDeadUni("c1",0x207A)
- or CheckDeadUni("c5",0x208A)))
+ if (Ebene14 and !(CheckDeadUni("c1",0x207A)
+ or CheckDeadUni("c5",0x208A)))
send {blind}{NumpadAdd}
else if (Ebene = 3)
send {blind}
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x2213) ; -+
+ else if (Ebene = 2)
+ SendUnicodeChar(0x2213) ; Inverses
return
neo_NumpadEnter:
- EbeneAktualisieren()
- if ((Ebene = 1) or (Ebene = 2))
- send {blind}{NumpadEnter}
- else if (Ebene = 3)
- SendUnicodeChar(0x2260) ; neq
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x2248) ; approx
+ send {blind}{NumpadEnter}
return
-/*
- folgende Tasten verhalten sich bei ein- und ausgeschaltetem NumLock
- unterschiedlich
-*/
-
-
-
neo_Numpad7:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadHome}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadHome}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
+ if (Ebene = 1)
{
- if (Ebene = 1)
+ if NumLock
send {blind}{Numpad7}
else
- send {blind){Shift up}{Numpad7}{Shift down}
-
+ send {blind){Shift up}{Numpad7}
if (PriorDeadKey = "comp")
- CompKey := "Num_7"
+ CompKey := "7"
}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x2020) ; Kreuz
else if (Ebene = 3)
- SendUnicodeChar(0x2195) ; Hoch-Runter-Pfeil
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x226A) ; ll
+ SendUnicodeChar(0x2195) ; Hoch-Runter-Pfeil
+ else if (Ebene = 4)
+ if NumLock
+ send {blind}{Shift up}{NumpadHome}
+ else
+ send {blind}{NumpadHome}
return
neo_Numpad8:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadUp}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadUp}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
+ if ((Ebene = 1) and !(CheckCompUni("1",0x215B) ; 1/8
+ or CheckCompUni("3",0x215C) ; 3/8
+ or CheckCompUni("5",0x215D) ; 5/8
+ or CheckCompUni("7",0x215E))) ; 7/8
{
- if !(CheckCompUni("Num_1",0x215B) ; 1/8
- or CheckCompUni("1",0x215B) ; 1/8
- or CheckCompUni("Num_3",0x215C) ; 3/8
- or CheckCompUni("3",0x215C) ; 3/8
- or CheckCompUni("Num_5",0x215D) ; 3/8
- or CheckCompUni("5",0x215D) ; 5/8
- or CheckCompUni("Num_7",0x215E) ; 7/8
- or CheckCompUni("7",0x215E)) ; 7/8
- if (Ebene = 1)
- send {blind}{Numpad8}
- else
- send {blind){Shift up}{Numpad8}{Shift down}
-
+ if NumLock
+ send {blind}{Numpad8}
+ else
+ send {blind){Shift up}{Numpad8}
if (PriorDeadKey = "comp")
- CompKey := "Num_8"
+ CompKey := "8"
}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x2229) ; Durchschnitt
else if (Ebene = 3)
- SendUnicodeChar(0x2191) ; uparrow
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x2229) ; intersection
+ SendUnicodeChar(0x2191) ; Hochpfeil
+ else if (Ebene = 4)
+ if NumLock
+ send {blind}{Shift up}{NumpadUp}
+ else
+ send {blind}{NumpadUp}
return
neo_Numpad9:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadPgUp}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadPgUp}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
+ if (Ebene = 1)
{
- if (Ebene = 1)
+ if NumLock
send {blind}{Numpad9}
else
- send {blind){Shift up}{Numpad9}{Shift down}
-
+ send {blind){Shift up}{Numpad9}
if (PriorDeadKey = "comp")
- CompKey := "Num_9"
+ CompKey := "9"
}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x2297) ; Tensorprodukt / Vektor in die Ebene zeigend
else if (Ebene = 3)
- SendUnicodeChar(0x2297) ; Tensorprodukt ; Vektor in die Ebene zeigend
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x226B) ; gg
+ SendUnicodeChar(0x220D) ; Kleines umgekehrtes Elementzeichen
+ else if (Ebene = 4)
+ if NumLock
+ send {blind}{Shift up}{NumpadPgUp}
+ else
+ send {blind}{NumpadPgUp}
return
-
-
neo_Numpad4:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadLeft}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadLeft}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
+ if ((Ebene = 1) and !(CheckCompUni("1",0x00BC) ; 1/4
+ or CheckCompUni("3",0x00BE))) ; 3/4
{
- if !(CheckCompUni("Num_1",0x00BC) ; 1/4
- or CheckCompUni("1",0x00BE) ; 1/4
- or CheckCompUni("Num_3",0x00BE) ; 3/4
- or CheckCompUni("3",0x00BE)) ; 3/4
- if (Ebene = 1)
- send {blind}{Numpad4}
- else
- send {blind){Shift up}{Numpad4}{Shift down}
-
+ if NumLock
+ send {blind}{Numpad4}
+ else
+ send {blind){Shift up}{Numpad4}
if (PriorDeadKey = "comp")
- CompKey := "Num_4"
+ CompKey := "4"
}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x2282) ; Teilmenge
else if (Ebene = 3)
- SendUnicodeChar(0x2190) ; leftarrow
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x2282) ; subset of
+ SendUnicodeChar(0x2190) ; Linkspfeil
+ else if (Ebene = 4)
+ if NumLock
+ send {blind}{Shift up}{NumpadLeft}
+ else
+ send {blind}{NumpadLeft}
return
neo_Numpad5:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadClear}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadClear}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
+ if ((Ebene = 1) and !(CheckCompUni("1",0x2155) ; 1/5
+ or CheckCompUni("2",0x2156) ; 2/5
+ or CheckCompUni("3",0x2157) ; 3/5
+ or CheckCompUni("4",0x2158))) ; 4/5
{
- if !(CheckCompUni("Num_1",0x2155) ; 1/5
- or CheckCompUni("1",0x2155) ; 1/5
- or CheckCompUni("Num_2",0x2156) ; 2/5
- or CheckCompUni("2",0x2156) ; 2/5
- or CheckCompUni("Num_3",0x2157) ; 3/5
- or CheckCompUni("3",0x2157) ; 3/5
- or CheckCompUni("Num_4",0x2158) ; 4/5
- or CheckCompUni("4",0x2158)) ; 4/5
- if (Ebene = 1)
- send {blind}{Numpad5}
- else
- send {blind){Shift up}{Numpad5}{Shift down}
-
+ if NumLock
+ send {blind}{Numpad5}
+ else
+ send {blind){Shift up}{Numpad5}
if (PriorDeadKey = "comp")
- CompKey := "Num_5"
+ CompKey := "5"
}
else if (Ebene = 3)
- SendUnicodeChar(0x221E) ; INFINITY
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x220B) ; enthlt das Element
+ SendUnicodeChar(0x221E) ; Unendlich
+ else if (Ebene = 2)
+ SendUnicodeChar(0x20AC) ; Euro
+ else if (Ebene = 4) ; Beg
+ if NumLock
+ send {NumPad5}
+ else
+ send {Shift}{Numpad5}
return
neo_Numpad6:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadRight}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadRight}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
+ if ((Ebene = 1) and !(CheckCompUni("1",0x2159) ; 1/6
+ or CheckCompUni("5",0x215a))) ; 5/6
{
- if !(CheckCompUni("Num_1",0x2159) ; 1/6
- or CheckCompUni("1",0x2159) ; 1/6
- or CheckCompUni("Num_5",0x215A) ; 5/6
- or CheckCompUni("5",0x215A)) ; 5/6
- if (Ebene = 1)
- send {blind}{Numpad6}
- else
- send {blind){Shift up}{Numpad6}{Shift down}
-
+ if NumLock
+ send {blind}{Numpad6}
+ else
+ send {blind){Shift up}{Numpad6}
if (PriorDeadKey = "comp")
- CompKey := "Num_6"
+ CompKey := "6"
}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x2283) ; Obermenge
else if (Ebene = 3)
- SendUnicodeChar(0x2192) ; rightarrow
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x2283) ; superset of
+ SendUnicodeChar(0x2192) ; Rechtspfeil
+ else if (Ebene = 4)
+ if NumLock
+ send {blind}{Shift up}{NumpadRight}
+ else
+ send {blind}{NumpadRight}
return
neo_Numpad1:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadEnd}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadEnd}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
+ if (Ebene = 1)
{
- if (Ebene = 1)
+ if NumLock
send {blind}{Numpad1}
else
- send {blind){Shift up}{Numpad1}{Shift down}
-
+ send {blind){Shift up}{Numpad1}
if (PriorDeadKey = "comp")
- CompKey := "Num_1"
+ CompKey := "1"
}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x2714) ; Hkchen
else if (Ebene = 3)
SendUnicodeChar(0x2194) ; Links-Rechts-Pfeil
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x2264) ; leq
+ else if (Ebene = 4)
+ if NumLock
+ send {blind}{Shift up}{NumpadEnd}
+ else
+ send {blind}{NumpadEnd}
return
neo_Numpad2:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadDown}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadDown}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
+ if ((Ebene = 1) and !(CheckCompUni("1",0x00BD))) ; 1/2
{
- if !(CheckCompUni("Num_1",0x00BD) ; 1/2
- or CheckCompUni("1",0x00BD)) ; 1/2
- if (Ebene = 1)
- send {blind}{Numpad2}
- else
- send {blind){Shift up}{Numpad2}{Shift down}
-
+ if NumLock
+ send {blind}{Numpad2}
+ else
+ send {blind){Shift up}{Numpad2}
if (PriorDeadKey = "comp")
- CompKey := "Num_2"
+ CompKey := "2"
}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x222A) ; Vereinigung
else if (Ebene = 3)
- SendUnicodeChar(0x2193) ; downarrow
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x222A) ; vereinigt
+ SendUnicodeChar(0x2192) ; Untenpfeil
+ else if (Ebene = 4)
+ if NumLock
+ send {blind}{Shift up}{NumpadDown}
+ else
+ send {blind}{NumpadDown}
return
neo_Numpad3:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadPgDn}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadPgDn}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
+ if ((Ebene = 1) and !(CheckCompUni("1",0x2153) ; 1/3
+ or CheckCompUni("5",0x2154))) ; 2/3
{
- if !(CheckCompUni("Num_1",0x2153) ; 1/3
- or CheckCompUni("1",0x2154) ; 1/3
- or CheckCompUni("Num_2",0x2154) ; 2/3
- or CheckCompUni("2",0x2154)) ; 2/3
- if (Ebene = 1)
- send {blind}{Numpad3}
- else
- send {blind){Shift up}{Numpad3}{Shift down}
-
+ if NumLock
+ send {blind}{Numpad3}
+ else
+ send {blind){Shift up}{Numpad3}
if (PriorDeadKey = "comp")
- CompKey := "Num_3"
+ CompKey := "3"
}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x2718) ; Kreuzchen
else if (Ebene = 3)
- SendUnicodeChar(0x21CC) ; RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x2265) ; geq
+ SendUnicodeChar(0x2192) ; Rechtspfeil
+ else if (Ebene = 4)
+ if NumLock
+ send {blind}{Shift up}{NumpadPgDn}
+ else
+ send {blind}{NumpadPgDn}
return
neo_Numpad0:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadIns}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadIns}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
+ if (Ebene = 1)
{
- if (Ebene = 1)
+ if NumLock
send {blind}{Numpad0}
else
- send {blind){Shift up}{Numpad0}{Shift down}
-
+ send {blind){Shift up}{Numpad0}
if (PriorDeadKey = "comp")
- CompKey := "Num_0"
+ CompKey := "0"
}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x2030) ; Promille
else if (Ebene = 3)
- send {blind}`%
- else if ((Ebene = 4) or (Ebene = 5))
- send
+ SendUnicodeChar(0x0025) ; Prozent
+ else if (Ebene = 4)
+ if NumLock
+ send {blind}{Shift up}{NumpadIns}
+ else
+ send {blind}{NumpadIns}
return
neo_NumpadDot:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadDel}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadDel}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
- if (Ebene = 1)
+ if (Ebene = 1)
+ {
+ if NumLock
send {blind}{NumpadDot}
- else
- send {blind){Shift up}{NumpadDot}{Shift down}
+ else
+ send {blind){Shift up}{NumpadDot}
+ }
+ else if (Ebene = 2)
+ send `,
else if (Ebene = 3)
send {blind}.
- else if ((Ebene = 4) or (Ebene = 5))
- send `,
+ else if (Ebene = 4)
+ if NumLock
+ send {blind}{Shift up}{NumpadDel}
+ else
+ send {blind}{NumpadDel}
return
+
+
/*
Sondertasten
*/
+
*space::
if ((einHandNeo))
spacepressed := 1
@@ -1512,11 +1509,7 @@ return
/*
Folgende Tasten sind nur aufgefhrt, um PriorDeadKey zu leeren.
Irgendwie sieht das noch nicht schn aus. Vielleicht lsst sich dieses
- Problem irgendwie eleganter lsen...
-
- Nachtrag:
- Weil es mit Alt+Tab Probleme gab, wird hier jetzt erstmal rumgeflickschustert,
- bis eine allgemeinere Lsung gefunden wurde.
+ Problem auch eleganter lsen...
*/
*Enter::
@@ -1535,6 +1528,7 @@ return
}
return
+
*Del::
if (not(lernModus) or lernModus_std_Entf)
send {Blind}{Del}
diff --git a/windows/autohotkey/Source/Keys-Qwert-to-Neo.ahk b/windows/autohotkey/Source/Keys-Qwert-to-Neo.ahk
index 8485b03..062fcb2 100644
--- a/windows/autohotkey/Source/Keys-Qwert-to-Neo.ahk
+++ b/windows/autohotkey/Source/Keys-Qwert-to-Neo.ahk
@@ -443,6 +443,7 @@ VK09SC00F::goto neo_tab
}
; Numpad
+*VK90SC145::goto neo_NumLock
*VK6FSC135::goto neo_NumpadDiv
*VK6ASC037::goto neo_NumpadMult
*VK6DSC04A::goto neo_NumpadSub
diff --git a/windows/autohotkey/Source/Methods-Layers.ahk b/windows/autohotkey/Source/Methods-Layers.ahk
index e2cdb99..362858c 100644
--- a/windows/autohotkey/Source/Methods-Layers.ahk
+++ b/windows/autohotkey/Source/Methods-Layers.ahk
@@ -1,103 +1,137 @@
-/*
- ------------------------------------------------------
- Modifier
- ------------------------------------------------------
-*/
-
-
-;LShift+RShift == CapsLock (simuliert)
+; LShift+RShift == CapsLock (simuliert)
; Es werden nur die beiden Tastenkombinationen abgefragt,
; daher kommen LShift und RShift ungehindert bis in die
; Applikation. Dies ist aber merkwrdig, da beide Shift-
; Tasten nun /modifier keys/ werden und, wie in der AHK-
; Hilfe beschrieben, eigentlich nicht mehr bis zur App
; durchkommen sollten.
+; KeyboardLED(4,"switch") hatte ich zuerst genommen, aber
+; das schaltet, oh Wunder, die LED nicht wieder aus.
+isMod2Locked = 0
VKA1SC136 & VKA0SC02A:: ; RShift, dann LShift
VKA0SC02A & VKA1SC136:: ; LShift, dann RShift
-;
-; mit diesen funktioniert das automatische bernehmen der
-; gedrckten Shift-Tasten nicht, also z.B. Shift-Ins, wenn Ins
-; bei gedrckter Shift-Taste {blind} gesendet wird
-; *VKA1SC136::
-; *VKA0SC02A::
- if (GetKeyState("VKA1SC136", "P") and GetKeyState("VKA0SC02A", "P"))
- send {blind}{CapsLock}
+ if (GetKeyState("VKA1SC136", "P") and GetKeyState("VKA0SC02A", "P"))
+ {
+ if isMod2Locked
+ {
+ isMod2Locked = 0
+ KeyboardLED(4,"off")
+ }
+ else
+ {
+ isMod2Locked = 1
+ KeyBoardLED(4,"on")
+ }
+ }
return
-
-; Mod3+Mod3 == Mod3-Lock
-; Im Gegensatz zu LShift+RShift werden die beiden Tasten
-; _nicht_ zur Applikation weitergeleitet, da '#' kein
-; Modifier ist und CapsLock sonst den CapsLock-Status
-; beeinflusst. Dafr werden smtliche Events dieser
-; Tasten abgefangen, und nur bei gleichzeitigem Drcken
-; wird der Mod3-Lock aktiviert und angezeigt.
-
-IsMod3Locked := 0
-; VKBFSC02B & VK14SC03A::
-; VK14SC03A & VKBFSC02B::
+;Mod3-Tasten (Wichtig, sie werden sonst nicht verarbeitet!)
*VKBFSC02B:: ; #
*VK14SC03A:: ; CapsLock
- if (GetKeyState("VKBFSC02B", "P") and GetKeyState("VK14SC03A", "P"))
- {
- if (IsMod3Locked)
- {
- IsMod3Locked = 0
- if (zeigeLockBoxen==1)
- {
- MsgBox Mod3-Feststellung aufgebehoben!
- }
- }
- else
- {
- IsMod3Locked = 1
- if (zeigeLockBoxen==1)
- {
- MsgBox Mod3 festgestellt: Um Mod3 wieder zu lsen drcke beide Mod3 Tasten gleichzeitig!
- }
-
- }
- }
return
-; Mod4+Mod4 == Mod4-Lock
-; Wie bei Mod3-Lock werden im Gegensatz zu LShift+RShift
-; die beiden Tasten _nicht_ zur Applikation weitergeleitet,
-; und nur bei gleichzeitigem Drcken wird der Mod4-Lock
-; aktiviert und angezeigt.
+;Mod4+Mod4 == Mod4-Lock
+; Im Gegensatz zu LShift+RShift werden die beiden Tasten
+; _nicht_ zur Applikation weitergeleitet, und nur bei
+; gleichzeitigem Drcken wird der Mod4-Lock aktiviert und
+; angezeigt.
IsMod4Locked := 0
-; VKA5SC138 & VKE2SC056:: ; AltGr, dann <
-; VKE2SC056 & VKA5SC138:: ; <, dann AltGr
*VKA5SC138::
*VKE2SC056::
- if (GetKeyState("VKA5SC138", "P") and GetKeyState("VKE2SC056", "P"))
- {
- ; Mod4-Lock durch Mod4(rechts)+Mod4(links)
- if (IsMod4Locked)
- {
- if (zeigeLockBoxen==1)
- {
- MsgBox Mod4-Feststellung aufgebehoben!
- }
- IsMod4Locked = 0
- if (UseMod4Light==1)
- {
- KeyboardLED(1,"off")
- }
- }
- else
- {
- if (zeigeLockBoxen==1)
- {
- MsgBox Mod4 festgestellt: Um Mod4 wieder zu lsen drcke beide Mod3 Tasten gleichzeitig!
- }
- IsMod4Locked = 1
- if (UseMod4Light==1)
- {
- KeyboardLED(1,"on")
- }
- }
- }
+ if (GetKeyState("VKA5SC138", "P") and GetKeyState("VKE2SC056", "P"))
+ {
+ if IsMod4Locked
+ {
+ if zeigeLockBox
+ MsgBox Mod4-Feststellung aufgebehoben!
+ IsMod4Locked = 0
+ if UseMod4Light
+ KeyboardLED(1,"off")
+ }
+ else
+ {
+ if zeigeLockBox
+ MsgBox Mod4 festgestellt: Um Mod4 wieder zu lsen, drcke beide Mod4-Tasten gleichzeitig!
+ IsMod4Locked = 1
+ if UseMod4Light
+ KeyboardLED(1,"on")
+ }
+ }
return
+
+Ebene12 := 0
+Ebene7 := 0
+Ebene8 := 0
+
+EbeneAktualisieren()
+{
+ global
+ PriorDeadKey := DeadKey
+ PriorCompKey := CompKey
+ DeadKey := ""
+ CompKey := ""
+ Modstate := IsMod4Pressed() . IsMod3Pressed() . IsShiftPressed()
+ if ahkTreiberKombi
+ if ( Modstate = "001")
+ Ebene = 6
+ else
+ Ebene = -1
+ else
+ if (Modstate = "000") ; Ebene 1: Ohne Mod
+ Ebene = 1
+ else if (Modstate = "001") ; Ebene 2: Shift
+ Ebene = 2
+ else if (Modstate = "010") ; Ebene 3: Mod3
+ Ebene = 3
+ else if (Modstate = "100") ; Ebene 4: Mod4
+ Ebene = 4
+ else if (Modstate = "011") ; Ebene 5: Shift+Mod3
+ Ebene = 5
+ else if (Modstate = "110") ; Ebene 6: Mod3+Mod4
+ Ebene = 6
+ else if (Modstate = "101") ; Ebene 7: Shift+Mod4 impliziert Ebene 4
+ {
+ Ebene = 4
+ Ebene7 = 1
+ }
+ else if (Modstate = "111") ; Ebene 8: Shift+Mod3+Mod4 impliziert Ebene 6
+ {
+ Ebene = 6
+ Ebene8 = 1
+ }
+ Ebene12 := ((Ebene = 1) or (Ebene = 2))
+ Ebene14 := ((Ebene = 1) or (Ebene = 4))
+ GetKeyState("NumLock","T")
+}
+
+
+IsShiftPressed()
+{aAAA
+ global
+ return ((GetKeyState("Shift","P")) = !(isMod2Locked)) ;xor
+}
+
+IsMod3Pressed()
+{
+ global
+ return ((GetKeyState("CapsLock","P")) or (GetKeyState("#","P")))
+}
+
+IsMod4Pressed()
+{
+ global
+ if( not(einHandNeo) or not(spacepressed))
+ if IsMod4Locked
+ return (not ( GetKeyState("<","P") or GetKeyState("SC138","P")))
+ else
+ return ( GetKeyState("<","P") or GetKeyState("SC138","P"))
+ else
+ if IsMod4Lock
+ return (not ( GetKeyState("<","P") or GetKeyState("SC138","P") or GetKeyState("","P")))
+ else
+ return ( GetKeyState("<","P") or GetKeyState("SC138","P") or GetKeyState("","P"))
+}
+
+
diff --git a/windows/autohotkey/Source/Methods-Lights.ahk b/windows/autohotkey/Source/Methods-Lights.ahk
index 4c327e1..860d583 100644
--- a/windows/autohotkey/Source/Methods-Lights.ahk
+++ b/windows/autohotkey/Source/Methods-Lights.ahk
@@ -6,7 +6,7 @@
Benutzungshinweise: Man benutze
KeyboardLED(LEDvalue,"Cmd"), wobei
Cmd = on/off/switch,
- LEDvalue: ScrollLock=1, NumLock=2, CapsLock=4
+ LEDvalue: ScrollLock=1, NumLock=2, CapsLock=4,
bzw. eine beliebige Summe dieser Werte:
AlleAus=0, CapsLock+NumLock=6, etc.
@@ -14,7 +14,7 @@
http://www.autohotkey.com/forum/viewtopic.php?t=10532
Um eventuelle Wechselwirkungen mit dem bestehenden
- Code (insb. der Unicode-Konvertierung) auszuschieen,
+ Code (insb. der Unicode-Konvertierung) auszuschlieen,
sind auch alle (Hilfsmethoden) mit dem Postfix LED
versehen worden.
------------------------------------------------------
diff --git a/windows/autohotkey/Source/Methods-Other.ahk b/windows/autohotkey/Source/Methods-Other.ahk
index e80d2e4..610f763 100644
--- a/windows/autohotkey/Source/Methods-Other.ahk
+++ b/windows/autohotkey/Source/Methods-Other.ahk
@@ -1,135 +1,3 @@
-/*
- Funktionen
-*/
-
-/*
-Ebenen laut Referenz:
-1. Ebene (kein Mod) 4. Ebene (Mod4)
-2. Ebene (Umschalt) 5. Ebene (Umschalt+Mod3)
-3. Ebene (Mod3) 6. Ebene (Mod3+Mod4)
-*/
-
-EbeneAktualisieren()
-{
- global
- PriorDeadKey := DeadKey
- PriorCompKey := CompKey
- DeadKey := ""
- CompKey := ""
- Ebene12 := 0
- Ebene7 := 0
- Ebene8 := 0
- Modstate := IsShiftPressed() . IsMod3Pressed() . IsMod4Pressed()
-
- if (ahkTreiberKombi)
- if ( Modstate = "001")
- Ebene = 6
- else
- Ebene = -1
- else
- if (Modstate = "000")
- Ebene = 1 ; Ebene 1: Ohne Mod
- else if (Modstate = "100")
- Ebene = 2 ; Ebene 2: Shift
- else if (Modstate = "010")
- Ebene = 3 ; Ebene 3: Mod3
- else if (Modstate = "001")
- Ebene = 4 ; Ebene 4: Mod4
- else if (Modstate = "110")
- Ebene = 5 ; Ebene 5: Shift+Mod3
- else if (Modstate = "011")
- Ebene = 6 ; Ebene 6: Mod3+Mod4
- else if (Modstate = "101")
- {
- Ebene = 4 ; Ebene 7: Shift+Mod4 impliziert Ebene 4
- Ebene7 = 1
- }
- else if (Modstate = "111")
- {
- Ebene = 6 ; Ebene 8: Shift+Mod3+Mod4 impliziert Ebene 6
- Ebene8 = 1
- }
-
- Ebene12 := ((Ebene = 1) or (Ebene = 2))
-
- if GetKeyState("NumLock","T")
- NumLock = 1
- else
- NumLock = 0
-}
-
-
-IsShiftPressed()
-{
- return GetKeyState("Shift","P")
-}
-
-IsMod3Pressed()
-{
- global
- if (IsMod3Locked)
- {
- return (not ( GetKeyState("CapsLock","P") or GetKeyState("#","P") )) ; # = SC02B
- }
- else {
- return ( GetKeyState("CapsLock","P") or GetKeyState("#","P") ) ; # = SC02B
- }
-}
-
-IsMod4Pressed()
-{
- global
- if( not(einHandNeo) or not(spacepressed) )
- {
- if (IsMod4Locked)
- {
- return (not ( GetKeyState("<","P") or GetKeyState("SC138","P")))
- }
- else {
- return ( GetKeyState("<","P") or GetKeyState("SC138","P"))
- }
- }
- else
- {
- if (IsMod4Locked)
- {
- return (not ( GetKeyState("<","P") or GetKeyState("SC138","P") or GetKeyState("","P")))
- }
- else {
- return ( GetKeyState("<","P") or GetKeyState("SC138","P") or GetKeyState("","P"))
- }
- }
-
-}
-
-
-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)
- }
-}
-/*
-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 fhrendem 0x angegeben sind. Die abenteuerliche ^+u-Konstruktion bentigt im brigen den Hex-Wert in Kleinschrift, was derzeit nicht bei den Zeichendefinitionen umgesetzt ist, daher zentral und weniger fehlertrchtig an dieser Stelle. Auerdem ein abschlieend gesendetes Space, sonst bleibt der eingetippte Unicode-Wert noch kurz sichtbar stehen, bevor er sich GTK-sei-dank in das gewnschte Zeichen verwandelt.
-*/
-
-
BSSendUnicodeChar(charCode)
{
send {bs}
@@ -148,12 +16,6 @@ Comp3UnicodeChar(charCode)
SendUnicodeChar(charCode)
}
-
-EncodeInteger(ref, val)
-{
- DllCall("ntdll\RtlFillMemoryUlong", "Uint", ref, "Uint", 4, "Uint", val)
-}
-
deadAsc(val)
{
global
diff --git a/windows/autohotkey/Source/Methods-ScreenKeyboard.ahk b/windows/autohotkey/Source/Methods-ScreenKeyboard.ahk
index 6b12990..a64c426 100644
--- a/windows/autohotkey/Source/Methods-ScreenKeyboard.ahk
+++ b/windows/autohotkey/Source/Methods-ScreenKeyboard.ahk
@@ -173,98 +173,4 @@ ToggleAlwaysOnTop:
alwaysOnTop = 1
}
Return
- ; Ende der BildschirmTastatur
-
-/*
- ------------------------------------------------------
- Shift+Pause "pausiert" das Script.
- ------------------------------------------------------
-*/
-
-*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 ntig.
- `nWenn Autohotkey aktiviert ist, werden alle Tastendrucke
- abgefangen und statt dessen eine bersetzung weitergeschickt.
- `nDies geschieht transparent fr den Anwender,
- es muss nichts installiert werden.
- `nDie Zeichenbersetzung 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
diff --git a/windows/autohotkey/Source/Methods-Unicode.ahk b/windows/autohotkey/Source/Methods-Unicode.ahk
index 00a5ba5..227bedf 100644
--- a/windows/autohotkey/Source/Methods-Unicode.ahk
+++ b/windows/autohotkey/Source/Methods-Unicode.ahk
@@ -32,5 +32,34 @@ BSUnicode(code)
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 fhrendem 0x angegeben sind. Die abenteuerliche ^+u-Konstruktion bentigt im brigen den Hex-Wert in Kleinschrift, was derzeit nicht bei den Zeichendefinitionen umgesetzt ist, daher zentral und weniger fehlertrchtig an dieser Stelle. Auerdem ein abschlieend gesendetes Space, sonst bleibt der eingetippte Unicode-Wert noch kurz sichtbar stehen, bevor er sich GTK-sei-dank in das gewnschte 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)
+ }
+}
+
+EncodeInteger(ref, val)
+{
+ DllCall("ntdll\RtlFillMemoryUlong", "Uint", ref, "Uint", 4, "Uint", val)
+}
diff --git a/windows/autohotkey/Source/Warning.ahk b/windows/autohotkey/Source/Warning.ahk
index 6148298..514b391 100644
--- a/windows/autohotkey/Source/Warning.ahk
+++ b/windows/autohotkey/Source/Warning.ahk
@@ -10,7 +10,6 @@ Alle weiterfhrende Informationen finden sich im Abschnitt
== Hinweise fr Entwickler ==
in der Datei README.txt!
*******************************************
-*/
@@ -28,7 +27,9 @@ in der Datei README.txt!
-/*
+
+
+
*******************************************
Das war die letzte WARNUNG, ich hoffe nur dass
Sie wirklich wissen was Sie hier tun wollen ...
diff --git a/windows/autohotkey/neo20.ahk b/windows/autohotkey/neo20.ahk
index a7da125..1bec1ea 100644
--- a/windows/autohotkey/neo20.ahk
+++ b/windows/autohotkey/neo20.ahk
@@ -1,219 +1,4 @@
-/*
-*******************************************
-WICHTIGE WARNUNG:
-
-Dies ist inzwischen eine automatisch generierte
-Datei! Sie wird regelmig berschrieben und
-sollte deshalb nicht mehr direkt bearbeitet werden!
-
-Alle weiterfhrende Informationen finden sich im Abschnitt
-== Hinweise fr Entwickler ==
-in der Datei README.txt!
-*******************************************
-*/
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-/*
-*******************************************
-Das war die letzte WARNUNG, ich hoffe nur dass
-Sie wirklich wissen was Sie hier tun wollen ...
-*******************************************
-*/
-
-
-/************************************
-* NEO 2.0 (beta) AutoHotkey-Treiber *
-*************************************
-
-Autoren:
-Stefan Mayer <stm (at) neo-layout. o r g>
-Nora Geiler <nora_geissler (at) yahoo. d e>
-Matthias Berg <neo (at) matthias-berg. e u>
-Martin Roppelt <m.p.roppelt (at) web. d e>
-Dennis Heidsiek <HeidsiekB (at) aol. c o m>
-Matthias Wchter <matthias (at) waechter.wiz. a t>
-...
-
-*********
-* TODO: *
-*********
-- Compose vollstndig implementieren (Welche Methode ist hierzu am besten geeignet?)
-- ausgiebig testen... (besonders Vollstndigkeit bei Deadkeys)
-- Bessere Lsung fr das Leeren von PriorDeadKey finden, damit die Sondertasten nicht mehr abgefangen werden mssen.
-- Testen, ob die Capslocklsung (siehe *1:: ebene 1) auch fr Numpad gebraucht wird
-- Die Ebenen vom Tastenblock an die neue Referenz anpassen (wenn da ein Konsens gefunden wurde)
-
-**********
-* IDEEN: *
-**********
-- Die Varianten (lernModus, einHandNeo, Lang-s-Tastatur, Qwertz/pausieren) sollten einheitlich (de-)aktiviert werden, etwa ber M4+F9-F12
-
-******************
-* CHANGEHISTORY: *
-******************
-
-Revision 748 (von Dennis Heidsiek)
-- Neue Globale Variable zeigeLockBoxen: Soll mit MessageBoxen explizit auf das Ein- und Ausschalten des Mod{3,4}-Locks hingewiesen werden?
-Revision 746 (von Martin Roppelt)
-- Zurcksetzen der Tastatur ber M4+Esc
-- #(2L) sendet nicht mehr '
-- Variablen Ebene7 und Ebene8 zum Abfragen eingefhrt
-- s(12)(2L)-Bug von Matthias Wchter behoben
-Revision 744 (von Stefan Mayer)
-- Ebene4-Ziffernblock: auf neo_d nun Komma (wie Referenz), "NumPadKomma" gibt es nicht
-Revision 743 (von Matthias Wchter, commit durch Stefan Mayer)
-- Ebene4-Ziffernblock: NumPadAdd und NumPadSub korrigiert
-Revision 740 (von Matthias Wchter, commit durch HCW)
-- "Mega-Patch" (Skript verkrzt, Ebenenabfrage verndert, ...), siehe CHANGES.txt
-- Blinde tote Tasten auf M4+F9 (Toggle)
-- Blinde Compose auf M4+F10 (Toggle)
-Revision 728 (von Dennis Heidsiek):
-- Ist die Datei %APPDATA%\NEO2\NEO2.ini vorhanden, werden dort eventuell vorhandene Werte fr die Globalen Schalter beim Start bernommen
-- LangSTastaturStandardmigEingeschaltet.ahk wird nicht mehr untersttzt, weil sonst immer neu kompiliert werden muss
-Revision 707 (von Dennis Heidsiek):
-- Die Resourcen-Dateien (PNGs, ICOs) werden nun nach %TEMP%\NEO2\ extrahiert und nicht mehr in das Verzeichnis, in dem sich die EXE befindet
-- Die doppelten franzsischen Anfhrungszeichen werden nun ebenfalls ber SendUnicodeChar gesendet
-Revision 694 (von Martin Roppelt):
-- LangSTastatur auf M4+F11
-- Entwickler knnen durch das Erstellen einer Datei LangSTastaturStandardmigEingeschaltet.ahk mit dem Inhalt LangSTastatur := 1 diese standardmig aktivieren
-- Mehrere DeadKeys aktualisiert (T*, Ebene 4 und T*, Ebene 5)
-Revision 687 (von Dennis Heidsiek):
-- Die SendUnicodeChar-Methode um den GDK-Workarround von Matthias Wchter ergnzt
-- (An/Aus) Icons an Favicon der neuen Homepage angepasst
-Revision 645 (von Martin Roppelt):
-- Ellipse zustzlich auf M3+x
-- Lang-s-Tastatur probeweise auf M4+Esc
-Revision 640 (von Dennis Heidsiek):
-- Der untote Zirkumflex (^) auf Ebene 3 funktioniert jetzt auch in Java-Programmen
-Revision 639 (von Martin Roppelt):
-- Lang-s-Tastatur kann nicht mehr durch einen Hotkey aktiviert werden
-Revision 629 (von Martin Roppelt):
-- Spitze Klammern (bra und ket) auf M5+8/9
-Revision 624 (von Martin Roppelt):
-- Lang-s-Tastatur (ein- und auszuschalten durch Mod4+)
-Revision 616 (von Dennis Heidsiek):
-- Der nicht funktionierende Mod5-Lock-Fix wurde wieder entfernt, da er sogar neue Fehler produzierte
-Revision 615 (von Dennis Heidsiek):
-- Erfolgloser Versuch, den Mod4-Lock wiederherzustellen (durch eine Tilde vor den Scancodes der Bildschirmtastatur)
-- Rechtschreibfehler korrigiert
-- Zwei AHK-Links eingefgt
-Revision 609 (von Dennis Heidsiek):
-- Vorlufiger Abschluss der AHK-Modularisierung
-- Bessere Testmglichkeit All.ahk fr AHK-Entwickler hinzugefgt, bei der sich die Zeilenangaben in Fehlermeldungen auf die tatschlichen Module und nicht auf das groe vereinigte Skript beziehen
-Revision 608 (von Martin Roppelt):
-- Rechtschreibfehler korrigiert und Dateinamen aktualisiert und sortiert
-Revision 590 (von Dennis Heidsiek):
-- Erste technische Vorarbeiten zur logischen Modularisierung des viel zu lange gewordenen AHK-Quellcodes
-- Neue Batch-Datei Build-Update.bat zur einfachen Aktualisierung der EXE-Datei
-Revision 583 (von Dennis Heidsiek):
-- Kleinere Korrekturen (M3+NP5, M5+NP5 und M3+NP9 stimmen wieder mit der Referenz berein)
-Revision 580 (von Matthias Berg):
-- Bildschirmtastatur jetzt mit Mod4+F* statt Strg+F*, dies deaktiviert jedoch leider den Mod4-Lock
-Revision 570 (von Matthias Berg):
-- Hotkeys fr einHandNeo und lernModus durch entsprechende ScanCodes ersetzt
-Revision 568 (von Matthias Berg):
-- Sonderzeichen, Umlaute, z und y durch ScanCodes ersetzt
- * jetzt wird auch bei eingestelltem US Layout Neo verwendet (z.B. fr Chinesische InputMethodEditors)
- * rechter Mod3 geht noch nicht bei US-Layout (weder ScanCode noch "\")
-Revision 567 (von Dennis Heidsiek):
-- Aktivierter Mod4-Lock wird jetzt ber die Rollen-LED des Keybord angezeigt (analog zu CapsLock), die Num-LED behlt ihr bisheriges Verhalten
-- Neue Option im Skript: UseMod4Light
-Revision 561 (von Matthias Berg):
-- M4+Tab verhlt sich jetzt wie das andere Tab dank "goto neo_tab"
-Revision 560 (von Dennis Heidsiek):
-- Neue Option im Skript: bildschirmTastaturEinbinden bindet die PNG-Bilder der Bildschirmtastur mit in die exe-Datei ein, so dass sich der Benutzer nur eine Datei herunterladen muss
-Revision 559 (von Matthias Berg):
-- Shift+Alt+Tab Problem gelst (muss noch mehr auf Nebeneffekte getestet werden)
-Revision 558 (von Matthias Berg):
-- Icon-Bug behoben
- * Hotkeys drfen nicht vor der folgenden Zeile stehen:
- "menu, tray, icon, neo.ico,,1"
-- lernModus-Konfigurations-Bug behoben: or statt and(not)
-- Ein paar leere Else-Flle eingebaut (Verstndlichkeit, mgliche Compilerprobleme vermeiden)
-Revision 556 (von Matthias Berg):
-- lernModus (an/aus mit Strg+Komma)
- * im Skript konfigurierbar
- * Schaltet z.B. Qwertz Tasten aus, die es auf der 4. Ebene gibt (Return, Backspace,...)
- * Kann auch Backspace und/oder Entfernen der 4. Ebene ausschalten (gut zum Lernen, richtig zu schreiben)
-- Bug aufgetaucht: Icons werden nicht mehr angezeigt
-Revision 544 (von Stefan Mayer):
-- ,.:; auf dem Mod4-Ziffernblock an die aktuelle Referenz angepasst
-- Versionen von rho, theta, kappa und phi an die aktuelle Referenz angepasst
-Revision 542 (von Matthias Berg):
-- bei EinHandNeo ist jetzt Space+y auch Mod4
-- AltGr-Bug hoffentlich wieder behoben. Diesmal mit extra altGrPressed Variable
-- nurEbenenFuenfUndSechs umbenannt in ahkTreiberKombi und auf Ebene 4 statt 5 und 6 gendert
-Revision 540 (von Matthias Berg):
-- stark berarbeitet um Wartbarkeit zu erhhen und Redundanz zu verringern
-- nurEbenenFuenfUndSechs sollte nun auch auf Neo Treiber statt Qwertz laufen
- * aber es muss noch jemand testen
- * Problem: was kann man abfangen, wenn eine tote Taste gedrckt wird
-- einHandNeo:
- * An-/Ausschalten mit Strg+Punkt
- * Buchstaben der rechten Hand werden mit Space zur linken Hand
- * Nebeneffekt: es gibt beim Festhalten von Space keine wiederholten Leerzeichen mehr
-Revision 532 (von Matthias Berg):
-- BildschirmTastatur
- * aktiviert mit Strg+F1 bis 7, schaltet Keyboard ein oder aus
- * Strg+F7 zeigt die zuletzt angezeigte Ebene an (und wieder aus)
- * Strg+F8 schaltet AlwaysOnTop um
-Revision 529 (von Stefan Mayer):
-- Icon wird automatisch geladen, falls .ico-Dateien im selbem Ordner
-- In der .exe sind die .ico mitgespeichert und werden geladen
-Revision 528 (von Matthias Berg):
-- Neo-Icon
-- Neo-Prozess jetzt automatisch auf hoher Prioritaet
- (siehe globale Schalter)
-- Mod3-Lock (nur wenn rechtes Mod3 zuerst gedrckt wird, andere Lsung fhrte zum Caps-Bug)
-- Mod4-Lock (nur wenn das linke Mod4 zuerst gedrckt wird, andere Lsung fhrte zum AltGr-Bug)
-- Ein paar falsche Zeichen korrigiert
-Revision 527 (von Matthias Berg):
-- AltGr-Problem hoffentlich behoben
-- Umschalt+Mod4-Bug behoben
-Revision 526 (von Matthias Berg):
-- Ebenen 1 bis 4 ausschalten per Umschalter siehe erste Codezeile nurEbenenFuenfUndSechs = 0
-- Mod4-Lock durch Mod4+Mod4
-- EbenenAktualisierung neu geschrieben
-- Ebene 6 ber Mod3+Mod4
-- Ebenen (besonders Matheebene) an Referenz angepasst (allerdings kaum um Ebenen 1&2 gekmmert, besonders Compose knnte noch berholt werden)
-Revision 525 (von Matthias Berg):
-- Capslock bei Zahlen und Sonderzeichen bercksichtigt
-Revision 524 (von Matthias Berg):
-- umgekehrtes ^ fr o, a, ,i sowie fr die grossen vokale ( 3. ton chinesisch)
- damit wird jetzt PinYin vollstndig untersttzt caron, macron, akut, grave auf uiaeo
-- Sonderzeichen senden wieder blind -> Shortcuts funktionieren, Capslock ist leider Shiftlock
-Revision 523 (von Matthias Berg):
-- CapsLock geht jetzt auch bei allen Zeichen ('send Zeichen' statt 'send {blind} Zeichen')
-- vertikale Ellipse eingebaut
-- Umschalt+Umschalt fr Capslock statt Mod3+Mod3
-- bei Suspend wird jetzt wirklich togglesuspend aufgerufen (auch beim Aktivieren per shift+pause)
-Revsion 490 (von Stefan Mayer):
-- SUBSCRIPT von 0 bis 9 sowie (auf Ziffernblock) + und -
- auch bei Ziffernblock auf der 5. Ebene
-- Kein Parsen ber die Zwischenablage mehr
-- Vista-kompatibel
-- Compose-Taste
- Brche (auf Zahlenreihe und Hardware-Ziffernblock)
- rmische Zahlen
- Ligaturen und Copyright
-*/
-
-
+SetNumLockState AlwaysOff
/****************
* Verzeichnisse *
@@ -251,8 +36,8 @@ IniRead, einHandNeo, %ApplicationFolder%\NEO2.ini, Global, einHandNeo, 0
; Soll der Lernmodus aktiviert werden?
IniRead, lernModus, %ApplicationFolder%\NEO2.ini, Global, lernModus, 0
-; Soll mit MessageBoxen explizit auf das Ein- und Ausschalten des Mod{3,4}-Locks hingewiesen werden?
-IniRead, zeigeLockBoxen, %ApplicationFolder%\NEO2.ini, Global, zeigeLockBoxen, 1
+; Soll mit einer MsgBox explizit auf das Ein- und Ausschalten des Mod4-Locks hingewiesen werden?
+IniRead, zeigeLockBox, %ApplicationFolder%\NEO2.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
@@ -475,109 +260,238 @@ return
else
send {blind}{Esc}
return
+
/*
------------------------------------------------------
- Modifier
+ 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
+ }
-;LShift+RShift == CapsLock (simuliert)
+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 ntig.
+ `nWenn Autohotkey aktiviert ist, werden alle Tastendrucke
+ abgefangen und statt dessen eine bersetzung weitergeschickt.
+ `nDies geschieht transparent fr den Anwender,
+ es muss nichts installiert werden.
+ `nDie Zeichenbersetzung kann leicht ber das Icon im
+ Systemtray deaktiviert werden. `n
+ )
+return
+
+
+neo:
+ run http://neo-layout.org/
+return
+
+autohotkey:
+ run http://autohotkey.com/
+return
+
+open:
+ ListLines ; shows the Autohotkey window
+return
+
+edit:
+ edit
+return
+
+reload:
+ Reload
+return
+
+hide:
+ menu, tray, noicon
+return
+
+exitprogram:
+ exitapp
+return
+
+
+; LShift+RShift == CapsLock (simuliert)
; Es werden nur die beiden Tastenkombinationen abgefragt,
; daher kommen LShift und RShift ungehindert bis in die
; Applikation. Dies ist aber merkwrdig, da beide Shift-
; Tasten nun /modifier keys/ werden und, wie in der AHK-
; Hilfe beschrieben, eigentlich nicht mehr bis zur App
; durchkommen sollten.
+; KeyboardLED(4,"switch") hatte ich zuerst genommen, aber
+; das schaltet, oh Wunder, die LED nicht wieder aus.
+isMod2Locked = 0
VKA1SC136 & VKA0SC02A:: ; RShift, dann LShift
VKA0SC02A & VKA1SC136:: ; LShift, dann RShift
-;
-; mit diesen funktioniert das automatische bernehmen der
-; gedrckten Shift-Tasten nicht, also z.B. Shift-Ins, wenn Ins
-; bei gedrckter Shift-Taste {blind} gesendet wird
-; *VKA1SC136::
-; *VKA0SC02A::
- if (GetKeyState("VKA1SC136", "P") and GetKeyState("VKA0SC02A", "P"))
- send {blind}{CapsLock}
+ if (GetKeyState("VKA1SC136", "P") and GetKeyState("VKA0SC02A", "P"))
+ {
+ if isMod2Locked
+ {
+ isMod2Locked = 0
+ KeyboardLED(4,"off")
+ }
+ else
+ {
+ isMod2Locked = 1
+ KeyBoardLED(4,"on")
+ }
+ }
return
-
-; Mod3+Mod3 == Mod3-Lock
-; Im Gegensatz zu LShift+RShift werden die beiden Tasten
-; _nicht_ zur Applikation weitergeleitet, da '#' kein
-; Modifier ist und CapsLock sonst den CapsLock-Status
-; beeinflusst. Dafr werden smtliche Events dieser
-; Tasten abgefangen, und nur bei gleichzeitigem Drcken
-; wird der Mod3-Lock aktiviert und angezeigt.
-
-IsMod3Locked := 0
-; VKBFSC02B & VK14SC03A::
-; VK14SC03A & VKBFSC02B::
+;Mod3-Tasten (Wichtig, sie werden sonst nicht verarbeitet!)
*VKBFSC02B:: ; #
*VK14SC03A:: ; CapsLock
- if (GetKeyState("VKBFSC02B", "P") and GetKeyState("VK14SC03A", "P"))
- {
- if (IsMod3Locked)
- {
- IsMod3Locked = 0
- if (zeigeLockBoxen==1)
- {
- MsgBox Mod3-Feststellung aufgebehoben!
- }
- }
- else
- {
- IsMod3Locked = 1
- if (zeigeLockBoxen==1)
- {
- MsgBox Mod3 festgestellt: Um Mod3 wieder zu lsen drcke beide Mod3 Tasten gleichzeitig!
- }
-
- }
- }
return
-; Mod4+Mod4 == Mod4-Lock
-; Wie bei Mod3-Lock werden im Gegensatz zu LShift+RShift
-; die beiden Tasten _nicht_ zur Applikation weitergeleitet,
-; und nur bei gleichzeitigem Drcken wird der Mod4-Lock
-; aktiviert und angezeigt.
+;Mod4+Mod4 == Mod4-Lock
+; Im Gegensatz zu LShift+RShift werden die beiden Tasten
+; _nicht_ zur Applikation weitergeleitet, und nur bei
+; gleichzeitigem Drcken wird der Mod4-Lock aktiviert und
+; angezeigt.
IsMod4Locked := 0
-; VKA5SC138 & VKE2SC056:: ; AltGr, dann <
-; VKE2SC056 & VKA5SC138:: ; <, dann AltGr
*VKA5SC138::
*VKE2SC056::
- if (GetKeyState("VKA5SC138", "P") and GetKeyState("VKE2SC056", "P"))
- {
- ; Mod4-Lock durch Mod4(rechts)+Mod4(links)
- if (IsMod4Locked)
- {
- if (zeigeLockBoxen==1)
- {
- MsgBox Mod4-Feststellung aufgebehoben!
- }
- IsMod4Locked = 0
- if (UseMod4Light==1)
- {
- KeyboardLED(1,"off")
- }
- }
- else
- {
- if (zeigeLockBoxen==1)
- {
- MsgBox Mod4 festgestellt: Um Mod4 wieder zu lsen drcke beide Mod3 Tasten gleichzeitig!
- }
- IsMod4Locked = 1
- if (UseMod4Light==1)
- {
- KeyboardLED(1,"on")
- }
- }
- }
+ if (GetKeyState("VKA5SC138", "P") and GetKeyState("VKE2SC056", "P"))
+ {
+ if IsMod4Locked
+ {
+ if zeigeLockBox
+ MsgBox Mod4-Feststellung aufgebehoben!
+ IsMod4Locked = 0
+ if UseMod4Light
+ KeyboardLED(1,"off")
+ }
+ else
+ {
+ if zeigeLockBox
+ MsgBox Mod4 festgestellt: Um Mod4 wieder zu lsen, drcke beide Mod4-Tasten gleichzeitig!
+ IsMod4Locked = 1
+ if UseMod4Light
+ KeyboardLED(1,"on")
+ }
+ }
return
+
+Ebene12 := 0
+Ebene7 := 0
+Ebene8 := 0
+
+EbeneAktualisieren()
+{
+ global
+ PriorDeadKey := DeadKey
+ PriorCompKey := CompKey
+ DeadKey := ""
+ CompKey := ""
+ Modstate := IsMod4Pressed() . IsMod3Pressed() . IsShiftPressed()
+ if ahkTreiberKombi
+ if ( Modstate = "001")
+ Ebene = 6
+ else
+ Ebene = -1
+ else
+ if (Modstate = "000") ; Ebene 1: Ohne Mod
+ Ebene = 1
+ else if (Modstate = "001") ; Ebene 2: Shift
+ Ebene = 2
+ else if (Modstate = "010") ; Ebene 3: Mod3
+ Ebene = 3
+ else if (Modstate = "100") ; Ebene 4: Mod4
+ Ebene = 4
+ else if (Modstate = "011") ; Ebene 5: Shift+Mod3
+ Ebene = 5
+ else if (Modstate = "110") ; Ebene 6: Mod3+Mod4
+ Ebene = 6
+ else if (Modstate = "101") ; Ebene 7: Shift+Mod4 impliziert Ebene 4
+ {
+ Ebene = 4
+ Ebene7 = 1
+ }
+ else if (Modstate = "111") ; Ebene 8: Shift+Mod3+Mod4 impliziert Ebene 6
+ {
+ Ebene = 6
+ Ebene8 = 1
+ }
+ Ebene12 := ((Ebene = 1) or (Ebene = 2))
+ Ebene14 := ((Ebene = 1) or (Ebene = 4))
+ GetKeyState("NumLock","T")
+}
+
+
+IsShiftPressed()
+{aAAA
+ global
+ return ((GetKeyState("Shift","P")) = !(isMod2Locked)) ;xor
+}
+
+IsMod3Pressed()
+{
+ global
+ return ((GetKeyState("CapsLock","P")) or (GetKeyState("#","P")))
+}
+
+IsMod4Pressed()
+{
+ global
+ if( not(einHandNeo) or not(spacepressed))
+ if IsMod4Locked
+ return (not ( GetKeyState("<","P") or GetKeyState("SC138","P")))
+ else
+ return ( GetKeyState("<","P") or GetKeyState("SC138","P"))
+ else
+ if IsMod4Lock
+ return (not ( GetKeyState("<","P") or GetKeyState("SC138","P") or GetKeyState("","P")))
+ else
+ return ( GetKeyState("<","P") or GetKeyState("SC138","P") or GetKeyState("","P"))
+}
+
+
/*
------------------------------------------------------
QWERTZ->Neo umwandlung
@@ -1023,6 +937,7 @@ VK09SC00F::goto neo_tab
}
; Numpad
+*VK90SC145::goto neo_NumLock
*VK6FSC135::goto neo_NumpadDiv
*VK6ASC037::goto neo_NumpadMult
*VK6DSC04A::goto neo_NumpadSub
@@ -1065,13 +980,13 @@ VK09SC00F::goto neo_tab
Die eigentliche NEO-Belegung und der Hauptteil des AHK-Treibers.
Ablauf bei toten Tasten:
- 1. Ebene Aktualisieren
- 2. Abhngig von der Variablen "Ebene" Zeichen ausgeben und die Variable "PriorDeadKey" setzen
+ 1. Ebene Aktualisieren.
+ 2. Abhngig von der Variablen "Ebene" Zeichen ausgeben und die Variable "PriorDeadKey" setzen.
Ablauf bei "untoten" Tasten:
- 1. Ebene Aktualisieren
- 2. Abhngig von den Variablen "Ebene" und "PriorDeadKey" Zeichen ausgeben
- 3. "PriorDeadKey" mit leerem String berschreiben
+ 1. Ebene Aktualisieren.
+ 2. Abhngig von den Variablen "Ebene" und "PriorDeadKey" Zeichen ausgeben.
+ 3. "PriorDeadKey" mit leerem String berschreiben.
Reihe 1
*/
@@ -1101,12 +1016,12 @@ neo_tot1:
}
else if (Ebene = 5)
{
- deadAsc("-") ; Querstrich, tot
+ deadUni(0x002D) ; Querstrich, tot
DeadKey := "c5"
}
else if (Ebene = 6)
{
- deadAsc(".") ; Punkt drunter (Colon), tot
+ deadUni(0x002E) ; Punkt drunter (Colon), tot
DeadKey := "c6"
}
CompKey := PriorCompKey
@@ -1135,9 +1050,9 @@ neo_1:
else if (Ebene = 2)
send
else if (Ebene = 3)
- SendUnicodeChar(0x00B9) ; 2 Hochgestellte
+ SendUnicodeChar(0x00B9) ; Hochgestellte 2
else if (Ebene = 4)
- SendUnicodeChar(0x2022) ; bullet
+ SendUnicodeChar(0x2022) ; Bullet
else if (Ebene = 5)
SendUnicodeChar(0x2640) ; Piktogramm weiblich
else if (Ebene = 6)
@@ -1163,11 +1078,11 @@ neo_2:
CompKey := "2"
}
else if (Ebene = 2)
- SendUnicodeChar(0x2116) ; numero
+ SendUnicodeChar(0x2116) ; Numero
else if (Ebene = 3)
- SendUnicodeChar(0x00B2) ; 2 Hochgestellte
+ SendUnicodeChar(0x00B2) ; Hochgestellte 2
else if (Ebene = 4)
- SendUnicodeChar(0x2023) ; aufzaehlungspfeil
+ SendUnicodeChar(0x2023) ; Aufzhlungspfeil
else if (Ebene = 5)
SendUnicodeChar(0x26A5) ; Piktogramm Zwitter
else if (Ebene = 6)
@@ -1195,7 +1110,7 @@ neo_3:
else if (Ebene = 2)
send
else if (Ebene = 3)
- SendUnicodeChar(0x00B3) ; 3 Hochgestellte
+ SendUnicodeChar(0x00B3) ; Hochgestellte 3
else if (Ebene = 4)
{
CompKey := PriorCompKey
@@ -1224,11 +1139,11 @@ neo_4:
CompKey := "4"
}
else if (Ebene = 2)
- SendUnicodeChar(0x00BB) ; , Double guillemot right
+ SendUnicodeChar(0x00BB) ; Double guillemot right
else if (Ebene = 3)
Send {blind} ; Single guillemot right
else if (Ebene = 4)
- Send {blind}{PgUp} ; Prev
+ Send {blind}{PgUp}
else if (Ebene = 5)
SendUnicodeChar(0x2113) ; Script small L
else if (Ebene = 6)
@@ -1358,7 +1273,7 @@ neo_8:
else if (Ebene = 4)
Send {blind}{NumpadDiv}
else if (Ebene = 5)
- SendUnicodeChar(0x27E8) ;bra (ffnende spitze klammer)
+ SendUnicodeChar(0x27E8) ; bra (ffnende spitze Klammer)
else if (Ebene = 6)
SendUnicodeChar(0x2204) ; es existiert nicht
return
@@ -1386,7 +1301,7 @@ neo_9:
else if (Ebene = 4)
Send {blind}{NumpadMult}
else if (Ebene = 5)
- SendUnicodeChar(0x27E9) ;ket (schlieende spitze klammer)
+ SendUnicodeChar(0x27E9) ; ket (schlieende spitze Klammer)
else if (Ebene = 6)
SendUnicodeChar(0x2226) ; nicht parallel
return
@@ -1433,11 +1348,11 @@ neo_strich:
SendUnicodeChar(0x2013) ; Gedankenstrich
else if (Ebene = 3)
SendUnicodeChar(0x2014) ; Englischer Gedankenstrich (Geviertstrich)
- else if (Ebene = 4)
+ else if (Ebene = 4) ; leer
{
CompKey := PriorCompKey
DeadKey := PriorDeadKey
- } ; leer
+ }
else if (Ebene = 5)
SendUnicodeChar(0x2011) ; geschtzter Bindestrich (Bindestrich ohne Zeilenumbruch)
else if (Ebene = 6)
@@ -1491,11 +1406,13 @@ neo_x:
if (Ebene12)
OutputChar("x","X")
else if (Ebene = 3)
- SendUnicodeChar(0x2026) ;Ellipse
+ SendUnicodeChar(0x2026) ;Ellipse horizontal
+ else if (Ebene = 4)
+ SendUnicodeChar(0x22EE) ;Ellipse vertikal
else if (Ebene = 5)
SendUnicodeChar(0x03BE) ;xi
else if (Ebene = 6)
- SendUnicodeChar(0x039E) ; Xi
+ SendUnicodeChar(0x039E) ;Xi
return
@@ -1508,11 +1425,11 @@ neo_v:
else if (Ebene = 4)
if (not(lernModus) or lernModus_neo_Backspace)
Send {blind}{Backspace}
- else
+ else ; leer
{
CompKey := PriorCompKey
DeadKey := PriorDeadKey
- } ; leer
+ }
else if (Ebene = 6)
SendUnicodeChar(0x2259) ; estimates
return
@@ -1522,11 +1439,11 @@ return
neo_l:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x013A,0x0139)
- or CheckDeadUni12("a3",0x013C,0x013B)
- or CheckDeadUni12("c2",0x013E,0x013D)
- or CheckDeadUni12("c4",0x0140,0x013F)
- or CheckDeadUni12("c6",0x1E37,0x1E36)
- or CheckDeadUni12("t4",0x0142,0x0141)))
+ or CheckDeadUni12("a3",0x013C,0x013B)
+ or CheckDeadUni12("c2",0x013E,0x013D)
+ or CheckDeadUni12("c4",0x0140,0x013F)
+ or CheckDeadUni12("c6",0x1E37,0x1E36)
+ or CheckDeadUni12("t4",0x0142,0x0141)))
OutputChar("l","L")
else if (Ebene = 3)
send {blind}[
@@ -1542,27 +1459,26 @@ return
neo_c:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x0107,0x0106)
- or CheckDeadUni12("a3",0x00E7,0x00E6)
- or CheckDeadUni12("a4",0x010B,0x010A)
- or CheckDeadUni12("c1",0x0109,0x0108)
- or CheckDeadUni12("c2",0x010D,0x010C)
- or CheckCompAsc12("o","","")
- or CheckCompAsc12("O","","")))
+ or CheckDeadUni12("a3",0x00E7,0x00E6)
+ or CheckDeadUni12("a4",0x010B,0x010A)
+ or CheckDeadUni12("c1",0x0109,0x0108)
+ or CheckDeadUni12("c2",0x010D,0x010C)
+ or CheckCompAsc("o","")))
OutputChar("c","C")
else if (Ebene = 3)
send {blind}]
else if (Ebene = 4)
if (not(lernModus) or lernModus_neo_Entf)
Send {blind}{Del}
- else
+ else ; leer
{
CompKey := PriorCompKey
DeadKey := PriorDeadKey
- } ; leer
+ }
else if (Ebene = 5)
- SendUnicodeChar(0x03C7) ;chi
+ SendUnicodeChar(0x03C7) ; chi
else if (Ebene = 6)
- SendUnicodeChar(0x2102) ; C (Komplexe Zahlen)
+ SendUnicodeChar(0x2102) ; C (Komplexe Zahlen)
return
neo_w:
@@ -1570,10 +1486,9 @@ neo_w:
if (Ebene12 and !(CheckDeadUni12("c1",0x0175,0x0174)))
OutputChar("w","W")
else if (Ebene = 3)
- SendUnicodeChar(0x005E) ; untotes ^ - Unicode-Name: CIRCUMFLEX ACCENT
- ;send {^}{space} ; Funktioniert nicht unter Java-Programmen
+ SendUnicodeChar(0x005E) ; Zirkumflex
else if (Ebene = 4)
- Send {blind}{Insert}
+ Send {blind}{Insert} ; Einfg
else if (Ebene = 5)
SendUnicodeChar(0x03C9) ; omega
else if (Ebene = 6)
@@ -1583,7 +1498,7 @@ return
neo_k:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a3",0x0137,0x0136)
- or CheckDeadUni12("c6",0x1E33,0x1E32)))
+ or CheckDeadUni12("c6",0x1E33,0x1E32)))
OutputChar("k","K")
else if (Ebene = 3)
send {blind}{!}
@@ -1598,9 +1513,9 @@ return
neo_h:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a4",0x1E23,0x1E22)
- or CheckDeadUni12("c1",0x0125,0x0124)
- or CheckDeadUni12("c5",0x0127,0x0126)
- or CheckDeadUni12("c6",0x1E25,0x1E24)))
+ or CheckDeadUni12("c1",0x0125,0x0124)
+ or CheckDeadUni12("c5",0x0127,0x0126)
+ or CheckDeadUni12("c6",0x1E25,0x1E24)))
OutputChar("h","H")
else if ((Ebene = 3) and !(CheckDeadUni("c5",0x2264))) ; kleiner gleich
send {blind}<
@@ -1608,27 +1523,27 @@ neo_h:
or CheckDeadUni("c5",0x2087)))
Send {blind}{NumPad7}
else if (Ebene = 5)
- SendUnicodeChar(0x03C8) ;psi
+ SendUnicodeChar(0x03C8) ; psi
else if (Ebene = 6)
- SendUnicodeChar(0x03A8) ; Psi
+ SendUnicodeChar(0x03A8) ; Psi
return
neo_g:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a3",0x0123,0x0122)
- or CheckDeadUni12("a4",0x0121,0x0120)
- or CheckDeadUni12("c1",0x011D,0x011C)
- or CheckDeadUni12("c3",0x011F,0x011E)))
+ or CheckDeadUni12("a4",0x0121,0x0120)
+ or CheckDeadUni12("c1",0x011D,0x011C)
+ or CheckDeadUni12("c3",0x011F,0x011E)))
OutputChar("g","G")
- else if ((Ebene = 3) and !(CheckDeadUni("c5",0x2265))) ; grer gleich
- send {blind}>
+ else if ((Ebene = 3) and !(CheckDeadUni("c5",0x2265)))
+ send {blind}> ; grer gleich
else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2078)
- or CheckDeadUni("c5",0x2088)))
+ or CheckDeadUni("c5",0x2088)))
Send {blind}{NumPad8}
else if (Ebene = 5)
- SendUnicodeChar(0x03B3) ;gamma
+ SendUnicodeChar(0x03B3) ; gamma
else if (Ebene = 6)
- SendUnicodeChar(0x0393) ; Gamma
+ SendUnicodeChar(0x0393) ; Gamma
return
neo_f:
@@ -1637,19 +1552,19 @@ neo_f:
or CheckDeadUni12("t4",0x0192,0x0191)))
OutputChar("f","F")
else if ((Ebene = 3) and !(CheckDeadUni("a6",0x2257) ; ring equal to
- or CheckDeadUni("c1",0x2259) ; entspricht
- or CheckDeadUni("c2",0x225A) ; EQUIANGULAR TO
- or CheckDeadUni("c5",0x2261) ; identisch
- or CheckDeadUni("t1",0x2245) ; ungefhr gleich
- or CheckDeadUni("t4",0x2260))) ; ungleich
+ or CheckDeadUni("c1",0x2259) ; entspricht
+ or CheckDeadUni("c2",0x225A) ; EQUIANGULAR TO
+ or CheckDeadUni("c5",0x2261) ; identisch
+ or CheckDeadUni("t1",0x2245) ; ungefhr gleich
+ or CheckDeadUni("t4",0x2260))) ; ungleich
send {blind}`=
else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2079)
- or CheckDeadUni("c5",0x2089)))
- Send {blind}{NumPad9}
+ or CheckDeadUni("c5",0x2089)))
+ send {blind}{NumPad9}
else if (Ebene = 5)
SendUnicodeChar(0x03C6) ; phi
else if (Ebene = 6)
- SendUnicodeChar(0x03A6) ; Phi
+ SendUnicodeChar(0x03A6) ; Phi
return
neo_q:
@@ -1672,27 +1587,27 @@ neo_sz:
if (Ebene = 1)
if (GetKeyState("CapsLock","T"))
SendUnicodeChar(0x1E9E) ; versal-
- else if (LangSTastatur = 1)
+ else if LangSTastatur
send {blind}s
else
send
else if (Ebene = 2)
if (GetKeyState("CapsLock","T"))
- if (LangSTastatur = 1)
+ if LangSTastatur
send {blind}s
else
send
else
SendUnicodeChar(0x1E9E) ; versal-
else if (Ebene = 3)
- if (LangSTastatur = 1)
+ if LangSTastatur
send
else
SendUnicodeChar(0x017F) ; langes s
else if (Ebene = 5)
- SendUnicodeChar(0x03C2) ; varsigma
+ SendUnicodeChar(0x03C2) ; varsigma
else if (Ebene = 6)
- SendUnicodeChar(0x2218) ; Verknpfungsoperator
+ SendUnicodeChar(0x2218) ; Verknpfungsoperator
return
@@ -1700,7 +1615,7 @@ neo_tot3:
EbeneAktualisieren()
if (Ebene = 1)
{
- deadUni(0x02DC) ;Tilde, tot
+ deadUni(0x02DC) ; Tilde, tot
DeadKey := "t1"
}
else if (Ebene = 2)
@@ -1720,7 +1635,7 @@ neo_tot3:
}
else if (Ebene = 5)
{
- deadUni(0x02DD) ;Doppelakut
+ deadUni(0x02DD) ; Doppelakut
DeadKey := "t5"
}
else if (Ebene = 6)
@@ -1741,26 +1656,26 @@ return
neo_u:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x00FA,0x00DA)
- or CheckDeadUni12("a2",0x00F9,0x00D9)
- or CheckDeadUni12("a5",0x0173,0x0172)
- or CheckDeadUni12("a6",0x016F,0x016E)
- or CheckDeadUni12("c1",0x00FB,0x00DB)
- or CheckDeadUni12("c2",0x01D4,0x01D3)
- or CheckDeadUni12("c3",0x016D,0x016C)
- or CheckDeadUni12("t1",0x0169,0x0168)
- or CheckDeadUni12("t2",0x016B,0x016A)
- or CheckDeadAsc12("t3","","")
- or CheckDeadUni12("t5",0x0171,0x0170)))
+ or CheckDeadUni12("a2",0x00F9,0x00D9)
+ or CheckDeadUni12("a5",0x0173,0x0172)
+ or CheckDeadUni12("a6",0x016F,0x016E)
+ or CheckDeadUni12("c1",0x00FB,0x00DB)
+ or CheckDeadUni12("c2",0x01D4,0x01D3)
+ or CheckDeadUni12("c3",0x016D,0x016C)
+ or CheckDeadUni12("t1",0x0169,0x0168)
+ or CheckDeadUni12("t2",0x016B,0x016A)
+ or CheckDeadAsc12("t3","","")
+ or CheckDeadUni12("t5",0x0171,0x0170)))
OutputChar("u","U")
else if (Ebene = 3)
send {blind}\
else if (Ebene = 4)
Send {blind}{Home}
- else if (Ebene = 5)
+ else if (Ebene = 5) ; leer
{
CompKey := PriorCompKey
DeadKey := PriorDeadKey
- } ; leer
+ }
else if (Ebene = 6)
SendUnicodeChar(0x222E) ; contour integral
return
@@ -1768,21 +1683,21 @@ return
neo_i:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x00ED,0x00CD)
- or CheckDeadUni12("a2",0x00EC,0x00CC)
- or CheckDeadUni12("a4",0x012F,0x012E)
- or CheckDeadUni12("a5",0x0131,0x0130)
- or CheckDeadUni12("c1",0x00EE,0x00CE)
- or CheckDeadUni12("c2",0x01D0,0x01CF)
- or CheckDeadUni12("c3",0x012D,0x012C)
- or CheckDeadUni12("t1",0x0129,0x0128)
- or CheckDeadUni12("t2",0x012B,0x012A)
- or CheckDeadAsc12("t3","","")))
+ or CheckDeadUni12("a2",0x00EC,0x00CC)
+ or CheckDeadUni12("a4",0x012F,0x012E)
+ or CheckDeadUni12("a5",0x0131,0x0130)
+ or CheckDeadUni12("c1",0x00EE,0x00CE)
+ or CheckDeadUni12("c2",0x01D0,0x01CF)
+ or CheckDeadUni12("c3",0x012D,0x012C)
+ or CheckDeadUni12("t1",0x0129,0x0128)
+ or CheckDeadUni12("t2",0x012B,0x012A)
+ or CheckDeadAsc12("t3","","")))
OutputChar("i","I")
else if (Ebene = 3)
send {blind}`/
else if (Ebene = 4)
Send {Blind}{Left}
- else if (Ebene = 5 )
+ else if (Ebene = 5)
SendUnicodeChar(0x03B9) ; iota
else if (Ebene = 6)
SendUnicodeChar(0x222B) ; integral
@@ -1791,65 +1706,65 @@ return
neo_a:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x00E1,0x00C1)
- or CheckDeadUni12("a2",0x00E0,0x00C0)
- or CheckDeadUni12("a5",0x0105,0x0104)
- or CheckDeadAsc12("a6","","")
- or CheckDeadUni12("c1",0x00E2,0x00C2)
- or CheckDeadUni12("c2",0x01CE,0x01CD)
- or CheckDeadUni12("c3",0x0103,0x0102)
- or CheckDeadUni12("t1",0x00E3,0x00C3)
- or CheckDeadUni12("t2",0x0101,0x0100)
- or CheckDeadAsc12("t3","","")))
+ or CheckDeadUni12("a2",0x00E0,0x00C0)
+ or CheckDeadUni12("a5",0x0105,0x0104)
+ or CheckDeadAsc12("a6","","")
+ or CheckDeadUni12("c1",0x00E2,0x00C2)
+ or CheckDeadUni12("c2",0x01CE,0x01CD)
+ or CheckDeadUni12("c3",0x0103,0x0102)
+ or CheckDeadUni12("t1",0x00E3,0x00C3)
+ or CheckDeadUni12("t2",0x0101,0x0100)
+ or CheckDeadAsc12("t3","","")))
OutputChar("a","A")
else if (Ebene = 3)
send {blind}{{}
else if (Ebene = 4)
Send {Blind}{Down}
else if (Ebene = 5)
- SendUnicodeChar(0x03B1) ;alpha
+ SendUnicodeChar(0x03B1) ; alpha
else if (Ebene = 6)
- SendUnicodeChar(0x2200) ;fr alle
+ SendUnicodeChar(0x2200) ; fr alle
return
neo_e:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x00E9,0x00C9)
- or CheckDeadUni12("a2",0x00E8,0x00C8)
- or CheckDeadUni12("a4",0x0117,0x0116)
- or CheckDeadUni12("a5",0x0119,0x0118)
- or CheckDeadUni12("c1",0x00EA,0x00CA)
- or CheckDeadUni12("c2",0x011B,0x011A)
- or CheckDeadUni12("c3",0x0115,0x0114)
- or CheckDeadUni12("t2",0x0113,0x0112)
- or CheckDeadAsc12("t3","","")
- or CheckCompAsc12("a","","")
- or CheckCompAsc12("A","","")
- or CheckCompAsc12("o","","")
- or CheckCompAsc12("O","","")))
+ or CheckDeadUni12("a2",0x00E8,0x00C8)
+ or CheckDeadUni12("a4",0x0117,0x0116)
+ or CheckDeadUni12("a5",0x0119,0x0118)
+ or CheckDeadUni12("c1",0x00EA,0x00CA)
+ or CheckDeadUni12("c2",0x011B,0x011A)
+ or CheckDeadUni12("c3",0x0115,0x0114)
+ or CheckDeadUni12("t2",0x0113,0x0112)
+ or CheckDeadAsc12("t3","","")
+ or CheckCompAsc12("a","","")
+ or CheckCompAsc12("A","","")
+ or CheckCompAsc12("o","","")
+ or CheckCompAsc12("O","","")))
OutputChar("e","E")
- else if (Ebene = 3) ; {
+ else if (Ebene = 3)
send {blind}{}}
else if (Ebene = 4)
Send {Blind}{Right}
else if (Ebene = 5)
- SendUnicodeChar(0x03B5) ;epsilon
+ SendUnicodeChar(0x03B5) ; epsilon
else if (Ebene = 6)
- SendUnicodeChar(0x2203) ;es existiert
+ SendUnicodeChar(0x2203) ; es existiert
return
neo_o:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x00F3,0x00D3)
- or CheckDeadUni12("a2",0x00F2,0x00D2)
- or CheckDeadUni12("a5",0x01EB,0x01EA)
- or CheckDeadUni12("c1",0x00F4,0x00D4)
- or CheckDeadUni12("c2",0x01D2,0x01D1)
- or CheckDeadUni12("c3",0x014F,0x014E)
- or CheckDeadUni12("t1",0x00F5,0x00D5)
- or CheckDeadUni12("t2",0x014D,0x014C)
- or CheckDeadAsc12("t3","","")
- or CheckDeadUni12("t4",0x00F8,0x00D8)
- or CheckDeadUni12("t5",0x0151,0x0150)))
+ or CheckDeadUni12("a2",0x00F2,0x00D2)
+ or CheckDeadUni12("a5",0x01EB,0x01EA)
+ or CheckDeadUni12("c1",0x00F4,0x00D4)
+ or CheckDeadUni12("c2",0x01D2,0x01D1)
+ or CheckDeadUni12("c3",0x014F,0x014E)
+ or CheckDeadUni12("t1",0x00F5,0x00D5)
+ or CheckDeadUni12("t2",0x014D,0x014C)
+ or CheckDeadAsc12("t3","","")
+ or CheckDeadUni12("t4",0x00F8,0x00D8)
+ or CheckDeadUni12("t5",0x0151,0x0150)))
OutputChar("o","O")
else if (Ebene = 3)
send {blind}*
@@ -1864,35 +1779,55 @@ return
neo_s:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x015B,0x015A)
- or CheckDeadUni12("a3",0x015F,0x015E)
- or CheckDeadUni12("a4",0x1E61,0x1E60)
- or CheckDeadUni12("c1",0x015D,0x015C)
- or CheckDeadUni12("c2",0x0161,0x0160)
- or CheckDeadUni12("c6",0x1E63,0x1A62)))
+ or CheckDeadUni12("a3",0x015F,0x015E)
+ or CheckDeadUni12("a4",0x1E61,0x1E60)
+ or CheckDeadUni12("c1",0x015D,0x015C)
+ or CheckDeadUni12("c2",0x0161,0x0160)
+ or CheckDeadUni12("c6",0x1E63,0x1A62)))
{
if (Ebene = 1)
{
if LangSTastatur
if (GetKeyState("CapsLock","T"))
+ {
send {blind}s
+ if (PriorDeadKey = "comp")
+ Compkey := "s"
+ }
else
+ {
SendUnicodeChar(0x017F) ;langes S
+ if (PriorDeadKey = "comp")
+ CompKey := "lang_s"
+ }
else
+ {
send {blind}s
- if (PriorDeadKey = "comp")
- CompKey := "s"
+ if (PriorDeadKey = "comp")
+ CompKey := "s"
+ }
}
else if (Ebene = 2)
{
if LangSTastatur
if (GetKeyState("CapsLock","T"))
+ {
SendUnicodeChar(0x017F) ;langes S
+ if (PriorDeadKey = "comp")
+ CompKey := "lang_s"
+ }
else
+ {
send {blind}S
+ if (PriorDeadKey = "comp")
+ CompKey := "s"
+ }
else
+ {
send {blind}S
- if (PriorDeadKey = "comp")
- CompKey := "S"
+ if (PriorDeadKey = "comp")
+ CompKey := "S"
+ }
}
}
else if (Ebene = 3)
@@ -1902,21 +1837,21 @@ neo_s:
else if (Ebene = 5)
SendUnicodeChar(0x03C3) ;sigma
else if (Ebene = 6)
- SendUnicodeChar(0x03A3) ; Sigma
+ SendUnicodeChar(0x03A3) ;Sigma
return
neo_n:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x0144,0x0143)
- or CheckDeadUni12("a3",0x0146,0x0145)
- or CheckDeadUni12("a4",0x1E45,0x1E44)
- or CheckDeadUni12("c2",0x0148,0x0147)
- or CheckDeadUni12("t1",0x00F1,0x00D1)))
+ or CheckDeadUni12("a3",0x0146,0x0145)
+ or CheckDeadUni12("a4",0x1E45,0x1E44)
+ or CheckDeadUni12("c2",0x0148,0x0147)
+ or CheckDeadUni12("t1",0x00F1,0x00D1)))
OutputChar("n","N")
else if (Ebene = 3)
- send {blind}( ; )
+ send {blind}(
else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2074)
- or CheckDeadUni("c5",0x2084)))
+ or CheckDeadUni("c5",0x2084)))
Send {blind}{NumPad4}
else if (Ebene = 5)
SendUnicodeChar(0x03BD) ; nu
@@ -1927,17 +1862,17 @@ return
neo_r:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x0155,0x0154)
- or CheckDeadUni12("a3",0x0157,0x0156)
- or CheckDeadUni12("a4",0x0E59,0x0E58)
- or CheckDeadUni12("c2",0x0159,0x0158)
- or CheckDeadUni12("c6",0x1E5B,0x1E5A)
- or CheckCompAsc12("o","","")
- or CheckCompAsc12("O","","")))
+ or CheckDeadUni12("a3",0x0157,0x0156)
+ or CheckDeadUni12("a4",0x0E59,0x0E58)
+ or CheckDeadUni12("c2",0x0159,0x0158)
+ or CheckDeadUni12("c6",0x1E5B,0x1E5A)
+ or CheckCompAsc12("o","","")
+ or CheckCompAsc12("O","","")))
OutputChar("r","R")
- else if (Ebene = 3) ;(
+ else if (Ebene = 3)
send {blind})
else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2075)
- or CheckDeadUni("c5",0x2085)))
+ or CheckDeadUni("c5",0x2085)))
Send {blind}{NumPad5}
else if (Ebene = 5)
SendUnicodeChar(0x03F1) ; rho symbol (varrho)
@@ -1948,20 +1883,20 @@ return
neo_t:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a3",0x0163,0x0162)
- or CheckDeadUni12("a4",0x1E6B,0x1E6A)
- or CheckDeadUni12("c2",0x0165,0x0164)
- or CheckDeadUni12("c5",0x0167,0x0166)
- or CheckDeadUni12("c6",0x1E6D,0x1E6C)))
+ or CheckDeadUni12("a4",0x1E6B,0x1E6A)
+ or CheckDeadUni12("c2",0x0165,0x0164)
+ or CheckDeadUni12("c5",0x0167,0x0166)
+ or CheckDeadUni12("c6",0x1E6D,0x1E6C)))
OutputChar("t","T")
else if (Ebene = 3)
- send {blind}- ; Bis
+ send {blind}- ; Bisstrich
else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2076)
or CheckDeadUni("c5",0x2086)))
Send {blind}{NumPad6}
else if (Ebene = 5)
SendUnicodeChar(0x03C4) ; tau
else if (Ebene = 6)
- SendUnicodeChar(0x2202 ) ; partielle Ableitung
+ SendUnicodeChar(0x2202) ; partielle Ableitung
return
neo_d:
@@ -1977,16 +1912,16 @@ neo_d:
else if (Ebene = 4)
send `,
else if (Ebene = 5)
- SendUnicodeChar(0x03B4) ;delta
+ SendUnicodeChar(0x03B4) ; delta
else if (Ebene = 6)
- SendUnicodeChar(0x0394) ; Delta
+ SendUnicodeChar(0x0394) ; Delta
return
neo_y:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x00FD,0x00DD)
- or CheckDeadUni12("c1",0x0177,0x0176)
- or CheckDeadAsc12("t3","",)))
+ or CheckDeadUni12("c1",0x0177,0x0176)
+ or CheckDeadAsc12("t3","","")))
OutputChar("y","Y")
else if (Ebene = 3)
send {blind}@
@@ -2007,19 +1942,19 @@ return
neo_:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x01D8,0x01D7)
- or CheckDeadUni12("a2",0x01DC,0x01DB)
- or CheckDeadUni12("c2",0x01DA,0x01D9)
- or CheckDeadUni12("t2",0x01D6,0x01D5)))
+ or CheckDeadUni12("a2",0x01DC,0x01DB)
+ or CheckDeadUni12("c2",0x01DA,0x01D9)
+ or CheckDeadUni12("t2",0x01D6,0x01D5)))
OutputChar("","")
else if (Ebene = 3)
send {#}
else if (Ebene = 4)
Send {blind}{Esc}
- else if (Ebene = 5)
+ else if (Ebene = 5) ; leer
{
DeadKey := PriorDeadKey
CompKey := PriorCompKey
- } ; leer
+ }
else if (Ebene = 6)
SendUnicodeChar(0x221D) ; proportional
return
@@ -2048,11 +1983,11 @@ neo_:
else if (Ebene = 3)
send {blind}|
else if (Ebene = 4)
- Send {blind}{PgDn} ; Next
+ Send {blind}{PgDn} ; Next
else if (Ebene = 5)
SendUnicodeChar(0x03B7) ; eta
else if (Ebene = 6)
- SendUnicodeChar(0x211C) ; altes R
+ SendUnicodeChar(0x211C) ; Fraktur R
return
neo_p:
@@ -2064,29 +1999,29 @@ neo_p:
else if (Ebene = 4)
Send {blind}{Enter}
else if (Ebene = 5)
- SendUnicodeChar(0x03C0) ;pi
+ SendUnicodeChar(0x03C0) ; pi
else if (Ebene = 6)
- SendUnicodeChar(0x03A0) ; Pi
+ SendUnicodeChar(0x03A0) ; Pi
return
neo_z:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a1",0x017A,0x0179)
- or CheckDeadUni12("a4",0x017C,0x017B)
- or CheckDeadUni12("c2",0x017E,0x017D)
- or CheckDeadUni12("c6",0x1E93,0x1E92)))
+ or CheckDeadUni12("a4",0x017C,0x017B)
+ or CheckDeadUni12("c2",0x017E,0x017D)
+ or CheckDeadUni12("c6",0x1E93,0x1E92)))
OutputChar("z","Z")
else if (Ebene = 3)
- send ``{space} ; untot
+ send ``{space} ; untot
else if (Ebene = 4)
{
DeadKey := PriorDeadKey
CompKey := PriorCompKey
} ; leer
else if (Ebene = 5)
- SendUnicodeChar(0x03B6) ;zeta
+ SendUnicodeChar(0x03B6) ; zeta
else if (Ebene = 6)
- SendUnicodeChar(0x2124) ; Z (ganze Zahlen)
+ SendUnicodeChar(0x2124) ; Z (ganze Zahlen)
return
neo_b:
@@ -2106,17 +2041,14 @@ return
neo_m:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("a4",0x1E41,0x1E40)
- or CheckDeadUni12("c6",0x1E43,0x1E42)
- or CheckCompUni12("t",0x2122,0x2122) ; TM
- or CheckCompUni12("T",0x2122,0x2122) ; TM
- or CheckCompUni12("s",0x2120,0x2120) ; SM
- or CheckCompUni12("S",0x2120,0x2120))) ; SM
-
+ or CheckDeadUni12("c6",0x1E43,0x1E42)
+ or CheckCompUni12("t",0x2122,0x2122) ; TM
+ or CheckCompUni12("s",0x2120,0x2120))) ; SM
OutputChar("m","M")
else if (Ebene = 3)
send {blind}`%
else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B9)
- or CheckDeadUni("c5",0x2081)))
+ or CheckDeadUni("c5",0x2081)))
Send {blind}{NumPad1}
else if (Ebene = 5)
SendUnicodeChar(0x03BC) ; griechisch mu, micro wre 0x00B5
@@ -2136,7 +2068,7 @@ neo_komma:
else if (Ebene = 3)
send {blind}"
else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B2)
- or CheckDeadUni("c5",0x2082)))
+ or CheckDeadUni("c5",0x2082)))
Send {blind}{NumPad2}
else if (Ebene = 5)
SendUnicodeChar(0x03C1) ; rho
@@ -2156,12 +2088,12 @@ neo_punkt:
else if (Ebene = 3)
send {blind}'
else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B3)
- or CheckDeadUni("c5",0x2083)))
+ or CheckDeadUni("c5",0x2083)))
Send {blind}{NumPad3}
else if (Ebene = 5)
SendUnicodeChar(0x03D1) ; theta symbol (vartheta)
else if (Ebene = 6)
- SendUnicodeChar(0x0398) ; Theta
+ SendUnicodeChar(0x0398) ; Theta
return
@@ -2169,12 +2101,12 @@ neo_j:
EbeneAktualisieren()
if (Ebene12 and !(CheckDeadUni12("c1",0x0135,0x0134)
or CheckDeadUni12("c2",0x01F0,"")
- or CheckCompUni12("i",0x0133,"") ; ij
- or CheckCompUni12("I","",0x0132) ; IJ
- or CheckCompUni12("l",0x01C9,"") ; lj
- or CheckCompUni12("L",0x01C8,0x01C7) ; Lj/LJ
- or CheckCompUni12("n",0x01CC,"") ; nj
- or CheckCompUni12("N",0x01CB,0x01CA))) ; Nj/NJ
+ or CheckCompUni("i",0x0133) ; ij
+ or CheckCompUni("l",0x01C9) ; lj
+ or CheckCompUni("n",0x01CC) ; nj
+ or CheckCompUni("I",0x0132) ; IJ
+ or CheckCompUni12("L",0x01C8,0x01C7) ; Lj/LJ
+ or CheckCompUni12("N",0x01CB,0x01CA))) ; Nj/NJ
OutputChar("j","J")
else if (Ebene = 3)
send {blind}`;
@@ -2190,343 +2122,325 @@ return
Numpad
-
- folgende Tasten verhalten sich bei ein- und ausgeschaltetem
- NumLock gleich:
*/
+neo_NumLock:
+ EbeneAktualisieren()
+ if (Ebene = 1)
+ send `=
+ if (Ebene = 2) ; Funktioniert nicht
+ {
+ SetNumLockState
+ send {NumLock}
+ }
+ if (Ebene = 3)
+ SendUnicodeChar(0x2248) ; Fast gleich
+ if (Ebene = 4)
+ SendUnicodeChar(0x2260) ; Ungleich zu
+return
+
neo_NumpadDiv:
EbeneAktualisieren()
- if ((Ebene = 1) or (Ebene = 2))
+ if Ebene14
send {blind}{NumpadDiv}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x2215) ; Slash
else if (Ebene = 3)
send {blind}
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x2215) ; slash
return
neo_NumpadMult:
EbeneAktualisieren()
- if ((Ebene = 1) or (Ebene = 2))
+ if Ebene14
send {blind}{NumpadMult}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x22C5) ; Cdot
else if (Ebene = 3)
send {blind}
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x22C5) ; cdot
return
neo_NumpadSub:
EbeneAktualisieren()
- if (((Ebene = 1) or (Ebene = 2)) and !(CheckDeadUni("c1",0x207B)
- or CheckDeadUni("c5",0x208B)))
+ if (Ebene14 and !(CheckDeadUni("c1",0x207B)
+ or CheckDeadUni("c5",0x208B)))
send {blind}{NumpadSub}
else if (Ebene = 3)
- SendUnicodeChar(0x2212) ; echtes minus
+ SendUnicodeChar(0x2212) ; Echtes Minus
return
neo_NumpadAdd:
EbeneAktualisieren()
- if (((Ebene = 1) or (Ebene = 2)) and !(CheckDeadUni("c1",0x207A)
- or CheckDeadUni("c5",0x208A)))
+ if (Ebene14 and !(CheckDeadUni("c1",0x207A)
+ or CheckDeadUni("c5",0x208A)))
send {blind}{NumpadAdd}
else if (Ebene = 3)
send {blind}
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x2213) ; -+
+ else if (Ebene = 2)
+ SendUnicodeChar(0x2213) ; Inverses
return
neo_NumpadEnter:
- EbeneAktualisieren()
- if ((Ebene = 1) or (Ebene = 2))
- send {blind}{NumpadEnter}
- else if (Ebene = 3)
- SendUnicodeChar(0x2260) ; neq
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x2248) ; approx
+ send {blind}{NumpadEnter}
return
-/*
- folgende Tasten verhalten sich bei ein- und ausgeschaltetem NumLock
- unterschiedlich
-*/
-
-
-
neo_Numpad7:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadHome}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadHome}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
+ if (Ebene = 1)
{
- if (Ebene = 1)
+ if NumLock
send {blind}{Numpad7}
else
- send {blind){Shift up}{Numpad7}{Shift down}
-
+ send {blind){Shift up}{Numpad7}
if (PriorDeadKey = "comp")
- CompKey := "Num_7"
+ CompKey := "7"
}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x2020) ; Kreuz
else if (Ebene = 3)
- SendUnicodeChar(0x2195) ; Hoch-Runter-Pfeil
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x226A) ; ll
+ SendUnicodeChar(0x2195) ; Hoch-Runter-Pfeil
+ else if (Ebene = 4)
+ if NumLock
+ send {blind}{Shift up}{NumpadHome}
+ else
+ send {blind}{NumpadHome}
return
neo_Numpad8:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadUp}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadUp}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
- {
- if !(CheckCompUni("Num_1",0x215B) ; 1/8
- or CheckCompUni("1",0x215B) ; 1/8
- or CheckCompUni("Num_3",0x215C) ; 3/8
- or CheckCompUni("3",0x215C) ; 3/8
- or CheckCompUni("Num_5",0x215D) ; 3/8
- or CheckCompUni("5",0x215D) ; 5/8
- or CheckCompUni("Num_7",0x215E) ; 7/8
- or CheckCompUni("7",0x215E)) ; 7/8
- if (Ebene = 1)
- send {blind}{Numpad8}
- else
- send {blind){Shift up}{Numpad8}{Shift down}
-
+ if ((Ebene = 1) and !(CheckCompUni("1",0x215B) ; 1/8
+ or CheckCompUni("3",0x215C) ; 3/8
+ or CheckCompUni("5",0x215D) ; 5/8
+ or CheckCompUni("7",0x215E))) ; 7/8
+ {
+ if NumLock
+ send {blind}{Numpad8}
+ else
+ send {blind){Shift up}{Numpad8}
if (PriorDeadKey = "comp")
- CompKey := "Num_8"
+ CompKey := "8"
}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x2229) ; Durchschnitt
else if (Ebene = 3)
- SendUnicodeChar(0x2191) ; uparrow
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x2229) ; intersection
+ SendUnicodeChar(0x2191) ; Hochpfeil
+ else if (Ebene = 4)
+ if NumLock
+ send {blind}{Shift up}{NumpadUp}
+ else
+ send {blind}{NumpadUp}
return
neo_Numpad9:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadPgUp}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadPgUp}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
+ if (Ebene = 1)
{
- if (Ebene = 1)
+ if NumLock
send {blind}{Numpad9}
else
- send {blind){Shift up}{Numpad9}{Shift down}
-
+ send {blind){Shift up}{Numpad9}
if (PriorDeadKey = "comp")
- CompKey := "Num_9"
+ CompKey := "9"
}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x2297) ; Tensorprodukt / Vektor in die Ebene zeigend
else if (Ebene = 3)
- SendUnicodeChar(0x2297) ; Tensorprodukt ; Vektor in die Ebene zeigend
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x226B) ; gg
+ SendUnicodeChar(0x220D) ; Kleines umgekehrtes Elementzeichen
+ else if (Ebene = 4)
+ if NumLock
+ send {blind}{Shift up}{NumpadPgUp}
+ else
+ send {blind}{NumpadPgUp}
return
-
-
neo_Numpad4:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadLeft}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadLeft}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
- {
- if !(CheckCompUni("Num_1",0x00BC) ; 1/4
- or CheckCompUni("1",0x00BE) ; 1/4
- or CheckCompUni("Num_3",0x00BE) ; 3/4
- or CheckCompUni("3",0x00BE)) ; 3/4
- if (Ebene = 1)
- send {blind}{Numpad4}
- else
- send {blind){Shift up}{Numpad4}{Shift down}
-
+ if ((Ebene = 1) and !(CheckCompUni("1",0x00BC) ; 1/4
+ or CheckCompUni("3",0x00BE))) ; 3/4
+ {
+ if NumLock
+ send {blind}{Numpad4}
+ else
+ send {blind){Shift up}{Numpad4}
if (PriorDeadKey = "comp")
- CompKey := "Num_4"
+ CompKey := "4"
}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x2282) ; Teilmenge
else if (Ebene = 3)
- SendUnicodeChar(0x2190) ; leftarrow
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x2282) ; subset of
+ SendUnicodeChar(0x2190) ; Linkspfeil
+ else if (Ebene = 4)
+ if NumLock
+ send {blind}{Shift up}{NumpadLeft}
+ else
+ send {blind}{NumpadLeft}
return
neo_Numpad5:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadClear}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadClear}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
- {
- if !(CheckCompUni("Num_1",0x2155) ; 1/5
- or CheckCompUni("1",0x2155) ; 1/5
- or CheckCompUni("Num_2",0x2156) ; 2/5
- or CheckCompUni("2",0x2156) ; 2/5
- or CheckCompUni("Num_3",0x2157) ; 3/5
- or CheckCompUni("3",0x2157) ; 3/5
- or CheckCompUni("Num_4",0x2158) ; 4/5
- or CheckCompUni("4",0x2158)) ; 4/5
- if (Ebene = 1)
- send {blind}{Numpad5}
- else
- send {blind){Shift up}{Numpad5}{Shift down}
-
+ if ((Ebene = 1) and !(CheckCompUni("1",0x2155) ; 1/5
+ or CheckCompUni("2",0x2156) ; 2/5
+ or CheckCompUni("3",0x2157) ; 3/5
+ or CheckCompUni("4",0x2158))) ; 4/5
+ {
+ if NumLock
+ send {blind}{Numpad5}
+ else
+ send {blind){Shift up}{Numpad5}
if (PriorDeadKey = "comp")
- CompKey := "Num_5"
+ CompKey := "5"
}
else if (Ebene = 3)
- SendUnicodeChar(0x221E) ; INFINITY
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x220B) ; enthlt das Element
+ SendUnicodeChar(0x221E) ; Unendlich
+ else if (Ebene = 2)
+ SendUnicodeChar(0x20AC) ; Euro
+ else if (Ebene = 4) ; Beg
+ if NumLock
+ send {NumPad5}
+ else
+ send {Shift}{Numpad5}
return
neo_Numpad6:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadRight}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadRight}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
- {
- if !(CheckCompUni("Num_1",0x2159) ; 1/6
- or CheckCompUni("1",0x2159) ; 1/6
- or CheckCompUni("Num_5",0x215A) ; 5/6
- or CheckCompUni("5",0x215A)) ; 5/6
- if (Ebene = 1)
- send {blind}{Numpad6}
- else
- send {blind){Shift up}{Numpad6}{Shift down}
-
+ if ((Ebene = 1) and !(CheckCompUni("1",0x2159) ; 1/6
+ or CheckCompUni("5",0x215a))) ; 5/6
+ {
+ if NumLock
+ send {blind}{Numpad6}
+ else
+ send {blind){Shift up}{Numpad6}
if (PriorDeadKey = "comp")
- CompKey := "Num_6"
+ CompKey := "6"
}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x2283) ; Obermenge
else if (Ebene = 3)
- SendUnicodeChar(0x2192) ; rightarrow
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x2283) ; superset of
+ SendUnicodeChar(0x2192) ; Rechtspfeil
+ else if (Ebene = 4)
+ if NumLock
+ send {blind}{Shift up}{NumpadRight}
+ else
+ send {blind}{NumpadRight}
return
neo_Numpad1:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadEnd}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadEnd}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
+ if (Ebene = 1)
{
- if (Ebene = 1)
+ if NumLock
send {blind}{Numpad1}
else
- send {blind){Shift up}{Numpad1}{Shift down}
-
+ send {blind){Shift up}{Numpad1}
if (PriorDeadKey = "comp")
- CompKey := "Num_1"
+ CompKey := "1"
}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x2714) ; Hkchen
else if (Ebene = 3)
SendUnicodeChar(0x2194) ; Links-Rechts-Pfeil
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x2264) ; leq
+ else if (Ebene = 4)
+ if NumLock
+ send {blind}{Shift up}{NumpadEnd}
+ else
+ send {blind}{NumpadEnd}
return
neo_Numpad2:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadDown}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadDown}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
- {
- if !(CheckCompUni("Num_1",0x00BD) ; 1/2
- or CheckCompUni("1",0x00BD)) ; 1/2
- if (Ebene = 1)
- send {blind}{Numpad2}
- else
- send {blind){Shift up}{Numpad2}{Shift down}
-
+ if ((Ebene = 1) and !(CheckCompUni("1",0x00BD))) ; 1/2
+ {
+ if NumLock
+ send {blind}{Numpad2}
+ else
+ send {blind){Shift up}{Numpad2}
if (PriorDeadKey = "comp")
- CompKey := "Num_2"
+ CompKey := "2"
}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x222A) ; Vereinigung
else if (Ebene = 3)
- SendUnicodeChar(0x2193) ; downarrow
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x222A) ; vereinigt
+ SendUnicodeChar(0x2192) ; Untenpfeil
+ else if (Ebene = 4)
+ if NumLock
+ send {blind}{Shift up}{NumpadDown}
+ else
+ send {blind}{NumpadDown}
return
neo_Numpad3:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadPgDn}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadPgDn}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
- {
- if !(CheckCompUni("Num_1",0x2153) ; 1/3
- or CheckCompUni("1",0x2154) ; 1/3
- or CheckCompUni("Num_2",0x2154) ; 2/3
- or CheckCompUni("2",0x2154)) ; 2/3
- if (Ebene = 1)
- send {blind}{Numpad3}
- else
- send {blind){Shift up}{Numpad3}{Shift down}
-
+ if ((Ebene = 1) and !(CheckCompUni("1",0x2153) ; 1/3
+ or CheckCompUni("5",0x2154))) ; 2/3
+ {
+ if NumLock
+ send {blind}{Numpad3}
+ else
+ send {blind){Shift up}{Numpad3}
if (PriorDeadKey = "comp")
- CompKey := "Num_3"
+ CompKey := "3"
}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x2718) ; Kreuzchen
else if (Ebene = 3)
- SendUnicodeChar(0x21CC) ; RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON
- else if ((Ebene = 4) or (Ebene = 5))
- SendUnicodeChar(0x2265) ; geq
+ SendUnicodeChar(0x2192) ; Rechtspfeil
+ else if (Ebene = 4)
+ if NumLock
+ send {blind}{Shift up}{NumpadPgDn}
+ else
+ send {blind}{NumpadPgDn}
return
neo_Numpad0:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadIns}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadIns}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
+ if (Ebene = 1)
{
- if (Ebene = 1)
+ if NumLock
send {blind}{Numpad0}
else
- send {blind){Shift up}{Numpad0}{Shift down}
-
+ send {blind){Shift up}{Numpad0}
if (PriorDeadKey = "comp")
- CompKey := "Num_0"
+ CompKey := "0"
}
+ else if (Ebene = 2)
+ SendUnicodeChar(0x2030) ; Promille
else if (Ebene = 3)
- send {blind}`%
- else if ((Ebene = 4) or (Ebene = 5))
- send
+ SendUnicodeChar(0x0025) ; Prozent
+ else if (Ebene = 4)
+ if NumLock
+ send {blind}{Shift up}{NumpadIns}
+ else
+ send {blind}{NumpadIns}
return
neo_NumpadDot:
EbeneAktualisieren()
- if ((Ebene = 1) and (NumLock = 0))
- send {blind}{NumpadDel}
- else if ((Ebene = 2) and (NumLock = 1))
- send {blind}{Shift up}{NumpadDel}{Shift down}
- else if (((Ebene = 1) and (NumLock = 1)) or ((Ebene = 2) and (NumLock = 0)))
- if (Ebene = 1)
+ if (Ebene = 1)
+ {
+ if NumLock
send {blind}{NumpadDot}
- else
- send {blind){Shift up}{NumpadDot}{Shift down}
+ else
+ send {blind){Shift up}{NumpadDot}
+ }
+ else if (Ebene = 2)
+ send `,
else if (Ebene = 3)
send {blind}.
- else if ((Ebene = 4) or (Ebene = 5))
- send `,
+ else if (Ebene = 4)
+ if NumLock
+ send {blind}{Shift up}{NumpadDel}
+ else
+ send {blind}{NumpadDel}
return
+
+
/*
Sondertasten
*/
+
*space::
if ((einHandNeo))
spacepressed := 1
@@ -2573,11 +2487,7 @@ return
/*
Folgende Tasten sind nur aufgefhrt, um PriorDeadKey zu leeren.
Irgendwie sieht das noch nicht schn aus. Vielleicht lsst sich dieses
- Problem irgendwie eleganter lsen...
-
- Nachtrag:
- Weil es mit Alt+Tab Probleme gab, wird hier jetzt erstmal rumgeflickschustert,
- bis eine allgemeinere Lsung gefunden wurde.
+ Problem auch eleganter lsen...
*/
*Enter::
@@ -2596,6 +2506,7 @@ return
}
return
+
*Del::
if (not(lernModus) or lernModus_std_Entf)
send {Blind}{Del}
@@ -2701,7 +2612,7 @@ return
Benutzungshinweise: Man benutze
KeyboardLED(LEDvalue,"Cmd"), wobei
Cmd = on/off/switch,
- LEDvalue: ScrollLock=1, NumLock=2, CapsLock=4
+ LEDvalue: ScrollLock=1, NumLock=2, CapsLock=4,
bzw. eine beliebige Summe dieser Werte:
AlleAus=0, CapsLock+NumLock=6, etc.
@@ -2709,7 +2620,7 @@ return
http://www.autohotkey.com/forum/viewtopic.php?t=10532
Um eventuelle Wechselwirkungen mit dem bestehenden
- Code (insb. der Unicode-Konvertierung) auszuschieen,
+ Code (insb. der Unicode-Konvertierung) auszuschlieen,
sind auch alle (Hilfsmethoden) mit dem Postfix LED
versehen worden.
------------------------------------------------------
@@ -2816,138 +2727,6 @@ InsertIntegerLED(pInteger, ByRef pDest, pOffset = 0, pSize = 4)
-/*
- Funktionen
-*/
-
-/*
-Ebenen laut Referenz:
-1. Ebene (kein Mod) 4. Ebene (Mod4)
-2. Ebene (Umschalt) 5. Ebene (Umschalt+Mod3)
-3. Ebene (Mod3) 6. Ebene (Mod3+Mod4)
-*/
-
-EbeneAktualisieren()
-{
- global
- PriorDeadKey := DeadKey
- PriorCompKey := CompKey
- DeadKey := ""
- CompKey := ""
- Ebene12 := 0
- Ebene7 := 0
- Ebene8 := 0
- Modstate := IsShiftPressed() . IsMod3Pressed() . IsMod4Pressed()
-
- if (ahkTreiberKombi)
- if ( Modstate = "001")
- Ebene = 6
- else
- Ebene = -1
- else
- if (Modstate = "000")
- Ebene = 1 ; Ebene 1: Ohne Mod
- else if (Modstate = "100")
- Ebene = 2 ; Ebene 2: Shift
- else if (Modstate = "010")
- Ebene = 3 ; Ebene 3: Mod3
- else if (Modstate = "001")
- Ebene = 4 ; Ebene 4: Mod4
- else if (Modstate = "110")
- Ebene = 5 ; Ebene 5: Shift+Mod3
- else if (Modstate = "011")
- Ebene = 6 ; Ebene 6: Mod3+Mod4
- else if (Modstate = "101")
- {
- Ebene = 4 ; Ebene 7: Shift+Mod4 impliziert Ebene 4
- Ebene7 = 1
- }
- else if (Modstate = "111")
- {
- Ebene = 6 ; Ebene 8: Shift+Mod3+Mod4 impliziert Ebene 6
- Ebene8 = 1
- }
-
- Ebene12 := ((Ebene = 1) or (Ebene = 2))
-
- if GetKeyState("NumLock","T")
- NumLock = 1
- else
- NumLock = 0
-}
-
-
-IsShiftPressed()
-{
- return GetKeyState("Shift","P")
-}
-
-IsMod3Pressed()
-{
- global
- if (IsMod3Locked)
- {
- return (not ( GetKeyState("CapsLock","P") or GetKeyState("#","P") )) ; # = SC02B
- }
- else {
- return ( GetKeyState("CapsLock","P") or GetKeyState("#","P") ) ; # = SC02B
- }
-}
-
-IsMod4Pressed()
-{
- global
- if( not(einHandNeo) or not(spacepressed) )
- {
- if (IsMod4Locked)
- {
- return (not ( GetKeyState("<","P") or GetKeyState("SC138","P")))
- }
- else {
- return ( GetKeyState("<","P") or GetKeyState("SC138","P"))
- }
- }
- else
- {
- if (IsMod4Locked)
- {
- return (not ( GetKeyState("<","P") or GetKeyState("SC138","P") or GetKeyState("","P")))
- }
- else {
- return ( GetKeyState("<","P") or GetKeyState("SC138","P") or GetKeyState("","P"))
- }
- }
-
-}
-
-
-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)
- }
-}
-/*
-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 fhrendem 0x angegeben sind. Die abenteuerliche ^+u-Konstruktion bentigt im brigen den Hex-Wert in Kleinschrift, was derzeit nicht bei den Zeichendefinitionen umgesetzt ist, daher zentral und weniger fehlertrchtig an dieser Stelle. Auerdem ein abschlieend gesendetes Space, sonst bleibt der eingetippte Unicode-Wert noch kurz sichtbar stehen, bevor er sich GTK-sei-dank in das gewnschte Zeichen verwandelt.
-*/
-
-
BSSendUnicodeChar(charCode)
{
send {bs}
@@ -2966,12 +2745,6 @@ Comp3UnicodeChar(charCode)
SendUnicodeChar(charCode)
}
-
-EncodeInteger(ref, val)
-{
- DllCall("ntdll\RtlFillMemoryUlong", "Uint", ref, "Uint", 4, "Uint", val)
-}
-
deadAsc(val)
{
global
@@ -3271,7 +3044,36 @@ BSUnicode(code)
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 fhrendem 0x angegeben sind. Die abenteuerliche ^+u-Konstruktion bentigt im brigen den Hex-Wert in Kleinschrift, was derzeit nicht bei den Zeichendefinitionen umgesetzt ist, daher zentral und weniger fehlertrchtig an dieser Stelle. Auerdem ein abschlieend gesendetes Space, sonst bleibt der eingetippte Unicode-Wert noch kurz sichtbar stehen, bevor er sich GTK-sei-dank in das gewnschte 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)
+ }
+}
+EncodeInteger(ref, val)
+{
+ DllCall("ntdll\RtlFillMemoryUlong", "Uint", ref, "Uint", 4, "Uint", val)
+}
/*
------------------------------------------------------
@@ -3448,99 +3250,5 @@ ToggleAlwaysOnTop:
alwaysOnTop = 1
}
Return
- ; Ende der BildschirmTastatur
-
-
-/*
- ------------------------------------------------------
- Shift+Pause "pausiert" das Script.
- ------------------------------------------------------
-*/
-
-*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 ntig.
- `nWenn Autohotkey aktiviert ist, werden alle Tastendrucke
- abgefangen und statt dessen eine bersetzung weitergeschickt.
- `nDies geschieht transparent fr den Anwender,
- es muss nichts installiert werden.
- `nDie Zeichenbersetzung 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
 \ No newline at end of file
diff --git a/windows/autohotkey/neo20.exe b/windows/autohotkey/neo20.exe
index 8490524..beef924 100644
--- a/windows/autohotkey/neo20.exe
+++ b/windows/autohotkey/neo20.exe
Binary files differ