Annotation of kernel/bsd/dev/ppc/drvUSBCMD/mouse/CursorDevices.h, revision 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.