home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Columbia Kermit
/
kermit.zip
/
panix
/
k95source.tar.gz
/
k95source.tar
/
ckokey.h
< prev
next >
Wrap
C/C++ Source or Header
|
2011-07-19
|
6KB
|
263 lines
/* C K O K E Y . H */
/*
Authors: Frank da Cruz (fdc@columbia.edu, FDCCU@CUVMA.BITNET),
Columbia University Academic Information Systems, New York City.
Jeffrey Altman (jaltman@secure-endpoints.com),
Secure Endpoints Inc., New York City
Copyright (C) 1985, 2004, Trustees of Columbia University in the City of New
York.
*/
/* This file requires that ckuusr.h be included before it */
#ifndef CKOKEY_H
#define CKOKEY_H
#ifdef NT
#define CONTROL (LEFT_CTRL_PRESSED | RIGHT_CTRL_PRESSED)
#define SCROLLLOCK SCROLLLOCK_ON
#define ALT (LEFT_ALT_PRESSED | RIGHT_ALT_PRESSED)
#define NUMLOCK NUMLOCK_ON
#define LEFTSHIFT SHIFT_PRESSED
#define RIGHTSHIFT SHIFT_PRESSED
#define SHIFT SHIFT_PRESSED
#define SHIFT_KEY_IN SHIFT_PRESSED
#else /* not NT */
#ifndef SHIFT_KEY_IN
#define SHIFT_KEY_IN KBDTRF_SHIFT_KEY_IN
#endif /* SHIFT_KEY_IN */
#ifndef CONTROL
#define CONTROL KBDSTF_CONTROL
#define SCROLLLOCK KBDSTF_SCROLLLOCK
#define NUMLOCK KBDSTF_NUMLOCK
#define LEFTSHIFT KBDSTF_LEFTSHIFT
#define RIGHTSHIFT KBDSTF_RIGHTSHIFT
#define ALT KBDSTF_ALT
#endif /* CONTROL */
#ifndef SCROLLLOCK_ON
#define SCROLLLOCK_ON KBDSTF_SCROLLLOCK_ON
#endif
#ifndef NUMLOCK_ON
#define NUMLOCK_ON KBDSTF_NUMLOCK_ON
#endif
#define SHIFT (LEFTSHIFT | RIGHTSHIFT)
#define ENHANCED_KEY 0x02
#endif /* NT */
#define KBM_EN 0 /* English */
#define KBM_HE 1 /* Hebrew */
#define KBM_RU 2 /* Russian */
#define KBM_BR 3 /* Belorussian (not used) */
#define KBM_UR 4 /* Ukrainian (not used) */
#define KBM_EM 5 /* Emacs */
#define KBM_WP 6 /* Word Perfect 5.1 */
#ifndef NOKVERBS
#include "ckokvb.h"
#include "ckucmd.h" /* For struct keytab definition. */
typedef struct _vik_rec { /* Very Important Keys - */
KEY help; /* We look these up once */
KEY exit; /* and remember where they are... */
KEY quit;
KEY upscn;
KEY dnscn;
KEY upone;
KEY dnone;
KEY homscn;
KEY endscn;
KEY lfone;
KEY lfpg ;
KEY lfall;
KEY rtone;
KEY rtpg ;
KEY rtall;
KEY hangup;
KEY xbreak;
KEY lbreak;
KEY dump;
KEY prtctrl;
KEY prtauto;
KEY os2;
KEY printff;
KEY flipscn;
KEY debug;
KEY reset;
KEY compose;
KEY ucs2;
KEY markstart;
KEY markcancel;
KEY copyclip;
KEY copyhost;
KEY paste;
KEY holdscrn;
#ifdef OS2MOUSE
KEY mou_curpos;
KEY mou_copyhost;
KEY mou_copyclip;
KEY mou_paste;
KEY mou_dump;
KEY mou_mark;
KEY mou_url;
#endif /* OS2MOUSE */
KEY backsrch;
KEY fwdsrch;
KEY backnext;
KEY fwdnext;
KEY setbook;
KEY gobook;
KEY xgoto;
KEY fnkeys;
KEY status;
KEY ttype;
} vik_rec;
#endif /* NOKVERBS */
enum con_evt_type {
key=1,
#ifdef OS2MOUSE
mouse=2,
#endif /* OS2MOUSE */
#ifndef NOKVERBS
kverb=3,
#endif /* NOKVERBS */
macro=4,
esc=5,
csi=6,
literal=7,
error=8,
noop=99
};
typedef struct _esc_event {
KEY key;
} esc_event ;
typedef struct _csi_event {
KEY key ;
} csi_event ;
typedef struct _key_event {
KEY scancode ;
} key_event ;
#ifdef OS2MOUSE
typedef struct _ck_mouse_event {
unsigned button : 2 ;
unsigned alt : 1 ;
unsigned ctrl : 1 ;
unsigned shift : 1 ;
unsigned dbl : 1 ;
unsigned drag : 1 ;
position pos ;
} ck_mouse_event ;
#endif /* OS2MOUSE */
#ifndef NOKVERBS
typedef struct _kverb_event {
USHORT id ;
} kverb_event;
#endif /* NOKVERBS */
typedef struct _macro_event {
CHAR * string ;
} macro_event ;
typedef struct _literal_event {
CHAR * string ;
} literal_event ;
typedef struct _con_event {
enum con_evt_type type ;
union {
key_event key ;
#ifdef OS2MOUSE
ck_mouse_event mouse ;
#endif /* OS2MOUSE */
#ifndef NOKVERBS
kverb_event kverb ;
#endif /* NOKVERBS */
macro_event macro ;
esc_event esc ;
csi_event csi ;
literal_event literal ;
} ;
} con_event ;
struct keynode {
int key ;
con_event def ;
struct keynode * next ;
};
#ifdef OS2MOUSE
#define MMB1 XYM_B1
#define MMB2 XYM_B2
#define MMB3 XYM_B3
#define MMBUTTONMAX 3
#define MMALT XYM_ALT
#define MMCTRL XYM_CTRL
#define MMSHIFT XYM_SHIFT
#define MMCLICK XYM_C1
#define MMDBL XYM_C2
#define MMDRAG XYM_DRAG
#define MMEVENTSIZE (MMDRAG * 2)
#define MMSIZE (MMBUTTONMAX * MMEVENTSIZE) /* Mouse Map Size */
extern con_event mousemap[MMBUTTONMAX][MMSIZE] ;
#endif /* OS2MOUSE */
#define KEY_SCAN 0x0100
#define KEY_SHIFT 0x0200
#define KEY_CTRL 0x0400
#define KEY_ALT 0x0800
#define KEY_ENHANCED 0x1000
#define EMACSKM (TT_MAX+1)
#define HEBREWKM (TT_MAX+2)
#define RUSSIANKM (TT_MAX+3)
#define WPKM (TT_MAX+4)
_PROTOTYP( void keymapinit, (void) );
_PROTOTYP( void keynaminit, (void) );
_PROTOTYP( void vikinit, ( void ) ) ;
_PROTOTYP( char * keyname, (unsigned long) );
_PROTOTYP( void mousemapinit, (int,int) );
_PROTOTYP( char * mousename, (int,int) ) ;
_PROTOTYP( int keyinbuf, (int) ) ;
_PROTOTYP( int evtinbuf, (int) ) ;
_PROTOTYP( int putkey, (int,int) ) ;
_PROTOTYP( int putesc, (int,int) ) ;
_PROTOTYP( int putcsi, (int,int) ) ;
_PROTOTYP( int putkeystr, (int,char *) ) ;
_PROTOTYP( int putkverb, (int,int) ) ;
_PROTOTYP( int putmacro, (int,char *) ) ;
_PROTOTYP( int putliteral, (int,char *) ) ;
_PROTOTYP( int puterror, (int) ) ;
_PROTOTYP( int putevent, (int,con_event) ) ;
_PROTOTYP( int getevent, (int,con_event *) ) ;
_PROTOTYP( con_event congev, (int,int) ) ;
_PROTOTYP( void keybufinit, (void) ) ;
_PROTOTYP( void keybufcleanup, (void) ) ;
_PROTOTYP( int KbdHandlerInit, (void) ) ;
_PROTOTYP( int KbdHandlerCleanup, ( void ) ) ;
_PROTOTYP( void KbdHandlerThread, ( void * ) ) ;
_PROTOTYP( int insertkeymap, ( int, int, con_event ) ) ;
_PROTOTYP( int deletekeymap, ( int, int ) ) ;
_PROTOTYP( int clearkeymap, ( int ) ) ;
_PROTOTYP( int findkeymap, ( int, int, con_event * ) ) ;
_PROTOTYP( int defaultkeymap, ( int ) ) ;
_PROTOTYP( con_event mapkey, ( unsigned int ) ) ;
_PROTOTYP( con_event maptermkey, ( int, int ) ) ;
#ifdef NT
_PROTOTYP( void win32KeyEvent, (int, KEY_EVENT_RECORD) );
_PROTOTYP( int getKeycodeFromKeyRec, (KEY_EVENT_RECORD *, WORD *, int));
#endif
#endif /* CKOKEY_H */