Consider masked modifiers (~S etc.) when writing to bind file

Fixes #12973
This commit is contained in:
Juergen Spitzmueller 2024-07-21 10:18:58 +02:00
parent 3040eb0fa2
commit eb1ac06a9a
2 changed files with 13 additions and 2 deletions

View File

@ -559,11 +559,11 @@ void KeyMap::listBindings(BindingList & list,
// a LFUN_COMMAND_PREFIX // a LFUN_COMMAND_PREFIX
if (key.prefixes) { if (key.prefixes) {
KeySequence seq = prefix; KeySequence seq = prefix;
seq.addkey(key.code, key.mod.first); seq.addkey(key.code, key.mod.first, key.mod.second);
key.prefixes->listBindings(list, seq, tag); key.prefixes->listBindings(list, seq, tag);
} else { } else {
KeySequence seq = prefix; KeySequence seq = prefix;
seq.addkey(key.code, key.mod.first); seq.addkey(key.code, key.mod.first, key.mod.second);
list.push_back(Binding(key.func, seq, tag)); list.push_back(Binding(key.func, seq, tag));
} }
} }

View File

@ -147,16 +147,27 @@ docstring const KeySequence::print(outputFormat format, bool const untranslated)
break; break;
case BindFile: case BindFile:
KeyModifier mod = modifiers[i].first; KeyModifier mod = modifiers[i].first;
KeyModifier nmod = modifiers[i].second;
if (mod & ControlModifier) if (mod & ControlModifier)
buf += "C-"; buf += "C-";
else if (nmod & ControlModifier)
buf += "~C-";
if (mod & AltModifier) if (mod & AltModifier)
#if defined(USE_MACOSX_PACKAGING) || defined(USE_META_KEYBINDING) #if defined(USE_MACOSX_PACKAGING) || defined(USE_META_KEYBINDING)
buf += "A-"; buf += "A-";
else if (nmod & AltModifier)
buf += "~A-";
if (mod & MetaModifier) if (mod & MetaModifier)
#endif #endif
buf += "M-"; buf += "M-";
#if defined(USE_MACOSX_PACKAGING) || defined(USE_META_KEYBINDING)
else if (nmod & MetaModifier)
buf += "~M-";
#endif
if (mod & ShiftModifier) if (mod & ShiftModifier)
buf += "S-"; buf += "S-";
else if (nmod & ShiftModifier)
buf += "~S-";
buf += from_utf8(sequence[i].getSymbolName()); buf += from_utf8(sequence[i].getSymbolName());
break; break;