www.pudn.com > HIM.zip > KM.H
#ifndef HIMKMH
#define HIMKMH 1
#ifdef AUTODOC
Include File: km.h
Description:
Include file for HIM Keyboard Manager module
#endif
/*
*
* Copyright 1988 Allsoft (tm)
* 100 Calle Playa Del Sol NE
* Albuquerque, NM 87109
*
* ALL RIGHTS RESERVED.
*
* Unauthorized distribution, adaptation or use may be
* subject to civil and criminal penalties.
*
*/
/********** Filled by Polytron Version Control System **********
$Author: james borders $
$Date: 28 Apr 1988 18:18:48 $
$Revision: 1.1 $
$Log: D:/C/FMLIB/KM/VCS/KM.H $
Rev 1.1 28 Apr 1988 18:18:48 james borders
Format changes
****************************************************************/
/* Constant definitions for the Keyboard Manager package */
/* Error Codes */
#define KMMAERROR -1 /* memory allocation error */
#define KMFOERROR -2 /* file open error */
#define KMFCERROR -3 /* file close error */
#define KMFRERROR -4 /* file read error */
#define KMFWERROR -5 /* file write error */
#define KMBADUIR -6 /* bad UIR number */
#define KMBADUOR -7 /* bad UOR number */
#define KMBADIR -8 /* bad IR number */
#define KMCANTPOP -9 /* can't pop context any more */
/* UIR function defines */
#define fuirsabort 1 /* set abort code */
#define fuirqabort 2 /* abort code pending ?? */
#define fuirchavail 3 /* character available?? */
#define fuirgetch 4 /* return a character */
/*
Background routine parameter. Indicates to your background routine
which input source is currently active. A positive number means one
of your User Input Routines (UIR) is active.
*/
#define KFILE -1
#define KKBD -2
#define KNONE 0
/* function declarations */
/* multiplexer */
int kmminit(int (*)(),int (*)(), int);
int kmmclear(void);
int kmmkbhit(void);
int kmmgetch(void);
void kmmungetch(int c);
int kmmopen(char *filename);
int kmmclose(void);
void kmmsuspendf(void);
void kmmresumef(void);
int kmmfstat(void);
void (cdecl *kmmsbg(void (cdecl *ptr)()))();
void (cdecl *kmmgbg(void))();
void kmmdbg(void);
void kmmsuspendbg(void);
void kmmresumebg(void);
int kmmbgstat(void);
int kmmsuir(int (cdecl *ptr)());
int (cdecl *kmmguir(int unum))();
int kmmduir(int unum);
int kmmsuspenduir(int unum);
int kmmresumeuir(int unum);
int kmmuirstat(int unum);
void kmmsinput(int inum);
int kmmginput(void);
void kmmsabort(int acode);
int kmmgabort(void);
int kmmpush(int);
int kmmpop(int);
int fcharavail(void);
int kbcharavail(void);
int uircharavail(int num);
int anyaborts(void);
int getfilech(void);
int getkbch(void);
int getuirch(int num);
int ungetfilech(int c);
void ungetkbch(int c);
void ungetuirch(int num,int c);
void bumpinsource(void);
FILE *kmmopenpfile(char *);
/* filter */
int kmfinit(int (*)(),int (*)(), int);
void kmfclear(void);
int kmfsesc(int code);
int kmfgesc(void);
int kmfkbhit(void);
int kmfgetch(void);
void kmfungetch(int c);
void kmfsuspend(void);
void kmfresume(void);
int kmfstat(void);
int kmfpush(int);
int kmfpop(int);
void processchar(int c);
int escinbuf(void);
/* redirector */
int kmrinit(int (*)(),int (*)(), int);
int kmrclear(void);
int kmrkbhit(void);
int kmrgetch(void);
void kmrungetch(int c);
int kmropen(char *filename);
int kmrclose(void);
void kmrsuspendf(void);
void kmrresumef(void);
int kmrfstat(void);
int kmrsuor(void (cdecl *ptr)());
void (cdecl *kmrguor(int unum))();
int kmrduor(int unum);
int kmrsuspenduor(int unum);
int kmrresumeuor(int unum);
int kmruorstat(int unum);
int kmrpush(int);
int kmrpop(int);
/* intercept processor */
int kmpinit(int (*)(),int (*)(), int);
int kmpclear(void);
int kmpkbhit(void);
int kmpgetch(void);
void kmpungetch(int c);
int kmpsipr(int c,int (cdecl *ptr)());
int (cdecl *kmpgipr(int unum))();
int kmpdipr(int unum);
int kmpsuspendipr(int unum);
int kmpresumeipr(int unum);
int kmpiprstat(int unum);
int kmppush(int);
int kmppop(int);
/* Routine Macros */
/*
The high level Keyboard Manager functions are really just calls to
one or more of the individual modules as described in the documentation.
If you have no need for the Filter module or the redirector, you could
alter the defines below to bypass those modules.
*/
/*
The kminit is an example. Notice how it initializes each of the four
modules; multiplexer, redirector, filter, and intercept processor by
passing the previous module's kbhit and getch routines. If you just
wanted to use the intercept processor and the multiplexer you would:
1. Initialize the multiplexer. (kmminit(kbhit,getch))
2. Initialize the intercept processor by telling it to use the
multiplexer's input routines instead of the redirector.
(kmpinit(kmmkbhit,kmmgetch,0)).
*/
#define kminit(a,b) kmminit(a,b,kmfinit(kmmkbhit,kmmgetch,\
kmrinit(kmfkbhit,kmfgetch,\
kmpinit(kmrkbhit,kmrgetch,0))))
#define kmkbhit kmpkbhit
#define kmgetch kmpgetch
#define kmungetch(a) kmpungetch(a)
#define kmopeni(a) kmmopen(a)
#define kmopeno(a) kmropen(a)
#define kmclosei() kmmclose()
#define kmcloseo() kmrclose()
#define kmsuspendi() kmmsuspendf()
#define kmsuspendo() kmrsuspendf()
#define kmresumei() kmmresumef()
#define kmresumeo() kmrresumef()
#define kmsbgr(a) kmmsbg(a)
#define kmgbgr() kmmgbg()
#define kmdbgr() kmmdbg()
#define kmsuspendbgr() kmmsuspendbg()
#define kmresumebgr() kmmresumebg()
#define kmsuir(a) kmmsuir(a)
#define kmguir(a) kmmguir(a)
#define kmduir(a) kmmduir(a)
#define kmsuspenduir(a) kmmsuspenduir(a)
#define kmresumeuir(a) kmmresumeuir(a)
#define kmsuor(a) kmrsuor(a)
#define kmguor(a) kmrguor(a)
#define kmduor(a) kmrduor(a)
#define kmsuspenduor(a) kmrsuspenduor(a)
#define kmresumeuor(a) kmrresumeuor(a)
#define kmsir(a,b) kmpsipr(a,b)
#define kmgir(a) kmpgipr(a)
#define kmdir(a) kmpdipr(a)
#define kmsuspendir(a) kmpsuspendipr(a)
#define kmresumeir(a) kmpresumeipr(a)
#define kmsesc(a) kmfsesc(a)
#define kmgesc() kmfgesc()
#define kmpush() kmmpush(kmfpush(kmrpush(kmppush(0))))
#define kmpop() kmmpop(kmfpop(kmrpop(kmppop(0))))
/* Keycode definitions */
#define KBELL 7 /* ctrl - g */
#define KBS 8 /* back space */
#define KTAB 9 /* tab */
#define KLF 10 /* line feed */
#define KFF 12 /* form feed */
#define KCR 13 /* enter */
#define KESC 27 /* escape */
#define KBTAB 315 /* shift tab */
#define KAA 330 /* alt - a */
#define KAB 348
#define KAC 346
#define KAD 332
#define KAE 318
#define KAF 333
#define KAG 334
#define KAH 335
#define KAI 336
#define KAJ 337
#define KAK 338
#define KAL 339
#define KAM 350
#define KAN 349
#define KAO 324
#define KAP 325
#define KAQ 316
#define KAR 319
#define KAS 331
#define KAT 320
#define KAU 322
#define KAV 347
#define KAW 317
#define KAX 345
#define KAY 321
#define KAZ 344
#define KF1 359 /* Function key 1 */
#define KF2 360
#define KF3 361
#define KF4 362
#define KF5 363
#define KF6 364
#define KF7 365
#define KF8 366
#define KF9 367
#define KF10 368
#define KHOME 371 /* home */
#define KUP 372 /* up arrow */
#define KPGUP 373 /* page up */
#define KLEFT 375 /* left arrow */
#define KRIGHT 377 /* right arrow */
#define KEND 379 /* end */
#define KDOWN 380 /* down arrow */
#define KPGDN 381 /* page down */
#define KINS 382 /* Ins */
#define KDEL 383 /* Del */
#define KSF1 384 /* Shift F1 */
#define KSF2 385
#define KSF3 386
#define KSF4 387
#define KSF5 388
#define KSF6 389
#define KSF7 390
#define KSF8 391
#define KSF9 392
#define KSF10 393
#define KCF1 394 /* Ctrl - F1 */
#define KCF2 395
#define KCF3 396
#define KCF4 397
#define KCF5 398
#define KCF6 399
#define KCF7 400
#define KCF8 401
#define KCF9 402
#define KCF10 403
#define KAF1 404 /* Alt - F1 */
#define KAF2 405
#define KAF3 406
#define KAF4 407
#define KAF5 408
#define KAF6 409
#define KAF7 410
#define KAF8 411
#define KAF9 412
#define KAF10 413
#define KCPRTSC 414 /* ctrl - print screen */
#define KCLEFT 415 /* ctrl - left arrow */
#define KCRIGHT 416 /* ctrl - right arrow */
#define KCEND 417 /* ctrl - end */
#define KCPGDN 418 /* ctrl - pgdn */
#define KCHOME 419 /* ctrl - home */
#define KA1 420 /* alt 1 (top of keyboard) */
#define KA2 421
#define KA3 422
#define KA4 423
#define KA5 424
#define KA6 425
#define KA7 426
#define KA8 427
#define KA9 428
#define KA0 429
#define KAMINUS 430 /* alt - (top of keyboard) */
#define KAEQUAL 431 /* alt = */
#define KCPGUP 432 /* ctrl - pgup */
#define KF11 433 /* Function key 11 */
#define KF12 434
#define KSF11 435 /* Shift F11 */
#define KSF12 436
#define KCF11 437 /* ctrl - F11 */
#define KCF12 438
#define KAF11 439 /* alt - F11 */
#define KAF12 440
#endif /* HIMKMH */