This file is indexed.

/usr/include/xview/win_input.h is in xviewg-dev 3.2p1.4-28.1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
/*      @(#)win_input.h  20.55  93/06/28  SMI   */
  
/*
 *	(c) Copyright 1989 Sun Microsystems, Inc. Sun design patents 
 *	pending in the U.S. and foreign countries. See LEGAL NOTICE 
 *	file for terms of the license.
 */

/*
 * XView related input definitions.
 */

#ifndef	xview_win_input_DEFINED
#define	xview_win_input_DEFINED

/*
 ***********************************************************************
 *				Include Files
 ***********************************************************************
 */

#include <sys/types.h>
#include <sys/time.h>
#include <X11/Xlib.h>
#include <xview/base.h>
#include <xview/win_event.h>

/*
 ***********************************************************************
 *			Definitions and Macros
 ***********************************************************************
 */


/*
 * PUBLIC #defines 
 */

/*
 * XView semantic events 
 */

#define XVIEW_FIRST                   vuid_first(XVIEW_DEVID)

#define ACTION_NULL_EVENT             	(XVIEW_FIRST+0)		/* 31744 */
#define ACTION_ERASE_CHAR_BACKWARD    	(XVIEW_FIRST+1)
#define ACTION_ERASE_CHAR_FORWARD     	(XVIEW_FIRST+2)
#define ACTION_ERASE_WORD_BACKWARD    	(XVIEW_FIRST+3)
#define ACTION_ERASE_WORD_FORWARD     	(XVIEW_FIRST+4)
#define ACTION_ERASE_LINE_BACKWARD    	(XVIEW_FIRST+5)
#define ACTION_ERASE_LINE_END         	(XVIEW_FIRST+6)
#define ACTION_ERASE_SPARE1           	(XVIEW_FIRST+7)

#define ACTION_GO_CHAR_BACKWARD         (XVIEW_FIRST+8)		/* 31752 */
#define ACTION_GO_CHAR_FORWARD          (XVIEW_FIRST+9)
#define ACTION_GO_WORD_BACKWARD         (XVIEW_FIRST+10)
#define ACTION_GO_WORD_FORWARD          (XVIEW_FIRST+11)
#define ACTION_GO_WORD_END            	(XVIEW_FIRST+12)
#define ACTION_GO_LINE_BACKWARD         (XVIEW_FIRST+13)
#define ACTION_GO_LINE_FORWARD          (XVIEW_FIRST+14)
#define ACTION_GO_LINE_END            	(XVIEW_FIRST+15)
#define ACTION_GO_LINE_START          	(XVIEW_FIRST+16)        /* 31760 */
#define ACTION_GO_COLUMN_BACKWARD     	(XVIEW_FIRST+17)
#define ACTION_GO_COLUMN_FORWARD      	(XVIEW_FIRST+18)
#define ACTION_GO_DOCUMENT_START      	(XVIEW_FIRST+19)
#define ACTION_GO_DOCUMENT_END          (XVIEW_FIRST+20)
#define ACTION_GO_PAGE_FORWARD          (XVIEW_FIRST+21)
#define ACTION_GO_PAGE_BACKWARD         (XVIEW_FIRST+22)

#define ACTION_STOP                   	(XVIEW_FIRST+23)        /* 31767 */
#define ACTION_AGAIN                  	(XVIEW_FIRST+24)
#define ACTION_PROPS                  	(XVIEW_FIRST+25)
#define ACTION_UNDO                   	(XVIEW_FIRST+26)
#define ACTION_REDO                   	(XVIEW_FIRST+27)
#define ACTION_FRONT                  	(XVIEW_FIRST+28)
#define ACTION_BACK                   	(XVIEW_FIRST+29)
#define ACTION_COPY                   	(XVIEW_FIRST+30)
#define ACTION_OPEN                   	(XVIEW_FIRST+31)
#define ACTION_CLOSE                  	(XVIEW_FIRST+32)
#define ACTION_PASTE                  	(XVIEW_FIRST+33)
#define ACTION_FIND_BACKWARD          	(XVIEW_FIRST+34)
#define ACTION_FIND_FORWARD           	(XVIEW_FIRST+35)
#define ACTION_REPLACE                  (XVIEW_FIRST+36)
#define ACTION_CUT                    	(XVIEW_FIRST+37)

#define ACTION_SELECT_FIELD_BACKWARD  	(XVIEW_FIRST+38)        /* 31782 */
#define ACTION_SELECT_FIELD_FORWARD   	(XVIEW_FIRST+39)
#define ACTION_COPY_THEN_PASTE          (XVIEW_FIRST+40)
#define ACTION_STORE                  	(XVIEW_FIRST+41)
#define ACTION_LOAD                   	(XVIEW_FIRST+42)
#define ACTION_INCLUDE_FILE           	(XVIEW_FIRST+43)
#define ACTION_GET_FILENAME           	(XVIEW_FIRST+44)
#define ACTION_SET_DIRECTORY          	(XVIEW_FIRST+45)
#define ACTION_DO_IT                  	(XVIEW_FIRST+46)
#define ACTION_HELP                   	(XVIEW_FIRST+47)
#define ACTION_INSERT                 	(XVIEW_FIRST+48)
#define ACTION_INVOKE                 	(XVIEW_FIRST+49)
#define ACTION_EXPAND                 	(XVIEW_FIRST+50)
#define ACTION_MATCH_DELIMITER          (XVIEW_FIRST+51)        /* 31795 */
#define ACTION_CAPS_LOCK                (XVIEW_FIRST+52)
#define ACTION_QUOTE                  	(XVIEW_FIRST+53)
#define ACTION_EMPTY                  	(XVIEW_FIRST+54)
#define ACTION_SELECT                 	(XVIEW_FIRST+55)
#define ACTION_ADJUST                 	(XVIEW_FIRST+56)
#define ACTION_MENU                   	(XVIEW_FIRST+57)
#define ACTION_DRAG_MOVE              	(XVIEW_FIRST+58)        /* 31802 */
#define ACTION_DRAG_COPY              	(XVIEW_FIRST+59)        /* 31803 */
#define ACTION_DRAG_LOAD              	(XVIEW_FIRST+60)        /* 31804 */


#define ACTION_SPLIT_HORIZONTAL         (XVIEW_FIRST+61)        /* 31805 */
#define ACTION_SPLIT_VERTICAL         	(XVIEW_FIRST+62)        /* 31806 */
#define ACTION_SPLIT_INIT             	(XVIEW_FIRST+63)        /* 31807 */
#define ACTION_SPLIT_DESTROY          	(XVIEW_FIRST+64)        /* 31808 */


/*
 * OPEN LOOK events 
 */
#define ACTION_RESCALE                  (XVIEW_FIRST+65)        /* 31809 */
#define ACTION_PININ                  	(XVIEW_FIRST+66)        /* 31810 */
#define ACTION_PINOUT                 	(XVIEW_FIRST+67)        /* 31811 */
#define ACTION_DISMISS                  (XVIEW_FIRST+68)        /* 31812 */
#define ACTION_TAKE_FOCUS             	(XVIEW_FIRST+71)        /* 31815 */

#define ACTION_DEBUG1                 	(XVIEW_FIRST+72)        /* 31816 */
#define ACTION_DEBUG2                 	(XVIEW_FIRST+73)        /* 31817 */


/*
 * Mouseless Model keyboard commands
 */
#define ACTION_ACCELERATOR		(XVIEW_FIRST+74)	/* 31818 */
#define ACTION_DELETE_SELECTION		(XVIEW_FIRST+75)	/* 31819 */
#define ACTION_ERASE_LINE		(XVIEW_FIRST+76)	/* 31820 */
#define ACTION_HORIZONTAL_SCROLLBAR_MENU (XVIEW_FIRST+77)	/* 31821 */
#define ACTION_INPUT_FOCUS_HELP		(XVIEW_FIRST+78)	/* 31822 */
#define ACTION_JUMP_DOWN 		(XVIEW_FIRST+79)	/* 31823 */ 
#define ACTION_JUMP_MOUSE_TO_INPUT_FOCUS (XVIEW_FIRST+80)	/* 31824 */ 
#define ACTION_JUMP_UP 			(XVIEW_FIRST+81)	/* 31825 */
#define ACTION_MORE_HELP		(XVIEW_FIRST+82)	/* 31826 */
#define ACTION_MORE_TEXT_HELP		(XVIEW_FIRST+83)	/* 31827 */
#define ACTION_NEXT_ELEMENT		(XVIEW_FIRST+84)	/* 31828 */
#define ACTION_NEXT_PANE		(XVIEW_FIRST+85)	/* 31829 */
#define ACTION_PANE_BACKGROUND		(XVIEW_FIRST+86)	/* 31830 */
#define ACTION_PANE_LEFT		(XVIEW_FIRST+87)	/* 31831 */
#define ACTION_PANE_RIGHT		(XVIEW_FIRST+88)	/* 31832 */
#define ACTION_PANEL_START		(XVIEW_FIRST+89)	/* 31833 */
#define ACTION_PANEL_END		(XVIEW_FIRST+90)	/* 31834 */
#define ACTION_PREVIOUS_ELEMENT		(XVIEW_FIRST+91)	/* 31835 */
#define ACTION_PREVIOUS_PANE		(XVIEW_FIRST+92)	/* 31836 */
#define ACTION_QUOTE_NEXT_KEY		(XVIEW_FIRST+93)	/* 31837 */
#define ACTION_RESUME_MOUSELESS		(XVIEW_FIRST+94)	/* 31838 */
#define ACTION_SCROLL_DATA_END		(XVIEW_FIRST+95)	/* 31839 */
#define ACTION_SCROLL_DATA_START	(XVIEW_FIRST+96)	/* 31840 */
#define ACTION_SCROLL_DOWN		(XVIEW_FIRST+97)	/* 31841 */
#define ACTION_SCROLL_JUMP_DOWN		(XVIEW_FIRST+98)	/* 31842 */
#define ACTION_SCROLL_JUMP_LEFT		(XVIEW_FIRST+99)	/* 31843 */
#define ACTION_SCROLL_JUMP_RIGHT	(XVIEW_FIRST+100)	/* 31844 */
#define ACTION_SCROLL_JUMP_UP		(XVIEW_FIRST+101)	/* 31845 */
#define ACTION_SCROLL_LEFT		(XVIEW_FIRST+102)	/* 31846 */
#define ACTION_SCROLL_LINE_END		(XVIEW_FIRST+103)	/* 31847 */
#define ACTION_SCROLL_LINE_START	(XVIEW_FIRST+104)	/* 31848 */
#define ACTION_SCROLL_RIGHT		(XVIEW_FIRST+105)	/* 31849 */
#define ACTION_SCROLL_PANE_DOWN		(XVIEW_FIRST+106)	/* 31850 */
#define ACTION_SCROLL_PANE_LEFT		(XVIEW_FIRST+107)	/* 31851 */
#define ACTION_SCROLL_PANE_RIGHT	(XVIEW_FIRST+108)	/* 31852 */
#define ACTION_SCROLL_PANE_UP		(XVIEW_FIRST+109)	/* 31853 */
#define ACTION_SCROLL_UP		(XVIEW_FIRST+110)	/* 31854 */
#define ACTION_SELECT_ALL		(XVIEW_FIRST+111)	/* 31855 */
#define ACTION_SELECT_DATA_END		(XVIEW_FIRST+112)	/* 31856 */
#define ACTION_SELECT_DATA_START	(XVIEW_FIRST+113)	/* 31857 */
#define ACTION_SELECT_DOWN		(XVIEW_FIRST+114)	/* 31858 */
#define ACTION_SELECT_JUMP_DOWN		(XVIEW_FIRST+115)	/* 31859 */
#define ACTION_SELECT_JUMP_LEFT		(XVIEW_FIRST+116)	/* 31860 */
#define ACTION_SELECT_JUMP_RIGHT	(XVIEW_FIRST+117)	/* 31861 */
#define ACTION_SELECT_JUMP_UP		(XVIEW_FIRST+118)	/* 31862 */
#define ACTION_SELECT_LEFT		(XVIEW_FIRST+119)	/* 31863 */
#define ACTION_SELECT_LINE_END		(XVIEW_FIRST+120)	/* 31864 */
#define ACTION_SELECT_LINE_START	(XVIEW_FIRST+121)	/* 31865 */
#define ACTION_SELECT_RIGHT		(XVIEW_FIRST+122)	/* 31866 */
#define ACTION_SELECT_PANE_DOWN		(XVIEW_FIRST+123)	/* 31867 */
#define ACTION_SELECT_PANE_LEFT		(XVIEW_FIRST+124)	/* 31868 */
#define ACTION_SELECT_PANE_RIGHT	(XVIEW_FIRST+125)	/* 31869 */
#define ACTION_SELECT_PANE_UP		(XVIEW_FIRST+126)	/* 31870 */
#define ACTION_SELECT_UP		(XVIEW_FIRST+127)	/* 31871 */
#define ACTION_SUSPEND_MOUSELESS	(XVIEW_FIRST+128) 	/* 31872 */
#define ACTION_TEXT_HELP		(XVIEW_FIRST+129)	/* 31873 */
#define ACTION_TRANSLATE		(XVIEW_FIRST+130)	/* 31874 */
#define ACTION_VERTICAL_SCROLLBAR_MENU	(XVIEW_FIRST+131)	/* 31875 */

#define ACTION_CANCEL			ACTION_STOP
#define ACTION_DATA_END			ACTION_GO_DOCUMENT_END
#define ACTION_DATA_START		ACTION_GO_DOCUMENT_START
#define ACTION_DEFAULT_ACTION		ACTION_DO_IT
#define ACTION_DOWN			ACTION_GO_COLUMN_FORWARD
#define ACTION_JUMP_LEFT		ACTION_GO_WORD_BACKWARD
#define ACTION_JUMP_RIGHT		ACTION_GO_WORD_END
#define ACTION_LEFT			ACTION_GO_CHAR_BACKWARD
#define ACTION_LINE_END			ACTION_ROW_END
#define ACTION_LINE_START		ACTION_ROW_START
#define ACTION_PANE_DOWN		ACTION_GO_PAGE_FORWARD
#define ACTION_PANE_UP			ACTION_GO_PAGE_BACKWARD
#define ACTION_PARAGRAPH_DOWN		ACTION_JUMP_DOWN
#define ACTION_PARAGRAPH_UP		ACTION_JUMP_UP
#define ACTION_RIGHT			ACTION_GO_CHAR_FORWARD
#define ACTION_ROW_END			ACTION_GO_LINE_END
#define ACTION_ROW_START		ACTION_GO_LINE_BACKWARD
#define ACTION_SCROLL_CHAR_BACKWARD	ACTION_SCROLL_LEFT
#define ACTION_SCROLL_CHAR_FORWARD	ACTION_SCROLL_RIGHT
#define ACTION_SCROLL_COLUMN_BACKWARD	ACTION_SCROLL_UP
#define ACTION_SCROLL_COLUMN_FORWARD	ACTION_SCROLL_DOWN
#define ACTION_SCROLL_DOCUMENT_END	ACTION_SCROLL_DATA_END
#define ACTION_SCROLL_DOCUMENT_START	ACTION_SCROLL_DATA_START
#define ACTION_SCROLL_ROW_END		ACTION_SCROLL_LINE_END
#define ACTION_SCROLL_ROW_START		ACTION_SCROLL_LINE_START
#define ACTION_SCROLL_PARAGRAPH_DOWN	ACTION_SCROLL_JUMP_DOWN
#define ACTION_SCROLL_PARAGRAPH_UP	ACTION_SCROLL_JUMP_UP
#define ACTION_SCROLL_WORD_BACKWARD	ACTION_SCROLL_JUMP_LEFT
#define ACTION_SCROLL_WORD_END		ACTION_SCROLL_JUMP_RIGHT
#define ACTION_SELECT_CHAR_BACKWARD	ACTION_SELECT_LEFT
#define ACTION_SELECT_CHAR_FORWARD	ACTION_SELECT_RIGHT
#define ACTION_SELECT_COLUMN_BACKWARD	ACTION_SELECT_UP
#define ACTION_SELECT_COLUMN_FORWARD	ACTION_SELECT_DOWN
#define ACTION_SELECT_DOCUMENT_END	ACTION_SELECT_DATA_END
#define ACTION_SELECT_DOCUMENT_START	ACTION_SELECT_DATA_START
#define ACTION_SELECT_NEXT_FIELD	ACTION_SELECT_FIELD_FORWARD
#define ACTION_SELECT_PREVIOUS_FIELD	ACTION_SELECT_FIELD_BACKWARD
#define ACTION_SELECT_ROW_END		ACTION_SELECT_LINE_END
#define ACTION_SELECT_ROW_START		ACTION_SELECT_LINE_START
#define ACTION_SELECT_PARAGRAPH_DOWN	ACTION_SELECT_JUMP_DOWN
#define ACTION_SELECT_PARAGRAPH_UP	ACTION_SELECT_JUMP_UP
#define ACTION_SELECT_WORD_BACKWARD	ACTION_SELECT_JUMP_LEFT
#define ACTION_SELECT_WORD_END		ACTION_SELECT_JUMP_RIGHT
#define ACTION_UP			ACTION_GO_COLUMN_BACKWARD

/* Drag and Drop actions */
#define ACTION_DRAG_PREVIEW		(XVIEW_FIRST+132)	/* 31876 */

#define XVIEW_LAST                    	ACTION_DRAG_PREVIEW	/* 31876 */


/*
 * Server related definitions
 */
#define	LOC_MOVE			(VKEY_FIRSTPSEUDO+0)	/* 32512 */
#define	LOC_WINENTER			(VKEY_FIRSTPSEUDO+1)	/* 32513 */
#define	LOC_WINEXIT			(VKEY_FIRSTPSEUDO+2)	/* 32514 */
#define	LOC_MOVEWHILEBUTDOWN		(VKEY_FIRSTPSEUDO+3)	/* 32515 */
#define	LOC_DRAG			LOC_MOVEWHILEBUTDOWN	/* 32515 */
#define	WIN_REPAINT			(VKEY_FIRSTPSEUDO+4)	/* 32516 */
#define	WIN_RESIZE			(VKEY_FIRSTPSEUDO+5)	/* 32517 */
#define	WIN_STRUCTURE_NOTIFY		WIN_RESIZE		/* 32517 */
#define	WIN_MAP_NOTIFY			(VKEY_FIRSTPSEUDO+6)	/* 32518 */
#define	WIN_UNMAP_NOTIFY		(VKEY_FIRSTPSEUDO+7)	/* 32519 */
#define	KBD_USE				(VKEY_FIRSTPSEUDO+8)	/* 32520 */
#define	KBD_DONE			(VKEY_FIRSTPSEUDO+9)	/* 32521 */
#define WIN_CLIENT_MESSAGE      	(VKEY_FIRSTPSEUDO+10)   /* 32522 */

#define KBD_MAP                         (VKEY_FIRSTPSEUDO+11)   /* 32523 */
#define WIN_GRAPHICS_EXPOSE             (VKEY_FIRSTPSEUDO+12)   /* 32524 */
#define WIN_NO_EXPOSE                   (VKEY_FIRSTPSEUDO+13)   /* 32525 */
#define WIN_VISIBILITY_NOTIFY           (VKEY_FIRSTPSEUDO+14)   /* 32526 */
#define WIN_CREATE_NOTIFY               (VKEY_FIRSTPSEUDO+15)   /* 32527 */
#define WIN_SUBSTRUCTURE_NOTIFY         WIN_CREATE_NOTIFY       /* 32527 */
#define WIN_DESTROY_NOTIFY              (VKEY_FIRSTPSEUDO+16)   /* 32528 */
#define WIN_MAP_REQUEST                 (VKEY_FIRSTPSEUDO+17)   /* 32529 */
#define WIN_REPARENT_NOTIFY             (VKEY_FIRSTPSEUDO+18)   /* 32530 */
#define WIN_GRAVITY_NOTIFY              (VKEY_FIRSTPSEUDO+19)   /* 32531 */
#define WIN_RESIZE_REQUEST              (VKEY_FIRSTPSEUDO+20)   /* 32532 */
#define WIN_CONFIGURE_REQUEST           (VKEY_FIRSTPSEUDO+21)   /* 32533 */
#define WIN_SUBSTRUCTURE_REDIRECT       WIN_CONFIGURE_REQUEST   /* 32533 */
#define WIN_CIRCULATE_REQUEST           (VKEY_FIRSTPSEUDO+22)   /* 32534 */
#define WIN_CIRCULATE_NOTIFY            (VKEY_FIRSTPSEUDO+23)   /* 32535 */
#define WIN_PROPERTY_NOTIFY             (VKEY_FIRSTPSEUDO+24)   /* 32536 */
#define SEL_CLEAR                       (VKEY_FIRSTPSEUDO+25)   /* 32537 */
#define SEL_REQUEST                     (VKEY_FIRSTPSEUDO+26)   /* 32538 */
#define SEL_NOTIFY                      (VKEY_FIRSTPSEUDO+27)   /* 32539 */
#define WIN_COLORMAP_NOTIFY             (VKEY_FIRSTPSEUDO+28)   /* 32540 */
#define MAPPING_NOTIFY                  (VKEY_FIRSTPSEUDO+29)   /* 32541 */

#define WIN_UNUSED_11                   (VKEY_FIRSTPSEUDO+30)   /* 32542 */

/*
 * In XVIEW, there is no way to generate SIGURG. We will
 * generate WIN_STOP every time L1 function key event happens
 */
#define	WIN_STOP			KEY_LEFT(1)

/*
 * The inputmask consists of a input code array + flags that indicates those
 * user actions to be placed in the input queue.
 */

/* Under Linux/ELF, BITSPERBYTE also gets defined in /usr/include/values.h
 * martin-2.buck@student.uni-ulm.de
 */
#if 1
#ifndef BITSPERBYTE
#define BITSPERBYTE 8
#endif
#if (BITSPERBYTE != 8)
#error BITSPERBYTE != 8
#endif
#else
#define	BITSPERBYTE			8
#endif

#define KEY_CODES      	(VKEY_LAST-VKEY_FIRST)
				/* The number of the virtual keyboard device
				   codes that are contained within the input
				   mask. */

#define	IM_NEGEVENT	(0x01)	/* send input negative events too */
#define	IM_POSASCII	(0x02)	/* OBSOLETE:no neg ASCII even if IM_NEGEVENT */
#define	IM_ANSI		(0x04)	/* OBSOLETE: ansi with funcs encoded in ESC[ */
#define	IM_UNENCODED	(0x08)	/* OBSOLETE: pure device codes */
#define	IM_ASCII	(0x10)	/* enable ASCII codes 0-127 */
#define	IM_META		(0x20)	/* OBSOLETE: enable META codes 128-255 */
#define IM_ISO		(0x30)	/* enable ISO codes 0-255 */
#define	IM_NEGASCII	(0x40)	/* enable negative ASCII codes 0-127 */
#define	IM_NEGMETA	(0x80)	/* OBSOLETE: enable neg. META codes 128-255 */
#define IM_NEGISO	(0xC0)	/* enable negative ISO codes 0-255 */
#define	IM_TOP		(0x100)	/* enable TOP codes 256-511 */
#define	IM_NEGTOP	(0x200)	/* enable negative TOP codes 256-511 */
#define	IM_INTRANSIT	(0x400)	/* don't surpress locator events when
				   in-transit over window */
				   
/* This number has to be rounded up in whole number */ 
#define	IM_MASKSIZE		(((KEY_CODES + ((sizeof(char))*BITSPERBYTE)) - 1)  \
				 / ((sizeof(char))*BITSPERBYTE))

#define	INPUTMASK_NULL	((Inputmask *)0)

#define isworkstationdevid(code) \
	( (( (code) >> 8 ) & 0xff) == WORKSTATION_DEVID )

#define	win_im_slot(code)	(((code)-VKEY_FIRST)/BITSPERBYTE)


/* VKEY_FIRST is defined as 32512 */

#define	win_setinputcodebit(im,code) \
	(im)->im_keycode[win_im_slot(code)] |= \
		(isworkstationdevid(code))? \
	    (1<<((BITSPERBYTE-1)-(((code)-VKEY_FIRST)%BITSPERBYTE))): \
	    0
#define	win_unsetinputcodebit(im,code) \
	(im)->im_keycode[win_im_slot(code)] &= \
		(isworkstationdevid(code))? \
	    (~(1<<((BITSPERBYTE-1)-(((code)-VKEY_FIRST)%BITSPERBYTE)))): \
	    0xff
#define	win_getinputcodebit(im,code) \
	((isworkstationdevid(code))? \
	((im)->im_keycode[win_im_slot(code)] & \
	    (1<<((BITSPERBYTE-1)-(((code)-VKEY_FIRST)%BITSPERBYTE)))): 0)

/*
 * To convert an ascii key code to meta code 
 */
#define META_KEY_MASK	0x80

#define KEYBOARD_KYSM_MASK    0xFF00
#define KEYBOARD_KYSM         0xFF00
                      /* I really should use XVIEW_FIRST here, but since
                       * that involves shifting bits, I would rather just
                       * hardcode in the value here for speed.
                       */
#define XVIEW_SEMANTIC                0x7C00          /* XVIEW_FIRST */

/*
 * Definitions required for input event structures 
 */

#define	IE_NEGEVENT	(1<<0)		/* input code is negative */
#define IE_QUICK_MOVE	(1<<1)		/* Move key is pressed */
#define IE_QUICK_COPY	(1<<2)		/* Duplicate key is pressed */

#define	win_inputnegevent(ie)		((ie)->ie_flags & IE_NEGEVENT)
#define	win_inputposevent(ie)		(!((ie)->ie_flags & IE_NEGEVENT))
#define	event_is_up(event)		(win_inputnegevent((event)))
#define	event_is_down(event)		(win_inputposevent((event)))
#define event_is_quick_move(event)	((event)->ie_flags & IE_QUICK_MOVE)
#define event_is_quick_copy(event)	((event)->ie_flags & IE_QUICK_COPY)
#define	event_set_up(event)		(event)->ie_flags |= IE_NEGEVENT
#define	event_set_down(event)		(event)->ie_flags &= ~IE_NEGEVENT
#define event_set_quick_move(event)	(event)->ie_flags |= IE_QUICK_MOVE
#define event_set_quick_copy(event)	(event)->ie_flags |= IE_QUICK_COPY


/*
 * Values for ie_shiftmask:
 * Same as in sundev/kbd.h 
 */
#ifndef	CAPSLOCK	
#define	CAPSLOCK	0		/* Caps Lock key 		*/
#define	CAPSMASK	0x0001
#define	SHIFTLOCK	1		/* Shift Lock key 		*/
#define	LEFTSHIFT	2		/* Left-hand shift key 		*/
#define	RIGHTSHIFT	3		/* Right-hand shift key 	*/
#define	SHIFTMASK	0x000E
#define	LEFTCTRL	4		/* Left-hand (or only) ctrl key	*/
#define	RIGHTCTRL	5		/* Right-hand control key 	*/
#define	CTRLMASK	0x0030
#endif	/* CAPSLOCK */

#ifndef	META_SHIFT_MASK
#define	META_SHIFT_MASK	0x0040		/* Meta shift mask: Same as 
					 * 'unused...	0x0040' in
					 * sundev/kbd.h
					 */
#endif	/* META_SHIFT_MASK */

#define	MS_LEFT_MASK	0x0080
#define	MS_MIDDLE_MASK	0x0100
#define	MS_RIGHT_MASK	0x0200
#define	MS_BUTTON_MASK	(MS_LEFT_MASK | MS_MIDDLE_MASK | MS_RIGHT_MASK)
#define ALTMASK		0x0400


#define	EVENT_NULL	((Event *)0)


#define event_init(ie)	 	 ((ie)->ie_flags = \
				  (ie)->ie_shiftmask = (ie)->ie_locx = \
				  (ie)->ie_locy = (ie)->ie_time.tv_sec = \
				  (ie)->ie_time.tv_usec = 0, \
				  (ie)->ie_win = NULL, \
				  (ie)->ie_xevent = NULL, \
                    		  (ie)->ie_string = NULL, \
				  (ie)->ie_code = (ie)->action  =  \
				  ACTION_NULL_EVENT)


#define	event_id(event)			((event)->ie_code)
#define event_flags(event)		((event)->ie_flags)
#define	event_shiftmask(event)		((event)->ie_shiftmask)
#define	event_x(event)			((event)->ie_locx)
#define	event_y(event)			((event)->ie_locy)
#define	event_time(event)		((event)->ie_time)
#define event_window(event)		((event)->ie_win)
#define event_string(event)             ((event)->ie_string)
#define event_xevent(event)		((event)->ie_xevent)

/* event action defaults to event id if not set */
#define	event_action(event)		\
	(((event)->action != ACTION_NULL_EVENT) ? ((event)->action) : \
	   event_id((event)))

#define event_xevent_type(event) \
		(((event)->ie_xevent != NULL) ? \
		    ((((XEvent *)(event)->ie_xevent))->type) : \
			XV_ERROR)

#define	event_shift_is_down(event)	(event_shiftmask(event) & SHIFTMASK)
#define	event_ctrl_is_down(event)	(event_shiftmask(event) & CTRLMASK)
#define	event_meta_is_down(event)	(event_shiftmask(event)&META_SHIFT_MASK)
#define event_alt_is_down(event)	(event_shiftmask(event) & ALTMASK)
#define	event_left_is_down(event)	(event_shiftmask(event)&MS_LEFT_MASK)
#define	event_middle_is_down(event)	(event_shiftmask(event)&MS_MIDDLE_MASK)
#define	event_right_is_down(event)	(event_shiftmask(event)&MS_RIGHT_MASK)
#define	event_button_is_down(event)	(event_shiftmask(event)&MS_BUTTON_MASK)
#define event_is_string(event)          (event_string(event)!=NULL)
/*
 * BUG: The following three macros should change when we have remappable
 *	mouse keys.
 */
#define action_select_is_down(event) 	event_left_is_down(event)
#define action_adjust_is_down(event) 	event_middle_is_down(event)
#define action_menu_is_down(event)   	event_right_is_down(event)

#define	event_set_action(event, code)	(event)->action = (code)

#define	event_set_id(event, code) 	\
   event_id(event) = (code), event_set_action(event, ACTION_NULL_EVENT)
					 
#define	event_set_flags(event, flags)	event_flags(event) = (flags)
#define	event_set_shiftmask(event, shiftmask)	event_shiftmask(event) = (shiftmask)
#define	event_set_x(event, x)		event_x(event) = (x)
#define	event_set_y(event, y)		event_y(event) = (y)
#define	event_set_time(event, time)	event_time(event) = (time)
#define	event_set_window(event, win)	event_window(event) = (win)
#define	event_set_xevent(event, xevent)	event_xevent(event) = (xevent)
#define event_set_string(event, string) event_string(event) = (string)


#define	event_is_button(event)		\
   ((event_id(event) >= BUT_FIRST) && (event_id(event) <= BUT_LAST))
				 	 
#define	event_is_ascii(event)		\
   ((event_action(event) >= ASCII_FIRST) && (event_action(event) <= ASCII_LAST))
				 	 
#define	event_is_iso(event)		\
   ((event_action(event) >= ISO_FIRST) && (event_action(event) <= ISO_LAST))
				 	 
#define event_is_meta(event)		\
   (event_is_iso(event) && event_meta_is_down(event))

#define	event_is_key_left(event)	\
   ((event_id(event) >= KEY_LEFTFIRST) && (event_id(event) <= KEY_LEFTLAST))
				 	 
#define	event_is_key_right(event)	\
   ((event_id(event) >= KEY_RIGHTFIRST) && (event_id(event) <= KEY_RIGHTLAST))
 
#define	event_is_key_top(event)	\
   ((event_id(event) >= KEY_TOPFIRST) && (event_id(event) <= KEY_TOPLAST))
				 	 
#define	event_is_key_bottom(event)	\
   ((event_id(event) == KEY_BOTTOMLEFT) || (event_id(event) == KEY_BOTTOMRIGHT))
 

/*
 * Macros to check/set xv_window_loop behaviour
 */
#define WIN_SET_IN_LOOP(in_loop) xv_in_loop = in_loop
#define WIN_IS_IN_LOOP (xv_in_loop)

/*
 *	for mouse control (button order & scaling)
 */

#define	WS_ORDER_LMR		0
#define	WS_ORDER_LRM		1
#define	WS_ORDER_MLR		2
#define	WS_ORDER_MRL		3
#define	WS_ORDER_RLM		4
#define	WS_ORDER_RML		5

/*
 * For the Ws_scale structure 
 */
#define WS_SCALE_MAX_COUNT      16
#define WS_SCALE_MAX_CEILING 0xffff

/*
 * BUG: get rid of these 
 * common left keypad keys
 */
#define	WIN_KEY_STOP		KEY_LEFT(1)
#define	WIN_KEY_AGAIN		KEY_LEFT(2)
#define	WIN_KEY_PROPS		KEY_LEFT(3)
#define	WIN_KEY_UNDO		KEY_LEFT(4)
#define	WIN_KEY_EXPOSE		KEY_LEFT(5)
#define	WIN_KEY_PUT		KEY_LEFT(6)
#define	WIN_KEY_OPEN		KEY_LEFT(7)
#define	WIN_KEY_GET		KEY_LEFT(8)
#define	WIN_KEY_FIND		KEY_LEFT(9)
#define	WIN_KEY_DELETE		KEY_LEFT(10)

#define WIN_KEY_CAPS		KEY_TOP(1)

#define	XV_POINTER_WINDOW	0L		/* PointerWindow in
X.h */
#define	XV_FOCUS_WINDOW		1L		/* InputFocus in
X.h */


/*
 ***********************************************************************
 *		Typedefs, Enumerations, and Structures
 ***********************************************************************
 */

typedef	struct inputmask {
	short	im_flags;
	char	im_keycode[IM_MASKSIZE];
} Inputmask;

/*
 * An input event structure is that which is filled in on a readrecord call.
 * ie_code contains the input code involved.  IE_NEGEVENT is used to indicate
 * a negative event.
 *
 * ie_shiftmask contains selected shift state.
 *
 * The locator position (window relative) is placed in ie_loc*.
 * The time of the input event is put in ie_time (seconds & microseconds).
 * Time zone and daylight savings flag available via system call.
 */

typedef	struct	inputevent {
	short	ie_code;		/* input code */
	short	ie_flags;
	short	ie_shiftmask;		/* input code shift state */
	short	ie_locx, ie_locy;	/* locator (usually a mouse) position */
	struct	timeval ie_time;	/* time of event */
	short	action;			/* keymapped version of ie_code */
	Xv_object	ie_win; 	/* window the event is directed to */
        char    *ie_string;             /* String returned from XLookupString
                                         * or language translation string.    */
	XEvent	*ie_xevent;		/* pointer to actual XEvent struct */
} Event;

typedef struct {
    unsigned short  ceiling;
    unsigned short  factor;
} Ws_scale;

typedef struct {
    Ws_scale        scales[WS_SCALE_MAX_COUNT];
} Ws_scale_list;

EXTERN_FUNCTION (struct rectlist *	win_get_damage, (Xv_object window));
EXTERN_FUNCTION (Xv_object xv_input_readevent, (Xv_object window, Event *event,
 		 int block, int type, Inputmask *im));
extern	int	xv_in_loop;

#endif	/* ~xview_win_input_DEFINED */