1 /*
2  * Copyright (c) 2022 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include "js_key_code.h"
17 
18 #include "key_event.h"
19 #include "mmi_log.h"
20 #include "napi_constants.h"
21 #include "util_napi.h"
22 
23 #undef MMI_LOG_TAG
24 #define MMI_LOG_TAG "JsKeyCode"
25 
26 namespace OHOS {
27 namespace MMI {
GetNapiInt32(napi_env env,int32_t code)28 napi_value JsKeyCode::GetNapiInt32(napi_env env, int32_t code)
29 {
30     CALL_DEBUG_ENTER;
31     napi_value keyCode = nullptr;
32     CHKRP(napi_create_int32(env, code, &keyCode), CREATE_INT32);
33     return keyCode;
34 }
35 
EnumClassConstructor(napi_env env,napi_callback_info info)36 napi_value JsKeyCode::EnumClassConstructor(napi_env env, napi_callback_info info)
37 {
38     CALL_DEBUG_ENTER;
39     size_t argc = 0;
40     napi_value args[1] = { 0 };
41     napi_value ret = nullptr;
42     void *data = nullptr;
43     CHKRP(napi_get_cb_info(env, info, &argc, args, &ret, &data), GET_CB_INFO);
44     return ret;
45 }
46 
Export(napi_env env,napi_value exports)47 napi_value JsKeyCode::Export(napi_env env, napi_value exports)
48 {
49     CALL_DEBUG_ENTER;
50     napi_property_descriptor desc[] = {
51         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_FN", GetNapiInt32(env, KeyEvent::KEYCODE_FN)),
52         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_UNKNOWN", GetNapiInt32(env, KeyEvent::KEYCODE_UNKNOWN)),
53         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_HOME", GetNapiInt32(env, KeyEvent::KEYCODE_HOME)),
54         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_BACK", GetNapiInt32(env, KeyEvent::KEYCODE_BACK)),
55         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_SEARCH", GetNapiInt32(env, KeyEvent::KEYCODE_SEARCH)),
56         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_MEDIA_PLAY_PAUSE", GetNapiInt32(env, KeyEvent::KEYCODE_MEDIA_PLAY_PAUSE)),
57         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_MEDIA_STOP", GetNapiInt32(env, KeyEvent::KEYCODE_MEDIA_STOP)),
58         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_MEDIA_NEXT", GetNapiInt32(env, KeyEvent::KEYCODE_MEDIA_NEXT)),
59         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_MEDIA_PREVIOUS", GetNapiInt32(env, KeyEvent::KEYCODE_MEDIA_PREVIOUS)),
60         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_MEDIA_REWIND", GetNapiInt32(env, KeyEvent::KEYCODE_MEDIA_REWIND)),
61         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_MEDIA_FAST_FORWARD",
62             GetNapiInt32(env, KeyEvent::KEYCODE_MEDIA_FAST_FORWARD)),
63         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_VOLUME_UP", GetNapiInt32(env, KeyEvent::KEYCODE_VOLUME_UP)),
64         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_VOLUME_DOWN", GetNapiInt32(env, KeyEvent::KEYCODE_VOLUME_DOWN)),
65         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_POWER", GetNapiInt32(env, KeyEvent::KEYCODE_POWER)),
66         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_CAMERA", GetNapiInt32(env, KeyEvent::KEYCODE_CAMERA)),
67         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_VOLUME_MUTE", GetNapiInt32(env, KeyEvent::KEYCODE_VOLUME_MUTE)),
68         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_MUTE", GetNapiInt32(env, KeyEvent::KEYCODE_MUTE)),
69         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_BRIGHTNESS_UP", GetNapiInt32(env, KeyEvent::KEYCODE_BRIGHTNESS_UP)),
70         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_BRIGHTNESS_DOWN", GetNapiInt32(env, KeyEvent::KEYCODE_BRIGHTNESS_DOWN)),
71         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_0", GetNapiInt32(env, KeyEvent::KEYCODE_0)),
72         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_1", GetNapiInt32(env, KeyEvent::KEYCODE_1)),
73         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_2", GetNapiInt32(env, KeyEvent::KEYCODE_2)),
74         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_3", GetNapiInt32(env, KeyEvent::KEYCODE_3)),
75         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_4", GetNapiInt32(env, KeyEvent::KEYCODE_4)),
76         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_5", GetNapiInt32(env, KeyEvent::KEYCODE_5)),
77         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_6", GetNapiInt32(env, KeyEvent::KEYCODE_6)),
78         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_7", GetNapiInt32(env, KeyEvent::KEYCODE_7)),
79         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_8", GetNapiInt32(env, KeyEvent::KEYCODE_8)),
80         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_9", GetNapiInt32(env, KeyEvent::KEYCODE_9)),
81         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_STAR", GetNapiInt32(env, KeyEvent::KEYCODE_STAR)),
82         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_POUND", GetNapiInt32(env, KeyEvent::KEYCODE_POUND)),
83         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_DPAD_UP", GetNapiInt32(env, KeyEvent::KEYCODE_DPAD_UP)),
84         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_DPAD_DOWN", GetNapiInt32(env, KeyEvent::KEYCODE_DPAD_DOWN)),
85         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_DPAD_LEFT", GetNapiInt32(env, KeyEvent::KEYCODE_DPAD_LEFT)),
86         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_DPAD_RIGHT", GetNapiInt32(env, KeyEvent::KEYCODE_DPAD_RIGHT)),
87         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_DPAD_CENTER", GetNapiInt32(env, KeyEvent::KEYCODE_DPAD_CENTER)),
88         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_A", GetNapiInt32(env, KeyEvent::KEYCODE_A)),
89         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_B", GetNapiInt32(env, KeyEvent::KEYCODE_B)),
90         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_C", GetNapiInt32(env, KeyEvent::KEYCODE_C)),
91         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_D", GetNapiInt32(env, KeyEvent::KEYCODE_D)),
92         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_E", GetNapiInt32(env, KeyEvent::KEYCODE_E)),
93         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_F", GetNapiInt32(env, KeyEvent::KEYCODE_F)),
94         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_G", GetNapiInt32(env, KeyEvent::KEYCODE_G)),
95         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_H", GetNapiInt32(env, KeyEvent::KEYCODE_H)),
96         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_I", GetNapiInt32(env, KeyEvent::KEYCODE_I)),
97         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_J", GetNapiInt32(env, KeyEvent::KEYCODE_J)),
98         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_K", GetNapiInt32(env, KeyEvent::KEYCODE_K)),
99         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_L", GetNapiInt32(env, KeyEvent::KEYCODE_L)),
100         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_M", GetNapiInt32(env, KeyEvent::KEYCODE_M)),
101         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_N", GetNapiInt32(env, KeyEvent::KEYCODE_N)),
102         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_O", GetNapiInt32(env, KeyEvent::KEYCODE_O)),
103         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_P", GetNapiInt32(env, KeyEvent::KEYCODE_P)),
104         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_Q", GetNapiInt32(env, KeyEvent::KEYCODE_Q)),
105         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_R", GetNapiInt32(env, KeyEvent::KEYCODE_R)),
106         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_S", GetNapiInt32(env, KeyEvent::KEYCODE_S)),
107         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_T", GetNapiInt32(env, KeyEvent::KEYCODE_T)),
108         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_U", GetNapiInt32(env, KeyEvent::KEYCODE_U)),
109         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_V", GetNapiInt32(env, KeyEvent::KEYCODE_V)),
110         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_W", GetNapiInt32(env, KeyEvent::KEYCODE_W)),
111         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_X", GetNapiInt32(env, KeyEvent::KEYCODE_X)),
112         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_Y", GetNapiInt32(env, KeyEvent::KEYCODE_Y)),
113         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_Z", GetNapiInt32(env, KeyEvent::KEYCODE_Z)),
114         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_COMMA", GetNapiInt32(env, KeyEvent::KEYCODE_COMMA)),
115         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_PERIOD", GetNapiInt32(env, KeyEvent::KEYCODE_PERIOD)),
116         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_ALT_LEFT", GetNapiInt32(env, KeyEvent::KEYCODE_ALT_LEFT)),
117         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_ALT_RIGHT", GetNapiInt32(env, KeyEvent::KEYCODE_ALT_RIGHT)),
118         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_SHIFT_LEFT", GetNapiInt32(env, KeyEvent::KEYCODE_SHIFT_LEFT)),
119         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_SHIFT_RIGHT", GetNapiInt32(env, KeyEvent::KEYCODE_SHIFT_RIGHT)),
120         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_TAB", GetNapiInt32(env, KeyEvent::KEYCODE_TAB)),
121         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_SPACE", GetNapiInt32(env, KeyEvent::KEYCODE_SPACE)),
122         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_SYM", GetNapiInt32(env, KeyEvent::KEYCODE_SYM)),
123         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_EXPLORER", GetNapiInt32(env, KeyEvent::KEYCODE_EXPLORER)),
124         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_ENVELOPE", GetNapiInt32(env, KeyEvent::KEYCODE_ENVELOPE)),
125         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_ENTER", GetNapiInt32(env, KeyEvent::KEYCODE_ENTER)),
126         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_DEL", GetNapiInt32(env, KeyEvent::KEYCODE_DEL)),
127         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_GRAVE", GetNapiInt32(env, KeyEvent::KEYCODE_GRAVE)),
128         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_MINUS", GetNapiInt32(env, KeyEvent::KEYCODE_MINUS)),
129         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_EQUALS", GetNapiInt32(env, KeyEvent::KEYCODE_EQUALS)),
130         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_LEFT_BRACKET", GetNapiInt32(env, KeyEvent::KEYCODE_LEFT_BRACKET)),
131         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_RIGHT_BRACKET", GetNapiInt32(env, KeyEvent::KEYCODE_RIGHT_BRACKET)),
132         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_BACKSLASH", GetNapiInt32(env, KeyEvent::KEYCODE_BACKSLASH)),
133         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_SEMICOLON", GetNapiInt32(env, KeyEvent::KEYCODE_SEMICOLON)),
134         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_APOSTROPHE", GetNapiInt32(env, KeyEvent::KEYCODE_APOSTROPHE)),
135         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_SLASH", GetNapiInt32(env, KeyEvent::KEYCODE_SLASH)),
136         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_AT", GetNapiInt32(env, KeyEvent::KEYCODE_AT)),
137         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_PLUS", GetNapiInt32(env, KeyEvent::KEYCODE_PLUS)),
138         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_MENU", GetNapiInt32(env, KeyEvent::KEYCODE_MENU)),
139         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_PAGE_UP", GetNapiInt32(env, KeyEvent::KEYCODE_PAGE_UP)),
140         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_PAGE_DOWN", GetNapiInt32(env, KeyEvent::KEYCODE_PAGE_DOWN)),
141         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_ESCAPE", GetNapiInt32(env, KeyEvent::KEYCODE_ESCAPE)),
142         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_FORWARD_DEL", GetNapiInt32(env, KeyEvent::KEYCODE_FORWARD_DEL)),
143         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_CTRL_LEFT", GetNapiInt32(env, KeyEvent::KEYCODE_CTRL_LEFT)),
144         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_CTRL_RIGHT", GetNapiInt32(env, KeyEvent::KEYCODE_CTRL_RIGHT)),
145         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_CAPS_LOCK", GetNapiInt32(env, KeyEvent::KEYCODE_CAPS_LOCK)),
146         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_SCROLL_LOCK", GetNapiInt32(env, KeyEvent::KEYCODE_SCROLL_LOCK)),
147         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_META_LEFT", GetNapiInt32(env, KeyEvent::KEYCODE_META_LEFT)),
148         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_META_RIGHT", GetNapiInt32(env, KeyEvent::KEYCODE_META_RIGHT)),
149         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_FUNCTION", GetNapiInt32(env, KeyEvent::KEYCODE_FUNCTION)),
150         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_SYSRQ", GetNapiInt32(env, KeyEvent::KEYCODE_SYSRQ)),
151         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_BREAK", GetNapiInt32(env, KeyEvent::KEYCODE_BREAK)),
152         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_MOVE_HOME", GetNapiInt32(env, KeyEvent::KEYCODE_MOVE_HOME)),
153         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_MOVE_END", GetNapiInt32(env, KeyEvent::KEYCODE_MOVE_END)),
154         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_INSERT", GetNapiInt32(env, KeyEvent::KEYCODE_INSERT)),
155         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_FORWARD", GetNapiInt32(env, KeyEvent::KEYCODE_FORWARD)),
156         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_MEDIA_PLAY", GetNapiInt32(env, KeyEvent::KEYCODE_MEDIA_PLAY)),
157         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_MEDIA_PAUSE", GetNapiInt32(env, KeyEvent::KEYCODE_MEDIA_PAUSE)),
158         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_MEDIA_CLOSE", GetNapiInt32(env, KeyEvent::KEYCODE_MEDIA_CLOSE)),
159         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_MEDIA_EJECT", GetNapiInt32(env, KeyEvent::KEYCODE_MEDIA_EJECT)),
160         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_MEDIA_RECORD", GetNapiInt32(env, KeyEvent::KEYCODE_MEDIA_RECORD)),
161         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_F1", GetNapiInt32(env, KeyEvent::KEYCODE_F1)),
162         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_F2", GetNapiInt32(env, KeyEvent::KEYCODE_F2)),
163         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_F3", GetNapiInt32(env, KeyEvent::KEYCODE_F3)),
164         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_F4", GetNapiInt32(env, KeyEvent::KEYCODE_F4)),
165         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_F5", GetNapiInt32(env, KeyEvent::KEYCODE_F5)),
166         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_F6", GetNapiInt32(env, KeyEvent::KEYCODE_F6)),
167         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_F7", GetNapiInt32(env, KeyEvent::KEYCODE_F7)),
168         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_F8", GetNapiInt32(env, KeyEvent::KEYCODE_F8)),
169         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_F9", GetNapiInt32(env, KeyEvent::KEYCODE_F9)),
170         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_F10", GetNapiInt32(env, KeyEvent::KEYCODE_F10)),
171         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_F11", GetNapiInt32(env, KeyEvent::KEYCODE_F11)),
172         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_F12", GetNapiInt32(env, KeyEvent::KEYCODE_F12)),
173         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_NUM_LOCK", GetNapiInt32(env, KeyEvent::KEYCODE_NUM_LOCK)),
174         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_NUMPAD_0", GetNapiInt32(env, KeyEvent::KEYCODE_NUMPAD_0)),
175         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_NUMPAD_1", GetNapiInt32(env, KeyEvent::KEYCODE_NUMPAD_1)),
176         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_NUMPAD_2", GetNapiInt32(env, KeyEvent::KEYCODE_NUMPAD_2)),
177         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_NUMPAD_3", GetNapiInt32(env, KeyEvent::KEYCODE_NUMPAD_3)),
178         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_NUMPAD_4", GetNapiInt32(env, KeyEvent::KEYCODE_NUMPAD_4)),
179         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_NUMPAD_5", GetNapiInt32(env, KeyEvent::KEYCODE_NUMPAD_5)),
180         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_NUMPAD_6", GetNapiInt32(env, KeyEvent::KEYCODE_NUMPAD_6)),
181         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_NUMPAD_7", GetNapiInt32(env, KeyEvent::KEYCODE_NUMPAD_7)),
182         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_NUMPAD_8", GetNapiInt32(env, KeyEvent::KEYCODE_NUMPAD_8)),
183         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_NUMPAD_9", GetNapiInt32(env, KeyEvent::KEYCODE_NUMPAD_9)),
184         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_NUMPAD_DIVIDE", GetNapiInt32(env, KeyEvent::KEYCODE_NUMPAD_DIVIDE)),
185         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_NUMPAD_MULTIPLY", GetNapiInt32(env, KeyEvent::KEYCODE_NUMPAD_MULTIPLY)),
186         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_NUMPAD_SUBTRACT", GetNapiInt32(env, KeyEvent::KEYCODE_NUMPAD_SUBTRACT)),
187         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_NUMPAD_ADD", GetNapiInt32(env, KeyEvent::KEYCODE_NUMPAD_ADD)),
188         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_NUMPAD_DOT", GetNapiInt32(env, KeyEvent::KEYCODE_NUMPAD_DOT)),
189         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_NUMPAD_COMMA", GetNapiInt32(env, KeyEvent::KEYCODE_NUMPAD_COMMA)),
190         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_NUMPAD_ENTER", GetNapiInt32(env, KeyEvent::KEYCODE_NUMPAD_ENTER)),
191         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_NUMPAD_EQUALS", GetNapiInt32(env, KeyEvent::KEYCODE_NUMPAD_EQUALS)),
192         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_NUMPAD_LEFT_PAREN",
193             GetNapiInt32(env, KeyEvent::KEYCODE_NUMPAD_LEFT_PAREN)),
194         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_NUMPAD_RIGHT_PAREN",
195             GetNapiInt32(env, KeyEvent::KEYCODE_NUMPAD_RIGHT_PAREN)),
196         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_VIRTUAL_MULTITASK",
197             GetNapiInt32(env, KeyEvent::KEYCODE_VIRTUAL_MULTITASK)),
198         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_SLEEP", GetNapiInt32(env, KeyEvent::KEYCODE_SLEEP)),
199         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_ZENKAKU_HANKAKU", GetNapiInt32(env, KeyEvent::KEYCODE_ZENKAKU_HANKAKU)),
200         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_102ND", GetNapiInt32(env, KeyEvent::KEYCODE_102ND)),
201         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_RO", GetNapiInt32(env, KeyEvent::KEYCODE_RO)),
202         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_KATAKANA", GetNapiInt32(env, KeyEvent::KEYCODE_KATAKANA)),
203         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_HIRAGANA", GetNapiInt32(env, KeyEvent::KEYCODE_HIRAGANA)),
204         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_HENKAN", GetNapiInt32(env, KeyEvent::KEYCODE_HENKAN)),
205         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_KATAKANA_HIRAGANA",
206             GetNapiInt32(env, KeyEvent::KEYCODE_KATAKANA_HIRAGANA)),
207         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_MUHENKAN", GetNapiInt32(env, KeyEvent::KEYCODE_MUHENKAN)),
208         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_LINEFEED", GetNapiInt32(env, KeyEvent::KEYCODE_LINEFEED)),
209         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_MACRO", GetNapiInt32(env, KeyEvent::KEYCODE_MACRO)),
210         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_NUMPAD_PLUSMINUS",
211             GetNapiInt32(env, KeyEvent::KEYCODE_NUMPAD_PLUSMINUS)),
212         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_SCALE", GetNapiInt32(env, KeyEvent::KEYCODE_SCALE)),
213         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_HANGUEL", GetNapiInt32(env, KeyEvent::KEYCODE_HANGUEL)),
214         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_HANJA", GetNapiInt32(env, KeyEvent::KEYCODE_HANJA)),
215         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_YEN", GetNapiInt32(env, KeyEvent::KEYCODE_YEN)),
216         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_STOP", GetNapiInt32(env, KeyEvent::KEYCODE_STOP)),
217         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_AGAIN", GetNapiInt32(env, KeyEvent::KEYCODE_AGAIN)),
218         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_PROPS", GetNapiInt32(env, KeyEvent::KEYCODE_PROPS)),
219         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_UNDO", GetNapiInt32(env, KeyEvent::KEYCODE_UNDO)),
220         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_COPY", GetNapiInt32(env, KeyEvent::KEYCODE_COPY)),
221         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_OPEN", GetNapiInt32(env, KeyEvent::KEYCODE_OPEN)),
222         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_PASTE", GetNapiInt32(env, KeyEvent::KEYCODE_PASTE)),
223         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_FIND", GetNapiInt32(env, KeyEvent::KEYCODE_FIND)),
224         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_CUT", GetNapiInt32(env, KeyEvent::KEYCODE_CUT)),
225         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_HELP", GetNapiInt32(env, KeyEvent::KEYCODE_HELP)),
226         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_CALC", GetNapiInt32(env, KeyEvent::KEYCODE_CALC)),
227         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_FILE", GetNapiInt32(env, KeyEvent::KEYCODE_FILE)),
228         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_BOOKMARKS", GetNapiInt32(env, KeyEvent::KEYCODE_BOOKMARKS)),
229         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_NEXT", GetNapiInt32(env, KeyEvent::KEYCODE_NEXT)),
230         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_PLAYPAUSE", GetNapiInt32(env, KeyEvent::KEYCODE_PLAYPAUSE)),
231         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_PREVIOUS", GetNapiInt32(env, KeyEvent::KEYCODE_PREVIOUS)),
232         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_STOPCD", GetNapiInt32(env, KeyEvent::KEYCODE_STOPCD)),
233         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_CONFIG", GetNapiInt32(env, KeyEvent::KEYCODE_CONFIG)),
234         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_REFRESH", GetNapiInt32(env, KeyEvent::KEYCODE_REFRESH)),
235         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_EXIT", GetNapiInt32(env, KeyEvent::KEYCODE_EXIT)),
236         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_EDIT", GetNapiInt32(env, KeyEvent::KEYCODE_EDIT)),
237         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_SCROLLUP", GetNapiInt32(env, KeyEvent::KEYCODE_SCROLLUP)),
238         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_SCROLLDOWN", GetNapiInt32(env, KeyEvent::KEYCODE_SCROLLDOWN)),
239         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_NEW", GetNapiInt32(env, KeyEvent::KEYCODE_NEW)),
240         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_REDO", GetNapiInt32(env, KeyEvent::KEYCODE_REDO)),
241         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_CLOSE", GetNapiInt32(env, KeyEvent::KEYCODE_CLOSE)),
242         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_PLAY", GetNapiInt32(env, KeyEvent::KEYCODE_PLAY)),
243         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_BASSBOOST", GetNapiInt32(env, KeyEvent::KEYCODE_BASSBOOST)),
244         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_PRINT", GetNapiInt32(env, KeyEvent::KEYCODE_PRINT)),
245         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_CHAT", GetNapiInt32(env, KeyEvent::KEYCODE_CHAT)),
246         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_FINANCE", GetNapiInt32(env, KeyEvent::KEYCODE_FINANCE)),
247         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_CANCEL", GetNapiInt32(env, KeyEvent::KEYCODE_CANCEL)),
248         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_KBDILLUM_TOGGLE", GetNapiInt32(env, KeyEvent::KEYCODE_KBDILLUM_TOGGLE)),
249         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_KBDILLUM_DOWN", GetNapiInt32(env, KeyEvent::KEYCODE_KBDILLUM_DOWN)),
250         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_KBDILLUM_UP", GetNapiInt32(env, KeyEvent::KEYCODE_KBDILLUM_UP)),
251         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_SEND", GetNapiInt32(env, KeyEvent::KEYCODE_SEND)),
252         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_REPLY", GetNapiInt32(env, KeyEvent::KEYCODE_REPLY)),
253         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_FORWARDMAIL", GetNapiInt32(env, KeyEvent::KEYCODE_FORWARDMAIL)),
254         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_SAVE", GetNapiInt32(env, KeyEvent::KEYCODE_SAVE)),
255         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_DOCUMENTS", GetNapiInt32(env, KeyEvent::KEYCODE_DOCUMENTS)),
256         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_VIDEO_NEXT", GetNapiInt32(env, KeyEvent::KEYCODE_VIDEO_NEXT)),
257         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_VIDEO_PREV", GetNapiInt32(env, KeyEvent::KEYCODE_VIDEO_PREV)),
258         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_BRIGHTNESS_CYCLE",
259             GetNapiInt32(env, KeyEvent::KEYCODE_BRIGHTNESS_CYCLE)),
260         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_BRIGHTNESS_ZERO", GetNapiInt32(env, KeyEvent::KEYCODE_BRIGHTNESS_ZERO)),
261         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_DISPLAY_OFF", GetNapiInt32(env, KeyEvent::KEYCODE_DISPLAY_OFF)),
262         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_BTN_MISC", GetNapiInt32(env, KeyEvent::KEYCODE_BTN_MISC)),
263         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_GOTO", GetNapiInt32(env, KeyEvent::KEYCODE_GOTO)),
264         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_INFO", GetNapiInt32(env, KeyEvent::KEYCODE_INFO)),
265         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_PROGRAM", GetNapiInt32(env, KeyEvent::KEYCODE_PROGRAM)),
266         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_PVR", GetNapiInt32(env, KeyEvent::KEYCODE_PVR)),
267         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_SUBTITLE", GetNapiInt32(env, KeyEvent::KEYCODE_SUBTITLE)),
268         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_FULL_SCREEN", GetNapiInt32(env, KeyEvent::KEYCODE_FULL_SCREEN)),
269         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_KEYBOARD", GetNapiInt32(env, KeyEvent::KEYCODE_KEYBOARD)),
270         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_ASPECT_RATIO", GetNapiInt32(env, KeyEvent::KEYCODE_ASPECT_RATIO)),
271         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_PC", GetNapiInt32(env, KeyEvent::KEYCODE_PC)),
272         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_TV", GetNapiInt32(env, KeyEvent::KEYCODE_TV)),
273         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_TV2", GetNapiInt32(env, KeyEvent::KEYCODE_TV2)),
274         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_VCR", GetNapiInt32(env, KeyEvent::KEYCODE_VCR)),
275         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_VCR2", GetNapiInt32(env, KeyEvent::KEYCODE_VCR2)),
276         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_SAT", GetNapiInt32(env, KeyEvent::KEYCODE_SAT)),
277         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_CD", GetNapiInt32(env, KeyEvent::KEYCODE_CD)),
278         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_TAPE", GetNapiInt32(env, KeyEvent::KEYCODE_TAPE)),
279         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_TUNER", GetNapiInt32(env, KeyEvent::KEYCODE_TUNER)),
280         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_PLAYER", GetNapiInt32(env, KeyEvent::KEYCODE_PLAYER)),
281         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_DVD", GetNapiInt32(env, KeyEvent::KEYCODE_DVD)),
282         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_AUDIO", GetNapiInt32(env, KeyEvent::KEYCODE_AUDIO)),
283         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_VIDEO", GetNapiInt32(env, KeyEvent::KEYCODE_VIDEO)),
284         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_MEMO", GetNapiInt32(env, KeyEvent::KEYCODE_MEMO)),
285         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_CALENDAR", GetNapiInt32(env, KeyEvent::KEYCODE_CALENDAR)),
286         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_RED", GetNapiInt32(env, KeyEvent::KEYCODE_RED)),
287         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_GREEN", GetNapiInt32(env, KeyEvent::KEYCODE_GREEN)),
288         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_YELLOW", GetNapiInt32(env, KeyEvent::KEYCODE_YELLOW)),
289         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_BLUE", GetNapiInt32(env, KeyEvent::KEYCODE_BLUE)),
290         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_CHANNELUP", GetNapiInt32(env, KeyEvent::KEYCODE_CHANNELUP)),
291         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_CHANNELDOWN", GetNapiInt32(env, KeyEvent::KEYCODE_CHANNELDOWN)),
292         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_LAST", GetNapiInt32(env, KeyEvent::KEYCODE_LAST)),
293         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_RESTART", GetNapiInt32(env, KeyEvent::KEYCODE_RESTART)),
294         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_SLOW", GetNapiInt32(env, KeyEvent::KEYCODE_SLOW)),
295         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_SHUFFLE", GetNapiInt32(env, KeyEvent::KEYCODE_SHUFFLE)),
296         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_VIDEOPHONE", GetNapiInt32(env, KeyEvent::KEYCODE_VIDEOPHONE)),
297         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_GAMES", GetNapiInt32(env, KeyEvent::KEYCODE_GAMES)),
298         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_ZOOMIN", GetNapiInt32(env, KeyEvent::KEYCODE_ZOOMIN)),
299         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_ZOOMOUT", GetNapiInt32(env, KeyEvent::KEYCODE_ZOOMOUT)),
300         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_ZOOMRESET", GetNapiInt32(env, KeyEvent::KEYCODE_ZOOMRESET)),
301         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_WORDPROCESSOR", GetNapiInt32(env, KeyEvent::KEYCODE_WORDPROCESSOR)),
302         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_EDITOR", GetNapiInt32(env, KeyEvent::KEYCODE_EDITOR)),
303         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_SPREADSHEET", GetNapiInt32(env, KeyEvent::KEYCODE_SPREADSHEET)),
304         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_GRAPHICSEDITOR", GetNapiInt32(env, KeyEvent::KEYCODE_GRAPHICSEDITOR)),
305         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_PRESENTATION", GetNapiInt32(env, KeyEvent::KEYCODE_PRESENTATION)),
306         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_DATABASE", GetNapiInt32(env, KeyEvent::KEYCODE_DATABASE)),
307         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_NEWS", GetNapiInt32(env, KeyEvent::KEYCODE_NEWS)),
308         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_VOICEMAIL", GetNapiInt32(env, KeyEvent::KEYCODE_VOICEMAIL)),
309         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_ADDRESSBOOK", GetNapiInt32(env, KeyEvent::KEYCODE_ADDRESSBOOK)),
310         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_MESSENGER", GetNapiInt32(env, KeyEvent::KEYCODE_MESSENGER)),
311         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_BRIGHTNESS_TOGGLE",
312             GetNapiInt32(env, KeyEvent::KEYCODE_BRIGHTNESS_TOGGLE)),
313         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_SPELLCHECK", GetNapiInt32(env, KeyEvent::KEYCODE_SPELLCHECK)),
314         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_COFFEE", GetNapiInt32(env, KeyEvent::KEYCODE_COFFEE)),
315         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_MEDIA_REPEAT", GetNapiInt32(env, KeyEvent::KEYCODE_MEDIA_REPEAT)),
316         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_IMAGES", GetNapiInt32(env, KeyEvent::KEYCODE_IMAGES)),
317         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_BUTTONCONFIG", GetNapiInt32(env, KeyEvent::KEYCODE_BUTTONCONFIG)),
318         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_TASKMANAGER", GetNapiInt32(env, KeyEvent::KEYCODE_TASKMANAGER)),
319         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_JOURNAL", GetNapiInt32(env, KeyEvent::KEYCODE_JOURNAL)),
320         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_CONTROLPANEL", GetNapiInt32(env, KeyEvent::KEYCODE_CONTROLPANEL)),
321         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_APPSELECT", GetNapiInt32(env, KeyEvent::KEYCODE_APPSELECT)),
322         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_SCREENSAVER", GetNapiInt32(env, KeyEvent::KEYCODE_SCREENSAVER)),
323         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_ASSISTANT", GetNapiInt32(env, KeyEvent::KEYCODE_ASSISTANT)),
324         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_KBD_LAYOUT_NEXT", GetNapiInt32(env, KeyEvent::KEYCODE_KBD_LAYOUT_NEXT)),
325         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_BRIGHTNESS_MIN", GetNapiInt32(env, KeyEvent::KEYCODE_BRIGHTNESS_MIN)),
326         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_BRIGHTNESS_MAX", GetNapiInt32(env, KeyEvent::KEYCODE_BRIGHTNESS_MAX)),
327         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_KBDINPUTASSIST_PREV",
328             GetNapiInt32(env, KeyEvent::KEYCODE_KBDINPUTASSIST_PREV)),
329         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_KBDINPUTASSIST_NEXT",
330             GetNapiInt32(env, KeyEvent::KEYCODE_KBDINPUTASSIST_NEXT)),
331         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_KBDINPUTASSIST_PREVGROUP",
332             GetNapiInt32(env, KeyEvent::KEYCODE_KBDINPUTASSIST_PREVGROUP)),
333         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_KBDINPUTASSIST_NEXTGROUP",
334             GetNapiInt32(env, KeyEvent::KEYCODE_KBDINPUTASSIST_NEXTGROUP)),
335         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_KBDINPUTASSIST_ACCEPT",
336             GetNapiInt32(env, KeyEvent::KEYCODE_KBDINPUTASSIST_ACCEPT)),
337         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_KBDINPUTASSIST_CANCEL",
338             GetNapiInt32(env, KeyEvent::KEYCODE_KBDINPUTASSIST_CANCEL)),
339         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_FRONT", GetNapiInt32(env, KeyEvent::KEYCODE_FRONT)),
340         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_SETUP", GetNapiInt32(env, KeyEvent::KEYCODE_SETUP)),
341         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_WAKEUP", GetNapiInt32(env, KeyEvent::KEYCODE_WAKEUP)),
342         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_SENDFILE", GetNapiInt32(env, KeyEvent::KEYCODE_SENDFILE)),
343         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_DELETEFILE", GetNapiInt32(env, KeyEvent::KEYCODE_DELETEFILE)),
344         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_XFER", GetNapiInt32(env, KeyEvent::KEYCODE_XFER)),
345         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_PROG1", GetNapiInt32(env, KeyEvent::KEYCODE_PROG1)),
346         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_PROG2", GetNapiInt32(env, KeyEvent::KEYCODE_PROG2)),
347         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_MSDOS", GetNapiInt32(env, KeyEvent::KEYCODE_MSDOS)),
348         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_SCREENLOCK", GetNapiInt32(env, KeyEvent::KEYCODE_SCREENLOCK)),
349         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_DIRECTION_ROTATE_DISPLAY",
350             GetNapiInt32(env, KeyEvent::KEYCODE_DIRECTION_ROTATE_DISPLAY)),
351         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_CYCLEWINDOWS", GetNapiInt32(env, KeyEvent::KEYCODE_CYCLEWINDOWS)),
352         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_COMPUTER", GetNapiInt32(env, KeyEvent::KEYCODE_COMPUTER)),
353         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_EJECTCLOSECD", GetNapiInt32(env, KeyEvent::KEYCODE_EJECTCLOSECD)),
354         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_ISO", GetNapiInt32(env, KeyEvent::KEYCODE_ISO)),
355         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_MOVE", GetNapiInt32(env, KeyEvent::KEYCODE_MOVE)),
356         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_F13", GetNapiInt32(env, KeyEvent::KEYCODE_F13)),
357         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_F14", GetNapiInt32(env, KeyEvent::KEYCODE_F14)),
358         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_F15", GetNapiInt32(env, KeyEvent::KEYCODE_F15)),
359         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_F16", GetNapiInt32(env, KeyEvent::KEYCODE_F16)),
360         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_F17", GetNapiInt32(env, KeyEvent::KEYCODE_F17)),
361         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_F18", GetNapiInt32(env, KeyEvent::KEYCODE_F18)),
362         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_F19", GetNapiInt32(env, KeyEvent::KEYCODE_F19)),
363         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_F20", GetNapiInt32(env, KeyEvent::KEYCODE_F20)),
364         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_F21", GetNapiInt32(env, KeyEvent::KEYCODE_F21)),
365         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_F22", GetNapiInt32(env, KeyEvent::KEYCODE_F22)),
366         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_F23", GetNapiInt32(env, KeyEvent::KEYCODE_F23)),
367         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_F24", GetNapiInt32(env, KeyEvent::KEYCODE_F24)),
368         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_PROG3", GetNapiInt32(env, KeyEvent::KEYCODE_PROG3)),
369         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_PROG4", GetNapiInt32(env, KeyEvent::KEYCODE_PROG4)),
370         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_DASHBOARD", GetNapiInt32(env, KeyEvent::KEYCODE_DASHBOARD)),
371         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_SUSPEND", GetNapiInt32(env, KeyEvent::KEYCODE_SUSPEND)),
372         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_HP", GetNapiInt32(env, KeyEvent::KEYCODE_HP)),
373         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_SOUND", GetNapiInt32(env, KeyEvent::KEYCODE_SOUND)),
374         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_QUESTION", GetNapiInt32(env, KeyEvent::KEYCODE_QUESTION)),
375         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_CONNECT", GetNapiInt32(env, KeyEvent::KEYCODE_CONNECT)),
376         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_SPORT", GetNapiInt32(env, KeyEvent::KEYCODE_SPORT)),
377         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_SHOP", GetNapiInt32(env, KeyEvent::KEYCODE_SHOP)),
378         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_ALTERASE", GetNapiInt32(env, KeyEvent::KEYCODE_ALTERASE)),
379         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_SWITCHVIDEOMODE", GetNapiInt32(env, KeyEvent::KEYCODE_SWITCHVIDEOMODE)),
380         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_BATTERY", GetNapiInt32(env, KeyEvent::KEYCODE_BATTERY)),
381         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_BLUETOOTH", GetNapiInt32(env, KeyEvent::KEYCODE_BLUETOOTH)),
382         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_WLAN", GetNapiInt32(env, KeyEvent::KEYCODE_WLAN)),
383         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_UWB", GetNapiInt32(env, KeyEvent::KEYCODE_UWB)),
384         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_WWAN_WIMAX", GetNapiInt32(env, KeyEvent::KEYCODE_WWAN_WIMAX)),
385         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_RFKILL", GetNapiInt32(env, KeyEvent::KEYCODE_RFKILL)),
386         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_CHANNEL", GetNapiInt32(env, KeyEvent::KEYCODE_CHANNEL)),
387         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_BTN_0", GetNapiInt32(env, KeyEvent::KEYCODE_BTN_0)),
388         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_BTN_1", GetNapiInt32(env, KeyEvent::KEYCODE_BTN_1)),
389         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_BTN_2", GetNapiInt32(env, KeyEvent::KEYCODE_BTN_2)),
390         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_BTN_3", GetNapiInt32(env, KeyEvent::KEYCODE_BTN_3)),
391         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_BTN_4", GetNapiInt32(env, KeyEvent::KEYCODE_BTN_4)),
392         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_BTN_5", GetNapiInt32(env, KeyEvent::KEYCODE_BTN_5)),
393         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_BTN_6", GetNapiInt32(env, KeyEvent::KEYCODE_BTN_6)),
394         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_BTN_7", GetNapiInt32(env, KeyEvent::KEYCODE_BTN_7)),
395         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_BTN_8", GetNapiInt32(env, KeyEvent::KEYCODE_BTN_8)),
396         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_BTN_9", GetNapiInt32(env, KeyEvent::KEYCODE_BTN_9)),
397         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_CALL_NOTIFICATION_CENTER",
398             GetNapiInt32(env, KeyEvent::KEYCODE_CALL_NOTIFICATION_CENTER)),
399         DECLARE_NAPI_STATIC_PROPERTY("KEYCODE_CALL_CONTROL_CENTER",
400             GetNapiInt32(env, KeyEvent::KEYCODE_CALL_CONTROL_CENTER)),
401     };
402 
403     napi_value result = nullptr;
404     CHKRP(napi_define_class(env, "KeyCode", NAPI_AUTO_LENGTH, EnumClassConstructor, nullptr,
405         sizeof(desc) / sizeof(*desc), desc, &result), DEFINE_CLASS);
406     CHKRP(napi_set_named_property(env, exports, "KeyCode", result), SET_NAMED_PROPERTY);
407     return exports;
408 }
409 } // namespace MMI
410 } // namespace OHOS