[comp.windows.x] bugs with keybindings

brossard@sic.epfl.ch (Alain Brossard EPFL-SIC/SII) (03/21/91)

Bg:  X.V11R4, patch level 18, patched to handle Compose characters and
"dead" keys.  Compiled on a sun4, type 3 keyboard, os 4.1.


			Bug #1:

        I'm trying to define keys to have more than 2 symbols each
with xmodmap, for ex:

keysym semicolon = eacute colon semicolon Eacute

   In order to have a ;, I have to have a "Mode_switch" key, no problem
I defined Meta_L to be it:

clear mod1
keysym Meta_L = Mode_switch
clear mod3
add mod3 = Mode_switch

   I used mod3 rather than mod1, because for some programs like xterm
the mod1 (Meta) is special: it turns on the 8th bit, which is not what
I want.  In order for the Mode_switch key to work, it has to be a
modifier.  Fine so far: it works.

   Now I want to have the Meta_R key to have the same effect so:
keysym Meta_R = Mode_switch

   Both keys should be generating the same things, but they don't!
the left key is considered to be a modifier, but not Meta_R.  No amount
of clear mod3 and add mod3 = Mode_switch seem to work.

   In my humble opinion, this should work: both keys generate the
same keysym which is modifier, but in one case it is and in another case
it isn't.  Any solutions?

   A few hours later, a new twist:
keysym Mode_switch = Meta_R
clear mod3
add mod3 = Meta_R Mode_switch

   and now they both work as a mode_switch key.


			BUG  #2

   I tried to define the "Linefeed" key to be a caps lock:
clear lock
add lock = Linefeed

   Linefeed has no impact as a cap lock key BUT it does
seem to affect the binding of the keys of tvtwm!  Meaning
press linefeed once (you get a linefeed) and the binding of the
keys of tvtwm no longer work: different modifiers.  No impact on
character generation.  Press linefeed again (no linefeed generated)
and the key bindings of tvtwm now work (still no impact on character
generation)!
   This is 100% reproducible.




                                        Alain Brossard

mouse@lightning.mcrcim.mcgill.EDU (der Mouse) (03/22/91)

> clear mod1
> keysym Meta_L = Mode_switch
> clear mod3
> add mod3 = Mode_switch

Looks fine.

> Now I want to have the Meta_R key to have the same effect so:
> keysym Meta_R = Mode_switch

> Both keys should be generating the same things, but they don't!

Ah, but you haven't tied the right-hand meta key's keycode to mod3.
The xmodmap syntax obscures it, but modifiers are tied to keycodes, not
keysyms.

> the left key is considered to be a modifier, but not Meta_R.  No
> amount of clear mod3 and add mod3 = Mode_switch seem to work.

Odd; I guess xmodmap is being excessively stupid.

> A few hours later, a new twist:
> keysym Mode_switch = Meta_R
> clear mod3
> add mod3 = Meta_R Mode_switch

Once you've done this, "keysym Meta_R = Mode_switch" should work.

> I tried to define the "Linefeed" key to be a caps lock:

> clear lock
> add lock = Linefeed

The Lock modifier interpretation varies.  Normally, if it is tied to a
keycode with the Caps_Lock keysym, it's caps-lock; if Shift_Lock, it's
shift-lock.  There is no standard interpretation for the Lock modifier
when it's bound to a keycode whose keysym is Linefeed.

> Linefeed has no impact as a cap lock key BUT it does seem to affect
> the binding of the keys of tvtwm!

The Xlib in use ignores Lock/Linefeed, but tvtwm pays attention to the
modifier bit regardless of the keysym - that's how I'd interpret that.

					der Mouse

			old: mcgill-vision!mouse
			new: mouse@larry.mcrcim.mcgill.edu