On Wed, Feb 06, 2002 at 09:27:26AM +0100, Lars Gullik Bjønnes wrote: > Andre Poenitz <[EMAIL PROTECTED]> writes: > > | On Tue, Feb 05, 2002 at 07:32:45PM +0100, Herbert Voss wrote: > >> Thanks, it works :-) > > > | So since it seems to work and nobody explained why the current > | latinkeys.bind uses accents explicitly shouldn't we simply use this new > | latinkeys.bind? > > More testing please: > - regular keys (ü directly) > - compose > - dead-keys > - differet font norms > - more people > > -- > Lgb Since you so kindly volunteered to test :-)
Here is a package to test. It works for me in text and in math, for LyX and for X handling dead keys, and provides consistent key bindings for math accents. Handles _at least_ all "legal" accents in text, and _at least_ all single key accented letters (öäå etc, the ones on your keyboard) in math. And simplifies the code. And sub/superscript just work (yes the superscript hack looks ugly :-( ) The only small minus I see is that we cannot use deadkey sequences to trigger math accents. Livable-with IMHO, especially as it would not have been realistically possible to get such sequences working anyway in "X handles deadkeys", and thus not uniformly regardless of preferences. Please give this a beating. Martin
Index: src/mathed/formulabase.C =================================================================== RCS file: /cvs/lyx/lyx-devel/src/mathed/formulabase.C,v retrieving revision 1.124 diff -u -b -B -p -r1.124 formulabase.C --- src/mathed/formulabase.C 2002/02/07 08:19:47 1.124 +++ src/mathed/formulabase.C 2002/02/07 13:42:23 @@ -517,19 +523,32 @@ InsetFormulaBase::localDispatch(BufferVi case LFUN_WORDLEFTSEL: break; - // --- accented characters ------------------------------ - - case LFUN_UMLAUT: handleAccent(bv, arg, "ddot"); break; - case LFUN_CIRCUMFLEX: handleAccent(bv, arg, "hat"); break; - case LFUN_GRAVE: handleAccent(bv, arg, "grave"); break; - case LFUN_ACUTE: handleAccent(bv, arg, "acute"); break; - case LFUN_TILDE: handleAccent(bv, arg, "tilde"); break; - case LFUN_MACRON: handleAccent(bv, arg, "bar"); break; - case LFUN_DOT: handleAccent(bv, arg, "dot"); break; - case LFUN_CARON: handleAccent(bv, arg, "check"); break; - case LFUN_BREVE: handleAccent(bv, arg, "breve"); break; - case LFUN_VECTOR: handleAccent(bv, arg, "vec"); break; - case LFUN_UNDERBAR: handleAccent(bv, arg, "underbar"); break; + // Special casing for superscript in case of LyX handling + // dead-keys: + case LFUN_CIRCUMFLEX: + if (arg.empty()) { + // do superscript if LyX handles + // deadkeys + bv->lockedInsetStoreUndo(Undo::EDIT); + mathcursor->script(true); + updateLocal(bv, true); + } + break; + case LFUN_UMLAUT: + case LFUN_ACUTE: + case LFUN_GRAVE: + case LFUN_BREVE: + case LFUN_DOT: + case LFUN_MACRON: + case LFUN_CARON: + case LFUN_TILDE: + case LFUN_CEDILLA: + case LFUN_CIRCLE: + case LFUN_UNDERDOT: + case LFUN_TIE: + case LFUN_OGONEK: + case LFUN_HUNG_UMLAUT: + break; // Math fonts case LFUN_GREEK_TOGGLE: handleFont(bv, arg, LM_TC_GREEK); break; @@ -798,18 +817,6 @@ bool InsetFormulaBase::searchBackward(Bu { lyxerr << "searching backward not implemented in mathed" << endl; return searchForward(bv, what, a, b); -} - - - -void InsetFormulaBase::handleAccent(BufferView * bv, - string const & arg, string const & name) -{ - bv->lockedInsetStoreUndo(Undo::EDIT); - MathAtom at = createMathInset(name); - mathed_parse_cell(at->cell(0), arg); - mathcursor->insert(at); - updateLocal(bv, true); } Index: lib/bind/latinkeys.bind =================================================================== RCS file: /cvs/lyx/lyx-devel/lib/bind/latinkeys.bind,v retrieving revision 1.5 diff -u -b -B -p -r1.5 latinkeys.bind --- lib/bind/latinkeys.bind 2001/05/29 09:50:00 1.5 +++ lib/bind/latinkeys.bind 2002/02/07 13:42:24 @@ -148,230 +148,231 @@ \bind "onehalf" "self-insert" \bind "threequarters" "self-insert" \bind "questiondown" "self-insert" -\bind "Agrave" "accent-grave A" -\bind "Aacute" "accent-acute A" -\bind "Acircumflex" "accent-circumflex A" -\bind "Atilde" "accent-tilde A" -\bind "Adiaeresis" "accent-umlaut A" -\bind "Aring" "accent-circle A" +\bind "Agrave" "self-insert" +\bind "Aacute" "self-insert" +\bind "Acircumflex" "self-insert" +\bind "Atilde" "self-insert" +\bind "Adiaeresis" "self-insert" +\bind "Aring" "self-insert" \bind "AE" "self-insert" -\bind "Ccedilla" "accent-cedilla C" -\bind "Egrave" "accent-grave E" -\bind "Eacute" "accent-acute E" -\bind "Ecircumflex" "accent-circumflex E" -\bind "Ediaeresis" "accent-umlaut E" -\bind "Igrave" "accent-grave I" -\bind "Iacute" "accent-acute I" -\bind "Icircumflex" "accent-circumflex I" -\bind "Idiaeresis" "accent-umlaut I" +\bind "Ccedilla" "self-insert" +\bind "Egrave" "self-insert" +\bind "Eacute" "self-insert" +\bind "Ecircumflex" "self-insert" +\bind "Ediaeresis" "self-insert" +\bind "Igrave" "self-insert" +\bind "Iacute" "self-insert" +\bind "Icircumflex" "self-insert" +\bind "Idiaeresis" "self-insert" \bind "ETH" "self-insert" \bind "Eth" "self-insert" -\bind "Ntilde" "accent-tilde N" -\bind "Ograve" "accent-grave O" -\bind "Oacute" "accent-acute O" -\bind "Ocircumflex" "accent-circumflex O" -\bind "Otilde" "accent-tilde O" -\bind "Odiaeresis" "accent-umlaut O" +\bind "Ntilde" "self-insert" +\bind "Ograve" "self-insert" +\bind "Oacute" "self-insert" +\bind "Ocircumflex" "self-insert" +\bind "Otilde" "self-insert" +\bind "Odiaeresis" "self-insert" \bind "multiply" "self-insert" \bind "Ooblique" "self-insert" \bind "Oslash" "self-insert" -\bind "Ugrave" "accent-grave U" -\bind "Uacute" "accent-acute U" -\bind "Ucircumflex" "accent-circumflex U" -\bind "Udiaeresis" "accent-umlaut U" -\bind "Yacute" "accent-acute Y" +\bind "Ugrave" "self-insert" +\bind "Uacute" "self-insert" +\bind "Ucircumflex" "self-insert" +\bind "Udiaeresis" "self-insert" +\bind "Yacute" "self-insert" \bind "THORN" "self-insert" \bind "Thorn" "self-insert" \bind "ssharp" "self-insert" -\bind "agrave" "accent-grave a" -\bind "aacute" "accent-acute a" -\bind "acircumflex" "accent-circumflex a" -\bind "atilde" "accent-tilde a" -\bind "adiaeresis" "accent-umlaut a" -\bind "aring" "accent-circle a" +\bind "agrave" "self-insert" +\bind "aacute" "self-insert" +\bind "acircumflex" "self-insert" +\bind "atilde" "self-insert" +\bind "adiaeresis" "self-insert" +\bind "aring" "self-insert" \bind "ae" "self-insert" -\bind "ccedilla" "accent-cedilla c" -\bind "egrave" "accent-grave e" -\bind "eacute" "accent-acute e" -\bind "ecircumflex" "accent-circumflex e" -\bind "ediaeresis" "accent-umlaut e" -\bind "igrave" "accent-grave i" -\bind "iacute" "accent-acute i" -\bind "icircumflex" "accent-circumflex i" -\bind "idiaeresis" "accent-umlaut i" +\bind "ccedilla" "self-insert" +\bind "egrave" "self-insert" +\bind "eacute" "self-insert" +\bind "ecircumflex" "self-insert" +\bind "ediaeresis" "self-insert" +\bind "igrave" "self-insert" +\bind "iacute" "self-insert" +\bind "icircumflex" "self-insert" +\bind "idiaeresis" "self-insert" \bind "eth" "self-insert" -\bind "ntilde" "accent-tilde n" -\bind "ograve" "accent-grave o" -\bind "oacute" "accent-acute o" -\bind "ocircumflex" "accent-circumflex o" -\bind "otilde" "accent-tilde o" -\bind "odiaeresis" "accent-umlaut o" +\bind "ntilde" "self-insert" +\bind "ograve" "self-insert" +\bind "oacute" "self-insert" +\bind "ocircumflex" "self-insert" +\bind "otilde" "self-insert" +\bind "odiaeresis" "self-insert" \bind "division" "self-insert" \bind "oslash" "self-insert" \bind "ooblique" "self-insert" -\bind "ugrave" "accent-grave u" -\bind "uacute" "accent-acute u" -\bind "ucircumflex" "accent-circumflex u" -\bind "udiaeresis" "accent-umlaut u" -\bind "yacute" "accent-acute y" +\bind "ugrave" "self-insert" +\bind "uacute" "self-insert" +\bind "ucircumflex" "self-insert" +\bind "udiaeresis" "self-insert" +\bind "yacute" "self-insert" \bind "thorn" "self-insert" -\bind "ydiaeresis" "accent-umlaut y" +\bind "ydiaeresis" "self-insert" # Latin 2 -\bind "Aogonek" "accent-ogonek A" -\bind "breve" "accent-breve b" +\bind "Aogonek" "self-insert" +\bind "bbreve" "self-insert" \bind "Lstroke" "self-insert" -\bind "Lcaron" "accent-caron L" -\bind "Sacute" "accent-acute S" -\bind "Scaron" "accent-caron S" -\bind "Scedilla" "accent-cedilla S" -\bind "Tcaron" "accent-caron T" -\bind "Zacute" "accent-acute Z" -\bind "Zcaron" "accent-caron Z" -\bind "Zabovedot" "accent-dot Z" -\bind "aogonek" "accent-ogonek a" -\bind "ogonek" "accent-ogonek o" +\bind "Lcaron" "self-insert" +\bind "Sacute" "self-insert" +\bind "Scaron" "self-insert" +\bind "Scedilla" "self-insert" +\bind "Tcaron" "self-insert" +\bind "Zacute" "self-insert" +\bind "Zcaron" "self-insert" +\bind "Zabovedot" "self-insert" +\bind "aogonek" "self-insert" +\bind "ogonek" "self-insert" \bind "lstroke" "self-insert" -\bind "lcaron" "accent-caron l" -\bind "sacute" "accent-acute s" +\bind "lcaron" "self-insert" +\bind "sacute" "self-insert" \bind "caron" "self-insert" -\bind "scaron" "accent-caron s" -\bind "scedilla" "accent-cedilla s" -\bind "tcaron" "accent-caron t" -\bind "zacute" "accent-acute z" +\bind "scaron" "self-insert" +\bind "scedilla" "self-insert" +\bind "tcaron" "self-insert" +\bind "zacute" "self-insert" \bind "doubleacute" "self-insert" -\bind "zcaron" "accent-caron z" -\bind "zabovedot" "accent-dot z" -\bind "Racute" "accent-acute R" -\bind "Abreve" "accent-breve A" -\bind "Lacute" "accent-acute L" -\bind "Cacute" "accent-acute C" -\bind "Ccaron" "accent-caron C" -\bind "Eogonek" "accent-ogonek E" -\bind "Ecaron" "accent-caron E" -\bind "Dcaron" "accent-caron D" +\bind "zcaron" "self-insert" +\bind "zabovedot" "self-insert" +\bind "Racute" "self-insert" +\bind "Abreve" "self-insert" +\bind "Lacute" "self-insert" +\bind "Cacute" "self-insert" +\bind "Ccaron" "self-insert" +\bind "Eogonek" "self-insert" +\bind "Ecaron" "self-insert" +\bind "Dcaron" "self-insert" \bind "Dstroke" "self-insert" -\bind "Nacute" "accent-acute N" -\bind "Ncaron" "accent-caron N" -\bind "Odoubleacute" "accent-hungarian-umlaut O" -\bind "Rcaron" "accent-caron R" -\bind "Uring" "accent-circle U" -\bind "Udoubleacute" "accent-hungarian-umlaut U" -\bind "Tcedilla" "accent-cedilla T" -\bind "racute" "accent-acute r" -\bind "abreve" "accent-breve a" -\bind "lacute" "accent-acute l" -\bind "cacute" "accent-acute c" -\bind "ccaron" "accent-caron c" -\bind "eogonek" "accent-ogonek e" -\bind "ecaron" "accent-caron e" -\bind "dcaron" "accent-caron d" +\bind "Nacute" "self-insert" +\bind "Ncaron" "self-insert" +\bind "Odoubleacute" "self-insert" +\bind "Rcaron" "self-insert" +\bind "Uring" "self-insert" +\bind "Udoubleacute" "self-insert" +\bind "Tcedilla" "self-insert" +\bind "racute" "self-insert" +\bind "abreve" "self-insert" +\bind "lacute" "self-insert" +\bind "cacute" "self-insert" +\bind "ccaron" "self-insert" +\bind "eogonek" "self-insert" +\bind "ecaron" "self-insert" +\bind "dcaron" "self-insert" \bind "dstroke" "self-insert" -\bind "nacute" "accent-acute n" -\bind "ncaron" "accent-caron n" -\bind "odoubleacute" "accent-hungarian-umlaut o" -\bind "udoubleacute" "accent-hungarian-umlaut u" -\bind "rcaron" "accent-caron r" -\bind "uring" "accent-circle u" -\bind "tcedilla" "accent-cedilla t" -\bind "abovedot" "accent-dot a" +\bind "nacute" "self-insert" +\bind "ncaron" "self-insert" +\bind "odoubleacute" "self-insert" +\bind "udoubleacute" "self-insert" +\bind "rcaron" "self-insert" +\bind "uring" "self-insert" +\bind "tcedilla" "self-insert" +\bind "aabovedot" "self-insert" # Latin 3 \bind "Hstroke" "self-insert" -\bind "Hcircumflex" "accent-circumflex H" -\bind "Iabovedot" "accent-dot I" -\bind "Gbreve" "accent-breve G" -\bind "Jcircumflex" "accent-circumflex J" +\bind "Hcircumflex" "self-insert" +\bind "Iabovedot" "self-insert" +\bind "Gbreve" "self-insert" +\bind "Jcircumflex" "self-insert" \bind "hstroke" "self-insert" -\bind "hcircumflex" "accent-circumflex h" +\bind "hcircumflex" "self-insert" \bind "idotless" "self-insert" -\bind "gbreve" "accent-breve g" -\bind "jcircumflex" "accent-circumflex j" -\bind "Cabovedot" "accent-dot C" -\bind "Ccircumflex" "accent-circumflex C" -\bind "Gabovedot" "accent-dot G" -\bind "Gcircumflex" "accent-circumflex G" -\bind "Ubreve" "accent-breve U" -\bind "Scircumflex" "accent-circumflex S" -\bind "cabovedot" "accent-dot c" -\bind "ccircumflex" "accent-circumflex c" -\bind "gabovedot" "accent-dot g" -\bind "gcircumflex" "accent-circumflex g" -\bind "ubreve" "accent-breve u" -\bind "scircumflex" "accent-circumflex s" +\bind "gbreve" "self-insert" +\bind "jcircumflex" "self-insert" +\bind "Cabovedot" "self-insert" +\bind "Ccircumflex" "self-insert" +\bind "Gabovedot" "self-insert" +\bind "Gcircumflex" "self-insert" +\bind "Ubreve" "self-insert" +\bind "Scircumflex" "self-insert" +\bind "cabovedot" "self-insert" +\bind "ccircumflex" "self-insert" +\bind "gabovedot" "self-insert" +\bind "gcircumflex" "self-insert" +\bind "ubreve" "self-insert" +\bind "scircumflex" "self-insert" # Latin 4 \bind "kra" "self-insert" \bind "kappa" "self-insert" -\bind "Rcedilla" "accent-cedilla R" -\bind "Itilde" "accent-tilde I" -\bind "Lcedilla" "accent-cedilla L" -\bind "Emacron" "accent-macron E" -\bind "Gcedilla" "accent-cedilla G" +\bind "Rcedilla" "self-insert" +\bind "Itilde" "self-insert" +\bind "Lcedilla" "self-insert" +\bind "Emacron" "self-insert" +\bind "Gcedilla" "self-insert" \bind "Tslash" "self-insert" -\bind "rcedilla" "accent-cedilla r" -\bind "itilde" "accent-tilde i" -\bind "lcedilla" "accent-cedilla l" -\bind "emacron" "accent-macron e" -\bind "gcedilla" "accent-cedilla g" +\bind "rcedilla" "self-insert" +\bind "itilde" "self-insert" +\bind "lcedilla" "self-insert" +\bind "emacron" "self-insert" +\bind "gcedilla" "self-insert" \bind "tslash" "self-insert" \bind "ENG" "self-insert" \bind "eng" "self-insert" -\bind "Amacron" "accent-macron A" -\bind "Iogonek" "accent-ogonek I" -\bind "Eabovedot" "accent-dot E" -\bind "Imacron" "accent-macron I" -\bind "Ncedilla" "accent-cedilla N" -\bind "Omacron" "accent-macron O" -\bind "Kcedilla" "accent-cedilla K" -\bind "Uogonek" "accent-ogonek U" -\bind "Utilde" "accent-tilde U" -\bind "Umacron" "accent-macron U" -\bind "amacron" "accent-macron a" -\bind "iogonek" "accent-ogonek i" -\bind "eabovedot" "accent-dot e" -\bind "imacron" "accent-macron i" -\bind "ncedilla" "accent-cedilla n" -\bind "omacron" "accent-macron o" -\bind "kcedilla" "accent-cedilla k" -\bind "uogonek" "accent-ogonek u" -\bind "utilde" "accent-tilde u" -\bind "umacron" "accent-macron u" +\bind "Amacron" "self-insert" +\bind "Iogonek" "self-insert" +\bind "Eabovedot" "self-insert" +\bind "Imacron" "self-insert" +\bind "Ncedilla" "self-insert" +\bind "Omacron" "self-insert" +\bind "Kcedilla" "self-insert" +\bind "Uogonek" "self-insert" +\bind "Utilde" "self-insert" +\bind "Umacron" "self-insert" +\bind "amacron" "self-insert" +\bind "iogonek" "self-insert" +\bind "eabovedot" "self-insert" +\bind "imacron" "self-insert" +\bind "ncedilla" "self-insert" +\bind "omacron" "self-insert" +\bind "kcedilla" "self-insert" +\bind "uogonek" "self-insert" +\bind "utilde" "self-insert" +\bind "umacron" "self-insert" # Latin 8 -\bind "Babovedot" "accent-dot B" -\bind "babovedot" "accent-dot b" -\bind "Dabovedot" "accent-dot D" -\bind "Wgrave" "accent-grave W" -\bind "Wacute" "accent-acute W" -\bind "dabovedot" "accent-dot d" -\bind "Ygrave" "accent-grave Y" -\bind "Fabovedot" "accent-dot F" -\bind "fabovedot" "accent-dot f" -\bind "Mabovedot" "accent-dot M" -\bind "mabovedot" "accent-dot m" -\bind "Pabovedot" "accent-dot P" -\bind "wgrave" "accent-grave w" -\bind "pabovedot" "accent-dot p" -\bind "wacute" "accent-acute w" -\bind "Sabovedot" "accent-dot S" -\bind "ygrave" "accent-grave y" -\bind "Wdiaeresis" "accent-umlaut W" -\bind "wdiaeresis" "accent-umlaut w" -\bind "sabovedot" "accent-dot s" -\bind "Wcircumflex" "accent-circumflex W" -\bind "Tabovedot" "accent-dot T" -\bind "Ycircumflex" "accent-circumflex Y" -\bind "wcircumflex" "accent-circumflex w" -\bind "tabovedot" "accent-dot t" -\bind "ycircumflex" "accent-circumflex y" +\bind "Babovedot" "self-insert" +\bind "babovedot" "self-insert" +\bind "Dabovedot" "self-insert" +\bind "Wgrave" "self-insert" +\bind "Wacute" "self-insert" +\bind "dabovedot" "self-insert" +\bind "Ygrave" "self-insert" +\bind "Fabovedot" "self-insert" +\bind "fabovedot" "self-insert" +\bind "Mabovedot" "self-insert" +\bind "mabovedot" "self-insert" +\bind "Pabovedot" "self-insert" +\bind "wgrave" "self-insert" +\bind "pabovedot" "self-insert" +\bind "wacute" "self-insert" +\bind "Sabovedot" "self-insert" +\bind "ygrave" "self-insert" +\bind "Wdiaeresis" "self-insert" +\bind "wdiaeresis" "self-insert" +\bind "sabovedot" "self-insert" +\bind "Wcircumflex" "self-insert" +\bind "Tabovedot" "self-insert" +\bind "Ycircumflex" "self-insert" +\bind "wcircumflex" "self-insert" +\bind "tabovedot" "self-insert" +\bind "ycircumflex" "self-insert" # Latin 9 (aka latin 9) \bind "OE" "self-insert" \bind "oe" "self-insert" -\bind "Ydiaeresis" "accent-umlaut Y" +\bind "Ydiaeresis" "self-insert" + Index: lib/bind/math.bind =================================================================== RCS file: /cvs/lyx/lyx-devel/lib/bind/math.bind,v retrieving revision 1.8 diff -u -b -B -p -r1.8 math.bind --- lib/bind/math.bind 2002/02/04 11:04:16 1.8 +++ lib/bind/math.bind 2002/02/07 13:42:24 @@ -43,7 +44,6 @@ \bind "M-m n" "math-number" \bind "M-m S-N" "math-nonumber" \bind "M-m 8" "math-insert \infty" -\bind "M-m v" "accent-vector" \bind "M-m o 1" "math-macro-arg 1" \bind "M-m o 2" "math-macro-arg 2" @@ -74,17 +74,26 @@ \bind "M-m a h c" "math-halign center" \bind "M-m a h r" "math-halign right" +# Decoration accents + # The accent-circumflex is 'h' for 'hat', which is what most math # folks call it verbally. +\bind "M-m ~S-quotedbl" "math-insert \ddot" +\bind "M-m h" "math-insert \hat" +\bind "M-m ~S-backslash" "math-insert \grave" +\bind "M-m ~S-slash" "math-insert \acute" +\bind "M-m ~S-ampersand" "math-insert \tilde" +\bind "M-m ~S-minus" "math-insert \bar" +\bind "M-m ~S-period" "math-insert \dot" +\bind "M-m S-V" "math-insert \check" +\bind "M-m S-U" "math-insert \breve" +\bind "M-m v" "math-insert \vec" +\bind "M-m ~S-underscore" "math-insert \underbar" + \bind "M-m b" "math-insert \overline" -\bind "M-m h" "accent-circumflex" -\bind "M-m ~S-period" "accent-dot" -\bind "M-m ~S-asciitilde" "accent-tilde" \bind "M-m ~S-apostrophe" "math-insert \prime" -\bind "M-m ~S-quotedbl" "accent-umlaut" - # These do pairs of: () {} [] <> || \bind "M-m ~S-parenleft" "math-delim ( )" @@ -153,15 +162,4 @@ \bind "M-m g S-X" "math-insert \Xi" \bind "M-m g S-Y" "math-insert \Varphi" - -\bind "M-m S-Aring" "math-insert Å" -\bind "M-m aring" "math-insert å" -\bind "M-m S-Oslash" "math-insert Ø" -\bind "M-m oslash" "math-insert ø" -\bind "M-m S-Adiaeresis" "math-insert Ä" -\bind "M-m adiaeresis" "math-insert ä" -\bind "M-m S-Odiaeresis" "math-insert Ö" -\bind "M-m odiaeresis" "math-insert ö" -\bind "M-m S-Udiaeresis" "math-insert Ü" -\bind "M-m udiaeresis" "math-insert ü"
msg32674/pgp00000.pgp
Description: PGP signature