int kb_sequence::addkey(unsigned int key,
unsigned int mod, unsigned int nmod /*= 0*/)
{
- if (length < 0) length = 0;
-
- if (length + 1 >= size) {
- unsigned int * nseq = new unsigned int[size + KB_PREALLOC];
- size += KB_PREALLOC;
- memcpy(nseq, sequence, length * sizeof(unsigned int));
- if (sequence != staticseq) delete sequence;
- sequence = nseq;
- nseq = new unsigned int[size];
- memcpy(nseq, modifiers, length * sizeof(unsigned int));
- if (modifiers != staticmod) delete modifiers;
- modifiers = nseq;
+ //lyxerr << "kb_sequence::addkey: length is [" << length << "]\n"
+ // << "kb_sequence::addkey::key == [" << key << "]\n"
+ // << "kb_sequence::addkey::mod == [" << mod << "]" << endl;
+
+ if (length <= 0) {
+ length = 0;
+ sequence.clear();
+ modifiers.clear();
}
- modifiers[length] = mod + (nmod << 16);
- sequence[length++] = key;
-
+ modifiers.push_back(mod + (nmod << 16));
+ sequence.push_back(key);
+ ++length;
+
if (curmap)
return curmap->lookup(key, mod, this);
Called by : [user]
Purpose : print the currently defined sequence into a string
Parameters: buf - string where the result goes
- maxlen - length of string (including '\0')
when_defined - only print when sequence is real: length > 0.
Returns : 0, if ok, -1 if string too long
\* ---F------------------------------------------------------------------- */
int kb_sequence::print(string & buf, bool when_defined) const
{
+ //lyxerr << "kb_sequence::print: length is [" << length << "]" << endl;
+
KeySym key;
unsigned int mod;
int l = length;
for (int i = 0; i < l; ++i) {
key = sequence[i];
mod = modifiers[i] & 0xffff;
+ //lyxerr << "kb_sequence::sequence[" << i << "] == [" << key << "]\n"
+ // << "kb_sequence::modifiers[" << i << "] == [" << mod << "]"
+ // << endl;
printKeysym(key, mod, buf); // RVDK_PATCH_5
char kb_sequence::getiso() const
{
- int c = getsym();
+ int const c = getsym();
if (c > 0xff)
return '\0';