#include "kbsequence.h"
#include "kbmap.h"
+#include "commandtags.h"
#include "debug.h"
+
+using std::vector;
using std::endl;
+using std::hex;
+using std::dec;
+
// The only modifiers that we handle. We want to throw away things
// like NumLock.
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
modifiers.clear();
}
- modifiers.push_back(mod);
+ modifiers.push_back(mod + (nmod << 16));
sequence.push_back(key);
++length_;
string::size_type i = 0;
unsigned int mod = 0;
+ unsigned int nmod = 0;
while (i < s.length()) {
if (s[i] == ' ')
++i;
&& 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:
}
i = j;
- addkey(key, mod);
+ addkey(key, mod, nmod);
mod = 0;
}
}
{
string buf;
- if (deleted_)
- return buf;
+ //if (deleted_)
+ // return buf;
- for (std::vector<unsigned int>::size_type i = 0; i < length_; ++i) {
+ for (vector<unsigned int>::size_type i = 0; i < length_; ++i) {
buf += kb_keymap::printKeysym(sequence[i], modifiers[i] & 0xffff);
// append a blank
string buf;
buf += print();
-
+
if (!curmap)
return buf;
unsigned int const c = getsym();
lyxerr[Debug::KBMAP] << "Raw keysym: "
- << std::hex << c << std::dec << endl;
+ << hex << c << dec << endl;
lyxerr[Debug::KBMAP] << "byte 3: "
- << std::hex << (c & 0xff00) << std::dec
+ << hex << (c & 0xff00) << dec
<< endl;
return kb_keymap::getiso(c);
}