home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / mod201j.zip / modula2.exe / os2api / kbd.def < prev    next >
Text File  |  1995-01-21  |  8KB  |  288 lines

  1. DEFINITION MODULE KBD;
  2.  
  3. (*************************************************************************
  4.   OS/2 2.x or 3.0  Keyboard Kernel API.
  5.  
  6.   (c) 1995 by Juergen Neuhoff
  7. **************************************************************************)
  8.  
  9. (*$XL+    Modula-2 language extensions: '_' allowed for symbol names     *)
  10. (*$A2     word alignment for record fields >= 2 bytes                    *)
  11. (*$API16+ 32 to 16 bit thunking for API functions                        *)
  12.  
  13. TYPE
  14.   HKBD                 = CARDINAL;
  15.   PHKBD                = POINTER TO HKBD;
  16.   APIRET16             = CARDINAL;
  17.   TYPEPREFIX           = BOOLEAN;
  18.  
  19. PROCEDURE KbdRegister
  20. (
  21.   ModName      : ARRAY OF CHAR;
  22.   EntryPt      : ARRAY OF CHAR;
  23.   FunMask      : LONGCARD
  24. )              : APIRET16;
  25.  
  26. CONST
  27.   KR_KBDCHARIN               = 00000001H;
  28.   KR_KBDPEEK                 = 00000002H;
  29.   KR_KBDFLUSHBUFFER          = 00000004H;
  30.   KR_KBDGETSTATUS            = 00000008H;
  31.   KR_KBDSETSTATUS            = 00000010H;
  32.   KR_KBDSTRINGIN             = 00000020H;
  33.   KR_KBDOPEN                 = 00000040H;
  34.   KR_KBDCLOSE                = 00000080H;
  35.   KR_KBDGETFOCUS             = 00000100H;
  36.   KR_KBDFREEFOCUS            = 00000200H;
  37.   KR_KBDGETCP                = 00000400H;
  38.   KR_KBDSETCP                = 00000800H;
  39.   KR_KBDXLATE                = 00001000H;
  40.   KR_KBDSETCUSTXT            = 00002000H;
  41.  
  42. CONST
  43.   IO_WAIT                    = 0;
  44.   IO_NOWAIT                  = 1;
  45.  
  46. PROCEDURE KbdDeRegister( ) : APIRET16;
  47.  
  48.  
  49. TYPE (* KBDKEYINFO structure, for KbdCharIn and KbdPeek *)
  50.   KBDKEYINFO      = RECORD  (* kbci *)
  51.     CASE            : TYPEPREFIX OF
  52.     | FALSE         :
  53.       CharCode      : CHAR;
  54.       ScanCode      : SHORTCARD;
  55.       Status        : SHORTCARD;
  56.       NlsShift      : SHORTCARD;
  57.       State         : CARDINAL;
  58.       Time          : LONGCARD;
  59.     | TRUE          :
  60.       chChar        : CHAR;
  61.       chScan        : SHORTCARD;
  62.       fbStatus      : SHORTCARD;
  63.       bNlsShift     : SHORTCARD;
  64.       fsState       : CARDINAL;
  65.       time          : LONGCARD;
  66.     END;            END;
  67.   PKBDKEYINFO     = POINTER TO KBDKEYINFO;
  68.  
  69.  
  70. PROCEDURE KbdCharIn
  71. (
  72.   VAR KeyInfo      : KBDKEYINFO;
  73.   IOWait           : CARDINAL;
  74.   Handle           : HKBD
  75. )                  : APIRET16;
  76.  
  77. PROCEDURE KbdPeek
  78. (
  79.   VAR KeyInfo      : KBDKEYINFO;
  80.   Handle           : HKBD
  81. )                  : APIRET16;
  82.  
  83. TYPE (* structure for KbdStringIn() *)
  84.   STRINGINBUF     = RECORD (* kbsi *)
  85.     CASE            : TYPEPREFIX OF
  86.     | FALSE         :
  87.       BufferSize    : CARDINAL;
  88.       EditSize      : CARDINAL;
  89.     | TRUE          :
  90.       cb            : CARDINAL;
  91.       cchIn         : CARDINAL;
  92.     END;            END;
  93.   PSTRINGINBUF    = POINTER TO STRINGINBUF;
  94.  
  95. PROCEDURE KbdStringIn
  96. (
  97.   VAR Buffer     : ARRAY OF CHAR;
  98.   VAR Info       : STRINGINBUF;
  99.   Wait           : CARDINAL;
  100.   Handle         : HKBD
  101. )                : APIRET16;
  102.  
  103. PROCEDURE KbdFlushBuffer
  104. (
  105.   Handle       : HKBD
  106. )              : APIRET16;
  107.  
  108.  
  109. CONST (* KBDINFO.fsMask *)
  110.   KEYBOARD_ECHO_ON                = 0001H;
  111.   KEYBOARD_ECHO_OFF               = 0002H;
  112.   KEYBOARD_BINARY_MODE            = 0004H;
  113.   KEYBOARD_ASCII_MODE             = 0008H;
  114.   KEYBOARD_MODIFY_STATE           = 0010H;
  115.   KEYBOARD_MODIFY_INTERIM         = 0020H;
  116.   KEYBOARD_MODIFY_TURNAROUND      = 0040H;
  117.   KEYBOARD_2B_TURNAROUND          = 0080H;
  118.   KEYBOARD_SHIFT_REPORT           = 0100H;
  119.  
  120. CONST (* KBDINFO.fsState/KBDKEYINFO.fsState/KBDTRANS.fsState *)
  121.   KBDSTF_RIGHTSHIFT               = 0001H;
  122.   KBDSTF_LEFTSHIFT                = 0002H;
  123.   KBDSTF_CONTROL                  = 0004H;
  124.   KBDSTF_ALT                      = 0008H;
  125.   KBDSTF_SCROLLLOCK_ON            = 0010H;
  126.   KBDSTF_NUMLOCK_ON               = 0020H;
  127.   KBDSTF_CAPSLOCK_ON              = 0040H;
  128.   KBDSTF_INSERT_ON                = 0080H;
  129.   KBDSTF_LEFTCONTROL              = 0100H;
  130.   KBDSTF_LEFTALT                  = 0200H;
  131.   KBDSTF_RIGHTCONTROL             = 0400H;
  132.   KBDSTF_RIGHTALT                 = 0800H;
  133.   KBDSTF_SCROLLLOCK               = 1000H;
  134.   KBDSTF_NUMLOCK                  = 2000H;
  135.   KBDSTF_CAPSLOCK                 = 4000H;
  136.   KBDSTF_SYSREQ                   = 8000H;
  137.  
  138. TYPE (* KBDINFO structure, for KbdSet/GetStatus *)
  139.   KBDINFO         = RECORD (* kbst *)
  140.     CASE            : TYPEPREFIX OF
  141.     | FALSE         :
  142.       Size          : CARDINAL;
  143.       Mask          : CARDINAL;
  144.       TurnAround    : CARDINAL;
  145.       Interim       : CARDINAL;
  146.       State         : CARDINAL;
  147.     | TRUE          :
  148.       cb            : CARDINAL;
  149.       fsMask        : CARDINAL;
  150.       chTurnAround  : CARDINAL;
  151.       fsInterim     : CARDINAL;
  152.       fsState       : CARDINAL;
  153.     END;            END;
  154.   PKBDINFO        = POINTER TO KBDINFO;
  155.  
  156. PROCEDURE KbdSetStatus
  157. (
  158.   VAR KbdInfo : KBDINFO;
  159.   Handle      : HKBD
  160. )             : APIRET16;
  161.  
  162. PROCEDURE KbdGetStatus
  163. (
  164.   VAR KbdInfo : KBDINFO;
  165.   Handle      : HKBD
  166. )             : APIRET16;
  167.  
  168. PROCEDURE KbdSetCp
  169. (
  170.   Reserved        : CARDINAL;
  171.   CodePage        : CARDINAL;
  172.   Handle          : HKBD
  173. )                 : APIRET16;
  174.  
  175. PROCEDURE KbdGetCp
  176. (
  177.   Reserved        : CARDINAL;
  178.   VAR CodePage    : CARDINAL;
  179.   Handle          : HKBD
  180. )                 : APIRET16;
  181.  
  182. PROCEDURE KbdOpen
  183. (
  184.   VAR Handle      : HKBD
  185. )                 : APIRET16;
  186.  
  187. PROCEDURE KbdClose
  188. (
  189.   Handle          : HKBD
  190. )                 : APIRET16;
  191.  
  192. PROCEDURE KbdGetFocus
  193. (
  194.   Wait            : CARDINAL;
  195.   Handle          : HKBD
  196. )                 : APIRET16;
  197.  
  198. PROCEDURE KbdFreeFocus
  199. (
  200.   Handle          : HKBD
  201. )                 : APIRET16;
  202.  
  203. PROCEDURE KbdSynch
  204. (
  205.   Wait            : CARDINAL
  206. )                 : APIRET16;
  207.  
  208. PROCEDURE KbdSetFgnd
  209. ( )               : APIRET16;
  210.  
  211.  
  212. TYPE (* structure for KbdGetHWID() *)
  213.   KBDHWID         = RECORD (* kbhw *)
  214.     CASE            : TYPEPREFIX OF
  215.     | FALSE         :
  216.       Size          : CARDINAL;
  217.       KbdId         : CARDINAL;
  218.       Reserved1     : CARDINAL;
  219.       Reserved2     : CARDINAL;
  220.     | TRUE          :
  221.       cb            : CARDINAL;
  222.       idKbd         : CARDINAL;
  223.       usReserved1   : CARDINAL;
  224.       usReserved2   : CARDINAL;
  225.     END;            END;
  226.   PKBDHWID        = POINTER TO KBDHWID;
  227.  
  228. PROCEDURE KbdGetHWID
  229. (
  230.   VAR KeyboardId    : KBDHWID;
  231.   Handle            : HKBD
  232. )                   : APIRET16;
  233.  
  234. PROCEDURE KbdSetHWID
  235. (
  236.   VAR KeyboardId    : KBDHWID;
  237.   Handle            : HKBD
  238. )                   : APIRET16;
  239.  
  240. CONST (* KBDTRANS.fbStatus *)
  241.   KBDTRF_SHIFT_KEY_IN             = 01H;
  242.   KBDTRF_CONVERSION_REQUEST       = 20H;
  243.   KBDTRF_FINAL_CHAR_IN            = 40H;
  244.   KBDTRF_INTERIM_CHAR_IN          = 80H;
  245.  
  246. TYPE (* structure for KbdXlate() *)
  247.   KBDTRANS        = RECORD (* kbxl *)
  248.     CASE            : TYPEPREFIX OF
  249.     | FALSE         :
  250.       Char          : CHAR;
  251.       Scan          : SHORTCARD;
  252.       Status        : SHORTCARD;
  253.       NlsShift      : SHORTCARD;
  254.       State         : CARDINAL;
  255.       Time          : LONGCARD;
  256.       DD            : CARDINAL;
  257.       Xlate         : CARDINAL;
  258.       Shift         : CARDINAL;
  259.       Zero          : CARDINAL;
  260.     | TRUE          :
  261.       chChar        : CHAR;
  262.       chScan        : SHORTCARD;
  263.       fbStatus      : SHORTCARD;
  264.       bNlsShift     : SHORTCARD;
  265.       fsState       : CARDINAL;
  266.       time          : LONGCARD;
  267.       fsDD          : CARDINAL;
  268.       fsXlate       : CARDINAL;
  269.       fsShift       : CARDINAL;
  270.       sZero         : CARDINAL;
  271.     END;            END;
  272.   PKBDTRANS       = POINTER TO KBDTRANS;
  273.  
  274. PROCEDURE KbdXlate
  275. (
  276.   VAR Translation : KBDTRANS;
  277.   Handle          : HKBD
  278. )                 : APIRET16;
  279.  
  280. PROCEDURE KbdSetCustXt
  281. (
  282.   VAR CodePage    : CARDINAL;
  283.   Handle          : HKBD
  284. )                 : APIRET16;
  285.  
  286.  
  287. END KBD.
  288.