home *** CD-ROM | disk | FTP | other *** search
/ CLIX - Fazer Clix Custa Nix / CLIX-CD.cdr / mac / lib / Mac / Events.pm < prev    next >
Encoding:
Perl POD Document  |  1998-04-05  |  5.1 KB  |  271 lines  |  [TEXT/McPL]

  1.  
  2. =head1 NAME
  3.  
  4. Mac::Events - Macintosh Toolbox Interface to Event Manager
  5.  
  6. =head1 SYNOPSIS
  7.  
  8.  
  9. =head1 DESCRIPTION
  10.  
  11. Access to Inside Macintosh is essential for proper use of these functions.
  12. Explanations of terms, processes and procedures are provided there.
  13. Any attempt to use these functions without guidance can cause severe errors in 
  14. your machine, including corruption of data. B<You have been warned.>
  15.  
  16. =cut
  17.  
  18. use strict;
  19.  
  20. package Mac::Events;
  21.  
  22. BEGIN {
  23.     use Exporter   ();
  24.     use DynaLoader ();
  25.     
  26.     use vars qw(@ISA @EXPORT @EXPORT_OK $CurrentEvent @SavedEvents @Event);
  27.     
  28.     @ISA = qw(Exporter DynaLoader);
  29.     
  30.     @EXPORT = qw(
  31.         GetCaretTime
  32.         GetDblTime
  33.         GetMouse
  34.         Button
  35.         StillDown
  36.         WaitMouseUp
  37.         TickCount
  38.         FlushEvents
  39.         WaitNextEvent
  40.     
  41.         nullEvent
  42.         mouseDown
  43.         mouseUp
  44.         keyDown
  45.         keyUp
  46.         autoKey
  47.         updateEvt
  48.         diskEvt
  49.         activateEvt
  50.         osEvt
  51.         kHighLevelEvent
  52.         mDownMask
  53.         mUpMask
  54.         keyDownMask
  55.         keyUpMask
  56.         autoKeyMask
  57.         updateMask
  58.         diskMask
  59.         activMask
  60.         highLevelEventMask
  61.         osMask
  62.         everyEvent
  63.         charCodeMask
  64.         keyCodeMask
  65.         adbAddrMask
  66.         osEvtMessageMask
  67.         mouseMovedMessage
  68.         suspendResumeMessage
  69.         resumeFlag
  70.         convertClipboardFlag
  71.         activeFlag
  72.         btnState
  73.         cmdKey
  74.         shiftKey
  75.         alphaLock
  76.         optionKey
  77.         controlKey
  78.         rightShiftKey
  79.         rightOptionKey
  80.         rightControlKey
  81.     );
  82.     
  83.     @EXPORT_OK = qw(
  84.         DispatchEvent
  85.     
  86.         $CurrentEvent
  87.         @SavedEvents
  88.         @Event
  89.     );
  90. }
  91.  
  92. =head2 Constants
  93.  
  94. =over 4
  95.  
  96. =item nullEvent
  97.  
  98. =item mouseDown
  99.  
  100. =item mouseUp
  101.  
  102. =item keyDown
  103.  
  104. =item keyUp
  105.  
  106. =item autoKey
  107.  
  108. =item updateEvt
  109.  
  110. =item diskEvt
  111.  
  112. =item activateEvt
  113.  
  114. =item osEvt
  115.  
  116. =item kHighLevelEvent
  117.  
  118. Event codes in the C<what> field of an event.
  119.  
  120. =cut
  121. sub nullEvent ()                   {          0; }
  122. sub mouseDown ()                   {          1; }
  123. sub mouseUp ()                     {          2; }
  124. sub keyDown ()                     {          3; }
  125. sub keyUp ()                       {          4; }
  126. sub autoKey ()                     {          5; }
  127. sub updateEvt ()                   {          6; }
  128. sub diskEvt ()                     {          7; }
  129. sub activateEvt ()                 {          8; }
  130. sub osEvt ()                       {         15; }
  131. sub kHighLevelEvent ()             {         23; }
  132.  
  133.  
  134. =item mDownMask
  135.  
  136. =item mUpMask
  137.  
  138. =item keyDownMask
  139.  
  140. =item keyUpMask
  141.  
  142. =item autoKeyMask
  143.  
  144. =item updateMask
  145.  
  146. =item diskMask
  147.  
  148. =item activMask
  149.  
  150. =item highLevelEventMask
  151.  
  152. =item osMask
  153.  
  154. =item everyEvent
  155.  
  156. Event masks to pass to C<WaitNextEvent>.
  157.  
  158. =cut
  159. sub mDownMask ()                   {     0x0002; }
  160. sub mUpMask ()                     {     0x0004; }
  161. sub keyDownMask ()                 {     0x0008; }
  162. sub keyUpMask ()                   {     0x0010; }
  163. sub autoKeyMask ()                 {     0x0020; }
  164. sub updateMask ()                  {     0x0040; }
  165. sub diskMask ()                    {     0x0080; }
  166. sub activMask ()                   {     0x0100; }
  167. sub highLevelEventMask ()          {     0x0400; }
  168. sub osMask ()                      {     0x8000; }
  169. sub everyEvent ()                  {     0xFFFF; }
  170.  
  171.  
  172. =item charCodeMask
  173.  
  174. =item keyCodeMask
  175.  
  176. =item adbAddrMask
  177.  
  178. =item osEvtMessageMask
  179.  
  180. =item mouseMovedMessage
  181.  
  182. =item suspendResumeMessage
  183.  
  184. =item resumeFlag
  185.  
  186. =item convertClipboardFlag
  187.  
  188. Subfields of the C<message> field of an event and their values.
  189.  
  190. =cut
  191. sub charCodeMask ()                { 0x000000FF; }
  192. sub keyCodeMask ()                 { 0x0000FF00; }
  193. sub adbAddrMask ()                 { 0x00FF0000; }
  194. sub osEvtMessageMask ()            { 0xFF000000; }
  195. sub mouseMovedMessage ()           {     0x00FA; }
  196. sub suspendResumeMessage ()        {     0x0001; }
  197. sub resumeFlag ()                  {          1; }
  198. sub convertClipboardFlag ()        {          2; }
  199.  
  200.  
  201. =item activeFlag
  202.  
  203. =item btnState
  204.  
  205. =item cmdKey
  206.  
  207. =item shiftKey
  208.  
  209. =item alphaLock
  210.  
  211. =item optionKey
  212.  
  213. =item controlKey
  214.  
  215. =item rightShiftKey
  216.  
  217. =item rightOptionKey
  218.  
  219. =item rightControlKey
  220.  
  221. Flags in the C<modifier> field of an event.
  222.  
  223. =cut
  224. sub activeFlag ()                  {     0x0001; }
  225. sub btnState ()                    {     0x0080; }
  226. sub cmdKey ()                      {     0x0100; }
  227. sub shiftKey ()                    {     0x0200; }
  228. sub alphaLock ()                   {     0x0400; }
  229. sub optionKey ()                   {     0x0800; }
  230. sub controlKey ()                  {     0x1000; }
  231. sub rightShiftKey ()               {     0x2000; }
  232. sub rightOptionKey ()              {     0x4000; }
  233. sub rightControlKey ()             {     0x8000; }
  234.  
  235. =back
  236.  
  237. =cut
  238.  
  239. bootstrap Mac::Events;
  240.  
  241. =include Events.xs
  242.  
  243. =item DispatchEvent EVENT
  244.  
  245. Dispatch an event to its handler.
  246.  
  247. =back
  248.  
  249. =cut
  250. sub DispatchEvent {
  251.     push @SavedEvents, $CurrentEvent;
  252.     $CurrentEvent = $_[0];
  253.     my($handler) = $Event[$CurrentEvent->what];
  254.     my($res) = $handler ? &$handler($CurrentEvent) : 0;
  255.     $CurrentEvent = pop @SavedEvents;
  256.     $res;
  257. }
  258.  
  259.  
  260. =head1 BUGS/LIMITATIONS
  261.  
  262. =head1 FILES
  263.  
  264. =head1 AUTHOR(S)
  265.  
  266. Matthias Ulrich Neeracher <neeri@iis.ee.ethz.ch> 
  267.  
  268. =cut
  269.  
  270. __END__
  271.