products/Sources/formale Sprachen/C/Lyx/src image not shown  

Quellcode-Bibliothek

© Kompilation durch diese Firma

[Weder Korrektheit noch Funktionsfähigkeit der Software werden zugesichert.]

Datei: README   Sprache: C

Original von: Lyx©

// -*- 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
 unsigned int code;
 
 /// Modifier masks
 unsigned int 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(char const* 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;
  
  /// Hash table holding key lists
  kb_key **htable;
 };
};


/// Holds a key sequence and the current and standard keymaps
class kb_sequence {
public:
 ///
 kb_sequence() {
  stdmap = curmap = 0;
  sequence = staticseq;
  modifiers = staticmod;
  length = 0; 
  size = KB_PREALLOC;
 }
 
 ///
 
 
 ///
 ~kb_sequence()
 {
  if (sequence != staticseq) {
   delete sequence;
   delete modifiers;
  }
 }
 
 /// 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 = falseconst//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(char const *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 */
 unsigned int *sequence;
 
 ///
 unsigned int *modifiers;
 
 /// Current length of key sequence
 int length;
 
private:
 /// Static array preallocated for sequence
 unsigned int staticseq[KB_PREALLOC];
 
 ///
 unsigned int staticmod[KB_PREALLOC];
 
 /// Physically allocated storage size
 int size;
};

#endif

¤ Dauer der Verarbeitung: 0.20 Sekunden  (vorverarbeitet)  ¤





Download des
Quellennavigators
Download des
sprechenden Kalenders

in der Quellcodebibliothek suchen




Haftungshinweis

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.


Bot Zugriff