Version: cvs/head as of 2004/10/11 (using KDE Devel) Installed from: Compiled sources Compiler: gcc (GCC) 3.3.1 (SuSE Linux) OS: Linux Since a few weeks I observe this disturbing behavior: Accels with Win keys -------------------------------------------------- applications don't react on accelerator keys containting the "Win" key any more. All my accelerators using Win key combinations are non-functional. Logging 125 I see that the Win key is recognized, yet the accelerator isn't triggered: kdecore (KAccel): KAccelPrivate::eventFilter( AccelOverride ): this = 0x8243388, key = Super_R kdecore (KAccel): KAccelPrivate::eventFilter( AccelOverride ): this = 0x8224b48, key = Super_R kdecore (KAccel): KAccelPrivate::eventFilter( AccelOverride ): this = 0x8243388, key = Right kdecore (KAccel): KAccelPrivate::eventFilter( AccelOverride ): this = 0x8224b48, key = Right Assigning < -------------------------------------------------- it's impossible to assign the "<" key as an accelerator. Instead of reporting it as "Shift <" it's always seen as "Shift >" in all applications' "Configure Shortcuts ..." dialog. The ">" works as expected.
Please provide your 'xmodmap' output.
I can confirm the < vs > case, it's some black magic in KKey::simplify() (the Shift+Equal->Shift+Plus case) and KKeyServer::Sym::getModsRequired(), but after trying now I really don't feel like fixing that :(.
I was looking at KKey::simplify() as well already. I have a french keyboard and the '1' sits above the '&', so 'Shift+&' gives '1', but KShortcutDialog reports that as 'Shift+1'. In KShortcutDialog::keyPressed, KKey::simplify() correctly converts 'Shift+1' to '1' but then it hits: if( m_bQtShortcut ) { key = key.keyCodeQt(); which effectively reverts the effect of KKey::simplify(). Having the following debug code: void KShortcutDialog::keyPressed( KKey key ) { kdDebug(125) << "keyPressed: " << key.toString() << endl; key.simplify(); kdDebug(125) << "keyPressed simple: " << key.toString() << endl; if( m_bQtShortcut ) key = key.keyCodeQt(); kdDebug(125) << "keyPressed simple #2: " << key.toString() << endl; I get: kdecore (KAccel): keyPressed: Shift+1 kdecore (KAccel): keyPressed simple: 1 kdecore (KAccel): keyPressed simple #2: Shift+1
Reverting as follows fixes the ignored Win key bug (X11R6.8.1): /kapplication.cpp/1.682/Tue Oct 12 13:38:59 2004//T1.682 /kaccel.cpp/1.147/Tue Oct 12 13:39:56 2004//T1.147 ... and here's my xmodmap output: xmodmap: up to 3 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_L (0x7d) mod2 mod3 mod4 mod5 Super_L (0x83), Super_R (0x81)
I have reverted the changes to kaccel.cpp/kapplication.cpp, we need the code that was there for the handling of the Win key, since Qt doesn't know about that key. This also fixes the keyboard repeat problem (that was a feature actually). That leaves the "<" problem.
*** Bug 103341 has been marked as a duplicate of this bug. ***
*** Bug 113286 has been marked as a duplicate of this bug. ***