/* Die eigentliche NEO-Belegung und der Hauptteil des AHK-Treibers. Reihe 1 */ neo_tot1: noCaps = 1 EbeneAktualisieren() if (Ebene = 1) and !CheckDeadUni("c1",0x0302) deadUni(0x02C6, "dead_circumflex", "c1") ; Zirkumflex, tot else if (Ebene = 2) and !CheckDeadUni("c2",0x030C) deadUni(0x02C7, "dead_caron", "c2") ; Caron, tot else if (Ebene = 3) and !CheckDeadUni("c3",0x0306) deadUni(0x02D8, "dead_breve", "c3") ; Brevis, tot ;CompKey := PriorCompKey return neo_1: noCaps=1 EbeneAktualisieren() if Ebene12 and !(CheckDeadUni("c1",0x00B9) ; Hochgestellte 1 or CheckDeadUni("c5",0x2081)) ; Tiefgestellte 1 OutputChar12(1,"°",1,"degree") else if (Ebene = 3) SendUnicodeChar(0x00B9, "onesuperior") ; Hochgestellte 1 else if (Ebene = 4) SendUnicodeChar(0x2022, "enfilledcircbullet") ; Bullet else if (Ebene = 5) SendUnicodeChar(0x2081, "U2081") ; Tiefgestellte 1 else if (Ebene = 6) SendUnicodeChar(0x00AC, "notsign") ; Nicht-Symbol return neo_2: noCaps = 1 EbeneAktualisieren() if (Ebene = 1 and !(CheckDeadUni("c1",0x00B2) ; Hochgestellte 2 or CheckDeadUni("c5",0x2082))) ; Tiefgestellte 2 OutputChar(2,2) else if (Ebene = 2) SendUnicodeChar(0x2116, "numerosign") ; Numero else if (Ebene = 3) SendUnicodeChar(0x00B2, "twosuperior") ; Hochgestellte 2 else if (Ebene = 4) SendUnicodeChar(0x2023, "U2023") ; Aufzählungspfeil else if (Ebene = 5) SendUnicodeChar(0x2082, "U2082") ; Tiefgestellte 2 else if (Ebene = 6) SendUnicodeChar(0x2228, "logicalor") ; Logisches Oder return neo_3: noCaps = 1 EbeneAktualisieren() if Ebene12 and !(CheckDeadUni("c1",0x00B3) ; Hochgestellte 3 or CheckDeadUni("c5",0x2083)) ; Tiefgestellte 3 OutputChar12(3,"§",3,"section") else if (Ebene = 3) SendUnicodeChar(0x00B3, "threesuperior") ; Hochgestellte 3 else if (Ebene = 4) SendUnicodeChar(0x266B, "U226B") ; 2 Achtelnoten else if (Ebene = 5) SendUnicodeChar(0x2083, "U2083") ; Tiefgestellte 3 else if (Ebene = 6) SendUnicodeChar(0x2227, "logicaland") ; Logisches Und return neo_4: noCaps = 1 EbeneAktualisieren() if (Ebene = 1) and !(CheckDeadUni("c1",0x2074) ; Hochgestellte 4 or CheckDeadUni("c5",0x2084)) ; Tiefgestellte 4 OutputChar(4,4) else if (Ebene = 2) SendUnicodeChar(0x00BB, "guillemotright") ; Double guillemot right else if (Ebene = 3) OutputChar("›", "U230A") ; Single guillemot right else if (Ebene = 4) OutputChar("{PgUp}", "Prior") ; Bild auf else if (Ebene = 5) SendUnicodeChar(0x2113, "U2213") ; Script small L else if (Ebene = 6) SendUnicodeChar(0x22A5, "uptack") ; Senkrecht return neo_5: noCaps = 1 EbeneAktualisieren() if (Ebene = 1) and !(CheckDeadUni("c1",0x2075) ; Hochgestellte 5 or CheckDeadUni("c5",0x2085)) ; Tiefgestellte 5 OutputChar(5,5) else if (Ebene = 2) SendUnicodeChar(0x00AB, "guillemotleft") ; Double guillemot left else if (Ebene = 3) OutputChar("‹", "U2039") ; Single guillemot left else if (Ebene = 5) SendUnicodeChar(0x0AF8, "femalesymbol") ; Kreuz (Dagger) else if (Ebene = 6) SendUnicodeChar(0x2221, "U2221") ; Winkel return neo_6: noCaps = 1 EbeneAktualisieren() if (Ebene = 1) and !(CheckDeadUni("c1",0x2076) ; Hochgestellte 6 or CheckDeadUni("c5",0x2086)) ; Tiefgestellte 6 OutputChar(6,6) else if (Ebene = 2) SendUnicodeChar(0x20AC, "EuroSign") else if (Ebene = 3) OutputChar("¢", "cent") else if (Ebene = 4) OutputChar("£", "sterling") else if (Ebene = 5) SendUnicodeChar(0x0AF7, "malesymbol") else if (Ebene = 6) SendUnicodeChar(0x2225, "U2225") ; parallel return neo_7: noCaps = 1 EbeneAktualisieren() if Ebene12 and !(CheckDeadUni("c1",0x2077) ; Hochgestellte 7 or CheckDeadUni("c5",0x2087)) ; Tiefgestellte 7 OutputChar12(7,"$",7,"dollar") else if (Ebene = 3) OutputChar("¥", "yen") else if (Ebene = 4) OutputChar("¤", "currency") else if (Ebene = 5) SendUnicodeChar(0x03BA, "Greek_kappa") ; greek small letter kappa else if (Ebene = 6) SendUnicodeChar(0x2209, "notelementof") ; nicht Element von return neo_8: noCaps = 1 EbeneAktualisieren() if Ebene12 and !(CheckDeadUni("c1",0x2078) ; Hochgestellte 8 or CheckDeadUni("c5",0x2088)) ; Tiefgestellte 8 OutputChar12(8,"„",8,"doublelowquotemark") else if (Ebene = 3) OutputChar("‚", "singlelowquotemark") else if (Ebene = 4) OutputChar("{NumpadDiv}", "KP_Divide") else if (Ebene = 5) SendUnicodeChar(0x27E8, "U27E8") ; bra (öffnende spitze Klammer) else if (Ebene = 6) SendUnicodeChar(0x2204, "U2204") ; es existiert nicht return neo_9: noCaps = 1 EbeneAktualisieren() if Ebene12 and !(CheckDeadUni("c1",0x2079) ; Hochgestellte 9 or CheckDeadUni("c5",0x2089)) ; Tiefgestellte 9 OutputChar12(9,"“",9,"leftdoublequotemark") else if (Ebene = 3) OutputChar("‘", "leftsinglequotemark") else if (Ebene = 4) OutputChar("{NumpadMult}", "KP_Multiply") else if (Ebene = 5) SendUnicodeChar(0x27E9, "U27E9") ; ket (schließende spitze Klammer) else if (Ebene = 6) SendUnicodeChar(0x2226, "U2226") ; nicht parallel return neo_0: noCaps = 1 EbeneAktualisieren() if Ebene12 and !(CheckDeadUni("c1",0x2070) ; Hochgestellte 0 or CheckDeadUni("c5",0x2080)) ; Tiefgestellte 0 OutputChar12(0,"”",0,"rightdoublequotemark") else if (Ebene = 3) OutputChar("’", "rightsingleqoutemark") else if (Ebene = 4) OutputChar("{NumpadSub}", "minus") ; s. Mail vom Sun, 14 Sep 2008 00:33:47 +0200 else if (Ebene = 6) SendUnicodeChar(0x2205, "emptyset") ; leere Menge return neo_strich: noCaps = 1 EbeneAktualisieren() if (Ebene = 1) OutputChar("-", "minus") ; Bindestrich-Minus else if (Ebene = 2) SendUnicodeChar(0x2013, "endash") ; Gedankenstrich else if (Ebene = 3) SendUnicodeChar(0x2014, "emdash") ; Englischer Gedankenstrich (Geviertstrich) else if (Ebene = 5) SendUnicodeChar(0x2011, "U2011") ; geschützter Bindestrich (Bindestrich ohne Zeilenumbruch) else if (Ebene = 6) SendUnicodeChar(0x00AD, "hyphen") ; weicher Bindestrich return neo_tot2: noCaps = 1 EbeneAktualisieren() if (Ebene = 1) and !CheckDeadUni("a1",0x0301) deadAsc("{´}{space}", "dead_acute", "a1") ; Akut, tot else if (Ebene = 2) and !CheckDeadUni("a2",0x0300) deadAsc("``{space}", "dead_grave", "a2") ; Gravis, tot else if (Ebene = 3) and !CheckDeadUni("a3",0x0327) deadAsc("¸", "dead_cedilla", "a3") ; Cedilla, tot else if (Ebene = 4) and !CheckDeadUni("a4",0x0307) deadUni(0x02D9, "dead_abovedot", "a4") ; Punkt oben else if (Ebene = 5) and !CheckDeadUni("a5",0x0328) deadUni(0x02DB, "dead_ogonek", "a5") ; Ogonek else if (Ebene = 6) and !CheckDeadUni("a6",0x030A) deadUni(0x02DA, "dead_abovering", "a6") ; Ring oben CompKey := PriorCompKey return /* Reihe 2 */ neo_x: EbeneAktualisieren() if Ebene12 OutputChar12("x","X","x","X") else if (Ebene = 3) SendUnicodeChar(0x2026, "ellipsis") ; Ellipse horizontal else if (Ebene = 4) SendUnicodeChar(0x22EE, "U22EE") ; Ellipse vertikal else if (Ebene = 5) SendUnicodeChar(0x03BE, "Greek_xi") ; xi else if (Ebene = 6) SendUnicodeChar(0x039E, "Greek_XI") ; Xi return neo_v: EbeneAktualisieren() if (Ebene12 and !(CheckDeadUni12("c6",0x1E7F,0x1E7E))) OutputChar12("v","V","v","V") else if (Ebene = 3) OutputChar("_","underscore") else if (Ebene = 4) and (!lernModus or lernModus_neo_Backspace) OutputChar("{Backspace}", "BackSpace") else if (Ebene = 6) SendUnicodeChar(0x2259, "U2259") ; estimates/entspricht 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))) OutputChar12("l","L","l","L") else if (Ebene = 3) OutputChar("[", "bracketleft") else if (Ebene = 4) OutputChar("{Up}", "Up") else if (Ebene = 5) SendUnicodeChar(0x03BB, "Greek_lambda") ; lambda else if (Ebene = 6) SendUnicodeChar(0x039B, "Greek_LAMBDA") ; Lambda 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))) OutputChar12("c","C","c","C") else if (Ebene = 3) OutputChar("]", "bracketright") else if (Ebene = 4) and (!lernModus or lernModus_neo_Entf) OutputChar("{Del}", "Delete") else if (Ebene = 5) SendUnicodeChar(0x03C7, "Greek_chi") ; chi else if (Ebene = 6) SendUnicodeChar(0x2102, "U2102") ; C (Komplexe Zahlen)] return neo_w: EbeneAktualisieren() if (Ebene12 and !(CheckDeadUni12("c1",0x0175,0x0174))) OutputChar12("w","W","w","W") else if (Ebene = 3) SendUnicodeChar(0x005E, "asciicircum") ; Zirkumflex else if (Ebene = 4) OutputChar("{Insert}", "Insert") ; Einfg else if (Ebene = 5) SendUnicodeChar(0x03C9, "Greek_omega") ; omega else if (Ebene = 6) SendUnicodeChar(0x03A9, "Greek_OMEGA") ; Omega return neo_k: EbeneAktualisieren() if (Ebene12 and !(CheckDeadUni12("a3",0x0137,0x0136) or CheckDeadUni12("c6",0x1E33,0x1E32))) OutputChar12("k","K","k","K") else if (Ebene = 3) OutputChar("{!}", "exclam") else if (Ebene = 4) OutputChar("¡", "exclamdown") else if (Ebene = 5) SendUnicodeChar(0x03F0, "U03F0") ; kappa symbol (varkappa) else if (Ebene = 6) SendUnicodeChar(0x221A, "radical") ; Wurzel 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))) OutputChar12("h","H","h","H") else if ((Ebene = 3) and !(CheckDeadUni("t4",0x2264))) ; kleiner gleich OutputChar("<", "less") else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2077) or CheckDeadUni("t4",0x2087))) OutputChar("{Numpad7}", "KP_7") else if (Ebene = 5) SendUnicodeChar(0x03C8, "Greek_psi") ; psi else if (Ebene = 6) SendUnicodeChar(0x03A8, "Greek_PSI") ; 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))) OutputChar12("g","G","g","G") else if ((Ebene = 3) and !(CheckDeadUni("t4",0x2265))) ; größer gleich OutputChar(">", "greater") else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2078) or CheckDeadUni("t4",0x2088))) OutputChar("{Numpad8}", "KP_8") else if (Ebene = 5) SendUnicodeChar(0x03B3, "Greek_gamma") ; gamma else if (Ebene = 6) SendUnicodeChar(0x0393, "Greek_GAMMA") ; Gamma return neo_f: EbeneAktualisieren() if (Ebene12 and !(CheckDeadUni12("a4",0x1E1F,0x1E1E) or CheckDeadUni12("t4",0x0192,0x0191))) OutputChar12("f","F","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("t2",0x2261) ; identisch or CheckDeadUni("t1",0x2245) ; ungefähr gleich or CheckDeadUni("t4",0x2260))) ; ungleich OutputChar("`=", "equal") else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2079) or CheckDeadUni("t4",0x2089))) OutputChar("{Numpad9}", "KP_9") else if (Ebene = 5) SendUnicodeChar(0x03C6, "Greek_phi") ; phi else if (Ebene = 6) SendUnicodeChar(0x03A6, "Greek_PHI") ; Phi return neo_q: EbeneAktualisieren() if (Ebene12) OutputChar12("q","Q","q","Q") else if (Ebene = 3) OutputChar("{&}", "ampersand") else if ((Ebene = 4) and !(CheckDeadUni("c1",0x207A) or CheckDeadUni("c5",0x208A))) OutputChar("{NumPadAdd}", "plus") ; !!! else if (Ebene = 5) SendUnicodeChar(0x03D5, "U03D5") ; phi symbol (varphi) else if (Ebene = 6) SendUnicodeChar(0x211A, "U211A") ; Q (rationale Zahlen) return neo_sz: EbeneAktualisieren() if (Ebene = 1) if LangSTastatur OutputChar("s", "s") else OutputChar("ß", "ssharp") else if (Ebene = 2) SendUnicodeChar(0x1E9E, "U1E9E") ; versal-ß else if (Ebene = 3) if LangSTastatur OutputChar("ß", "ssharp") else SendUnicodeChar(0x017F, "17F") ; langes s else if (Ebene = 5) SendUnicodeChar(0x03C2, "Greek_finalsmallsigma") ; varsigma else if (Ebene = 6) SendUnicodeChar(0x2218, "jot") ; Verknüpfungsoperator return neo_tot3: noCaps = 1 EbeneAktualisieren() if (Ebene = 1) and !CheckDeadUni("t1",0x0303) deadUni(0x02DC, "dead_tilde", "t1") ; Tilde, tot else if (Ebene = 2) and !CheckDeadUni("t2",0x0304) deadUni(0x00AF, "dead_macron", "t2") ; Macron, tot else if (Ebene = 3) and !CheckDeadUni("t3",0x0308) deadUni(0x00A8, "dead_diaeresis", "t3") ; Diärese else if (Ebene = 4) and !CheckDeadUni("t4",0x0338) deadUni(0x002F, "", "t4") ; Schrägstrich, tot else if (Ebene = 5) and !CheckDeadUni("t5",0x030B) deadUni(0x02DD, "dead_doubleacute", "t5") ; Doppelakut else if (Ebene = 6) and !CheckDeadUni("t6",0x0326) deadUni(0x02CF, "", "t6") ; Komma drunter, tot return /* Reihe 3 */ 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))) OutputChar12("u","U","u","U") else if (Ebene = 3) OutputChar("\", "backslash") else if (Ebene = 4) OutputChar("{Home}", "Home") else if (Ebene = 6) SendUnicodeChar(0x222E, "U222E") ; contour integral 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","ï","Ï"))) OutputChar12("i","I","i","I") else if (Ebene = 3) OutputChar("`/", "slash") else if (Ebene = 4) OutputChar("{Left}", "Left") else if (Ebene = 5) SendUnicodeChar(0x03B9, "Greek_iota") ; iota else if (Ebene = 6) SendUnicodeChar(0x222B, "integral") ; integral 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","ä","Ä"))) OutputChar12("a","A","a","A") else if (Ebene = 3) OutputChar("{{}", "braceleft") else if (Ebene = 4) OutputChar("{Down}", "Down") else if (Ebene = 5) SendUnicodeChar(0x03B1, "Greek_alpha") ; alpha else if (Ebene = 6) SendUnicodeChar(0x2200, "U2200") ; für 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("t1",0x1EBD,0x1EBC) or CheckDeadUni12("t2",0x0113,0x0112) or CheckDeadAsc12("t3","ë","Ë"))) OutputChar12("e","E","e","E") else if (Ebene = 3) OutputChar("{}}", "braceright") else if (Ebene = 4) OutputChar("{Right}", "Right") else if (Ebene = 5) SendUnicodeChar(0x03B5, "Greek_epsilon") ; epsilon else if (Ebene = 6) SendUnicodeChar(0x2203, "U2203") ; 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))) OutputChar12("o","O","o","O") else if (Ebene = 3) OutputChar("*", "asterisk") else if (Ebene = 4) OutputChar("{End}", "End") else if (Ebene = 5) SendUnicodeChar(0x03BF, "Greek_omicron") ; omicron else if (Ebene = 6) SendUnicodeChar(0x2208, "elementof") ; element of 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))) { if LangSTastatur and (Ebene = 1) SendUnicodeChar(0x017F, "17F") ; langes s else OutputChar12("s","S","s","S") } else if (Ebene = 3) OutputChar("?", "question") else if Ebene7 { if LangSTastatur OutputChar("s", "s") else SendUnicodeChar(0x017F, "17F") } else if (Ebene = 4) OutputChar("¿", "questiondown") else if (Ebene = 5) SendUnicodeChar(0x03C3, "Greek_sigma") ;sigma else if (Ebene = 6) SendUnicodeChar(0x03A3, "Greek_SIGMA") ;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))) OutputChar12("n","N","n","N") else if (Ebene = 3) OutputChar("(", "parenleft") else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2074) or CheckDeadUni("t4",0x2084))) OutputChar("{Numpad4}", "KP_4") else if (Ebene = 5) SendUnicodeChar(0x03BD, "Greek_nu") ; nu else if (Ebene = 6) SendUnicodeChar(0x2115, "U2115") ; N (natürliche Zahlen) 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("t3",0x1E5B,0x1E5A))) OutputChar12("r","R","r","R") else if (Ebene = 3) OutputChar(")", "parenright") else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2075) or CheckDeadUni("t4",0x2085))) OutputChar("{Numpad5}", "KP_5") else if (Ebene = 5) SendUnicodeChar(0x03F1, "U03F1") ; rho symbol (varrho) else if (Ebene = 6) SendUnicodeChar(0x211D, "U221D") ; R (reelle Zahlen) 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("t4",0x1E6D,0x1E6C) or CheckDeadUni("t3",0x1E97))) OutputChar12("t","T","t","T") else if (Ebene = 3) OutputChar("-", "minus") ; Bisstrich else if (Ebene = 4) and !(CheckDeadUni("c1",0x2076) or CheckDeadUni("c5",0x2086)) OutputChar("{Numpad6}", "KP_6") else if (Ebene = 5) SendUnicodeChar(0x03C4, "Greek_tau") ; tau else if (Ebene = 6) SendUnicodeChar(0x2202, "partialderivative") ; partielle Ableitung return neo_d: EbeneAktualisieren() if (Ebene12 and !(CheckDeadUni12("a4",0x1E0B,0x1E0A) or CheckDeadUni12("c2",0x010F,0x010E) or CheckDeadUni12("t2",0x0111,0x0110) or CheckDeadUni12("t3",0x1E0D,0x1E0C) or CheckDeadUni12("t4",0x00F0,0x00D0))) OutputChar12("d","D","d","D") else if (Ebene = 3) OutputChar(":", "colon") else if (Ebene = 4) OutputChar("`,", "comma") else if (Ebene = 5) SendUnicodeChar(0x03B4, "Greek_delta") ; delta else if (Ebene = 6) SendUnicodeChar(0x0394, "Greek_DELTA") ; Delta return neo_y: EbeneAktualisieren() if (Ebene12 and !(CheckDeadUni12("a1",0x00FD,0x00DD) or CheckDeadUni12("c1",0x0177,0x0176) or CheckDeadAsc12("t3","ÿ","Ÿ"))) OutputChar12("y","Y","y","Y") else if (Ebene = 3) OutputChar("@", "at") else if (Ebene = 4) OutputChar(".", "period") else if (Ebene = 5) SendUnicodeChar(0x03C5, "Greek_upsilon") ; upsilon else if (Ebene = 6) SendUnicodeChar(0x2207, "nabla") ; nabla return /* Reihe 4 */ neo_ü: EbeneAktualisieren() if (Ebene12 and !(CheckDeadUni12("a1",0x01D8,0x01D7) or CheckDeadUni12("a2",0x01DC,0x01DB) or CheckDeadUni12("c2",0x01DA,0x01D9) or CheckDeadUni12("t2",0x01D6,0x01D5))) OutputChar12("ü","Ü","udiaeresis","Udiaeresis") else if (Ebene = 3) if isMod2Locked OutputChar("{Shift Up}{#}", "numbersign") else OutputChar("{blind}{#}", "numbersign") else if (Ebene = 4) OutputChar("{Esc}", "Escape") else if (Ebene = 6) SendUnicodeChar(0x221D, "variation") ; proportional return neo_ö: EbeneAktualisieren() if (Ebene12 and !(CheckDeadUni12("t2",0x022B,0x022A))) OutputChar12("ö","Ö","odiaeresis","Odiaeresis") else if (Ebene = 3) OutputChar("$", "dollar") else if (Ebene = 4) OutputChar("{Tab}", "Tab") else if (Ebene = 6) SendUnicodeChar(0x2111, "U2221") ; Fraktur I return neo_ä: EbeneAktualisieren() if (Ebene12 and !(CheckDeadUni12("t2",0x01DF,0x01DE))) OutputChar12("ä","Ä","adiaeresis","Adiaeresis") else if (Ebene = 3) OutputChar("|", "bar") else if (Ebene = 4) OutputChar("{PgDn}", "Next") else if (Ebene = 5) SendUnicodeChar(0x03B7, "Greek_eta") ; eta else if (Ebene = 6) SendUnicodeChar(0x211C, "U221C") ; Fraktur R return neo_p: EbeneAktualisieren() if (Ebene12 and !(CheckDeadUni12("a4",0x1E57,0x1E56))) OutputChar12("p","P","p","P") else if ((Ebene = 3) and !(CheckDeadUni("t1",0x2248))) OutputChar("~", "asciitilde") else if (Ebene = 4) OutputChar("{Enter}", "Return") else if (Ebene = 5) SendUnicodeChar(0x03C0, "Greek_pi") ; pi else if (Ebene = 6) SendUnicodeChar(0x03A0, "Greek_PI") ; 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))) OutputChar12("z","Z","z","Z") else if (Ebene = 3) OutputChar("``{space}", "grave") ; untot else if (Ebene = 5) SendUnicodeChar(0x03B6, "Greek_zeta") ; zeta else if (Ebene = 6) SendUnicodeChar(0x2124, "U2124") ; Z (ganze Zahlen) return neo_b: EbeneAktualisieren() if (Ebene12 and !(CheckDeadUni12("a4",0x1E03,0x1E02))) OutputChar12("b","B","b","B") else if (Ebene = 3) if isMod2Locked OutputChar("{Shift Up}{+}", "plus") else OutputChar("{blind}{+}", "plus") else if (Ebene = 4) OutputChar(":", "colon") else if (Ebene = 5) SendUnicodeChar(0x03B2, "Greek_beta") ; beta else if (Ebene = 6) SendUnicodeChar(0x21D2, "implies") ; Doppel-Pfeil rechts return neo_m: EbeneAktualisieren() if (Ebene12 and !(CheckDeadUni12("a4",0x1E41,0x1E40) or CheckDeadUni12("c6",0x1E43,0x1E42))) OutputChar12("m","M","m","M") else if (Ebene = 3) OutputChar("`%", "percent") else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B9) or CheckDeadUni("t4",0x2081))) OutputChar("{Numpad1}", "KP_1") else if (Ebene = 5) SendUnicodeChar(0x03BC, "Greek_mu") ; griechisch mu, micro wäre 0x00B5 else if (Ebene = 6) SendUnicodeChar(0x21D4, "ifonlyif") ; doppelter Doppelpfeil (genau dann wenn) return neo_komma: noCaps = 1 EbeneAktualisieren() if (Ebene = 1) OutputChar(",", "comma") else if (Ebene = 3) OutputChar(Chr(34), "quotedbl") else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B2) or CheckDeadUni("c5",0x2082))) OutputChar("{Numpad2}", "KP_2") else if (Ebene = 5) SendUnicodeChar(0x03C1, "Greek_rho") ; rho else if (Ebene = 6) SendUnicodeChar(0x21D0, "U21D0") ; Doppelpfeil links return neo_punkt: noCaps = 1 EbeneAktualisieren() if (Ebene = 1) OutputChar(".", "period") else if (Ebene = 3) OutputChar("'", "apostrophe") else if ((Ebene = 4) and !(CheckDeadUni("c1",0x00B3) or CheckDeadUni("t4",0x2083))) OutputChar("{Numpad3}", "KP_3") else if (Ebene = 5) SendUnicodeChar(0x03D1, "U03D1") ; theta symbol (vartheta) else if (Ebene = 6) SendUnicodeChar(0x0398, "Greek_THETA") ; Theta return neo_j: EbeneAktualisieren() if (Ebene12 and !(CheckDeadUni12("c1",0x0135,0x0134) or CheckDeadUni("c2",0x01F0))) OutputChar12("j","J","j","J") else if (Ebene = 3) OutputChar("`;", "semicolon") else if (Ebene = 4) OutputChar("`;", "semicolon") else if (Ebene = 5) SendUnicodeChar(0x03B8, "Greek_theta") ; theta else if (Ebene = 6) SendUnicodeChar(0x2261, "identical") ; identisch return /* Numpad */ neo_NumLock: EbeneAktualisieren() if (Ebene = 1) ;… OutputChar("`=", "equal") if (Ebene = 3) SendUnicodeChar(0x2248, "U2248") ; Fast gleich if (Ebene = 2) SendUnicodeChar(0x2260, "U2260") ; Ungleich zu return neo_NumpadDiv: EbeneAktualisieren() if Ebene12 OutputChar("{NumpadDiv}", "KP_Divide") else if (Ebene = 4) SendUnicodeChar(0x2215, "division") ; Slash else if (Ebene = 3) OutputChar("÷", "U2044") return neo_NumpadMult: EbeneAktualisieren() if Ebene12 send {blind}{NumpadMult} else if (Ebene = 3) SendUnicodeChar(0x22C5, "multiply") ; Cdot else if (Ebene = 4) OutputChar("×", "U2219") return neo_NumpadSub: EbeneAktualisieren() if (Ebene12 and !(CheckDeadUni("c1",0x207B) or CheckDeadUni("t4",0x208B))) send {blind}{NumpadSub} else if (Ebene = 3) or (Ebene = 4) SendUnicodeChar(0x2212, "U2212") ; Echtes Minus return neo_NumpadAdd: EbeneAktualisieren() if (Ebene12 and !(CheckDeadUni("c1",0x207A) or CheckDeadUni("c5",0x208A))) send {blind}{NumpadAdd} else if (Ebene = 3) OutputChar("±", "plusminus") else if (Ebene = 4) SendUnicodeChar(0x2213, "U2213") ; Inverses ± return neo_NumpadEnter: send {blind}{NumpadEnter} return neo_Numpad7: EbeneAktualisieren() if (Ebene = 1) OutputChar("{Numpad7}", "KP_7") else if (Ebene = 2) SendUnicodeChar(0x2020, "dagger") ; Kreuz else if (Ebene = 3) SendUnicodeChar(0x2195, "U2195") ; Hoch-Runter-Pfeil else if (Ebene = 4) send {blind}{NumpadHome} return neo_Numpad8: EbeneAktualisieren() if (Ebene = 1) OutputChar("{Numpad8}", "KP_8") else if (Ebene = 2) SendUnicodeChar(0x2229, "intersection") ; Durchschnitt else if (Ebene = 3) SendUnicodeChar(0x2191, "uparrow") ; Hochpfeil else if (Ebene = 4) send {blind}{NumpadUp} return neo_Numpad9: EbeneAktualisieren() if (Ebene = 1) OutputChar("{Numpad9}", "KP_9") else if (Ebene = 2) SendUnicodeChar(0x2297, "U2297") ; Tensorprodukt / Vektor in die Ebene zeigend else if (Ebene = 3) SendUnicodeChar(0x220D, "U220D") ; Kleines umgekehrtes Elementzeichen else if (Ebene = 4) send {blind}{NumpadPgUp} return neo_Numpad4: EbeneAktualisieren() if (Ebene = 1) OutputChar("{Numpad4}", "KP_4") else if (Ebene = 2) SendUnicodeChar(0x2282, "includein") ; Teilmenge else if (Ebene = 3) SendUnicodeChar(0x2190, "leftarrow") ; Linkspfeil else if (Ebene = 4) send {blind}{NumpadLeft} return neo_Numpad5: EbeneAktualisieren() if (Ebene = 1) OutputChar("{Numpad5}", "KP_5") else if (Ebene = 2) SendUnicodeChar(0x20AC, "EuroSign") ; Euro else if (Ebene = 3) SendUnicodeChar(0x221E, "infinity") ; Unendlich else if (Ebene = 4) ; Beg send {blind}{NumPadClear} return neo_Numpad6: EbeneAktualisieren() if (Ebene = 1) OutputChar("{Numpad6}", "KP_6") else if (Ebene = 2) SendUnicodeChar(0x2283, "includes") ; Obermenge else if (Ebene = 3) SendUnicodeChar(0x2192, "rightarrow") ; Rechtspfeil else if (Ebene = 4) send {blind}{NumpadRight} return neo_Numpad1: EbeneAktualisieren() if (Ebene = 1) OutputChar("{Numpad1}", "KP_1") else if (Ebene = 2) SendUnicodeChar(0x2714, "U2714") ; Häkchen else if (Ebene = 3) SendUnicodeChar(0x2194, "U2194") ; Links-Rechts-Pfeil else if (Ebene = 4) send {blind}{NumpadEnd} return neo_Numpad2: EbeneAktualisieren() if (Ebene = 1) OutputChar("{Numpad2}", "KP_2") else if (Ebene = 2) SendUnicodeChar(0x222A, "union") ; Vereinigung else if (Ebene = 3) SendUnicodeChar(0x2192, "downarrow") ; Untenpfeil else if (Ebene = 4) send {blind}{NumpadDown} return neo_Numpad3: EbeneAktualisieren() if (Ebene = 1) OutputChar("{Numpad3}", "KP_3") else if (Ebene = 2) SendUnicodeChar(0x2718, "U2718") ; Kreuzchen else if (Ebene = 3) SendUnicodeChar(0x21CC, "U21CC") ; Harpune else if (Ebene = 4) send {blind}{NumpadPgDn} return neo_Numpad0: EbeneAktualisieren() if (Ebene = 1) OutputChar("{Numpad0}", "KP_0") else if (Ebene = 2) SendUnicodeChar(0x0025, "percent") ; Prozent else if (Ebene = 3) SendUnicodeChar(0x2030, "U2030") ; Promille else if (Ebene = 4) send {blind}{NumpadIns} return neo_NumpadDot: EbeneAktualisieren() if (Ebene = 1) send {blind}{NumpadDot} else if (Ebene = 2) send `, else if (Ebene = 3) send {blind}. else if (Ebene = 4) send {blind}{NumpadDel} return /* Sondertasten */ *space:: if einHandNeo spacepressed := 1 else goto neo_SpaceUp return *space up:: if einHandNeo if keypressed { keypressed := 0 spacepressed := 0 } else goto neo_SpaceUp return neo_SpaceUp: EbeneAktualisieren() if (Ebene = 1) and !CheckDeadUni("t4",0x2010) ; Echter Bindestrich OutputChar("{Space}", "Space") else if (Ebene = 2) or (Ebene = 3) Send {blind}{Space} else if ((Ebene = 4) and !(CheckDeadUni("c1",0x2070) or CheckDeadUni("c5",0x2080))) OutputChar("{Numpad0}", "KP_0") else if (Ebene = 5) SendUnicodeChar(0x00A0, "U00A0") ; geschütztes Leerzeichen else if (Ebene = 6) SendUnicodeChar(0x202F, "U202F") ; schmales geschütztes Leerzeichen DeadKey := "" CompKey := "" spacepressed := 0 keypressed := 0 return /* Folgende Tasten sind nur aufgeführt, um DeadKey zu leeren. Irgendwie sieht das noch nicht schön aus. Vielleicht lässt sich dieses Problem auch eleganter lösen... */ *Enter:: if !lernModus or lernModus_std_Return { send {Blind}{Enter} DeadKey := "" CompKey := "" } return *Backspace:: if !lernModus or lernModus_std_Backspace { send {Blind}{Backspace} DeadKey := "" CompKey := "" } return *Del:: if !lernModus or lernModus_std_Entf send {Blind}{Del} return *Ins:: if !lernModus or lernModus_std_Einf send {Blind}{Ins} return /* Auf Mod3+Tab liegt Compose. */ neo_tab: if (IsMod3Pressed()) { DeadKey := "comp" CompKey := "" } else { send {blind}{Tab} DeadKey := "" CompKey := "" } return *Home:: if !lernModus or lernModus_std_Pos1 { send {Blind}{Home} DeadKey := "" CompKey := "" } return *End:: if !lernModus or lernModus_std_Ende { send {Blind}{End} DeadKey := "" CompKey := "" } return *PgUp:: if !lernModus or lernModus_std_PgUp { send {Blind}{PgUp} DeadKey := "" CompKey := "" } return *PgDn:: if !lernModus or lernModus_std_PgDn { send {Blind}{PgDn} DeadKey := "" CompKey := "" } return *Up:: if !lernModus or lernModus_std_Hoch { send {Blind}{Up} DeadKey := "" CompKey := "" } return *Down:: if !lernModus or lernModus_std_Runter { send {Blind}{Down} DeadKey := "" CompKey := "" } return *Left:: if !lernModus or lernModus_std_Links { send {Blind}{Left} DeadKey := "" CompKey := "" } return *Right:: if !lernModus or lernModus_std_Rechts { send {Blind}{Right} DeadKey := "" CompKey := "" } return