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

Bug#411962: this is fixed in the current release of kde



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 to: