]> git.lyx.org Git - lyx.git/blobdiff - src/kbmap.h
fix keys to be unique
[lyx.git] / src / kbmap.h
index a21a66255802639cbb88123a4f369f9a40779a0e..482ab6c10db3d21f2e081363c2f193bff9e8da19 100644 (file)
@@ -1,10 +1,12 @@
 // -*- C++ -*-
-/* ======================================================================= *\
-   File   : kbmap.h, kbmap.h,v 1.3 1996/12/10 04:35:57 larsbj Exp
-   Author : chb, 30.Oct.1995
-   Docu   : see kbmap.C
-   Purpose: class definitions for XKeyEvent keymap handling
-   \* ==================================================================== */
+/**
+ * \file kbmap.h
+ * Copyright 1995-2002 the LyX Team
+ * Read the file COPYING
+ *
+ * \author Lars Gullik Bjønnes <larsbj@lyx.org>
+ * \author John Levon <moz@compsoc.man.ac.uk>
+ */
 
 #ifndef KBMAP_H
 #define KBMAP_H
 #pragma interface
 #endif
 
-#include <list>
-#include <boost/smart_ptr.hpp>
-
 #include "LString.h"
+#include "frontends/key_state.h"
+#include "frontends/LyXKeySym.h"
+
+#include <list>
 
 class kb_sequence;
 
 /// Defines key maps and actions for key sequences
 class kb_keymap {
 public:
-       /** Bind a key-sequence to an action.
-           Returns 0 on success. Otherwise, position in string where
-           error occured. */
+       /**
+        * 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
+        */
        string::size_type bind(string const & seq, int action);
 
-       ///
-       void print(string & buf) const;
-       
-       /// Look up a key in the keymap
-       int lookup(unsigned int key,
-                  unsigned int mod, kb_sequence * seq) const;
+       /// print all available keysyms
+       string const print() const;
+
+       /**
+        * 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(LyXKeySymPtr key,
+                  key_modifier::state mod, kb_sequence * seq) const;
 
        /// Given an action, find all keybindings.
        string const findbinding(int action,
                                 string const & prefix = string()) const;
+
+       /**
+        * Returns a string of the given keysym, with modifiers.
+        * @param key the key as a keysym
+        * @param mod the modifiers
+        */
+       static string const printKeysym(LyXKeySymPtr key,
+                                       key_modifier::state mod);
+
+       typedef std::pair<key_modifier::state, key_modifier::state> modifier_pair;
+
 private:
        ///
        struct kb_key {
                /// Keysym
-               unsigned int code;
-               
+               LyXKeySymPtr code;
+
                /// Modifier masks
-               unsigned int mod;
-               
+               modifier_pair mod;
+
                /// Keymap for prefix keys
                boost::shared_ptr<kb_keymap> table;
-               
+
                /// Action for !prefix keys
                int action;
        };
 
+       /**
+        * Define an action for a key sequence.
+        * @param r internal recursion level
+        */
+       void defkey(kb_sequence * seq, int action, unsigned int r = 0);
 
-       /// Define a new key sequence
-       int defkey(kb_sequence * seq, int action, int idx = 0);
-       ///
-       static string const keyname(kb_key const & k);
-       
-       ///
-       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();
        }
@@ -73,4 +96,4 @@ private:
        Table table;
 };
 
-#endif
+#endif // KBMAP_H