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
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
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.
Aspect_VKey2Modifier(Aspect_VKey theKey)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
214