home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #19 / NN_1992_19.iso / spool / comp / os / msdos / programm / 9028 < prev    next >
Encoding:
Text File  |  1992-09-03  |  6.2 KB  |  225 lines

  1. Path: sparky!uunet!psgrain!hippo!nuustak!csir.co.za!olsa99!unisup1!parst1!roelof.paradigm.CO.ZA!rvs
  2. From: rvs@parst1.UUCP (Roelof van Suilichem)
  3. Newsgroups: comp.os.msdos.programmer
  4. Subject: Re: Reading ALT keys with bioskey in TC++?
  5. Message-ID: <rvs.41@parst1.UUCP>
  6. Date: 3 Sep 92 17:19:44 GMT
  7. References: <1992Aug25.184207.7825@lclark.edu>
  8. Sender: news@parst1.paradigm.CO.ZA (Usenet Owner)
  9. Organization: Paradigm Systems Technology
  10. Lines: 213
  11.  
  12. In article <1992Aug25.184207.7825@lclark.edu> harrison@sun.lclark.edu (Mark Harrison) writes:
  13.  
  14. >Hi.  I am reading ALT+<key> from the keyboard with bioskey (in TC++ 3.0.)
  15. >But that gives me values that map to the physical layout of the keyboard. 
  16. >Is there an easy way to translate this value into one that will tell me
  17. >the Ascii code of the key?  For instance, how do I transform 0x3100
  18. >(ALT+N) to get the ascii code of N?  Will I need to write a function that
  19. >will do this for all the ALT values I want to check for?  If so, then no
  20. >problem.  I just don't want to reinvent any wheels.
  21.  
  22. OK, here is my invented wheel.  Might save you some typing.
  23. Use as you want, at your own risk.  If you are going to use it
  24. just Email me so I get some satisfaction of knowing that somebody
  25. is actually using it.
  26.  
  27. Search for the scissors ("8<") to fund the cutoff points for the files.
  28.  
  29.  
  30. ---8<------------------------------KBD.H-------------------------------
  31. #ifndef KBD_H
  32. #define KBD_H
  33. #define KEY  0
  34. #define CTRL 1
  35. #define ALT  2
  36. #define EscKey        27
  37. #define BsKey          8
  38. #define CrKey         13
  39. #define CtrlCrKey     10
  40. #define TabKey         9
  41. #define ShiftTabKey  271
  42. #define LeftKey      331
  43. #define RightKey     333
  44. #define DownKey      336
  45. #define UpKey        328
  46. #define HomeKey      327
  47. #define EndKey       335
  48. #define PgupKey      329
  49. #define PgdnKey      337
  50. #define InsKey       338
  51. #define DelKey       339
  52. #define CtrlLeftKey  371
  53. #define CtrlRightKey 372
  54. #define CtrlHomeKey  375
  55. #define CtrlEndKey   373
  56. #define CtrlPgupKey  388
  57. #define CtrlPgdnKey  374
  58. #define F1Key        315
  59. #define F2Key        316
  60. #define F3Key        317
  61. #define F4Key        318
  62. #define F5Key        319
  63. #define F6Key        320
  64. #define F7Key        321
  65. #define F8Key        322
  66. #define F9Key        323
  67. #define F10Key       324
  68. #define ShiftF1Key   340
  69. #define ShiftF2Key   341
  70. #define ShiftF3Key   342
  71. #define ShiftF4Key   343
  72. #define ShiftF5Key   344
  73. #define ShiftF6Key   345
  74. #define ShiftF7Key   346
  75. #define ShiftF8Key   347
  76. #define ShiftF9Key   348
  77. #define ShiftF10Key  349
  78. #define CtrlF1Key    350
  79. #define CtrlF2Key    351
  80. #define CtrlF3Key    352
  81. #define CtrlF4Key    353
  82. #define CtrlF5Key    354
  83. #define CtrlF6Key    355
  84. #define CtrlF7Key    356
  85. #define CtrlF8Key    357
  86. #define CtrlF9Key    358
  87. #define CtrlF10Key   359
  88. #define AltF1Key     360
  89. #define AltF2Key     361
  90. #define AltF3Key     362
  91. #define AltF4Key     363
  92. #define AltF5Key     364
  93. #define AltF6Key     365
  94. #define AltF7Key     366
  95. #define AltF8Key     367
  96. #define AltF9Key     368
  97. #define AltF10Key    369
  98. #define CtrlAKey       1
  99. #define CtrlBKey       2
  100. #define CtrlCKey       3
  101. #define CtrlDKey       4
  102. #define CtrlEKey       5
  103. #define CtrlFKey       6
  104. #define CtrlGKey       7
  105. #define CtrlHKey       8
  106. #define CtrlIKey       9
  107. #define CtrlJKey      10
  108. #define CtrlKKey      11
  109. #define CtrlLKey      12
  110. #define CtrlMKey      13
  111. #define CtrlNKey      14
  112. #define CtrlOKey      15
  113. #define CtrlPKey      16
  114. #define CtrlQKey      17
  115. #define CtrlRKey      18
  116. #define CtrlSKey      19
  117. #define CtrlTKey      20
  118. #define CtrlUKey      21
  119. #define CtrlVKey      22
  120. #define CtrlWKey      23
  121. #define CtrlXKey      24
  122. #define CtrlYKey      25
  123. #define CtrlZKey      26
  124. #define AltQKey      272
  125. #define AltWKey      273
  126. #define AltEKey      274
  127. #define AltRKey      275
  128. #define AltTKey      276
  129. #define AltYKey      277
  130. #define AltUKey      278
  131. #define AltIKey      279
  132. #define AltOKey      280
  133. #define AltPKey      281
  134. #define AltAKey      286
  135. #define AltSKey      287
  136. #define AltDKey      288
  137. #define AltFKey      289
  138. #define AltGKey      290
  139. #define AltHKey      291
  140. #define AltJKey      292
  141. #define AltKKey      293
  142. #define AltLKey      294
  143. #define AltZKey      300
  144. #define AltXKey      301
  145. #define AltCKey      302
  146. #define AltVKey      303
  147. #define AltBKey      304
  148. #define AltNKey      305
  149. #define AltMKey      306
  150. Public int kbdPressed (void);
  151. Public int kbdGet (void);
  152. Public int kbdTx (int key, int from, int to);
  153. #endif
  154. ---------8<------KBD.C--------------------------------------------
  155. #include <bios.h>
  156. #include <conio.h>
  157. #include <dos.h>
  158. #include "mydefs.h"  /* #define Public and Private; compiler flags, etc */
  159. #include "kbd.h"
  160. Private int chartable [][3] =
  161.     {
  162.     {'Q',CtrlQKey,AltQKey},
  163.     {'W', CtrlWKey, AltWKey},
  164.     {'E', CtrlEKey, AltEKey},
  165.     {'R', CtrlRKey, AltRKey},
  166.     {'T', CtrlTKey, AltTKey},
  167.     {'Y', CtrlYKey, AltYKey},
  168.     {'U', CtrlUKey, AltUKey},
  169.     {'I', CtrlIKey, AltIKey},
  170.     {'O', CtrlOKey, AltOKey},
  171.     {'P', CtrlPKey, AltPKey},
  172.     {'A', CtrlAKey, AltAKey},
  173.     {'S', CtrlSKey, AltSKey},
  174.     {'D', CtrlDKey, AltDKey},
  175.     {'F', CtrlFKey, AltFKey},
  176.     {'G', CtrlGKey, AltGKey},
  177.     {'H', CtrlHKey, AltHKey},
  178.     {'J', CtrlJKey, AltJKey},
  179.     {'K', CtrlKKey, AltKKey},
  180.     {'L', CtrlLKey, AltLKey},
  181.     {'Z', CtrlZKey, AltZKey},
  182.     {'X', CtrlXKey, AltXKey},
  183.     {'C', CtrlCKey, AltCKey},
  184.     {'V', CtrlVKey, AltVKey},
  185.     {'B', CtrlBKey, AltBKey},
  186.     {'N', CtrlNKey, AltNKey},
  187.     {'M', CtrlMKey, AltMKey}
  188.     };
  189. Public int kbdPressed (void)
  190.     {
  191.     return bioskey(1);
  192.     }
  193. Public int kbdGet (void)
  194.     {
  195.     int c;
  196.     c = (int) getch();
  197.     if (!c)
  198.         {
  199.         c = getch();
  200.         c += 256;
  201.         }
  202.     return c;
  203.     }
  204. Public int kbdTx (int key, int from, int to)
  205.     {
  206.     unsigned char i;
  207.     if (from<KEY || from>ALT || to<KEY || to>ALT)
  208.         return -1;
  209.     for (i=0;i<26;i++)
  210.         if (chartable[i][from]==key)
  211.             return chartable[i][to];
  212.     return -1;
  213.     }
  214. ---8<----------------------------------------------------------
  215.  
  216. Hope this helps.
  217.  
  218. /*------------------------------------------------*\
  219. | Roelof J. van Suilichem | Email: rvs@parst1.uucp |
  220. |-------------------------| Snail: P. O. Box 75026 |
  221. |                         |        Lynnwood Ridge  |
  222. |                         |        0040            |
  223. |                         |        South Africa    |
  224. \*------------------------------------------------*/
  225.