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

accented characters Mode_switch method



Hello:

I am trying to use the Mode_switch method to make it convenient to type
accented characters in X (I'm making 'L_Alt' the Mode_switch key). It
works great on my workstation in all applications in which I've tried
it. On my laptop (Dell Inspiron 2650c), however, it will not work in the
terminal emulator (rxvt) -- but it works in all other applications in
which I've tried it (including OpenOffice.org and vim).

For example, on my workstation, if I hold-down 'L_Alt' (my Mode_switch
key) and press 'e', I get 'é'. If I do the same on my laptop in
OpenOffice.org, I get the same result. But if do the same in rxvt, I get
'i' instead of 'é'. The same goes for all of the other characters
(although the output character differs depending on the input character,
but it is never the correct output character).

Again, things work as I would expect in OpenOffice.org (and in several
other applications including vim), but not in rxvt. I have attached the
following files (taken from the laptop): my xmodmap file (the
configuration for accented characters), the original keymap (before
modification), my xsession file (to illustrate how everything is
loaded), a log of xev for the <Mode_switch> key (originally 'L_Alt') and
<Mode_switch> <e> (which, as stated, outputs 'i' in the terminal
emulator, but 'é' in other applications), and a list of the input and
"incorrect" output.

I would appreciate insight that anyone could provide as to the cause of
the problem.

-- 
Joe Paxton
!
!  Use Alt_L as Mode_switch key
!
clear mod1
keysym Alt_L = Mode_switch
add mod1 = Alt_R
clear mod3
add mod3 = Mode_switch

!
!  Enhance ASCII keyboard with international characters
!
keysym backslash = backslash bar aring Aring
keysym bracketleft = bracketleft braceleft ae AE
keysym bracketright = bracketright braceright oslash Ooblique
keysym comma = comma less cedilla guillemotleft
keysym equal = equal plus plusminus plusminus
keysym grave = grave asciitilde degree degree
keysym minus = minus underscore division notsign
keysym period = period greater periodcentered guillemotright
keysym slash = slash question exclamdown questiondown
keysym 0 = 0 parenright odiaeresis Odiaeresis
keysym 1 = 1 exclam onesuperior onequarter
keysym 2 = 2 at twosuperior onehalf 
keysym 3 = 3 numbersign threesuperior threequarters
keysym 4 = 4 dollar ediaeresis Ediaeresis
keysym 6 = 6 asciicircum copyright registered
keysym 7 = 7 ampersand ydiaeresis Ydiaeresis
keysym 8 = 8 asterisk udiaeresis Udiaeresis
keysym 9 = 9 parenleft idiaeresis Idiaeresis
keysym a = a A aacute Aacute
keysym b = b B otilde Otilde
keysym c = c C ccedilla Ccedilla
keysym d = d D egrave Egrave
keysym e = e E eacute Eacute
keysym f = f F eth Eth 
keysym g = g G thorn Thorn
keysym h = h H ucircumflex Ucircumflex
keysym i = i I iacute Iacute
keysym j = j J ugrave Ugrave
keysym k = k K igrave Igrave
keysym l = l L ograve Ograve
keysym m = m M mu mu 
keysym n = n N ntilde Ntilde
keysym o = o O oacute Oacute
keysym p = p P ocircumflex Ocircumflex
keysym q = q Q acircumflex Acircumflex
keysym r = r R ecircumflex Ecircumflex
keysym s = s S ssharp section 
keysym t = t T icircumflex Icircumflex
keysym u = u U uacute Uacute
keysym v = v V atilde Atilde
keysym w = w W adiaeresis Adiaeresis
keysym x = x X multiply multiply
keysym y = y Y yacute yacute
keysym z = z Z agrave Agrave
xmodmap:  up to 2 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25),  Control_R (0x6d)
mod1        Alt_L (0x40),  Alt_R (0x71)
mod2        Num_Lock (0x4d)
mod3      
mod4      
mod5        Scroll_Lock (0x4e)

keycode   8 =
keycode   9 = Escape
keycode  10 = 1 exclam
keycode  11 = 2 at
keycode  12 = 3 numbersign
keycode  13 = 4 dollar
keycode  14 = 5 percent
keycode  15 = 6 asciicircum
keycode  16 = 7 ampersand
keycode  17 = 8 asterisk
keycode  18 = 9 parenleft
keycode  19 = 0 parenright
keycode  20 = minus underscore
keycode  21 = equal plus
keycode  22 = BackSpace
keycode  23 = Tab ISO_Left_Tab
keycode  24 = q Q
keycode  25 = w W
keycode  26 = e E
keycode  27 = r R
keycode  28 = t T
keycode  29 = y Y
keycode  30 = u U
keycode  31 = i I
keycode  32 = o O
keycode  33 = p P
keycode  34 = bracketleft braceleft
keycode  35 = bracketright braceright
keycode  36 = Return
keycode  37 = Control_L
keycode  38 = a A
keycode  39 = s S
keycode  40 = d D
keycode  41 = f F
keycode  42 = g G
keycode  43 = h H
keycode  44 = j J
keycode  45 = k K
keycode  46 = l L
keycode  47 = semicolon colon
keycode  48 = apostrophe quotedbl
keycode  49 = grave asciitilde
keycode  50 = Shift_L
keycode  51 = backslash bar
keycode  52 = z Z
keycode  53 = x X
keycode  54 = c C
keycode  55 = v V
keycode  56 = b B
keycode  57 = n N
keycode  58 = m M
keycode  59 = comma less
keycode  60 = period greater
keycode  61 = slash question
keycode  62 = Shift_R
keycode  63 = KP_Multiply
keycode  64 = Alt_L Meta_L
keycode  65 = space
keycode  66 = Caps_Lock
keycode  67 = F1
keycode  68 = F2
keycode  69 = F3
keycode  70 = F4
keycode  71 = F5
keycode  72 = F6
keycode  73 = F7
keycode  74 = F8
keycode  75 = F9
keycode  76 = F10
keycode  77 = Num_Lock Pointer_EnableKeys
keycode  78 = Scroll_Lock
keycode  79 = KP_Home KP_7
keycode  80 = KP_Up KP_8
keycode  81 = KP_Prior KP_9
keycode  82 = KP_Subtract
keycode  83 = KP_Left KP_4
keycode  84 = KP_Begin KP_5
keycode  85 = KP_Right KP_6
keycode  86 = KP_Add
keycode  87 = KP_End KP_1
keycode  88 = KP_Down KP_2
keycode  89 = KP_Next KP_3
keycode  90 = KP_Insert KP_0
keycode  91 = KP_Delete KP_Decimal
keycode  92 = Print Sys_Req
keycode  93 =
keycode  94 =
keycode  95 = F11
keycode  96 = F12
keycode  97 = Home
keycode  98 = Up
keycode  99 = Prior
keycode 100 = Left
keycode 101 =
keycode 102 = Right
keycode 103 = End
keycode 104 = Down
keycode 105 = Next
keycode 106 = Insert
keycode 107 = Delete
keycode 108 = KP_Enter
keycode 109 = Control_R
keycode 110 = Pause Break
keycode 111 = Print Sys_Req
keycode 112 = KP_Divide
keycode 113 = Alt_R Meta_R
keycode 114 = Pause Break
keycode 115 =
keycode 116 =
keycode 117 =
keycode 118 =
keycode 119 =
keycode 120 =
keycode 121 =
keycode 122 =
keycode 123 =
keycode 124 =
keycode 125 =
keycode 126 =
keycode 127 =
keycode 128 =
keycode 129 =
keycode 130 =
keycode 131 =
keycode 132 =
keycode 133 =
keycode 134 =
keycode 135 =
keycode 136 =
keycode 137 =
keycode 138 =
keycode 139 =
keycode 140 =
keycode 141 =
keycode 142 =
keycode 143 =
keycode 144 =
keycode 145 =
keycode 146 =
keycode 147 =
keycode 148 =
keycode 149 =
keycode 150 =
keycode 151 =
keycode 152 =
keycode 153 =
keycode 154 =
keycode 155 =
keycode 156 =
keycode 157 =
keycode 158 =
keycode 159 =
keycode 160 =
keycode 161 =
keycode 162 =
keycode 163 =
keycode 164 =
keycode 165 =
keycode 166 =
keycode 167 =
keycode 168 =
keycode 169 =
keycode 170 =
keycode 171 =
keycode 172 =
keycode 173 =
keycode 174 =
keycode 175 =
keycode 176 =
keycode 177 =
keycode 178 =
keycode 179 =
keycode 180 =
keycode 181 =
keycode 182 =
keycode 183 =
keycode 184 =
keycode 185 =
keycode 186 =
keycode 187 =
keycode 188 =
keycode 189 =
keycode 190 =
keycode 191 =
keycode 192 =
keycode 193 =
keycode 194 =
keycode 195 =
keycode 196 =
keycode 197 =
keycode 198 =
keycode 199 =
keycode 200 =
keycode 201 =
keycode 202 =
keycode 203 =
keycode 204 =
keycode 205 =
keycode 206 =
keycode 207 =
keycode 208 =
keycode 209 =
keycode 210 =
keycode 211 =
keycode 212 =
keycode 213 =
keycode 214 =
keycode 215 =
keycode 216 =
keycode 217 =
keycode 218 =
keycode 219 =
keycode 220 =
keycode 221 =
keycode 222 =
keycode 223 =
keycode 224 =
keycode 225 =
keycode 226 =
keycode 227 =
keycode 228 =
keycode 229 =
keycode 230 =
keycode 231 =
keycode 232 =
keycode 233 =
keycode 234 =
keycode 235 =
keycode 236 =
keycode 237 =
keycode 238 =
keycode 239 =
keycode 240 =
keycode 241 =
keycode 242 =
keycode 243 =
keycode 244 =
keycode 245 =
keycode 246 =
keycode 247 =
keycode 248 =
keycode 249 =
keycode 250 =
keycode 251 =
keycode 252 =
keycode 253 =
keycode 254 =
keycode 255 =
KeyPress event, serial 24, synthetic NO, window 0xc00001,
    root 0x6d, subw 0x0, time 281948, (102,92), root:(205,219),
    state 0x0, keycode 64 (keysym 0xff7e, Mode_switch), same_screen YES,
    XLookupString gives 0 characters:  ""

KeyRelease event, serial 24, synthetic NO, window 0xc00001,
    root 0x6d, subw 0x0, time 282139, (102,92), root:(205,219),
    state 0x2000, keycode 64 (keysym 0xff7e, Mode_switch), same_screen YES,
    XLookupString gives 0 characters:  ""

KeyPress event, serial 24, synthetic NO, window 0xc00001,
    root 0x6d, subw 0x0, time 283733, (102,92), root:(205,219),
    state 0x0, keycode 64 (keysym 0xff7e, Mode_switch), same_screen YES,
    XLookupString gives 0 characters:  ""

KeyPress event, serial 24, synthetic NO, window 0xc00001,
    root 0x6d, subw 0x0, time 284031, (102,92), root:(205,219),
    state 0x2000, keycode 26 (keysym 0xe9, eacute), same_screen YES,
    XLookupString gives 1 characters:  "é"

KeyRelease event, serial 24, synthetic NO, window 0xc00001,
    root 0x6d, subw 0x0, time 284176, (102,92), root:(205,219),
    state 0x2000, keycode 26 (keysym 0xe9, eacute), same_screen YES,
    XLookupString gives 1 characters:  "é"

KeyRelease event, serial 24, synthetic NO, window 0xc00001,
    root 0x6d, subw 0x0, time 284187, (102,92), root:(205,219),
    state 0x2000, keycode 64 (keysym 0xff7e, Mode_switch), same_screen YES,
    XLookupString gives 0 characters:  ""
# Following two lines write the original keyboard configuration so that
# it can be used as input to xmodmap when keyboard is modified for
# accented characters

xmodmap -pm > ~/.xmodmap-orig
xmodmap -pke >> ~/.xmodmap-orig

# This command modifies the keyboard for accented characters

xmodmap ~/.xmodmap

# Start the window manager

fluxbox
<Mode_switch> <q>	->	b
<Mode_switch> <w>	->	d
<Mode_switch> <e>	->	i
<Mode_switch> <r>	->	j	
<Mode_switch> <t>	->	n	
<Mode_switch> <y>	->	}	

Reply to: