From bed114b5561ee8228b8f469aee88fe022da517ae Mon Sep 17 00:00:00 2001 From: martin_r Date: Sat, 30 Aug 2008 15:03:30 +0000 Subject: Cokos: ›‼‹, ›⁇‹ über ♫?2/♫!2. Blinde Compose jetzt auch bei SendUnicodeChar(). SendUnicodeChar belegt CompKey mit dem Argument. Nicht-blinde Compose wiederhergestellt. Vorbereitungen zur Aufnahme weiterer Cokos. Begrenzung der (blinden) Compose auf 2 Zeichen, wenn keine Übereinstimmung mit Coko vorliegt. »ẗ« zu den Tokos hinzugefügt. "DeadKey :=" in die dead*-Methoden verschoben. OutputChar in OutputChar12 umbenannt, OutputChar hat nur noch ein Argument. Code zusammengefasst, Formatierungen angepasst. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.neo-layout.org@833 b9310e46-f624-0410-8ea1-cfbb3a30dc96 --- windows/autohotkey/Changelog-and-Todo.txt | 11 + windows/autohotkey/Source/Keys-Neo.ahk | 327 ++++++++++------------ windows/autohotkey/Source/Methods-Other.ahk | 60 +++- windows/autohotkey/Source/Methods-Unicode.ahk | 2 + windows/autohotkey/neo20.ahk | 389 +++++++++++++------------- windows/autohotkey/neo20.exe | Bin 424021 -> 424045 bytes 6 files changed, 409 insertions(+), 380 deletions(-) (limited to 'windows') diff --git a/windows/autohotkey/Changelog-and-Todo.txt b/windows/autohotkey/Changelog-and-Todo.txt index 1a195c4..826b089 100644 --- a/windows/autohotkey/Changelog-and-Todo.txt +++ b/windows/autohotkey/Changelog-and-Todo.txt @@ -23,6 +23,17 @@ Matthias Wächter === Änderungshistorie === +Revision 833 (von Martin Roppelt) +- Cokos: ›‼‹, ›⁇‹ über ♫?2/♫!2. +- Blinde Compose jetzt auch bei SendUnicodeChar(). +- SendUnicodeChar belegt CompKey mit dem Argument. +- Nicht-blinde Compose wiederhergestellt. +- Vorbereitungen zur Aufnahme weiterer Cokos. +- Begrenzung der (blinden) Compose auf 2 Zeichen, wenn keine Übereinstimmung mit Coko vorliegt. +- »ẗ« zu den Tokos hinzugefügt. +- "DeadKey :=" in die dead*-Methoden verschoben. +- OutputChar in OutputChar12 umbenannt, OutputChar hat nur noch ein Argument. +- Code zusammengefasst, Formatierungen angepasst. Revisionen 827-830 (von Martin Roppelt) - 2 Achtelnoten (Composesymbol) auf 3(4). - CapsLock-Bug Ⅱ.: CapsLock funktionierte nicht mehr, wenn eine Taste gedrückt wurde, auf die CapsLock nicht wirkt (Ziffernreihe/-block, Akzente, Punkt, Komma), da die Zeile »NoCaps = 0« in der isShiftPressed() nie ausgeführt wird. diff --git a/windows/autohotkey/Source/Keys-Neo.ahk b/windows/autohotkey/Source/Keys-Neo.ahk index 2ed77e6..4024e9d 100644 --- a/windows/autohotkey/Source/Keys-Neo.ahk +++ b/windows/autohotkey/Source/Keys-Neo.ahk @@ -5,44 +5,33 @@ */ neo_tot1: - noCaps=1 + noCaps = 1 EbeneAktualisieren() - if (Ebene=1) and !CheckDeadUni("c1",0x0302) { - deadUni(0x02C6) ; Zirkumflex, tot - DeadKey = c1 - } else if (Ebene = 2) and !CheckDeadUni("c2",0x030C) { - deadUni(0x02C7) ; Caron, tot - DeadKey = c2 - } else if (Ebene = 3) and !CheckDeadUni("c3",0x0306) { - deadUni(0x02D8) ; Brevis, tot - DeadKey = c3 - } else if (Ebene = 4) { - deadUni(0x00B7) ; Mittenpunkt, tot - DeadKey = c4 - } else if (Ebene = 5) and !CheckDeadUni("c5",0x0335) { - deadUni(0x002D) ; Querstrich, tot - DeadKey = c5 - } else if (Ebene = 6) and !CheckDeadUni("c6",0x0323) { - deadUni(0x002E) ; Punkt drunter (Colon), tot - DeadKey = c6 - } CompKey := PriorCompKey + if (Ebene = 1) and !CheckDeadUni("c1",0x0302) + deadUni(0x02C6, "c1") ; Zirkumflex, tot + else if (Ebene = 2) and !CheckDeadUni("c2",0x030C) + deadUni(0x02C7, "c2") ; Caron, tot + else if (Ebene = 3) and !CheckDeadUni("c3",0x0306) + deadUni(0x02D8, "c3") ; Brevis, tot + else if (Ebene = 4) + deadUni(0x00B7, "c4") ; Mittenpunkt, tot + else if (Ebene = 5) and !CheckDeadUni("c5",0x0335) + deadUni(0x002D, "c5") ; Querstrich, tot + else if (Ebene = 6) and !CheckDeadUni("c6",0x0323) + deadUni(0x002E, "c6") ; Punkt drunter (Colon), tot + CompKey := PriorCompKey return neo_1: noCaps=1 EbeneAktualisieren() - if Ebene12 { + if Ebene12 if !(CheckDeadUni("c1",0x00B9) ; Hochgestellte 1 or CheckDeadUni("c5",0x2081) ; Tiefgestellte 1 or CheckComp3Uni("r_1",0x217A) ; Rmisch xi or CheckComp3Uni("R_1",0x216A)) ; Rmisch XI - outputChar(1,"") - if !checkComp(1) - if (PriorCompKey == "r") - CompKey := "r_1" - else if (PriorCompkey == "R") - CompKey := "R_1" - } else if (Ebene = 3) + OutputChar12(1,"") + else if (Ebene = 3) SendUnicodeChar(0x00B9) ; Hochgestellte 1 else if (Ebene = 4) SendUnicodeChar(0x2022) ; Bullet @@ -55,16 +44,16 @@ return neo_2: noCaps = 1 EbeneAktualisieren() - if (Ebene = 1) { - if !(CheckDeadUni("c1",0x00B2) ; Hochgestellte 2 - or CheckDeadUni("c5",0x2082) ; Tiefgestellte 2 - or CheckCompUni("r",0x2171) ; Rmisch ii - or CheckCompUni("R",0x2161) ; Rmisch II - or CheckComp3Uni("r_1",0x217B) ; Rmisch xii - or CheckComp3Uni("R_1",0x216B)) ; Rmisch XII - outputChar(2,"") - checkComp(2) - } else if (Ebene = 2) + if (Ebene = 1 and !(CheckDeadUni("c1",0x00B2) ; Hochgestellte 2 + or CheckDeadUni("c5",0x2082) ; Tiefgestellte 2 + or CheckCompUni("r",0x2171) ; Rmisch ii + or CheckCompUni("R",0x2161) ; Rmisch II + or CheckComp3Uni("r_1",0x217B) ; Rmisch xii + or CheckComp3Uni("R_1",0x216B) ; Rmisch XII + or CheckCompUni("{!}",0x203C) ; DOUBLE EXCLAMATION MARK + or CheckCompUni("?",0x2047))) ; DOUBLE QUESTION MARK + OutputChar(2) + else if (Ebene = 2) SendUnicodeChar(0x2116) ; Numero else if (Ebene = 3) SendUnicodeChar(0x00B2) ; Hochgestellte 2 @@ -86,8 +75,7 @@ neo_3: or CheckCompUni("2",0x2154) ; 2/3 or CheckCompUni("r",0x2172) ; Rmisch iii or CheckCompUni("R",0x2162)) ; Rmisch III - outputChar(3,"") - checkComp(3) + OutputChar12(3,"") } else if (Ebene = 3) SendUnicodeChar(0x00B3) ; Hochgestellte 3 else if (Ebene = 4) @@ -106,8 +94,7 @@ neo_4: or CheckDeadUni("c5",0x2084) ; Tiefgestellte 4 or CheckCompUni("r",0x2173) ; Rmisch iv or CheckCompUni("R",0x2163)) ; Rmisch IV - outputChar(4,"") - checkComp(4) + OutputChar(4) } else if (Ebene = 2) SendUnicodeChar(0x00BB) ; Double guillemot right else if (Ebene = 3) @@ -132,8 +119,7 @@ neo_5: or CheckCompUni("4",0x2158) ; 4/5 or CheckCompUni("r",0x2174) ; Rmisch v or CheckCompUni("R",0x2164)) ; Rmisch V - outputChar(5,"") - checkComp(5) + OutputChar(5) } else if (Ebene = 2) SendUnicodeChar(0x00AB) ; Double guillemot left else if (Ebene = 3) @@ -154,8 +140,7 @@ neo_6: or CheckCompUni("5",0x215A) ; 5/6 or CheckCompUni("r",0x2175) ; Rmisch vi or CheckCompUni("R",0x2165)) ; Rmisch VI - outputChar(6,"") - checkComp(6) + OutputChar(6) } else if (Ebene = 2) SendUnicodeChar(0x20AC) else if (Ebene = 3) @@ -174,8 +159,7 @@ neo_7: or CheckDeadUni("c5",0x2087) ; Tiefgestellte 7 or CheckCompUni("r",0x2176) ; Rmisch vii or CheckCompUni("R",0x2166)) ; Rmisch VII - outputChar(7,"$") - checkComp(7) + OutputChar12(7,"$") } else if (Ebene = 3) send {blind} else if (Ebene = 4) @@ -198,8 +182,7 @@ neo_8: or CheckCompUni("7",0x215E) ; 7/8 or CheckCompUni("r",0x2177) ; Rmisch viii or CheckCompUni("R",0x2167)) ; Rmisch VIII - outputChar(8,"") - checkComp(8) + OutputChar12(8,"") } else if (Ebene = 3) send {blind} else if (Ebene = 4) @@ -218,8 +201,7 @@ neo_9: or CheckDeadUni("c5",0x2089) ; Tiefgestellte 9 or CheckCompUni("r",0x2178) ; Rmisch ix or CheckCompUni("R",0x2168)) ; Rmisch IX - outputChar(9,"") - checkComp(9) + OutputChar12(9,"") } else if (Ebene = 3) send {blind} else if (Ebene = 4) @@ -238,8 +220,7 @@ neo_0: or CheckDeadUni("c5",0x2080) ; Tiefgestellte 0 or CheckDeadUni("r_1",0x2177) ; Rmisch x or CheckComp3Uni("R_1",0x2169)) ; Rmisch X - outputChar(0,"") - checkComp(0) + OutputChar12(0,"") } else if (Ebene = 3) send {blind} else if (Ebene = 4) @@ -252,7 +233,7 @@ neo_strich: noCaps = 1 EbeneAktualisieren() if (Ebene = 1) - outputChar("-","") ; Bindestrich-Minus + OutputChar("-") ; Bindestrich-Minus else if (Ebene = 2) SendUnicodeChar(0x2013) ; Gedankenstrich else if (Ebene = 3) @@ -266,25 +247,19 @@ return neo_tot2: noCaps = 1 EbeneAktualisieren() - if (Ebene = 1) and !CheckDeadUni("a1",0x0301) { - deadAsc("{}{space}") ; Akut, tot - DeadKey := "a1" - } else if (Ebene = 2) and !CheckDeadUni("a2",0x0300) { - deadAsc("``{space}") ; Gravis, tot - DeadKey := "a2" - } else if (Ebene = 3) and !CheckDeadUni("a3",0x0327) { - deadAsc("") ; Cedilla, tot - DeadKey := "a3" - } else if (Ebene = 4) and !CheckDeadUni("a4",0x0307) { - deadUni(0x02D9) ; Punkt oben - DeadKey := "a4" - } else if (Ebene = 5) and !CheckDeadUni("a5",0x0328) { - deadUni(0x02DB) ; Ogonek - DeadKey := "a5" - } else if (Ebene = 6) and !CheckDeadUni("a6",0x030A) { - deadUni(0x02DA) ; Ring oben - DeadKey := "a6" - } CompKey := PriorCompKey + if (Ebene = 1) and !CheckDeadUni("a1",0x0301) + deadAsc("{}{space}", "a1") ; Akut, tot + else if (Ebene = 2) and !CheckDeadUni("a2",0x0300) + deadAsc("``{space}", "a2") ; Gravis, tot + else if (Ebene = 3) and !CheckDeadUni("a3",0x0327) + deadAsc("", "a3") ; Cedilla, tot + else if (Ebene = 4) and !CheckDeadUni("a4",0x0307) + deadUni(0x02D9, "a4") ; Punkt oben + else if (Ebene = 5) and !CheckDeadUni("a5",0x0328) + deadUni(0x02DB, "a5") ; Ogonek + else if (Ebene = 6) and !CheckDeadUni("a6",0x030A) + deadUni(0x02DA, "a6") ; Ring oben + CompKey := PriorCompKey return @@ -296,8 +271,8 @@ return neo_x: EbeneAktualisieren() - if (Ebene12 or CheckCompUni12("G","",0x039D)) - OutputChar("x","X") + if (Ebene12 and !CheckCompUni12("G","",0x039D)) + OutputChar12("x","X") else if (Ebene = 3) SendUnicodeChar(0x2026) ; Ellipse horizontal else if (Ebene = 4) @@ -312,7 +287,7 @@ return neo_v: EbeneAktualisieren() if (Ebene12 and !(CheckDeadUni12("c6",0x1E7F,0x1E7E))) - OutputChar("v","V") + OutputChar12("v","V") else if (Ebene = 3) send {blind}_ else if (Ebene = 4) and (!lernModus or lernModus_neo_Backspace) @@ -333,7 +308,7 @@ neo_l: or CheckDeadUni12("t4",0x0142,0x0141) or CheckCompUni("f",0xFB02) or CheckCompUni("F",0xFB04))) - OutputChar("l","L") + OutputChar12("l","L") else if (Ebene = 3) send {blind}[ else if (Ebene = 4) @@ -353,7 +328,7 @@ neo_c: or CheckDeadUni12("c1",0x0109,0x0108) or CheckDeadUni12("c2",0x010D,0x010C) or CheckCompAsc("o",""))) - OutputChar("c","C") + OutputChar12("c","C") else if (Ebene = 3) send {blind}] else if (Ebene = 4) @@ -368,7 +343,7 @@ return neo_w: EbeneAktualisieren() if (Ebene12 and !(CheckDeadUni12("c1",0x0175,0x0174))) - OutputChar("w","W") + OutputChar12("w","W") else if (Ebene = 3) SendUnicodeChar(0x005E) ; Zirkumflex else if (Ebene = 4) @@ -384,11 +359,11 @@ neo_k: if (Ebene12 and !(CheckDeadUni12("a3",0x0137,0x0136) or CheckDeadUni12("c6",0x1E33,0x1E32) or CheckCompUni12("G","",0x039A))) - OutputChar("k","K") + OutputChar12("k","K") else if (Ebene = 3) - send {blind}{!} + OutputChar("{!}") else if (Ebene = 4) - Send + OutputChar("") else if (Ebene = 5) SendUnicodeChar(0x03F0) ; kappa symbol (varkappa) else if (Ebene = 6) @@ -402,7 +377,7 @@ neo_h: or CheckDeadUni12("c5",0x0127,0x0126) or CheckDeadUni12("c6",0x1E25,0x1E24) or CheckCompUni12("G","",0x0397))) - OutputChar("h","H") + OutputChar12("h","H") else if ((Ebene = 3) and !(CheckDeadUni("c5",0x2264))) ; kleiner gleich send {blind}< else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2077) @@ -420,7 +395,7 @@ neo_g: or CheckDeadUni12("a4",0x0121,0x0120) or CheckDeadUni12("c1",0x011D,0x011C) or CheckDeadUni12("c3",0x011F,0x011E))) - OutputChar("g","G") + OutputChar12("g","G") else if ((Ebene = 3) and !(CheckDeadUni("c5",0x2265))) ; grer gleich send {blind}> else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2078) @@ -437,7 +412,7 @@ neo_f: if (Ebene12 and !(CheckDeadUni12("a4",0x1E1F,0x1E1E) or CheckDeadUni12("t4",0x0192,0x0191) or CheckCompUni("f",0xFB00))) - OutputChar("f","F") + OutputChar12("f","F") else if ((Ebene = 3) and !(CheckDeadUni("a6",0x2257) ; ring equal to or CheckDeadUni("c1",0x2259) ; entspricht or CheckDeadUni("c2",0x225A) ; EQUIANGULAR TO @@ -457,7 +432,7 @@ return neo_q: EbeneAktualisieren() if (Ebene12) - OutputChar("q","Q") + OutputChar12("q","Q") else if (Ebene = 3) send {blind}{&} else if ((Ebene = 4) and !(CheckDeadUni("c1",0x207A) @@ -473,7 +448,7 @@ neo_sz: EbeneAktualisieren() if (Ebene = 1) if LangSTastatur - outputChar("s","") + OutputChar("s") else send else if (Ebene = 2) SendUnicodeChar(0x1E9E) ; versal- @@ -481,8 +456,7 @@ neo_sz: if LangSTastatur send else { - if !checkComp("lang_s") - SendUnicodeChar(0x017F) ; langes s + SendUnicodeChar(0x017F) ; langes s } else if (Ebene = 5) SendUnicodeChar(0x03C2) ; varsigma else if (Ebene = 6) @@ -493,26 +467,18 @@ return neo_tot3: noCaps = 1 EbeneAktualisieren() - if (Ebene = 1) and !CheckDeadUni("t1",0x0303) { - deadUni(0x02DC) ; Tilde, tot - DeadKey := "t1" - } else if (Ebene = 2) and !CheckDeadUni("t2",0x0304) { - deadUni(0x00AF) ; Macron, tot - DeadKey := "t2" - } else if (Ebene = 3) and !CheckDeadUni("t3",0x0308) { - deadUni(0x00A8) ; Direse - DeadKey := "t3" - } else if (Ebene = 4) and !CheckDeadUni("t4",0x0337) { - deadUni(0x002F) ; Schrgstrich, tot - DeadKey := "t4" - } else if (Ebene = 5) and !CheckDeadUni("t5",0x030B) { - deadUni(0x02DD) ; Doppelakut - DeadKey := "t5" - } else if (Ebene = 6) and !CheckDeadUni("t6",0x0326) { - deadUni(0x02CF) ; Komma drunter, tot - DeadKey := "t6" - } - + if (Ebene = 1) and !CheckDeadUni("t1",0x0303) + deadUni(0x02DC, "t1") ; Tilde, tot + else if (Ebene = 2) and !CheckDeadUni("t2",0x0304) + deadUni(0x00AF, "t2") ; Macron, tot + else if (Ebene = 3) and !CheckDeadUni("t3",0x0308) + deadUni(0x00A8, "t3") ; Direse + else if (Ebene = 4) and !CheckDeadUni("t4",0x0337) + deadUni(0x002F, "t4") ; Schrgstrich, tot + else if (Ebene = 5) and !CheckDeadUni("t5",0x030B) + deadUni(0x02DD, "t5") ; Doppelakut + else if (Ebene = 6) and !CheckDeadUni("t6",0x0326) + deadUni(0x02CF, "t6") ; Komma drunter, tot return @@ -535,7 +501,7 @@ neo_u: or CheckDeadUni12("t2",0x016B,0x016A) or CheckDeadAsc12("t3","","") or CheckDeadUni12("t5",0x0171,0x0170))) - OutputChar("u","U") + OutputChar12("u","U") else if (Ebene = 3) send {blind}\ else if (Ebene = 4) @@ -562,7 +528,7 @@ neo_i: or CheckCompUni("f",0xFB01) or CheckCompUni("F",0xFB03) or CheckCompUni12("G","",0x0399))) - OutputChar("i","I") + OutputChar12("i","I") else if (Ebene = 3) send {blind}`/ else if (Ebene = 4) @@ -586,7 +552,7 @@ neo_a: or CheckDeadUni12("t2",0x0101,0x0100) or CheckDeadAsc12("t3","","") or CheckCompUni12("G","",0x0391))) - OutputChar("a","A") + OutputChar12("a","A") else if (Ebene = 3) send {blind}{{} else if (Ebene = 4) @@ -615,7 +581,7 @@ neo_e: or CheckCompAsc12("O","","") or CheckCompUni12("G","",0x0395) or CheckCompUni12("E","",0x018F))) - OutputChar("e","E") + OutputChar12("e","E") else if (Ebene = 3) send {blind}{}} else if (Ebene = 4) @@ -640,7 +606,7 @@ neo_o: or CheckDeadUni12("t4",0x00F8,0x00D8) or CheckDeadUni12("t5",0x0151,0x0150) or CheckCompUni12("G","",0x039F))) - OutputChar("o","O") + OutputChar12("o","O") else if (Ebene = 3) send {blind}* else if (Ebene = 4) @@ -658,16 +624,14 @@ neo_s: or CheckDeadUni12("a4",0x1E61,0x1E60) or CheckDeadUni12("c1",0x015D,0x015C) or CheckDeadUni12("c2",0x0161,0x0160) - or CheckDeadUni12("c6",0x1E63,0x1A62))) - { - if LangSTastatur and (Ebene = 1) { - if !checkComp("lang_s") - SendUnicodeChar(0x017F) ; langes s - } else outputChar("s","S") - } else if (Ebene = 3) - send {blind}? + or CheckDeadUni12("c6",0x1E63,0x1A62))) { + if LangSTastatur and (Ebene = 1) + SendUnicodeChar(0x017F) ; langes s + else OutputChar12("s","S") + } else if (Ebene = 3) + OutputChar("?") else if (Ebene = 4) - Send + OutputChar("") else if (Ebene = 5) SendUnicodeChar(0x03C3) ;sigma else if (Ebene = 6) @@ -682,7 +646,7 @@ neo_n: or CheckDeadUni12("c2",0x0148,0x0147) or CheckDeadUni12("t1",0x00F1,0x00D1) or CheckCompUni12("G","",0x039D))) - OutputChar("n","N") + OutputChar12("n","N") else if (Ebene = 3) send {blind}( else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2074) @@ -703,7 +667,7 @@ neo_r: or CheckDeadUni12("c6",0x1E5B,0x1E5A) or CheckCompAsc12("o","","") or CheckCompAsc12("O","",""))) - OutputChar("r","R") + OutputChar12("r","R") else if (Ebene = 3) send {blind}) else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2075) @@ -722,10 +686,11 @@ neo_t: or CheckDeadUni12("c2",0x0165,0x0164) or CheckDeadUni12("c5",0x0167,0x0166) or CheckDeadUni12("c6",0x1E6D,0x1E6C) - or CheckCompUni("lang_s",0xFB05) + or CheckDeadUni("t3",0x1E97) + or CheckCompUni("0x017F",0xFB05) or CheckCompUni("s",0xFB06) or CheckCompUni12("G","",0x03A4))) - OutputChar("t","T") + OutputChar12("t","T") else if (Ebene = 3) send {blind}- ; Bisstrich else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2076) @@ -744,7 +709,7 @@ neo_d: or CheckDeadUni12("c5",0x0111,0x0110) or CheckDeadUni12("c6",0x1E0D,0x1E0C) or CheckDeadUni12("t4",0x00F0,0x00D0))) - OutputChar("d","D") + OutputChar12("d","D") else if (Ebene = 3) send {blind}: else if (Ebene = 4) @@ -761,7 +726,7 @@ neo_y: or CheckDeadUni12("c1",0x0177,0x0176) or CheckDeadAsc12("t3","","") or CheckCompUni12("G","",0x03A5))) - OutputChar("y","Y") + OutputChar12("y","Y") else if (Ebene = 3) send {blind}@ else if (Ebene = 4) @@ -784,7 +749,7 @@ neo_ or CheckDeadUni12("a2",0x01DC,0x01DB) or CheckDeadUni12("c2",0x01DA,0x01D9) or CheckDeadUni12("t2",0x01D6,0x01D5))) - OutputChar("","") + OutputChar12("","") else if (Ebene = 3) send {#} else if (Ebene = 4) @@ -799,7 +764,7 @@ return neo_: EbeneAktualisieren() if (Ebene12 and !(CheckDeadUni12("t2",0x022B,0x022A))) - OutputChar("","") + OutputChar12("","") else if (Ebene = 3) send {blind}$ else if (Ebene = 4) @@ -814,7 +779,7 @@ return neo_: EbeneAktualisieren() if (Ebene12 and !(CheckDeadUni12("t2",0x01DF,0x01DE))) - OutputChar("","") + OutputChar12("","") else if (Ebene = 3) send {blind}| else if (Ebene = 4) @@ -829,7 +794,7 @@ neo_p: EbeneAktualisieren() if (Ebene12 and !(CheckDeadUni12("a4",0x1E57,0x1E56) or CheckCompUni12("G","",0x03A1))) - OutputChar("p","P") + OutputChar12("p","P") else if ((Ebene = 3) and !(CheckDeadUni("t1",0x2248))) send {blind}~ else if (Ebene = 4) @@ -849,7 +814,7 @@ neo_z: or CheckCompUni("d",0x01C6) or CheckCompUni12("D",0x01C5,0x01C4) or CheckCompUni12("G","",0x0396))) - OutputChar("z","Z") + OutputChar12("z","Z") else if (Ebene = 3) send ``{space} ; untot else if (Ebene = 4) { ; leer @@ -865,7 +830,7 @@ neo_b: EbeneAktualisieren() if (Ebene12 and !(CheckDeadUni12("a4",0x1E03,0x1E02) or CheckCompUni12("G","",0x0392))) - OutputChar("b","B") + OutputChar12("b","B") else if (Ebene = 3) if isMod2Locked send {blind}{Shift Up}{+} @@ -885,7 +850,7 @@ neo_m: or CheckCompUni12("t",0x2122,0x2122) ; TM or CheckCompUni12("s",0x2120,0x2120) ; SM or CheckCompUni12("G","",0x039C))) - OutputChar("m","M") + OutputChar12("m","M") else if (Ebene = 3) send {blind}`% else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B9) @@ -944,7 +909,7 @@ neo_j: or CheckCompUni("n",0x01CC) ; nj or CheckCompUni12("L",0x01C8,0x01C7) ; Lj/LJ or CheckCompUni12("N",0x01CB,0x01CA))) ; Nj/NJ - OutputChar("j","J") + OutputChar12("j","J") else if (Ebene = 3) send {blind}`; else if (Ebene = 4) @@ -1017,10 +982,9 @@ return neo_Numpad7: EbeneAktualisieren() - if (Ebene = 1) { - send {blind}{Numpad7} - checkComp(7) - } else if (Ebene = 2) + if (Ebene = 1) + OutputChar("{Numpad7}") + else if (Ebene = 2) SendUnicodeChar(0x2020) ; Kreuz else if (Ebene = 3) SendUnicodeChar(0x2195) ; Hoch-Runter-Pfeil @@ -1030,13 +994,12 @@ return neo_Numpad8: EbeneAktualisieren() - 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 - send {blind}{Numpad8} - checkComp(8) - } else if (Ebene = 2) + if ((Ebene = 1) and !(CheckCompUni("{Numpad1}",0x215B) ; 1/8 + or CheckCompUni("{Numpad3}",0x215C) ; 3/8 + or CheckCompUni("{Numpad5}",0x215D) ; 5/8 + or CheckCompUni("{Numpad7}",0x215E))) ; 7/8 + OutputChar("{Numpad8}") + else if (Ebene = 2) SendUnicodeChar(0x2229) ; Durchschnitt else if (Ebene = 3) SendUnicodeChar(0x2191) ; Hochpfeil @@ -1046,10 +1009,9 @@ return neo_Numpad9: EbeneAktualisieren() - if (Ebene = 1) { - send {blind}{Numpad9} - checkComp(9) - } else if (Ebene = 2) + if (Ebene = 1) + OutputChar("{Numpad9}") + else if (Ebene = 2) SendUnicodeChar(0x2297) ; Tensorprodukt / Vektor in die Ebene zeigend else if (Ebene = 3) SendUnicodeChar(0x220D) ; Kleines umgekehrtes Elementzeichen @@ -1059,11 +1021,10 @@ return neo_Numpad4: EbeneAktualisieren() - if ((Ebene = 1) and !(CheckCompUni("1",0x00BC) ; 1/4 - or CheckCompUni("3",0x00BE))) { ; 3/4 - send {blind}{Numpad4} - checkComp(4) - } else if (Ebene = 2) + if ((Ebene = 1) and !(CheckCompUni("{Numpad1}",0x00BC) ; 1/4 + or CheckCompUni("{Numpad3}",0x00BE))) ; 3/4 + OutputChar("{Numpad4}") + else if (Ebene = 2) SendUnicodeChar(0x2282) ; Teilmenge else if (Ebene = 3) SendUnicodeChar(0x2190) ; Linkspfeil @@ -1073,13 +1034,12 @@ return neo_Numpad5: EbeneAktualisieren() - 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 - send {blind}{Numpad5} - checkComp(5) - } else if (Ebene = 2) + if ((Ebene = 1) and !(CheckCompUni("{Numpad1}",0x2155) ; 1/5 + or CheckCompUni("{Numpad2}",0x2156) ; 2/5 + or CheckCompUni("{Numpad3}",0x2157) ; 3/5 + or CheckCompUni("{Numpad4}",0x2158))) ; 4/5 + OutputChar("{Numpad5}") + else if (Ebene = 2) SendUnicodeChar(0x20AC) ; Euro else if (Ebene = 3) SendUnicodeChar(0x221E) ; Unendlich @@ -1089,11 +1049,10 @@ return neo_Numpad6: EbeneAktualisieren() - if ((Ebene = 1) and !(CheckCompUni("1",0x2159) ; 1/6 - or CheckCompUni("5",0x215a))) { ; 5/6 - send {blind}{Numpad6} - checkComp(6) - } else if (Ebene = 2) + if ((Ebene = 1) and !(CheckCompUni("{Numpad1}",0x2159) ; 1/6 + or CheckCompUni("{Numpad5}",0x215a))) ; 5/6 + OutputChar("{Numpad6}") + else if (Ebene = 2) SendUnicodeChar(0x2283) ; Obermenge else if (Ebene = 3) SendUnicodeChar(0x2192) ; Rechtspfeil @@ -1104,8 +1063,7 @@ return neo_Numpad1: EbeneAktualisieren() if (Ebene = 1) { - send {blind}{Numpad1} - checkComp(1) + OutputChar("{Numpad1}") } else if (Ebene = 2) SendUnicodeChar(0x2714) ; Hkchen else if (Ebene = 3) @@ -1116,10 +1074,11 @@ return neo_Numpad2: EbeneAktualisieren() - if ((Ebene = 1) and !(CheckCompUni("1",0x00BD))) { ; 1/2 - send {blind}{Numpad2} - checkComp(2) - } else if (Ebene = 2) + if ((Ebene = 1) and !(CheckCompUni("{Numpad1}",0x00BD) ; 1/2 + or CheckCompUni("{!}",0x203C) ; DOUBLE EXCLAMATION MARK + or CheckCompUni("?",0x2047))) ; DOUBLE QUESTION MARK + OutputChar("{Numpad2}") + else if (Ebene = 2) SendUnicodeChar(0x222A) ; Vereinigung else if (Ebene = 3) SendUnicodeChar(0x2192) ; Untenpfeil @@ -1129,11 +1088,10 @@ return neo_Numpad3: EbeneAktualisieren() - if ((Ebene = 1) and !(CheckCompUni("1",0x2153) ; 1/3 - or CheckCompUni("5",0x2154))) { ; 2/3 - send {blind}{Numpad3} - checkComp(2) - } else if (Ebene = 2) + if ((Ebene = 1) and !(CheckCompUni("{Numpad1}",0x2153) ; 1/3 + or CheckCompUni("{Numpad5}",0x2154))) ; 2/3 + OutputChar("{Numpad3}") + else if (Ebene = 2) SendUnicodeChar(0x2718) ; Kreuzchen else if (Ebene = 3) SendUnicodeChar(0x2192) ; Rechtspfeil @@ -1143,10 +1101,9 @@ return neo_Numpad0: EbeneAktualisieren() - if (Ebene = 1) { - send {blind}{Numpad0} - checkComp(0) - } else if (Ebene = 2) + if (Ebene = 1) + OutputChar("{Numpad0}") + else if (Ebene = 2) SendUnicodeChar(0x2030) ; Promille else if (Ebene = 3) SendUnicodeChar(0x0025) ; Prozent diff --git a/windows/autohotkey/Source/Methods-Other.ahk b/windows/autohotkey/Source/Methods-Other.ahk index b603a8b..a330c9a 100644 --- a/windows/autohotkey/Source/Methods-Other.ahk +++ b/windows/autohotkey/Source/Methods-Other.ahk @@ -1,13 +1,15 @@ -deadAsc(val) { +deadAsc(val, a) { global if !DeadSilence send % val + DeadKey := a } -deadUni(val) { +deadUni(val, a) { global if !DeadSilence SendUnicodeChar(val) + DeadKey := a } undeadAsc(val) { @@ -70,7 +72,10 @@ CheckDeadUni12(d,val1,val2) { CheckCompAsc(d,val) { global if (PriorCompKey == d) { + if !DeadCompose + send {bs} send % val + isSecondCompKey = 0 return 1 } } @@ -79,10 +84,16 @@ CheckCompAsc12(d,val1,val2) { global if (PriorCompKey == d) if (Ebene = 1) and (val1 != "") { + if !DeadCompose + send {bs} send % val1 + isSecondCompKey = 0 return 1 } else if (Ebene = 2) and (val2 != "") { + if !DeadCompose + send {bs} send % val2 + isSecondCompKey = 0 return 1 } } @@ -90,7 +101,11 @@ CheckCompAsc12(d,val1,val2) { CheckCompUni(d,val) { global if (PriorCompKey == d) { + PriorCompKey = + if !DeadCompose + send {bs} SendUnicodeChar(val) + isSecondCompKey = 0 return 1 } } @@ -99,10 +114,18 @@ CheckCompUni12(d,val1,val2){ global if (PriorCompKey == d) { if (Ebene = 1) and (val1 != "") { + PriorCompKey = + if !DeadCompose + send {bs} SendUnicodeChar(val1) + isSecondCompKey = 0 return 1 } else if (Ebene = 2) and (val2 != "") { + PriorCompKey = + if !DeadCompose + send {bs} SendUnicodeChar(val2) + isSecondCompKey = 0 return 1 } } @@ -111,7 +134,11 @@ CheckCompUni12(d,val1,val2){ CheckComp3Uni(d,val) { global if (PriorCompKey == d) { + PriorCompKey = + if !DeadCompose + send {bs}{bs} SendUnicodeChar(val) + isSecondCompKey = 0 return 1 } } @@ -120,30 +147,53 @@ CheckComp3Uni12(d,val1,val2) { global if (PriorCompKey == d) { if (Ebene = 1) and (val1 != "") { + PriorCompKey = + if !DeadCompose + send {bs}{bs} SendUnicodeChar(val1) + isSecondCompKey = 0 return 1 } else if (Ebene = 2) and (val2 != "") { + PriorCompKey = + if !DeadCompose + send {bs}{bs} SendUnicodeChar(val2) + isSecondCompKey = 0 return 1 } } } -outputChar(val1,val2) { +OutputChar(val) { + global + if !((CheckComp(val) or PriorCompKey) and DeadCompose) + send % "{blind}" . val +} + +OutputChar12(val1,val2) { global if (Ebene = 1) c := val1 else c := val2 - if !(CheckComp(c) and DeadCompose or PriorCompKey) + if !((CheckComp(c) or PriorCompKey) and DeadCompose) if GetKeyState("Shift","P") and isMod2Locked send % "{blind}{Shift Up}" . c . "{Shift Down}" else send % "{blind}" . c } -checkComp(d) { +CheckComp(d) { global if (PriorDeadKey = "comp") { CompKey := d return 1 + } else if isSecondCompKey { + isSecondCompKey = 0 + CompKey = + PriorCompKey = + ;goto neo_%lastHook% + } else if PriorCompKey { + CompKey := PriorCompKey . "_" . d + isSecondCompKey = 1 + return 1 } } diff --git a/windows/autohotkey/Source/Methods-Unicode.ahk b/windows/autohotkey/Source/Methods-Unicode.ahk index 86e3b36..f50b5cc 100644 --- a/windows/autohotkey/Source/Methods-Unicode.ahk +++ b/windows/autohotkey/Source/Methods-Unicode.ahk @@ -10,6 +10,8 @@ Der Aufruf von SendUnicodeChar(charCode) { + global + if !((CheckComp(charCode) or PriorCompKey) and DeadCompose) IfWinActive,ahk_class gdkWindowToplevel { StringLower,charCode,charCode diff --git a/windows/autohotkey/neo20.ahk b/windows/autohotkey/neo20.ahk index 617ff4c..e73b99c 100644 --- a/windows/autohotkey/neo20.ahk +++ b/windows/autohotkey/neo20.ahk @@ -753,44 +753,33 @@ VK09SC00F::goto neo_tab */ neo_tot1: - noCaps=1 + noCaps = 1 EbeneAktualisieren() - if (Ebene=1) and !CheckDeadUni("c1",0x0302) { - deadUni(0x02C6) ; Zirkumflex, tot - DeadKey = c1 - } else if (Ebene = 2) and !CheckDeadUni("c2",0x030C) { - deadUni(0x02C7) ; Caron, tot - DeadKey = c2 - } else if (Ebene = 3) and !CheckDeadUni("c3",0x0306) { - deadUni(0x02D8) ; Brevis, tot - DeadKey = c3 - } else if (Ebene = 4) { - deadUni(0x00B7) ; Mittenpunkt, tot - DeadKey = c4 - } else if (Ebene = 5) and !CheckDeadUni("c5",0x0335) { - deadUni(0x002D) ; Querstrich, tot - DeadKey = c5 - } else if (Ebene = 6) and !CheckDeadUni("c6",0x0323) { - deadUni(0x002E) ; Punkt drunter (Colon), tot - DeadKey = c6 - } CompKey := PriorCompKey + if (Ebene = 1) and !CheckDeadUni("c1",0x0302) + deadUni(0x02C6, "c1") ; Zirkumflex, tot + else if (Ebene = 2) and !CheckDeadUni("c2",0x030C) + deadUni(0x02C7, "c2") ; Caron, tot + else if (Ebene = 3) and !CheckDeadUni("c3",0x0306) + deadUni(0x02D8, "c3") ; Brevis, tot + else if (Ebene = 4) + deadUni(0x00B7, "c4") ; Mittenpunkt, tot + else if (Ebene = 5) and !CheckDeadUni("c5",0x0335) + deadUni(0x002D, "c5") ; Querstrich, tot + else if (Ebene = 6) and !CheckDeadUni("c6",0x0323) + deadUni(0x002E, "c6") ; Punkt drunter (Colon), tot + CompKey := PriorCompKey return neo_1: noCaps=1 EbeneAktualisieren() - if Ebene12 { + if Ebene12 if !(CheckDeadUni("c1",0x00B9) ; Hochgestellte 1 or CheckDeadUni("c5",0x2081) ; Tiefgestellte 1 or CheckComp3Uni("r_1",0x217A) ; Rmisch xi or CheckComp3Uni("R_1",0x216A)) ; Rmisch XI - outputChar(1,"") - if !checkComp(1) - if (PriorCompKey == "r") - CompKey := "r_1" - else if (PriorCompkey == "R") - CompKey := "R_1" - } else if (Ebene = 3) + OutputChar12(1,"") + else if (Ebene = 3) SendUnicodeChar(0x00B9) ; Hochgestellte 1 else if (Ebene = 4) SendUnicodeChar(0x2022) ; Bullet @@ -803,16 +792,16 @@ return neo_2: noCaps = 1 EbeneAktualisieren() - if (Ebene = 1) { - if !(CheckDeadUni("c1",0x00B2) ; Hochgestellte 2 - or CheckDeadUni("c5",0x2082) ; Tiefgestellte 2 - or CheckCompUni("r",0x2171) ; Rmisch ii - or CheckCompUni("R",0x2161) ; Rmisch II - or CheckComp3Uni("r_1",0x217B) ; Rmisch xii - or CheckComp3Uni("R_1",0x216B)) ; Rmisch XII - outputChar(2,"") - checkComp(2) - } else if (Ebene = 2) + if (Ebene = 1 and !(CheckDeadUni("c1",0x00B2) ; Hochgestellte 2 + or CheckDeadUni("c5",0x2082) ; Tiefgestellte 2 + or CheckCompUni("r",0x2171) ; Rmisch ii + or CheckCompUni("R",0x2161) ; Rmisch II + or CheckComp3Uni("r_1",0x217B) ; Rmisch xii + or CheckComp3Uni("R_1",0x216B) ; Rmisch XII + or CheckCompUni("{!}",0x203C) ; DOUBLE EXCLAMATION MARK + or CheckCompUni("?",0x2047))) ; DOUBLE QUESTION MARK + OutputChar(2) + else if (Ebene = 2) SendUnicodeChar(0x2116) ; Numero else if (Ebene = 3) SendUnicodeChar(0x00B2) ; Hochgestellte 2 @@ -834,8 +823,7 @@ neo_3: or CheckCompUni("2",0x2154) ; 2/3 or CheckCompUni("r",0x2172) ; Rmisch iii or CheckCompUni("R",0x2162)) ; Rmisch III - outputChar(3,"") - checkComp(3) + OutputChar12(3,"") } else if (Ebene = 3) SendUnicodeChar(0x00B3) ; Hochgestellte 3 else if (Ebene = 4) @@ -854,8 +842,7 @@ neo_4: or CheckDeadUni("c5",0x2084) ; Tiefgestellte 4 or CheckCompUni("r",0x2173) ; Rmisch iv or CheckCompUni("R",0x2163)) ; Rmisch IV - outputChar(4,"") - checkComp(4) + OutputChar(4) } else if (Ebene = 2) SendUnicodeChar(0x00BB) ; Double guillemot right else if (Ebene = 3) @@ -880,8 +867,7 @@ neo_5: or CheckCompUni("4",0x2158) ; 4/5 or CheckCompUni("r",0x2174) ; Rmisch v or CheckCompUni("R",0x2164)) ; Rmisch V - outputChar(5,"") - checkComp(5) + OutputChar(5) } else if (Ebene = 2) SendUnicodeChar(0x00AB) ; Double guillemot left else if (Ebene = 3) @@ -902,8 +888,7 @@ neo_6: or CheckCompUni("5",0x215A) ; 5/6 or CheckCompUni("r",0x2175) ; Rmisch vi or CheckCompUni("R",0x2165)) ; Rmisch VI - outputChar(6,"") - checkComp(6) + OutputChar(6) } else if (Ebene = 2) SendUnicodeChar(0x20AC) else if (Ebene = 3) @@ -922,8 +907,7 @@ neo_7: or CheckDeadUni("c5",0x2087) ; Tiefgestellte 7 or CheckCompUni("r",0x2176) ; Rmisch vii or CheckCompUni("R",0x2166)) ; Rmisch VII - outputChar(7,"$") - checkComp(7) + OutputChar12(7,"$") } else if (Ebene = 3) send {blind} else if (Ebene = 4) @@ -946,8 +930,7 @@ neo_8: or CheckCompUni("7",0x215E) ; 7/8 or CheckCompUni("r",0x2177) ; Rmisch viii or CheckCompUni("R",0x2167)) ; Rmisch VIII - outputChar(8,"") - checkComp(8) + OutputChar12(8,"") } else if (Ebene = 3) send {blind} else if (Ebene = 4) @@ -966,8 +949,7 @@ neo_9: or CheckDeadUni("c5",0x2089) ; Tiefgestellte 9 or CheckCompUni("r",0x2178) ; Rmisch ix or CheckCompUni("R",0x2168)) ; Rmisch IX - outputChar(9,"") - checkComp(9) + OutputChar12(9,"") } else if (Ebene = 3) send {blind} else if (Ebene = 4) @@ -986,8 +968,7 @@ neo_0: or CheckDeadUni("c5",0x2080) ; Tiefgestellte 0 or CheckDeadUni("r_1",0x2177) ; Rmisch x or CheckComp3Uni("R_1",0x2169)) ; Rmisch X - outputChar(0,"") - checkComp(0) + OutputChar12(0,"") } else if (Ebene = 3) send {blind} else if (Ebene = 4) @@ -1000,7 +981,7 @@ neo_strich: noCaps = 1 EbeneAktualisieren() if (Ebene = 1) - outputChar("-","") ; Bindestrich-Minus + OutputChar("-") ; Bindestrich-Minus else if (Ebene = 2) SendUnicodeChar(0x2013) ; Gedankenstrich else if (Ebene = 3) @@ -1014,25 +995,19 @@ return neo_tot2: noCaps = 1 EbeneAktualisieren() - if (Ebene = 1) and !CheckDeadUni("a1",0x0301) { - deadAsc("{}{space}") ; Akut, tot - DeadKey := "a1" - } else if (Ebene = 2) and !CheckDeadUni("a2",0x0300) { - deadAsc("``{space}") ; Gravis, tot - DeadKey := "a2" - } else if (Ebene = 3) and !CheckDeadUni("a3",0x0327) { - deadAsc("") ; Cedilla, tot - DeadKey := "a3" - } else if (Ebene = 4) and !CheckDeadUni("a4",0x0307) { - deadUni(0x02D9) ; Punkt oben - DeadKey := "a4" - } else if (Ebene = 5) and !CheckDeadUni("a5",0x0328) { - deadUni(0x02DB) ; Ogonek - DeadKey := "a5" - } else if (Ebene = 6) and !CheckDeadUni("a6",0x030A) { - deadUni(0x02DA) ; Ring oben - DeadKey := "a6" - } CompKey := PriorCompKey + if (Ebene = 1) and !CheckDeadUni("a1",0x0301) + deadAsc("{}{space}", "a1") ; Akut, tot + else if (Ebene = 2) and !CheckDeadUni("a2",0x0300) + deadAsc("``{space}", "a2") ; Gravis, tot + else if (Ebene = 3) and !CheckDeadUni("a3",0x0327) + deadAsc("", "a3") ; Cedilla, tot + else if (Ebene = 4) and !CheckDeadUni("a4",0x0307) + deadUni(0x02D9, "a4") ; Punkt oben + else if (Ebene = 5) and !CheckDeadUni("a5",0x0328) + deadUni(0x02DB, "a5") ; Ogonek + else if (Ebene = 6) and !CheckDeadUni("a6",0x030A) + deadUni(0x02DA, "a6") ; Ring oben + CompKey := PriorCompKey return @@ -1044,8 +1019,8 @@ return neo_x: EbeneAktualisieren() - if (Ebene12 or CheckCompUni12("G","",0x039D)) - OutputChar("x","X") + if (Ebene12 and !CheckCompUni12("G","",0x039D)) + OutputChar12("x","X") else if (Ebene = 3) SendUnicodeChar(0x2026) ; Ellipse horizontal else if (Ebene = 4) @@ -1060,7 +1035,7 @@ return neo_v: EbeneAktualisieren() if (Ebene12 and !(CheckDeadUni12("c6",0x1E7F,0x1E7E))) - OutputChar("v","V") + OutputChar12("v","V") else if (Ebene = 3) send {blind}_ else if (Ebene = 4) and (!lernModus or lernModus_neo_Backspace) @@ -1081,7 +1056,7 @@ neo_l: or CheckDeadUni12("t4",0x0142,0x0141) or CheckCompUni("f",0xFB02) or CheckCompUni("F",0xFB04))) - OutputChar("l","L") + OutputChar12("l","L") else if (Ebene = 3) send {blind}[ else if (Ebene = 4) @@ -1101,7 +1076,7 @@ neo_c: or CheckDeadUni12("c1",0x0109,0x0108) or CheckDeadUni12("c2",0x010D,0x010C) or CheckCompAsc("o",""))) - OutputChar("c","C") + OutputChar12("c","C") else if (Ebene = 3) send {blind}] else if (Ebene = 4) @@ -1116,7 +1091,7 @@ return neo_w: EbeneAktualisieren() if (Ebene12 and !(CheckDeadUni12("c1",0x0175,0x0174))) - OutputChar("w","W") + OutputChar12("w","W") else if (Ebene = 3) SendUnicodeChar(0x005E) ; Zirkumflex else if (Ebene = 4) @@ -1132,11 +1107,11 @@ neo_k: if (Ebene12 and !(CheckDeadUni12("a3",0x0137,0x0136) or CheckDeadUni12("c6",0x1E33,0x1E32) or CheckCompUni12("G","",0x039A))) - OutputChar("k","K") + OutputChar12("k","K") else if (Ebene = 3) - send {blind}{!} + OutputChar("{!}") else if (Ebene = 4) - Send + OutputChar("") else if (Ebene = 5) SendUnicodeChar(0x03F0) ; kappa symbol (varkappa) else if (Ebene = 6) @@ -1150,7 +1125,7 @@ neo_h: or CheckDeadUni12("c5",0x0127,0x0126) or CheckDeadUni12("c6",0x1E25,0x1E24) or CheckCompUni12("G","",0x0397))) - OutputChar("h","H") + OutputChar12("h","H") else if ((Ebene = 3) and !(CheckDeadUni("c5",0x2264))) ; kleiner gleich send {blind}< else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2077) @@ -1168,7 +1143,7 @@ neo_g: or CheckDeadUni12("a4",0x0121,0x0120) or CheckDeadUni12("c1",0x011D,0x011C) or CheckDeadUni12("c3",0x011F,0x011E))) - OutputChar("g","G") + OutputChar12("g","G") else if ((Ebene = 3) and !(CheckDeadUni("c5",0x2265))) ; grer gleich send {blind}> else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2078) @@ -1185,7 +1160,7 @@ neo_f: if (Ebene12 and !(CheckDeadUni12("a4",0x1E1F,0x1E1E) or CheckDeadUni12("t4",0x0192,0x0191) or CheckCompUni("f",0xFB00))) - OutputChar("f","F") + OutputChar12("f","F") else if ((Ebene = 3) and !(CheckDeadUni("a6",0x2257) ; ring equal to or CheckDeadUni("c1",0x2259) ; entspricht or CheckDeadUni("c2",0x225A) ; EQUIANGULAR TO @@ -1205,7 +1180,7 @@ return neo_q: EbeneAktualisieren() if (Ebene12) - OutputChar("q","Q") + OutputChar12("q","Q") else if (Ebene = 3) send {blind}{&} else if ((Ebene = 4) and !(CheckDeadUni("c1",0x207A) @@ -1221,7 +1196,7 @@ neo_sz: EbeneAktualisieren() if (Ebene = 1) if LangSTastatur - outputChar("s","") + OutputChar("s") else send else if (Ebene = 2) SendUnicodeChar(0x1E9E) ; versal- @@ -1229,8 +1204,7 @@ neo_sz: if LangSTastatur send else { - if !checkComp("lang_s") - SendUnicodeChar(0x017F) ; langes s + SendUnicodeChar(0x017F) ; langes s } else if (Ebene = 5) SendUnicodeChar(0x03C2) ; varsigma else if (Ebene = 6) @@ -1241,26 +1215,18 @@ return neo_tot3: noCaps = 1 EbeneAktualisieren() - if (Ebene = 1) and !CheckDeadUni("t1",0x0303) { - deadUni(0x02DC) ; Tilde, tot - DeadKey := "t1" - } else if (Ebene = 2) and !CheckDeadUni("t2",0x0304) { - deadUni(0x00AF) ; Macron, tot - DeadKey := "t2" - } else if (Ebene = 3) and !CheckDeadUni("t3",0x0308) { - deadUni(0x00A8) ; Direse - DeadKey := "t3" - } else if (Ebene = 4) and !CheckDeadUni("t4",0x0337) { - deadUni(0x002F) ; Schrgstrich, tot - DeadKey := "t4" - } else if (Ebene = 5) and !CheckDeadUni("t5",0x030B) { - deadUni(0x02DD) ; Doppelakut - DeadKey := "t5" - } else if (Ebene = 6) and !CheckDeadUni("t6",0x0326) { - deadUni(0x02CF) ; Komma drunter, tot - DeadKey := "t6" - } - + if (Ebene = 1) and !CheckDeadUni("t1",0x0303) + deadUni(0x02DC, "t1") ; Tilde, tot + else if (Ebene = 2) and !CheckDeadUni("t2",0x0304) + deadUni(0x00AF, "t2") ; Macron, tot + else if (Ebene = 3) and !CheckDeadUni("t3",0x0308) + deadUni(0x00A8, "t3") ; Direse + else if (Ebene = 4) and !CheckDeadUni("t4",0x0337) + deadUni(0x002F, "t4") ; Schrgstrich, tot + else if (Ebene = 5) and !CheckDeadUni("t5",0x030B) + deadUni(0x02DD, "t5") ; Doppelakut + else if (Ebene = 6) and !CheckDeadUni("t6",0x0326) + deadUni(0x02CF, "t6") ; Komma drunter, tot return @@ -1283,7 +1249,7 @@ neo_u: or CheckDeadUni12("t2",0x016B,0x016A) or CheckDeadAsc12("t3","","") or CheckDeadUni12("t5",0x0171,0x0170))) - OutputChar("u","U") + OutputChar12("u","U") else if (Ebene = 3) send {blind}\ else if (Ebene = 4) @@ -1310,7 +1276,7 @@ neo_i: or CheckCompUni("f",0xFB01) or CheckCompUni("F",0xFB03) or CheckCompUni12("G","",0x0399))) - OutputChar("i","I") + OutputChar12("i","I") else if (Ebene = 3) send {blind}`/ else if (Ebene = 4) @@ -1334,7 +1300,7 @@ neo_a: or CheckDeadUni12("t2",0x0101,0x0100) or CheckDeadAsc12("t3","","") or CheckCompUni12("G","",0x0391))) - OutputChar("a","A") + OutputChar12("a","A") else if (Ebene = 3) send {blind}{{} else if (Ebene = 4) @@ -1363,7 +1329,7 @@ neo_e: or CheckCompAsc12("O","","") or CheckCompUni12("G","",0x0395) or CheckCompUni12("E","",0x018F))) - OutputChar("e","E") + OutputChar12("e","E") else if (Ebene = 3) send {blind}{}} else if (Ebene = 4) @@ -1388,7 +1354,7 @@ neo_o: or CheckDeadUni12("t4",0x00F8,0x00D8) or CheckDeadUni12("t5",0x0151,0x0150) or CheckCompUni12("G","",0x039F))) - OutputChar("o","O") + OutputChar12("o","O") else if (Ebene = 3) send {blind}* else if (Ebene = 4) @@ -1406,16 +1372,14 @@ neo_s: or CheckDeadUni12("a4",0x1E61,0x1E60) or CheckDeadUni12("c1",0x015D,0x015C) or CheckDeadUni12("c2",0x0161,0x0160) - or CheckDeadUni12("c6",0x1E63,0x1A62))) - { - if LangSTastatur and (Ebene = 1) { - if !checkComp("lang_s") - SendUnicodeChar(0x017F) ; langes s - } else outputChar("s","S") - } else if (Ebene = 3) - send {blind}? + or CheckDeadUni12("c6",0x1E63,0x1A62))) { + if LangSTastatur and (Ebene = 1) + SendUnicodeChar(0x017F) ; langes s + else OutputChar12("s","S") + } else if (Ebene = 3) + OutputChar("?") else if (Ebene = 4) - Send + OutputChar("") else if (Ebene = 5) SendUnicodeChar(0x03C3) ;sigma else if (Ebene = 6) @@ -1430,7 +1394,7 @@ neo_n: or CheckDeadUni12("c2",0x0148,0x0147) or CheckDeadUni12("t1",0x00F1,0x00D1) or CheckCompUni12("G","",0x039D))) - OutputChar("n","N") + OutputChar12("n","N") else if (Ebene = 3) send {blind}( else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2074) @@ -1451,7 +1415,7 @@ neo_r: or CheckDeadUni12("c6",0x1E5B,0x1E5A) or CheckCompAsc12("o","","") or CheckCompAsc12("O","",""))) - OutputChar("r","R") + OutputChar12("r","R") else if (Ebene = 3) send {blind}) else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2075) @@ -1470,10 +1434,11 @@ neo_t: or CheckDeadUni12("c2",0x0165,0x0164) or CheckDeadUni12("c5",0x0167,0x0166) or CheckDeadUni12("c6",0x1E6D,0x1E6C) - or CheckCompUni("lang_s",0xFB05) + or CheckDeadUni("t3",0x1E97) + or CheckCompUni("0x017F",0xFB05) or CheckCompUni("s",0xFB06) or CheckCompUni12("G","",0x03A4))) - OutputChar("t","T") + OutputChar12("t","T") else if (Ebene = 3) send {blind}- ; Bisstrich else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2076) @@ -1492,7 +1457,7 @@ neo_d: or CheckDeadUni12("c5",0x0111,0x0110) or CheckDeadUni12("c6",0x1E0D,0x1E0C) or CheckDeadUni12("t4",0x00F0,0x00D0))) - OutputChar("d","D") + OutputChar12("d","D") else if (Ebene = 3) send {blind}: else if (Ebene = 4) @@ -1509,7 +1474,7 @@ neo_y: or CheckDeadUni12("c1",0x0177,0x0176) or CheckDeadAsc12("t3","","") or CheckCompUni12("G","",0x03A5))) - OutputChar("y","Y") + OutputChar12("y","Y") else if (Ebene = 3) send {blind}@ else if (Ebene = 4) @@ -1532,7 +1497,7 @@ neo_ or CheckDeadUni12("a2",0x01DC,0x01DB) or CheckDeadUni12("c2",0x01DA,0x01D9) or CheckDeadUni12("t2",0x01D6,0x01D5))) - OutputChar("","") + OutputChar12("","") else if (Ebene = 3) send {#} else if (Ebene = 4) @@ -1547,7 +1512,7 @@ return neo_: EbeneAktualisieren() if (Ebene12 and !(CheckDeadUni12("t2",0x022B,0x022A))) - OutputChar("","") + OutputChar12("","") else if (Ebene = 3) send {blind}$ else if (Ebene = 4) @@ -1562,7 +1527,7 @@ return neo_: EbeneAktualisieren() if (Ebene12 and !(CheckDeadUni12("t2",0x01DF,0x01DE))) - OutputChar("","") + OutputChar12("","") else if (Ebene = 3) send {blind}| else if (Ebene = 4) @@ -1577,7 +1542,7 @@ neo_p: EbeneAktualisieren() if (Ebene12 and !(CheckDeadUni12("a4",0x1E57,0x1E56) or CheckCompUni12("G","",0x03A1))) - OutputChar("p","P") + OutputChar12("p","P") else if ((Ebene = 3) and !(CheckDeadUni("t1",0x2248))) send {blind}~ else if (Ebene = 4) @@ -1597,7 +1562,7 @@ neo_z: or CheckCompUni("d",0x01C6) or CheckCompUni12("D",0x01C5,0x01C4) or CheckCompUni12("G","",0x0396))) - OutputChar("z","Z") + OutputChar12("z","Z") else if (Ebene = 3) send ``{space} ; untot else if (Ebene = 4) { ; leer @@ -1613,7 +1578,7 @@ neo_b: EbeneAktualisieren() if (Ebene12 and !(CheckDeadUni12("a4",0x1E03,0x1E02) or CheckCompUni12("G","",0x0392))) - OutputChar("b","B") + OutputChar12("b","B") else if (Ebene = 3) if isMod2Locked send {blind}{Shift Up}{+} @@ -1633,7 +1598,7 @@ neo_m: or CheckCompUni12("t",0x2122,0x2122) ; TM or CheckCompUni12("s",0x2120,0x2120) ; SM or CheckCompUni12("G","",0x039C))) - OutputChar("m","M") + OutputChar12("m","M") else if (Ebene = 3) send {blind}`% else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B9) @@ -1692,7 +1657,7 @@ neo_j: or CheckCompUni("n",0x01CC) ; nj or CheckCompUni12("L",0x01C8,0x01C7) ; Lj/LJ or CheckCompUni12("N",0x01CB,0x01CA))) ; Nj/NJ - OutputChar("j","J") + OutputChar12("j","J") else if (Ebene = 3) send {blind}`; else if (Ebene = 4) @@ -1765,10 +1730,9 @@ return neo_Numpad7: EbeneAktualisieren() - if (Ebene = 1) { - send {blind}{Numpad7} - checkComp(7) - } else if (Ebene = 2) + if (Ebene = 1) + OutputChar("{Numpad7}") + else if (Ebene = 2) SendUnicodeChar(0x2020) ; Kreuz else if (Ebene = 3) SendUnicodeChar(0x2195) ; Hoch-Runter-Pfeil @@ -1778,13 +1742,12 @@ return neo_Numpad8: EbeneAktualisieren() - 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 - send {blind}{Numpad8} - checkComp(8) - } else if (Ebene = 2) + if ((Ebene = 1) and !(CheckCompUni("{Numpad1}",0x215B) ; 1/8 + or CheckCompUni("{Numpad3}",0x215C) ; 3/8 + or CheckCompUni("{Numpad5}",0x215D) ; 5/8 + or CheckCompUni("{Numpad7}",0x215E))) ; 7/8 + OutputChar("{Numpad8}") + else if (Ebene = 2) SendUnicodeChar(0x2229) ; Durchschnitt else if (Ebene = 3) SendUnicodeChar(0x2191) ; Hochpfeil @@ -1794,10 +1757,9 @@ return neo_Numpad9: EbeneAktualisieren() - if (Ebene = 1) { - send {blind}{Numpad9} - checkComp(9) - } else if (Ebene = 2) + if (Ebene = 1) + OutputChar("{Numpad9}") + else if (Ebene = 2) SendUnicodeChar(0x2297) ; Tensorprodukt / Vektor in die Ebene zeigend else if (Ebene = 3) SendUnicodeChar(0x220D) ; Kleines umgekehrtes Elementzeichen @@ -1807,11 +1769,10 @@ return neo_Numpad4: EbeneAktualisieren() - if ((Ebene = 1) and !(CheckCompUni("1",0x00BC) ; 1/4 - or CheckCompUni("3",0x00BE))) { ; 3/4 - send {blind}{Numpad4} - checkComp(4) - } else if (Ebene = 2) + if ((Ebene = 1) and !(CheckCompUni("{Numpad1}",0x00BC) ; 1/4 + or CheckCompUni("{Numpad3}",0x00BE))) ; 3/4 + OutputChar("{Numpad4}") + else if (Ebene = 2) SendUnicodeChar(0x2282) ; Teilmenge else if (Ebene = 3) SendUnicodeChar(0x2190) ; Linkspfeil @@ -1821,13 +1782,12 @@ return neo_Numpad5: EbeneAktualisieren() - 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 - send {blind}{Numpad5} - checkComp(5) - } else if (Ebene = 2) + if ((Ebene = 1) and !(CheckCompUni("{Numpad1}",0x2155) ; 1/5 + or CheckCompUni("{Numpad2}",0x2156) ; 2/5 + or CheckCompUni("{Numpad3}",0x2157) ; 3/5 + or CheckCompUni("{Numpad4}",0x2158))) ; 4/5 + OutputChar("{Numpad5}") + else if (Ebene = 2) SendUnicodeChar(0x20AC) ; Euro else if (Ebene = 3) SendUnicodeChar(0x221E) ; Unendlich @@ -1837,11 +1797,10 @@ return neo_Numpad6: EbeneAktualisieren() - if ((Ebene = 1) and !(CheckCompUni("1",0x2159) ; 1/6 - or CheckCompUni("5",0x215a))) { ; 5/6 - send {blind}{Numpad6} - checkComp(6) - } else if (Ebene = 2) + if ((Ebene = 1) and !(CheckCompUni("{Numpad1}",0x2159) ; 1/6 + or CheckCompUni("{Numpad5}",0x215a))) ; 5/6 + OutputChar("{Numpad6}") + else if (Ebene = 2) SendUnicodeChar(0x2283) ; Obermenge else if (Ebene = 3) SendUnicodeChar(0x2192) ; Rechtspfeil @@ -1852,8 +1811,7 @@ return neo_Numpad1: EbeneAktualisieren() if (Ebene = 1) { - send {blind}{Numpad1} - checkComp(1) + OutputChar("{Numpad1}") } else if (Ebene = 2) SendUnicodeChar(0x2714) ; Hkchen else if (Ebene = 3) @@ -1864,10 +1822,11 @@ return neo_Numpad2: EbeneAktualisieren() - if ((Ebene = 1) and !(CheckCompUni("1",0x00BD))) { ; 1/2 - send {blind}{Numpad2} - checkComp(2) - } else if (Ebene = 2) + if ((Ebene = 1) and !(CheckCompUni("{Numpad1}",0x00BD) ; 1/2 + or CheckCompUni("{!}",0x203C) ; DOUBLE EXCLAMATION MARK + or CheckCompUni("?",0x2047))) ; DOUBLE QUESTION MARK + OutputChar("{Numpad2}") + else if (Ebene = 2) SendUnicodeChar(0x222A) ; Vereinigung else if (Ebene = 3) SendUnicodeChar(0x2192) ; Untenpfeil @@ -1877,11 +1836,10 @@ return neo_Numpad3: EbeneAktualisieren() - if ((Ebene = 1) and !(CheckCompUni("1",0x2153) ; 1/3 - or CheckCompUni("5",0x2154))) { ; 2/3 - send {blind}{Numpad3} - checkComp(2) - } else if (Ebene = 2) + if ((Ebene = 1) and !(CheckCompUni("{Numpad1}",0x2153) ; 1/3 + or CheckCompUni("{Numpad5}",0x2154))) ; 2/3 + OutputChar("{Numpad3}") + else if (Ebene = 2) SendUnicodeChar(0x2718) ; Kreuzchen else if (Ebene = 3) SendUnicodeChar(0x2192) ; Rechtspfeil @@ -1891,10 +1849,9 @@ return neo_Numpad0: EbeneAktualisieren() - if (Ebene = 1) { - send {blind}{Numpad0} - checkComp(0) - } else if (Ebene = 2) + if (Ebene = 1) + OutputChar("{Numpad0}") + else if (Ebene = 2) SendUnicodeChar(0x2030) ; Promille else if (Ebene = 3) SendUnicodeChar(0x0025) ; Prozent @@ -2160,16 +2117,18 @@ InsertIntegerLED(pInteger, ByRef pDest, pOffset = 0, pSize = 4) { Loop %pSize% ; Copy each byte in the integer into the structure as raw binary data. DllCall("RtlFillMemory", "UInt", &pDest + pOffset + A_Index-1, "UInt", 1, "UChar", pInteger >> 8*(A_Index-1) & 0xFF) } -deadAsc(val) { +deadAsc(val, a) { global if !DeadSilence send % val + DeadKey := a } -deadUni(val) { +deadUni(val, a) { global if !DeadSilence SendUnicodeChar(val) + DeadKey := a } undeadAsc(val) { @@ -2232,7 +2191,10 @@ CheckDeadUni12(d,val1,val2) { CheckCompAsc(d,val) { global if (PriorCompKey == d) { + if !DeadCompose + send {bs} send % val + isSecondCompKey = 0 return 1 } } @@ -2241,10 +2203,16 @@ CheckCompAsc12(d,val1,val2) { global if (PriorCompKey == d) if (Ebene = 1) and (val1 != "") { + if !DeadCompose + send {bs} send % val1 + isSecondCompKey = 0 return 1 } else if (Ebene = 2) and (val2 != "") { + if !DeadCompose + send {bs} send % val2 + isSecondCompKey = 0 return 1 } } @@ -2252,7 +2220,11 @@ CheckCompAsc12(d,val1,val2) { CheckCompUni(d,val) { global if (PriorCompKey == d) { + PriorCompKey = + if !DeadCompose + send {bs} SendUnicodeChar(val) + isSecondCompKey = 0 return 1 } } @@ -2261,10 +2233,18 @@ CheckCompUni12(d,val1,val2){ global if (PriorCompKey == d) { if (Ebene = 1) and (val1 != "") { + PriorCompKey = + if !DeadCompose + send {bs} SendUnicodeChar(val1) + isSecondCompKey = 0 return 1 } else if (Ebene = 2) and (val2 != "") { + PriorCompKey = + if !DeadCompose + send {bs} SendUnicodeChar(val2) + isSecondCompKey = 0 return 1 } } @@ -2273,7 +2253,11 @@ CheckCompUni12(d,val1,val2){ CheckComp3Uni(d,val) { global if (PriorCompKey == d) { + PriorCompKey = + if !DeadCompose + send {bs}{bs} SendUnicodeChar(val) + isSecondCompKey = 0 return 1 } } @@ -2282,31 +2266,54 @@ CheckComp3Uni12(d,val1,val2) { global if (PriorCompKey == d) { if (Ebene = 1) and (val1 != "") { + PriorCompKey = + if !DeadCompose + send {bs}{bs} SendUnicodeChar(val1) + isSecondCompKey = 0 return 1 } else if (Ebene = 2) and (val2 != "") { + PriorCompKey = + if !DeadCompose + send {bs}{bs} SendUnicodeChar(val2) + isSecondCompKey = 0 return 1 } } } -outputChar(val1,val2) { +OutputChar(val) { + global + if !((CheckComp(val) or PriorCompKey) and DeadCompose) + send % "{blind}" . val +} + +OutputChar12(val1,val2) { global if (Ebene = 1) c := val1 else c := val2 - if !(CheckComp(c) and DeadCompose or PriorCompKey) + if !((CheckComp(c) or PriorCompKey) and DeadCompose) if GetKeyState("Shift","P") and isMod2Locked send % "{blind}{Shift Up}" . c . "{Shift Down}" else send % "{blind}" . c } -checkComp(d) { +CheckComp(d) { global if (PriorDeadKey = "comp") { CompKey := d return 1 + } else if isSecondCompKey { + isSecondCompKey = 0 + CompKey = + PriorCompKey = + ;goto neo_%lastHook% + } else if PriorCompKey { + CompKey := PriorCompKey . "_" . d + isSecondCompKey = 1 + return 1 } } /* @@ -2321,6 +2328,8 @@ Der Aufruf von SendUnicodeChar(charCode) { + global + if !((CheckComp(charCode) or PriorCompKey) and DeadCompose) IfWinActive,ahk_class gdkWindowToplevel { StringLower,charCode,charCode diff --git a/windows/autohotkey/neo20.exe b/windows/autohotkey/neo20.exe index 0035905..1e99d51 100644 Binary files a/windows/autohotkey/neo20.exe and b/windows/autohotkey/neo20.exe differ -- cgit v1.2.3