Giter VIP home page Giter VIP logo

openkneeboard's Introduction

OpenKneeboard is an interactive way to show reference information and take notes in games - especially flight simulators - including in VR.

OpenKneeboard can be controlled via joystick/HOTAS bindings, or a graphics tablet ('artists tablet') such as those made by Wacom or Huion; phones and tablet computers like iPads or Microsoft Surface tablets are not compatible. Mice are not supported in-game.

Go to https://openkneeboard.com for more information.

Building and contributing

See the internals documentation.

License

OpenKneeboard is licensed under the GNU General Public License, version 2, with an exception to permit certain additional dependencies. For details, see LICENSE.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

This project uses several third-party libraries, which are used and distributed under their own license terms.

Screenshots

Screenshot of the main app Non-VR Screenshot VR Screenshot iRacing VR Screenshot

openkneeboard's People

Contributors

aviinl avatar bbirchnz avatar dependabot[bot] avatar fredemmott avatar marksdoran avatar nittch avatar openkneeboard-bot avatar vedantmgoyal9 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openkneeboard's Issues

Make another release

Regressions (must fix)

  • restore automatic installation of DCS hooks in common locations
  • fix incorrect 'no pages' text color in dark mode or add white background in 2D app (accessibility/low contrast)

Nice to have

  • add UI for tracking non-standard saved games locations. Support keeping the hooks up to date.

Add wacom (wintab) support

  • in-process cursor
  • add DrawableTab subclass of Tab, move all existing tabs to it
  • intercept in external apps (injected DLL + WindowProc hook + IPC)
  • add drawing options (color, erase etc) to DrawableTab
  • tab/page navigation buttons

DrawableTab: this should be handled in the tab class rather than another layer to allow tabs to have special behavior, e.g. have buttons that you tap with the stylus, instead of drawing.

Add option to customize background

Super-low prio, of course…

it would be good to have a possibility of adding custom backgrounds to the tabs, and maybe reserving a header space. That way, auto-generated tabs (radio log) could be format consistent with the rest (think using datacards generated with GV5Js Datacard Generator )

Add VR settings UI

This includes position, rotation etc. The settings already exist in the SHM, and are respected by the renderers, but there is no way to change them.

There are two Y values:

  • eyeY: distance below the nominal eye height. This is primarily used by games that use the Oculus SDK, and introduced VR support back when it was intended as a seated experience. 'Floor level' was not a concept in the SDK originally.
  • floorY: distance above the floor. Used by games with an awareness of 'roomscale'.

'Eye level origin' is arguably a better choice for cockpit-based games, but for Oculus games, we have to respect the games' decision, whichever way it is.

SteamVR (and OpenXR) let us choose on a per-layer basis, so we don't need to stick with what the game chose. Distance from floor seems to feel better for OpenKneeboard: set it to your floor-to-top-of-knee height, and it'll be in the right place.

That said, it might be worth adding a preference setting (and SHM flag): it's plausible that 'eye level origin' works better for people with some cockpit setups.

Invalid page size and restart/reload

Hi I was adding some new slides to an active kneeboard folder when the app was open. By browsing through the pages I received a 'invalid document size' or 'invalid page size' or something like that. I had to restart the app. Closing it by pressing the X on the top right did not work. I had to kill the process in process explorer and restart.

Maybe a refresh/reload/restart function would be handy?

Installer won't overwrite previous version

I don't mind doing the un-install first, but I'm assuming this is undesirable either way.

App installation failed with error message: Windows cannot install package
FredEmmott.Self.OpenKneeboard_0.2.3.296_x64__qvw5xrmsm8j1t because a different package
FredEmmott.Self.OpenKneeboard_0.1.2.180_x64__w37azjcpfhqfc with the same name is already installed. Remove package
FredEmmott.Self.OpenKneeboard_0.1.2.180_x64__w37azjcpfhqfc before installing. (0x80073cf3)

Autodetection/Oculus/Non-VR crashes DCS when using some reshade packs

Just as per the title, DCS closes itself when launching Openkneeboard in latest release. My config:

  • HP Reverb G2
  • SteamVR launched via WMR for SteamVR
  • DCS OpenBeta latest
  • DCS hooks not installed
  • Wacom (Intuos S) tablet connected, recognized and 1 button binded (just testing so far)
  • Json file attached (could not find anything else, like a log. Checked also "(...)\AppData\Local\Packages\FredEmmott.Self.OpenKneeboard_.....)

After it happens, closing the app will not kill the process, preventing DCS fromstarting again, so I have to manually close the OpenKneeboard process
Settings.zip

Horizontal size limiter

When opening landscape pages they currently get spread out over the whole cockpit floor and the kneeboard becomes a poster. Would it be possible to limit the size horizontally so pages stay within proportions?

Add a gaze target scale option

Looking down at your knee in VR due to the centralized visual sweet spot is kind of awkward for some. Allowing the user to increase the zone used for Zoom mode would alleviate this issue.

Replace SHM pixel data with shared textures

  • This appears to be directly supported for DXGI/D3D
  • If OpenGL support is added in the future, this appears to be possible via WGL_NV_DX_interop/WGL_NV_DX_interop2 on all recent nvidia/amd cards; this is likely 'good enough'
  • supported on vulkan via vkAllocateMemory with a VkImportMemoryWin32HandleInfoKHR

Auto updater

As an open kneeboard enduser
I want to be able to auto update
In order to reduce manual work

Though a prompt before update would be appreciated

Request: Allow OpenKneeboard to insert itself as a page in built-in DCS kneeboard.

This is real cool. Now I have to ask... is it possible for OpenKneeboard to insert itself as pages into the actual DCS kneeboard?

Somehow VAICOM Pro is able to do this. If OpenKneeboard could also do this with its graphics tablet support, it would be the kneeboard to rule all kneeboards.

Any chance of developing that ability?

Add stroke width

It would be nice to have some options to select:

  • Stroke color
  • Default stroke width (current "one size fits all" might be not appropriate depending on the size of the docs)
  • Stroke transparency (to enable highlight marker style)

On a first implementation, this could be just set from the settings menu, with no option of "real time" changing.
An advanced option would be to offer a way to select different pre-defined strokes while in game, through a selector, or through bindings.

Brightness Control

Would it be possible to add a generic brightness control function to reduce brightness of pages when the kneeboard is open? The white background now cause glare on my headset lenses inside the headset. Also for night ops it would be nice to just be able to slide back the brightness.

Cheers, Ready

Add non-VR settings

This includes size, position, and transparency level. The settings already exist in the SHM, and are respected by the renderers, but there is no way to change them.

How does one install this?

On 90% of the software offered here on Github i always stumble over the same problem:
Either which file to download or on how to install it.
How much i appreciate the effort of the developers... this one is no different... :-(
Or do i miss something?

Consistency: winrt types/conventions throughout?

  • WinRT forces some conventions, e.g. String SomeProperty() + void SomeProperty(const String&), which differ to the conventions elsewhere in OpenKneeboard, which would be String GetSomeProperty() + void SetSomeProperty(const String&). This means that src/app/app-winui/ feels somewhat inconsistent to the rest of the codebase
  • src/app/app-winui contains several thin wrapper types, e.g. TabUIData, just so that they can be exposed in settings, which needs WinRT types. Instead, Tab could directly implement a WinRT tab

Not decided if I'd rather leave things as-is, just leaving myself a note to consider later.

Request: Support for adding custom tabs for text entries

Having the ability to add custom tabs for text entries (or have it load text files from a folder) would be great. With Multiplayer missions I often type up a bunch of notes from the briefing and would love to be able to look at them in the kneeboard. Ability to edit the text in game would be nice, but just being able to create the tabs with text would be great.

Restore previous size of the app when opening

Hi when I open the app the default size is very large and wide on my desktop. I use an ultrawide screen and the app spreads across the whole screen. For example opening the app minimized and remembering last size/location would be very nice.

Cheers, Ready

Support PDF document navigation

Most large PDFs (including DCS manuals and chuck's guides) have bookmarks/tables of contents. Some way of navigating to these should be supported.

Add DCS FieldInfo

While the exports aren't usually available, we could directly read this out of the terrain mod lua files.

The main process doesn't (yet?) use lua, but we have it as part of the build.

Enable ASAN in debug builds

Tried this, it built, but seemed to have some weird interaction with the wxWidgets exception handling. Cleaned up all the issues it found, but not comfortable leaving it in there for now.

Likely to remove wxWidget's default exception-catching behavior when re-trying this.

Performance Problems with all steamvr overlays with HP reverb G2

I am having performance issues using OpenKneeboard, but also using VR Kneeboard. I tried the latest build from the GitHub action. Tested F/A-18 "airfield defense" instant action on Syria to put some strain on my PC. Mods On/Off does not make a difference.

Without openkneeboard: around 35 fps, but pretty smooth picture.
With openkneeboard: 29 fps, laggy picture, seeing double vision.
My GPU is at over 95% utilization with the kneeboard on or off, doesn't change much.

Settings:

Specs:
Ryzen 5 5600X
RTX 3070
32GB Ram @3000
Up to date Win10, fresh install
DCS and OS on NVME SSD
Reverb G2 (Windows Mixed reality -> SteamVR -> DCS)

Add keyboard support for previous/next tab/page

This would need to be a global hook.

DirectInput is usually a better choice, but this would allow compatibility with more systems, e.g. streamdeck hotkeys without a dedicated plugin, or PointCtrl Aux Buttons

Add embedded webserver output

Similar to the test-viewer, though not using SHM.

At least support viewing, even if drawing is not supported.

This would allow e.g. using an iPad

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.