[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    kdelibs/kdecore
From:       Luboš Luňák <l.lunak () kde ! org>
Date:       2005-03-29 13:41:27
Message-ID: 20050329134127.E3E9C3CF () office ! kde ! org
[Download RAW message or body]

CVS commit by lunakl: 

Decode properly also shortcuts expressed as the Macintosh keyboard shortcuts.


  M +13 -0     kkeyserver_x11.cpp   1.34
  M +8 -0      kkeyserver_x11.h   1.16
  M +5 -1      kshortcut.cpp   1.26


--- kdelibs/kdecore/kkeyserver_x11.cpp  #1.33:1.34
@@ -792,4 +792,17 @@ QString modToStringInternal( uint mod ) 
 QString modToStringUser( uint mod )     { return modToString( mod, true ); }
 
+uint stringUserToMod( const QString& mod )
+{
+        if( !g_bInitializedKKeyLabels )
+                intializeKKeyLabels();
+
+        QString s;
+        for( int i = KKey::MOD_FLAG_COUNT-1; i >= 0; i-- ) {
+                if( mod.lower() == g_rgModInfo[i].sLabel.lower())
+                        return g_rgModInfo[i].mod;
+        }
+        return 0;
+}
+
 /*void keySymModToKeyX( uint sym, uint mod, unsigned char *pKeyCodeX, uint *pKeySymX, uint *pKeyModX )
 {

--- kdelibs/kdecore/kkeyserver_x11.h  #1.15:1.16
@@ -447,4 +447,12 @@ namespace KKeyServer
 
         /**
+         * Converts the modifier given as user-readable string
+         * to KKey::ModFlag modifier, or 0.
+         * @internal
+         * @since 3.5
+         */
+        KDECORE_EXPORT uint stringUserToMod( const QString& mod );
+
+        /**
          * @internal
          * Unimplemented?

--- kdelibs/kdecore/kshortcut.cpp  #1.25:1.26
@@ -124,6 +124,10 @@ bool KKey::init( const QString& sSpec )
                 else if( s == "win" )  m_mod |= KKey::WIN;
                 else if( s == "meta" ) m_mod |= KKey::WIN;
+                else {
+                        uint m = KKeyServer::stringUserToMod( s );
+                        if( m != 0 ) m_mod |= m;
                 else break;
         }
+        }
         // If there is one non-blank key left:
         if( (i == rgs.size() - 1 && !rgs[i].isEmpty()) ) {


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic