bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#4948: Dead key misery


From: Daniel Pfeiffer
Subject: bug#4948: Dead key misery
Date: Fri, 20 Nov 2009 00:01:50 +0100
User-agent: Thunderbird 2.0.0.23 (X11/20090817)

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
// -*- 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)" };
};

reply via email to

[Prev in Thread] Current Thread [Next in Thread]