xref: /minix3/minix/include/minix/input.h (revision 433d6423c39e34ec4b79c950597bb2d236f886be)
1 #ifndef _MINIX_INPUT_H
2 #define _MINIX_INPUT_H
3 
4 #include <sys/types.h>
5 
6 #ifdef _SYSTEM
7 
8 /* Device type. */
9 #define INPUT_DEV_KBD		0x01	/* keyboard device */
10 #define INPUT_DEV_MOUSE		0x02	/* mouse device */
11 
12 /* Known-invalid input device ID. */
13 #define INVALID_INPUT_ID	(-1)
14 
15 #endif /* _SYSTEM */
16 
17 /*
18  * The input server heavily draws on the USB HID specification for events.
19  * Every driver should convert its event codes into this format.  This also
20  * implies that we use the U.S. keyboard layout for key events.  The mapping to
21  * localized keyboard layouts will be done at a different place (TTY, Xserver).
22  */
23 
24 /* A single event, as read from one of the input devices. */
25 struct input_event {
26 	uint16_t page;			/* event page (INPUT_PAGE_) */
27 	uint16_t code;			/* page-specific event code */
28 	int32_t value;			/* event value */
29 	uint16_t flags;			/* event flags (INPUT_FLAG_) */
30 	uint16_t devid;			/* identifier of source device */
31 	uint32_t rsvd[2];		/* reserved for a future timestamp */
32 };
33 
34 /* Event pages. */
35 #define INPUT_PAGE_GD		0x0001	/* General Desktop page */
36 #define INPUT_PAGE_KEY		0x0007	/* Keyboard/Keypad page */
37 #define INPUT_PAGE_LED		0x0008	/* LED page */
38 #define INPUT_PAGE_BUTTON	0x0009	/* Button page */
39 #define INPUT_PAGE_CONS		0x000C	/* Consumer page */
40 
41 /* Event values.  Not exhaustive. */
42 #define INPUT_RELEASE		0
43 #define INPUT_PRESS		1
44 
45 /* Event flags. */
46 #define INPUT_FLAG_ABS		0x00	/* absolute value (the default) */
47 #define INPUT_FLAG_REL		0x04	/* relative value */
48 
49 /* Page-specific event codes. */
50 enum {
51 	INPUT_GD_X = 0x0030,
52 	INPUT_GD_Y,
53 
54 	INPUT_GD_SYSTEM_POWER_DOWN = 0x0081,
55 	INPUT_GD_SYSTEM_SLEEP,
56 	INPUT_GD_SYSTEM_WAKE_UP
57 };
58 
59 enum {
60 	INPUT_KEY_A = 0x0004,
61 	INPUT_KEY_B,
62 	INPUT_KEY_C,
63 	INPUT_KEY_D,
64 	INPUT_KEY_E,
65 	INPUT_KEY_F,
66 	INPUT_KEY_G,
67 	INPUT_KEY_H,
68 	INPUT_KEY_I,
69 	INPUT_KEY_J,
70 	INPUT_KEY_K,
71 	INPUT_KEY_L,
72 	INPUT_KEY_M,
73 	INPUT_KEY_N,
74 	INPUT_KEY_O,
75 	INPUT_KEY_P,
76 	INPUT_KEY_Q,
77 	INPUT_KEY_R,
78 	INPUT_KEY_S,
79 	INPUT_KEY_T,
80 	INPUT_KEY_U,
81 	INPUT_KEY_V,
82 	INPUT_KEY_W,
83 	INPUT_KEY_X,
84 	INPUT_KEY_Y,
85 	INPUT_KEY_Z,
86 	INPUT_KEY_1,
87 	INPUT_KEY_2,
88 	INPUT_KEY_3,
89 	INPUT_KEY_4,
90 	INPUT_KEY_5,
91 	INPUT_KEY_6,
92 	INPUT_KEY_7,
93 	INPUT_KEY_8,
94 	INPUT_KEY_9,
95 	INPUT_KEY_0,
96 
97 	INPUT_KEY_ENTER,
98 	INPUT_KEY_ESCAPE,
99 	INPUT_KEY_BACKSPACE,
100 	INPUT_KEY_TAB,
101 	INPUT_KEY_SPACEBAR,
102 	INPUT_KEY_DASH,
103 	INPUT_KEY_EQUAL,
104 	INPUT_KEY_OPEN_BRACKET,
105 	INPUT_KEY_CLOSE_BRACKET,
106 	INPUT_KEY_BACKSLASH,
107 	INPUT_KEY_EUROPE_1,
108 	INPUT_KEY_SEMICOLON,
109 	INPUT_KEY_APOSTROPH,
110 	INPUT_KEY_GRAVE_ACCENT,
111 	INPUT_KEY_COMMA,
112 	INPUT_KEY_PERIOD,
113 	INPUT_KEY_SLASH,
114 	INPUT_KEY_CAPS_LOCK,
115 
116 	INPUT_KEY_F1,
117 	INPUT_KEY_F2,
118 	INPUT_KEY_F3,
119 	INPUT_KEY_F4,
120 	INPUT_KEY_F5,
121 	INPUT_KEY_F6,
122 	INPUT_KEY_F7,
123 	INPUT_KEY_F8,
124 	INPUT_KEY_F9,
125 	INPUT_KEY_F10,
126 	INPUT_KEY_F11,
127 	INPUT_KEY_F12,
128 
129 	INPUT_KEY_PRINT_SCREEN,
130 	INPUT_KEY_SCROLL_LOCK,
131 	INPUT_KEY_PAUSE,
132 	INPUT_KEY_INSERT,
133 	INPUT_KEY_HOME,
134 	INPUT_KEY_PAGE_UP,
135 	INPUT_KEY_DELETE,
136 	INPUT_KEY_END,
137 	INPUT_KEY_PAGE_DOWN,
138 	INPUT_KEY_RIGHT_ARROW,
139 	INPUT_KEY_LEFT_ARROW,
140 	INPUT_KEY_DOWN_ARROW,
141 	INPUT_KEY_UP_ARROW,
142 	INPUT_KEY_NUM_LOCK,
143 
144 	INPUT_KEY_KP_SLASH,
145 	INPUT_KEY_KP_STAR,
146 	INPUT_KEY_KP_DASH,
147 	INPUT_KEY_KP_PLUS,
148 	INPUT_KEY_KP_ENTER,
149 	INPUT_KEY_KP_1,
150 	INPUT_KEY_KP_2,
151 	INPUT_KEY_KP_3,
152 	INPUT_KEY_KP_4,
153 	INPUT_KEY_KP_5,
154 	INPUT_KEY_KP_6,
155 	INPUT_KEY_KP_7,
156 	INPUT_KEY_KP_8,
157 	INPUT_KEY_KP_9,
158 	INPUT_KEY_KP_0,
159 	INPUT_KEY_KP_PERIOD,
160 
161 	INPUT_KEY_EUROPE_2,
162 	INPUT_KEY_APPLICATION,
163 	INPUT_KEY_POWER,
164 	INPUT_KEY_KP_EQUAL,
165 
166 	INPUT_KEY_F13,
167 	INPUT_KEY_F14,
168 	INPUT_KEY_F15,
169 	INPUT_KEY_F16,
170 	INPUT_KEY_F17,
171 	INPUT_KEY_F18,
172 	INPUT_KEY_F19,
173 	INPUT_KEY_F20,
174 	INPUT_KEY_F21,
175 	INPUT_KEY_F22,
176 	INPUT_KEY_F23,
177 	INPUT_KEY_F24,
178 
179 	INPUT_KEY_EXECUTE,
180 	INPUT_KEY_HELP,
181 	INPUT_KEY_MENU,
182 	INPUT_KEY_SELECT,
183 	INPUT_KEY_STOP,
184 	INPUT_KEY_AGAIN,
185 	INPUT_KEY_UNDO,
186 	INPUT_KEY_CUT,
187 	INPUT_KEY_COPY,
188 	INPUT_KEY_PASTE,
189 	INPUT_KEY_FIND,
190 	INPUT_KEY_MUTE,
191 	INPUT_KEY_VOLUME_UP,
192 	INPUT_KEY_VOLUME_DOWN,
193 	INPUT_KEY_LOCKING_CAPS_LOCK,
194 	INPUT_KEY_LOCKING_NUM_LOCK,
195 	INPUT_KEY_LOCKING_SCROLL_LOCK,
196 	INPUT_KEY_KP_COMMA,
197 	INPUT_KEY_EQUAL_SIGN,
198 	INPUT_KEY_I10L_1,
199 	INPUT_KEY_I10L_2,
200 	INPUT_KEY_I10L_3,
201 	INPUT_KEY_I10L_4,
202 	INPUT_KEY_I10L_5,
203 	INPUT_KEY_I10L_6,
204 	INPUT_KEY_I10L_7,
205 	INPUT_KEY_I10L_8,
206 	INPUT_KEY_I10L_9,
207 	INPUT_KEY_LANG_1,
208 	INPUT_KEY_LANG_2,
209 	INPUT_KEY_LANG_3,
210 	INPUT_KEY_LANG_4,
211 	INPUT_KEY_LANG_5,
212 	INPUT_KEY_LANG_6,
213 	INPUT_KEY_LANG_7,
214 	INPUT_KEY_LANG_8,
215 	INPUT_KEY_LANG_9,
216 	INPUT_KEY_ALT_ERASE,
217 	INPUT_KEY_SYSREQ,
218 	INPUT_KEY_CANCEL,
219 	INPUT_KEY_CLEAR,
220 	INPUT_KEY_PRIOR,
221 	INPUT_KEY_RETURN,
222 	INPUT_KEY_SEPARATOR,
223 	INPUT_KEY_OUT,
224 	INPUT_KEY_OPER,
225 	INPUT_KEY_CLEAR_AGAIN,
226 	INPUT_KEY_CR_SEL,
227 	INPUT_KEY_EX_SEL,
228 
229 	/* 0x00A5 -- 0x00AF RESERVED */
230 
231 	INPUT_KEY_KP_00 = 0x00B0,
232 	INPUT_KEY_KP_000,
233 	INPUT_KEY_THOUSANDS_SEP,
234 	INPUT_KEY_DECIMAL_SEP,
235 	INPUT_KEY_CURRENCY_UNIT,
236 	INPUT_KEY_CURRENCY_SUBUNIT,
237 	INPUT_KEY_KP_OPEN_PARENTHESIS,
238 	INPUT_KEY_KP_CLOSE_PARENTHESIS,
239 	INPUT_KEY_KP_OPEN_BRACE,
240 	INPUT_KEY_KP_CLOSE_BRACE,
241 	INPUT_KEY_KP_TAB,
242 	INPUT_KEY_KP_BACKSPACE,
243 	INPUT_KEY_KP_A,
244 	INPUT_KEY_KP_B,
245 	INPUT_KEY_KP_C,
246 	INPUT_KEY_KP_D,
247 	INPUT_KEY_KP_E,
248 	INPUT_KEY_KP_F,
249 	INPUT_KEY_KP_XOR,
250 	INPUT_KEY_KP_CARET,
251 	INPUT_KEY_KP_PERCENT,
252 	INPUT_KEY_KP_SMALLER_THEN,
253 	INPUT_KEY_KP_GREATER_THEN,
254 	INPUT_KEY_KP_AMP,
255 	INPUT_KEY_KP_DOUBLE_AMP,
256 	INPUT_KEY_KP_PIPE,
257 	INPUT_KEY_KP_DOUBLE_PIPE,
258 	INPUT_KEY_KP_COLON,
259 	INPUT_KEY_KP_NUMBER,
260 	INPUT_KEY_KP_SPACE,
261 	INPUT_KEY_KP_AT,
262 	INPUT_KEY_KP_EXCLAMATION_MARK,
263 	INPUT_KEY_KP_MEM_STORE,
264 	INPUT_KEY_KP_MEM_RECALL,
265 	INPUT_KEY_KP_MEM_CLEAR,
266 	INPUT_KEY_KP_MEM_ADD,
267 	INPUT_KEY_KP_MEM_SUBTRACT,
268 	INPUT_KEY_KP_MEM_MULTIPLY,
269 	INPUT_KEY_KP_MEM_DIVIDE,
270 	INPUT_KEY_KP_PLUS_MINUS,
271 	INPUT_KEY_KP_CLEAR,
272 	INPUT_KEY_KP_CLEAR_ENTRY,
273 	INPUT_KEY_KP_BIN,
274 	INPUT_KEY_KP_OCT,
275 	INPUT_KEY_KP_DEC,
276 	INPUT_KEY_KP_HEX,
277 
278 	/* 0x00DE, 0x00DF RESERVED */
279 
280 	INPUT_KEY_LEFT_CTRL = 0x00E0,
281 	INPUT_KEY_LEFT_SHIFT,
282 	INPUT_KEY_LEFT_ALT,
283 	INPUT_KEY_LEFT_GUI,
284 	INPUT_KEY_RIGHT_CTRL,
285 	INPUT_KEY_RIGHT_SHIFT,
286 	INPUT_KEY_RIGHT_ALT,
287 	INPUT_KEY_RIGHT_GUI
288 
289 	/* 0x00E8 -- 0xFFFF RESERVED */
290 };
291 
292 enum {
293 	INPUT_LED_NUMLOCK = 0x0001,
294 	INPUT_LED_CAPSLOCK,
295 	INPUT_LED_SCROLLLOCK
296 };
297 
298 enum {
299 	INPUT_BUTTON_1 = 0x0001,
300 };
301 
302 enum {
303 	INPUT_CONS_SCAN_NEXT_TRACK = 0x00B5,
304 	INPUT_CONS_SCAN_PREVIOUS_TRACK,
305 	INPUT_CONS_STOP,
306 
307 	INPUT_CONS_PLAY_PAUSE = 0x00CD,
308 
309 	INPUT_CONS_MUTE = 0x00E2,
310 
311 	INPUT_CONS_VOLUME_UP = 0x00E9,
312 	INPUT_CONS_VOLUME_DOWN,
313 
314 	INPUT_CONS_AL_MEDIA_SELECT = 0x0183,
315 
316 	INPUT_CONS_AL_EMAIL_READER = 0x018A,
317 
318 	INPUT_CONS_AL_CALCULATOR = 0x0192,
319 
320 	INPUT_CONS_AL_LOCAL_BROWSER = 0x0194,
321 
322 	INPUT_CONS_AC_SEARCH = 0x0221,
323 	INPUT_CONS_AC_GO_TO,
324 	INPUT_CONS_AC_HOME,
325 	INPUT_CONS_AC_BACK,
326 	INPUT_CONS_AC_FORWARD,
327 	INPUT_CONS_AC_STOP,
328 	INPUT_CONS_AC_REFRESH,
329 
330 	INPUT_CONS_AC_BOOKMARKS = 0x022A
331 };
332 
333 #endif
334