* 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