Bug 15209 - Shift modifier not recognized when used with AltGr
Summary: Shift modifier not recognized when used with AltGr
Status: RESOLVED FIXED
Alias: None
Product: xkeyboard-config
Classification: Unclassified
Component: General (show other bugs)
Version: unspecified
Hardware: Other All
: medium major
Assignee: xkb
QA Contact:
URL:
Whiteboard:
Keywords: NEEDINFO
Depends on:
Blocks:
 
Reported: 2008-03-26 06:48 UTC by Tristan Miller
Modified: 2008-03-28 07:39 UTC (History)
1 user (show)

See Also:
i915 platform:
i915 features:


Attachments

Description Tristan Miller 2008-03-26 06:48:12 UTC
Reproducibility: Always, but only on my Lenovo Thinkpad T61.  On my Samsung X20, the problem does not exist.  Both machines are running the same software (openSUSE 10.3, xorg-x11-7.2-135.4) which leads me to believe that the hardware may have something to do with this.

Steps to reproduce:
1.  Use a GUI or use setxkbmap to select any keyboard layout which uses AltGr+Shift key combinations to produce certain glyphs.  For example:

setxkbmap -model pc104 -layout us -variant intl

Note that the us intl includes the following:

    key <AE01> { [	   1,     exclam,    exclamdown,      onesuperior ] };

2.  Press some key AltGr+Shift key combination.  For example, AltGr+Shift+1.

Expected behaviour:
3.  The appropriate character should appear.  In the case of AltGr+Shift+1, the character ¹ (onesuperior) should appear.

Observed behaviour:
3.  The unshifted variant appears.  In the case of AltGr+Shift+1, the inverted exclamation mark ¡ (exclamdown) appears.

This problem occurs in every program and with every keyboard layout I've tested.  Please help me further diagnose the problem as this is a fairly severe bug for those of us who need to use international keyboard layouts.
Comment 1 Tristan Miller 2008-03-26 07:07:36 UTC
In case it's of any use, here's the relevant output of xev when I try AltGr+Shift+1 using the us intl keyboard on my Thinkpad T61:

KeyPress event, serial 31, synthetic NO, window 0x5400001,
    root 0x13a, subw 0x0, time 3949330330, (-253,478), root:(1079,505),
    state 0x0, keycode 113 (keysym 0xfe03, ISO_Level3_Shift), same_screen YES,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyPress event, serial 31, synthetic NO, window 0x5400001,
    root 0x13a, subw 0x0, time 3949331390, (-253,478), root:(1079,505),
    state 0x80, keycode 50 (keysym 0x0, NoSymbol), same_screen YES,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyPress event, serial 31, synthetic NO, window 0x5400001,
    root 0x13a, subw 0x0, time 3949333393, (-253,478), root:(1079,505),
    state 0x80, keycode 10 (keysym 0xa1, exclamdown), same_screen YES,
    XLookupString gives 2 bytes: (c2 a1) "¡"
    XmbLookupString gives 2 bytes: (c2 a1) "¡"
    XFilterEvent returns: False

KeyRelease event, serial 31, synthetic NO, window 0x5400001,
    root 0x13a, subw 0x0, time 3949333496, (-253,478), root:(1079,505),
    state 0x80, keycode 10 (keysym 0xa1, exclamdown), same_screen YES,
    XLookupString gives 2 bytes: (c2 a1) "¡"
    XFilterEvent returns: False

EnterNotify event, serial 31, synthetic NO, window 0x5400001,
    root 0x13a, subw 0x0, time 3949338159, (96,176), root:(1428,203),
    mode NotifyNormal, detail NotifyNonlinear, same_screen YES,
    focus YES, state 128                                                        



And here's the same on my Samsung X20:

KeyPress event, serial 31, synthetic NO, window 0x4200001,
    root 0x5c, subw 0x0, time 3949427634, (-1000,644), root:(218,668),
    state 0x2000, keycode 113 (keysym 0xfe03, ISO_Level3_Shift), same_screen YES,
    XKeysymToKeycode returns keycode: 124
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyPress event, serial 31, synthetic NO, window 0x4200001,
    root 0x5c, subw 0x0, time 3949428699, (-1000,644), root:(218,668),
    state 0x2080, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyPress event, serial 31, synthetic NO, window 0x4200001,
    root 0x5c, subw 0x0, time 3949429349, (-1000,644), root:(218,668),
    state 0x2081, keycode 10 (keysym 0xb9, onesuperior), same_screen YES,
    XLookupString gives 2 bytes: (c2 b9) "¹"
    XmbLookupString gives 2 bytes: (c2 b9) "¹"
    XFilterEvent returns: False

KeyRelease event, serial 31, synthetic NO, window 0x4200001,
    root 0x5c, subw 0x0, time 3949429472, (-1000,644), root:(218,668),
    state 0x2081, keycode 10 (keysym 0xb9, onesuperior), same_screen YES,
    XLookupString gives 2 bytes: (c2 b9) "¹"
    XFilterEvent returns: False
Comment 2 Sergey V. Udaltsov 2008-03-26 14:41:52 UTC
Just tried on my machine:

1!¡¹

$ xprop -root | grep XKB
_XKB_RULES_NAMES(STRING) = "xorg", "hpi6", "us", "intl", ""

What version of xkeyboard-config are you using? Would you try the latest one?
Comment 3 Tristan Miller 2008-03-28 07:27:29 UTC
On my functioning Samsung X20:

$ xprop -root | grep XKB
_XKB_RULES_NAMES(STRING) = "xfree86", "pc104", "us,us", ",dvorak-intl", "ctrl:nocaps,altwin:menu,ctrl:nocaps,altwin:menu,ctrl:nocaps,altwin:menu,ctrl:nocaps,altwin:menu,ctrl:nocaps,altwin:menu,ctrl:nocaps,altwin:menu,ctrl:nocaps,altwin:menu"

On the buggy Thinkpad T61:

$ xprop -root | grep XKB
_XKB_RULES_NAMES(STRING) = "xfree86", "pc104", "us", "intl", "grp:alt_shift_toggle"

Is that "grp:alt_shift_toggle" relevant?

To answer your other question, both machines are running xkeyboard-config-1.0-29 from the SuSE RPMs.  I suppose I could try compiling a newer version from source, but if that requires me to update all of X along with it, then that's not feasible for me.
Comment 4 Tristan Miller 2008-03-28 07:39:30 UTC
OK, I just installed xkeyboard-config 1.2 from the source tarball, and now all the keys are working properly.  Whatever is causing this bug must have been fixed between version 1.0 and 1.2.


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.