mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-11 08:47:52 -06:00
WIP: Windows specific 3Dconnexion using WM_INPUT.
This implementation works with the 3DConnexion driver (sic!) if PrusaSlicer.xml is stored into c:\Program Files\3Dconnexion\3DxWare\3DxWinCore64\Cfg\ The implementation is inspired with Blender, see code inside WITH_INPUT_NDOF blocks.
This commit is contained in:
parent
70baa0d246
commit
25d58faaad
4 changed files with 66 additions and 60 deletions
|
@ -47,6 +47,7 @@
|
|||
#include "SysInfoDialog.hpp"
|
||||
#include "KBShortcutsDialog.hpp"
|
||||
#include "UpdateDialogs.hpp"
|
||||
#include "Mouse3DController.hpp"
|
||||
#include "RemovableDriveManager.hpp"
|
||||
|
||||
#ifdef __WXMSW__
|
||||
|
@ -193,6 +194,20 @@ static void register_win32_device_notification_event()
|
|||
}
|
||||
return true;
|
||||
});
|
||||
|
||||
wxWindow::MSWRegisterMessageHandler(WM_INPUT, [](wxWindow *win, WXUINT /* nMsg */, WXWPARAM wParam, WXLPARAM lParam) {
|
||||
auto main_frame = dynamic_cast<MainFrame*>(Slic3r::GUI::find_toplevel_parent(win));
|
||||
auto plater = (main_frame == nullptr) ? nullptr : main_frame->plater();
|
||||
// if (wParam == RIM_INPUTSINK && plater != nullptr && main_frame->IsActive()) {
|
||||
if (wParam == RIM_INPUT && plater != nullptr && main_frame->IsActive()) {
|
||||
RAWINPUT raw;
|
||||
UINT rawSize = sizeof(RAWINPUT);
|
||||
::GetRawInputData((HRAWINPUT)lParam, RID_INPUT, &raw, &rawSize, sizeof(RAWINPUTHEADER));
|
||||
if (raw.header.dwType == RIM_TYPEHID && plater->get_mouse3d_controller().handle_raw_input_win32(raw.data.hid.bRawData, raw.data.hid.dwSizeHid))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}
|
||||
#endif // WIN32
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue