Hello community,

here is the log from the commit of package kglobalaccel for openSUSE:Factory 
checked in at 2015-11-24 22:23:27
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kglobalaccel (Old)
 and      /work/SRC/openSUSE:Factory/.kglobalaccel.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kglobalaccel"

Changes:
--------
--- /work/SRC/openSUSE:Factory/kglobalaccel/kglobalaccel.changes        
2015-10-19 22:24:36.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.kglobalaccel.new/kglobalaccel.changes   
2015-11-24 22:23:28.000000000 +0100
@@ -1,0 +2,10 @@
+Sun Nov  8 17:00:17 UTC 2015 - [email protected]
+
+- Update to 5.16.0 (boo#955067)
+  * Do not XOR Shift for KP_Enter (kde#128982)
+  * Grab all keys for a symbol (kde#351198)
+  * Do not fetch keysyms twice for every keypress
+  * For more details please see:
+    https://www.kde.org/announcements/kde-frameworks-5.16.0.php
+
+-------------------------------------------------------------------
@@ -21 +31 @@
-  * Debug output has been ported to categorized output, for less
+  * Dekde#output has been ported to categorized output, for less

Old:
----
  kglobalaccel-5.15.0.tar.xz

New:
----
  kglobalaccel-5.16.0.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ kglobalaccel.spec ++++++
--- /var/tmp/diff_new_pack.4K23ZN/_old  2015-11-24 22:23:28.000000000 +0100
+++ /var/tmp/diff_new_pack.4K23ZN/_new  2015-11-24 22:23:28.000000000 +0100
@@ -18,9 +18,9 @@
 
 %bcond_without lang
 %define lname   libKF5GlobalAccel5
-%define _tar_path 5.15
+%define _tar_path 5.16
 Name:           kglobalaccel
-Version:        5.15.0
+Version:        5.16.0
 Release:        0
 %define kf5_version %{version}
 BuildRequires:  cmake >= 2.8.12

++++++ kglobalaccel-5.15.0.tar.xz -> kglobalaccel-5.16.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kglobalaccel-5.15.0/CMakeLists.txt 
new/kglobalaccel-5.16.0/CMakeLists.txt
--- old/kglobalaccel-5.15.0/CMakeLists.txt      2015-10-05 10:05:31.000000000 
+0200
+++ new/kglobalaccel-5.16.0/CMakeLists.txt      2015-11-08 13:23:03.000000000 
+0100
@@ -4,7 +4,7 @@
 
 # ECM setup
 include(FeatureSummary)
-find_package(ECM 5.15.0  NO_MODULE)
+find_package(ECM 5.16.0  NO_MODULE)
 set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake 
Modules." URL 
"https://projects.kde.org/projects/kdesupport/extra-cmake-modules";)
 feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND 
FATAL_ON_MISSING_REQUIRED_PACKAGES)
 
@@ -18,8 +18,8 @@
 
 include(ECMPoQmTools)
 
-set(KF5_VERSION "5.15.0") # handled by release scripts
-set(KF5_DEP_VERSION "5.15.0") # handled by release scripts
+set(KF5_VERSION "5.16.0") # handled by release scripts
+set(KF5_DEP_VERSION "5.16.0") # handled by release scripts
 
 ecm_setup_version(${KF5_VERSION} VARIABLE_PREFIX KGLOBALACCEL
                         VERSION_HEADER 
"${CMAKE_CURRENT_BINARY_DIR}/kglobalaccel_version.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kglobalaccel-5.15.0/po/ca@valencia/kglobalaccel5_qt.po 
new/kglobalaccel-5.16.0/po/ca@valencia/kglobalaccel5_qt.po
--- old/kglobalaccel-5.15.0/po/ca@valencia/kglobalaccel5_qt.po  2015-10-05 
10:05:31.000000000 +0200
+++ new/kglobalaccel-5.16.0/po/ca@valencia/kglobalaccel5_qt.po  2015-11-08 
13:23:03.000000000 +0100
@@ -1,28 +1,27 @@
-# Translation of kglobalaccel5.po to Catalan
-# Copyright (C) 1998-2014 This_file_is_part_of_KDE
+# Translation of kglobalaccel5_qt.po to Catalan (Valencian)
+# Copyright (C) 2014-2015 This_file_is_part_of_KDE
 # This file is distributed under the license LGPL version 2.1 or
 # version 3 or later versions approved by the membership of KDE e.V.
 #
-# Sebastià Pla i Sanz <[email protected]>, 1998, 1999, 2000, 2001, 2002, 2003, 
2004, 2005, 2006.
-# Antoni Bella Pérez <[email protected]>, 2003, 2006, 2011, 2012, 2013.
+# Sebastià Pla i Sanz <[email protected]>, 1998, 1999, 2000, 2001, 2002, 2003, 
2004, 2005, 2006, 2007.
+# Antoni Bella Pérez <[email protected]>, 2003, 2006, 2011, 2012, 2013, 
2014.
 # Albert Astals Cid <[email protected]>, 2004, 2005, 2007.
-# Sebastia Pla Sanz <[email protected]>, 2006, 2007.
-# Josep Ma. Ferrer <[email protected]>, 2007, 2008, 2009, 2010, 2011, 2012, 
2013, 2014.
+# Josep Ma. Ferrer <[email protected]>, 2007, 2008, 2009, 2010, 2011, 2012, 
2013, 2014, 2015.
 # Robert Millan <[email protected]>, 2009.
 # Orestes Mas <[email protected]>, 2010.
 msgid ""
 msgstr ""
-"Project-Id-Version: kglobalaccel5\n"
+"Project-Id-Version: kglobalaccel5_qt\n"
 "Report-Msgid-Bugs-To: http://bugs.kde.org\n";
 "POT-Creation-Date: 2014-03-23 01:50+0000\n"
-"PO-Revision-Date: 2014-03-30 12:32+0200\n"
+"PO-Revision-Date: 2015-05-07 15:24+0200\n"
 "Last-Translator: Josep Ma. Ferrer <[email protected]>\n"
 "Language-Team: Catalan <[email protected]>\n"
 "Language: ca@valencia\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Lokalize 1.4\n"
+"X-Generator: Lokalize 1.5\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
 "X-Accelerator-Marker: &\n"
 "X-Qt-Contexts: true\n"
@@ -60,7 +59,7 @@
 #, qt-format
 msgctxt "KGlobalAccel|"
 msgid "In context '%1' for action '%2'\n"
-msgstr "En el context «%1» per l'acció «%2»\n"
+msgstr "En el context «%1» per a l'acció «%2»\n"
 
 #: kglobalaccel.cpp:578
 #, qt-format
@@ -80,9 +79,9 @@
 #: runtime/main.cpp:61 runtime/main.cpp:63
 msgctxt "QObject|"
 msgid "KDE Global Shortcuts Service"
-msgstr ""
+msgstr "Servei de dreceres globals del KDE"
 
 #: runtime/main.cpp:66 runtime/main.cpp:67
 msgctxt "QObject|"
 msgid "Maintainer"
-msgstr ""
+msgstr "Mantenidor"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kglobalaccel-5.15.0/po/el/kglobalaccel5_qt.po 
new/kglobalaccel-5.16.0/po/el/kglobalaccel5_qt.po
--- old/kglobalaccel-5.15.0/po/el/kglobalaccel5_qt.po   2015-10-05 
10:05:31.000000000 +0200
+++ new/kglobalaccel-5.16.0/po/el/kglobalaccel5_qt.po   2015-11-08 
13:23:03.000000000 +0100
@@ -15,56 +15,47 @@
 # Dimitrios Glentadakis <[email protected]>, 2010, 2011, 2012, 2013, 2014.
 # nikos, 2011.
 # Stelios <[email protected]>, 2012, 2013.
+# Dimitris Kardarakos <[email protected]>, 2015.
 msgid ""
 msgstr ""
 "Project-Id-Version: kdelibs4\n"
 "Report-Msgid-Bugs-To: http://bugs.kde.org\n";
 "POT-Creation-Date: 2014-03-23 01:50+0000\n"
-"PO-Revision-Date: 2014-01-04 09:52+0100\n"
-"Last-Translator: Dimitrios Glentadakis <[email protected]>\n"
+"PO-Revision-Date: 2015-11-04 15:46+0200\n"
+"Last-Translator: Dimitris Kardarakos <[email protected]>\n"
 "Language-Team: Greek <[email protected]>\n"
 "Language: el\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Lokalize 1.5\n"
+"X-Generator: Lokalize 2.0\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
 "X-Qt-Contexts: true\n"
 
 #: kglobalaccel.cpp:535
-#, fuzzy
-#| msgid "Conflict with Global Shortcut"
 msgctxt "KGlobalAccel|"
 msgid "Conflict with Global Shortcut"
 msgstr "Σύγκρουση με καθολική συντόμευση"
 
 #: kglobalaccel.cpp:536
-#, fuzzy, qt-format
-#| msgid ""
-#| "The '%1' key combination has already been allocated to the global action "
-#| "\"%2\" in %3.\n"
-#| "Do you want to reassign it from that action to the current one?"
+#, qt-format
 msgctxt "KGlobalAccel|"
 msgid ""
 "The '%1' key combination has already been allocated to the global action "
 "\"%2\" in %3.\n"
 "Do you want to reassign it from that action to the current one?"
 msgstr ""
-"Ο συνδυασμός πλήκτρων '%1' έχει ήδη δεσμευθεί για την καθολική ενέργεια "
-"\"%2\" στο %3.\n"
-"Επιθυμείτε την ανάθεση από την ενέργεια αυτή στην τρέχουσα;"
+"Ο συνδυασμός πλήκτρων '%1' έχει ήδη ανατεθεί στην καθολική ενέργεια \"%2\" "
+"στο %3.\n"
+"Επιθυμείτε νέα ανάθεση από την ενέργεια αυτή στην τρέχουσα;"
 
 #: kglobalaccel.cpp:545 kglobalaccel.cpp:589
-#, fuzzy
-#| msgid "Reassign"
 msgctxt "KGlobalAccel|"
 msgid "Reassign"
-msgstr "Επανάθεση"
+msgstr "Ανάθεση ξανά"
 
 #: kglobalaccel.cpp:567
-#, fuzzy, qt-format
-#| msgid ""
-#| "The '%1' key combination is registered by application %2 for action %3:"
+#, qt-format
 msgctxt "KGlobalAccel|"
 msgid "The '%1' key combination is registered by application %2 for action %3:"
 msgstr ""
@@ -72,17 +63,13 @@
 "ενέργεια %3:"
 
 #: kglobalaccel.cpp:574
-#, fuzzy, qt-format
-#| msgid "In context '%1' for action '%2'\n"
+#, qt-format
 msgctxt "KGlobalAccel|"
 msgid "In context '%1' for action '%2'\n"
-msgstr "Στο περιεχόμενο '%1' για την ενέργεια '%2'\n"
+msgstr "Στο πλαίσιο '%1' για την ενέργεια '%2'\n"
 
 #: kglobalaccel.cpp:578
-#, fuzzy, qt-format
-#| msgid ""
-#| "The '%1' key combination is registered by application %2.\n"
-#| "%3"
+#, qt-format
 msgctxt "KGlobalAccel|"
 msgid ""
 "The '%1' key combination is registered by application %2.\n"
@@ -92,20 +79,16 @@
 "
%3"
 
 #: kglobalaccel.cpp:584
-#, fuzzy
-#| msgid "Conflict With Registered Global Shortcut"
 msgctxt "KGlobalAccel|"
 msgid "Conflict With Registered Global Shortcut"
-msgstr "Σύγκρουση με καθολική συντόμευση"
+msgstr "Σύγκρουση με καταχωρημένη καθολική συντόμευση"
 
 #: runtime/main.cpp:61 runtime/main.cpp:63
 msgctxt "QObject|"
 msgid "KDE Global Shortcuts Service"
-msgstr ""
+msgstr "Υπηρεσία καθολικών συντομεύσεων του KDE"
 
 #: runtime/main.cpp:66 runtime/main.cpp:67
-#, fuzzy
-#| msgid "Maintainer"
 msgctxt "QObject|"
 msgid "Maintainer"
 msgstr "Συντηρητής"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kglobalaccel-5.15.0/po/gd/kglobalaccel5_qt.po 
new/kglobalaccel-5.16.0/po/gd/kglobalaccel5_qt.po
--- old/kglobalaccel-5.15.0/po/gd/kglobalaccel5_qt.po   2015-10-05 
10:05:31.000000000 +0200
+++ new/kglobalaccel-5.16.0/po/gd/kglobalaccel5_qt.po   2015-11-08 
13:23:03.000000000 +0100
@@ -1,8 +1,10 @@
-# GunChleoc <[email protected]>, 2014.
+# GunChleoc <[email protected]>, 2014, 2015.
 msgid ""
 msgstr ""
-"PO-Revision-Date: 2014-12-09 12:40+0100\n"
-"Last-Translator: GunChleoc <[email protected]>\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2015-11-04 15:12+0000\n"
+"Last-Translator: Michael Bauer <[email protected]>\n"
 "Language-Team: Fòram na Gàidhlig\n"
 "Language: gd\n"
 "MIME-Version: 1.0\n"
@@ -10,7 +12,7 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : "
 "(n > 2 && n < 20) ? 2 : 3;\n"
-"X-Generator: Virtaal 0.7.1\n"
+"X-Generator: Poedit 1.8.4\n"
 "X-Qt-Contexts: true\n"
 
 #: kglobalaccel.cpp:535
@@ -67,9 +69,9 @@
 #: runtime/main.cpp:61 runtime/main.cpp:63
 msgctxt "QObject|"
 msgid "KDE Global Shortcuts Service"
-msgstr ""
+msgstr "Seirbheis nan ath-ghoiridean uile-choitcheann KDE"
 
 #: runtime/main.cpp:66 runtime/main.cpp:67
 msgctxt "QObject|"
 msgid "Maintainer"
-msgstr ""
+msgstr "Neach-glèidhidh"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kglobalaccel-5.15.0/po/ko/kglobalaccel5_qt.po 
new/kglobalaccel-5.16.0/po/ko/kglobalaccel5_qt.po
--- old/kglobalaccel-5.15.0/po/ko/kglobalaccel5_qt.po   2015-10-05 
10:05:31.000000000 +0200
+++ new/kglobalaccel-5.16.0/po/ko/kglobalaccel5_qt.po   2015-11-08 
13:23:03.000000000 +0100
@@ -60,7 +60,7 @@
 "The '%1' key combination is registered by application %2.\n"
 "%3"
 msgstr ""
-"'%1' 키 조합은 프로그램 %2이(가) 등록하였습니다.\n"
+"'%1' 키 조합은 프로그램 %2이(가) 등록했습니다.\n"
 "%3"
 
 #: kglobalaccel.cpp:584
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kglobalaccel-5.15.0/src/CMakeLists.txt 
new/kglobalaccel-5.16.0/src/CMakeLists.txt
--- old/kglobalaccel-5.15.0/src/CMakeLists.txt  2015-10-05 10:05:31.000000000 
+0200
+++ new/kglobalaccel-5.16.0/src/CMakeLists.txt  2015-11-08 13:23:03.000000000 
+0100
@@ -1,13 +1,11 @@
 configure_file(config-kglobalaccel.h.cmake 
${CMAKE_CURRENT_BINARY_DIR}/config-kglobalaccel.h )
 
-ecm_create_qm_loader(kglobalaccel_QM_LOADER kglobalaccel5_qt)
-
 set(kglobalaccel_SRCS
   kglobalaccel.cpp
   kglobalshortcutinfo.cpp
   kglobalshortcutinfo_dbus.cpp
-  ${kglobalaccel_QM_LOADER}
 )
+ecm_create_qm_loader(kglobalaccel_SRCS kglobalaccel5_qt)
 
 set(kglobalaccel_xml ${CMAKE_CURRENT_SOURCE_DIR}/org.kde.KGlobalAccel.xml)
 set_source_files_properties(${kglobalaccel_xml} PROPERTIES INCLUDE 
"kglobalshortcutinfo_p.h")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kglobalaccel-5.15.0/src/runtime/CMakeLists.txt 
new/kglobalaccel-5.16.0/src/runtime/CMakeLists.txt
--- old/kglobalaccel-5.15.0/src/runtime/CMakeLists.txt  2015-10-05 
10:05:31.000000000 +0200
+++ new/kglobalaccel-5.16.0/src/runtime/CMakeLists.txt  2015-11-08 
13:23:03.000000000 +0100
@@ -1,12 +1,10 @@
 remove_definitions(-DQT_NO_CAST_FROM_BYTEARRAY)
 remove_definitions(-DQT_NO_CAST_FROM_ASCII)
 
-ecm_create_qm_loader(kglobalaccel_QM_LOADER kglobalaccel5_qt)
-
 ###############################################################################
 ### KDED Global Accel Daemon
 
-set(kglobalaccel_SRCS
+set(kglobalaccelprivate_SRCS
     kglobalacceld.cpp
     kglobalaccel_interface.cpp
     component.cpp
@@ -14,11 +12,12 @@
     globalshortcut.cpp
     globalshortcutsregistry.cpp
     globalshortcutcontext.cpp
-    ${kglobalaccel_QM_LOADER})
+)
+ecm_create_qm_loader(kglobalaccelprivate_SRCS kglobalaccel5_qt)
 
 configure_file(config-kglobalaccel.h.cmake 
${CMAKE_CURRENT_BINARY_DIR}/config-kglobalaccel.h )
 
-add_library(KF5GlobalAccelPrivate ${kglobalaccel_SRCS})
+add_library(KF5GlobalAccelPrivate ${kglobalaccelprivate_SRCS})
 generate_export_header(KF5GlobalAccelPrivate BASE_NAME KF5GlobalAccelPrivate)
 add_library(KF5::GlobalAccelPrivate ALIAS KF5GlobalAccelPrivate)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kglobalaccel-5.15.0/src/runtime/kglobalaccel.desktop 
new/kglobalaccel-5.16.0/src/runtime/kglobalaccel.desktop
--- old/kglobalaccel-5.15.0/src/runtime/kglobalaccel.desktop    2015-10-05 
10:05:31.000000000 +0200
+++ new/kglobalaccel-5.16.0/src/runtime/kglobalaccel.desktop    2015-11-08 
13:23:03.000000000 +0100
@@ -30,6 +30,7 @@
 Name[fr]=Serveur général de raccourcis KDED
 Name[fy]=KDED globale fluchtoets tsjinnner
 Name[ga]=Freastalaí Aicearraí Comhchoiteanna KDED
+Name[gd]=Frithealaiche nan ath-ghoiridean uile-choitcheann KDED
 Name[gl]=Servidor de atallos de teclado globais de KDED
 Name[gu]=KDED વૈશ્વીક ટૂંકાણો સર્વર
 Name[he]=שרת קיצורי מקשים גלובליים KDED
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kglobalaccel-5.15.0/src/runtime/plugins/xcb/kglobalaccel_x11.cpp 
new/kglobalaccel-5.16.0/src/runtime/plugins/xcb/kglobalaccel_x11.cpp
--- old/kglobalaccel-5.15.0/src/runtime/plugins/xcb/kglobalaccel_x11.cpp        
2015-10-05 10:05:31.000000000 +0200
+++ new/kglobalaccel-5.16.0/src/runtime/plugins/xcb/kglobalaccel_x11.cpp        
2015-11-08 13:23:03.000000000 +0100
@@ -113,70 +113,75 @@
     if (!keyCodes) {
         return false;
     }
-    xcb_keycode_t keyCodeX = keyCodes[0];
-    free(keyCodes);
-
-       // Check if shift needs to be added to the grab since KKeySequenceWidget
-       // can remove shift for some keys. (all the %&* and such)
-       if( !(keyQt & Qt::SHIFT) &&
-           !KKeyServer::isShiftAsModifierAllowed( keyQt ) &&
-           keySymX != xcb_key_symbols_get_keysym(m_keySymbols, keyCodeX, 0) &&
-           keySymX == xcb_key_symbols_get_keysym(m_keySymbols, keyCodeX, 1) )
-       {
-               qCDebug(KGLOBALACCELD) << "adding shift to the grab";
-               keyModX |= KKeyServer::modXShift();
-       }
-
-       keyModX &= g_keyModMaskXAccel; // Get rid of any non-relevant bits in 
mod
-
-       if( !keyCodeX ) {
-               qCDebug(KGLOBALACCELD) << "keyQt (0x" << hex << keyQt << ") was 
resolved to x11 keycode 0";
-               return false;
-       }
-
-       // We'll have to grab 8 key modifier combinations in order to cover all
-       //  combinations of CapsLock, NumLock, ScrollLock.
-       // Does anyone with more X-savvy know how to set a mask on 
QX11Info::appRootWindow so that
-       //  the irrelevant bits are always ignored and we can just make one 
XGrabKey
-       //  call per accelerator? -- ellis
-#ifndef NDEBUG
-       QString sDebug = QString("\tcode: 0x%1 state: 0x%2 | 
").arg(keyCodeX,0,16).arg(keyModX,0,16);
-#endif
-       uint keyModMaskX = ~g_keyModMaskXOnOrOff;
-        QVector<xcb_void_cookie_t> cookies;
-       for( uint irrelevantBitsMask = 0; irrelevantBitsMask <= 0xff; 
irrelevantBitsMask++ ) {
-               if( (irrelevantBitsMask & keyModMaskX) == 0 ) {
-#ifndef NDEBUG
-                       sDebug += QString("0x%3, ").arg(irrelevantBitsMask, 0, 
16);
-#endif
-                       if( grab )
-                            cookies << 
xcb_grab_key_checked(QX11Info::connection(), true,
-                                                            
QX11Info::appRootWindow(), keyModX | irrelevantBitsMask,
-                                                            keyCodeX, 
XCB_GRAB_MODE_ASYNC, XCB_GRAB_MODE_SYNC);
-                       else
-                            cookies << 
xcb_ungrab_key_checked(QX11Info::connection(), keyCodeX,
-                                                              
QX11Info::appRootWindow(), keyModX | irrelevantBitsMask);
-               }
-       }
+    int i = 0;
+    bool success = !grab;
+    while (keyCodes[i] != XCB_NO_SYMBOL) {
+        xcb_keycode_t keyCodeX = keyCodes[i++];
+
+        // Check if shift needs to be added to the grab since 
KKeySequenceWidget
+        // can remove shift for some keys. (all the %&* and such)
+        if( !(keyQt & Qt::SHIFT) &&
+            !KKeyServer::isShiftAsModifierAllowed( keyQt ) &&
+            keySymX != xcb_key_symbols_get_keysym(m_keySymbols, keyCodeX, 0) &&
+            keySymX == xcb_key_symbols_get_keysym(m_keySymbols, keyCodeX, 1) )
+        {
+            qCDebug(KGLOBALACCELD) << "adding shift to the grab";
+            keyModX |= KKeyServer::modXShift();
+        }
+
+        keyModX &= g_keyModMaskXAccel; // Get rid of any non-relevant bits in 
mod
+
+        if( !keyCodeX ) {
+            qCDebug(KGLOBALACCELD) << "keyQt (0x" << hex << keyQt << ") was 
resolved to x11 keycode 0";
+            continue;
+        }
+
+        // We'll have to grab 8 key modifier combinations in order to cover all
+        //  combinations of CapsLock, NumLock, ScrollLock.
+        // Does anyone with more X-savvy know how to set a mask on 
QX11Info::appRootWindow so that
+        //  the irrelevant bits are always ignored and we can just make one 
XGrabKey
+        //  call per accelerator? -- ellis
+    #ifndef NDEBUG
+        QString sDebug = QString("\tcode: 0x%1 state: 0x%2 | 
").arg(keyCodeX,0,16).arg(keyModX,0,16);
+    #endif
+        uint keyModMaskX = ~g_keyModMaskXOnOrOff;
+            QVector<xcb_void_cookie_t> cookies;
+        for( uint irrelevantBitsMask = 0; irrelevantBitsMask <= 0xff; 
irrelevantBitsMask++ ) {
+            if( (irrelevantBitsMask & keyModMaskX) == 0 ) {
+    #ifndef NDEBUG
+                sDebug += QString("0x%3, ").arg(irrelevantBitsMask, 0, 16);
+    #endif
+                if( grab )
+                    cookies << xcb_grab_key_checked(QX11Info::connection(), 
true,
+                                                    QX11Info::appRootWindow(), 
keyModX | irrelevantBitsMask,
+                                                    keyCodeX, 
XCB_GRAB_MODE_ASYNC, XCB_GRAB_MODE_SYNC);
+                else
+                    cookies << xcb_ungrab_key_checked(QX11Info::connection(), 
keyCodeX,
+                                                    QX11Info::appRootWindow(), 
keyModX | irrelevantBitsMask);
+            }
+        }
 
-       bool failed = false;
-       if( grab ) {
-            for (int i = 0; i < cookies.size(); ++i) {
-                QScopedPointer<xcb_generic_error_t, QScopedPointerPodDeleter> 
error(xcb_request_check(QX11Info::connection(), cookies.at(i)));
-                if (!error.isNull()) {
-                    failed = true;
+        bool failed = false;
+        if( grab ) {
+                for (int i = 0; i < cookies.size(); ++i) {
+                    QScopedPointer<xcb_generic_error_t, 
QScopedPointerPodDeleter> error(xcb_request_check(QX11Info::connection(), 
cookies.at(i)));
+                    if (!error.isNull()) {
+                        failed = true;
+                    }
+                }
+            if( failed ) {
+                qCDebug(KGLOBALACCELD) << "grab failed!\n";
+                for( uint m = 0; m <= 0xff; m++ ) {
+                    if(( m & keyModMaskX ) == 0 )
+                        xcb_ungrab_key(QX11Info::connection(), keyCodeX, 
QX11Info::appRootWindow(), keyModX | m);
                 }
+            } else {
+                success = true;
             }
-               if( failed ) {
-                       qCDebug(KGLOBALACCELD) << "grab failed!\n";
-                       for( uint m = 0; m <= 0xff; m++ ) {
-                               if(( m & keyModMaskX ) == 0 )
-                                    xcb_ungrab_key(QX11Info::connection(), 
keyCodeX, QX11Info::appRootWindow(), keyModX | m);
-                       }
-               }
-       }
-
-       return !failed;
+        }
+    }
+    free(keyCodes);
+       return success;
 }
 
 bool KGlobalAccelImpl::nativeEventFilter(const QByteArray &eventType, void 
*message, long *)
@@ -246,10 +251,9 @@
        // If numlock is active and a keypad key is pressed, XOR the SHIFT 
state.
        //  e.g., KP_4 => Shift+KP_Left, and Shift+KP_4 => KP_Left.
     if (pEvent->state & KKeyServer::modXNumLock()) {
-        xcb_keysym_t sym = xcb_key_symbols_get_keysym(m_keySymbols, keyCodeX, 
0);
                // If this is a keypad key,
-               if( sym >= XK_KP_Space && sym <= XK_KP_9 ) {
-                       switch( sym ) {
+               if( keySymX >= XK_KP_Space && keySymX <= XK_KP_9 ) {
+                       switch( keySymX ) {
 
                                // Leave the following keys unaltered
                                // FIXME: The proper solution is to see which 
keysyms don't change when shifted.
@@ -257,6 +261,7 @@
                                case XK_KP_Add:
                                case XK_KP_Subtract:
                                case XK_KP_Divide:
+                case XK_KP_Enter:
                                        break;
 
                                default:
@@ -270,10 +275,15 @@
        KKeyServer::symXToKeyQt(keySymX, &keyCodeQt);
        KKeyServer::modXToQt(keyModX, &keyModQt);
 
-       if( keyModQt & Qt::SHIFT && !KKeyServer::isShiftAsModifierAllowed( 
keyCodeQt ) ) {
+       if ((keyModQt & Qt::SHIFT) && !KKeyServer::isShiftAsModifierAllowed( 
keyCodeQt ) ) {
 #ifdef KDEDGLOBALACCEL_TRACE
                qCDebug(KGLOBALACCELD) << "removing shift modifier";
 #endif
+        if (keyCodeQt != Qt::Key_Tab) { // KKeySequenceWidget does not map 
shift+tab to backtab
+            static const int FirstLevelShift = 1;
+            keySymX = xcb_key_symbols_get_keysym(m_keySymbols, keyCodeX, 
FirstLevelShift);
+            KKeyServer::symXToKeyQt(keySymX, &keyCodeQt);
+        }
                keyModQt &= ~Qt::SHIFT;
        }
 


Reply via email to