2 * \file KeySequence.cpp
3 * This file is part of LyX, the document processor.
4 * Licence details can be found in the file COPYING.
6 * \author Lars Gullik Bjønnes
7 * \author Jean-Marc Lasgouttes
10 * Full author contact details are available in file CREDITS.
15 #include "KeySequence.h"
21 #include "frontends/KeySymbol.h"
31 KeySequence::addkey(KeySymbolPtr key,
32 key_modifier::state mod, key_modifier::state nmod)
34 // adding a key to a deleted sequence
35 // starts a new sequence
42 modifiers.push_back(make_pair(mod, nmod));
43 sequence.push_back(key);
46 return curmap->lookup(key, mod, this);
49 static FuncRequest unknown(LFUN_UNKNOWN_ACTION);
54 size_t KeySequence::parse(string const & s)
60 key_modifier::state mod = key_modifier::none;
61 key_modifier::state nmod = key_modifier::none;
63 while (i < s.length()) {
69 if (i + 1 < s.length() && s[i + 1] == '-') {
72 mod |= key_modifier::shift;
76 mod |= key_modifier::ctrl;
80 mod |= key_modifier::alt;
86 } else if (i + 2 < s.length() && s[i] == '~'
90 nmod |= key_modifier::shift;
94 nmod |= key_modifier::ctrl;
98 nmod |= key_modifier::alt;
107 for (; j < s.length() && s[j] != ' '; ++j)
108 tbuf += s[j]; // (!!!check bounds :-)
110 KeySymbolPtr key(createKeySymbol());
118 addkey(key, mod, nmod);
119 mod = key_modifier::none;
124 if (sequence.size() == 0)
127 // everything is fine
132 docstring const KeySequence::print(bool forgui) const
136 size_t const length = sequence.size();
138 for (size_t i = 0; i < length; ++i) {
139 buf += sequence[i]->print(modifiers[i].first, forgui);
148 docstring const KeySequence::printOptions(bool forgui) const
152 buf += print(forgui);
157 buf += _(" options: ");
158 buf += curmap->print(forgui);
163 void KeySequence::mark_deleted()
169 void KeySequence::reset()
175 void KeySequence::clear()