User:MichaelFrey/inputdriver

disable part of the customizer UI until ready (which is hard to define)

add a function to rename sets (workaround: add a new set, delete the old one)

label->setMinimumHeight(0); label->setMinimumHeight(label->heightForWidth(w)); addWidget( -> nullptr?! "Create new set of parameter", "Enter name of the parameter set" -> i8n

make parameter set names editable

.setStyle("plastique") http://tech-artists.org/t/release-qt-dark-orange-stylesheet/2287#post14381

gridlayout2

would it be hard to test for self insecting polygons?


 * https://github.com/openscad/openscad/pull/2207
 * if there is no parameter set, openscad does not create a new one.
 * Add Button should always be there
 * add button should check if if can write
 * add button has to now the state

Todo

 * at the moment, entries know their group.
 * it would be better, when group would know its members


 * this->jsonFile = scadFile.replace(".scad", ".json").toStdString;
 * could that be used for seperating scad and json files?
 * //test.scad/myfile.scad
 * //test.json/myfile.json
 * that should become its own offical function, so that read and write and share it

project_svg_3to2
 * camera.cc -> setup
 * FIXME: This hould really never throw.
 * seqeunces
 * copyright text -> 2018
 * appliation path


 * dbus getOpenSCADVersion


 * impleent show_if in comment.cpp createGroup

control.cc
 * we could try to paralize complexe actions and wait, when values are missing


 * https://wiki.gnome.org/action/show/Apps/DFeet
 * https://github.com/GNOME/d-feet
 * https://github.com/openscad/openscad/pull/2166/files
 * middle column of the Translation(s) axis (y axis)
 * add rotation/translation/... lock

https://01.org/linuxgraphics/gfx-docs/drm/input/joydev/joystick.html#magellan-space-mouse http://tomoyo.osdn.jp/cgi-bin/lxr/source/Documentation/input/joystick.txt?v=linux-2.6.27.62


 * explain the difference between view port relative and normal
 * "Would it be hard to add a tickbox option so that the control was relative to the current viewport instead of relative to the master XYZ axes?"
 * use rotate2 for mouse control
 * One of the initial patches also had some logic to determine the dominant axis and restrict changes to that. I think that's probably a useful feature too.
 * screenshoot of the highlighted button


 * use blender as a reference for the 3d mice feel

when NaN is provided, ignore the request

void Controller::timerEvent(QTimerEvent *event) {   Q_UNUSED(event); for my own todo list:
 * add an alternate mapping configuration?


 * https://openclipart.org/detail/246396/joystick
 * Midi Keyboard as macro keyboard?
 * maper for keyboard buttons? (taking priority over the default)
 * PS4 gyro?
 * WiiMote gyro?
 * bbc microbit: gyro + magnet


 * what permission do we actually need for the hid api?


 * automatic check for "butttonValues"?


 * buttonValues: use more meaning full names?


 * ioctl(fd, JSIOCGVERSION, &version); if false then close;


 * what is the static std::string name = "JoystickInputDriver"; for?


 * //update the UI on time, NOT on event as a joystick can fire a high rate of events -> can crash OpenSCAD


 * what about a cute circle menu that shows up when a button is pressed?


 * vibrate/flash LEDs on Event


 * Allow the user to select an alternate joystick (joystick 1..2..)
 * allow the user to select which joystick to use
 * QGamepad
 * Joystick
 * implemented -> we just need the UI part
 * combobox?


 * convert drivers to singleton?
 * unlikely that a user needs the same driver more then once
 * would allow for easy acces to the instances


 * how often to we fire the write setting?
 * reading the config does cause "on change" events (and thus a write setting)


 * [ ] give the gridLayouts speaking names
 * [ ] raw data display


 * src/AboutDialog.html
 * Patches: MichaelFrey


 * modify drivers to truly close them
 * show the user which input driver is active


 * document where the preferences are
 * limit the options to available axes and buttons (without overwriting the users preferences)
 * QGamepad: Set the number of buttons/axes


 * can we figure out which driver is used?
 * force "saw all options" button
 * advanced tab for inputs


 * regenerate the translation (as in the internationalization)
 * -> we need a hint in the dev manual


 * documentation: how to use a different (as in more modern) qmake

https://github.com/openscad/openscad/issues/2064 Couldn't find "font" in the FAQ or the UI chapter of the manual either.
 * sensitivity button
 * -> when pressed, sensitivity up
 * -> when pressed, sensitivity down

https://github.com/openscad/openscad/issues/2043

https://github.com/openscad/openscad/issues/1433

https://github.com/openscad/openscad/pull/2130

Introduction
The inputdriver allows a user the use of things like a gamepad or a 3D-Mouse in openscad.

Currently, the following drivers are in development:
 * HIDAPI - Used on MacOS and Windows - needs the USB IDs / it works on Linux too, but needs additional privileges, so it's not ideal for the user
 * Joystick driver - uses the Linux joystick device (currently fixed /dev/input/js0)
 * SpaceNav driver - using the spacenavd daemon
 * DBus driver - Linux only / not for actual devices but for remote control
 * QGamepad

HDIAPI Linux
https://github.com/signal11/hidapi sudo apt-get install libudev-dev libusb-1.0-0-dev libfox-1.6-dev sudo apt-get install autotools-dev autoconf automake libtool

spacenavd sudo kill processId sudo ./openscad

linux
The JoystickInputDriver is using the device /dev/input/js0

Under ubuntu linux, you need the packet joystick for joystick support.

To calibrate your joystick, please use an external tool like jscal or jstest-gtk.

jstest-gtk is also useful to figure out which axis is which and how the buttons are numbered.

If you are using a XBox or XBox 360 controller with a deadzone, please consider using xboxdrv (instead of the kernel module) and correcting the deadzone with: xboxdrv --deadzone 6000

linux
On Linux, the easiest way with the Space Mouse Wireless is interestingly to go though the Joystick driver which is normally enabled on most systems. Maybe the Space Mouse USB IDs are missing from the Linux driver. I'll try to find out...

HIDAPI works on Linux, but needs additional privileges, so it's not ideal for the user. (What kind of privileges?)

Spacenav
spacenav is also supported. http://spacenav.sourceforge.net/ https://wiki.archlinux.org/index.php/3D_Mouse#Open_Source_Drivers sudo apt-get spacenavd (requires restart)

windows
OpenSCAD interacts directly with the 3D Mouse.

Therefor, the driver is not required. If the driver is installed, the driver has to be stopped, so that OpenSCAD can claim the device.

Which button is which
Use the tools provided with your operating system.

view is drifting
If your view is drifting, please recalibrate the neutral position and deadzone of your input device within your operating system or your device driver.

where are my settings stored?
see https://github.com/openscad/openscad/wiki/Path-locations

development

 * https://github.com/openscad/openscad/pull/1807
 * https://github.com/openscad/openscad/pull/2130