Annotation of kernel/bsd/dev/ppc/drvUSBCMD/mouse/CursorDevices.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
                      3:  *
                      4:  * @APPLE_LICENSE_HEADER_START@
                      5:  * 
                      6:  * Portions Copyright (c) 1999 Apple Computer, Inc.  All Rights
                      7:  * Reserved.  This file contains Original Code and/or Modifications of
                      8:  * Original Code as defined in and that are subject to the Apple Public
                      9:  * Source License Version 1.1 (the "License").  You may not use this file
                     10:  * except in compliance with the License.  Please obtain a copy of the
                     11:  * License at http://www.apple.com/publicsource and read it before using
                     12:  * this file.
                     13:  * 
                     14:  * The Original Code and all software distributed under the License are
                     15:  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
                     16:  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
                     17:  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
                     18:  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
                     19:  * License for the specific language governing rights and limitations
                     20:  * under the License.
                     21:  * 
                     22:  * @APPLE_LICENSE_HEADER_END@
                     23:  */
                     24: 
                     25: /*
                     26:        File:           CursorDevices.h
                     27:  
                     28:        Contains:       Cursor Devices (mouse/trackball/etc) Interfaces.
                     29:  
                     30:        Version:        System 7.5
                     31:  
                     32:        DRI:            Rich Kubota
                     33:  
                     34:        Copyright:      � 1993-1998 by Apple Computer, Inc., all rights reserved.
                     35:  
                     36:        Warning:        *** APPLE INTERNAL USE ONLY ***
                     37:                                This file may contain unreleased API's
                     38:  
                     39:        BuildInfo:      Built by:                       Naga Pappireddi
                     40:                                With Interfacer:        3.0d9 (PowerPC native)
                     41:                                From:                           CursorDevices.i
                     42:                                        Revision:               25
                     43:                                        Dated:                  1/22/98
                     44:                                        Last change by: ngk
                     45:                                        Last comment:   Change Types.i to MacTypes.i
                     46:  
                     47:        Bugs:           Report bugs to Radar component "System Interfaces", "Latest"
                     48:                                List the version information (from above) in the Problem Description.
                     49:  
                     50: */
                     51: #ifndef __CURSORDEVICES__
                     52: #define __CURSORDEVICES__
                     53: 
                     54: #ifndef __MACTYPES__
                     55: //#include <MacTypes.h>
                     56: #endif
                     57: #ifndef __MIXEDMODE__
                     58: //#include <MixedMode.h>
                     59: #endif
                     60: 
                     61: 
                     62: 
                     63: #if PRAGMA_ONCE
                     64: #pragma once
                     65: #endif
                     66: 
                     67: #ifdef __cplusplus
                     68: extern "C" {
                     69: #endif
                     70: 
                     71: #if PRAGMA_IMPORT
                     72: #pragma import on
                     73: #endif
                     74: 
                     75: #if PRAGMA_STRUCT_ALIGN
                     76:        #pragma options align=mac68k
                     77: #elif PRAGMA_STRUCT_PACKPUSH
                     78:        #pragma pack(push, 2)
                     79: #elif PRAGMA_STRUCT_PACK
                     80:        #pragma pack(2)
                     81: #endif
                     82: 
                     83: /*
                     84:                            * * *  I M P O R T A N T  * * * 
                     85: 
                     86:                You will need CursorDevicesGlue.o to use CDM from PowerPC
                     87: 
                     88: 
                     89:        In order to use the Cursor Devices Manager (CDM) on PowerPC systems, you must 
                     90:        link with the file CursorDevicesGlue.o and InterfaceLib 1.1.3.  This is necessary
                     91:        because the original MixedMode transition code for CDM in InterfaceLib in ROM
                     92:        was wrong.  The code in CursorDevicesGlue.o will check to see if the ROM has
                     93:     been fixed and calls through to it if so.  If it detects that the ROM has not
                     94:        been fixed, it uses its own implementation of the CDM MixedMode transition 
                     95:        routines. 
                     96:        
                     97: */
                     98: 
                     99: typedef short                                                  ButtonOpcode;
                    100: /* ButtonOpcodes */
                    101: 
                    102: enum {
                    103:        kButtonNoOp                                     = 0,                                                    /* No action for this button */
                    104:        kButtonSingleClick                      = 1,                                                    /* Normal mouse button */
                    105:        kButtonDoubleClick                      = 2,                                                    /* Click-release-click when pressed */
                    106:        kButtonClickLock                        = 3                                                             /* Click on press, release on next press */
                    107: };
                    108: 
                    109: 
                    110: enum {
                    111:        kButtonCharStroke                       = 4,                                                    /* A keystroke, data=(modifiers, char code) */
                    112:        kButtonAppleScript                      = 5                                                             /* An AppleScript */
                    113: };
                    114: 
                    115: 
                    116: enum {
                    117:        kButtonCustom                           = 6                                                             /* Custom behavior, data = CursorDeviceCustomButtonUPP */
                    118: };
                    119: 
                    120: /* Device Classes */
                    121: 
                    122: enum {
                    123:        kDeviceClassAbsolute            = 0,                                                    /* a flat-response device */
                    124:        kDeviceClassMouse                       = 1,                                                    /* mechanical or optical mouse */
                    125:        kDeviceClassTrackball           = 2,                                                    /* trackball */
                    126:        kDeviceClassTrackPad            = 3
                    127: };
                    128: 
                    129: 
                    130: enum {
                    131:        kDeviceClassScratchPad          = 3,                                                    /* (midas) */
                    132:        kDeviceClassJoystick            = 4,                                                    /* (homeRow) */
                    133:        kDeviceClassRelTablet           = 5                                                             /* relative tablet */
                    134: };
                    135: 
                    136: 
                    137: enum {
                    138:        kDeviceClass3D                          = 6                                                             /* a 3D pointing device */
                    139: };
                    140: 
                    141: /* Structures used in Cursor Device Manager calls */
                    142: 
                    143: struct CursorData {
                    144:        struct CursorData *                             nextCursorData;                         /* next in global list */
                    145:        Ptr                                                     displayInfo;                            /* unused (reserved for future) */
                    146:        Fixed                                                   whereX;                                         /* horizontal position */
                    147:        Fixed                                                   whereY;                                         /* vertical position */
                    148:        Point                                                   where;                                          /* the pixel position */
                    149:        Boolean                                                 isAbs;                                          /* has been stuffed with absolute coords */
                    150:        UInt8                                                   buttonCount;                            /* number of buttons currently pressed */
                    151:        long                                                    screenRes;                                      /* pixels per inch on the current display */
                    152:        short                                                   privateFields[22];                      /* fields use internally by CDM */
                    153: };
                    154: typedef struct CursorData                              CursorData;
                    155: typedef CursorData *                                   CursorDataPtr;
                    156: 
                    157: struct CursorDevice {
                    158:        struct CursorDevice *                   nextCursorDevice;                       /* pointer to next record in linked list */
                    159:        CursorData *                                    whichCursor;                            /* pointer to data for target cursor */
                    160:        long                                                    refCon;                                         /* application-defined */
                    161:        long                                                    unused;                                         /* reserved for future */
                    162:        OSType                                                  devID;                                          /* device identifier (from ADB reg 1) */
                    163:        Fixed                                                   resolution;                                     /* units/inch (orig. from ADB reg 1) */
                    164:        UInt8                                                   devClass;                                       /* device class (from ADB reg 1) */
                    165:        UInt8                                                   cntButtons;                                     /* number of buttons (from ADB reg 1) */
                    166:        UInt8                                                   filler1;                                        /* reserved for future */
                    167:        UInt8                                                   buttons;                                        /* state of all buttons */
                    168:        UInt8                                                   buttonOp[8];                            /* action performed per button */
                    169:        unsigned long                                   buttonTicks[8];                         /* ticks when button last went up (for debounce) */
                    170:        long                                                    buttonData[8];                          /* data for the button operation */
                    171:        unsigned long                                   doubleClickTime;                        /* device-specific double click speed */
                    172:        Fixed                                                   acceleration;                           /* current acceleration */
                    173:        short                                                   privateFields[15];                      /* fields used internally to CDM */
                    174: };
                    175: typedef struct CursorDevice                            CursorDevice;
                    176: typedef CursorDevice *                                 CursorDevicePtr;
                    177: /* for use with CursorDeviceButtonOp when opcode = kButtonCustom */
                    178: typedef CALLBACK_API( void , CursorDeviceCustomButtonProcPtr )(CursorDevicePtr ourDevice, short button);
                    179: /*
                    180:        WARNING: CursorDeviceCustomButtonProcPtr uses register based parameters under classic 68k
                    181:                         and cannot be written in a high-level language without 
                    182:                         the help of mixed mode or assembly glue.
                    183: */
                    184: //naga typedef REGISTER_UPP_TYPE(CursorDeviceCustomButtonProcPtr)              CursorDeviceCustomButtonUPP;
                    185: enum { uppCursorDeviceCustomButtonProcInfo = 0x000ED802 };             /* register no_return_value Func(4_bytes:A2, 2_bytes:D3) */
                    186: #if MIXEDMODE_CALLS_ARE_FUNCTIONS
                    187: EXTERN_API(CursorDeviceCustomButtonUPP)
                    188: NewCursorDeviceCustomButtonProc    (CursorDeviceCustomButtonProcPtr userRoutine);
                    189: EXTERN_API(void)
                    190: CallCursorDeviceCustomButtonProc    (CursorDeviceCustomButtonUPP userRoutine,
                    191:                                                                CursorDevicePtr                 ourDevice,
                    192:                                                                short                                   button);
                    193: #else
                    194: #define NewCursorDeviceCustomButtonProc(userRoutine)                   (CursorDeviceCustomButtonUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppCursorDeviceCustomButtonProcInfo, GetCurrentArchitecture())
                    195: #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
                    196:        /* CallCursorDeviceCustomButtonProc can't be called from classic 68k without glue code */
                    197: #else
                    198:        #define CallCursorDeviceCustomButtonProc(userRoutine, ourDevice, button)  CALL_TWO_PARAMETER_UPP((userRoutine), uppCursorDeviceCustomButtonProcInfo, (ourDevice), (button))
                    199: #endif
                    200: #endif
                    201: EXTERN_API( OSErr )
                    202: CursorDeviceMove                               (CursorDevicePtr                ourDevice,
                    203:                                                                 long                                   deltaX,
                    204:                                                                 long                                   deltaY)                                                         TWOWORDINLINE(0x7000, 0xAADB);
                    205: 
                    206: EXTERN_API( OSErr )
                    207: CursorDeviceMoveTo                             (CursorDevicePtr                ourDevice,
                    208:                                                                 long                                   absX,
                    209:                                                                 long                                   absY)                                                           TWOWORDINLINE(0x7001, 0xAADB);
                    210: 
                    211: EXTERN_API( OSErr )
                    212: CursorDeviceFlush                              (CursorDevicePtr                ourDevice)                                                      TWOWORDINLINE(0x7002, 0xAADB);
                    213: 
                    214: EXTERN_API( OSErr )
                    215: CursorDeviceButtons                            (CursorDevicePtr                ourDevice,
                    216:                                                                 short                                  buttons)                                                        TWOWORDINLINE(0x7003, 0xAADB);
                    217: 
                    218: EXTERN_API( OSErr )
                    219: CursorDeviceButtonDown                 (CursorDevicePtr                ourDevice)                                                      TWOWORDINLINE(0x7004, 0xAADB);
                    220: 
                    221: EXTERN_API( OSErr )
                    222: CursorDeviceButtonUp                   (CursorDevicePtr                ourDevice)                                                      TWOWORDINLINE(0x7005, 0xAADB);
                    223: 
                    224: EXTERN_API( OSErr )
                    225: CursorDeviceButtonOp                   (CursorDevicePtr                ourDevice,
                    226:                                                                 short                                  buttonNumber,
                    227:                                                                 ButtonOpcode                   opcode,
                    228:                                                                 long                                   data)                                                           TWOWORDINLINE(0x7006, 0xAADB);
                    229: 
                    230: EXTERN_API( OSErr )
                    231: CursorDeviceSetButtons                 (CursorDevicePtr                ourDevice,
                    232:                                                                 short                                  numberOfButtons)                                        TWOWORDINLINE(0x7007, 0xAADB);
                    233: 
                    234: EXTERN_API( OSErr )
                    235: CursorDeviceSetAcceleration            (CursorDevicePtr                ourDevice,
                    236:                                                                 Fixed                                  acceleration)                                           TWOWORDINLINE(0x7008, 0xAADB);
                    237: 
                    238: EXTERN_API( OSErr )
                    239: CursorDeviceDoubleTime                 (CursorDevicePtr                ourDevice,
                    240:                                                                 long                                   durationTicks)                                          TWOWORDINLINE(0x7009, 0xAADB);
                    241: 
                    242: EXTERN_API( OSErr )
                    243: CursorDeviceUnitsPerInch               (CursorDevicePtr                ourDevice,
                    244:                                                                 Fixed                                  resolution)                                                     TWOWORDINLINE(0x700A, 0xAADB);
                    245: 
                    246: EXTERN_API( OSErr )
                    247: CursorDeviceNextDevice                 (CursorDevicePtr *              ourDevice)                                                      TWOWORDINLINE(0x700B, 0xAADB);
                    248: 
                    249: EXTERN_API( OSErr )
                    250: CursorDeviceNewDevice                  (CursorDevicePtr *              ourDevice)                                                      TWOWORDINLINE(0x700C, 0xAADB);
                    251: 
                    252: EXTERN_API( OSErr )
                    253: CursorDeviceDisposeDevice              (CursorDevicePtr                ourDevice)                                                      TWOWORDINLINE(0x700D, 0xAADB);
                    254: 
                    255: 
                    256: 
                    257: 
                    258: /*
                    259:                           * * *  W A R N I N G  * * * 
                    260:                                
                    261:        The routines CrsrDevMoveTo and CrsrDevNextDevice are no longer needed.
                    262:        They were added as a work around until the glue code CursorDevicesGlue.o
                    263:        was created.  Please use the functions CursorDeviceMoveTo and
                    264:        CursorDeviceNextDevice instead.
                    265: 
                    266: */
                    267: #if OLDROUTINENAMES
                    268: EXTERN_API( OSErr )
                    269: CrsrDevMoveTo                                  (CursorDevicePtr                ourDevice,
                    270:                                                                 long                                   absX,
                    271:                                                                 long                                   absY)                                                           TWOWORDINLINE(0x7001, 0xAADB);
                    272: 
                    273: EXTERN_API( OSErr )
                    274: CrsrDevNextDevice                              (CursorDevicePtr *              ourDevice)                                                      TWOWORDINLINE(0x700B, 0xAADB);
                    275: 
                    276: #endif  /* OLDROUTINENAMES */
                    277: 
                    278: 
                    279: 
                    280: 
                    281: #if PRAGMA_STRUCT_ALIGN
                    282:        #pragma options align=reset
                    283: #elif PRAGMA_STRUCT_PACKPUSH
                    284:        #pragma pack(pop)
                    285: #elif PRAGMA_STRUCT_PACK
                    286:        #pragma pack()
                    287: #endif
                    288: 
                    289: #ifdef PRAGMA_IMPORT_OFF
                    290: #pragma import off
                    291: #elif PRAGMA_IMPORT
                    292: #pragma import reset
                    293: #endif
                    294: 
                    295: #ifdef __cplusplus
                    296: }
                    297: #endif
                    298: 
                    299: #endif /* __CURSORDEVICES__ */
                    300: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.