* add Select Dongle Pairing, fix clipping on long SN names (quest)
* remove test log, add ws log, add pair protection non steamvr
* add missing install commands for new qt modules
* remove bad package
* add auto apply chaperone option, remove old seated/uncal/openxr fixes in favor of always on
* adjust battery overlay for tundras
* fix tundra tracker bat indicator positioning, remove offset page restrictions from non-standing universe, make pairing more responsive and display brief instructions
* add Drag Multiplier
* update documentation
* change version to release
* update readme
* fix format issues readme
* update readme with setting description
* change uid to prevent collision
* changed rounding for grav fling to 2 decimals to be consistand with other values on drag page
* Crash Recovery Defaults to Off, add option to use space drag w/ uncalibrated playspace
* increment version 5.3.3
* Feat/apply offsets binding (#576)
* add apply offsets steamvr input
* add new binding to Readme
Co-authored-by: TheMrGong <gongora656@gmail.com>
* increment version 5.4.0
* added LH Console Interface class, WIP TX/RX list via lh console
* switch over to property based dongle information
* add ovr system wrapper
* add use of parameter to avoid warning as error
* openXR fix, and Change Display State of Chaperone Disabled
* update text
* format files
* clang 9.0.0 format
* add documentation update
* remove windows header include
* remove filesystem header
* fix uncal motion switching issue
Co-authored-by: TheMrGong <gongora656@gmail.com>
Compiling C++ on various different platforms with as many out of tree
dependencies as we have is volatile at best.
In order to prevent a third party warning from ruining the build for
people who don't care about third party warnings, we remove
warnings-as-errors by default.
They are still enabled by default on CI.
* fixed input sending bug not properly releasing keys
* updated to ovr 1.12.5
* added disable oculus api button experimental
* small refactor and fix float and bool bugs
* added nokeyup events to modifier keys when read in, and adjusted token send to have proper logic
* fixed literal held issue
* added backslash
* fixed sender token parser
* updated version string to dev whoops
* added backslash to documentation for keyboard input
* Implement (most of) pop-up notification when autoturn is enabled
* Add neato fading: doesn't appear to impact performance
* formatting
* added macro and UI for notification of auto-turn
* changed notification default to true for auto-turn
* added common issue for trackers
* added warning for custom keys
* minor documentation markdown format fixes
* fix qml syntax error in atgb
* gasd
Co-authored-by: ykeara <ykeara1@gmail.com>
The old OpenVR overlays did not function for unknown reasons, and it was
not possible to get them to work.
With this a white overlay with ALARM ACTIVATED will be shown for 3 seconds.
It's not pretty, but it effectively communicates that an alarm has been
activated.
This fixes
https://github.com/OpenVR-Advanced-Settings/OpenVR-AdvancedSettings/issues/417
* updated documentation/screenshots, let seated-recenter show in all modes, fixed default value of brigthness
* fixed formatting
* changed PTT to System
* added comma to documentation
Source outputs must all be moved to new default source.
Reference topic
https://askubuntu.com/a/72076
* Adds microphone controls on Linux via PulseAudio (PA) for several
points in
https://github.com/OpenVR-Advanced-Settings/OpenVR-AdvancedSettings/issues/43.
It can not be overstated how unsuited the public AudioManager API is for
using the PA API.
It can also not be overstated how undocumented and horrible the PA API
is. The PA way of doing audio is very unlike the Windows way of doing
audio, which the AudioManager is heavily influenced by.
Since I don't have a Linux machine I have not been able to personally
test this. https://github.com/feilen/ has graciously helped with
testing.
PulseAudio is very undocumented and not very widely used for what we
need outside of official utilities. As such there's most likely a better
way of doing things than I've done.
Additional information can be found at
https://github.com/username223/pulseaudio-device-changing.
The "complex" PA API is asynchronous. Since our current AudioManager is
running synchronously and would not work asynchronously (functions are
expected to return valid data on function return) it is necessary to
massage the PA API until it runs synchronously.
This is done with a general workflow of
1. Register a callback function (`pa_context_get_source_info_list()`,
for example).
2. Run the PA loop through `customPulseLoop()`. This will trigger
any registered callbacks. Sometimes a `void*` is passed through the
callback that can be used for custom data. `successCallback()` uses
this to set the success variable.
3. Run the callback function and do required work.
4. Return to original function, do work or return values.
It is not possible to run a `customPulseLoop()` inside of an already
running loop (inside a callback), as this will lead to a PA assert
error on runtime.
Enabling the switch on release builds will optimize the binaries as
normal, but will still include debug symbols. This is advantageous for
bugs that do not show up in debug builds without optimizations.
After looking at the assembly output it became apparent that the Windows
compiler did not compile out the `getSettingsController()` function
call.
This led to an unnecessary function call in order to get the
SettingsController. Turning it into a static object in the compilation
unit scope removes this function call and turns getSettings call into a
single instruction (not counting zeroing the register for comparison and
the jump instruction afterwards).
----
Adding the following code to the `main` function:
```cpp
f ( settings::getSetting( settings::BoolSetting::UTILITY_vrcDebug ) )
{
LOG( INFO ) << "Enabled";
}
else
{
LOG( INFO ) << "Disabled";
}
```
Leads to this with the `getSettingsController` function:
```assembly
[...]
47 if ( settings::getSetting( settings::BoolSetting::UTILITY_vrcDebug ) )
0x7ff6c96819a0 <+ 1024> call AdvancedSettings!settings::getSettingsController (00007ff6`c96cd280)
0x7ff6c96819a5 <+ 1029> xorps xmm0,xmm0
0x7ff6c96819a8 <+ 1032> cmp byte ptr [rax+5FCh],0
0x7ff6c96819af <+ 1039> je AdvancedSettings!main+0x4fd (00007ff6`c9681a9d)
49 LOG( INFO ) << "Enabled";
0x7ff6c96819b5 <+ 1045> mov qword ptr
[rsp+288h],r15
0x7ff6c96819bd <+ 1053> mov qword ptr
[rsp+290h],rsi
[...]
```
And this without the function:
```assembly
[...]
47 if ( settings::getSetting( settings::BoolSetting::UTILITY_vrcDebug ) )
0x7ff7d97a19bb <+ 1019> xorps xmm0,xmm0
0x7ff7d97a19be <+ 1022> cmp byte ptr [AdvancedSettings!settings::settingController+0x5fc (00007ff7`d9854d4c)],0
0x7ff7d97a19c5 <+ 1029> je AdvancedSettings!main+0x4f3 (00007ff7`d97a1ab3)
49 LOG( INFO ) << "Enabled";
0x7ff7d97a19cb <+ 1035> mov qword ptr
[rsp+288h],r15
0x7ff7d97a19d3 <+ 1043> mov qword ptr
[rsp+290h],rsi
[...]
```
Notice the missing `call AdvancedSettings![...]` without the function
and that the settings call literally cannot be made any faster.
The details of the API are in the `/docs/specsSettings-API.md` file.
The enums do not list all available settings, more are to be added as
the settings API replaces inline QSettings calls.
The page was not made with Arch in mind.
The currently required were tested on Manjaro, more packages may be
explicitly required due to the bare-bones nature of Arch.
Adds simple logging calls makes debugging easier.
The initial build script was basically ported over directly from
Windows. It was written because I at the time didn't understand
compiling on Linux, and the existing standards, very well.
Moving as many build components into a program specifically made for
building C++ makes everything much easier.
The old build script is still used on CI where control flow can only be
changed using environment variables.
`bear` and `clang-format` are only used on the CI, there's no reason to
include them here.
This enables a `sudo make install` that copies the build directory to
the PREFIX directory (/opt/OpenVR-AdvancedSettings/AdvancedSettings by
default).
The entire directory is being copied because Qt is incredibly weird
about how the INSTALLS variable works. From testing it appears that only
files that exist before the build process has started (even the
file_copy process) will be eligible for installation.
If the /OpenVR-AdvancedSettings/ directory is excluded, Qt will attempt
to remove the /opt/ folder on `make uninstall`, this is obviously not
desirable.
The logs are stored in `~/.local/share/AdvancedSettings-Team/OpenVRAdvancedSettings/`, but the config file is stored in `~/.config/AdvancedSettings-Team/`.
* Update FixFloorTabController.cpp
Adds an extra offsets tab reset after floor fix to make sure the fix is visible for WMR users.
* Add Force Bounds on Motion
Adds forcing chaperone bounds on space-turn and space-drag. Addresses #183
* Update Motion Page Screenshot for Force Bounds
* Update docs for Force Bounds on motion options