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.
17 #include "frontends/LyXKeySymFactory.h"
18 #include "kbsequence.h"
25 int kb_sequence::addkey(LyXKeySymPtr key,
26 key_modifier::state mod, key_modifier::state nmod)
28 // adding a key to a deleted sequence
29 // starts a new sequence
36 modifiers.push_back(make_pair(mod, nmod));
37 sequence.push_back(key);
40 return curmap->lookup(key, mod, this);
43 return LFUN_UNKNOWN_ACTION;
47 string::size_type kb_sequence::parse(string const & s)
49 if (s.empty()) return 1;
51 string::size_type i = 0;
52 key_modifier::state mod = key_modifier::none;
53 key_modifier::state nmod = key_modifier::none;
55 while (i < s.length()) {
61 if (i + 1 < s.length() && s[i + 1] == '-') {
64 mod |= key_modifier::shift;
68 mod |= key_modifier::ctrl;
72 mod |= key_modifier::alt;
78 } else if (i + 2 < s.length() && s[i] == '~'
82 nmod |= key_modifier::shift;
86 nmod |= key_modifier::ctrl;
90 nmod |= key_modifier::alt;
98 string::size_type j = i;
99 for (; j < s.length() && s[j] != ' '; ++j)
100 tbuf += s[j]; // (!!!check bounds :-)
102 LyXKeySymPtr key(LyXKeySymFactory::create());
105 if ( ! key->isOK() ) {
111 addkey(key, mod, nmod);
112 mod = key_modifier::none;
117 if (sequence.size() == 0)
120 // everything is fine
125 string const kb_sequence::print() const
132 KeySequence::size_type i, length = sequence.size();
134 for (i = 0; i < length; ++i) {
135 buf += kb_keymap::printKeysym(sequence[i], modifiers[i].first);
138 if (i + 1 < length) {
146 string const kb_sequence::printOptions() const
155 buf += _(" options: ");
156 buf += curmap->print();
161 void kb_sequence::mark_deleted()
167 void kb_sequence::reset()
173 void kb_sequence::clear()