unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#4948: Dead key misery
@ 2009-11-17 20:01 Daniel Pfeiffer
  2009-11-17 22:22 ` Stefan Monnier
  2019-10-01  1:10 ` Stefan Kangas
  0 siblings, 2 replies; 5+ messages in thread
From: Daniel Pfeiffer @ 2009-11-17 20:01 UTC (permalink / raw)
  To: emacs-pretest-bug

[-- Attachment #1: Type: text/plain, Size: 1005 bytes --]

Long ago NEWS.19 got this delightful entry:

** 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 found a workaround of (require 
'iso-transl), which handles a few cases but not even a western European 
dead-cedilla is handled.  Even if I do (require 'ogonek), dead-ogonek is 
not handled.  All other programs still do this fine, why did Emacs 
forget about this?

Btw. this is Ubuntu 9.10 and the file name is 
/usr/*share*/X11/locale/*/Compose but I guess configure, which I ran 
from CVS should have detected that.

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


[-- Attachment #2: Type: text/html, Size: 1385 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#4948: Dead key misery
  2009-11-17 20:01 bug#4948: Dead key misery Daniel Pfeiffer
@ 2009-11-17 22:22 ` Stefan Monnier
  2009-11-19 23:01   ` Daniel Pfeiffer
  2019-10-01  1:10 ` Stefan Kangas
  1 sibling, 1 reply; 5+ messages in thread
From: Stefan Monnier @ 2009-11-17 22:22 UTC (permalink / raw)
  To: occitan; +Cc: 4948

> ** 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?


        Stefan





^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#4948: Dead key misery
  2009-11-17 22:22 ` Stefan Monnier
@ 2009-11-19 23:01   ` Daniel Pfeiffer
  0 siblings, 0 replies; 5+ messages in thread
From: Daniel Pfeiffer @ 2009-11-19 23:01 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: occitan, 4948


[-- Attachment #1.1: Type: text/plain, Size: 1767 bytes --]

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


[-- Attachment #1.2: Type: text/html, Size: 2357 bytes --]

[-- Attachment #2: daniel.xkb --]
[-- Type: text/plain, Size: 11494 bytes --]

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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#4948: Dead key misery
  2009-11-17 20:01 bug#4948: Dead key misery Daniel Pfeiffer
  2009-11-17 22:22 ` Stefan Monnier
@ 2019-10-01  1:10 ` Stefan Kangas
  2019-10-30 20:57   ` Stefan Kangas
  1 sibling, 1 reply; 5+ messages in thread
From: Stefan Kangas @ 2019-10-01  1:10 UTC (permalink / raw)
  To: Daniel Pfeiffer; +Cc: Da Niel, Stefan Monnier, 4948

Daniel Pfeiffer <occitan@t-online.de> writes:

> 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 dv|_ 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 Grvtens / liebe Gr|_e / best regards / elkorajn salutojn
> Daniel Pfeiffer

The last update here was ten years ago.  Are you still seeing this issue
on a modern version of Emacs?  Dead keys seem to be working for me in
Emacs 27.1.

Best regards,
Stefan Kangas





^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#4948: Dead key misery
  2019-10-01  1:10 ` Stefan Kangas
@ 2019-10-30 20:57   ` Stefan Kangas
  0 siblings, 0 replies; 5+ messages in thread
From: Stefan Kangas @ 2019-10-30 20:57 UTC (permalink / raw)
  To: Daniel Pfeiffer; +Cc: Da Niel, Stefan Monnier, 4948-done

Stefan Kangas <stefan@marxist.se> writes:

> The last update here was ten years ago.  Are you still seeing this issue
> on a modern version of Emacs?  Dead keys seem to be working for me in
> Emacs 27.1.

More information was requested, but none was given within 4 weeks, so
I'm closing this bug.  If this is still an issue, please reopen the bug
report.

Best regards,
Stefan Kangas





^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2019-10-30 20:57 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-11-17 20:01 bug#4948: Dead key misery Daniel Pfeiffer
2009-11-17 22:22 ` Stefan Monnier
2009-11-19 23:01   ` Daniel Pfeiffer
2019-10-01  1:10 ` Stefan Kangas
2019-10-30 20:57   ` Stefan Kangas

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).