|
|
1.1 root 1: /*
2: * Mach Operating System
3: * Copyright (c) 1991,1990,1989 Carnegie Mellon University
4: * All Rights Reserved.
5: *
6: * Permission to use, copy, modify and distribute this software and its
7: * documentation is hereby granted, provided that both the copyright
8: * notice and this permission notice appear in all copies of the
9: * software, derivative works or modified versions, and any portions
10: * thereof, and that both notices appear in supporting documentation.
11: *
12: * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
13: * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
14: * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
15: *
16: * Carnegie Mellon requests users of this software to return to
17: *
18: * Software Distribution Coordinator or [email protected]
19: * School of Computer Science
20: * Carnegie Mellon University
21: * Pittsburgh PA 15213-3890
22: *
23: * any improvements or extensions that they make and grant Carnegie Mellon
24: * the rights to redistribute these changes.
25: */
26: /*
27: * File: screen.h
28: * Author: Alessandro Forin, Carnegie Mellon University
29: * Date: 9/90
30: *
31: * Definitions for the Generic Screen Driver.
32: */
33:
34: /*
35: * Most of these structures are defined so that the
36: * resulting structure mapped to user space appears
37: * to be compatible with the one used by the DEC X
38: * servers (pm_info..). Keep it that way and the
39: * X servers will keep on running.
40: */
41:
42: /*
43: * Generic structures and defines
44: */
45:
46: /* colors */
47: typedef struct {
48: unsigned short red;
49: unsigned short green;
50: unsigned short blue;
51: } color_map_t;
52:
53: typedef struct {
54: short unused;
55: unsigned short index;
56: color_map_t value;
57: } color_map_entry_t;
58:
59: typedef struct {
60: unsigned int Bg_rgb[3];
61: unsigned int Fg_rgb[3];
62: } cursor_color_t;
63:
64: /* generic input event */
65: typedef struct {
66: short x; /* x position */
67: short y; /* y position */
68: unsigned int time; /* 1 millisecond units */
69:
70: unsigned char type; /* button up/down/raw or motion */
71: # define EVT_BUTTON_UP 0
72: # define EVT_BUTTON_DOWN 1
73: # define EVT_BUTTON_RAW 2
74: # define EVT_PTR_MOTION 3
75:
76: unsigned char key; /* the key (button only) */
77: # define KEY_LEFT_BUTTON 1
78: # define KEY_MIDDLE_BUTTON 2
79: # define KEY_RIGHT_BUTTON 3
80: # define KEY_TBL_LEFT_BUTTON 0
81: # define KEY_TBL_FRONT_BUTTON 1
82: # define KEY_TBL_RIGHT_BUTTON 2
83: # define KEY_TBL_BACK_BUTTON 3
84:
85: unsigned char index; /* which instance of device */
86:
87: unsigned char device; /* which device */
88: # define DEV_NULL 0
89: # define DEV_MOUSE 1
90: # define DEV_KEYBD 2
91: # define DEV_TABLET 3
92: # define DEV_AUX 4
93: # define DEV_CONSOLE 5
94: # define DEV_KNOB 8
95: # define DEV_JOYSTICK 9
96:
97: } screen_event_t;
98:
99: /* timed coordinate info */
100: typedef struct {
101: unsigned int time;
102: short x, y;
103: } screen_timed_point_t;
104:
105: /* queue of input events, and ring of mouse motions track */
106: typedef struct {
107: screen_event_t *events;
108: unsigned int q_size;
109: unsigned int q_head;
110: unsigned int q_tail;
111: unsigned long timestamp;
112: screen_timed_point_t *track;
113: unsigned int t_size;
114: unsigned int t_next;
115: } screen_evque_t;
116:
117: /* mouse/cursor position */
118: typedef struct {
119: short x;
120: short y;
121: } screen_point_t;
122:
123: /* mouse motion bounding boxes */
124: typedef struct {
125: short bottom;
126: short right;
127: short left;
128: short top;
129: } screen_rect_t;
130:
131: /*
132: * Here it is, each field is marked as
133: *
134: * Kset : kernel sets it unconditionally
135: * Kuse : kernel uses it, safely
136: * Kdep : kernel might depend on it
137: */
138: typedef struct {
139: screen_evque_t evque; /* Kset, Kuse */
140: short mouse_buttons; /* Kset */
141: screen_point_t xx3 /*tablet*/;
142: short xx4 /*tswitches*/;
143: screen_point_t cursor; /* Kset */
144: short row; /* Kdep */
145: short col; /* Kdep */
146: short max_row; /* Kdep */
147: short max_col; /* Kdep */
148: short max_x; /* Kset */
149: short max_y; /* Kset */
150: short max_cur_x; /* Kdep */
151: short max_cur_y; /* Kdep */
152: int version; /* Kset */
153: union {
154: struct {
155: unsigned char * bitmap; /* Kset */
156: short * x16 /*scanmap*/;
157: short * x17 /*cursorbits*/;
158: short * x18 /*pmaddr*/;
159: unsigned char * planemask; /* Kset */
160: } pm;
161: struct {
162: int x15 /* flags */;
163: int * gram /* Kset */;
164: int * rb_addr /* Kset */;
165: int rb_phys /* Kset */;
166: int rb_size /* Kset */;
167: } gx;
168: } dev_dep_1;
169: screen_point_t mouse_loc; /* Kdep */
170: screen_rect_t mouse_box; /* Kdep */
171: short mouse_threshold;/* Kuse */
172: short mouse_scale; /* Kuse */
173: short min_cur_x; /* Kdep */
174: short min_cur_y; /* Kdep */
175: union {
176: struct {
177: int x26 /*dev_type*/;
178: char * x27 /*framebuffer*/;
179: char * x28 /*volatile struct bt459 *bt459*/;
180: int x29 /*slot*/;
181: char cursor_sprite[1024];/* Kset */
182: unsigned char Bg_color[3]; /* Kset */
183: unsigned char Fg_color[3]; /* Kset */
184: int tablet_scale_x; /* Kuse */
185: int tablet_scale_y; /* Kuse */
186: } pm;
187: struct {
188: char * gxo /* Kset */;
189: char stamp_width /* Kset */;
190: char stamp_height /* Kset */;
191: char nplanes /* Kset */;
192: char x27_4 /* n10_present */;
193: char x28_1 /* dplanes */;
194: char zplanes /* Kset */;
195: char zzplanes /* Kset */;
196: unsigned char cursor_sprite[1024] /* Kuse */;
197: char x285_0 /* padding for next, which was int */;
198: unsigned char Fg_color[4] /* Kuse */;
199: unsigned char Bg_color[4] /* Kuse */;
200: unsigned short cmap_index /* Kuse */;
201: unsigned short cmap_count /* Kuse */;
202: unsigned int colormap[256] /* Kuse */;
203: int * stic_dma_rb /* Kset */;
204: int * stic_reg /* Kset */;
205: int ptpt_phys /* Kdep */;
206: int ptpt_size /* Kdep */;
207: int * ptpt_pgin /* Kset */;
208: } gx;
209: } dev_dep_2;
210: short frame_scanline_width; /* in pixels, Kset */
211: short frame_height; /* in scanlines, Kset */
212: /*
213: * Event queues are allocated right after that
214: */
215: #define MAX_EVENTS 64
216: #define MAX_TRACK 100
217: screen_event_t event_queue[MAX_EVENTS]; /* Kset */
218: screen_timed_point_t point_track[MAX_TRACK]; /* Kset */
219: /*
220: * Some like it hot
221: */
222: unsigned int event_id;
223: int interrupt_info;
224: } user_info_t;
225:
226:
227: /*
228: * Screen get_status codes and arguments
229: */
230: #include <sys/ioctl.h>
231:
232: /* Get size (and offset) of mapped info */
233: #define SCREEN_GET_OFFSETS _IOR('q', 6, unsigned **)
234:
235: /* Get screen status flags */
236: #define SCREEN_STATUS_FLAGS _IOR('q', 22, int *)
237: # define MONO_SCREEN 0x01
238: # define COLOR_SCREEN 0x02
239: # define SCREEN_BEING_UPDATED 0x04
240:
241: /*
242: * Screen set_status codes and arguments
243: */
244:
245: /* start/stop screen saver, control fading interval */
246: #define SCREEN_FADE _IOW('q', 114, int) /* fade screen */
247: # define NO_FADE -1
248:
249: /* Turn video on/off manually */
250: #define SCREEN_ON _IO('q', 10)
251: #define SCREEN_OFF _IO('q', 11)
252:
253: /* Fixup pointers inside mapped info structure */
254: #define SCREEN_ADJ_MAPPED_INFO _IOR('q', 1, user_info_t *)
255:
256: /* Initialize anything that needs to, hw-wise */
257: #define SCREEN_INIT _IO('q', 4)
258:
259: /* Position cursor to a specific spot */
260: #define SCREEN_SET_CURSOR _IOW('q', 2, screen_point_t)
261:
262: /* Load Bg/Fg colors for cursor */
263: #define SCREEN_SET_CURSOR_COLOR _IOW('q', 3, cursor_color_t)
264:
265: /* Load cursor sprite, small cursor form */
266: typedef unsigned short cursor_sprite_t[32];
267:
268: #define SCREEN_LOAD_CURSOR _IOW('q', 7, cursor_sprite_t)
269:
270: /* Load cursor sprite, large 64x64 cursor form */
271: typedef char cursor_sprite_long_t[1024];
272:
273: #define SCREEN_LOAD_CURSOR_LONG _IOW('q', 13, cursor_sprite_long_t)
274:
275: /* Modify a given entry in the color map (VDAC) */
276: #define SCREEN_SET_CMAP_ENTRY _IOW('q', 12, color_map_entry_t)
277:
278: /* Return some other information about hardware (optional) */
279: typedef struct {
280: int frame_width;
281: int frame_height;
282: int frame_visible_width;
283: int frame_visible_height;
284: } screen_hw_info_t;
285: #define SCREEN_HARDWARE_INFO _IOR('q', 23, screen_hw_info_t)
286:
287: /* Screen-dependent, unspecified (and despised) */
288: #define SCREEN_HARDWARE_DEP _IO('q', 24)
289:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.