home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / k95source / ckokey.h < prev    next >
C/C++ Source or Header  |  2020-01-01  |  6KB  |  263 lines

  1. /* C K O K E Y . H */
  2.  
  3. /*
  4.   Authors: Frank da Cruz (fdc@columbia.edu, FDCCU@CUVMA.BITNET),
  5.              Columbia University Academic Information Systems, New York City.
  6.            Jeffrey Altman (jaltman@secure-endpoints.com),
  7.              Secure Endpoints Inc., New York City
  8.  
  9.   Copyright (C) 1985, 2004, Trustees of Columbia University in the City of New
  10.   York.
  11. */
  12.  
  13. /* This file requires that ckuusr.h be included before it */
  14.  
  15. #ifndef CKOKEY_H
  16. #define CKOKEY_H
  17.  
  18. #ifdef NT
  19. #define CONTROL        (LEFT_CTRL_PRESSED | RIGHT_CTRL_PRESSED)
  20. #define SCROLLLOCK     SCROLLLOCK_ON
  21. #define ALT            (LEFT_ALT_PRESSED | RIGHT_ALT_PRESSED)
  22. #define NUMLOCK        NUMLOCK_ON
  23. #define LEFTSHIFT      SHIFT_PRESSED
  24. #define RIGHTSHIFT     SHIFT_PRESSED
  25. #define SHIFT          SHIFT_PRESSED
  26. #define SHIFT_KEY_IN   SHIFT_PRESSED
  27. #else /* not NT */
  28. #ifndef SHIFT_KEY_IN
  29. #define SHIFT_KEY_IN    KBDTRF_SHIFT_KEY_IN
  30. #endif /* SHIFT_KEY_IN */
  31.  
  32. #ifndef CONTROL
  33. #define CONTROL         KBDSTF_CONTROL
  34. #define SCROLLLOCK      KBDSTF_SCROLLLOCK
  35. #define NUMLOCK         KBDSTF_NUMLOCK
  36. #define LEFTSHIFT       KBDSTF_LEFTSHIFT
  37. #define RIGHTSHIFT      KBDSTF_RIGHTSHIFT
  38. #define ALT             KBDSTF_ALT
  39. #endif /* CONTROL */
  40.  
  41. #ifndef SCROLLLOCK_ON
  42. #define SCROLLLOCK_ON   KBDSTF_SCROLLLOCK_ON
  43. #endif
  44. #ifndef NUMLOCK_ON
  45. #define NUMLOCK_ON      KBDSTF_NUMLOCK_ON
  46. #endif
  47.  
  48. #define SHIFT           (LEFTSHIFT | RIGHTSHIFT)
  49. #define ENHANCED_KEY    0x02
  50. #endif /* NT */
  51.  
  52. #define KBM_EN 0 /* English */
  53. #define KBM_HE 1 /* Hebrew */
  54. #define KBM_RU 2 /* Russian */
  55. #define KBM_BR 3 /* Belorussian (not used) */
  56. #define KBM_UR 4 /* Ukrainian (not used) */
  57. #define KBM_EM 5 /* Emacs */
  58. #define KBM_WP 6 /* Word Perfect 5.1 */
  59.  
  60. #ifndef NOKVERBS
  61. #include "ckokvb.h"
  62. #include "ckucmd.h"                     /* For struct keytab definition. */
  63.  
  64. typedef struct _vik_rec {               /* Very Important Keys - */
  65.     KEY help;                           /* We look these up once */
  66.     KEY exit;                           /* and remember where they are... */
  67.     KEY quit;
  68.     KEY upscn;
  69.     KEY dnscn;
  70.     KEY upone;
  71.     KEY dnone;
  72.     KEY homscn;
  73.     KEY endscn;
  74.     KEY lfone;
  75.     KEY lfpg ;
  76.     KEY lfall;
  77.     KEY rtone;
  78.     KEY rtpg ;
  79.     KEY rtall;
  80.     KEY hangup;
  81.     KEY xbreak;
  82.     KEY lbreak;
  83.     KEY dump;
  84.     KEY prtctrl;
  85.     KEY prtauto;
  86.     KEY os2;
  87.     KEY printff;
  88.     KEY flipscn;
  89.     KEY debug;
  90.     KEY reset;
  91.     KEY compose;
  92.     KEY ucs2;
  93.     KEY markstart;
  94.     KEY markcancel;
  95.     KEY copyclip;
  96.     KEY copyhost;
  97.     KEY paste;
  98.     KEY holdscrn;
  99. #ifdef OS2MOUSE
  100.     KEY mou_curpos;
  101.     KEY mou_copyhost;
  102.     KEY mou_copyclip;
  103.     KEY mou_paste;
  104.     KEY mou_dump;
  105.     KEY mou_mark;
  106.     KEY mou_url;
  107. #endif /* OS2MOUSE */
  108.     KEY backsrch;
  109.     KEY fwdsrch;
  110.     KEY backnext;
  111.     KEY fwdnext;
  112.     KEY setbook;
  113.     KEY gobook;
  114.     KEY xgoto;
  115.     KEY fnkeys;
  116.     KEY status;
  117.     KEY ttype;
  118. } vik_rec;
  119. #endif /* NOKVERBS */
  120.  
  121. enum con_evt_type {
  122.     key=1,
  123. #ifdef OS2MOUSE
  124.     mouse=2,
  125. #endif /* OS2MOUSE */
  126. #ifndef NOKVERBS
  127.     kverb=3,
  128. #endif /* NOKVERBS */
  129.     macro=4,
  130.     esc=5,
  131.     csi=6,
  132.     literal=7,
  133.     error=8,
  134.     noop=99
  135. };
  136.  
  137. typedef struct _esc_event {
  138.     KEY key;
  139. } esc_event ;
  140.  
  141. typedef struct _csi_event {
  142.     KEY key ;
  143. } csi_event ;
  144.  
  145. typedef struct _key_event {
  146.     KEY scancode ;
  147. } key_event ;
  148.  
  149. #ifdef OS2MOUSE
  150. typedef struct _ck_mouse_event {
  151.     unsigned button : 2 ;
  152.     unsigned alt    : 1 ;
  153.     unsigned ctrl   : 1 ;
  154.     unsigned shift  : 1 ;
  155.     unsigned dbl    : 1 ;
  156.     unsigned drag   : 1 ;
  157.     position pos ;
  158. } ck_mouse_event ;
  159. #endif /* OS2MOUSE */
  160. #ifndef NOKVERBS
  161. typedef struct _kverb_event {
  162.     USHORT id ;
  163. } kverb_event;
  164. #endif /* NOKVERBS */
  165.  
  166. typedef struct _macro_event {
  167.     CHAR * string ;
  168. } macro_event ;
  169.  
  170. typedef struct _literal_event {
  171.     CHAR * string ;
  172. } literal_event ;
  173.  
  174. typedef struct _con_event {
  175.     enum con_evt_type type ;
  176.     union {
  177.         key_event   key ;
  178. #ifdef OS2MOUSE
  179.         ck_mouse_event mouse ;
  180. #endif /* OS2MOUSE */
  181. #ifndef NOKVERBS
  182.         kverb_event kverb ;
  183. #endif /* NOKVERBS */
  184.         macro_event macro ;
  185.         esc_event esc ;
  186.         csi_event csi ;
  187.         literal_event literal ;
  188.         } ;
  189. } con_event ;
  190.  
  191. struct keynode {
  192.     int              key ;
  193.     con_event        def ;
  194.     struct keynode * next ;
  195. };
  196.  
  197. #ifdef OS2MOUSE
  198. #define MMB1      XYM_B1
  199. #define MMB2      XYM_B2
  200. #define MMB3      XYM_B3
  201. #define MMBUTTONMAX  3
  202.  
  203. #define MMALT     XYM_ALT
  204. #define MMCTRL    XYM_CTRL
  205. #define MMSHIFT   XYM_SHIFT
  206. #define MMCLICK   XYM_C1
  207. #define MMDBL     XYM_C2
  208. #define MMDRAG    XYM_DRAG
  209. #define MMEVENTSIZE (MMDRAG * 2)
  210. #define MMSIZE (MMBUTTONMAX * MMEVENTSIZE)               /* Mouse Map Size */
  211.  
  212. extern con_event mousemap[MMBUTTONMAX][MMSIZE] ;
  213. #endif /* OS2MOUSE */
  214.  
  215. #define KEY_SCAN      0x0100
  216. #define KEY_SHIFT     0x0200
  217. #define KEY_CTRL      0x0400
  218. #define KEY_ALT       0x0800
  219. #define KEY_ENHANCED  0x1000
  220.  
  221. #define EMACSKM    (TT_MAX+1)
  222. #define HEBREWKM   (TT_MAX+2)
  223. #define RUSSIANKM  (TT_MAX+3)
  224. #define WPKM       (TT_MAX+4)
  225.  
  226. _PROTOTYP( void keymapinit, (void) );
  227. _PROTOTYP( void keynaminit, (void) );
  228. _PROTOTYP( void vikinit, ( void ) ) ;
  229. _PROTOTYP( char * keyname, (unsigned long) );
  230. _PROTOTYP( void mousemapinit, (int,int) );
  231. _PROTOTYP( char * mousename, (int,int) ) ;
  232. _PROTOTYP( int keyinbuf, (int) ) ;
  233. _PROTOTYP( int evtinbuf, (int) ) ;
  234. _PROTOTYP( int putkey, (int,int) ) ;
  235. _PROTOTYP( int putesc, (int,int) ) ;
  236. _PROTOTYP( int putcsi, (int,int) ) ;
  237. _PROTOTYP( int putkeystr, (int,char *) ) ;
  238. _PROTOTYP( int putkverb, (int,int) ) ;
  239. _PROTOTYP( int putmacro, (int,char *) ) ;
  240. _PROTOTYP( int putliteral, (int,char *) ) ;
  241. _PROTOTYP( int puterror, (int) ) ;
  242. _PROTOTYP( int putevent, (int,con_event) ) ;
  243. _PROTOTYP( int getevent, (int,con_event *) ) ;
  244. _PROTOTYP( con_event congev, (int,int) ) ;
  245. _PROTOTYP( void keybufinit, (void) ) ;
  246. _PROTOTYP( void keybufcleanup, (void) ) ;
  247. _PROTOTYP( int KbdHandlerInit, (void) ) ;
  248. _PROTOTYP( int KbdHandlerCleanup, ( void ) ) ;
  249. _PROTOTYP( void KbdHandlerThread, ( void * ) ) ;
  250.  
  251. _PROTOTYP( int insertkeymap, ( int, int, con_event ) ) ;
  252. _PROTOTYP( int deletekeymap, ( int, int ) ) ;
  253. _PROTOTYP( int clearkeymap, ( int ) ) ;
  254. _PROTOTYP( int findkeymap, ( int, int, con_event * ) ) ;
  255. _PROTOTYP( int defaultkeymap, ( int ) ) ;
  256. _PROTOTYP( con_event mapkey, ( unsigned int ) ) ;
  257. _PROTOTYP( con_event maptermkey, ( int, int ) ) ;
  258. #ifdef NT
  259. _PROTOTYP( void win32KeyEvent, (int, KEY_EVENT_RECORD) );
  260. _PROTOTYP( int  getKeycodeFromKeyRec, (KEY_EVENT_RECORD *, WORD *, int));
  261. #endif
  262. #endif /* CKOKEY_H */
  263.