home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / PROG_C / FGIN131.ZIP / FGINPUT.H < prev    next >
C/C++ Source or Header  |  1994-02-11  |  12KB  |  411 lines

  1. #include <fastgraf.h>
  2. #include <string.h>
  3.  
  4. /***************************************************************************\
  5.             ENUMS
  6. \***************************************************************************/
  7.  
  8. #ifndef __COLORS
  9. #define __COLORS
  10. enum COLORS {
  11.  
  12.     TRANSPARENT,
  13.     BLACK=0,       /* dark colors */
  14.     BLUE,
  15.     GREEN,
  16.     CYAN,
  17.     RED,
  18.     MAGENTA,
  19.     BROWN,
  20.     LIGHTGRAY,
  21.     DARKGRAY,      /* light colors */
  22.     LIGHTBLUE,
  23.     LIGHTGREEN,
  24.     LIGHTCYAN,
  25.     LIGHTRED,
  26.     LIGHTMAGENTA,
  27.     YELLOW,
  28.     WHITE,
  29.  
  30. };
  31. #endif
  32.  
  33. /* Return codes for input routines */
  34. enum INPUT {
  35.  
  36.     IN_ESCAPE=-1,
  37.     IN_SUCCESS,
  38.     IN_MASK_TOO_LONG,
  39.     IN_NOT_SUPPORTED,
  40.     IN_NOT_DEFINED,
  41.     IN_BOX_TOO_BIG,
  42.     IN_BUFFER_TOO_LONG,
  43.     IN_TAB,
  44.     IN_SHIFT_TAB,
  45.     IN_DARROW,
  46.     IN_UARROW
  47.  
  48. };
  49.  
  50.  
  51. /***************************************************************************\
  52.             FUNCTION DECLARATIONS
  53. \***************************************************************************/
  54.  
  55. #ifdef __cplusplus
  56. extern "C" {
  57. #endif
  58.  
  59. /* Fginput functions */
  60. int define_parameters(void);
  61. int restore_default_colors(void);
  62. int display_line(char *, const char *);
  63. int input_line(char *, const char *);
  64.  
  65. int wait_key_masked(char);
  66.  
  67. /* Keyboard functions */
  68. void clear_key(void);
  69. int  delay_key(int);
  70. int  check_key(void);
  71. int  wait_key(void);
  72. int  bios_key(int);
  73.  
  74. #ifdef __cplusplus
  75. }
  76. #endif
  77.  
  78.  
  79. /***************************************************************************\
  80.             GLOBALS
  81. \***************************************************************************/
  82.  
  83. /* Colors */
  84. extern int BorderLcolor;
  85. extern int BorderRcolor;
  86. extern int BorderTcolor;
  87. extern int BorderBcolor;
  88. extern int Backcolor;
  89. extern int BackHighlightcolor;
  90. extern int TextNormalcolor;
  91. extern int TextHighlightcolor;
  92. extern int Cursorcolor;
  93.  
  94. extern int TextSize;
  95. extern int Polled_Mode;
  96.  
  97.  
  98. /***************************************************************************\
  99.             DEFINES
  100. \***************************************************************************/
  101.  
  102. /*****************************************\
  103.         These macro functions are self-
  104.     explanatory.  They return 1 if true and
  105.     0 if false
  106. \*****************************************/
  107. /* Standard/All keyboards */
  108. #define shift_pressed()         (bios_key(0x02)&0x0003)
  109. #define left_shift_pressed()     (bios_key(0x02)&0x0002)
  110. #define right_shift_pressed() (bios_key(0x02)&0x0001)
  111. #define ctrl_pressed()            (bios_key(0x02)&0x0004)
  112. #define alt_pressed()             (bios_key(0x02)&0x0008)
  113. #define scroll_lock_on()      (bios_key(0x02)&0x0010)
  114. #define num_lock_on()            (bios_key(0x02)&0x0020)
  115. #define caps_lock_on()             (bios_key(0x02)&0x0040)
  116. #define insert_on()                (bios_key(0x02)&0x0080)
  117.  
  118. /* Enhanced keyboards */
  119. #define left_ctrl_pressed()    (bios_key(0x12)&0x0100)
  120. #define right_crtl_pressed()    (bios_key(0x12)&0x0400)
  121. #define left_alt_pressed()        (bios_key(0x12)&0x0200)
  122. #define right_alt_pressed()    (bios_key(0x12)&0x0800)
  123. #define scroll_lock_pressed()    (bios_key(0x12)&0x1000)
  124. #define num_lock_pressed()        (bios_key(0x12)&0x2000)
  125. #define caps_lock_pressed()    (bios_key(0x12)&0x4000)
  126. #define sys_rq_pressed()        (bios_key(0x12)&0x8000)
  127.  
  128.  
  129. /***************************************************************************\
  130.  
  131.             KEY RETURN MACROS
  132.  
  133.     These values are returned by wait_key(), check_key(), and delay_key()
  134.  
  135. \***************************************************************************/
  136.  
  137. #ifndef _KEYMACROS
  138. #define _KEYMACROS
  139.  
  140. #define F1                0x013B
  141. #define F2                0x013C
  142. #define F3                0x013D
  143. #define F4                0x013E
  144. #define F5                0x013F
  145. #define F6                0x0140
  146. #define F7                0x0141
  147. #define F8                0x0142
  148. #define F9                0x0143
  149. #define F10               0x0144
  150. #define F11               0x0185
  151. #define F12               0x0186
  152. #define HOME              0x0147
  153. #define UARROW            0x0148
  154. #define PGUP              0x0149
  155. #define LARROW            0x014B
  156. #define RARROW            0x014D
  157. #define END               0x014F
  158. #define DARROW            0x0150
  159. #define PGDN              0x0151
  160. #define INS               0x0152
  161. #define DEL               0x0153
  162. #define BS                0x0008
  163. #define LF                    0x000A
  164. #define CR                0x000D
  165. #define TAB               0x0009
  166. #define ESC               0x001B
  167. #define _A                    0x0061
  168. #define _B              0x0062
  169. #define _C              0x0063
  170. #define _D              0x0064
  171. #define _E              0x0065
  172. #define _F              0x0066
  173. #define _G              0x0067
  174. #define _H              0x0068
  175. #define _I              0x0069
  176. #define _J              0x006A
  177. #define _K              0x006B
  178. #define _L              0x006C
  179. #define _M              0x006D
  180. #define _N              0x006E
  181. #define _O              0x006F
  182. #define _P              0x0070
  183. #define _Q              0x0071
  184. #define _R              0x0072
  185. #define _S              0x0073
  186. #define _T              0x0074
  187. #define _U              0x0075
  188. #define _V              0x0076
  189. #define _W              0x0077
  190. #define _X              0x0078
  191. #define _Y              0x0079
  192. #define _Z              0x007A
  193. #define _1                    0x0031
  194. #define _2              0x0032
  195. #define _3              0x0033
  196. #define _4              0x0034
  197. #define _5              0x0035
  198. #define _6              0x0036
  199. #define _7              0x0037
  200. #define _8              0x0038
  201. #define _9              0x0039
  202. #define _0              0x0030
  203. #define DASH                0x002D
  204. #define EQUAL           0x003D
  205. #define OPENBRACKET     0x005B
  206. #define CLOSEBRACKET    0x005D
  207. #define BACKSLASH       0x005C
  208. #define SEMICOLON       0x003B
  209. #define APOSTROPHY      0x0027
  210. #define COMMA           0x002C
  211. #define PERIOD          0x002E
  212. #define FORESLASH       0x002F
  213. #define SINGLEOPENQUOTE 0x0060
  214.  
  215.  
  216. #define SHIFT_F1                    0x0154
  217. #define SHIFT_F2                 0x0155
  218. #define SHIFT_F3                   0x0156
  219. #define SHIFT_F4                   0x0157
  220. #define SHIFT_F5                   0x0158
  221. #define SHIFT_F6                   0x0159
  222. #define SHIFT_F7                   0x015A
  223. #define SHIFT_F8                   0x015B
  224. #define SHIFT_F9                   0x015C
  225. #define SHIFT_F10                  0x015D
  226. #define SHIFT_F11                  0x0187
  227. #define SHIFT_F12                  0x0186
  228. #define SHIFT_HOME                 0x0037
  229. #define SHIFT_UARROW               0x0038
  230. #define SHIFT_PGUP                 0x0039
  231. #define SHIFT_LARROW               0x0034
  232. #define SHIFT_RARROW               0x0036
  233. #define SHIFT_END                  0x0031
  234. #define SHIFT_DARROW               0x0032
  235. #define SHIFT_PGDN                 0x0033
  236. #define SHIFT_INS                  0x0030
  237. #define SHIFT_DEL                  0x002E
  238. #define SHIFT_BS                   0x0008
  239. #define SHIFT_TAB                  0x010F
  240. #define SHIFT_A                    0x0041
  241. #define SHIFT_B                  0x0042
  242. #define SHIFT_C                  0x0043
  243. #define SHIFT_D                  0x0044
  244. #define SHIFT_E                  0x0045
  245. #define SHIFT_F                  0x0046
  246. #define SHIFT_G                  0x0047
  247. #define SHIFT_H                  0x0048
  248. #define SHIFT_I                  0x0049
  249. #define SHIFT_J                  0x004A
  250. #define SHIFT_K                  0x004B
  251. #define SHIFT_L                  0x004C
  252. #define SHIFT_M                  0x004D
  253. #define SHIFT_N                  0x004E
  254. #define SHIFT_O                  0x004F
  255. #define SHIFT_P                  0x0050
  256. #define SHIFT_Q                  0x0051
  257. #define SHIFT_R                  0x0052
  258. #define SHIFT_S                  0x0053
  259. #define SHIFT_T                  0x0054
  260. #define SHIFT_U                  0x0055
  261. #define SHIFT_V                  0x0056
  262. #define SHIFT_W                  0x0057
  263. #define SHIFT_X                  0x0058
  264. #define SHIFT_Y                  0x0059
  265. #define SHIFT_Z                  0x005A
  266. #define SHIFT_1                    0x0021
  267. #define SHIFT_2                 0x0040
  268. #define SHIFT_3                 0x0023
  269. #define SHIFT_4                 0x0024
  270. #define SHIFT_5                 0x0025
  271. #define SHIFT_6                 0x005E
  272. #define SHIFT_7                 0x0026
  273. #define SHIFT_8                 0x002A
  274. #define SHIFT_9                 0x0028
  275. #define SHIFT_0                 0x0029
  276. #define SHIFT_DASH              0x005F
  277. #define SHIFT_EQUAL             0x002B
  278. #define SHIFT_OPENBRACKET        0x007B
  279. #define SHIFT_CLOSEBRACKET     0x007D
  280. #define SHIFT_BACKSLASH        0x007C
  281. #define SHIFT_SEMICOLON        0x003A
  282. #define SHIFT_APOSTROPHY       0x0022
  283. #define SHIFT_COMMA            0x003C
  284. #define SHIFT_PERIOD           0x003E
  285. #define SHIFT_FORESLASH        0x003D
  286. #define SHIFT_SINGLEOPENQUOTE    0x007E
  287.  
  288.  
  289. #define CTRL_F1                   0x015E
  290. #define CTRL_F2                   0x015F
  291. #define CTRL_F3                   0x0160
  292. #define CTRL_F4                   0x0161
  293. #define CTRL_F5                   0x0162
  294. #define CTRL_F6                   0x0163
  295. #define CTRL_F7                   0x0164
  296. #define CTRL_F8                   0x0165
  297. #define CTRL_F9                   0x0166
  298. #define CTRL_F10                  0x0167
  299. #define CTRL_F11                  0x0189
  300. #define CTRL_F12                  0x018A
  301. #define CTRL_HOME                 0x0177
  302. #define CTRL_UARROW               0x018D
  303. #define CTRL_PGUP                 0x0184
  304. #define CTRL_LARROW               0x0173
  305. #define CTRL_RARROW               0x0174
  306. #define CTRL_END                  0x0175
  307. #define CTRL_DARROW               0x0191
  308. #define CTRL_PGDN                 0x0176
  309. #define CTRL_INS                  0x0192
  310. #define CTRL_DEL                  0x0193
  311. #define CTRL_BS                   0x007F
  312. #define CTRL_CR                   0x000A
  313. #define CTRL_TAB                  0x0094
  314. #define CTRL_A                0x0001
  315. #define CTRL_B                0x0002
  316. #define CTRL_C                0x0003
  317. #define CTRL_D                0x0004
  318. #define CTRL_E                0x0005
  319. #define CTRL_F                0x0006
  320. #define CTRL_G                0x0007
  321. #define CTRL_H                0x0008
  322. #define CTRL_I                0x0009
  323. #define CTRL_J                0x000A
  324. #define CTRL_K                0x000B
  325. #define CTRL_L                0x000C
  326. #define CTRL_M                0x000D
  327. #define CTRL_N                0x000E
  328. #define CTRL_O                0x000F
  329. #define CTRL_P                0x0010
  330. #define CTRL_Q                0x0011
  331. #define CTRL_R                0x0012
  332. #define CTRL_S                0x0013
  333. #define CTRL_T                0x0014
  334. #define CTRL_U                0x0015
  335. #define CTRL_V                0x0016
  336. #define CTRL_W                0x0017
  337. #define CTRL_X                0x0018
  338. #define CTRL_Y                0x0019
  339. #define CTRL_Z                0x001A
  340. #define CTRL_2                        0x0103
  341. #define CTRL_6                        0x001E
  342. #define CTRL_DASH                    0x001F
  343. #define CTRL_OPENBRACKET        0x001B
  344. #define CTRL_CLOSEBRACKET     0x001D
  345. #define CTRL_BACKSLASH        0x001C
  346.  
  347.  
  348. #define ALT_F1                   0x0168
  349. #define ALT_F2                   0x0169
  350. #define ALT_F3                   0x016A
  351. #define ALT_F4                   0x016B
  352. #define ALT_F5                   0x016C
  353. #define ALT_F6                   0x016D
  354. #define ALT_F7                   0x016E
  355. #define ALT_F8                   0x016F
  356. #define ALT_F9                   0x0170
  357. #define ALT_F10                  0x0171
  358. #define ALT_F11                  0x0186
  359. #define ALT_F12                  0x0187
  360. #define ALT_CR                   0x011C
  361. #define ALT_TAB                  0x01A5
  362. #define ALT_A                 0x011E
  363. #define ALT_B                 0x0130
  364. #define ALT_C                 0x012E
  365. #define ALT_D                 0x0120
  366. #define ALT_E                 0x0112
  367. #define ALT_F                 0x0121
  368. #define ALT_G                 0x0122
  369. #define ALT_H                 0x0123
  370. #define ALT_I                 0x0117
  371. #define ALT_J                 0x0124
  372. #define ALT_K                 0x0125
  373. #define ALT_L                 0x0126
  374. #define ALT_M                 0x0132
  375. #define ALT_N                 0x0131
  376. #define ALT_O                 0x0118
  377. #define ALT_P                 0x0119
  378. #define ALT_Q                 0x0110
  379. #define ALT_R                 0x0113
  380. #define ALT_S                 0x011F
  381. #define ALT_T                 0x0114
  382. #define ALT_U                 0x0116
  383. #define ALT_V                 0x012F
  384. #define ALT_W                 0x0111
  385. #define ALT_X                 0x012D
  386. #define ALT_Y                 0x0115
  387. #define ALT_Z                 0x012C
  388. #define ALT_1                 0x0178
  389. #define ALT_2                 0x0179
  390. #define ALT_3                 0x017A
  391. #define ALT_4                 0x017B
  392. #define ALT_5                 0x017C
  393. #define ALT_6                 0x017D
  394. #define ALT_7                 0x017E
  395. #define ALT_8                 0x017F
  396. #define ALT_9                 0x0180
  397. #define ALT_0                 0x0181
  398. #define ALT_DASH              0x0182
  399. #define ALT_EQUAL             0x0183
  400. #define ALT_OPENBRACKET       0x011A
  401. #define ALT_CLOSEBRACKET      0x011B
  402. #define ALT_BACKSLASH         0x012B
  403. #define ALT_SEMICOLON         0x0127
  404. #define ALT_APOSTROPHY        0x0128
  405. #define ALT_COMMA             0x0133
  406. #define ALT_PERIOD            0x0134
  407. #define ALT_FORESLASH         0x0135
  408.  
  409. #endif
  410.  
  411.