mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-05-01 10:26:12 +03:00
WNT_HIDSpaceMouse - added auxiliary class for processing 3d mouse Raw HID input. AIS_ViewController::Update3dMouse() - added default processor for 3d mouse input event. ViewerTest now redirects WM_INPUT to AIS_ViewController::Update3dMouse(). Aspect_VKey enumeration has been extended by 3D view buttons. WNT_Window::RegisterRawInputDevices() has beend added as a small wrapper over WinAPI RegisterRawInputDevices() for common HID input devices. AIS_ViewCube now stores animation duration within AIS_AnimationCamera instead of dedicated duplicating class property.
214 lines
6.3 KiB
C++
214 lines
6.3 KiB
C++
// Copyright (c) 2016-2019 OPEN CASCADE SAS
|
|
//
|
|
// This file is part of Open CASCADE Technology software library.
|
|
//
|
|
// This library is free software; you can redistribute it and/or modify it under
|
|
// the terms of the GNU Lesser General Public License version 2.1 as published
|
|
// by the Free Software Foundation, with special exception defined in the file
|
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
|
// distribution for complete text of the license and disclaimer of any warranty.
|
|
//
|
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
|
// commercial license or contractual agreement.
|
|
|
|
#ifndef _Aspect_VKey_HeaderFile
|
|
#define _Aspect_VKey_HeaderFile
|
|
|
|
#include <Aspect_VKeyFlags.hxx>
|
|
|
|
//! Define virtual key as integer number to allow extensions.
|
|
typedef unsigned int Aspect_VKey;
|
|
|
|
//! Enumeration defining virtual keys irrelevant to current keyboard layout for simplified hot-keys management logic.
|
|
enum Aspect_VKeyBasic
|
|
{
|
|
Aspect_VKey_UNKNOWN = 0,
|
|
|
|
// main latin alphabet keys
|
|
Aspect_VKey_A = 1,
|
|
Aspect_VKey_B,
|
|
Aspect_VKey_C,
|
|
Aspect_VKey_D,
|
|
Aspect_VKey_E,
|
|
Aspect_VKey_F,
|
|
Aspect_VKey_G,
|
|
Aspect_VKey_H,
|
|
Aspect_VKey_I,
|
|
Aspect_VKey_J,
|
|
Aspect_VKey_K,
|
|
Aspect_VKey_L,
|
|
Aspect_VKey_M,
|
|
Aspect_VKey_N,
|
|
Aspect_VKey_O,
|
|
Aspect_VKey_P,
|
|
Aspect_VKey_Q,
|
|
Aspect_VKey_R,
|
|
Aspect_VKey_S,
|
|
Aspect_VKey_T,
|
|
Aspect_VKey_U,
|
|
Aspect_VKey_V,
|
|
Aspect_VKey_W,
|
|
Aspect_VKey_X,
|
|
Aspect_VKey_Y,
|
|
Aspect_VKey_Z,
|
|
|
|
Aspect_VKey_0,
|
|
Aspect_VKey_1,
|
|
Aspect_VKey_2,
|
|
Aspect_VKey_3,
|
|
Aspect_VKey_4,
|
|
Aspect_VKey_5,
|
|
Aspect_VKey_6,
|
|
Aspect_VKey_7,
|
|
Aspect_VKey_8,
|
|
Aspect_VKey_9,
|
|
|
|
Aspect_VKey_F1,
|
|
Aspect_VKey_F2,
|
|
Aspect_VKey_F3,
|
|
Aspect_VKey_F4,
|
|
Aspect_VKey_F5,
|
|
Aspect_VKey_F6,
|
|
Aspect_VKey_F7,
|
|
Aspect_VKey_F8,
|
|
Aspect_VKey_F9,
|
|
Aspect_VKey_F10,
|
|
Aspect_VKey_F11,
|
|
Aspect_VKey_F12,
|
|
|
|
// standard keys
|
|
Aspect_VKey_Up,
|
|
Aspect_VKey_Down,
|
|
Aspect_VKey_Left,
|
|
Aspect_VKey_Right,
|
|
Aspect_VKey_Plus, //!< '+'
|
|
Aspect_VKey_Minus, //!< '-'
|
|
Aspect_VKey_Equal, //!< '=+'
|
|
Aspect_VKey_PageUp,
|
|
Aspect_VKey_PageDown,
|
|
Aspect_VKey_Home,
|
|
Aspect_VKey_End,
|
|
Aspect_VKey_Escape,
|
|
Aspect_VKey_Back,
|
|
Aspect_VKey_Enter,
|
|
Aspect_VKey_Backspace,
|
|
Aspect_VKey_Space,
|
|
Aspect_VKey_Delete,
|
|
Aspect_VKey_Tilde,
|
|
Aspect_VKey_Tab,
|
|
Aspect_VKey_Comma, //!< ','
|
|
Aspect_VKey_Period, //!< '.'
|
|
Aspect_VKey_Semicolon, //!< ';:'
|
|
Aspect_VKey_Slash, //!< '/?'
|
|
Aspect_VKey_BracketLeft, //!< '[{'
|
|
Aspect_VKey_Backslash, //!< '\|'
|
|
Aspect_VKey_BracketRight, //!< ']}'
|
|
Aspect_VKey_Apostrophe, //!< ''"'
|
|
Aspect_VKey_Numlock, //!< Num Lock key
|
|
Aspect_VKey_Scroll, //!< Scroll Lock key
|
|
|
|
// numpad keys
|
|
Aspect_VKey_Numpad0,
|
|
Aspect_VKey_Numpad1,
|
|
Aspect_VKey_Numpad2,
|
|
Aspect_VKey_Numpad3,
|
|
Aspect_VKey_Numpad4,
|
|
Aspect_VKey_Numpad5,
|
|
Aspect_VKey_Numpad6,
|
|
Aspect_VKey_Numpad7,
|
|
Aspect_VKey_Numpad8,
|
|
Aspect_VKey_Numpad9,
|
|
Aspect_VKey_NumpadMultiply, //!< numpad '*'
|
|
Aspect_VKey_NumpadAdd, //!< numpad '+'
|
|
Aspect_VKey_NumpadSubtract, //!< numpad '-'
|
|
Aspect_VKey_NumpadDivide, //!< numpad '/'
|
|
|
|
// Multimedia keys
|
|
Aspect_VKey_MediaNextTrack,
|
|
Aspect_VKey_MediaPreviousTrack,
|
|
Aspect_VKey_MediaStop,
|
|
Aspect_VKey_MediaPlayPause,
|
|
Aspect_VKey_VolumeMute,
|
|
Aspect_VKey_VolumeDown,
|
|
Aspect_VKey_VolumeUp,
|
|
Aspect_VKey_BrowserBack,
|
|
Aspect_VKey_BrowserForward,
|
|
Aspect_VKey_BrowserRefresh,
|
|
Aspect_VKey_BrowserStop,
|
|
Aspect_VKey_BrowserSearch,
|
|
Aspect_VKey_BrowserFavorites,
|
|
Aspect_VKey_BrowserHome,
|
|
|
|
// 3d view keys
|
|
Aspect_VKey_ViewTop,
|
|
Aspect_VKey_ViewBottom,
|
|
Aspect_VKey_ViewLeft,
|
|
Aspect_VKey_ViewRight,
|
|
Aspect_VKey_ViewFront,
|
|
Aspect_VKey_ViewBack,
|
|
Aspect_VKey_ViewAxoLeftProj,
|
|
Aspect_VKey_ViewAxoRightProj,
|
|
Aspect_VKey_ViewFitAll,
|
|
Aspect_VKey_ViewRoll90CW,
|
|
Aspect_VKey_ViewRoll90CCW,
|
|
Aspect_VKey_ViewSwitchRotate,
|
|
|
|
// modifier keys, @sa Aspect_VKey_ModifiersLower and Aspect_VKey_ModifiersUpper below
|
|
Aspect_VKey_Shift,
|
|
Aspect_VKey_Control,
|
|
Aspect_VKey_Alt,
|
|
Aspect_VKey_Menu,
|
|
Aspect_VKey_Meta,
|
|
|
|
// virtual navigation keys, @sa Aspect_VKey_NavigationKeysLower and Aspect_VKey_NavigationKeysUpper below
|
|
Aspect_VKey_NavInteract, //!< interact
|
|
Aspect_VKey_NavForward, //!< go forward
|
|
Aspect_VKey_NavBackward, //!< go backward
|
|
Aspect_VKey_NavSlideLeft, //!< sidewalk, left
|
|
Aspect_VKey_NavSlideRight, //!< sidewalk, right
|
|
Aspect_VKey_NavSlideUp, //!< lift up
|
|
Aspect_VKey_NavSlideDown, //!< fall down
|
|
Aspect_VKey_NavRollCCW, //!< bank left (roll counter-clockwise)
|
|
Aspect_VKey_NavRollCW, //!< bank right (roll clockwise)
|
|
Aspect_VKey_NavLookLeft, //!< look left (yaw counter-clockwise)
|
|
Aspect_VKey_NavLookRight, //!< look right (yaw clockwise)
|
|
Aspect_VKey_NavLookUp, //!< look up (pitch clockwise)
|
|
Aspect_VKey_NavLookDown, //!< look down (pitch counter-clockwise)
|
|
Aspect_VKey_NavCrouch, //!< crouch walking
|
|
Aspect_VKey_NavJump, //!< jump
|
|
Aspect_VKey_NavThrustForward, //!< increase continuous velocity in forward direction
|
|
Aspect_VKey_NavThrustBackward, //!< increase continuous velocity in reversed direction
|
|
Aspect_VKey_NavThrustStop, //!< reset continuous velocity
|
|
Aspect_VKey_NavSpeedIncrease, //!< increase navigation speed
|
|
Aspect_VKey_NavSpeedDecrease, //!< decrease navigation speed
|
|
};
|
|
|
|
//! Auxiliary ranges.
|
|
enum
|
|
{
|
|
Aspect_VKey_Lower = 0,
|
|
Aspect_VKey_ModifiersLower = Aspect_VKey_Shift,
|
|
Aspect_VKey_ModifiersUpper = Aspect_VKey_Meta,
|
|
Aspect_VKey_NavigationKeysLower = Aspect_VKey_NavInteract,
|
|
Aspect_VKey_NavigationKeysUpper = Aspect_VKey_NavSpeedDecrease,
|
|
Aspect_VKey_Upper = Aspect_VKey_NavSpeedDecrease,
|
|
Aspect_VKey_NB = Aspect_VKey_Upper - Aspect_VKey_Lower + 1,
|
|
Aspect_VKey_MAX = 255
|
|
};
|
|
|
|
//! Return modifier flags for specified modifier key.
|
|
inline Aspect_VKeyFlags Aspect_VKey2Modifier (Aspect_VKey theKey)
|
|
{
|
|
switch (theKey)
|
|
{
|
|
case Aspect_VKey_Shift: return Aspect_VKeyFlags_SHIFT;
|
|
case Aspect_VKey_Control: return Aspect_VKeyFlags_CTRL;
|
|
case Aspect_VKey_Alt: return Aspect_VKeyFlags_ALT;
|
|
case Aspect_VKey_Menu: return Aspect_VKeyFlags_MENU;
|
|
case Aspect_VKey_Meta: return Aspect_VKeyFlags_META;
|
|
default: return 0;
|
|
}
|
|
}
|
|
|
|
#endif // _Aspect_VKey_HeaderFile
|