49582f9d |
1 | // Copyright (c) 2016-2019 OPEN CASCADE SAS |
2 | // |
3 | // This file is part of Open CASCADE Technology software library. |
4 | // |
5 | // This library is free software; you can redistribute it and/or modify it under |
6 | // the terms of the GNU Lesser General Public License version 2.1 as published |
7 | // by the Free Software Foundation, with special exception defined in the file |
8 | // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT |
9 | // distribution for complete text of the license and disclaimer of any warranty. |
10 | // |
11 | // Alternatively, this file may be used under the terms of Open CASCADE |
12 | // commercial license or contractual agreement. |
13 | |
14 | #ifndef _Aspect_VKey_HeaderFile |
15 | #define _Aspect_VKey_HeaderFile |
16 | |
17 | #include <Aspect_VKeyFlags.hxx> |
18 | |
19 | //! Define virtual key as integer number to allow extensions. |
20 | typedef unsigned int Aspect_VKey; |
21 | |
22 | //! Enumeration defining virtual keys irrelevant to current keyboard layout for simplified hot-keys management logic. |
23 | enum Aspect_VKeyBasic |
24 | { |
25 | Aspect_VKey_UNKNOWN = 0, |
26 | |
27 | // main latin alphabet keys |
28 | Aspect_VKey_A = 1, |
29 | Aspect_VKey_B, |
30 | Aspect_VKey_C, |
31 | Aspect_VKey_D, |
32 | Aspect_VKey_E, |
33 | Aspect_VKey_F, |
34 | Aspect_VKey_G, |
35 | Aspect_VKey_H, |
36 | Aspect_VKey_I, |
37 | Aspect_VKey_J, |
38 | Aspect_VKey_K, |
39 | Aspect_VKey_L, |
40 | Aspect_VKey_M, |
41 | Aspect_VKey_N, |
42 | Aspect_VKey_O, |
43 | Aspect_VKey_P, |
44 | Aspect_VKey_Q, |
45 | Aspect_VKey_R, |
46 | Aspect_VKey_S, |
47 | Aspect_VKey_T, |
48 | Aspect_VKey_U, |
49 | Aspect_VKey_V, |
50 | Aspect_VKey_W, |
51 | Aspect_VKey_X, |
52 | Aspect_VKey_Y, |
53 | Aspect_VKey_Z, |
54 | |
55 | Aspect_VKey_0, |
56 | Aspect_VKey_1, |
57 | Aspect_VKey_2, |
58 | Aspect_VKey_3, |
59 | Aspect_VKey_4, |
60 | Aspect_VKey_5, |
61 | Aspect_VKey_6, |
62 | Aspect_VKey_7, |
63 | Aspect_VKey_8, |
64 | Aspect_VKey_9, |
65 | |
66 | Aspect_VKey_F1, |
67 | Aspect_VKey_F2, |
68 | Aspect_VKey_F3, |
69 | Aspect_VKey_F4, |
70 | Aspect_VKey_F5, |
71 | Aspect_VKey_F6, |
72 | Aspect_VKey_F7, |
73 | Aspect_VKey_F8, |
74 | Aspect_VKey_F9, |
75 | Aspect_VKey_F10, |
76 | Aspect_VKey_F11, |
77 | Aspect_VKey_F12, |
78 | |
79 | // standard keys |
80 | Aspect_VKey_Up, |
81 | Aspect_VKey_Down, |
82 | Aspect_VKey_Left, |
83 | Aspect_VKey_Right, |
84 | Aspect_VKey_Plus, //!< '+' |
85 | Aspect_VKey_Minus, //!< '-' |
86 | Aspect_VKey_Equal, //!< '=+' |
87 | Aspect_VKey_PageUp, |
88 | Aspect_VKey_PageDown, |
89 | Aspect_VKey_Home, |
90 | Aspect_VKey_End, |
91 | Aspect_VKey_Escape, |
92 | Aspect_VKey_Back, |
93 | Aspect_VKey_Enter, |
94 | Aspect_VKey_Backspace, |
95 | Aspect_VKey_Space, |
96 | Aspect_VKey_Delete, |
97 | Aspect_VKey_Tilde, |
98 | Aspect_VKey_Tab, |
99 | Aspect_VKey_Comma, //!< ',' |
100 | Aspect_VKey_Period, //!< '.' |
101 | Aspect_VKey_Semicolon, //!< ';:' |
102 | Aspect_VKey_Slash, //!< '/?' |
103 | Aspect_VKey_BracketLeft, //!< '[{' |
104 | Aspect_VKey_Backslash, //!< '\|' |
105 | Aspect_VKey_BracketRight, //!< ']}' |
106 | Aspect_VKey_Apostrophe, //!< ''"' |
107 | Aspect_VKey_Numlock, //!< Num Lock key |
108 | Aspect_VKey_Scroll, //!< Scroll Lock key |
109 | |
110 | // numpad keys |
111 | Aspect_VKey_Numpad0, |
112 | Aspect_VKey_Numpad1, |
113 | Aspect_VKey_Numpad2, |
114 | Aspect_VKey_Numpad3, |
115 | Aspect_VKey_Numpad4, |
116 | Aspect_VKey_Numpad5, |
117 | Aspect_VKey_Numpad6, |
118 | Aspect_VKey_Numpad7, |
119 | Aspect_VKey_Numpad8, |
120 | Aspect_VKey_Numpad9, |
121 | Aspect_VKey_NumpadMultiply, //!< numpad '*' |
122 | Aspect_VKey_NumpadAdd, //!< numpad '+' |
123 | Aspect_VKey_NumpadSubtract, //!< numpad '-' |
124 | Aspect_VKey_NumpadDivide, //!< numpad '/' |
125 | |
126 | // Multimedia keys |
127 | Aspect_VKey_MediaNextTrack, |
128 | Aspect_VKey_MediaPreviousTrack, |
129 | Aspect_VKey_MediaStop, |
130 | Aspect_VKey_MediaPlayPause, |
131 | Aspect_VKey_VolumeMute, |
132 | Aspect_VKey_VolumeDown, |
133 | Aspect_VKey_VolumeUp, |
134 | Aspect_VKey_BrowserBack, |
135 | Aspect_VKey_BrowserForward, |
136 | Aspect_VKey_BrowserRefresh, |
137 | Aspect_VKey_BrowserStop, |
138 | Aspect_VKey_BrowserSearch, |
139 | Aspect_VKey_BrowserFavorites, |
140 | Aspect_VKey_BrowserHome, |
141 | |
d6fbb2ab |
142 | // 3d view keys |
143 | Aspect_VKey_ViewTop, |
144 | Aspect_VKey_ViewBottom, |
145 | Aspect_VKey_ViewLeft, |
146 | Aspect_VKey_ViewRight, |
147 | Aspect_VKey_ViewFront, |
148 | Aspect_VKey_ViewBack, |
149 | Aspect_VKey_ViewAxoLeftProj, |
150 | Aspect_VKey_ViewAxoRightProj, |
151 | Aspect_VKey_ViewFitAll, |
152 | Aspect_VKey_ViewRoll90CW, |
153 | Aspect_VKey_ViewRoll90CCW, |
154 | Aspect_VKey_ViewSwitchRotate, |
155 | |
49582f9d |
156 | // modifier keys, @sa Aspect_VKey_ModifiersLower and Aspect_VKey_ModifiersUpper below |
157 | Aspect_VKey_Shift, |
158 | Aspect_VKey_Control, |
159 | Aspect_VKey_Alt, |
160 | Aspect_VKey_Menu, |
161 | Aspect_VKey_Meta, |
162 | |
163 | // virtual navigation keys, @sa Aspect_VKey_NavigationKeysLower and Aspect_VKey_NavigationKeysUpper below |
164 | Aspect_VKey_NavInteract, //!< interact |
165 | Aspect_VKey_NavForward, //!< go forward |
166 | Aspect_VKey_NavBackward, //!< go backward |
167 | Aspect_VKey_NavSlideLeft, //!< sidewalk, left |
168 | Aspect_VKey_NavSlideRight, //!< sidewalk, right |
169 | Aspect_VKey_NavSlideUp, //!< lift up |
170 | Aspect_VKey_NavSlideDown, //!< fall down |
171 | Aspect_VKey_NavRollCCW, //!< bank left (roll counter-clockwise) |
172 | Aspect_VKey_NavRollCW, //!< bank right (roll clockwise) |
173 | Aspect_VKey_NavLookLeft, //!< look left (yaw counter-clockwise) |
174 | Aspect_VKey_NavLookRight, //!< look right (yaw clockwise) |
175 | Aspect_VKey_NavLookUp, //!< look up (pitch clockwise) |
176 | Aspect_VKey_NavLookDown, //!< look down (pitch counter-clockwise) |
177 | Aspect_VKey_NavCrouch, //!< crouch walking |
178 | Aspect_VKey_NavJump, //!< jump |
179 | Aspect_VKey_NavThrustForward, //!< increase continuous velocity in forward direction |
180 | Aspect_VKey_NavThrustBackward, //!< increase continuous velocity in reversed direction |
181 | Aspect_VKey_NavThrustStop, //!< reset continuous velocity |
182 | Aspect_VKey_NavSpeedIncrease, //!< increase navigation speed |
183 | Aspect_VKey_NavSpeedDecrease, //!< decrease navigation speed |
184 | }; |
185 | |
186 | //! Auxiliary ranges. |
187 | enum |
188 | { |
189 | Aspect_VKey_Lower = 0, |
190 | Aspect_VKey_ModifiersLower = Aspect_VKey_Shift, |
191 | Aspect_VKey_ModifiersUpper = Aspect_VKey_Meta, |
192 | Aspect_VKey_NavigationKeysLower = Aspect_VKey_NavInteract, |
193 | Aspect_VKey_NavigationKeysUpper = Aspect_VKey_NavSpeedDecrease, |
194 | Aspect_VKey_Upper = Aspect_VKey_NavSpeedDecrease, |
195 | Aspect_VKey_NB = Aspect_VKey_Upper - Aspect_VKey_Lower + 1, |
196 | Aspect_VKey_MAX = 255 |
197 | }; |
198 | |
199 | //! Return modifier flags for specified modifier key. |
200 | inline Aspect_VKeyFlags Aspect_VKey2Modifier (Aspect_VKey theKey) |
201 | { |
202 | switch (theKey) |
203 | { |
204 | case Aspect_VKey_Shift: return Aspect_VKeyFlags_SHIFT; |
205 | case Aspect_VKey_Control: return Aspect_VKeyFlags_CTRL; |
206 | case Aspect_VKey_Alt: return Aspect_VKeyFlags_ALT; |
207 | case Aspect_VKey_Menu: return Aspect_VKeyFlags_MENU; |
208 | case Aspect_VKey_Meta: return Aspect_VKeyFlags_META; |
209 | default: return 0; |
210 | } |
211 | } |
212 | |
213 | #endif // _Aspect_VKey_HeaderFile |