home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: Graphics / Graphics.zip / os2apipm.zip / OS2API / OS2-KBD.ADS < prev    next >
Text File  |  1996-08-10  |  8KB  |  205 lines

  1.  
  2. -- ╔═══════════════════════════════════════════════════════════════════╗
  3. -- ║       D E S I G N   E N G I N E R I N G              ║D║S║        ║
  4. -- ║            S O F T W A R E                           ╚═╩═╝        ║
  5. -- ║                                                                   ║
  6. -- ║        Package     OS2.KBD                                        ║
  7. -- ║                                                                   ║
  8. -- ║        Author :  Leonid Dulman     1995                           ║
  9. -- ║                                                                   ║
  10. -- ║             GNU ADA RUNTIME LIBRARY (GNARL) COMPONENTS            ║
  11. -- ║                                                                   ║
  12. -- ║               Kbd     support    of os/2 api functions            ║
  13. -- ║                                                                   ║
  14. -- ╚═══════════════════════════════════════════════════════════════════╝
  15.  
  16.  
  17. with Interfaces.C;         use Interfaces.C;
  18. with Interfaces.C.Strings; use Interfaces.C.Strings;
  19.  
  20. package Os2.Kbd  is
  21. pragma Preelaborate (Kbd);
  22.  
  23.  
  24.    subtype HKBD is ushort;
  25.    type PHKBD is access all  HKBD;
  26.  
  27. function KbdRegister (pszModName:PSZ; pszEntryPt:PSZ ;
  28.                       FunMask:ULONG ) return apiret16;
  29. pragma Import(c,KbdRegister, Link_name=>"_KbdRegister");
  30.  
  31.  
  32.  IO_WAIT   :constant ushort := 0 ;
  33.  IO_NOWAIT :constant ushort := 1 ;
  34.  
  35. function  KbdDeRegister return apiret16;
  36. pragma Import(c,KbdDeRegister, Link_name=>"_KbdDeRegister");
  37.  
  38.  --   KBDKEYINFO structure, for KbdCharIn and KbdPeek
  39.    type KBDKEYINFO is record    --  kbci
  40.     chChar    : UCHAR   ;
  41.     chScan    : UCHAR   ;
  42.     fbStatus  : UCHAR   ;
  43.     bNlsShift : UCHAR   ;
  44.     fsState   : USHORT  ;
  45.     time      : ULONG   ;
  46.    end record;
  47.    type   PKBDKEYINFO is access all KBDKEYINFO;
  48.  
  49. function KbdCharIn(pkbci:PKBDKEYINFO; fWait:USHORT ;
  50.                     kbd: HKBD)   return apiret16;
  51. pragma Import(c,KbdCharIn, Link_name=>"_KbdCharIn");
  52.  
  53. function KbdPeek (pkbci:PKBDKEYINFO;hkb:HKBD)return apiret16;
  54. pragma Import(c,KbdPeek, Link_name=>"_KbdPeek");
  55.  
  56. --    structure for KbdStringIn()
  57.  type STRINGINBUF is record --  kbsi
  58.     cb    : USHORT;
  59.     cchIn : USHORT;
  60.  end record;
  61.  type PSTRINGINBUF is access all STRINGINBUF;
  62.  
  63.  function  KbdStringIn (s: PCH ; pchIn :  PSTRINGINBUF ;
  64.                         fsWait:  USHORT ; hkb  : HKBD  )return apiret16;
  65. pragma Import(c,KbdStringIn, Link_name=>"_KbdStringIn");
  66.  
  67. function KbdFlushBuffer (hkb: HKBD) return apiret16;
  68. pragma Import(c,KbdFlushBuffer, Link_name=>"_KbdFlushBuffer");
  69.  
  70.  
  71. --       KBDINFO.fsMask
  72.   KEYBOARD_ECHO_ON                :constant ushort :=16#0001#;
  73.   KEYBOARD_ECHO_OFF               :constant ushort :=16#0002#;
  74.   KEYBOARD_BINARY_MODE            :constant ushort :=16#0004#;
  75.   KEYBOARD_ASCII_MODE             :constant ushort :=16#0008#;
  76.   KEYBOARD_MODIFY_STATE           :constant ushort :=16#0010#;
  77.   KEYBOARD_MODIFY_INTERIM         :constant ushort :=16#0020#;
  78.   KEYBOARD_MODIFY_TURNAROUND      :constant ushort :=16#0040#;
  79.   KEYBOARD_2B_TURNAROUND          :constant ushort :=16#0080#;
  80.   KEYBOARD_SHIFT_REPORT           :constant ushort :=16#0100#;
  81.  
  82.  
  83.  --     following constants defined in bsedev.h
  84.  --     KBDINFO.fsState/KBDKEYINFO.fsState/KBDTRANS.fsState
  85.  
  86.   KBDSTF_RIGHTSHIFT               :constant ushort :=16#0001#;
  87.   KBDSTF_LEFTSHIFT                :constant ushort :=16#0002#;
  88.   KBDSTF_CONTROL                  :constant ushort :=16#0004#;
  89.   KBDSTF_ALT                      :constant ushort :=16#0008#;
  90.   KBDSTF_SCROLLLOCK_ON            :constant ushort :=16#0010#;
  91.   KBDSTF_NUMLOCK_ON               :constant ushort :=16#0020#;
  92.   KBDSTF_CAPSLOCK_ON              :constant ushort :=16#0040#;
  93.   KBDSTF_INSERT_ON                :constant ushort :=16#0080#;
  94.   KBDSTF_LEFTCONTROL              :constant ushort :=16#0100#;
  95.   KBDSTF_LEFTALT                  :constant ushort :=16#0200#;
  96.   KBDSTF_RIGHTCONTROL             :constant ushort :=16#0400#;
  97.   KBDSTF_RIGHTALT                 :constant ushort :=16#0800#;
  98.   KBDSTF_SCROLLLOCK               :constant ushort :=16#1000#;
  99.   KBDSTF_NUMLOCK                  :constant ushort :=16#2000#;
  100.   KBDSTF_CAPSLOCK                 :constant ushort :=16#4000#;
  101.   KBDSTF_SYSREQ                   :constant ushort :=16#8000#;
  102.  
  103.    -- KBDINFO structure, for KbdSet/GetStatus
  104.    type  KBDINFO is record --           kbst
  105.       cb          :USHORT  ;
  106.       fsMask      :USHORT  ;
  107.       chTurnAround:USHORT  ;
  108.       fsInterim   :USHORT  ;
  109.       fsState     :USHORT  ;
  110.    end record;
  111.    type PKBDINFO is access all KBDINFO;
  112.  
  113. function  KbdSetStatus (pkbdinf :PKBDINFO;hkb :HKBD)return apiret16;
  114. pragma Import(c,KbdSetStatus, Link_name=>"_KbdSetStatus");
  115.  
  116. function KbdGetStatus(pkbdinf :PKBDINFO;hkb :HKBD)return apiret16;
  117. pragma Import(c,KbdGetStatus, Link_name=>"_KbdGetStatus");
  118.  
  119. function KbdSetCp (usReserved:USHORT;pidCP:USHORT;
  120.                    hdb :HKBD) return apiret16;
  121. pragma Import(c,KbdSetCp, Link_name=>"_KbdSetCp");
  122.  
  123. function KbdGetCp (ulReserved:ULONG;pidCP :PUSHORT;
  124.                    hkb:HKBD) return apiret16;
  125. pragma Import(c,KbdGetCp, Link_name=>"_KbdGetCp");
  126.  
  127. function KbdOpen (ph:PHKBD) return apiret16;
  128. pragma Import(c,KbdOpen, Link_name=>"_KbdOpen");
  129.  
  130. function KbdClose (hkb:HKBD) return apiret16;
  131. pragma Import(c,KbdClose, Link_name=>"_KbdClose");
  132.  
  133. function KbdGetFocus (fWait:USHORT; hkb:HKBD) return apiret16;
  134. pragma Import(c,KbdGetFocus, Link_name=>"_KbdGetFocus");
  135.  
  136. function KbdFreeFocus(hkb:HKBD)return apiret16;
  137. pragma Import(c,KbdFreeFocus, Link_name=>"_KbdFreeFocus");
  138.  
  139. function KbdSynch (fsWait:USHORT) return apiret16;
  140. pragma Import(c,KbdSynch, Link_name=>"_KbdSynch");
  141.  
  142. function KbdSetFgnd return apiret16;
  143. pragma Import(c,KbdSetFgnd, Link_name=>"_KbdSetFgnd");
  144.  
  145.  --   structure for KbdGetHWID()
  146. type  KBDHWID is record   --   kbhw
  147.       cb         :USHORT ;
  148.       idKbd      :USHORT ;
  149.       usReserved1:USHORT ;
  150.       usReserved2:USHORT ;
  151. end record;
  152. type PKBDHWID is access all KBDHWID;
  153.  
  154. function KbdGetHWID (phwid:PKBDHWID;hkb:HKBD)  return apiret16;
  155. pragma Import(c,KbdGetHWID, Link_name=>"_KbdGetHWID");
  156.  
  157. function KbdSetHWID (phwid:PKBDHWID;hkb:HKBD)  return apiret16;
  158. pragma Import(c,KbdSetHWID, Link_name=>"_KbdSetHWID");
  159.  
  160.  
  161. --   KBDTRANS.fbStatus
  162.   KBDTRF_SHIFT_KEY_IN             :constant ushort :=16#01#;
  163.   KBDTRF_CONVERSION_REQUEST       :constant ushort :=16#20#;
  164.   KBDTRF_FINAL_CHAR_IN            :constant ushort :=16#40#;
  165.   KBDTRF_INTERIM_CHAR_IN          :constant ushort :=16#80#;
  166.  
  167.   --  structure for KbdXlate()
  168. type KBDTRANS is record  -- kbxl
  169.     chChar     :UCHAR      ;
  170.     chScan     :UCHAR      ;
  171.     fbStatus   :UCHAR      ;
  172.     bNlsShift  :UCHAR      ;
  173.     fsState    :USHORT     ;
  174.     time       :ULONG      ;
  175.     fsDD       :USHORT     ;
  176.     fsXlate    :USHORT     ;
  177.     fsShift    :USHORT     ;
  178.     sZero      :USHORT     ;
  179.  end record;
  180.  type PKBDTRANS is access all KBDTRANS;
  181.  
  182. function KbdXlate (pkbdtr:PKBDTRANS;hkb:HKBD) return apiret16;
  183. pragma Import(c,KbdXlate, Link_name=>"_KbdXlate");
  184.  
  185. function KbdSetCustXt(usCodePage:PUSHORT;hkb:HKBD) return apiret16;
  186. pragma Import(c,KbdSetCustXt, Link_name=>"_KbdSetCustXt");
  187.  
  188.  
  189.   KR_KBDCHARIN               :constant ulong :=16#00000001#;
  190.   KR_KBDPEEK                 :constant ulong :=16#00000002#;
  191.   KR_KBDFLUSHBUFFER          :constant ulong :=16#00000004#;
  192.   KR_KBDGETSTATUS            :constant ulong :=16#00000008#;
  193.   KR_KBDSETSTATUS            :constant ulong :=16#00000010#;
  194.   KR_KBDSTRINGIN             :constant ulong :=16#00000020#;
  195.   KR_KBDOPEN                 :constant ulong :=16#00000040#;
  196.   KR_KBDCLOSE                :constant ulong :=16#00000080#;
  197.   KR_KBDGETFOCUS             :constant ulong :=16#00000100#;
  198.   KR_KBDFREEFOCUS            :constant ulong :=16#00000200#;
  199.   KR_KBDGETCP                :constant ulong :=16#00000400#;
  200.   KR_KBDSETCP                :constant ulong :=16#00000800#;
  201.   KR_KBDXLATE                :constant ulong :=16#00001000#;
  202.   KR_KBDSETCUSTXT            :constant ulong :=16#00002000#;
  203.  
  204. end Os2.Kbd ;
  205.