Neo ist eine ergonomische Tastaturbelegung, welche für die deutsche Sprache optimiert ist.
https://neo-layout.org
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
186 lines
3.6 KiB
186 lines
3.6 KiB
deadAsc(val1, val2, a) {
|
|
global
|
|
if !DeadSilence
|
|
OutputChar(val1, val2)
|
|
else CheckComp(val2)
|
|
DeadKey := a
|
|
}
|
|
|
|
deadUni(val1, val2, a) {
|
|
global
|
|
if !DeadSilence
|
|
SendUnicodeChar(val1, val2)
|
|
else CheckComp(val2)
|
|
DeadKey := a
|
|
}
|
|
|
|
undeadAsc(val) {
|
|
global
|
|
if DeadSilence
|
|
send % val
|
|
else
|
|
send % "{bs}" . val
|
|
}
|
|
|
|
undeadUni(val){
|
|
global
|
|
if !DeadSilence
|
|
send {bs}
|
|
SendUnicodeChar(val, "")
|
|
}
|
|
|
|
CheckDeadAsc(d,val) {
|
|
global
|
|
if (PriorDeadKey == d) {
|
|
undeadAsc(val)
|
|
return 1
|
|
}
|
|
}
|
|
|
|
CheckDeadUni(d,val) {
|
|
global
|
|
if (PriorDeadKey == d) {
|
|
undeadUni(val)
|
|
return 1
|
|
}
|
|
}
|
|
|
|
CheckDeadAsc12(d,val1,val2) {
|
|
global
|
|
if (PriorDeadKey == d){
|
|
if (Ebene = 1) and (val1 != "") {
|
|
undeadAsc(val1)
|
|
return 1
|
|
} else if (Ebene = 2) and (val2 != "") {
|
|
undeadAsc(val2)
|
|
return 1
|
|
}
|
|
}
|
|
}
|
|
|
|
CheckDeadUni12(d,val1,val2) {
|
|
global
|
|
if(PriorDeadKey == d) {
|
|
if (Ebene = 1) and (val1 != "") {
|
|
undeadUni(val1)
|
|
return 1
|
|
} else if (Ebene = 2) and (val2 != "") {
|
|
undeadUni(val2)
|
|
return 1
|
|
}
|
|
}
|
|
}
|
|
|
|
CheckCompUni(d,val) {
|
|
global
|
|
if (CompKey == d) {
|
|
PriorCompKey =
|
|
CompKey =
|
|
if !DeadCompose
|
|
send {bs}
|
|
isFurtherCompkey = 0
|
|
SendUnicodeChar(val, "")
|
|
return 1
|
|
}
|
|
}
|
|
|
|
OutputChar(val1,val2) {
|
|
global
|
|
if (!CheckComp(val2))
|
|
send % "{blind}" . val1
|
|
}
|
|
|
|
OutputChar12(val1,val2,val3,val4) {
|
|
global
|
|
if (Ebene = 1)
|
|
c := val1
|
|
else c := val2
|
|
if (Ebene = 1)
|
|
d := val3
|
|
else d := val4
|
|
if (!CheckComp(d))
|
|
if GetKeyState("Shift","P") and isMod2Locked
|
|
send % "{blind}{Shift Up}" . c . "{Shift Down}"
|
|
else send % "{blind}" . c
|
|
}
|
|
|
|
;Folgende Funktion prüft, ob das eben geschriebene Zeichen eine gültige Coko
|
|
;fortsetzen KÖNNTE – falls ja, wird 1 zurückgegeben (die Eingabe soll blind erfolgen),
|
|
;andernfalls wird 0 zurückgegeben (das Zeichen soll ausgegeben werden).
|
|
|
|
CheckComp(d) {
|
|
global
|
|
if (PriorDeadKey = "comp") {
|
|
CompKey := "<" . d . ">"
|
|
PriorDeadKey := DeadKey =
|
|
CheckCompose()
|
|
TryThirdCompKey = 0
|
|
return 1
|
|
} else if TryFourthCompKey {
|
|
TryFourthCompKey = 0
|
|
CompKey := ThreeCompKeys . " " . "<" . d . ">"
|
|
ThreeCompKeys =
|
|
CheckCompose()
|
|
if !(CompKey) {
|
|
send {left}{bs}{right}
|
|
return 1
|
|
} else CompKey =
|
|
} else if TryThirdCompKey {
|
|
TryThirdCompKey = 0
|
|
CompKey := PriorCompKey . " " . "<" . d . ">"
|
|
CheckCompose()
|
|
if CompKey {
|
|
TryFourthCompKey = 1
|
|
ThreeCompKeys := CompKey
|
|
CompKey =
|
|
} else return 1
|
|
} else if PriorCompKey {
|
|
CompKey := PriorCompKey . " " . "<" . d . ">"
|
|
CheckCompose()
|
|
if CompKey
|
|
TryThirdCompKey = 1
|
|
return 1
|
|
}
|
|
}
|
|
|
|
CumulateDeadKey(a) {
|
|
if DeadKey = a5
|
|
{ if a = g1
|
|
DeadKey = a5g1
|
|
else if a = a1
|
|
DeadKey = a5a1
|
|
else if a = a2
|
|
DeadKey = a5a2
|
|
else if a = g1a2
|
|
DeadKey = a5g1a2
|
|
else if a = a1a2
|
|
DeadKey = a5a1a2
|
|
else if a = c1a2
|
|
DeadKey = a5c1a2
|
|
} else if DeadKey = g5
|
|
{ if a = g1
|
|
DeadKey = g5g1
|
|
else if a = a1
|
|
DeadKey = g5a1
|
|
else if a = a2
|
|
DeadKey = g5a2
|
|
else if a = g1a2
|
|
DeadKey = g5g1a2
|
|
else if a = a1a2
|
|
DeadKey = g5a1a2
|
|
else if a = c1a2
|
|
DeadKey = g5c1a2
|
|
} else if DeadKey = g1
|
|
{ if a = a5
|
|
DeadKey = a5g1
|
|
else if a = g5
|
|
DeadKey = g5g1
|
|
else if a = a2
|
|
DeadKey = g1a2
|
|
else if a = a5a2
|
|
DeadKey = a5g1a2
|
|
else if a = g5a2
|
|
DeadKey = g5g1a2
|
|
}
|
|
}
|
|
|
|
|