1 /*
2  * This software is Copyright (c) 1989, 1990, 1991 by Patrick J. Wolfe.
3  *
4  * Permission is hereby granted to copy, distribute or otherwise
5  * use any part of this package as long as you do not try to make
6  * money from it or pretend that you wrote it.  This copyright
7  * notice must be maintained in any copy made.
8  *
9  * Use of this software constitutes acceptance for use in an AS IS
10  * condition. There are NO warranties with regard to this software.
11  * In no event shall the author be liable for any damages whatsoever
12  * arising out of or in connection with the use or performance of this
13  * software.  Any use of this software is at the user's own risk.
14  *
15  * If you make modifications to this software that you feel
16  * increases it usefulness for the rest of the community, please
17  * email the changes, enhancements, bug fixes as well as any and
18  * all ideas to me. This software is going to be maintained and
19  * enhanced as deemed necessary by the community.
20  *
21  *              Patrick J. Wolfe
22  *              uunet!uiucuxc!kailand!pwolfe
23  *              pwolfe@kailand.kai.com
24  *
25  * Additions of DOS keys and extended function key descriptions
26  * made by Mark Hessling.
27  *
28  */
29 
30 /* System V curses key names and codes returned by getch */
31 
32 /*
33 $Id: getch.h,v 1.4 2008/10/02 12:12:46 mark Exp $
34 */
35 
36 
37 #ifndef KEY_MIN
38 #define KEY_MIN         0x101           /* Minimum curses key */
39 #endif
40 #ifndef KEY_BREAK
41 #define KEY_BREAK	0x101	/* Not on PC KBD		 */
42 #endif
43 #ifndef KEY_DOWN
44 #define KEY_DOWN	0x102	/* Down arrow key		 */
45 #endif
46 #ifndef KEY_UP
47 #define KEY_UP		0x103	/* Up arrow key			 */
48 #endif
49 #ifndef KEY_LEFT
50 #define KEY_LEFT	0x104	/* Left arrow key		 */
51 #endif
52 #ifndef KEY_RIGHT
53 #define KEY_RIGHT	0x105	/* Right arrow key		 */
54 #endif
55 #ifndef KEY_HOME
56 #define KEY_HOME	0x106	/* home key			 */
57 #endif
58 #ifndef KEY_BACKSPACE
59 #define KEY_BACKSPACE	0x107	/* not on pc			 */
60 #endif
61 #ifndef KEY_F0
62 #define KEY_F0		0x108	/* function keys. space for	 */
63 #define KEY_F(n)    (KEY_F0+(n))/* 64 keys are reserved.	 */
64 #endif
65 #ifndef KEY_DL
66 #define KEY_DL		0x148	/* not on pc			 */
67 #endif
68 #ifndef KEY_IL
69 #define KEY_IL		0x149	/* insert line			 */
70 #endif
71 #ifndef KEY_DC
72 #define KEY_DC		0x14a	/* delete character		 */
73 #endif
74 #ifndef KEY_IC
75 #define KEY_IC		0x14b	/* insert char or enter ins mode */
76 #endif
77 #ifndef KEY_EIC
78 #define KEY_EIC		0x14c	/* exit insert char mode	 */
79 #endif
80 #ifndef KEY_CLEAR
81 #define KEY_CLEAR	0x14d	/* clear screen			 */
82 #endif
83 #ifndef KEY_EOS
84 #define KEY_EOS		0x14e	/* clear to end of screen	 */
85 #endif
86 #ifndef KEY_EOL
87 #define KEY_EOL		0x14f	/* clear to end of line		 */
88 #endif
89 #ifndef KEY_SF
90 #define KEY_SF		0x150	/* scroll 1 line forward	 */
91 #endif
92 #ifndef KEY_SR
93 #define KEY_SR		0x151	/* scroll 1 line back (reverse)	 */
94 #endif
95 #ifndef KEY_NPAGE
96 #define KEY_NPAGE	0x152	/* next page			 */
97 #endif
98 #ifndef KEY_PPAGE
99 #define KEY_PPAGE	0x153	/* previous page		 */
100 #endif
101 #ifndef KEY_STAB
102 #define KEY_STAB	0x154	/* set tab			 */
103 #endif
104 #ifndef KEY_CTAB
105 #define KEY_CTAB	0x155	/* clear tab			 */
106 #endif
107 #ifndef KEY_CATAB
108 #define KEY_CATAB	0x156	/* clear all tabs		 */
109 #endif
110 #ifndef KEY_ENTER
111 #define KEY_ENTER	0x157	/* enter or send (unreliable)	 */
112 #endif
113 #ifndef KEY_SRESET
114 #define KEY_SRESET	0x158	/* soft/reset (partial/unreliable)*/
115 #endif
116 #ifndef KEY_RESET
117 #define KEY_RESET	0x159	/* reset/hard reset (unreliable) */
118 #endif
119 #ifndef KEY_PRINT
120 #define KEY_PRINT	0x15a	/* print/copy			 */
121 #endif
122 #ifndef KEY_LL
123 #define KEY_LL		0x15b	/* home down/bottom (lower left) */
124 #endif
125 #ifndef KEY_ABORT
126 #define KEY_ABORT	0x15c	/* abort/terminate key (any)	 */
127 #endif
128 #ifndef KEY_SHELP
129 #define KEY_SHELP	0x15d	/* short help			 */
130 #endif
131 #ifndef KEY_LHELP
132 #define KEY_LHELP	0x15e	/* long help			 */
133 #endif
134 #ifndef KEY_BTAB
135 #define KEY_BTAB        0x15f            /* Back tab key */
136 #endif
137 #ifndef KEY_BEG
138 #define KEY_BEG         0x160            /* beg(inning) key */
139 #endif
140 #ifndef KEY_CANCEL
141 #define KEY_CANCEL      0x161             /* cancel key */
142 #endif
143 #ifndef KEY_CLOSE
144 #define KEY_CLOSE       0x162             /* close key */
145 #endif
146 #ifndef KEY_COMMAND
147 #define KEY_COMMAND     0x163             /* cmd (command) key */
148 #endif
149 #ifndef KEY_COPY
150 #define KEY_COPY        0x164             /* copy key */
151 #endif
152 #ifndef KEY_CREATE
153 #define KEY_CREATE      0x165             /* create key */
154 #endif
155 #ifndef KEY_END
156 #define KEY_END         0x166             /* end key */
157 #endif
158 #ifndef KEY_EXIT
159 #define KEY_EXIT        0x167             /* exit key */
160 #endif
161 #ifndef KEY_FIND
162 #define KEY_FIND        0x168             /* find key */
163 #endif
164 #ifndef KEY_HELP
165 #define KEY_HELP        0x169             /* help key */
166 #endif
167 #ifndef KEY_MARK
168 #define KEY_MARK        0x16a             /* mark key */
169 #endif
170 #ifndef KEY_MESSAGE
171 #define KEY_MESSAGE     0x16b             /* message key */
172 #endif
173 #ifndef KEY_MOVE
174 #define KEY_MOVE        0x16c             /* move key */
175 #endif
176 #ifndef KEY_NEXT
177 #define KEY_NEXT        0x16d             /* next object key */
178 #endif
179 #ifndef KEY_OPEN
180 #define KEY_OPEN        0x16e             /* open key */
181 #endif
182 #ifndef KEY_OPTIONS
183 #define KEY_OPTIONS     0x16f             /* options key */
184 #endif
185 #ifndef KEY_PREVIOUS
186 #define KEY_PREVIOUS    0x170             /* previous object key */
187 #endif
188 #ifndef KEY_REDO
189 #define KEY_REDO        0x171             /* redo key */
190 #endif
191 #ifndef KEY_REFERENCE
192 #define KEY_REFERENCE   0x172             /* ref(erence) key */
193 #endif
194 #ifndef KEY_REFRESH
195 #define KEY_REFRESH     0x173             /* refresh key */
196 #endif
197 #ifndef KEY_REPLACE
198 #define KEY_REPLACE     0x174             /* replace key */
199 #endif
200 #ifndef KEY_RESTART
201 #define KEY_RESTART     0x175             /* restart key */
202 #endif
203 #ifndef KEY_RESUME
204 #define KEY_RESUME      0x176             /* resume key */
205 #endif
206 #ifndef KEY_SAVE
207 #define KEY_SAVE        0x177             /* save key */
208 #endif
209 #ifndef KEY_SBEG
210 #define KEY_SBEG        0x178             /* shifted beginning key */
211 #endif
212 #ifndef KEY_SCANCEL
213 #define KEY_SCANCEL     0x179             /* shifted cancel key */
214 #endif
215 #ifndef KEY_SCOMMAND
216 #define KEY_SCOMMAND    0x17a             /* shifted command key */
217 #endif
218 #ifndef KEY_SCOPY
219 #define KEY_SCOPY       0x17b             /* shifted copy key */
220 #endif
221 #ifndef KEY_SCREATE
222 #define KEY_SCREATE     0x17c             /* shifted create key */
223 #endif
224 #ifndef KEY_SDC
225 #define KEY_SDC         0x17d             /* shifted delete char key */
226 #endif
227 #ifndef KEY_SDL
228 #define KEY_SDL         0x17e             /* shifted delete line key */
229 #endif
230 #ifndef KEY_SELECT
231 #define KEY_SELECT      0x17f             /* select key */
232 #endif
233 #ifndef KEY_SEND
234 #define KEY_SEND        0x180             /* shifted end key */
235 #endif
236 #ifndef KEY_SEOL
237 #define KEY_SEOL        0x181             /* shifted clear line key */
238 #endif
239 #ifndef KEY_SEXIT
240 #define KEY_SEXIT       0x182             /* shifted exit key */
241 #endif
242 #ifndef KEY_SFIND
243 #define KEY_SFIND       0x183             /* shifted find key */
244 #endif
245 #ifndef KEY_SHOME
246 #define KEY_SHOME       0x184             /* shifted home key */
247 #endif
248 #ifndef KEY_SIC
249 #define KEY_SIC         0x185             /* shifted input key */
250 #endif
251 #ifndef KEY_SLEFT
252 #define KEY_SLEFT       0x187             /* shifted left arrow key */
253 #endif
254 #ifndef KEY_SMESSAGE
255 #define KEY_SMESSAGE    0x188             /* shifted message key */
256 #endif
257 #ifndef KEY_SMOVE
258 #define KEY_SMOVE       0x189             /* shifted move key */
259 #endif
260 #ifndef KEY_SNEXT
261 #define KEY_SNEXT       0x18a             /* shifted next key */
262 #endif
263 #ifndef KEY_SOPTIONS
264 #define KEY_SOPTIONS    0x18b             /* shifted options key */
265 #endif
266 #ifndef KEY_SPREVIOUS
267 #define KEY_SPREVIOUS   0x18c             /* shifted prev key */
268 #endif
269 #ifndef KEY_SPRINT
270 #define KEY_SPRINT      0x18d             /* shifted print key */
271 #endif
272 #ifndef KEY_SREDO
273 #define KEY_SREDO       0x18e             /* shifted redo key */
274 #endif
275 #ifndef KEY_SREPLACE
276 #define KEY_SREPLACE    0x18f             /* shifted replace key */
277 #endif
278 #ifndef KEY_SRIGHT
279 #define KEY_SRIGHT      0x190             /* shifted right arrow */
280 #endif
281 #ifndef KEY_SRSUME
282 #define KEY_SRSUME      0x191             /* shifted resume key */
283 #endif
284 #ifndef KEY_SSAVE
285 #define KEY_SSAVE       0x192             /* shifted save key */
286 #endif
287 #ifndef KEY_SSUSPEND
288 #define KEY_SSUSPEND    0x193             /* shifted suspend key */
289 #endif
290 #ifndef KEY_SUNDO
291 #define KEY_SUNDO       0x194             /* shifted undo key */
292 #endif
293 #ifndef KEY_SUSPEND
294 #define KEY_SUSPEND     0x195             /* suspend key */
295 #endif
296 #ifndef KEY_UNDO
297 #define KEY_UNDO        0x196             /* undo key */
298 #endif
299 #ifndef KEY_A1
300 #define KEY_A1          0x197             /* Upper left of keypad */
301 #endif
302 #ifndef KEY_A2
303 #define KEY_A2          0x198             /* Upper centre of keypad */
304 #endif
305 #ifndef KEY_A3
306 #define KEY_A3          0x199             /* Upper right of keypad */
307 #endif
308 #ifndef KEY_B1
309 #define KEY_B1          0x19a             /* Middle left of keypad */
310 #endif
311 #ifndef KEY_B2
312 #define KEY_B2          0x19b             /* Middle centre of keypad */
313 #endif
314 #ifndef KEY_B3
315 #define KEY_B3          0x19c             /* Middle right of keypad */
316 #endif
317 #ifndef KEY_C1
318 #define KEY_C1          0x19d             /* Lower left of keypad */
319 #endif
320 #ifndef KEY_C2
321 #define KEY_C2          0x19e             /* Lower centre of keypad */
322 #endif
323 #ifndef KEY_C3
324 #define KEY_C3          0x19f             /* Lower right of keypad */
325 #endif
326 #ifndef KEY_MAX
327 #define KEY_MAX         0xfff             /* Maximum curses key */
328 #endif
329 
330 #define KEY_DELETE  127
331 
332 #if !defined(DOS) && !defined(OS2) && !defined(USE_XCURSES) && !defined(WIN32)
333 
334 /* vt220 special keys */
335 
336 #define CTL_LEFT       0x302
337 #define CTL_RIGHT      0x303
338 #define CTL_UP         0x304
339 #define CTL_DOWN       0x305
340 #define CTL_HOME       0x306
341 #define CTL_END        0x307
342 #define CTL_PGUP       0x308
343 #define CTL_PGDN       0x309
344 
345 # ifndef KEY_RETURN
346 #  define KEY_RETURN     KEY_ENTER
347 # endif
348 
349 # ifndef KEY_NUMENTER
350 #  define KEY_NUMENTER   KEY_ENTER
351 # endif
352 
353 #endif
354 
355 #if defined(DOS) || defined(OS2) || defined(USE_XCURSES) || defined(WIN32)
356 /* normal characters */
357 #define KEY_a      0x61
358 #define KEY_b      0x62
359 #define KEY_c      0x63
360 #define KEY_d      0x64
361 #define KEY_e      0x65
362 #define KEY_f      0x66
363 #define KEY_g      0x67
364 #define KEY_h      0x68
365 #define KEY_i      0x69
366 #define KEY_j      0x6a
367 #define KEY_k      0x6b
368 #define KEY_l      0x6c
369 #define KEY_m      0x6d
370 #define KEY_n      0x6e
371 #define KEY_o      0x6f
372 #define KEY_p      0x70
373 #define KEY_q      0x71
374 #define KEY_r      0x72
375 #define KEY_s      0x73
376 #define KEY_t      0x74
377 #define KEY_u      0x75
378 #define KEY_v      0x76
379 #define KEY_w      0x77
380 #define KEY_x      0x78
381 #define KEY_y      0x79
382 #define KEY_z      0x7a
383 #define KEY_0      0x30
384 #define KEY_1      0x31
385 #define KEY_2      0x32
386 #define KEY_3      0x33
387 #define KEY_4      0x34
388 #define KEY_5      0x35
389 #define KEY_6      0x36
390 #define KEY_7      0x37
391 #define KEY_8      0x38
392 #define KEY_9      0x39
393 #define KEY_BQUOTE      0x60
394 #define KEY_MINUS      0x2d
395 #define KEY_EQUAL      0x3d
396 #define KEY_LBRACKET      0x5b
397 #define KEY_RBRACKET      0x5d
398 #define KEY_BSLASH      0x5c
399 #define KEY_SEMICOLON      0x3b
400 #define KEY_FQUOTE      0x27
401 #define KEY_COMMA      0x2c
402 #define KEY_STOP      0x2e
403 #define KEY_FSLASH      0x2f
404 #define KEY_SPACE      0x20
405 #define KEY_RETURN     0xd
406 #define KEY_TAB      0x9
407 #define KEY_BKSP      0x8
408 #define KEY_PGUP      KEY_PPAGE
409 #define KEY_PGDN      KEY_NPAGE
410 #define KEY_CURU      KEY_UP
411 #define KEY_CURD      KEY_DOWN
412 #define KEY_CURL      KEY_LEFT
413 #define KEY_CURR      KEY_RIGHT
414 #define KEY_INS      KEY_IC
415 #define KEY_DEL      KEY_DC
416 #define KEY_NUMENTER PADENTER
417 /* shifted characters */
418 #define KEY_S_a      0x41
419 #define KEY_S_b      0x42
420 #define KEY_S_c      0x43
421 #define KEY_S_d      0x44
422 #define KEY_S_e      0x45
423 #define KEY_S_f      0x46
424 #define KEY_S_g      0x47
425 #define KEY_S_h      0x48
426 #define KEY_S_i      0x49
427 #define KEY_S_j      0x4a
428 #define KEY_S_k      0x4b
429 #define KEY_S_l      0x4c
430 #define KEY_S_m      0x4d
431 #define KEY_S_n      0x4e
432 #define KEY_S_o      0x4f
433 #define KEY_S_p      0x50
434 #define KEY_S_q      0x51
435 #define KEY_S_r      0x52
436 #define KEY_S_s      0x53
437 #define KEY_S_t      0x54
438 #define KEY_S_u      0x55
439 #define KEY_S_v      0x56
440 #define KEY_S_w      0x57
441 #define KEY_S_x      0x58
442 #define KEY_S_y      0x59
443 #define KEY_S_z      0x5a
444 #define KEY_S_0      0x29
445 #define KEY_S_1      0x21
446 #define KEY_S_2      0x40
447 #define KEY_S_3      0x23
448 #define KEY_S_4      0x24
449 #define KEY_S_5      0x25
450 #define KEY_S_6      0x5e
451 #define KEY_S_7      0x26
452 #define KEY_S_8      0x2a
453 #define KEY_S_9      0x28
454 #define KEY_S_BQUOTE      0x7e
455 #define KEY_S_MINUS      0x5f
456 #define KEY_S_EQUAL      0x2b
457 #define KEY_S_LBRACKET      0x7b
458 #define KEY_S_RBRACKET      0x7d
459 #define KEY_S_BSLASH      0x7c
460 #define KEY_S_SEMICOLON      0x3a
461 #define KEY_S_FQUOTE      0x22
462 #define KEY_S_COMMA      0x3c
463 #define KEY_S_STOP      0x3e
464 #define KEY_S_FSLASH      0x3f
465 #define KEY_S_TAB     KEY_BTAB
466 #define KEY_S_CURU    KEY_SUP
467 #define KEY_S_CURD    KEY_SDOWN
468 #define KEY_S_INS     KEY_SIC
469 #define KEY_S_DEL     KEY_SDC
470 #define KEY_S_NUMCENTER  KEY_5
471 /* control characters */
472 /* Control-A to Control-Z at end */
473 #define KEY_C_2      0x0
474 #define KEY_C_6      0x1e
475 #define KEY_C_MINUS      0x1f
476 #define KEY_C_LBRACKET      0x1b
477 #define KEY_C_RBRACKET      0x1d
478 #define KEY_C_BSLASH      0x1c
479 #endif
480 
481 /* special definition for UNIX systems */
482 #ifndef KEY_RETURN
483 #define KEY_RETURN 0xd
484 #endif
485 
486 #define CSI          0233
487 #define KEY_ESC      0x1b
488 
489 /* control alpha keys */
490 #define KEY_C_a      0x1
491 #define KEY_C_b      0x2
492 #define KEY_C_c      0x3
493 #define KEY_C_d      0x4
494 #define KEY_C_e      0x5
495 #define KEY_C_f      0x6
496 #define KEY_C_g      0x7
497 #define KEY_C_h      0x8
498 #define KEY_C_i      0x9
499 #define KEY_C_j      0xa
500 #define KEY_C_k      0xb
501 #define KEY_C_l      0xc
502 #define KEY_C_m      0xd
503 #define KEY_C_n      0xe
504 #define KEY_C_o      0xf
505 #define KEY_C_p      0x10
506 #define KEY_C_q      0x11
507 #define KEY_C_r      0x12
508 #define KEY_C_s      0x13
509 #define KEY_C_t      0x14
510 #define KEY_C_u      0x15
511 #define KEY_C_v      0x16
512 #define KEY_C_w      0x17
513 #define KEY_C_x      0x18
514 #define KEY_C_y      0x19
515 #define KEY_C_z      0x1a
516 
517 /* unshifted function keys */
518 #define KEY_F1      KEY_F(1)
519 #define KEY_F2      KEY_F(2)
520 #define KEY_F3      KEY_F(3)
521 #define KEY_F4      KEY_F(4)
522 #define KEY_F5      KEY_F(5)
523 #define KEY_F6      KEY_F(6)
524 #define KEY_F7      KEY_F(7)
525 #define KEY_F8      KEY_F(8)
526 #define KEY_F9      KEY_F(9)
527 #define KEY_F10     KEY_F(10)
528 #define KEY_F11     KEY_F(11)
529 #define KEY_F12     KEY_F(12)
530 
531 /* shifted function keys */
532 #define KEY_S_F1      KEY_F(13)
533 #define KEY_S_F2      KEY_F(14)
534 #define KEY_S_F3      KEY_F(15)
535 #define KEY_S_F4      KEY_F(16)
536 #define KEY_S_F5      KEY_F(17)
537 #define KEY_S_F6      KEY_F(18)
538 #define KEY_S_F7      KEY_F(19)
539 #define KEY_S_F8      KEY_F(20)
540 #define KEY_S_F9      KEY_F(21)
541 #define KEY_S_F10     KEY_F(22)
542 #define KEY_S_F11     KEY_F(23)
543 #define KEY_S_F12     KEY_F(24)
544 
545 /* control function keys */
546 #define KEY_C_F1      KEY_F(25)
547 #define KEY_C_F2      KEY_F(26)
548 #define KEY_C_F3      KEY_F(27)
549 #define KEY_C_F4      KEY_F(28)
550 #define KEY_C_F5      KEY_F(29)
551 #define KEY_C_F6      KEY_F(30)
552 #define KEY_C_F7      KEY_F(31)
553 #define KEY_C_F8      KEY_F(32)
554 #define KEY_C_F9      KEY_F(33)
555 #define KEY_C_F10     KEY_F(34)
556 #define KEY_C_F11     KEY_F(35)
557 #define KEY_C_F12     KEY_F(36)
558 
559 /* alt function keys */
560 #define KEY_A_F1      KEY_F(37)
561 #define KEY_A_F2      KEY_F(38)
562 #define KEY_A_F3      KEY_F(39)
563 #define KEY_A_F4      KEY_F(40)
564 #define KEY_A_F5      KEY_F(41)
565 #define KEY_A_F6      KEY_F(42)
566 #define KEY_A_F7      KEY_F(43)
567 #define KEY_A_F8      KEY_F(44)
568 #define KEY_A_F9      KEY_F(45)
569 #define KEY_A_F10     KEY_F(46)
570 #define KEY_A_F11     KEY_F(47)
571 #define KEY_A_F12     KEY_F(48)
572 
573 /* remaining curses function keys */
574 #define KEY_F13       KEY_F(49)
575 #define KEY_F14       KEY_F(50)
576 #define KEY_F15       KEY_F(51)
577 #define KEY_F16       KEY_F(52)
578 #define KEY_F17       KEY_F(53)
579 #define KEY_F18       KEY_F(54)
580 #define KEY_F19       KEY_F(55)
581 #define KEY_F20       KEY_F(56)
582 #define KEY_S_F13     KEY_F(57)
583 #define KEY_S_F14     KEY_F(58)
584 #define KEY_S_F15     KEY_F(59)
585 #define KEY_S_F16     KEY_F(60)
586 #define KEY_S_F17     KEY_F(61)
587 #define KEY_S_F18     KEY_F(62)
588 #define KEY_S_F19     KEY_F(63)
589 
590 #define KEY_Find       KEY_FIND
591 #define KEY_InsertHere KEY_IC
592 #define KEY_Remove     KEY_REPLACE
593 #define KEY_Select     KEY_SELECT
594 #define KEY_PrevScreen KEY_PPAGE
595 #define KEY_NextScreen KEY_NPAGE
596 #define KEY_PF1        0x350
597 #define KEY_PF2        0x351
598 #define KEY_PF3        0x352
599 #define KEY_PF4        0x353
600 #define KEY_PadComma   0x354
601 #define KEY_PadMinus   0x355
602 #define KEY_PadPeriod  0x356
603 #define KEY_PadPlus    0x357
604 #define KEY_PadStar    0x358
605 #define KEY_PadSlash   0x359
606 
607 #ifdef PAD0
608 # define KEY_Pad0      PAD0
609 #else
610 # define KEY_Pad0      0x360
611 #endif
612 
613 /* Mouse button definitions */
614 
615 #define KEY_PB1        0x400
616 #define KEY_PB2        0x401
617 #define KEY_PB3        0x402
618 #define KEY_S_PB1      0x403
619 #define KEY_S_PB2      0x404
620 #define KEY_S_PB3      0x405
621 #define KEY_C_PB1      0x406
622 #define KEY_C_PB2      0x407
623 #define KEY_C_PB3      0x408
624 #define KEY_A_PB1      0x409
625 #define KEY_A_PB2      0x40a
626 #define KEY_A_PB3      0x40b
627 
628 #define KEY_RB1        0x410
629 #define KEY_RB2        0x411
630 #define KEY_RB3        0x412
631 #define KEY_S_RB1      0x413
632 #define KEY_S_RB2      0x414
633 #define KEY_S_RB3      0x415
634 #define KEY_C_RB1      0x416
635 #define KEY_C_RB2      0x417
636 #define KEY_C_RB3      0x418
637 #define KEY_A_RB1      0x419
638 #define KEY_A_RB2      0x41a
639 #define KEY_A_RB3      0x41b
640 
641 #define KEY_DB1        0x420
642 #define KEY_DB2        0x421
643 #define KEY_DB3        0x422
644 #define KEY_S_DB1      0x423
645 #define KEY_S_DB2      0x424
646 #define KEY_S_DB3      0x425
647 #define KEY_C_DB1      0x426
648 #define KEY_C_DB2      0x427
649 #define KEY_C_DB3      0x428
650 #define KEY_A_DB1      0x429
651 #define KEY_A_DB2      0x42a
652 #define KEY_A_DB3      0x42b
653 
654