home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / mod201j.zip / modula2.exe / os2api / wininput.def < prev    next >
Text File  |  1994-05-03  |  10KB  |  306 lines

  1. DEFINITION MODULE WININPUT;
  2.  
  3. (************************************************************************
  4.   OS/2 2.1 interface for window mouse and keyboard input.
  5.  
  6.   Copyright (c) 1992,1994 by Juergen Neuhoff
  7. *************************************************************************)
  8.  
  9. (*$XL+       Modula-2 language extensions: '_' allowed for symbol names *)
  10. (*$CDECL+    C-style procedures                                         *)
  11. (*$A         default alignment for record fields                        *)
  12.  
  13. IMPORT SYSTEM;
  14. FROM   OS2DEF  IMPORT TYPEPREFIX, HWND, HAB;
  15.  
  16. PROCEDURE WinSetFocus
  17. ( DesktopWinHandle      : HWND;
  18.   NewFocusWinHandle     : HWND
  19. )                       : BOOLEAN;
  20.  
  21. PROCEDURE WinFocusChange
  22. ( DesktopWinHandle      : HWND;
  23.   NewFocusWinHandle     : HWND;
  24.   FocusChangeFlags      : LONGCARD
  25. )                       : BOOLEAN;
  26.  
  27. CONST (* WinFocusChange() flags *)
  28.   FC_NOSETFOCUS            = 0001H;
  29.   FC_NOBRINGTOTOP          = FC_NOSETFOCUS;
  30.   FC_NOLOSEFOCUS           = 0002H;
  31.   FC_NOBRINGTOPFIRSTWINDOW = FC_NOLOSEFOCUS;
  32.   FC_NOSETACTIVE           = 0004H;
  33.   FC_NOLOSEACTIVE          = 0008H;
  34.   FC_NOSETSELECTION        = 0010H;
  35.   FC_NOLOSESELECTION       = 0020H;
  36.  
  37. CONST
  38.   QFC_NEXTINCHAIN          = 0001H;
  39.   QFC_ACTIVE               = 0002H;
  40.   QFC_FRAME                = 0003H;
  41.   QFC_SELECTACTIVE         = 0004H;
  42.   QFC_PARTOFCHAIN          = 0005H;
  43.  
  44. PROCEDURE WinLockupSystem
  45. ( AnchorBlockHandle     : HAB
  46. )                       : BOOLEAN;
  47.  
  48. PROCEDURE WinUnlockSystem
  49. ( AnchorBlockHandle     : HAB;
  50.   Password              : ARRAY OF CHAR
  51. )                       : BOOLEAN;
  52.  
  53. PROCEDURE WinSetCapture
  54. ( DesktopWinHandle      : HWND;
  55.   WinHandle             : HWND
  56. )                       : BOOLEAN;
  57.  
  58. PROCEDURE WinQueryCapture
  59. ( DesktopWinHandle      : HWND
  60. )                       : HWND;
  61.  
  62. PROCEDURE WinCheckInput
  63. ( AnchorBlockHandle     : HAB
  64. )                       : BOOLEAN;
  65.  
  66. CONST (* Mouse input messages *)
  67.   WM_MOUSEFIRST         = 0070H;
  68.   WM_MOUSELAST          = 0079H;
  69.   WM_BUTTONCLICKFIRST   = 0071H;
  70.   WM_BUTTONCLICKLAST    = 0079H;
  71.   WM_MOUSEMOVE          = 0070H;
  72.   WM_BUTTON1DOWN        = 0071H;
  73.   WM_BUTTON1UP          = 0072H;
  74.   WM_BUTTON1DBLCLK      = 0073H;
  75.   WM_BUTTON2DOWN        = 0074H;
  76.   WM_BUTTON2UP          = 0075H;
  77.   WM_BUTTON2DBLCLK      = 0076H;
  78.   WM_BUTTON3DOWN        = 0077H;
  79.   WM_BUTTON3UP          = 0078H;
  80.   WM_BUTTON3DBLCLK      = 0079H;
  81.   WM_MOUSEMAP           = 007DH;
  82.   WM_EXTMOUSEFIRST      = 0410H;
  83.   WM_EXTMOUSELAST       = 0419H;
  84.   WM_CHORD              = 0410H;
  85.   WM_BUTTON1MOTIONSTART = 0411H;
  86.   WM_BUTTON1MOTIONEND   = 0412H;
  87.   WM_BUTTON1CLICK       = 0413H;
  88.   WM_BUTTON2MOTIONSTART = 0414H;
  89.   WM_BUTTON2MOTIONEND   = 0415H;
  90.   WM_BUTTON2CLICK       = 0416H;
  91.   WM_BUTTON3MOTIONSTART = 0417H;
  92.   WM_BUTTON3MOTIONEND   = 0418H;
  93.   WM_BUTTON3CLICK       = 0419H;
  94.   WM_MOUSETRANSLATEFIRST= 0420H; (* 041AH - 041FH are reserved *)
  95.   WM_MOUSETRANSLATELAST = 0428H;
  96.   WM_BEGINDRAG          = 0420H;
  97.   WM_ENDDRAG            = 0421H;
  98.   WM_SINGLESELECT       = 0422H;
  99.   WM_OPEN               = 0423H;
  100.   WM_CONTEXTMENU        = 0424H;
  101.   WM_CONTEXTHELP        = 0425H;
  102.   WM_TEXTEDIT           = 0426H;
  103.   WM_BEGINSELECT        = 0427H;
  104.   WM_ENDSELECT          = 0428H;
  105.  
  106. PROCEDURE WinQueryFocus
  107. ( DesktopWinHandle      : HWND
  108. )                       : HWND;
  109.  
  110. TYPE
  111.  (*
  112.   * The following structures can be used to access the
  113.   * WM_MOUSEMOVE, WM_BUTTON or WM_CHAR message parameters, e.g.:
  114.   *
  115.   *   PROCEDURE MyWindowProc
  116.   *   ( WinHandle:HWND; MsgId:LONGCARD; Param1,Param2:MPARAM ):MRESULT;
  117.   *   ...
  118.   *   VAR MouseMsg : POINTER TO MOUSEMSG;
  119.   *   VAR CharMsg  : POINTER TO CHARMSG;
  120.   *   ...
  121.   *   BEGIN
  122.   *     CASE MsgId OF
  123.   *       WM_MOUSEMOVE:
  124.   *       WM_BUTTON:
  125.   *         MouseMsg := SYSTEM.ADR( Param1 );
  126.   *         ...
  127.   *         RETURN ...;
  128.   *       WM_CHAR:
  129.   *         CharMsg := SYSTEM.ADR( Param1 );
  130.   *         ...
  131.   *         RETURN ...;
  132.   *       ELSE
  133.   *         RETURN WinDefWindowProc( WinHandle, MsgId, Param1, Param2 );
  134.   *     END;
  135.   *   END MyWindowProc;
  136.   *)
  137.   MOUSEMSG              = RECORD
  138.     x                     : INTEGER;   (* message parameter 1 *)
  139.     y                     : INTEGER;
  140.     CASE                  : TYPEPREFIX OF
  141.     | TRUE                :
  142.       codeHitTest         : CARDINAL;  (* message parameter 2 *)
  143.       fsInp               : CARDINAL;  (* input flags *)
  144.     | FALSE               :
  145.       HitTest             : CARDINAL;  (* message parameter 2 *)
  146.       InpFlags            : CARDINAL;  (* input flags *)
  147.     END;                  END;
  148.   PMOUSEMSG             = POINTER TO MOUSEMSG;
  149.   MSEMSG                = MOUSEMSG;
  150.   PMSEMSG               = POINTER TO MSEMSG;
  151.   (*$A1 BYTE alignment for record fields *)
  152.   CHARMSG               = RECORD
  153.     CASE                  : TYPEPREFIX OF
  154.     | TRUE                :
  155.       fs                  : CARDINAL;  (* message paramter 1 *)
  156.       cRepeat             : SHORTCARD;
  157.       scancode            : SHORTCARD;
  158.       chr                 : CARDINAL;  (* message paramter 2 *)
  159.       vkey                : CARDINAL;
  160.     | FALSE               :
  161.       Flag                : CARDINAL;  (* message paramter 1 *)
  162.       RepeatCount         : SHORTCARD;
  163.       ScanCode            : SHORTCARD;
  164.       CharCode            : CARDINAL;  (* message paramter 2 *)
  165.       VirtualKeyCode      : CARDINAL;
  166.     END;                  END;
  167.   (*$A restore default alignment for record fields *)
  168.   PCHARMSG              = POINTER TO CHARMSG;
  169.   CHRMSG                = CHARMSG;
  170.   PCHRMSG               = POINTER TO CHRMSG;
  171.  
  172. CONST (* Key/Character input messages *)
  173.   WM_CHAR               = 007AH;
  174.   WM_VIOCHAR            = 007BH;
  175.  
  176. CONST (* WM_CHAR CHARMSG.Flag bits *)
  177.   KC_NONE               = 0000H;   (* Reserved *)
  178.   KC_CHAR               = 0001H;
  179.   KC_VIRTUALKEY         = 0002H;
  180.   KC_SCANCODE           = 0004H;
  181.   KC_SHIFT              = 0008H;
  182.   KC_CTRL               = 0010H;
  183.   KC_ALT                = 0020H;
  184.   KC_KEYUP              = 0040H;
  185.   KC_PREVDOWN           = 0080H;
  186.   KC_LONEKEY            = 0100H;
  187.   KC_DEADKEY            = 0200H;
  188.   KC_COMPOSITE          = 0400H;
  189.   KC_INVALIDCOMP        = 0800H;
  190.   KC_TOGGLE             = 1000H;
  191.   KC_INVALIDCHAR        = 2000H;
  192.   KC_DBCSRSRVD1         = 4000H;
  193.   KC_DBCSRSRVD2         = 8000H;
  194.  
  195. CONST
  196.   INP_NONE              = 0000H;
  197.   INP_KBD               = 0001H;
  198.   INP_MULT              = 0002H;
  199.   INP_RES2              = 0004H;
  200.   INP_SHIFT             = 0008H;
  201.   INP_CTRL              = 0010H;
  202.   INP_ALT               = 0020H;
  203.   INP_RES3              = 0040H;
  204.   INP_RES4              = 0080H;
  205.   INP_IGNORE            = 0FFFFH;
  206.  
  207. CONST (* Virtual key values *)
  208.   VK_BUTTON1            = 01H;
  209.   VK_BUTTON2            = 02H;
  210.   VK_BUTTON3            = 03H;
  211.   VK_BREAK              = 04H;
  212.   VK_BACKSPACE          = 05H;
  213.   VK_TAB                = 06H;
  214.   VK_BACKTAB            = 07H;
  215.   VK_NEWLINE            = 08H;
  216.   VK_SHIFT              = 09H;
  217.   VK_CTRL               = 0AH;
  218.   VK_ALT                = 0BH;
  219.   VK_ALTGRAF            = 0CH;
  220.   VK_PAUSE              = 0DH;
  221.   VK_CAPSLOCK           = 0EH;
  222.   VK_ESC                = 0FH;
  223.   VK_SPACE              = 10H;
  224.   VK_PAGEUP             = 11H;
  225.   VK_PAGEDOWN           = 12H;
  226.   VK_END                = 13H;
  227.   VK_HOME               = 14H;
  228.   VK_LEFT               = 15H;
  229.   VK_UP                 = 16H;
  230.   VK_RIGHT              = 17H;
  231.   VK_DOWN               = 18H;
  232.   VK_PRINTSCRN          = 19H;
  233.   VK_INSERT             = 1AH;
  234.   VK_DELETE             = 1BH;
  235.   VK_SCRLLOCK           = 1CH;
  236.   VK_NUMLOCK            = 1DH;
  237.   VK_ENTER              = 1EH;
  238.   VK_SYSRQ              = 1FH;
  239.   VK_F1                 = 20H;
  240.   VK_F2                 = 21H;
  241.   VK_F3                 = 22H;
  242.   VK_F4                 = 23H;
  243.   VK_F5                 = 24H;
  244.   VK_F6                 = 25H;
  245.   VK_F7                 = 26H;
  246.   VK_F8                 = 27H;
  247.   VK_F9                 = 28H;
  248.   VK_F10                = 29H;
  249.   VK_F11                = 2AH;
  250.   VK_F12                = 2BH;
  251.   VK_F13                = 2CH;
  252.   VK_F14                = 2DH;
  253.   VK_F15                = 2EH;
  254.   VK_F16                = 2FH;
  255.   VK_F17                = 30H;
  256.   VK_F18                = 31H;
  257.   VK_F19                = 32H;
  258.   VK_F20                = 33H;
  259.   VK_F21                = 34H;
  260.   VK_F22                = 35H;
  261.   VK_F23                = 36H;
  262.   VK_F24                = 37H;
  263.   VK_ENDDRAG            = 38H;
  264.   VK_MENU               = VK_F10;
  265.   VK_DBCSFIRST          = 0080H;
  266.   VK_DBCSLAST           = 00FFH;
  267.   VK_USERFIRST          = 0100H;
  268.   VK_USERLAST           = 01FFH;
  269.  
  270. PROCEDURE WinGetKeyState
  271. ( DesktopWinHandle      : HWND;
  272.   VirtualKey            : LONGINT
  273. )                       : LONGINT;
  274.  
  275. PROCEDURE WinGetPhysKeyState
  276. ( DesktopWinHandle      : HWND;
  277.   ScanCode              : LONGINT
  278. )                       : LONGINT;
  279.  
  280. PROCEDURE WinEnablePhysInput
  281. ( DesktopWinHandle      : HWND;
  282.   NewInputState         : BOOLEAN
  283. )                       : BOOLEAN;
  284.  
  285. PROCEDURE WinIsPhysInputEnabled
  286. ( DesktopWinHandle      : HWND
  287. )                       : BOOLEAN;
  288.  
  289. TYPE (* array indexed by virtual key value; for WinSetKeyboardStateTable() *)
  290.   STATEARRAY            = ARRAY SHORTCARD OF SHORTCARD;
  291.  
  292. PROCEDURE WinSetKeyboardStateTable
  293. ( DesktopWinHandle      : HWND;
  294.   VAR KeyStateTable     : STATEARRAY;
  295.   Set                   : BOOLEAN
  296. )                       : BOOLEAN;
  297.  
  298. CONST (* Journal Notification messages  *)
  299.   WM_JOURNALNOTIFY      = 007CH;
  300.  
  301. CONST (* Define the valid commands (Param1) for journal notify message *)
  302.   JRN_QUEUESTATUS       = 00000001H;
  303.   JRN_PHYSKEYSTATE      = 00000002H;
  304.  
  305. END WININPUT.
  306.