// -*- 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
\* ======================================================================= */
#ifndef _KBMAP_H_ #define _KBMAP_H_
#ifdef __GNUG__ #pragma interface #endif
#include <X11/Xlib.h>
#define KB_PREALLOC 16 #define KB_HASHSIZE 128 // yes, yes - I know. 128 is not exactly prime :-) // ... but we are dealing with ASCII chars mostly.
class kb_keymap; class kb_sequence; class LString;
/// struct kb_key { /// Keysym unsignedint code;
/// Modifier masks unsignedint mod;
/// Keymap for prefix keys
kb_keymap *table;
/// Action for !prefix keys int action;
};
/// Defines key maps and actions for key sequences class kb_keymap { public: ///
kb_keymap() {
size = 0;
table = 0;
} ///
~kb_keymap();
/// Bind a key-sequence to an action /** Returns 0 on success. Otherwise, position in string where
error occured. */ int bind(charconst* seq, int action);
/// int print(char* buf, int maxlen) const;
/// Look up a key in the keymap int lookup(KeySym key, unsigned mod, kb_sequence *seq);
/// Given an action, find all keybindings.
LString findbinding(int action) const; private: /// Define a new key sequence int defkey(kb_sequence *seq, int action, int idx = 0);
/// Size of the table (<0: hashtab) int size;
/// Holds the defined keys /** Both kinds of tables ends with NoSymbol */ union
{ /// Table for linear array
kb_key *table;
/// Add a key to the key sequence and look it up in the curmap /** Add a key to the key sequence and look it up in the curmap
if the latter is defined. */ int addkey(KeySym key, unsigned mod, unsigned nmod = 0);
/// int print(char *buf, int maxlen, bool when_defined = false) const; //RVDK_PATCH_5
/// int printOptions(char *buf, int maxlen) const;
/// Make length negative to mark the sequence as deleted void delseq();
/// char getiso();
///
KeySym getsym();
/// void reset();
/// int parse(charconst *s);
/// Keymap to use if a new sequence is starting
kb_keymap *stdmap;
/// Keymap to use for the next key
kb_keymap *curmap;
/// Array holding the current key sequence /** If sequence[length-1] < 0xff it can be used as ISO8859 char */ unsignedint *sequence;
/// unsignedint *modifiers;
/// Current length of key sequence int length;
private: /// Static array preallocated for sequence unsignedint staticseq[KB_PREALLOC];
/// unsignedint staticmod[KB_PREALLOC];
/// Physically allocated storage size int size;
};
#endif
¤ Dauer der Verarbeitung: 0.1 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.