home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / thesrc15.zip / getch.h < prev    next >
C/C++ Source or Header  |  1993-10-17  |  23KB  |  782 lines

  1. /*
  2.  * This software is Copyright (c) 1989, 1990, 1991 by Patrick J. Wolfe.
  3.  *
  4.  * Permission is hereby granted to copy, distribute or otherwise
  5.  * use any part of this package as long as you do not try to make
  6.  * money from it or pretend that you wrote it.  This copyright
  7.  * notice must be maintained in any copy made.
  8.  *
  9.  * Use of this software constitutes acceptance for use in an AS IS
  10.  * condition. There are NO warranties with regard to this software.
  11.  * In no event shall the author be liable for any damages whatsoever
  12.  * arising out of or in connection with the use or performance of this
  13.  * software.  Any use of this software is at the user's own risk.
  14.  *
  15.  * If you make modifications to this software that you feel
  16.  * increases it usefulness for the rest of the community, please
  17.  * email the changes, enhancements, bug fixes as well as any and
  18.  * all ideas to me. This software is going to be maintained and
  19.  * enhanced as deemed necessary by the community.
  20.  *
  21.  *              Patrick J. Wolfe
  22.  *              uunet!uiucuxc!kailand!pwolfe
  23.  *              pwolfe@kailand.kai.com
  24.  *
  25.  * Additions of DOS keys and extended function key descriptions
  26.  * made by Mark Hessling.
  27.  *
  28.  */
  29.  
  30. /* System V curses key names and codes returned by getch */
  31.  
  32. /*
  33. $Header: C:\THE\RCS\getch.h 1.4 1993/09/01 16:26:31 MH Interim MH $
  34. */
  35.  
  36.  
  37. #ifndef KEY_MIN
  38. #define KEY_MIN         0x101           /* Minimum curses key */
  39. #endif
  40. #ifndef KEY_BREAK
  41. #define KEY_BREAK    0x101    /* Not on PC KBD         */
  42. #endif
  43. #ifndef KEY_DOWN
  44. #define KEY_DOWN    0x102    /* Down arrow key         */
  45. #endif
  46. #ifndef KEY_UP
  47. #define KEY_UP        0x103    /* Up arrow key             */
  48. #endif
  49. #ifndef KEY_LEFT
  50. #define KEY_LEFT    0x104    /* Left arrow key         */
  51. #endif
  52. #ifndef KEY_RIGHT
  53. #define KEY_RIGHT    0x105    /* Right arrow key         */
  54. #endif
  55. #ifndef KEY_HOME
  56. #define KEY_HOME    0x106    /* home key             */
  57. #endif
  58. #ifndef KEY_BACKSPACE
  59. #define KEY_BACKSPACE    0x107    /* not on pc             */
  60. #endif
  61. #ifndef KEY_F0
  62. #define KEY_F0        0x108    /* function keys. space for     */
  63. #define KEY_F(n)    (KEY_F0+(n))/* 64 keys are reserved.     */
  64. #endif
  65. #ifndef KEY_DL
  66. #define KEY_DL        0x148    /* not on pc             */
  67. #endif
  68. #ifndef KEY_IL
  69. #define KEY_IL        0x149    /* insert line             */
  70. #endif
  71. #ifndef KEY_DC
  72. #define KEY_DC        0x14a    /* delete character         */
  73. #endif
  74. #ifndef KEY_IC
  75. #define KEY_IC        0x14b    /* insert char or enter ins mode */
  76. #endif
  77. #ifndef KEY_EIC
  78. #define KEY_EIC        0x14c    /* exit insert char mode     */
  79. #endif
  80. #ifndef KEY_CLEAR
  81. #define KEY_CLEAR    0x14d    /* clear screen             */
  82. #endif
  83. #ifndef KEY_EOS
  84. #define KEY_EOS        0x14e    /* clear to end of screen     */
  85. #endif
  86. #ifndef KEY_EOL
  87. #define KEY_EOL        0x14f    /* clear to end of line         */
  88. #endif
  89. #ifndef KEY_SF
  90. #define KEY_SF        0x150    /* scroll 1 line forward     */
  91. #endif
  92. #ifndef KEY_SR
  93. #define KEY_SR        0x151    /* scroll 1 line back (reverse)     */
  94. #endif
  95. #ifndef KEY_NPAGE
  96. #define KEY_NPAGE    0x152    /* next page             */
  97. #endif
  98. #ifndef KEY_PPAGE
  99. #define KEY_PPAGE    0x153    /* previous page         */
  100. #endif
  101. #ifndef KEY_STAB
  102. #define KEY_STAB    0x154    /* set tab             */
  103. #endif
  104. #ifndef KEY_CTAB
  105. #define KEY_CTAB    0x155    /* clear tab             */
  106. #endif
  107. #ifndef KEY_CATAB
  108. #define KEY_CATAB    0x156    /* clear all tabs         */
  109. #endif
  110. #ifndef KEY_ENTER
  111. #define KEY_ENTER    0x157    /* enter or send (unreliable)     */
  112. #endif
  113. #ifndef KEY_SRESET
  114. #define KEY_SRESET    0x158    /* soft/reset (partial/unreliable)*/
  115. #endif
  116. #ifndef KEY_RESET
  117. #define KEY_RESET    0x159    /* reset/hard reset (unreliable) */
  118. #endif
  119. #ifndef KEY_PRINT
  120. #define KEY_PRINT    0x15a    /* print/copy             */
  121. #endif
  122. #ifndef KEY_LL
  123. #define KEY_LL        0x15b    /* home down/bottom (lower left) */
  124. #endif
  125. #ifndef KEY_ABORT
  126. #define KEY_ABORT    0x15c    /* abort/terminate key (any)     */
  127. #endif
  128. #ifndef KEY_SHELP
  129. #define KEY_SHELP    0x15d    /* short help             */
  130. #endif
  131. #ifndef KEY_LHELP
  132. #define KEY_LHELP    0x15e    /* long help             */
  133. #endif
  134. #ifndef KEY_BTAB 
  135. #define KEY_BTAB        0x15f            /* Back tab key */
  136. #endif
  137. #ifndef KEY_BEG  
  138. #define KEY_BEG         0x160            /* beg(inning) key */
  139. #endif
  140. #ifndef KEY_CANCEL
  141. #define KEY_CANCEL      0x161             /* cancel key */
  142. #endif
  143. #ifndef KEY_CLOSE 
  144. #define KEY_CLOSE       0x162             /* close key */
  145. #endif
  146. #ifndef KEY_COMMAND
  147. #define KEY_COMMAND     0x163             /* cmd (command) key */
  148. #endif
  149. #ifndef KEY_COPY   
  150. #define KEY_COPY        0x164             /* copy key */
  151. #endif
  152. #ifndef KEY_CREATE 
  153. #define KEY_CREATE      0x165             /* create key */
  154. #endif
  155. #ifndef KEY_END    
  156. #define KEY_END         0x166             /* end key */
  157. #endif
  158. #ifndef KEY_EXIT   
  159. #define KEY_EXIT        0x167             /* exit key */
  160. #endif
  161. #ifndef KEY_FIND   
  162. #define KEY_FIND        0x168             /* find key */
  163. #endif
  164. #ifndef KEY_HELP   
  165. #define KEY_HELP        0x169             /* help key */
  166. #endif
  167. #ifndef KEY_MARK   
  168. #define KEY_MARK        0x16a             /* mark key */
  169. #endif
  170. #ifndef KEY_MESSAGE
  171. #define KEY_MESSAGE     0x16b             /* message key */
  172. #endif
  173. #ifndef KEY_MOVE   
  174. #define KEY_MOVE        0x16c             /* move key */
  175. #endif
  176. #ifndef KEY_NEXT   
  177. #define KEY_NEXT        0x16d             /* next object key */
  178. #endif
  179. #ifndef KEY_OPEN   
  180. #define KEY_OPEN        0x16e             /* open key */
  181. #endif
  182. #ifndef KEY_OPTIONS
  183. #define KEY_OPTIONS     0x16f             /* options key */
  184. #endif
  185. #ifndef KEY_PREVIOUS
  186. #define KEY_PREVIOUS    0x170             /* previous object key */
  187. #endif
  188. #ifndef KEY_REDO    
  189. #define KEY_REDO        0x171             /* redo key */
  190. #endif
  191. #ifndef KEY_REFERENCE
  192. #define KEY_REFERENCE   0x172             /* ref(erence) key */
  193. #endif
  194. #ifndef KEY_REFRESH  
  195. #define KEY_REFRESH     0x173             /* refresh key */
  196. #endif
  197. #ifndef KEY_REPLACE  
  198. #define KEY_REPLACE     0x174             /* replace key */
  199. #endif
  200. #ifndef KEY_RESTART  
  201. #define KEY_RESTART     0x175             /* restart key */
  202. #endif
  203. #ifndef KEY_RESUME   
  204. #define KEY_RESUME      0x176             /* resume key */
  205. #endif
  206. #ifndef KEY_SAVE     
  207. #define KEY_SAVE        0x177             /* save key */
  208. #endif
  209. #ifndef KEY_SBEG     
  210. #define KEY_SBEG        0x178             /* shifted beginning key */
  211. #endif
  212. #ifndef KEY_SCANCEL  
  213. #define KEY_SCANCEL     0x179             /* shifted cancel key */
  214. #endif
  215. #ifndef KEY_SCOMMAND 
  216. #define KEY_SCOMMAND    0x17a             /* shifted command key */
  217. #endif
  218. #ifndef KEY_SCOPY    
  219. #define KEY_SCOPY       0x17b             /* shifted copy key */
  220. #endif
  221. #ifndef KEY_SCREATE  
  222. #define KEY_SCREATE     0x17c             /* shifted create key */
  223. #endif
  224. #ifndef KEY_SDC      
  225. #define KEY_SDC         0x17d             /* shifted delete char key */
  226. #endif
  227. #ifndef KEY_SDL      
  228. #define KEY_SDL         0x17e             /* shifted delete line key */
  229. #endif
  230. #ifndef KEY_SELECT   
  231. #define KEY_SELECT      0x17f             /* select key */
  232. #endif
  233. #ifndef KEY_SEND     
  234. #define KEY_SEND        0x180             /* shifted end key */
  235. #endif
  236. #ifndef KEY_SEOL     
  237. #define KEY_SEOL        0x181             /* shifted clear line key */
  238. #endif
  239. #ifndef KEY_SEXIT    
  240. #define KEY_SEXIT       0x182             /* shifted exit key */
  241. #endif
  242. #ifndef KEY_SFIND    
  243. #define KEY_SFIND       0x183             /* shifted find key */
  244. #endif
  245. #ifndef KEY_SHOME    
  246. #define KEY_SHOME       0x184             /* shifted home key */
  247. #endif
  248. #ifndef KEY_SIC      
  249. #define KEY_SIC         0x185             /* shifted input key */
  250. #endif
  251. #ifndef KEY_SLEFT    
  252. #define KEY_SLEFT       0x187             /* shifted left arrow key */
  253. #endif
  254. #ifndef KEY_SMESSAGE 
  255. #define KEY_SMESSAGE    0x188             /* shifted message key */
  256. #endif
  257. #ifndef KEY_SMOVE    
  258. #define KEY_SMOVE       0x189             /* shifted move key */
  259. #endif
  260. #ifndef KEY_SNEXT    
  261. #define KEY_SNEXT       0x18a             /* shifted next key */
  262. #endif
  263. #ifndef KEY_SOPTIONS 
  264. #define KEY_SOPTIONS    0x18b             /* shifted options key */
  265. #endif
  266. #ifndef KEY_SPREVIOUS
  267. #define KEY_SPREVIOUS   0x18c             /* shifted prev key */
  268. #endif
  269. #ifndef KEY_SPRINT   
  270. #define KEY_SPRINT      0x18d             /* shifted print key */
  271. #endif
  272. #ifndef KEY_SREDO    
  273. #define KEY_SREDO       0x18e             /* shifted redo key */
  274. #endif
  275. #ifndef KEY_SREPLACE 
  276. #define KEY_SREPLACE    0x18f             /* shifted replace key */
  277. #endif
  278. #ifndef KEY_SRIGHT   
  279. #define KEY_SRIGHT      0x190             /* shifted right arrow */
  280. #endif
  281. #ifndef KEY_SRSUME   
  282. #define KEY_SRSUME      0x191             /* shifted resume key */
  283. #endif
  284. #ifndef KEY_SSAVE    
  285. #define KEY_SSAVE       0x192             /* shifted save key */
  286. #endif
  287. #ifndef KEY_SSUSPEND 
  288. #define KEY_SSUSPEND    0x193             /* shifted suspend key */
  289. #endif
  290. #ifndef KEY_SUNDO    
  291. #define KEY_SUNDO       0x194             /* shifted undo key */
  292. #endif
  293. #ifndef KEY_SUSPEND  
  294. #define KEY_SUSPEND     0x195             /* suspend key */
  295. #endif
  296. #ifndef KEY_UNDO     
  297. #define KEY_UNDO        0x196             /* undo key */
  298. #endif
  299. #ifndef KEY_A1       
  300. #define KEY_A1          0x197             /* Upper left of keypad */
  301. #endif
  302. #ifndef KEY_A3       
  303. #define KEY_A3          0x198             /* Upper right of keypad */
  304. #endif
  305. #ifndef KEY_B2       
  306. #define KEY_B2          0x199             /* Center of keypad */
  307. #endif
  308. #ifndef KEY_C1       
  309. #define KEY_C1          0x19a             /* Lower left of keypad */
  310. #endif
  311. #ifndef KEY_C3       
  312. #define KEY_C3          0x19b             /* Lower right of keypad */
  313. #endif
  314. #ifndef KEY_MAX      
  315. #define KEY_MAX         0xfff             /* Maximum curses key */
  316. #endif
  317.  
  318. #if !defined(DOS) && !defined(OS2)
  319.  
  320. /* vt220 special keys */
  321.  
  322. #define KEY_F1         KEY_F(1)
  323. #define KEY_F2         KEY_F(2)
  324. #define KEY_F3         KEY_F(3)
  325. #define KEY_F4         KEY_F(4)
  326. #define KEY_F5         KEY_F(5)
  327. #define KEY_F6         KEY_F(6)
  328. #define KEY_F7         KEY_F(7)
  329. #define KEY_F8         KEY_F(8)
  330. #define KEY_F9         KEY_F(9)
  331. #define KEY_F10        KEY_F(10)
  332. #define KEY_F11        KEY_F(11)
  333. #define KEY_F12        KEY_F(12)
  334. #define KEY_F13        KEY_F(13)
  335. #define KEY_F14        KEY_F(14)
  336. #define KEY_F15        KEY_F(15)
  337. #define KEY_Help       KEY_F(15)
  338. #define KEY_F16        KEY_F(16)
  339. #define KEY_Do         KEY_F(16)
  340. #define KEY_F17        KEY_F(17)
  341. #define KEY_F18        KEY_F(18)
  342. #define KEY_F19        KEY_F(19)
  343. #define KEY_F20        KEY_F(20)
  344. #define KEY_SF1        KEY_F(21)
  345. #define KEY_SF2        KEY_F(22)
  346. #define KEY_SF3        KEY_F(23)
  347. #define KEY_SF4        KEY_F(24)
  348. #define KEY_SF5        KEY_F(25)
  349. #define KEY_SF6        KEY_F(26)
  350. #define KEY_SF7        KEY_F(27)
  351. #define KEY_SF8        KEY_F(28)
  352. #define KEY_SF9        KEY_F(29)
  353. #define KEY_SF10       KEY_F(30)
  354. #define KEY_SF11       KEY_F(31)
  355. #define KEY_SF12       KEY_F(32)
  356. #define KEY_SF13       KEY_F(33)
  357. #define KEY_SF14       KEY_F(34)
  358. #define KEY_SF15       KEY_F(35)
  359. #define KEY_SHelp      KEY_F(35)
  360. #define KEY_SF16       KEY_F(36)
  361. #define KEY_SDo        KEY_F(36)
  362. #define KEY_SF17       KEY_F(37)
  363. #define KEY_SF18       KEY_F(38)
  364. #define KEY_SF19       KEY_F(39)
  365. #define KEY_SF20       KEY_F(40)
  366. #define KEY_CF1        KEY_F(41)
  367. #define KEY_CF2        KEY_F(42)
  368. #define KEY_CF3        KEY_F(43)
  369. #define KEY_CF4        KEY_F(44)
  370. #define KEY_CF5        KEY_F(45)
  371. #define KEY_CF6        KEY_F(46)
  372. #define KEY_CF7        KEY_F(47)
  373. #define KEY_CF8        KEY_F(48)
  374. #define KEY_CF9        KEY_F(49)
  375. #define KEY_CF10       KEY_F(50)
  376. #define KEY_CF11       KEY_F(51)
  377. #define KEY_CF12       KEY_F(52)
  378. #define KEY_CF13       KEY_F(53)
  379. #define KEY_CF14       KEY_F(54)
  380. #define KEY_CF15       KEY_F(55)
  381. #define KEY_CHelp      KEY_F(55)
  382. #define KEY_CF16       KEY_F(56)
  383. #define KEY_CDo        KEY_F(56)
  384. #define KEY_CF17       KEY_F(57)
  385. #define KEY_CF18       KEY_F(58)
  386. #define KEY_CF19       KEY_F(59)
  387. #define KEY_CF20       KEY_F(60)
  388. #define KEY_PF1        0631
  389. #define KEY_PF2        0632
  390. #define KEY_PF3        0633
  391. #define KEY_PF4        0634
  392. #define KEY_PadComma   0635
  393. #define KEY_PadMinus   0636
  394. #define KEY_PadPeriod  0637
  395. #define KEY_Pad0       0641
  396. #define KEY_Pad1       0642
  397. #define KEY_Pad2       0643
  398. #define KEY_Pad3       0644
  399. #define KEY_Pad4       0645
  400. #define KEY_Pad5       0646
  401. #define KEY_Pad6       0647
  402. #define KEY_Pad7       0650
  403. #define KEY_Pad8       0651
  404. #define KEY_Pad9       0652
  405. #define KEY_PadEnter   0653
  406. #define KEY_BackTab    0654
  407. #define KEY_Find       KEY_FIND
  408. #define KEY_InsertHere KEY_IC
  409. #define KEY_Remove     KEY_REPLACE
  410. #define KEY_Select     KEY_SELECT
  411. #define KEY_PrevScreen KEY_PPAGE
  412. #define KEY_PrevScrn   KEY_PPAGE
  413. #define KEY_NextScreen KEY_NPAGE
  414. #define KEY_NextScrn   KEY_NPAGE
  415. #define KEY_CLEFT      0655
  416. #define KEY_CRIGHT     0656
  417. #define KEY_CUP        0657
  418. #define KEY_CDOWN      0660
  419. #define KEY_CHOME      0661
  420. #define KEY_CEND       0662
  421. #define KEY_CPGUP      0663
  422. #define KEY_CPGDN      0664
  423.  
  424. /* ascii control codes */
  425. #define ControlA       001
  426. #define ControlB       002
  427. #define ControlC       003
  428. #define ControlD       004
  429. #define ControlE       005
  430. #define ControlF       006
  431. #define ControlG       007
  432. #define ControlH       010
  433. #define BackSpace      010
  434. #define ControlI       011
  435. #define Tab            011
  436. #define ControlJ       012
  437. #define LineFeed       012
  438. #define ControlK       013
  439. #define ControlL       014
  440. #define ControlM       015
  441. #define Return         015
  442. #define ControlN       016
  443. #define ControlO       017
  444. #define ControlP       020
  445. #define ControlQ       021
  446. #define ControlR       022
  447. #define ControlS       023
  448. #define ControlT       024
  449. #define ControlU       025
  450. #define ControlV       026
  451. #define ControlW       027
  452. #define ControlX       030
  453. #define ControlY       031
  454. #define ControlZ       032
  455. #define Escape         033
  456. #define Del            0177
  457. #define CSI            0233
  458. #endif
  459.  
  460. #if defined(DOS) || defined(OS2)
  461. /* normal characters */
  462. #define KEY_a      0x61
  463. #define KEY_b      0x62
  464. #define KEY_c      0x63
  465. #define KEY_d      0x64
  466. #define KEY_e      0x65
  467. #define KEY_f      0x66
  468. #define KEY_g      0x67
  469. #define KEY_h      0x68
  470. #define KEY_i      0x69
  471. #define KEY_j      0x6a
  472. #define KEY_k      0x6b
  473. #define KEY_l      0x6c
  474. #define KEY_m      0x6d
  475. #define KEY_n      0x6e
  476. #define KEY_o      0x6f
  477. #define KEY_p      0x70
  478. #define KEY_q      0x71
  479. #define KEY_r      0x72
  480. #define KEY_s      0x73
  481. #define KEY_t      0x74
  482. #define KEY_u      0x75
  483. #define KEY_v      0x76
  484. #define KEY_w      0x77
  485. #define KEY_x      0x78
  486. #define KEY_y      0x79
  487. #define KEY_z      0x7a
  488. #define KEY_0      0x30
  489. #define KEY_1      0x31
  490. #define KEY_2      0x32
  491. #define KEY_3      0x33
  492. #define KEY_4      0x34
  493. #define KEY_5      0x35
  494. #define KEY_6      0x36
  495. #define KEY_7      0x37
  496. #define KEY_8      0x38
  497. #define KEY_9      0x39
  498. #define KEY_BQUOTE      0x60
  499. #define KEY_MINUS      0x2d
  500. #define KEY_EQUAL      0x3d
  501. #define KEY_LBRACKET      0x5b
  502. #define KEY_RBRACKET      0x5d
  503. #define KEY_BSLASH      0x5c
  504. #define KEY_SEMICOLON      0x3b
  505. #define KEY_FQUOTE      0x27
  506. #define KEY_COMMA      0x2c
  507. #define KEY_STOP      0x2e
  508. #define KEY_FSLASH      0x2f
  509. #define KEY_SPACE      0x20
  510. #define KEY_RETURN     0xd
  511. #define KEY_TAB      0x9
  512. #define KEY_ESC      0x1b
  513. #define KEY_BKSP      0x8
  514. #define KEY_F1      KEY_F(1)
  515. #define KEY_F2      KEY_F(2)
  516. #define KEY_F3      KEY_F(3)
  517. #define KEY_F4      KEY_F(4)
  518. #define KEY_F5      KEY_F(5)
  519. #define KEY_F6      KEY_F(6)
  520. #define KEY_F7      KEY_F(7)
  521. #define KEY_F8      KEY_F(8)
  522. #define KEY_F9      KEY_F(9)
  523. #define KEY_F10     KEY_F(10)
  524. #define KEY_F11     KEY_F(41)
  525. #define KEY_F12     KEY_F(42)
  526. #define KEY_PGUP      KEY_PPAGE
  527. #define KEY_PGDN      KEY_NPAGE
  528. #define KEY_CURU      KEY_UP
  529. #define KEY_CURD      KEY_DOWN
  530. #define KEY_CURL      KEY_LEFT
  531. #define KEY_CURR      KEY_RIGHT
  532. #define KEY_INS      KEY_IC
  533. #define KEY_DEL      KEY_DC
  534. #define KEY_NUMCENTER      KEY_B2
  535. #define KEY_NUMPLUS        PADPLUS
  536. #define KEY_NUMMINUS       PADMINUS
  537. #define KEY_NUMSLASH       PADSLASH
  538. #define KEY_NUMSTAR        PADSTAR
  539. #define KEY_NUMENTER       PADENTER
  540. /* shifted characters */
  541. #define KEY_S_a      0x41
  542. #define KEY_S_b      0x42
  543. #define KEY_S_c      0x43
  544. #define KEY_S_d      0x44
  545. #define KEY_S_e      0x45
  546. #define KEY_S_f      0x46
  547. #define KEY_S_g      0x47
  548. #define KEY_S_h      0x48
  549. #define KEY_S_i      0x49
  550. #define KEY_S_j      0x4a
  551. #define KEY_S_k      0x4b
  552. #define KEY_S_l      0x4c
  553. #define KEY_S_m      0x4d
  554. #define KEY_S_n      0x4e
  555. #define KEY_S_o      0x4f
  556. #define KEY_S_p      0x50
  557. #define KEY_S_q      0x51
  558. #define KEY_S_r      0x52
  559. #define KEY_S_s      0x53
  560. #define KEY_S_t      0x54
  561. #define KEY_S_u      0x55
  562. #define KEY_S_v      0x56
  563. #define KEY_S_w      0x57
  564. #define KEY_S_x      0x58
  565. #define KEY_S_y      0x59
  566. #define KEY_S_z      0x5a
  567. #define KEY_S_0      0x29
  568. #define KEY_S_1      0x21
  569. #define KEY_S_2      0x40
  570. #define KEY_S_3      0x23
  571. #define KEY_S_4      0x24
  572. #define KEY_S_5      0x25
  573. #define KEY_S_6      0x5e
  574. #define KEY_S_7      0x26
  575. #define KEY_S_8      0x2a
  576. #define KEY_S_9      0x28
  577. #define KEY_S_BQUOTE      0x7e
  578. #define KEY_S_MINUS      0x5f
  579. #define KEY_S_EQUAL      0x2b
  580. #define KEY_S_LBRACKET      0x7b
  581. #define KEY_S_RBRACKET      0x7d
  582. #define KEY_S_BSLASH      0x7c
  583. #define KEY_S_SEMICOLON      0x3a
  584. #define KEY_S_FQUOTE      0x22
  585. #define KEY_S_COMMA      0x3c
  586. #define KEY_S_STOP      0x3e
  587. #define KEY_S_FSLASH      0x3f
  588. #define KEY_S_TAB     KEY_BACKTAB
  589. #define KEY_S_F1      KEY_F(11)
  590. #define KEY_S_F2      KEY_F(12)
  591. #define KEY_S_F3      KEY_F(13)
  592. #define KEY_S_F4      KEY_F(14)
  593. #define KEY_S_F5      KEY_F(15)
  594. #define KEY_S_F6      KEY_F(16)
  595. #define KEY_S_F7      KEY_F(17)
  596. #define KEY_S_F8      KEY_F(18)
  597. #define KEY_S_F9      KEY_F(19)
  598. #define KEY_S_F10     KEY_F(20)
  599. #define KEY_S_F11     KEY_F(43)
  600. #define KEY_S_F12     KEY_F(44)
  601. #define KEY_S_HOME    KEY_HOME
  602. #define KEY_S_PGUP    KEY_PGUP
  603. #define KEY_S_PGDN    KEY_PGDN
  604. #define KEY_S_CURU    KEY_CURU
  605. #define KEY_S_CURD    KEY_CURD
  606. #define KEY_S_CURL    KEY_CURL
  607. #define KEY_S_CURR    KEY_CURR
  608. #define KEY_S_END     KEY_END
  609. #define KEY_S_INS     KEY_INS
  610. #define KEY_S_DEL     KEY_DEL
  611. #define KEY_S_NUM0     0x30
  612. #define KEY_S_NUM1     0x31
  613. #define KEY_S_NUM2     0x32
  614. #define KEY_S_NUM3     0x33
  615. #define KEY_S_NUM4     0x34
  616. #define KEY_S_NUM5     0x35
  617. #define KEY_S_NUM6     0x36
  618. #define KEY_S_NUM7     0x37
  619. #define KEY_S_NUM8     0x38
  620. #define KEY_S_NUM9     0x39
  621. #define KEY_S_NUMSTOP  SHF_PADSTOP
  622. #define KEY_S_NUMCENTER  KEY_5
  623. /* control characters */
  624. #define KEY_C_a      0x1
  625. #define KEY_C_b      0x2
  626. #define KEY_C_c      0x3
  627. #define KEY_C_d      0x4
  628. #define KEY_C_e      0x5
  629. #define KEY_C_f      0x6
  630. #define KEY_C_g      0x7
  631. #define KEY_C_h      0x8
  632. #define KEY_C_i      0x9
  633. #define KEY_C_j      0xa
  634. #define KEY_C_k      0xb
  635. #define KEY_C_l      0xc
  636. #define KEY_C_m      0xd
  637. #define KEY_C_n      0xe
  638. #define KEY_C_o      0xf
  639. #define KEY_C_p      0x10
  640. #define KEY_C_q      0x11
  641. #define KEY_C_r      0x12
  642. #define KEY_C_s      0x13
  643. #define KEY_C_t      0x14
  644. #define KEY_C_u      0x15
  645. #define KEY_C_v      0x16
  646. #define KEY_C_w      0x17
  647. #define KEY_C_x      0x18
  648. #define KEY_C_y      0x19
  649. #define KEY_C_z      0x1a
  650. #define KEY_C_2      0x0
  651. #define KEY_C_6      0x1e
  652. #define KEY_C_MINUS      0x1f
  653. #define KEY_C_LBRACKET      0x1b
  654. #define KEY_C_RBRACKET      0x1d
  655. #define KEY_C_BSLASH      0x1c
  656. #define KEY_C_ENTER   CTL_ENTER
  657. #define KEY_C_TAB     CTL_TAB
  658. #define KEY_C_BKSP    CTL_BKSP
  659. #define KEY_C_F1      KEY_F(21)
  660. #define KEY_C_F2      KEY_F(22)
  661. #define KEY_C_F3      KEY_F(23)
  662. #define KEY_C_F4      KEY_F(24)
  663. #define KEY_C_F5      KEY_F(25)
  664. #define KEY_C_F6      KEY_F(26)
  665. #define KEY_C_F7      KEY_F(27)
  666. #define KEY_C_F8      KEY_F(28)
  667. #define KEY_C_F9      KEY_F(29)
  668. #define KEY_C_F10     KEY_F(30)
  669. #define KEY_C_F11     KEY_F(45)
  670. #define KEY_C_F12     KEY_F(46)
  671. #define KEY_C_HOME    CTL_HOME
  672. #define KEY_C_PGUP    CTL_PGUP
  673. #define KEY_C_PGDN    CTL_PGDN
  674. #define KEY_C_CURU    CTL_UP
  675. #define KEY_C_CURD    CTL_DOWN
  676. #define KEY_C_CURL    CTL_LEFT
  677. #define KEY_C_CURR    CTL_RIGHT
  678. #define KEY_C_END     CTL_END
  679. #define KEY_C_INS     CTL_INS
  680. #define KEY_C_DEL     CTL_DEL
  681. #define KEY_C_NUM0    CTL_INS
  682. #define KEY_C_NUM1    CTL_END
  683. #define KEY_C_NUM2    CTL_DOWN
  684. #define KEY_C_NUM3    CTL_PGDN
  685. #define KEY_C_NUM4    CTL_LEFT
  686. #define KEY_C_NUM5    CTL_PADCENTER
  687. #define KEY_C_NUM6    CTL_RIGHT
  688. #define KEY_C_NUM7    CTL_HOME
  689. #define KEY_C_NUM8    CTL_UP
  690. #define KEY_C_NUM9    CTL_PGUP
  691. #define KEY_C_NUMSTOP  CTL_PADSTOP
  692. #define KEY_C_NUMCENTER  CTL_PADCENTER
  693. #define KEY_C_NUMPLUS    CTL_PADPLUS
  694. #define KEY_C_NUMMINUS   CTL_PADMINUS
  695. #define KEY_C_NUMSLASH   CTL_PADSLASH
  696. #define KEY_C_NUMSTAR    CTL_PADSTAR
  697. #define KEY_C_NUMENTER   CTL_PADENTER
  698. /* alt characters */
  699. #define KEY_A_a      ALT_A
  700. #define KEY_A_b      ALT_B
  701. #define KEY_A_c      ALT_C
  702. #define KEY_A_d      ALT_D
  703. #define KEY_A_e      ALT_E
  704. #define KEY_A_f      ALT_F
  705. #define KEY_A_g      ALT_G
  706. #define KEY_A_h      ALT_H
  707. #define KEY_A_i      ALT_I
  708. #define KEY_A_j      ALT_J
  709. #define KEY_A_k      ALT_K
  710. #define KEY_A_l      ALT_L
  711. #define KEY_A_m      ALT_M
  712. #define KEY_A_n      ALT_N
  713. #define KEY_A_o      ALT_O
  714. #define KEY_A_p      ALT_P
  715. #define KEY_A_q      ALT_Q
  716. #define KEY_A_r      ALT_R
  717. #define KEY_A_s      ALT_S
  718. #define KEY_A_t      ALT_T
  719. #define KEY_A_u      ALT_U
  720. #define KEY_A_v      ALT_V
  721. #define KEY_A_w      ALT_W
  722. #define KEY_A_x      ALT_X
  723. #define KEY_A_y      ALT_Y
  724. #define KEY_A_z      ALT_Z
  725. #define KEY_A_0      ALT_0
  726. #define KEY_A_1      ALT_1
  727. #define KEY_A_2      ALT_2
  728. #define KEY_A_3      ALT_3
  729. #define KEY_A_4      ALT_4
  730. #define KEY_A_5      ALT_5
  731. #define KEY_A_6      ALT_6
  732. #define KEY_A_7      ALT_7
  733. #define KEY_A_8      ALT_8
  734. #define KEY_A_9      ALT_9
  735. #define KEY_A_BQUOTE      ALT_BQUOTE
  736. #define KEY_A_MINUS       ALT_MINUS
  737. #define KEY_A_EQUAL       ALT_EQUAL
  738. #define KEY_A_LBRACKET    ALT_LBRACKET
  739. #define KEY_A_RBRACKET    ALT_RBRACKET
  740. #define KEY_A_BSLASH      ALT_BSLASH
  741. #define KEY_A_SEMICOLON   ALT_SEMICOLON
  742. #define KEY_A_FQUOTE      ALT_FQUOTE
  743. #define KEY_A_COMMA       ALT_COMMA
  744. #define KEY_A_STOP        ALT_STOP
  745. #define KEY_A_FSLASH      ALT_FSLASH
  746. #define KEY_A_ENTER       ALT_ENTER
  747. #define KEY_A_TAB         ALT_TAB
  748. #define KEY_A_ESC         ALT_ESC
  749. #define KEY_A_BKSP        ALT_BKSP
  750. #define KEY_A_F1      KEY_F(31)
  751. #define KEY_A_F2      KEY_F(32)
  752. #define KEY_A_F3      KEY_F(33)
  753. #define KEY_A_F4      KEY_F(34)
  754. #define KEY_A_F5      KEY_F(35)
  755. #define KEY_A_F6      KEY_F(36)
  756. #define KEY_A_F7      KEY_F(37)
  757. #define KEY_A_F8      KEY_F(38)
  758. #define KEY_A_F9      KEY_F(39)
  759. #define KEY_A_F10     KEY_F(40)
  760. #define KEY_A_F11     KEY_F(47)
  761. #define KEY_A_F12     KEY_F(48)
  762. #define KEY_A_HOME    ALT_HOME
  763. #define KEY_A_PGUP    ALT_PGUP
  764. #define KEY_A_PGDN    ALT_PGDN
  765. #define KEY_A_CURU    ALT_UP
  766. #define KEY_A_CURD    ALT_DOWN
  767. #define KEY_A_CURL    ALT_LEFT
  768. #define KEY_A_CURR    ALT_RIGHT
  769. #define KEY_A_END     ALT_END
  770. #define KEY_A_INS     ALT_INS
  771. #define KEY_A_DEL     ALT_DEL
  772. #define KEY_A_NUMPLUS ALT_PADPLUS
  773. #define KEY_A_NUMMINUS ALT_PADMINUS
  774. #define KEY_A_NUMSLASH ALT_PADSLASH
  775. #define KEY_A_NUMSTAR      ALT_PADSTAR
  776. #define KEY_A_NUMENTER     ALT_PADENTER
  777. #endif
  778. /* special definition for UNIX systems */
  779. #ifndef KEY_RETURN
  780. #define KEY_RETURN 0xd
  781. #endif
  782.