Package: emacs;
Reported by: occitan <at> esperanto.org
Date: Tue, 17 Nov 2009 20:10:05 UTC
Severity: normal
Done: Stefan Kangas <stefan <at> marxist.se>
Bug is archived. No further changes may be made.
Message #17 received at 4948 <at> emacsbugs.donarmstrong.com (full text, mbox):
From: Daniel Pfeiffer <occitan <at> t-online.de> To: Stefan Monnier <monnier <at> IRO.UMontreal.CA> Cc: occitan <at> esperanto.org, 4948 <at> debbugs.gnu.org Subject: Re: bug#4948: Dead key misery Date: Fri, 20 Nov 2009 00:01:50 +0100
[Message part 1 (text/plain, inline)]
Hi Stefan, la 11/17/2009 11:22 PM Stefan Monnier skribis: >> ** Dead-key and composite character processing is done in the standard >> X11R6 manner (through the default "input method" using the >> /usr/lib/X11/locale/*/Compose databases of key combinations). I.e. if >> it works in xterm, it should also work in Emacs now. >> This has long since stopped working. >> > > I don't use dead keys, but I use the compose key extensively, and it > works just fine in my Emacs. Can you give more detail to try and > reproduce your problem? > what details, I don't really know. It might be Ubuntu specific, because it appeared long ago when I switched from SuSE to Ubuntu. At the time I figured it must have to do with a newer Emacs, because xterm and all Gtk and Qt apps had and have no problem. Sorry I didn't report it then, I guess this is two years back. I think compose is not pertinent, because IMHO that does the combining in the X-server and sends the combined char, as though you had a key for it, like German äöüß is no problem even without loading iso-transl. I'm attaching my very personal keymap (which covers my normal German external keyboard, the built in American one, with Z and Y switched German style and Esperanto letters). I've stuffed in all dead-keys, like AltGr-, for cedilla, AltGr-Shift-, for ogonek and AltGr-^ for circumflex. I load it with xkbcomp -xkb .X/keymap/daniel $DISPLAY, but you could just as well just set one dead key with xmodmap IIRC. coralament / best Grötens / liebe Grüße / best regards / elkorajn salutojn Daniel Pfeiffer -- lerne / learn / apprends / lär dig / ucz się Esperanto: http://lernu.net / http://ikurso.net
[Message part 2 (text/html, inline)]
[daniel.xkb (text/plain, inline)]
// -*- mode: c; compile-command: "exec xkbcomp -w3 daniel.xkb keymap/daniel" -*- // setxkbmap 'us(euro)+level3(ralt_switch)'; setxkbmap 'us(euro)+level3(ralt_switch)' -print | xkbcomp -xkb - notebook-orig.xkb // xkbcomp -xkb keymap/daniel -; xkbcomp -xkb keymap/daniel $DISPLAY; xkbcomp -xkb :0 - // s ln -s ~/.X/keymap/daniel /usr/share/X11/xkb/keymap/ // /usr/share/X11/XKeysymDB // /usr/include/X11/keysymdef.h // /usr/include/X11/XF86keysym.h // /usr/share/X11/locale/compose.dir // /usr/share/X11/locale/en_US.UTF-8/Compose // In /etc/X11/xorg.conf ersetze // Option "XkbKeymap" "daniel" xkb_keymap { xkb_keycodes { //include "xfree86+aliases(qwertz)" include "evdev+aliases(qwertz)" virtual indicator 4 = "Group 1"; }; xkb_types { include "complete" type "HYPER+ALT" { modifiers= mod4+Alt; map[mod4+Alt]= Level2; level_name[Level1]= "Base"; level_name[Level2]= "Hyper+Alt"; }; }; xkb_compatibility { include "complete" indicator "Group 1" { !allowExplicit; groups= 0xfd; }; }; xkb_symbols "pc+us(euro)+level3(ralt_switch)" { name[group1] = "de"; name[group2] = "us(euro)"; key <XFER> { [ XF86AudioMedia ] }; key <I20> { [ XF86AudioMute ] }; key <I2E> { [ XF86AudioLowerVolume ] }; key <I30> { [ XF86AudioRaiseVolume ] }; key <I10> { [ XF86AudioPrev ] }; key <I19> { [ XF86AudioNext ] }; key <I22> { [ XF86AudioPlay, XF86AudioPause ] }; key <I24> { [ XF86AudioStop, XF86Eject ] }; key <I69> { [ XF86Forward ] }; key <I6A> { [ XF86Back ] }; key <II65> { [ XF86KbdBrightnessDown ] }; key <I54> { [ XF86KbdBrightnessUp ] }; key <I5F> { [ XF86Standby ] }; key <I6C> { [ XF86Mail ] }; key <I32> { [ XF86HomePage ] }; key <I65> { [ XF86Search ] }; key <I66> { [ XF86Favorites ] }; key <ESC> { [ Escape ] }; key <BKSP> { [ BackSpace ] }; key <TAB> { [ Tab, ISO_Left_Tab ] }; key <RTRN> { [ Return ] }; key <LCTL> { [ Control_L ] }; key <LFSH> { [ Shift_L ] }; key <RTSH> { [ Shift_R ] }; key <LALT> { [ Alt_L, Meta_L ] }; key <SPCE> { [ space, space, nobreakspace ], [ space, space, nobreakspace ], [] }; key <CAPS> { [ Caps_Lock ] }; key <NMLK> { [ Num_Lock, Pointer_EnableKeys ] }; key <SCLK> { [ Scroll_Lock ] }; key <KP7> { [ KP_Home, KP_7 ] }; key <KP8> { [ KP_Up, KP_8 ] }; key <KP9> { [ KP_Prior, KP_9 ] }; key <KP4> { [ KP_Left, KP_4 ] }; key <KP5> { [ KP_Begin, KP_5 ] }; key <KP6> { [ KP_Right, KP_6 ] }; key <KP1> { [ KP_End, KP_1 ] }; key <KP2> { [ KP_Down, KP_2 ] }; key <KP3> { [ KP_Next, KP_3 ] }; key <KP0> { [ KP_Insert, KP_0 ] }; key <KPDL> { [ KP_Delete, KP_Decimal ] }; key <MDSW> { [ Mode_switch ] }; key <HOME> { [ Home ] }; key <UP> { [ Up ] }; key <PGUP> { [ Prior ] }; key <LEFT> { [ Left ] }; key <RGHT> { [ Right ] }; key <END> { [ End ] }; key <DOWN> { [ Down ] }; key <PGDN> { [ Next ] }; key <INS> { [ Insert ] }; key <DELE> { [ Delete ] }; key <KPEN> { [ KP_Enter ] }; key <RCTL> { [ Control_R ] }; key <PAUS> { type= "PC_CONTROL_LEVEL2", [ Pause, Break ] }; key <PRSC> { type= "PC_ALT_LEVEL2", [ Print, Sys_Req ] }; key <RALT> { [ ISO_Level3_Shift ] }; key <LWIN> { [ Hyper_L ] }; key <RWIN> { [ Hyper_R ] }; key <MENU> { [ ISO_First_Group, ISO_Last_Group ] }; key <LVL3> { [ ISO_Level3_Shift ] }; key <ALT> { [ NoSymbol, Alt_L ] }; key <KPEQ> { [ KP_Equal ] }; key <SUPR> { [ NoSymbol, Super_L ] }; key <HYPR> { [ NoSymbol, Hyper_L ] }; key <META> { [ NoSymbol, Meta_L ] }; key <OUTP> { [ XF86Display ] }; key <KITG> { [ NoSymbol ] }; key <KIDN> { [ NoSymbol ] }; key <KIUP> { [ NoSymbol ] }; //key.type[group1] = "FOUR_LEVEL"; key <TLDE> { [ asciicircum, degree, dead_circumflex, dead_abovering ], [ grave, asciitilde, dead_grave, dead_tilde ] }; key <AE01> { [ 1, exclam, onesuperior, exclamdown ], [ 1, exclam, onesuperior, exclamdown ], [] }; key <AE02> { [ 2, quotedbl, twosuperior, onehalf ], [ 2, at, twosuperior, onehalf ] }; key <AE03> { [ 3, section, threesuperior, sterling ], [ 3, numbersign, threesuperior, sterling ] }; key <AE04> { [ 4, dollar, onequarter, currency ], [ 4, dollar, onequarter, currency ], [] }; key <AE05> { [ 5, percent, EuroSign, fiveeighths ], [ 5, percent, EuroSign, fiveeighths ], [] }; key <AE06> { [ 6, ampersand, notsign ], [ 6, asciicircum, notsign, dead_circumflex ] }; key <AE07> { [ 7, slash, braceleft, seveneighths ], [ 7, ampersand, NoSymbol, seveneighths ] }; key <AE08> { [ 8, parenleft, bracketleft ], [ 8, asterisk, oneeighth, multiply ] }; key <AE09> { [ 9, parenright, bracketright, plusminus ], [ 9, parenleft ] }; key <AE10> { [ 0, equal, braceright ], [ 0, parenright, degree, dead_abovering ] }; key <AE11> { [ ssharp, question, backslash, questiondown ], [ minus, underscore, emdash, dead_macron ] }; key <AE12> { [ dead_acute, dead_grave, dead_breve, dead_caron ], [ equal, plus ] }; key <LSGT> { [ less, greater, bar, brokenbar ] }; //key.type[group1] = "FOUR_LEVEL_ALPHABETIC"; key <LatA> { [ a, A, ae, AE ], [ a, A, ae, AE ], [] }; key <LatB> { [ b, B, rightdoublequotemark, apostrophe ], [ b, B, rightdoublequotemark, apostrophe ], [] }; key <LatC> { [ c, C, ccircumflex, Ccircumflex ], [ c, C, ccircumflex, Ccircumflex ], [] }; key <LatD> { [ d, D, eth, ETH ], [ d, D, eth, ETH ], [] }; key <LatE> { [ e, E, EuroSign ], [ e, E, EuroSign ], [] }; key <LatF> { [ f, F, dstroke, ordfeminine ], [ f, F, dstroke, ordfeminine ], [] }; key <LatG> { [ g, G, gcircumflex, Gcircumflex ], [ g, G, gcircumflex, Gcircumflex ], [] }; key <LatH> { [ h, H, hcircumflex, Hcircumflex ], [ h, H, hcircumflex, Hcircumflex ], [] }; key <LatI> { [ i, I, idotless, Iabovedot ], [ i, I, idotless, Iabovedot ], [] }; key <LatJ> { [ j, J, jcircumflex, Jcircumflex ], [ j, J, jcircumflex, Jcircumflex ], [] }; key <LatK> { [ k, K, kra, ampersand ], [ k, K, kra, ampersand ], [] }; key <LatL> { [ l, L, lstroke, Lstroke ], [ l, L, lstroke, Lstroke ], [] }; key <LatM> { [ m, M, mu, masculine ], [ m, M, mu, masculine ], [] }; key <LatN> { [ n, N, eng, ENG ], [ n, N, eng, ENG ], [] }; key <LatO> { [ o, O, oe, OE ], [ o, O, oe, OE ], [] }; key <LatP> { [ p, P, thorn, THORN ], [ p, P, thorn, THORN ], [] }; key <LatQ> { [ q, Q, at, Greek_OMEGA ], [ q, Q, at, Greek_OMEGA ], [] }; key <LatR> { [ r, R, trademark, registered ], [ r, R, trademark, registered ], [] }; key <LatS> { [ s, S, scircumflex, Scircumflex ], [ s, S, scircumflex, Scircumflex ], [] }; key <LatT> { [ t, T, tslash, Tslash ], [ t, T, tslash, Tslash ], [] }; key <LatU> { [ u, U, ubreve, Ubreve ], [ u, U, ubreve, Ubreve ], [] }; key <LatV> { [ v, V, leftdoublequotemark, grave ], [ v, V, leftdoublequotemark, grave ], [] }; key <LatW> { [ w, W, U2C73, U2C72 ], [ w, W, U2C73, U2C72 ], [] }; key <LatX> { [ x, X, guillemotright ], [ x, X, guillemotright ], [] }; key <LatY> { [ y, Y, guillemotleft, yen ], [ y, Y, guillemotleft, yen ], [] }; key <LatZ> { [ z, Z, U2C6C, U2C6B ], [ z, Z, U2C6C, U2C6B ], [] }; //key.type[group1] = "EIGHT_LEVEL"; key <AD11> { [ udiaeresis, Udiaeresis, udoubleacute, Udoubleacute ], [ bracketleft, braceleft ] }; key <AD12> { [ plus, asterisk, asciitilde, dead_tilde ], [ bracketright, braceright ] }; key <BKSL> { [ numbersign, apostrophe, NoSymbol, grave ], [ backslash, bar, ssharp, brokenbar ] }; key <AC10> { [ odiaeresis, Odiaeresis, odoubleacute, Odoubleacute ], [ semicolon, colon ] }; key <AC11> { [ adiaeresis, Adiaeresis, dead_diaeresis, dead_doubleacute ], [ apostrophe, quotedbl ] }; key <AB08> { [ comma, semicolon, dead_cedilla, dead_ogonek ], [ comma, less, dead_cedilla, dead_ogonek ] }; key <AB09> { [ period, colon, periodcentered, dead_abovedot ], [ period, greater, periodcentered, dead_abovedot ] }; key <AB10> { [ minus, underscore, emdash, dead_macron ], [ slash, question ] }; key.type[group1] = "HYPER+ALT"; key <FK01> { [ F1, XF86_Switch_VT_1 ] }; key <FK02> { [ F2, XF86_Switch_VT_2 ] }; key <FK03> { [ F3, XF86_Switch_VT_3 ] }; key <FK04> { [ F4, XF86_Switch_VT_4 ] }; key <FK05> { [ F5, XF86_Switch_VT_5 ] }; key <FK06> { [ F6, XF86_Switch_VT_6 ] }; key <FK07> { [ F7, XF86_Switch_VT_7 ] }; key <FK08> { [ F8, XF86_Switch_VT_8 ] }; key <FK09> { [ F9, XF86_Switch_VT_9 ] }; key <FK10> { [ F10, XF86_Switch_VT_10 ] }; key <FK11> { [ F11, XF86_Switch_VT_11 ] }; key <FK12> { [ F12, XF86_Switch_VT_12 ] }; key <KPMU> { [ KP_Multiply, XF86_ClearGrab ] }; key <KPDV> { [ KP_Divide, XF86_Ungrab ] }; key <KPSU> { [ KP_Subtract, XF86_Prev_VMode ] }; key <KPAD> { [ KP_Add, XF86_Next_VMode ] }; modifier_map Control { <LCTL>, <RCTL> }; modifier_map Shift { <LFSH>, <RTSH> }; modifier_map Lock { <CAPS> }; modifier_map Mod1 { <LALT>, <META> }; modifier_map Mod2 { <NMLK> }; modifier_map Mod3 { <MENU> }; modifier_map Mod4 { <LWIN>, <RWIN>, <SUPR>, <HYPR> }; modifier_map Mod5 { <MDSW>, <LVL3>, <RALT> }; }; xkb_geometry { include "pc(pc105)" }; };
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.