0030507: Visualization - introduce AIS_ViewController
[occt.git] / src / Aspect / Aspect_VKey.hxx
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   // modifier keys, @sa Aspect_VKey_ModifiersLower and Aspect_VKey_ModifiersUpper below
143   Aspect_VKey_Shift,
144   Aspect_VKey_Control,
145   Aspect_VKey_Alt,
146   Aspect_VKey_Menu,
147   Aspect_VKey_Meta,
148
149   // virtual navigation keys, @sa Aspect_VKey_NavigationKeysLower and Aspect_VKey_NavigationKeysUpper below
150   Aspect_VKey_NavInteract,         //!< interact
151   Aspect_VKey_NavForward,          //!< go forward
152   Aspect_VKey_NavBackward,         //!< go backward
153   Aspect_VKey_NavSlideLeft,        //!< sidewalk, left
154   Aspect_VKey_NavSlideRight,       //!< sidewalk, right
155   Aspect_VKey_NavSlideUp,          //!< lift up
156   Aspect_VKey_NavSlideDown,        //!< fall down
157   Aspect_VKey_NavRollCCW,          //!< bank left  (roll counter-clockwise)
158   Aspect_VKey_NavRollCW,           //!< bank right (roll clockwise)
159   Aspect_VKey_NavLookLeft,         //!< look left  (yaw counter-clockwise)
160   Aspect_VKey_NavLookRight,        //!< look right (yaw clockwise)
161   Aspect_VKey_NavLookUp,           //!< look up    (pitch clockwise)
162   Aspect_VKey_NavLookDown,         //!< look down  (pitch counter-clockwise)
163   Aspect_VKey_NavCrouch,           //!< crouch walking
164   Aspect_VKey_NavJump,             //!< jump
165   Aspect_VKey_NavThrustForward,    //!< increase continuous velocity in forward  direction
166   Aspect_VKey_NavThrustBackward,   //!< increase continuous velocity in reversed direction
167   Aspect_VKey_NavThrustStop,       //!< reset continuous velocity
168   Aspect_VKey_NavSpeedIncrease,    //!< increase navigation speed
169   Aspect_VKey_NavSpeedDecrease,    //!< decrease navigation speed
170 };
171
172 //! Auxiliary ranges.
173 enum
174 {
175   Aspect_VKey_Lower = 0,
176   Aspect_VKey_ModifiersLower      = Aspect_VKey_Shift,
177   Aspect_VKey_ModifiersUpper      = Aspect_VKey_Meta,
178   Aspect_VKey_NavigationKeysLower = Aspect_VKey_NavInteract,
179   Aspect_VKey_NavigationKeysUpper = Aspect_VKey_NavSpeedDecrease,
180   Aspect_VKey_Upper = Aspect_VKey_NavSpeedDecrease,
181   Aspect_VKey_NB  = Aspect_VKey_Upper - Aspect_VKey_Lower + 1,
182   Aspect_VKey_MAX = 255
183 };
184
185 //! Return modifier flags for specified modifier key.
186 inline Aspect_VKeyFlags Aspect_VKey2Modifier (Aspect_VKey theKey)
187 {
188   switch (theKey)
189   {
190     case Aspect_VKey_Shift:   return Aspect_VKeyFlags_SHIFT;
191     case Aspect_VKey_Control: return Aspect_VKeyFlags_CTRL;
192     case Aspect_VKey_Alt:     return Aspect_VKeyFlags_ALT;
193     case Aspect_VKey_Menu:    return Aspect_VKeyFlags_MENU;
194     case Aspect_VKey_Meta:    return Aspect_VKeyFlags_META;
195     default:                  return 0;
196   }
197 }
198
199 #endif // _Aspect_VKey_HeaderFile