#include "FuncRequest.h"
-#include "frontends/key_state.h"
-#include "frontends/LyXKeySym.h"
+#include "frontends/KeyModifier.h"
+#include "frontends/KeySymbol.h"
#include "support/docstream.h"
namespace lyx {
-class kb_sequence;
+class KeySequence;
/// Defines key maps and actions for key sequences
class KeyMap {
* Bind a key sequence to an action.
* @return 0 on success, or position in string seq where error
* occurs.
- * See kb_sequence::parse for the syntax of the seq string
+ * See KeySequence::parse for the syntax of the seq string
*/
size_t bind(std::string const & seq, FuncRequest const & func);
/**
* print all available keysyms
- * @param forgui true if the string should use translations and
- * special characters.
+ * @param forgui true if the string should use translations and
+ * special characters.
*/
docstring const print(bool forgui) const;
* @return the action / LFUN_COMMAND_PREFIX / LFUN_UNKNOWN_ACTION
*/
FuncRequest const &
- lookup(LyXKeySymPtr key,
- key_modifier::state mod, kb_sequence * seq) const;
+ lookup(KeySymbol const & key, KeyModifier mod, KeySequence * seq) const;
///
- typedef std::deque<kb_sequence> Bindings;
+ typedef std::deque<KeySequence> Bindings;
/// Given an action, find all keybindings.
Bindings findbindings(FuncRequest const & func) const;
/// Given an action, print the keybindings.
docstring const printbindings(FuncRequest const & func) const;
+ typedef std::pair<FuncRequest, KeySequence> Binding;
+ typedef std::vector<Binding> BindingList;
+ /**
+ * Return all lfun and their associated bindings.
+ * @param unbound list unbound (func without any keybinding) as well
+ */
+ BindingList const listBindings(bool unbound) const;
+
/**
* Given an action, find the first 1-key binding (if it exists).
- * The LyXKeySym pointer is 0 is no key is found.
+ * The KeySymbol pointer is 0 is no key is found.
* [only used by the Qt/Mac frontend]
*/
- std::pair<LyXKeySym const *, key_modifier::state>
+ std::pair<KeySymbol, KeyModifier>
find1keybinding(FuncRequest const & func) const;
* @param key the key as a keysym
* @param mod the modifiers
*/
- static std::string const printKeySym(LyXKeySym const & key,
- key_modifier::state mod);
+ static std::string const printKeySym(KeySymbol const & key,
+ KeyModifier mod);
+
+ typedef std::pair<KeyModifier, KeyModifier> ModifierPair;
- typedef std::pair<key_modifier::state, key_modifier::state> modifier_pair;
private:
///
struct Key {
/// Keysym
- LyXKeySymPtr code;
+ KeySymbol code;
/// Modifier masks
- modifier_pair mod;
+ ModifierPair mod;
/// Keymap for prefix keys
boost::shared_ptr<KeyMap> table;
* Define an action for a key sequence.
* @param r internal recursion level
*/
- void defkey(kb_sequence * seq, FuncRequest const & func,
+ void defkey(KeySequence * seq, FuncRequest const & func,
unsigned int r = 0);
/**
* @param prefix a sequence to prepend the results
*/
Bindings findbindings(FuncRequest const & func,
- kb_sequence const & prefix) const;
+ KeySequence const & prefix) const;
+
+ void listBindings(BindingList & list,
+ KeySequence const & prefix) const;
/// is the table empty ?
bool empty() const { return table.empty(); }