ftp.nice.ch/pub/next/developer/languages/c/gcc.2.7.2.2.I.b.tar.gz#/lib/gcc-lib/m68k-next-nextstep3/2.7.2.2.f.2/include/driverkit/eventProtocols.h

This is eventProtocols.h in view mode; [Download] [Up]

/* 	Copyright (c) 1992 NeXT Computer, Inc.  All rights reserved. 
 *
 * eventProtocols.h - ObjC protocols used by the Event Driver and it's clients.
 *
 * HISTORY
 * 31 Mar 1992    Mike Paquette at NeXT
 *      Created. 
 * 4  Aug 1993	  Erik Kay at NeXT
 * 	API cleanup
 */
 
#import <driverkit/generalFuncs.h>
#import <driverkit/driverTypes.h>
#import <bsd/dev/ev_types.h>	/* Basic types for event system */
#import <bsd/dev/event.h>	/* Event flags */
#import <objc/objc.h>

/*
 * Methods exported by the EventDriver to event source objects.
 *
 *	The IOEventSourceClient protocol is used by event source objects to
 *	post state changes into the event driver.
 * 	The event driver implements this protocol.
 */
@protocol IOEventSourceClient

/*
 * Called when another client wishes to assume ownership of calling 
 * IOEventSource. This happens when a client attempts a becomeOwner: on a
 * source which is owned by the callee of this method. 
 *
 * Returns:
 *    IO_R_SUCCESS ==> It's OK to give ownership of the source to other client.
 *		       In this case, callee no longer owns the source.
 *    IO_R_BUSY    ==> Don't transfer ownership.
 *
 * Note that this call occurs during (i.e., before the return of) a 
 * becomeOwner: call to the caller of this method.
 */
- (IOReturn)relinquishOwnershipRequest	: source;

/*
 * Method by which a client, who has registered "intent to own" via 
 * desireOwnership:client, is notified that the calling device is available.
 * Client will typically call becomeOwner: during this call.
 */
- (void)canBecomeOwner			: source;

/* Mouse event reporting */
- relativePointerEvent:(int)buttons deltaX:(int)dx deltaY:(int)dy;
- relativePointerEvent:(int)buttons
		deltaX:(int)dx
		deltaY:(int)dy
		atTime:(ns_time_t)ts;

/* Tablet event reporting */
- absolutePointerEvent:(int)buttons
		at:(Point *)newLoc
		inProximity:(BOOL)proximity;
- absolutePointerEvent:(int)buttons
		at:(Point *)newLoc
		inProximity:(BOOL)proximity
		withPressure:(int)pressure;
- absolutePointerEvent:(int)buttons
		at:(Point *)newLoc
		inProximity:(BOOL)proximity
		withPressure:(int)pressure
		withAngle:(int)stylusAngle
		atTime:(ns_time_t)ts;

/* Keyboard Event reporting */
- keyboardEvent:(unsigned)eventType
		flags:(unsigned)flags
		keyCode:(unsigned)key
		charCode:(unsigned)charCode
		charSet:(unsigned)charSet
		repeat:(BOOL)repeat
		atTime:(ns_time_t)ts;
- keyboardSpecialEvent:(unsigned)eventType
		flags:(unsigned)flags
		keyCode:(unsigned)key
		specialty:(unsigned)flavor
		atTime:(ns_time_t)ts;
- updateEventFlags:(unsigned)flags;	/* Does not generate events */

/* Return current event flag values */
- (int)eventFlags;

@end /* IOEventSourceClient */

/*
 * The EventClient API lists generally useful methods exported by the Event
 * driver.  These can be used by Event sources, or other users of the event
 * system within the same address space.
 */
@protocol IOEventThread

/* 
 * Event clients may need to use an I/O thread from time to time.
 * Rather than have each instance running it's own thread, we provide
 * a callback mechanism to let all the instances share a common Event I/O
 * thread running in the IOTask space, and managed by the Event Driver.
 */
- (IOReturn)sendIOThreadMsg:	(SEL)selector	/* Selector to call back on*/
	to		:	(id)instance	/* Instance to call back*/
	with		:	(id)data;	/* Data to pass back*/

/* Returns self, or nil on error. */
- sendIOThreadAsyncMsg:		(SEL)selector	/* Selector to call back on*/
	to		:	(id)instance	/* Instance to call back*/
	with		:	(id)data;	/* Data to pass back*/

@end /* IOEventThread */

/*
 * Methods exported by IOEventSource objects.
 */
@protocol IOEventSourceExported

/*
 * Register for event dispatch via IOEventSourceClient protocol. Returns
 * IO_R_SUCCESS if successful, else IO_R_BUSY. The relinquishOwnershipRequest: 
 * method may be called on another client during the execution of this method.
 */
- (IOReturn)becomeOwner		: client;

/*
 * Relinquish ownership. Returns IO_R_BUSY if caller is not current owner.
 */
- (IOReturn)relinquishOwnership	: client;

/*
 * Request notification (via canBecomeOwner:) when relinquishOwnership: is
 * called. This allows one potential client to place itself "next in line"
 * for ownership. The queue is only one deep.
 */
- (IOReturn)desireOwnership	: client;

@end /* IOEventSourceExported */

/*
 * Methods exported by the EventDriver for display systems.
 *
 *	The screenRegister protocol is used by frame buffer drivers to register
 *	themselves with the Event Driver.  These methods are called in response
 *	to an _IOGetParameterInIntArray() call with "IO_Framebuffer_Register" or
 *	"IO_Framebuffer_Unregister".
 */
@protocol IOScreenRegistration

- (int) registerScreen:	(id)instance
		bounds:(Bounds *)bp
		shmem:(void **)addr
		size:(int *)size;
- (void) unregisterScreen:(int)token;

@end /* IOScreenRegistration */


/*
 * Methods exported by compliant frame buffer drivers to the Event Driver.
 *
 *	Any frame buffer driver which will be used by the Window Server should
 *	implement this protocol.  The methods in this protocol are invoked by
 *	the Event Driver on command from the Window Server and from the pointer
 *	management software.
 * 
 *	The frame field is an integer index into the driver's private array of
 *	cursor bitmaps.  It is used to select the cursor to be displayed.
 *	The token field is a small integer as returned by registerScreen, which
 *	indicates which of the driver's screens should be used for drawing.
 */
@protocol IOScreenEvents

- (port_t) devicePort;
- hideCursor: (int)token;
- moveCursor:(Point*)cursorLoc frame:(int)frame token:(int)t;
- showCursor:(Point*)cursorLoc frame:(int)frame token:(int)t;
- setBrightness:(int)level token:(int)t;

@end	/* IOScreenEvents */

@protocol IOWorkspaceBounds
/*
 * Absolute position input devices and some specialized output devices
 * may need to know the bounding rectangle for all attached displays.
 * The following method returns a Bounds* for the workspace.  Please note
 * that the bounds are kept as signed values, and that on a multi-display
 * system the minx and miny values may very well be negative.
 */
- (Bounds *)workspaceBounds;
@end

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.