HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
keyboard_virtual_key_win32_impl.hpp
1// Copyright Take Vos 2021-2022.
2// Distributed under the Boost Software License, Version 1.0.
3// (See accompanying file LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt)
4
5#pragma once
6
8
9#include "keyboard_virtual_key.hpp"
10#include "keyboard_modifiers.hpp"
11#include "../macros.hpp"
12
13namespace hi::inline v1 {
14
15[[nodiscard]] constexpr keyboard_virtual_key to_keyboard_virtual_key(int key_code, bool extended, keyboard_modifiers modifiers) noexcept
16{
17 switch (key_code) {
18 case VK_MENU:
19 return keyboard_virtual_key::menu;
20 case VK_BACK:
21 return keyboard_virtual_key::backspace;
22 case VK_TAB:
23 return keyboard_virtual_key::tab;
24 case VK_CLEAR:
25 return keyboard_virtual_key::clear;
26 case VK_RETURN:
27 return keyboard_virtual_key::enter;
28 case VK_PAUSE:
29 return keyboard_virtual_key::pause_break;
30 case VK_ESCAPE:
31 return keyboard_virtual_key::escape;
32 case VK_SPACE:
33 return keyboard_virtual_key::space;
34 case VK_PRIOR:
35 return keyboard_virtual_key::page_up;
36 case VK_NEXT:
37 return keyboard_virtual_key::page_down;
38 case VK_END:
39 return keyboard_virtual_key::end;
40 case VK_HOME:
41 return keyboard_virtual_key::home;
42 case VK_LEFT:
43 return keyboard_virtual_key::left;
44 case VK_UP:
45 return keyboard_virtual_key::up;
46 case VK_RIGHT:
47 return keyboard_virtual_key::right;
48 case VK_DOWN:
49 return keyboard_virtual_key::down;
50 case VK_PRINT:
51 return keyboard_virtual_key::print_screen;
52 case VK_SNAPSHOT:
53 return keyboard_virtual_key::print_screen;
54 case VK_INSERT:
55 return keyboard_virtual_key::insert;
56 case VK_DELETE:
57 return keyboard_virtual_key::_delete;
58 case '0':
59 return keyboard_virtual_key::_0;
60 case '1':
61 return keyboard_virtual_key::_1;
62 case '2':
63 return keyboard_virtual_key::_2;
64 case '3':
65 return keyboard_virtual_key::_3;
66 case '4':
67 return keyboard_virtual_key::_4;
68 case '5':
69 return keyboard_virtual_key::_5;
70 case '6':
71 return keyboard_virtual_key::_6;
72 case '7':
73 return keyboard_virtual_key::_7;
74 case '8':
75 return keyboard_virtual_key::_8;
76 case '9':
77 return keyboard_virtual_key::_9;
78 case 'A':
79 return keyboard_virtual_key::A;
80 case 'B':
81 return keyboard_virtual_key::B;
82 case 'C':
83 return keyboard_virtual_key::C;
84 case 'D':
85 return keyboard_virtual_key::D;
86 case 'E':
87 return keyboard_virtual_key::E;
88 case 'F':
89 return keyboard_virtual_key::F;
90 case 'G':
91 return keyboard_virtual_key::G;
92 case 'H':
93 return keyboard_virtual_key::H;
94 case 'I':
95 return keyboard_virtual_key::I;
96 case 'J':
97 return keyboard_virtual_key::J;
98 case 'K':
99 return keyboard_virtual_key::K;
100 case 'L':
101 return keyboard_virtual_key::L;
102 case 'M':
103 return keyboard_virtual_key::M;
104 case 'N':
105 return keyboard_virtual_key::N;
106 case 'O':
107 return keyboard_virtual_key::O;
108 case 'P':
109 return keyboard_virtual_key::P;
110 case 'Q':
111 return keyboard_virtual_key::Q;
112 case 'R':
113 return keyboard_virtual_key::R;
114 case 'S':
115 return keyboard_virtual_key::S;
116 case 'T':
117 return keyboard_virtual_key::T;
118 case 'U':
119 return keyboard_virtual_key::U;
120 case 'V':
121 return keyboard_virtual_key::V;
122 case 'W':
123 return keyboard_virtual_key::W;
124 case 'X':
125 return keyboard_virtual_key::X;
126 case 'Y':
127 return keyboard_virtual_key::Y;
128 case 'Z':
129 return keyboard_virtual_key::Z;
130 case VK_NUMPAD0:
131 return keyboard_virtual_key::_0;
132 case VK_NUMPAD1:
133 return keyboard_virtual_key::_1;
134 case VK_NUMPAD2:
135 return keyboard_virtual_key::_2;
136 case VK_NUMPAD3:
137 return keyboard_virtual_key::_3;
138 case VK_NUMPAD4:
139 return keyboard_virtual_key::_4;
140 case VK_NUMPAD5:
141 return keyboard_virtual_key::_5;
142 case VK_NUMPAD6:
143 return keyboard_virtual_key::_6;
144 case VK_NUMPAD7:
145 return keyboard_virtual_key::_7;
146 case VK_NUMPAD8:
147 return keyboard_virtual_key::_8;
148 case VK_NUMPAD9:
149 return keyboard_virtual_key::_9;
150 case VK_MULTIPLY:
151 return keyboard_virtual_key::star;
152 case VK_ADD:
153 return keyboard_virtual_key::plus;
154 case VK_SUBTRACT:
155 return keyboard_virtual_key::minus;
156 case VK_DECIMAL:
157 return keyboard_virtual_key::period;
158 case VK_DIVIDE:
159 return keyboard_virtual_key::slash;
160 case VK_F1:
161 return keyboard_virtual_key::F1;
162 case VK_F2:
163 return keyboard_virtual_key::F2;
164 case VK_F3:
165 return keyboard_virtual_key::F3;
166 case VK_F4:
167 return keyboard_virtual_key::F4;
168 case VK_F5:
169 return keyboard_virtual_key::F5;
170 case VK_F6:
171 return keyboard_virtual_key::F6;
172 case VK_F7:
173 return keyboard_virtual_key::F7;
174 case VK_F8:
175 return keyboard_virtual_key::F8;
176 case VK_F9:
177 return keyboard_virtual_key::F9;
178 case VK_F10:
179 return keyboard_virtual_key::F10;
180 case VK_F11:
181 return keyboard_virtual_key::F11;
182 case VK_F12:
183 return keyboard_virtual_key::F12;
184 case VK_F13:
185 return keyboard_virtual_key::F13;
186 case VK_F14:
187 return keyboard_virtual_key::F14;
188 case VK_F15:
189 return keyboard_virtual_key::F15;
190 case VK_F16:
191 return keyboard_virtual_key::F16;
192 case VK_F17:
193 return keyboard_virtual_key::F17;
194 case VK_F18:
195 return keyboard_virtual_key::F18;
196 case VK_F19:
197 return keyboard_virtual_key::F19;
198 case VK_F20:
199 return keyboard_virtual_key::F20;
200 case VK_F21:
201 return keyboard_virtual_key::F21;
202 case VK_F22:
203 return keyboard_virtual_key::F22;
204 case VK_F23:
205 return keyboard_virtual_key::F23;
206 case VK_F24:
207 return keyboard_virtual_key::F24;
208 case VK_BROWSER_BACK:
209 return keyboard_virtual_key::browser_back;
211 return keyboard_virtual_key::browser_forward;
213 return keyboard_virtual_key::browser_refresh;
214 case VK_BROWSER_STOP:
215 return keyboard_virtual_key::browser_stop;
217 return keyboard_virtual_key::browser_search;
219 return keyboard_virtual_key::browser_favorites;
220 case VK_BROWSER_HOME:
221 return keyboard_virtual_key::browser_home;
222 case VK_VOLUME_MUTE:
223 return keyboard_virtual_key::volume_mute;
224 case VK_VOLUME_DOWN:
225 return keyboard_virtual_key::volume_down;
226 case VK_VOLUME_UP:
227 return keyboard_virtual_key::volume_up;
229 return keyboard_virtual_key::media_next_track;
231 return keyboard_virtual_key::media_prev_track;
232 case VK_MEDIA_STOP:
233 return keyboard_virtual_key::media_stop;
235 return keyboard_virtual_key::media_play_pause;
236 case VK_OEM_1:
237 return to_bool(modifiers & keyboard_modifiers::shift) ? keyboard_virtual_key::colon : keyboard_virtual_key::semi_colon;
238 case VK_OEM_PLUS:
239 return keyboard_virtual_key::plus;
240 case VK_OEM_COMMA:
241 return keyboard_virtual_key::comma;
242 case VK_OEM_MINUS:
243 return keyboard_virtual_key::minus;
244 case VK_OEM_PERIOD:
245 return keyboard_virtual_key::period;
246 case VK_OEM_2:
247 return to_bool(modifiers & keyboard_modifiers::shift) ? keyboard_virtual_key::question : keyboard_virtual_key::slash;
248 case VK_OEM_3:
249 return to_bool(modifiers & keyboard_modifiers::shift) ? keyboard_virtual_key::tilde : keyboard_virtual_key::backtick;
250 case VK_OEM_4:
251 return to_bool(modifiers & keyboard_modifiers::shift) ? keyboard_virtual_key::open_brace :
252 keyboard_virtual_key::open_bracket;
253 case VK_OEM_5:
254 return to_bool(modifiers & keyboard_modifiers::shift) ? keyboard_virtual_key::pipe : keyboard_virtual_key::backslash;
255 case VK_OEM_6:
256 return to_bool(modifiers & keyboard_modifiers::shift) ? keyboard_virtual_key::close_brace :
257 keyboard_virtual_key::close_bracket;
258 case VK_OEM_7:
259 return to_bool(modifiers & keyboard_modifiers::shift) ? keyboard_virtual_key::double_quote : keyboard_virtual_key::quote;
260 case VK_PLAY:
261 return keyboard_virtual_key::media_play_pause;
262 case VK_OEM_CLEAR:
263 return keyboard_virtual_key::clear;
264 default:
265 return keyboard_virtual_key::nul;
266 }
267}
268
269} // namespace hi::inline v1
Rules for working with win32 headers.
DOXYGEN BUG.
Definition algorithm.hpp:16
constexpr Out narrow_cast(In const &rhs) noexcept
Cast numeric values without loss of precision.
Definition cast.hpp:377