0032308: Configuration - make Xlib dependency optional
[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   // 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.
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