1/* Copyright (C) 2009 The Android Open Source Project
2**
3** This software is licensed under the terms of the GNU General Public
4** License version 2, as published by the Free Software Foundation, and
5** may be copied, distributed, and modified under those terms.
6**
7** This program is distributed in the hope that it will be useful,
8** but WITHOUT ANY WARRANTY; without even the implied warranty of
9** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10** GNU General Public License for more details.
11*/
12#ifndef ANDROID_KEYCODE_H
13#define ANDROID_KEYCODE_H
14
15#include "linux_keycodes.h"
16
17/* Keep it consistent with linux/input.h */
18typedef enum {
19    kKeyCodeSoftLeft                = KEY_SOFT1,
20    kKeyCodeSoftRight               = KEY_SOFT2,
21    kKeyCodeHome                    = KEY_HOME,
22    kKeyCodeBack                    = KEY_BACK,
23    kKeyCodeCall                    = KEY_SEND,
24    kKeyCodeEndCall                 = KEY_END,
25    kKeyCode0                       = KEY_0,
26    kKeyCode1                       = KEY_1,
27    kKeyCode2                       = KEY_2,
28    kKeyCode3                       = KEY_3,
29    kKeyCode4                       = KEY_4,
30    kKeyCode5                       = KEY_5,
31    kKeyCode6                       = KEY_6,
32    kKeyCode7                       = KEY_7,
33    kKeyCode8                       = KEY_8,
34    kKeyCode9                       = KEY_9,
35    kKeyCodeStar                    = KEY_STAR,
36    kKeyCodePound                   = KEY_SHARP,
37    kKeyCodeDpadUp                  = KEY_UP,
38    kKeyCodeDpadDown                = KEY_DOWN,
39    kKeyCodeDpadLeft                = KEY_LEFT,
40    kKeyCodeDpadRight               = KEY_RIGHT,
41    kKeyCodeDpadCenter              = KEY_CENTER,
42    kKeyCodeVolumeUp                = KEY_VOLUMEUP,
43    kKeyCodeVolumeDown              = KEY_VOLUMEDOWN,
44    kKeyCodePower                   = KEY_POWER,
45    kKeyCodeCamera                  = KEY_CAMERA,
46    kKeyCodeClear                   = KEY_CLEAR,
47    kKeyCodeA                       = KEY_A,
48    kKeyCodeB                       = KEY_B,
49    kKeyCodeC                       = KEY_C,
50    kKeyCodeD                       = KEY_D,
51    kKeyCodeE                       = KEY_E,
52    kKeyCodeF                       = KEY_F,
53    kKeyCodeG                       = KEY_G,
54    kKeyCodeH                       = KEY_H,
55    kKeyCodeI                       = KEY_I,
56    kKeyCodeJ                       = KEY_J,
57    kKeyCodeK                       = KEY_K,
58    kKeyCodeL                       = KEY_L,
59    kKeyCodeM                       = KEY_M,
60    kKeyCodeN                       = KEY_N,
61    kKeyCodeO                       = KEY_O,
62    kKeyCodeP                       = KEY_P,
63    kKeyCodeQ                       = KEY_Q,
64    kKeyCodeR                       = KEY_R,
65    kKeyCodeS                       = KEY_S,
66    kKeyCodeT                       = KEY_T,
67    kKeyCodeU                       = KEY_U,
68    kKeyCodeV                       = KEY_V,
69    kKeyCodeW                       = KEY_W,
70    kKeyCodeX                       = KEY_X,
71    kKeyCodeY                       = KEY_Y,
72    kKeyCodeZ                       = KEY_Z,
73
74    kKeyCodeComma                   = KEY_COMMA,
75    kKeyCodePeriod                  = KEY_DOT,
76    kKeyCodeAltLeft                 = KEY_LEFTALT,
77    kKeyCodeAltRight                = KEY_RIGHTALT,
78    kKeyCodeCapLeft                 = KEY_LEFTSHIFT,
79    kKeyCodeCapRight                = KEY_RIGHTSHIFT,
80    kKeyCodeTab                     = KEY_TAB,
81    kKeyCodeSpace                   = KEY_SPACE,
82    kKeyCodeSym                     = KEY_COMPOSE,
83    kKeyCodeExplorer                = KEY_WWW,
84    kKeyCodeEnvelope                = KEY_MAIL,
85    kKeyCodeNewline                 = KEY_ENTER,
86    kKeyCodeDel                     = KEY_BACKSPACE,
87    kKeyCodeGrave                   = 399,
88    kKeyCodeMinus                   = KEY_MINUS,
89    kKeyCodeEquals                  = KEY_EQUAL,
90    kKeyCodeLeftBracket             = KEY_LEFTBRACE,
91    kKeyCodeRightBracket            = KEY_RIGHTBRACE,
92    kKeyCodeBackslash               = KEY_BACKSLASH,
93    kKeyCodeSemicolon               = KEY_SEMICOLON,
94    kKeyCodeApostrophe              = KEY_APOSTROPHE,
95    kKeyCodeSlash                   = KEY_SLASH,
96    kKeyCodeAt                      = KEY_EMAIL,
97    kKeyCodeNum                     = KEY_NUM,
98    kKeyCodeHeadsetHook             = KEY_HEADSETHOOK,
99    kKeyCodeFocus                   = KEY_FOCUS,
100    kKeyCodePlus                    = KEY_PLUS,
101    kKeyCodeMenu                    = KEY_SOFT1,
102    kKeyCodeNotification            = KEY_NOTIFICATION,
103    kKeyCodeSearch                  = KEY_SEARCH,
104    kKeyCodeTV                      = KEY_TV,
105    kKeyCodeEPG                     = KEY_PROGRAM,
106    kKeyCodeDVR                     = KEY_PVR,
107    kKeyCodePrevious                = KEY_PREVIOUS,
108    kKeyCodeNext                    = KEY_NEXT,
109    kKeyCodePlay                    = KEY_PLAY,
110    kKeyCodePause                   = KEY_PAUSE,
111    kKeyCodeStop                    = KEY_STOP,
112    kKeyCodeRewind                  = KEY_REWIND,
113    kKeyCodeFastForward             = KEY_FASTFORWARD,
114    kKeyCodeBookmarks               = KEY_BOOKMARKS,
115    kKeyCodeCycleWindows            = KEY_CYCLEWINDOWS,
116    kKeyCodeChannelUp               = KEY_CHANNELUP,
117    kKeyCodeChannelDown             = KEY_CHANNELDOWN,
118
119} AndroidKeyCode;
120
121/* This function is used to rotate D-Pad keycodes, while leaving other ones
122 * untouched. 'code' is the input keycode, which will be returned as is if
123 * it doesn't correspond to a D-Pad arrow. 'rotation' is the number of
124 * *clockwise* 90 degrees rotations to perform on D-Pad keys.
125 *
126 * Here are examples:
127 *    android_keycode_rotate( kKeyCodeDpadUp, 1 )  => kKeyCodeDpadRight
128 *    android_keycode_rotate( kKeyCodeDpadRight, 2 ) => kKeyCodeDpadLeft
129 *    android_keycode_rotate( kKeyCodeDpadDown, 3 ) => kKeyCodeDpadRight
130 *    android_keycode_rotate( kKeyCodeSpace, n ) => kKeyCodeSpace independent of n
131 */
132extern AndroidKeyCode   android_keycode_rotate( AndroidKeyCode  code, int  rotation );
133
134#endif /* ANDROID_KEYCODE_H */
135