mouseh.inc 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. {
  2. This file is part of the Free Pascal run time library.
  3. Copyright (c) 1999-2000 by the Free Pascal development team
  4. See the file COPYING.FPC, included in this distribution,
  5. for details about the copyright.
  6. This program is distributed in the hope that it will be useful,
  7. but WITHOUT ANY WARRANTY; without even the implied warranty of
  8. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  9. **********************************************************************}
  10. const
  11. { We have an errorcode base of 1030 }
  12. errMouseBase = 1030;
  13. errMouseInitError = errMouseBase + 0;
  14. errMouseNotImplemented = errMouseBase + 1;
  15. type
  16. PMouseEvent=^TMouseEvent;
  17. TMouseEvent=packed record { 8 bytes }
  18. buttons : word;
  19. x,y : word;
  20. Action : word;
  21. end;
  22. const
  23. MouseActionDown = $0001; { Mouse down event }
  24. MouseActionUp = $0002; { Mouse up event }
  25. MouseActionMove = $0004; { Mouse move event }
  26. MouseLeftButton = $01; { Left mouse button }
  27. MouseRightButton = $02; { Right mouse button }
  28. MouseMiddleButton = $04; { Middle mouse button }
  29. MouseEventBufSize = 16; { Size of event queue }
  30. var
  31. MouseIntFlag : Byte; { Mouse in int flag }
  32. MouseButtons : Byte; { Mouse button state }
  33. MouseWhereX,
  34. MouseWhereY : Word; { Mouse position }
  35. Type
  36. TMouseDriver = Record
  37. UseDefaultQueue : Boolean;
  38. InitDriver : Procedure;
  39. DoneDriver : Procedure;
  40. DetectMouse : Function : Byte;
  41. ShowMouse : Procedure;
  42. HideMouse : Procedure;
  43. GetMouseX : Function : Word;
  44. GetMouseY : Function : Word;
  45. GetMouseButtons : Function : Word;
  46. SetMouseXY : procedure (x,y:word);
  47. GetMouseEvent : procedure (var MouseEvent:TMouseEvent);
  48. PollMouseEvent : function (var MouseEvent: TMouseEvent):boolean;
  49. PutMouseEvent : procedure (Const MouseEvent:TMouseEvent);
  50. end;
  51. procedure InitMouse;
  52. { Initialize the mouse interface }
  53. procedure DoneMouse;
  54. { Deinitialize the mouse interface }
  55. function DetectMouse:byte;
  56. { Detect if a mouse is present, returns the amount of buttons or 0
  57. if no mouse is found }
  58. procedure ShowMouse;
  59. { Show the mouse cursor }
  60. procedure HideMouse;
  61. { Hide the mouse cursor }
  62. function GetMouseX:word;
  63. { Return the current X position of the mouse }
  64. function GetMouseY:word;
  65. { Return the current Y position of the mouse }
  66. function GetMouseButtons:word;
  67. { Return the current button state of the mouse }
  68. procedure SetMouseXY(x,y:word);
  69. { Place the mouse cursor on x,y }
  70. procedure GetMouseEvent(var MouseEvent:TMouseEvent);
  71. { Returns the last Mouseevent, and waits for one if not available }
  72. procedure PutMouseEvent(const MouseEvent: TMouseEvent);
  73. { Adds the given MouseEvent to the input queue. Please note that depending on
  74. the implementation this can hold only one value (NO FIFOs etc) }
  75. function PollMouseEvent(var MouseEvent: TMouseEvent):boolean;
  76. { Checks if a Mouseevent is available, and returns it if one is found. If no
  77. event is pending, it returns 0 }
  78. Procedure SetMouseDriver(Const Driver : TMouseDriver);
  79. { Sets the mouse driver. }
  80. Procedure GetMouseDriver(Var Driver : TMouseDriver);
  81. { Returns the currently active mouse driver }