forwarded 411962 http://bugs.kde.org/125559
tags 411962 +fixed-in-experimental +patch
fixed 411962 4:3.5.6.dfsg.1-1
thanks

This is fixed in KDE SVN since 2006-12-08.
Please consider to include this fix in etch.

Index: kdelibs/kdecore/kkeynative_x11.cpp
===================================================================
--- kdelibs/kdecore/kkeynative_x11.cpp  (revision 604776)
+++ kdelibs/kdecore/kkeynative_x11.cpp  (working copy)
@@ -106,12 +106,15 @@
                return false;
        }
 
-       // FIXME: Accomadate non-standard layouts
        // XKeysymToKeycode returns the wrong keycode for XK_Print and XK_Break.
        // Specifically, it returns the code for SysReq instead of Print
-       if( m_sym == XK_Print && !(m_mod & Mod1Mask) )
+       // Only do this for the default Xorg layout, other keycode mappings
+       // (e.g. evdev) don't need or want it.
+       if( m_sym == XK_Print && !(m_mod & Mod1Mask) &&
+                XKeycodeToKeysym( qt_xdisplay(), 111, 0 ) == XK_Print )
                m_code = 111; // code for Print
-       else if( m_sym == XK_Break || (m_sym == XK_Pause && (m_mod & 
ControlMask)) )
+       else if( m_sym == XK_Break || (m_sym == XK_Pause && (m_mod & 
ControlMask)) &&
+                XKeycodeToKeysym( qt_xdisplay(), 114, 0 ) == XK_Pause )
                m_code = 114;
        else
                m_code = XKeysymToKeycode( qt_xdisplay(), m_sym );
Index: kdelibs/kdecore/kglobalaccel_x11.cpp
===================================================================
--- kdelibs/kdecore/kglobalaccel_x11.cpp        (revision 604776)
+++ kdelibs/kdecore/kglobalaccel_x11.cpp        (working copy)
@@ -169,7 +169,9 @@
        uchar keyCodeX = key.code();
        uint keyModX = key.mod() & g_keyModMaskXAccel; // Get rid of any 
non-relevant bits in mod
        // HACK: make Alt+Print work
-       if( key.sym() == XK_Sys_Req ) {
+       // only do this for the Xorg default keyboard keycodes,
+       // other mappings (e.g. evdev) don't need or want it
+       if( key.sym() == XK_Sys_Req && XKeycodeToKeysym( qt_xdisplay(), 111, 0 
) == XK_Print ) {
            keyModX |= KKeyServer::modXAlt();
            keyCodeX = 111;
        }

Reply via email to