]> git.saurik.com Git - apple/xnu.git/blob - iokit/IOKit/hidsystem/ev_private.h
xnu-124.13.tar.gz
[apple/xnu.git] / iokit / IOKit / hidsystem / ev_private.h
1 /*
2 * Copyright (c) 1998-2000 Apple Computer, Inc. All rights reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
6 * The contents of this file constitute Original Code as defined in and
7 * are subject to the Apple Public Source License Version 1.1 (the
8 * "License"). You may not use this file except in compliance with the
9 * License. Please obtain a copy of the License at
10 * http://www.apple.com/publicsource and read it before using this file.
11 *
12 * This Original Code and all software distributed under the License are
13 * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
14 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
15 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
17 * License for the specific language governing rights and limitations
18 * under the License.
19 *
20 * @APPLE_LICENSE_HEADER_END@
21 */
22 /******************************************************************************
23
24 ev_private.h
25 Internal defs for the events driver. The contents of this module
26 may need to be tweaked slightly from one architecture to the next.
27 22 May 1992 Mike Paquette at NeXT Computers, Inc.
28
29 Copyright 1992 NeXT, Inc.
30
31 Modified:
32
33
34 ******************************************************************************/
35
36 #ifndef _DEV_EV_PRIVATE_H
37 #define _DEV_EV_PRIVATE_H
38
39 #include <IOKit/hidsystem/IOLLEvent.h>
40
41 /* Initial cursor position */
42 #define INIT_CURSOR_X 16
43 #define INIT_CURSOR_Y 16
44
45 /* Default mouse click time and motion constants */
46 #define EV_DCLICKTIME 500000000 /* Default nanoseconds for a double-click */
47 #define EV_DCLICKSPACE 3 /* Default pixel threshold for double-clicks */
48
49 /* Default Wait Cursor Timing Constants (in nanoseconds) */
50 #define DefaultWCSustain 300000000 /* 0.3 seconds */
51 #define DefaultWCFrameRate 75000000 /* 13.3 frames/second */
52 #define DefaultWCThreshold 1200000000ULL /* 1.2 seconds */
53
54 #define EV_STD_CURSOR 0
55 #define EV_WAITCURSOR 1
56 #define EV_WAITCURSOR_1 2
57 #define EV_WAITCURSOR_2 3
58 #define EV_MAXCURSOR (EV_WAITCURSOR_2)
59
60 /* Default dim time is 5 minutes, nanoseconds */
61 #define DAUTODIMPERIOD (1000ULL*1000ULL*1000ULL*60*5)
62 /* Default dim level is one-fourth */
63 #define DDIMBRIGHTNESS (EV_SCREEN_MAX_BRIGHTNESS/4)
64
65
66 /* Where event numbers start */
67 #define INITEVENTNUM 13
68 #define NULLEVENTNUM 0 /* The event number that never was */
69
70 #define MOVEDEVENTMASK \
71 (NX_MOUSEMOVEDMASK | NX_LMOUSEDRAGGEDMASK | NX_RMOUSEDRAGGEDMASK )
72 #define COALESCEEVENTMASK \
73 (MOVEDEVENTMASK | NX_MOUSEEXITEDMASK)
74 #define MOUSEEVENTMASK \
75 (NX_LMOUSEDOWNMASK|NX_RMOUSEDOWNMASK|NX_LMOUSEUPMASK|NX_RMOUSEUPMASK)
76 #define PRESSUREEVENTMASK \
77 (NX_LMOUSEDOWNMASK|NX_LMOUSEUPMASK|NX_MOUSEMOVEDMASK|NX_LMOUSEDRAGGEDMASK)
78
79 /* Flags which can modify meaning of special volume/brightness keys */
80 #define SPECIALKEYS_MODIFIER_MASK \
81 (NX_COMMANDMASK|NX_ALTERNATEMASK|NX_CONTROLMASK)
82
83 /* Bits in evg->eventFlags owned by keyboard devices */
84 #define KEYBOARD_FLAGSMASK \
85 (NX_ALPHASHIFTMASK | NX_SHIFTMASK | NX_CONTROLMASK | NX_ALTERNATEMASK \
86 | NX_COMMANDMASK | NX_NUMERICPADMASK | NX_HELPMASK | NX_SECONDARYFNMASK)
87 // | NX_NEXTCTLKEYMASK \
88 // | NX_NEXTLSHIFTKEYMASK | NX_NEXTRSHIFTKEYMASK | NX_NEXTLCMDKEYMASK \
89 // | NX_NEXTRCMDKEYMASK | NX_NEXTLALTKEYMASK | NX_NEXTRALTKEYMASK)
90
91 /* Some non-zero token to or with screen number */
92 #define SCREENTOKEN 256
93
94 /* A macro to report if the event queue is not empty */
95 #define EventsInQueue() \
96 (eventsOpen && (((EvGlobals*)evg)->LLEHead != ((EvGlobals*)evg)->LLETail))
97
98 struct _eventMsg {
99 mach_msg_header_t h;
100 #ifdef mach3xxx // this is not needed anymore?
101 msg_type_t t;
102 #endif
103 };
104
105 /******************************************************************************
106 EvScreen
107 This structure is used by the ev driver.
108 It holds information about a single screen: how much private shmem it owns,
109 where its private shmem region starts, its global bounds and four procedure
110 vectors. This structure is allocated by the ev driver and is filled in
111 when a driver calls ev_register_screen().
112 ******************************************************************************/
113
114 typedef volatile struct _evScreen {
115 IOGraphicsDevice * instance;/* Driver instance owning this screen. */
116 // void *shmemPtr; /* Ptr to private shmem (if non-zero size) */
117 // int shmemSize; /* Size of private shmem */
118 Bounds * bounds; /* Screen's bounds in device coordinates */
119 } EvScreen;
120
121 /*
122 * We maintain a queue of EventSrc instances attached to the Event
123 * Driver. These sources are dynamically checked in with the Event
124 * Driver. When the driver is closed (as on Window Server exit) we
125 * post a relinquishOwnership:client message to the drivers.
126 */
127 typedef struct {
128 IOHIDevice * eventSrc;
129 } eventSrcInfo;
130
131 typedef struct {
132 eventSrcInfo info;
133 queue_chain_t link;
134 } attachedEventSrc;
135
136 // No-op XPR stuff
137 #define xpr_ev_cursor(x, a, b, c, d, e)
138 #define xpr_ev_post(x, a, b, c, d, e)
139
140 #endif /* !_DEV_EV_PRIVATE_H */
141