]> git.lyx.org Git - lyx.git/blobdiff - src/kbmap.h
Fix fuer #209
[lyx.git] / src / kbmap.h
index 4cd1b0845ba3f40f400620db8703077aed50c8c5..7852e586c5e4580c6c8755aff55d88bf6f036fe0 100644 (file)
@@ -14,7 +14,7 @@
 #endif
 
 #include <list>
-using std::list;
+#include <boost/smart_ptr.hpp>
 
 #include "LString.h"
 
@@ -23,23 +23,40 @@ class kb_sequence;
 /// Defines key maps and actions for key sequences
 class kb_keymap {
 public:
-       ///
-       ~kb_keymap();
-       
-       /** Bind a key-sequence to an action.
-           Returns 0 on success. Otherwise, position in string where
-           error occured. */
-       int bind(char const * seq, int action);
+       /**
+        * Bind a key sequence to an action.
+        * @return 0 on success, or position in string seq where error
+        * occurs.
+        */
+       string::size_type bind(string const & seq, int action);
 
-       ///
-       void print(string & buf) const;
+       /// print all available keysyms
+       string const print() const;
        
-       /// Look up a key in the keymap
+       /**
+        * Look up a key press in the keymap.
+        * @param key the keysym
+        * @param mod the modifiers
+        * @param seq the current key sequence so far
+        * @return the action / LFUN_PREFIX / LFUN_UNKNOWN_ACTION
+        */
        int lookup(unsigned int key,
                   unsigned int mod, kb_sequence * seq) const;
 
        /// Given an action, find all keybindings.
-       string findbinding(int action) const;
+       string const findbinding(int action,
+                                string const & prefix = string()) const;
+
+       /**
+        * Returns a string of the given keysym, with modifiers.
+        * @param key the key
+        * @param mod the modifiers
+        */
+       static string const printKeysym(unsigned int key, unsigned int mod);
+
+       /// return the ISO value of a keysym
+       static char getiso(unsigned int i);
+
 private:
        ///
        struct kb_key {
@@ -50,27 +67,28 @@ private:
                unsigned int mod;
                
                /// Keymap for prefix keys
-               kb_keymap * table;
+               boost::shared_ptr<kb_keymap> table;
                
                /// Action for !prefix keys
                int action;
        };
 
 
-       /// Define a new key sequence
-       int defkey(kb_sequence * seq, int action, int idx = 0);
-       ///
-       static string keyname(kb_key const & k);
+       /**
+        * Define an action for a key sequence.
+        * @param r internal recursion level
+        */
+       void defkey(kb_sequence * seq, int action, unsigned int r = 0);
        
-       ///
-       static
-       void printKey(kb_key const & key, string & buf);
-       ///
+       ///  Returns a string of the given key
+       string const printKey(kb_key const & key) const;
+
+       /// is the table empty ?
        bool empty() const {
                return table.empty();
        }
        ///
-       typedef list<kb_key> Table;
+       typedef std::list<kb_key> Table;
        ///
        Table table;
 };