"Undoing" this patch is enough to restore the coverage of combining chars which was present before math symbols started to get in the way: one should: A) remove math greenkeys from kbdd file, B) disable uni_manual (except for phonetization, where only ? --> ? gets in the way), C) turn off recognition of SQUARED/OPERATOR/SIGN/IN TRIANGLE. --- examples/EurKey++.kbdd 2012-02-19 23:14:32.372000000 -0800 +++ examples/EurKey++.kbdd-ook 2012-02-19 21:52:37.637200000 -0800 @@ -95,7 +95,7 @@ ExportDeadKeys= ´ ˋ ˜ ˆ ˇ ° @char2key_prefer_first=\,|,.,002c # # Will be only considered when putting a diacritic on AltGr-key (~∼, *∗, .⋅ ) -@AltGrCharSubstitutions=ijü +@AltGrCharSubstitutions=ijü,^∧,&∩,*×,#≠,6∨,7∪,|∣ # # Tibetan range: take only tibetan diacritics, so our code adding diacritics won't be confused by prefices... ??? Auto_Diacritic_Start=0f00 --- lib/UI/KeyboardLayout.pm 2012-02-19 23:32:19.630400000 -0800 +++ lib/UI/KeyboardLayout.pm-ook 2012-02-19 22:33:04.515200000 -0800 @@ -3964,8 +3964,7 @@ my %operators = (DOT => ['MIDDLE DOT', ' 'DOUBLE SOLIDUS' => ['PARALLEL TO'], MINUS => ['HYPHEN-MINUS']); # THIS IS NOT A MULTIMAP! -my %uni_manual = (phonetized => {qw( 0 ə s ʃ z ʒ j ɟ v ⱱ n ŋ V ɤ ! ǃ q ʔ ¿ ʕ )}, -); my %ignore = ( +my %uni_manual = (phonetized => {qw( 0 ə s ʃ z ʒ j ɟ v ⱱ n ŋ V ɤ ! ǃ ? ʔ ¿ ʕ )}, addline => {qw( 0 ∅ ( ∈ ) ∋ = ≡ ≡ ≣ † ‡ + ∦ / ∠ | ∟ . ∸ ∨ ⊻ ∧ ⊼ )}, # conflict with modifiers: qw( | ‖ _ ‗ ) addtilde => {qw( 0 ∝ / ∡ \ ∢ ∫ ∱ : ∻ - ≂ ≠ ≆ ~ ≈ ∼ ≈ ≃ ≊ ≈ ≋ = ≌ ( ⟅ ) ⟆ )}, # not on 2A** addleft => {qw( = ≔ × ⨴ × ⋉ \ ⋋ + ⨭ → ⧴)}, # × ⨴ is hidden @@ -4013,7 +4012,7 @@ sub parse_NameList ($$) { if ($name =~ /^(.*)\s+(?=OR\s)(.*?)\s*$/) { # Find the latest possible... push @{$candidates{$k}}, [$1, $2]; } - if (($t = $name) =~ s/\b(COMBINING(?=\s+CYRILLIC\s+LETTER)|BARRED|SLANTED|APPROXIMATELY|ASYMPTOTICALLY|ALMOST|^xxx-SQUARED|LUNATE|SIDEWAYS(?:\s+(?:DIAERESIZED|OPEN))?|INVERTED|ARCHAIC|SCRIPT|LONG|TURNED(?:\s+(?:INSULAR|SANS-SERIF))?|REVERSED|OPEN|CLOSED|DOTLESS|FINAL)\s+|\s+(BAR|SYMBOL|xxx-OPERATOR|xxx-SIGN|xxx-IN\s+TRIANGLE)$//) { + if (($t = $name) =~ s/\b(COMBINING(?=\s+CYRILLIC\s+LETTER)|BARRED|SLANTED|APPROXIMATELY|ASYMPTOTICALLY|ALMOST|^SQUARED|LUNATE|SIDEWAYS(?:\s+(?:DIAERESIZED|OPEN))?|INVERTED|ARCHAIC|SCRIPT|LONG|TURNED(?:\s+(?:INSULAR|SANS-SERIF))?|REVERSED|OPEN|CLOSED|DOTLESS|FINAL)\s+|\s+(BAR|SYMBOL|OPERATOR|SIGN|IN\s+TRIANGLE)$//) { push @{$candidates{$k}}, [$t, "calculated-$+"]; $candidates{$k}[-1][1] .= '-epigraphic' if $t =~ /\bEPIGRAPHIC\b/; # will be massaged away from $t later $candidates{$k}[-1][0] =~ s/\s+SYMBOL$// and $candidates{$k}[-1][1] .= '-symbol' @@ -4081,7 +4080,7 @@ sub parse_NameList ($$) { my $name = $NM{$self->charhex2key($base)}; next if not $name and ($k =~ /^[12]?F[89A]..$/ or hex $base >= 0x4E00 and hex $base <= 0x9FCC); # ideographs; there is also 3400 region... warn "Basic: `$k' --> `@$exp', base=`$base' --> `",$self->charhex2key($base),"'" unless $name; - if ((my $NN = $name) =~ s/\s+xxx-OPERATOR$//) { + if ((my $NN = $name) =~ s/\s+OPERATOR$//) { #warn "operator: `$k' --> <$NN>, `@$exp', base=`$base' --> `",$self->charhex2key($base),"'"; push @{$candidates{$k}}, [$_, @$exp[2..$#$exp]] for $NN, @{ $operators{$NN} || []}; }