home *** CD-ROM | disk | FTP | other *** search
/ Collection of Education / collectionofeducationcarat1997.iso / COMPUSCI / TOT11.ZIP / TOTDOC11.ZIP / CHAPT6.TXT < prev    next >
Text File  |  1991-02-11  |  44KB  |  1,062 lines

  1.                                                                         Keyboard
  2.                                                                                &
  3.                                                                            Mouse
  4.                                                                            Input
  5.  
  6.  
  7.  
  8.          "The computer is down. I hope it's something serious."
  9.  
  10.                                                                Stanton Delaplane
  11.  
  12.          The totINPUT unit includes two objects for managing the mouse and key-
  13.          board. KeyOBJ is the main object for determining mouse and keyboard
  14.          activity. MouseOBJ controls the location and shape of the mouse cursor.
  15.          Mouse support is provided for Microsoft two-button, Logitech three-
  16.          button, and 100% compatible mice.
  17.  
  18.  
  19. Getting Keyboard and Mouse Input
  20.  
  21.          totINPUT includes a global instance KEY of type KeyOBJ. In the same way
  22.          that the instance SCREEN is used for all screen writes, the KEY
  23.          instance should be used for all keyboard and mouse polling. Key
  24.          includes methods for determining which key or mouse button was pressed,
  25.          checking the status of the Alt/Ctrl/Shift keys, controlling the
  26.          Num/Scroll/Caps lock keys, setting the keyboard repeat rate, and
  27.          stuffing the keyboard buffer.
  28.          There are also two special user hooks which provide easy ways to cus-
  29.          tomize your program. The idle hook allows you to perform some action
  30.          (like displaying a ticking clock) while the program is idle waiting for
  31.          user input. The character hook allows you to intercept every user
  32.          action, and is called every time a key is pressed or a mouse button is
  33.          clicked.
  34.  
  35.  
  36. Setting Mouse Methods
  37.  
  38.          Users of TechnoJock's Turbo Toolkit (TTT) may recall that the input
  39.          routines supported an "invisible" mouse cursor. If the user moved the
  40.          mouse while a program was waiting for a key press, a special code was
  41.          returned which indicated that the mouse had been moved either up, down,
  42.          left or right. Most of the TTT units would respond to the mouse move-
  43.          ment as though a cursor key had been pressed.
  44.          TechnoJock's Object Toolkit provides much more extensive mouse support.
  45.          However, if you want to make your programs respond like the original
  46.          TTT, you can with the following SetMouseMethod method:
  47.  
  48.  
  49.          SetMouseMethod(Method:byte);
  50.  
  51.  
  52. 6-2                                                                 User's Guide
  53. --------------------------------------------------------------------------------
  54.  
  55.          This method instructs the Toolkit on which form of mouse support to
  56.          provide. If a 0 is passed, or if there is no mouse detected, the object
  57.          will ignore any mouse activity. If a 1 is passed, an "invisible" mouse
  58.          will be supported, and if a 2 is passed, full mouse support is enabled.
  59.          If you want to temporarily disable mouse support, set the mouse method
  60.          to 0, which can later be set back to 1 or 2.
  61.  
  62.  
  63.          When the mouse method is set to 1, the following two methods control
  64.          how much the mouse must be moved before the movement is detected:
  65.  
  66.  
  67.          SetHoriz(Sensitivity:byte);
  68.          This method is passed the number of characters that the mouse cursor
  69.          must be moved horizontally before a MouseLeft or MouseRight code is
  70.          returned.
  71.  
  72.  
  73.          SetVert(Sensitivity:byte);
  74.          This method is passed the number of characters that the mouse cursor
  75.          must be moved vertically before a MouseUp or MouseDown code is
  76.          returned.
  77.  
  78.  
  79.  
  80. Determining User Input
  81.          The heart of the KeyOBJ object is the GetInput method. GetInput pauses
  82.          program execution and waits for the user to press a key, or click a
  83.          mouse button (or move the mouse, if the MouseMethod is set to 1). The
  84.          user action can be determined by calling the functions Lastkey, LastX
  85.          and LastY. These functions return the key/button(s) which were pressed,
  86.          and the (X,Y) location of the mouse when the action took place, respec-
  87.          tively.
  88.  
  89.          Another method, GetKey, automatically calls GetInput, and returns the
  90.          user action code -- this saves calling GetInput followed by LastKey.
  91.          The method DelayKey is like GetInput, but will only pause for user
  92.          input for a specified number of milliseconds. This method is useful for
  93.          displaying temporary messages and the like. If a key has not been
  94.          pressed after a specified time period, Lastkey is updated with a value
  95.          of 0.
  96.  
  97.          Unlike Turbo Pascal, the Toolkit uses a WORD sized variable to record
  98.          the user activity. As well as supporting the standard keyboard, KeyOBJ
  99.          reports mouse button activity, as well as many special key combina-
  100.          tions, e.g. Alt-TAB. Refer to table 6.1 for a full list of the KeyOBJ
  101.          action codes. Some of the action codes listed in the table are raised
  102.  
  103.  
  104.  
  105. Keyboard & Mouse                                                             6-3
  106. --------------------------------------------------------------------------------
  107.  
  108.          by totWIN objects which indicate that the mouse was clicked on a spe-
  109.          cial window icon. Refer to chapter 7: Using Windows for further infor-
  110.          mation.
  111.  
  112.  
  113.  
  114. 6-4                                                                 User's Guide
  115. --------------------------------------------------------------------------------
  116.  
  117. Table 6.1
  118. Key Action Codes
  119.  
  120.            Key  Norm   Shift  Alt    Ctrl     Key   Norm   Shift  Alt    Ctrl
  121.            a    97     65     286    1        F1    315    340    360    350
  122.            b    98     66     304    2        F2    316    341    361    351
  123.            c    99     67     302    3        F3    317    342    362    352
  124.            d    100    68     288    4        F4    318    343    363    353
  125.            e    101    69     274    5        F5    319    344    364    354
  126.            f    102    70     289    6        F6    320    345    365    355
  127.            g    103    71     290    7        F7    321    346    366    356
  128.            h    104    72     291    8        F8    322    347    367    357
  129.            i    105    73     279    9        F9    323    348    368    358
  130.            j    106    74     292    10       F10   324    349    369    359
  131.            k    107    75     293    11       F11   389    391    395    393
  132.            l    108    76     294    12       F12   390    392    396    394
  133.            m    109    77     306    13
  134.            n    110    78     305    14       BkSp  8      8      270    127
  135.            o    111    79     280    15       Up    328    428    408    397
  136.            p    112    80     281    16       Down  336    436    416    401
  137.            q    113    81     272    17       Left  331    431    411    371
  138.            r    114    82     275    18       Right 333    433    413    372
  139.            s    115    83     287    19       End   335    435    415    373
  140.            t    116    84     276    20       Home  327    427    407    375
  141.            u    117    85     278    21       PgUp  329    429    409    388
  142.            v    118    86     303    22       PgDn  337    437    417    374
  143.            w    119    87     273    23       Ins   338    261    418    260
  144.            x    120    88     301    24       Del   339    263    419    262
  145.            y    121    89     277    25       Tab   9      271    421    404
  146.            z    122    90     300    26       Esc   27     27     257    27
  147.                                               Enter 13     13     284    10
  148.            1 !  49     33     376    -
  149.            2 @  50     64     377    259      , <   44     60     307    -
  150.            3 #  51     35     378    -        . >   46     62     308    -
  151.            4 $  52     36     379    -        / ?   47     63     309    -
  152.