PLplot  5.10.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
plevent.h
Go to the documentation of this file.
1 // $Id: plevent.h 11283 2010-10-28 22:38:29Z airwin $
2 //
3 // Input event (especially keyboard) definitions for use from plplot
4 // event handlers.
5 //
6 // Key definitions are taken from the X11/keysymdef.h include file, with
7 // some changes:
8 // - only the control keys are retained
9 // - the XK prefix has been changed to PLK
10 // - control keys with ASCII equivalents use the ASCII code
11 //
12 // By using the ASCII equivalent (if it exists) for all control keys, it
13 // is easier to handle keyboard input from any device which is ASCII based.
14 // Devices which use some other kind of key encoding must translate the raw
15 // keycodes to those used here.
16 //
17 
18 #ifndef __PLEVENT_H__
19 #define __PLEVENT_H__
20 
21 // Key definitions
22 
23 //--------------------------------------------------------------------------
24 // Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
25 // and the Massachusetts Institute of Technology, Cambridge, Massachusetts.
26 //
27 // All Rights Reserved
28 //
29 // Permission to use, copy, modify, and distribute this software and its
30 // documentation for any purpose and without fee is hereby granted,
31 // provided that the above copyright notice appear in all copies and that
32 // both that copyright notice and this permission notice appear in
33 // supporting documentation, and that the names of Digital or MIT not be
34 // used in advertising or publicity pertaining to distribution of the
35 // software without specific, written prior permission.
36 //
37 // DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
38 // ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
39 // DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
40 // ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
41 // WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
42 // ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
43 // SOFTWARE.
44 //
45 //--------------------------------------------------------------------------
46 
47 // Miscellaneous control keys, those with ASCII equivalents
48 
49 #define PLK_BackSpace 0x08 // back space, back char
50 #define PLK_Tab 0x09
51 #define PLK_Linefeed 0x0A // Linefeed, LF
52 #define PLK_Return 0x0D // Return, enter
53 #define PLK_Escape 0x1B
54 #define PLK_Delete 0xFF // Delete, rubout
55 
56 // Those without ASCII equivalents
57 
58 #define PLK_Clear 0xFF0B
59 #define PLK_Pause 0xFF13 // Pause, hold
60 #define PLK_Scroll_Lock 0xFF14
61 
62 // Cursor control & motion
63 
64 #define PLK_Home 0xFF50
65 #define PLK_Left 0xFF51 // Move left, left arrow
66 #define PLK_Up 0xFF52 // Move up, up arrow
67 #define PLK_Right 0xFF53 // Move right, right arrow
68 #define PLK_Down 0xFF54 // Move down, down arrow
69 #define PLK_Prior 0xFF55 // Prior, previous (Page Up)
70 #define PLK_Next 0xFF56 // Next (Page Down)
71 #define PLK_End 0xFF57 // EOL
72 #define PLK_Begin 0xFF58 // BOL
73 
74 // Misc Functions
75 
76 #define PLK_Select 0xFF60 // Select, mark
77 #define PLK_Print 0xFF61
78 #define PLK_Execute 0xFF62 // Execute, run, do
79 #define PLK_Insert 0xFF63 // Insert, insert here
80 #define PLK_Undo 0xFF65 // Undo, oops
81 #define PLK_Redo 0xFF66 // redo, again
82 #define PLK_Menu 0xFF67
83 #define PLK_Find 0xFF68 // Find, search
84 #define PLK_Cancel 0xFF69 // Cancel, stop, abort, exit
85 #define PLK_Help 0xFF6A // Help, ?
86 #define PLK_Break 0xFF6B
87 #define PLK_Mode_switch 0xFF7E // Character set switch
88 #define PLK_script_switch 0xFF7E // Alias for mode_switch
89 #define PLK_Num_Lock 0xFF7F
90 
91 // Keypad Functions, keypad numbers cleverly chosen to map to ascii
92 
93 #define PLK_KP_Space 0xFF80 // space
94 #define PLK_KP_Tab 0xFF89
95 #define PLK_KP_Enter 0xFF8D // enter
96 #define PLK_KP_F1 0xFF91 // PF1, KP_A, ...
97 #define PLK_KP_F2 0xFF92
98 #define PLK_KP_F3 0xFF93
99 #define PLK_KP_F4 0xFF94
100 #define PLK_KP_Equal 0xFFBD // equals
101 #define PLK_KP_Multiply 0xFFAA
102 #define PLK_KP_Add 0xFFAB
103 #define PLK_KP_Separator 0xFFAC // separator, often comma
104 #define PLK_KP_Subtract 0xFFAD
105 #define PLK_KP_Decimal 0xFFAE
106 #define PLK_KP_Divide 0xFFAF
107 
108 #define PLK_KP_0 0xFFB0
109 #define PLK_KP_1 0xFFB1
110 #define PLK_KP_2 0xFFB2
111 #define PLK_KP_3 0xFFB3
112 #define PLK_KP_4 0xFFB4
113 #define PLK_KP_5 0xFFB5
114 #define PLK_KP_6 0xFFB6
115 #define PLK_KP_7 0xFFB7
116 #define PLK_KP_8 0xFFB8
117 #define PLK_KP_9 0xFFB9
118 
119 //
120 // Auxilliary Functions; note the duplicate definitions for left and right
121 // function keys; Sun keyboards and a few other manufactures have such
122 // function key groups on the left and/or right sides of the keyboard.
123 // We've not found a keyboard with more than 35 function keys total.
124 //
125 
126 #define PLK_F1 0xFFBE
127 #define PLK_F2 0xFFBF
128 #define PLK_F3 0xFFC0
129 #define PLK_F4 0xFFC1
130 #define PLK_F5 0xFFC2
131 #define PLK_F6 0xFFC3
132 #define PLK_F7 0xFFC4
133 #define PLK_F8 0xFFC5
134 #define PLK_F9 0xFFC6
135 #define PLK_F10 0xFFC7
136 #define PLK_F11 0xFFC8
137 #define PLK_L1 0xFFC8
138 #define PLK_F12 0xFFC9
139 #define PLK_L2 0xFFC9
140 #define PLK_F13 0xFFCA
141 #define PLK_L3 0xFFCA
142 #define PLK_F14 0xFFCB
143 #define PLK_L4 0xFFCB
144 #define PLK_F15 0xFFCC
145 #define PLK_L5 0xFFCC
146 #define PLK_F16 0xFFCD
147 #define PLK_L6 0xFFCD
148 #define PLK_F17 0xFFCE
149 #define PLK_L7 0xFFCE
150 #define PLK_F18 0xFFCF
151 #define PLK_L8 0xFFCF
152 #define PLK_F19 0xFFD0
153 #define PLK_L9 0xFFD0
154 #define PLK_F20 0xFFD1
155 #define PLK_L10 0xFFD1
156 #define PLK_F21 0xFFD2
157 #define PLK_R1 0xFFD2
158 #define PLK_F22 0xFFD3
159 #define PLK_R2 0xFFD3
160 #define PLK_F23 0xFFD4
161 #define PLK_R3 0xFFD4
162 #define PLK_F24 0xFFD5
163 #define PLK_R4 0xFFD5
164 #define PLK_F25 0xFFD6
165 #define PLK_R5 0xFFD6
166 #define PLK_F26 0xFFD7
167 #define PLK_R6 0xFFD7
168 #define PLK_F27 0xFFD8
169 #define PLK_R7 0xFFD8
170 #define PLK_F28 0xFFD9
171 #define PLK_R8 0xFFD9
172 #define PLK_F29 0xFFDA
173 #define PLK_R9 0xFFDA
174 #define PLK_F30 0xFFDB
175 #define PLK_R10 0xFFDB
176 #define PLK_F31 0xFFDC
177 #define PLK_R11 0xFFDC
178 #define PLK_F32 0xFFDD
179 #define PLK_R12 0xFFDD
180 #define PLK_R13 0xFFDE
181 #define PLK_F33 0xFFDE
182 #define PLK_F34 0xFFDF
183 #define PLK_R14 0xFFDF
184 #define PLK_F35 0xFFE0
185 #define PLK_R15 0xFFE0
186 
187 // Modifiers
188 
189 #define PLK_Shift_L 0xFFE1 // Left shift
190 #define PLK_Shift_R 0xFFE2 // Right shift
191 #define PLK_Control_L 0xFFE3 // Left control
192 #define PLK_Control_R 0xFFE4 // Right control
193 #define PLK_Caps_Lock 0xFFE5 // Caps lock
194 #define PLK_Shift_Lock 0xFFE6 // Shift lock
195 
196 #define PLK_Meta_L 0xFFE7 // Left meta
197 #define PLK_Meta_R 0xFFE8 // Right meta
198 #define PLK_Alt_L 0xFFE9 // Left alt
199 #define PLK_Alt_R 0xFFEA // Right alt
200 #define PLK_Super_L 0xFFEB // Left super
201 #define PLK_Super_R 0xFFEC // Right super
202 #define PLK_Hyper_L 0xFFED // Left hyper
203 #define PLK_Hyper_R 0xFFEE // Right hyper
204 
205 #endif // __PLEVENT_H__