home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / misc / volume34 / vms_rtl_kbd / part01 / kbd_.ada < prev    next >
Encoding:
Text File  |  1992-12-19  |  7.2 KB  |  276 lines

  1.  
  2. ------------------ Distribution and Copyright -----------------
  3. --
  4. -- This software is copyright by the CENA/DGAC/FRANCE
  5. -- All rights reserved.
  6. --
  7. -- No part of the material protected by this copyright notice
  8. -- may be reproduced or utilized for commercial use in any form
  9. -- without written permission of the copyright owner.
  10. --
  11. -- It may be reproduced or utilized for R&D use in Non Profit
  12. -- Organization
  13. --
  14. ---------------------------------------------------------------
  15.  
  16.  
  17. ------------------ Disclaimer ---------------------------------
  18. --
  19. -- This software and its documentation are provided "AS IS" and
  20. -- without any expressed or implied warranties whatsoever.
  21. -- No warranties as to performance, merchantability, or fitness
  22. -- for a particular purpose exist.
  23. --
  24. -- Because of the diversity of conditions and hardware under
  25. -- which this software may be used, no warranty of fitness for
  26. -- a particular purpose is offered.  The user is advised to
  27. -- test the software thoroughly before relying on it.  The user
  28. -- must assume the entire risk and liability of using this
  29. -- software.
  30. --
  31. -- In no event shall any person or organization of people be
  32. -- held responsible for any direct, indirect, consequential
  33. -- or inconsequential damages or lost profits.
  34. --                                                           
  35. -------------------END-PROLOGUE--------------------------------
  36.  
  37.  
  38.  
  39.  
  40. --*****************************************************************************
  41. --*****************************************************************************
  42. --**                                         **
  43. --**               D E M O   D E S   R O U T I N E S   K B D $               **
  44. --**                                         **
  45. --******** Copyright (C) 1992 Centre d'Etudes de la Navigation Aerienne *******
  46. --*****************************************************************************
  47.  
  48.  
  49.  
  50.  
  51. -- ++
  52. --
  53. -- Titre:       Paquetage KBD
  54. --
  55. -- Sujet:       Declarations des routines KBD$xxx ("Keyboard Routines").
  56. --
  57. -- Version:       1.0
  58. --
  59. -- Description:           Ce paquetage contient la declaration de la procedure
  60. --                 READ_KEYSTROKE permettant d'attendre une action au clavier
  61. --           et renvoyant la sequence ANSI correspondant a la touche
  62. --           actionnee.
  63. --
  64. --                     Pour utiliser READ_KEYSTROKE, il necessaire d'appeler au
  65. --           prealable la procedure OPEN_KEYBOARD et de terminer par
  66. --           CLOSE_KEYBOARD.
  67. --                 La routine OPEN_KEYBOARD permet, entre autres, de ne creer
  68. --           le tampon clavier que si l'on desire reellement utiliser
  69. --           READ_KEYSTROKE.
  70. --
  71. --                     Lorsque le tampon est plein, l'utilisateur est prevenu
  72. --                 par un beep sonore.
  73. --
  74. --               La procedure FLUSH_KEYBOARD permet de vider le tampon
  75. --           clavier.
  76. --
  77. --                    Afin de pouvoir recuperer les codes emis par CTRL/C,
  78. --                 CTRL/O, CTRL/Q, CTRL/S, CTRL/T, CTRL/X, CTRL/Y et F6, il est
  79. --                 necessaire d'entrer la commande DCL "SET TERMINAL/PASTHRU
  80. --                 /NOTTSYNC".
  81. --
  82. -- Langage:       ADA
  83. --
  84. -- Fichier:       KBD_.ADA
  85. --
  86. -- Paquetage:       KBD
  87. --
  88. -- Environnement:  Machine cible:          VAX
  89. --           Systeme d'exploitation: VAX/VMS Version 5.4
  90. --           Compilateur:            VAX Ada Version 2.1-28
  91. --
  92. -- Auteur:       Martin VICENTE (DGAC/CENA/SID)
  93. --
  94. --           E-mail: vicente@cenaath.cena.dgac.fr
  95. --
  96. --           Mail:   C.E.N.A.
  97. --               Div. Support Informatique & Developpement
  98. --               Orly Sud 205
  99. --               94 542 ORLY AEROGARE CEDEX, FRANCE
  100. --
  101. -- Creation:       19/05/92
  102. --
  103. -- Modification:   26/05/92
  104. --
  105. -- --
  106.  
  107.  
  108.  
  109.  
  110. with CONDITION_HANDLING;
  111. with SYSTEM;
  112.  
  113.  
  114. use CONDITION_HANDLING;
  115. use SYSTEM;
  116.  
  117.  
  118.  
  119.  
  120. package KBD is
  121.  
  122.  
  123.  
  124.  
  125. -- ============================================================================
  126. --  TYPE
  127. -- ============================================================================
  128.  
  129.  
  130.     type T_ESCAPE_OVERFLOW_BUFFER is array (1..4) of character;
  131.  
  132.     type T_ANSI_SEQUENCE is record
  133.         ASCII         : character;
  134.         ESCOVERBUFFER : T_ESCAPE_OVERFLOW_BUFFER;
  135.     end record;
  136.  
  137.  
  138.  
  139.  
  140. -- ****************************************************************************
  141. -- ****************************************************************************
  142. -- **                        KBD$ ROUTINE DECLARATION                        **
  143. -- ****************************************************************************
  144. -- ****************************************************************************
  145.  
  146.  
  147.  
  148.  
  149. --
  150. -- KBD$CLOSE_KEYBOARD
  151. --
  152. --   Libere la memoire des structures de donnees associees a ce module.
  153. --
  154.  
  155.     procedure CLOSE_KEYBOARD (COND_VALUE : out COND_VALUE_TYPE);
  156.  
  157.  
  158. --
  159. -- KBD$CVT_ANSI_SMG
  160. --
  161. --   Convertit la sequence ANSI d'une touche en un code SMG.
  162. --
  163. --   Liste des codes pouvant etre renvoyes (ils sont definis dans le paquetage
  164. --   SMG):
  165. --
  166. --    ascii (0 - 255)        K_TRM_UP        K_TRM_DOWN
  167. --    K_TRM_RIGHT        K_TRM_LEFT        K_TRM_ENTER
  168. --    K_TRM_PF1        K_TRM_PF2        K_TRM_PF3
  169. --    K_TRM_PF4        K_TRM_COMMA        K_TRM_MINUS
  170. --    K_TRM_PERIOD        K_TRM_KP0        K_TRM_KP1
  171. --    K_TRM_KP2        K_TRM_KP3        K_TRM_KP4
  172. --    K_TRM_KP5        K_TRM_KP6        K_TRM_KP7
  173. --    K_TRM_KP8        K_TRM_KP9        K_TRM_FIND
  174. --    K_TRM_INSERT_HERE    K_TRM_REMOVE        K_TRM_SELECT
  175. --    K_TRM_PREV_SCREEN    K_TRM_NEXT_SCREEN    K_TRM_F6
  176. --    K_TRM_F7        K_TRM_F8        K_TRM_F9
  177. --    K_TRM_F10        K_TRM_F11        K_TRM_F12
  178. --    K_TRM_F13        K_TRM_F14        K_TRM_HELP
  179. --    K_TRM_DO        K_TRM_F17        K_TRM_F18
  180. --    K_TRM_F19        K_TRM_F20        K_TRM_UP
  181. --    K_TRM_DOWN        K_TRM_RIGHT        K_TRM_LEFT
  182. --    K_TRM_UNKNOWN
  183. --
  184.  
  185.     procedure CVT_ANSI_SMG (
  186.         SMG_CODE : out UNSIGNED_WORD;
  187.     SEQUENCE : in  T_ANSI_SEQUENCE );
  188.  
  189.  
  190. --
  191. -- KBD$FLUSH_KEYBOARD
  192. --
  193. --   Vide le tampon clavier.
  194. --
  195.  
  196.     procedure FLUSH_KEYBOARD (COND_VALUE : out COND_VALUE_TYPE);
  197.  
  198.  
  199. --
  200. -- KBD$KEY_PRESSED
  201. --
  202. --   Indique si au moins une touche est presente dans le tampon.
  203. --
  204.  
  205.     procedure KEY_PRESSED (
  206.         COND_VALUE : out COND_VALUE_TYPE;
  207.     YES        : out BOOLEAN );
  208.  
  209.  
  210. --
  211. -- KBD$OPEN_KEYBOARD
  212. --
  213. --   Creation et initialisation des structures de donnees associees au module.
  214. --
  215.  
  216.     procedure OPEN_KEYBOARD (COND_VALUE : out COND_VALUE_TYPE);
  217.  
  218.  
  219. --
  220. -- KBD$READ_KEYSTROKE
  221. --
  222. --   Extrait la touche suivante du tampon; si ce dernier est vide, se met en
  223. --   attente d'une action au clavier.
  224. --
  225.  
  226.     procedure READ_KEYSTROKE (
  227.         COND_VALUE : out    COND_VALUE_TYPE;
  228.         KEY        : in out T_ANSI_SEQUENCE );
  229.  
  230.  
  231.  
  232.  
  233. -- ****************************************************************************
  234.  
  235.  
  236. private
  237.  
  238.  
  239.     pragma INTERFACE (external, CLOSE_KEYBOARD);
  240.  
  241.     pragma IMPORT_VALUED_PROCEDURE ( CLOSE_KEYBOARD, "KBD$CLOSE_KEYBOARD",
  242.         (COND_VALUE_TYPE) );
  243.  
  244.  
  245.     pragma INTERFACE (external, CVT_ANSI_SMG);
  246.  
  247.     pragma IMPORT_VALUED_PROCEDURE ( CVT_ANSI_SMG, "KBD$CVT_ANSI_SMG",
  248.         (UNSIGNED_WORD, T_ANSI_SEQUENCE) );
  249.  
  250.  
  251.     pragma INTERFACE (external, FLUSH_KEYBOARD);
  252.  
  253.     pragma IMPORT_VALUED_PROCEDURE ( FLUSH_KEYBOARD, "KBD$FLUSH_KEYBOARD",
  254.         (COND_VALUE_TYPE) );
  255.  
  256.  
  257.     pragma INTERFACE (external, KEY_PRESSED);
  258.  
  259.     pragma IMPORT_VALUED_PROCEDURE ( KEY_PRESSED, "KBD$KEY_PRESSED",
  260.         (cond_value_type, BOOLEAN) );
  261.  
  262.  
  263.     pragma INTERFACE (external, OPEN_KEYBOARD);
  264.  
  265.     pragma IMPORT_VALUED_PROCEDURE ( OPEN_KEYBOARD, "KBD$OPEN_KEYBOARD",
  266.         (COND_VALUE_TYPE) );
  267.  
  268.  
  269.     pragma INTERFACE (external, READ_KEYSTROKE);
  270.  
  271.     pragma IMPORT_VALUED_PROCEDURE ( READ_KEYSTROKE, "KBD$READ_KEYSTROKE",
  272.         (COND_VALUE_TYPE, T_ANSI_SEQUENCE) );
  273.  
  274.  
  275. end KBD;
  276.