]> git.lyx.org Git - lyx.git/blobdiff - src/kbsequence.C
bug 183
[lyx.git] / src / kbsequence.C
index 0933d0b1bf1011ae52aab6adde43f47af831a422..db1759489895f069edde5cfcf784c1e6a897b0e2 100644 (file)
@@ -20,6 +20,7 @@
 
 #include "kbsequence.h"
 #include "kbmap.h"
+#include "commandtags.h"
 #include "debug.h"
 
 using std::endl;
@@ -29,7 +30,7 @@ using std::endl;
 enum { ModsMask = ShiftMask | ControlMask | Mod1Mask };
 
 
-kb_action kb_sequence::addkey(unsigned int key, unsigned int mod)
+int kb_sequence::addkey(unsigned int key, unsigned int mod, unsigned int nmod)
 {
        // adding a key to a deleted sequence
        // starts a new sequence
@@ -40,7 +41,7 @@ kb_action kb_sequence::addkey(unsigned int key, unsigned int mod)
                modifiers.clear();
        }
 
-       modifiers.push_back(mod);
+       modifiers.push_back(mod + (nmod << 16));
        sequence.push_back(key);
        ++length_;
 
@@ -58,6 +59,7 @@ string::size_type kb_sequence::parse(string const & s)
 
        string::size_type i = 0;
        unsigned int mod = 0;
+       unsigned int nmod = 0;
        while (i < s.length()) {
                if (s[i] == ' ')
                        ++i;
@@ -85,12 +87,15 @@ string::size_type kb_sequence::parse(string const & s)
                           && s[i + 2] == '-') {
                        switch (s[i + 1]) {
                        case 's': case 'S':
+                               nmod |= ShiftMask;
                                i += 3;
                                continue;
                        case 'c': case 'C':
+                               nmod |= ControlMask;
                                i += 3;
                                continue;
                        case 'm': case 'M':
+                               nmod |= Mod1Mask;
                                i += 3;
                                continue;
                        default:
@@ -111,7 +116,7 @@ string::size_type kb_sequence::parse(string const & s)
                        }
                        i = j;
                        
-                       addkey(key, mod);
+                       addkey(key, mod, nmod);
                        mod = 0;
                }
        }
@@ -149,7 +154,7 @@ string const kb_sequence::printOptions() const
        string buf;
 
        buf += print();
-       
+
        if (!curmap)
                return buf;