Commit Graph
103 Commits
Author SHA1 Message Date
ykeara 15f5534f69 Added F10-F12 For Custom KeyBinds (#507)
* added F10-F12 keys

* updated version strings to 5.2.2

* updated spec to reflect new keys
2020-08-11 20:02:34 -05:00
ykeara 88a1c002c4 Keyboard And Documentation update (#469)
* changed action names

* updated settings for new action key

* updated keyboard input guide

* updated readme top

* updated appveyor link

* fixed qml issue and some formatting

* updated screenshots

* updated documentation portion of readme

* fix qml issues
2020-06-06 14:18:21 -05:00
Vasily 4757756d32 Refactor alarm system and replace notification method
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
2020-06-05 20:52:13 +02:00
username223 31f92df4b1 Change Linux build docs
libpulse-dev does not exist on Manjaro.
2020-04-15 20:00:11 +02:00
username223 a1cae11256 Update docs for building on Ubuntu 2020-04-13 12:54:30 +02:00
ykeara f26d6d6e80 Documentation (#401)
* 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
2020-04-11 14:00:47 -05:00
Vasily bb30a7c041 Add framework for implementing Linux AudioManager
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.
2020-04-08 22:44:12 +02:00
Vasily 016e5ebc4a Add switch for enabling debug symbols and logs
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.
2020-01-15 14:01:47 +01:00
Vasily 5498424889 Add libudev0-shim to Manjaro TL;DR
OVRAS will runtime error without libudev.so.0, this package provides
that file.
2020-01-15 14:01:47 +01:00
Vasily ac4b01273e Add basic PKGBUILD for building on Arch/Manjaro
PKGBUILD format is described on the Arch wiki
https://wiki.archlinux.org/index.php/Creating_packages

Arch User Repository is described here
https://wiki.archlinux.org/index.php/Arch_User_Repository

The AUR package can be found here
https://aur.archlinux.org/packages/ovras/
2020-01-15 14:01:47 +01:00
Vasily e71bc7b1b3 Add settings object API
Documentation is in `docs/specs/Settings-Object-API.md`.
2020-01-08 21:18:45 +01:00
Vasily bda3cc0aa2 Update docs for building for Manjaro 2020-01-07 23:31:48 +01:00
Vasily 70d5675119 Update Linux build docs with required SteamVR libraries
https://github.com/ValveSoftware/openvr/issues/549#issuecomment-570911998

Program would not run without `libSDL2-2.0.so.0` and `libvulkan.so.1`
adding the below packages solved the issue on both 1804 and 1910.
2020-01-07 23:31:48 +01:00
Vasily a21c42ef3d Update Linux build docs for 1604 and 1804 2020-01-07 23:31:48 +01:00
Vasily f315b8c182 Add qtchooser to Ubuntu 1904 TLDR 2020-01-07 23:31:48 +01:00
Vasily 7340a7468e Update TOC in building for linux 2020-01-07 23:31:48 +01:00
Vasily 01972546af Update Linux build docs with Git 2020-01-07 23:31:48 +01:00
Vasily 6cdb461af3 Update Qt version in Linux build docs to 5.12.6 2020-01-07 23:31:48 +01:00
Vasily 1465c4a8bd Convert getSettingsController() to global static object
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.
2019-12-10 08:28:41 +01:00
Vasily c1690056cc Add settings API and specification
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.
2019-12-03 08:26:10 +01:00
ykeara 2bddedf372 4.0.0 release (desktop overlay adjustment removal, bindings tab/button change, documentation update) (#315)
* removed desktop overlay tab moved width to steamvrtab

* added binding page launch button

* changed binding page button location

* removed binding page and associated resources

* clarified functionality via text update to desktop width box

* updated version string

* changed string to release

* updated photos

* updated ivrscreenshot

* updated documentation

* removed old qml references

* added missing actions to documentation

* hid audio profiles
2019-11-10 10:31:43 -06:00
username223 b148a3d6de Update controller binding port in docs (#312)
This was changed by Valve in a recent patch on live SteamVR.
2019-11-08 10:38:28 -06:00
Kung-vr 218c153a6c Update Docs for bindings page and ini file, fix QML log spam 2019-10-27 16:54:42 +09:00
Kung-vr 17e038bf1d Rework seated-universe motion 2019-10-16 15:47:05 +09:00
Kung-vr 2e6dd3b8fe Add chaperone autoprofiles, crash recovery, and space fix revert 2019-10-13 03:56:57 +09:00
Kung-vr 6dc7bc6837 Add offset profiles
Addresses #149
2019-10-02 15:25:03 +09:00
Vasily 2a935895e9 Update Linux build docs for Arch/Ubuntu, add logging calls to Qmake
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.
2019-08-23 15:12:58 +02:00
Vasily 8d5a9656db Remove unnecessary line from building on linux docs
Linux builds have an rpath in the executable directory, meaning this is
no longer necessary.
2019-08-07 12:53:20 +02:00
Vasily 730e633d07 Add naive make install for Linux
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.
2019-08-07 12:53:20 +02:00
username223 f65ee06861 Update linux input guide config location
The logs are stored in `~/.local/share/AdvancedSettings-Team/OpenVRAdvancedSettings/`, but the config file is stored in `~/.config/AdvancedSettings-Team/`.
2019-07-27 19:50:53 +02:00
Vasily 7509b8beee Update documentation for building on windows 2019-07-24 10:54:55 +02:00
ykeara af257d3e6e fixed a .txt -> .md (#243) 2019-07-04 14:59:49 -05:00
Vasily 329b4e7331 Add SVG support to AppImage, move files instead of copying 2019-07-04 16:44:31 +02:00
Kung-vr 01a6d8d361 Patch WMR Floor Fix and add Force Bounds on motion (#237)
* 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
2019-07-03 15:15:18 -05:00
ykearaandKung-vr 4181b03232 Documentation for 3.2.0 (#232)
* added documentation

* fixed links

* updated documentation

* Update Readme.md

updated description for smooth turn

Co-Authored-By: Kung-vr <38249782+Kung-vr@users.noreply.github.com>

* Update Readme.md

better rotation description.

Co-Authored-By: Kung-vr <38249782+Kung-vr@users.noreply.github.com>
2019-06-25 22:47:47 -05:00
Vasily 201cb40359 Add variable for clang-tidy name when building on Linux
Travis has the correct clang-tidy version of 7, while CircleCI needs
clang-tidy-7.
2019-06-24 19:21:14 +02:00
Vasily e8af73db28 Make CircleCI have feature parity with TravisCI and update docs
Unnecessary line from Bionic 18.04 was removed.

A proper version guard was included for clang. Xenial currently ships
3.8.
2019-06-24 19:21:14 +02:00
Vasily 674a28eb96 Add general readme fixes 2019-06-14 20:58:01 +02:00
Vasily 9f0790e1d2 Update SteamVR input guide 2019-06-14 20:58:01 +02:00
Vasily adf2f33c3c Fix types and weirdly capitalized words in SteamVR Input Guide 2019-06-14 20:58:01 +02:00
Vasily 4118885821 Update documentation on keyboard input 2019-06-14 20:58:01 +02:00
Vasily 8e34e9edca Update documentation for DBUS on Linux 2019-06-05 19:57:44 +02:00
Vasily 0b16eeffa7 Add further explanation to docs on keyboard input 2019-05-25 18:49:42 +02:00
Vasily 6009fcbfd0 Change keyboard_manager spec extension to .md
It's actually markdown, not text.
2019-05-25 18:49:42 +02:00
Vasily c88b1db92b Create documentation for keyboard input 2019-05-25 18:49:42 +02:00
Vasily 2d8f5a1b40 Add Enter button to spec and keyboard_input
It was mistakenly left out.
2019-05-25 18:49:42 +02:00
Vasily 3173c4999c Remove AltGr button from keyboard input spec
AltGr is just implemented as Alt + Ctrl. This means it's unnecessary and
is only going to complicate the spec.
2019-05-25 18:49:42 +02:00
Vasily 49b16ebc8f Remove F10, F11 and F12 function keys from keyboard spec
There is no way to tell if they are meant to be one or two keys and in
this case simplicity of use wins out.
2019-05-25 18:49:42 +02:00
Vasily d2127e53aa Add specification for keyboard input parser 2019-05-25 18:49:42 +02:00
Vasily bf5ccd69ca Update Linux build docs for Ubuntu 19.04 2019-04-22 09:56:50 +02:00