xbmc
WinKeyMap.h
1 /*
2  * Copyright (C) 2005-2018 Team Kodi
3  * This file is part of Kodi - https://kodi.tv
4  *
5  * SPDX-License-Identifier: GPL-2.0-or-later
6  * See LICENSES/README.md for more information.
7  */
8 
9 #pragma once
10 
11 #include "ServiceBroker.h"
12 #include "Util.h"
13 #include "input/keyboard/XBMC_keysym.h"
14 #include "input/keyboard/XBMC_vkeys.h"
15 #include "settings/AdvancedSettings.h"
16 #include "settings/SettingsComponent.h"
17 
18 #include <array>
19 
20 namespace KODI
21 {
22 namespace WINDOWING
23 {
24 namespace WINDOWS
25 {
26 
27 static std::array<XBMCKey, XBMCK_LAST> VK_keymap;
28 
29 static void DIB_InitOSKeymap()
30 {
31  /* Map the VK keysyms */
32  VK_keymap.fill(XBMCK_UNKNOWN);
33 
34  VK_keymap[VK_BACK] = XBMCK_BACKSPACE;
35  VK_keymap[VK_TAB] = XBMCK_TAB;
36  VK_keymap[VK_CLEAR] = XBMCK_CLEAR;
37  VK_keymap[VK_RETURN] = XBMCK_RETURN;
38  VK_keymap[VK_PAUSE] = XBMCK_PAUSE;
39  VK_keymap[VK_ESCAPE] = XBMCK_ESCAPE;
40  VK_keymap[VK_SPACE] = XBMCK_SPACE;
41  VK_keymap[VK_APOSTROPHE] = XBMCK_QUOTE;
42  VK_keymap[VK_COMMA] = XBMCK_COMMA;
43  VK_keymap[VK_MINUS] = XBMCK_MINUS;
44  VK_keymap[VK_PERIOD] = XBMCK_PERIOD;
45  VK_keymap[VK_SLASH] = XBMCK_SLASH;
46  VK_keymap[VK_0] = XBMCK_0;
47  VK_keymap[VK_1] = XBMCK_1;
48  VK_keymap[VK_2] = XBMCK_2;
49  VK_keymap[VK_3] = XBMCK_3;
50  VK_keymap[VK_4] = XBMCK_4;
51  VK_keymap[VK_5] = XBMCK_5;
52  VK_keymap[VK_6] = XBMCK_6;
53  VK_keymap[VK_7] = XBMCK_7;
54  VK_keymap[VK_8] = XBMCK_8;
55  VK_keymap[VK_9] = XBMCK_9;
56  VK_keymap[VK_SEMICOLON] = XBMCK_SEMICOLON;
57  VK_keymap[VK_EQUALS] = XBMCK_EQUALS;
58  VK_keymap[VK_LBRACKET] = XBMCK_LEFTBRACKET;
59  VK_keymap[VK_BACKSLASH] = XBMCK_BACKSLASH;
60  VK_keymap[VK_OEM_102] = XBMCK_BACKSLASH;
61  VK_keymap[VK_RBRACKET] = XBMCK_RIGHTBRACKET;
62  VK_keymap[VK_GRAVE] = XBMCK_BACKQUOTE;
63  VK_keymap[VK_BACKTICK] = XBMCK_BACKQUOTE;
64  VK_keymap[VK_A] = XBMCK_a;
65  VK_keymap[VK_B] = XBMCK_b;
66  VK_keymap[VK_C] = XBMCK_c;
67  VK_keymap[VK_D] = XBMCK_d;
68  VK_keymap[VK_E] = XBMCK_e;
69  VK_keymap[VK_F] = XBMCK_f;
70  VK_keymap[VK_G] = XBMCK_g;
71  VK_keymap[VK_H] = XBMCK_h;
72  VK_keymap[VK_I] = XBMCK_i;
73  VK_keymap[VK_J] = XBMCK_j;
74  VK_keymap[VK_K] = XBMCK_k;
75  VK_keymap[VK_L] = XBMCK_l;
76  VK_keymap[VK_M] = XBMCK_m;
77  VK_keymap[VK_N] = XBMCK_n;
78  VK_keymap[VK_O] = XBMCK_o;
79  VK_keymap[VK_P] = XBMCK_p;
80  VK_keymap[VK_Q] = XBMCK_q;
81  VK_keymap[VK_R] = XBMCK_r;
82  VK_keymap[VK_S] = XBMCK_s;
83  VK_keymap[VK_T] = XBMCK_t;
84  VK_keymap[VK_U] = XBMCK_u;
85  VK_keymap[VK_V] = XBMCK_v;
86  VK_keymap[VK_W] = XBMCK_w;
87  VK_keymap[VK_X] = XBMCK_x;
88  VK_keymap[VK_Y] = XBMCK_y;
89  VK_keymap[VK_Z] = XBMCK_z;
90  VK_keymap[VK_DELETE] = XBMCK_DELETE;
91 
92  VK_keymap[VK_NUMPAD0] = XBMCK_KP0;
93  VK_keymap[VK_NUMPAD1] = XBMCK_KP1;
94  VK_keymap[VK_NUMPAD2] = XBMCK_KP2;
95  VK_keymap[VK_NUMPAD3] = XBMCK_KP3;
96  VK_keymap[VK_NUMPAD4] = XBMCK_KP4;
97  VK_keymap[VK_NUMPAD5] = XBMCK_KP5;
98  VK_keymap[VK_NUMPAD6] = XBMCK_KP6;
99  VK_keymap[VK_NUMPAD7] = XBMCK_KP7;
100  VK_keymap[VK_NUMPAD8] = XBMCK_KP8;
101  VK_keymap[VK_NUMPAD9] = XBMCK_KP9;
102  VK_keymap[VK_DECIMAL] = XBMCK_KP_PERIOD;
103  VK_keymap[VK_DIVIDE] = XBMCK_KP_DIVIDE;
104  VK_keymap[VK_MULTIPLY] = XBMCK_KP_MULTIPLY;
105  VK_keymap[VK_SUBTRACT] = XBMCK_KP_MINUS;
106  VK_keymap[VK_ADD] = XBMCK_KP_PLUS;
107 
108  VK_keymap[VK_UP] = XBMCK_UP;
109  VK_keymap[VK_DOWN] = XBMCK_DOWN;
110  VK_keymap[VK_RIGHT] = XBMCK_RIGHT;
111  VK_keymap[VK_LEFT] = XBMCK_LEFT;
112  VK_keymap[VK_INSERT] = XBMCK_INSERT;
113  VK_keymap[VK_HOME] = XBMCK_HOME;
114  VK_keymap[VK_END] = XBMCK_END;
115  VK_keymap[VK_PRIOR] = XBMCK_PAGEUP;
116  VK_keymap[VK_NEXT] = XBMCK_PAGEDOWN;
117 
118  VK_keymap[VK_F1] = XBMCK_F1;
119  VK_keymap[VK_F2] = XBMCK_F2;
120  VK_keymap[VK_F3] = XBMCK_F3;
121  VK_keymap[VK_F4] = XBMCK_F4;
122  VK_keymap[VK_F5] = XBMCK_F5;
123  VK_keymap[VK_F6] = XBMCK_F6;
124  VK_keymap[VK_F7] = XBMCK_F7;
125  VK_keymap[VK_F8] = XBMCK_F8;
126  VK_keymap[VK_F9] = XBMCK_F9;
127  VK_keymap[VK_F10] = XBMCK_F10;
128  VK_keymap[VK_F11] = XBMCK_F11;
129  VK_keymap[VK_F12] = XBMCK_F12;
130  VK_keymap[VK_F13] = XBMCK_F13;
131  VK_keymap[VK_F14] = XBMCK_F14;
132  VK_keymap[VK_F15] = XBMCK_F15;
133 
134  VK_keymap[VK_NUMLOCK] = XBMCK_NUMLOCK;
135  VK_keymap[VK_CAPITAL] = XBMCK_CAPSLOCK;
136  VK_keymap[VK_SCROLL] = XBMCK_SCROLLOCK;
137  VK_keymap[VK_RSHIFT] = XBMCK_RSHIFT;
138  VK_keymap[VK_LSHIFT] = XBMCK_LSHIFT;
139  VK_keymap[VK_RCONTROL] = XBMCK_RCTRL;
140  VK_keymap[VK_LCONTROL] = XBMCK_LCTRL;
141  VK_keymap[VK_RMENU] = XBMCK_RALT;
142  VK_keymap[VK_LMENU] = XBMCK_LALT;
143  VK_keymap[VK_RWIN] = XBMCK_RSUPER;
144  VK_keymap[VK_LWIN] = XBMCK_LSUPER;
145 
146  VK_keymap[VK_HELP] = XBMCK_HELP;
147 #ifdef VK_PRINT
148  VK_keymap[VK_PRINT] = XBMCK_PRINT;
149 #endif
150  VK_keymap[VK_SNAPSHOT] = XBMCK_PRINT;
151  VK_keymap[VK_CANCEL] = XBMCK_BREAK;
152  VK_keymap[VK_APPS] = XBMCK_MENU;
153 
154  // Only include the multimedia keys if they have been enabled in the
155  // advanced settings
156  if (CServiceBroker::GetSettingsComponent()->GetAdvancedSettings()->m_enableMultimediaKeys)
157  {
158  VK_keymap[VK_BROWSER_BACK] = XBMCK_BROWSER_BACK;
159  VK_keymap[VK_BROWSER_FORWARD] = XBMCK_BROWSER_FORWARD;
160  VK_keymap[VK_BROWSER_REFRESH] = XBMCK_BROWSER_REFRESH;
161  VK_keymap[VK_BROWSER_STOP] = XBMCK_BROWSER_STOP;
162  VK_keymap[VK_BROWSER_SEARCH] = XBMCK_BROWSER_SEARCH;
163  VK_keymap[VK_BROWSER_FAVORITES] = XBMCK_BROWSER_FAVORITES;
164  VK_keymap[VK_BROWSER_HOME] = XBMCK_BROWSER_HOME;
165  VK_keymap[VK_VOLUME_MUTE] = XBMCK_VOLUME_MUTE;
166  VK_keymap[VK_VOLUME_DOWN] = XBMCK_VOLUME_DOWN;
167  VK_keymap[VK_VOLUME_UP] = XBMCK_VOLUME_UP;
168  VK_keymap[VK_MEDIA_NEXT_TRACK] = XBMCK_MEDIA_NEXT_TRACK;
169  VK_keymap[VK_MEDIA_PREV_TRACK] = XBMCK_MEDIA_PREV_TRACK;
170  VK_keymap[VK_MEDIA_STOP] = XBMCK_MEDIA_STOP;
171  VK_keymap[VK_MEDIA_PLAY_PAUSE] = XBMCK_MEDIA_PLAY_PAUSE;
172  VK_keymap[VK_LAUNCH_MAIL] = XBMCK_LAUNCH_MAIL;
173  VK_keymap[VK_LAUNCH_MEDIA_SELECT] = XBMCK_LAUNCH_MEDIA_SELECT;
174  VK_keymap[VK_LAUNCH_APP1] = XBMCK_LAUNCH_APP1;
175  VK_keymap[VK_LAUNCH_APP2] = XBMCK_LAUNCH_APP2;
176  }
177 }
178 
179 } // namespace WINDOWS
180 } // namespace WINDOWING
181 } // namespace KODI
Definition: AudioDecoder.h:18