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