1. If you would like to support the continual development of Virtual Handheld, please donate or become a member at https://www.buymeacoffee.com/ZanyCatXR
  2.  
  3. v0.6.3 One-Hand Accessibility Update (11/26/2024)
  4.  
  5. NOTE: SteamVR Bindings have been updated! If you are using a custom SteamVR Binding for whatever reason, you may need to update it to use the new features!
  6.  
  7. SteamVR Bindings:
  8. -Added the "actions" page to the SteamVR Bindings. This page is for actions that can be performed even when the handheld is disabled.
  9. -Added "toggle_handheld" input to the "actions" page. This action allows you to toggle the handheld without needing to tap both controllers together, allowing for one-hand accessibility! This action is bound by default as Joystick Button Double Click on Oculus, Index, and WinMR(G2) layouts, and is bound by default as Menu Button Double Click on Vive and WinMR(G1) layouts.
  10. -Added "handheld_settings" input to the "actions" page. This action allows you to open the handheld settings menu without needing to first open the dashboard and navigate to the "Virtual Handheld Settings". This may enhance accessibility, as the right Oculus controller system button is not accessible to SteamVR. This action is bound by default as Joystick Button Long Click on Oculus, Index, and WinMR(G2) layouts, and is bound by default as Menu Button Long Click on Vive and WinMR(G1) layouts. (To close the dashboard settings, simply press the trigger while the controller is pointed away from the dashboard!)
  11.  
  12. Welcome Screen:
  13. -The intro text now updates with the "Number of Taps" you have selected! (Single, Double, Tripple)
  14. -Intro text will prompt the user to use the handheld toggle input action if only one controller is connected, or if the controller tap toggle is turned off
  15. -If both the controller tap toggle and the input actions are disabled, then the intro text will prompt the user to re-enable handheld toggling
  16.  
  17. General Settings:
  18. -Added input actions toggle, which can be used to enable or disable the "handheld_toggle" binding and the "handheld_settings" binding
  19. -Added a "Configure..." button to direct the user the the "actions" page of the SteamVR bindings
  20. -Renamed "Display top window title" toggle to "Display in-focus (on top) window title" for better clarity
  21.  
  22. Input Simulator:
  23. -Added AltSet "Swap" Mode, which allows you to switch between Main and Alt binding sets without having to hold the input. This should hopefully make alternate bindings more accessible, by not having to hold down multiple buttons to access alternate inputs!
  24.  
  25. Controller Bindings:
  26. -Controller layout text now shows both controller types for mismatched controller layouts. For example, if you have an Index controller in the left hand, and a Vive controller in the right hand, it should say "Index+Vive Layout".
  27. -Removed the word "Controller" from VR controller layout text for simplicity
  28. -Controller layout text now says the controller's handedness when only a single VR controller is connected. For example, if only the left Oculus controller is connected, it should say "Oculus Left Layout".
  29. -Fixed controller auto-detect when a single or mismatched controller is connected
  30. -"AltSet (Hold)" now appears simply as "AltSet" on the inputs list for better readability
  31. -On the inputs list, "LShoulder" and "RShoulder" now render as "LB" and "RB" for the Xbox 360 controller layout
  32. -On the inputs list, "LTAxis" and "RTAxis" now render as "LT" and "RT" for the Xbox 360 Controller layout and as "L2" and "R2" for the DualShock 4 Controller layout
  33. -On the inputs list, analog inputs with a modifier of (1.00) will no longer show their modifier
  34. -Shortened the names of analog inputs so that they can be more easily read in the UI
  35. -Added asterisks after the names of analog inputs in the inputs list
  36. -Added "*Indicates analog input" text below the VR controller inputs box
  37. -Added a line break between "Touch" and "pad" in the inputs list for the DS4 touchpad input
  38. -DS4 touchpad will now show as "Unused (Tpad)" on the inputs list for the Xbox 360 controller layout
  39. -Adjusted line spacing to make input names with multiple lines easier to read
  40. -Fixed "Pad Touch Mode" not initiating Auto-Save when toggled
  41. -Updated "Button Rebinded!" text to "Input Rebound!" to be inclusive of non-button inputs and also because "rebinded" is not a word!
  42. -Added unbind input confirmation text
  43. -Now if the user tries to bind a non-VR input before selecting a VR controller input, the user will be prompted to "Please Select VR Input First!"
  44. -Fixed bug where rebind confirmation text would show after auto-load before the user changed anything
  45. -Added confirmation when loading presets
  46. -Fixed confirmation when a new "Bindings" folder is created
  47. -Added button to open Bindings save directory (the folder icon next to "Save" and "Load")
  48.  
  49. Tracking:
  50. -Upgraded "Both Hands" tracker mode to be "Auto-Detected", which will automagically track the handheld to both hands if both controllers are connected, or to only one hand if only one controller is connected, or to the HMD if no controllers are connected (although there is currently no way to toggle the handheld without controllers)
  51. -"Left Hand Only"/"Right Hand Only" tracker modes have been upgraded to look more like you're holding the handheld rather than having the handheld appear at the controller's point of origin, and so that the handheld doesn't clip as much into the controller model in the SteamVR dashboard/grid. The tracking position will also be automatically updated according to the handheld's scale and aspect ratio.
  52. -Stabilization is now applied to the tracker offset rather than the base position/rotation
  53. -Updated applicable UI toggles to appear as radio buttons
  54.  
  55. Save Files and Presets:
  56. -Added presets for one-hand controller layouts
  57. -(Hopefully) fixed a bug where saving was impossible until a persistent "loading" flag was cleared
  58. -Updated bindings preset file extensions from ".json" to ".uwu"
  59.  
  60. Devices:
  61. -Added a new device manager script that can more reliably detect the controller's index, type, handedness and enabled status
  62.  
  63.  
  64.  
  65. v0.6.2 Advanced Capture Settings (10/03/2024)
  66.  
  67. Screens Settings:
  68. -Added refresh button to sources list
  69. -Add advanced capture settings, which can be found at the top-right corner of the Screens settings
  70. -You can now filter windows by whether the window appears on the "Alt-Tab" list, if the window has a title, or if the window is a background process
  71. -Added auto-recapture feature that, when the captured window is closed, it searches for another window with the same name. This can be disabled in the advanced settings.
  72. -If the saved capture source is not found when auto-loading, it will now continue searching until a source with the same name is found or the search is canceled by selecting a different capture source
  73.  
  74. Input Visualizer Settings:
  75. -The title of the window that is "on top" is now displayed on the handheld overlay. This was added as a common user error was switching to a different program and not switching back to the game so inputs wouldn't be sent to the right program. This can be disabled via the "Display top window title" toggle in the General settings.
  76. -Added "Input Visualizer Settings" section to General settings, and moved Input Visualizer toggle to that section
  77.  
  78. Fixes:
  79. -Fixed settings not auto-saving after deselecting a capture source
  80. -Removed unused variables in SettingsData file
  81.  
  82.  
  83.  
  84. v0.6.1c patch (09/19/2024)
  85.  
  86. Changes:
  87. -Added error message to welcome screen that displays if handheld settings failed to load correctly
  88. -Removed Auto capture mode as it used Windows Graphics Capture if available, which has been found to be unstable and cause freezing/crashes
  89. -Made Print Window the default window capture mode as it seems to be the most stable and compatible capture method
  90. -Fixed desktop capture showing a semi-transparent white screen if monitor resolution changed while desktop capture was disabled
  91. -Slight optimization where desktop duplication no longer runs in the background when alt capture mode is enabled
  92.  
  93. Known Issues:
  94. -Desktop capture on the top screen sometimes becomes completely transparent for a bit until it gets updated
  95.  
  96.  
  97.  
  98. v0.6.1b patch (09/5/2024)
  99.  
  100. Bug Fixes:
  101. -Fixed error where Handheld Settings would fail to load before reaching the tracking settings. This would cause the handheld to still track to the hands even if a different tracking option was selected the previous session, creating an absurdly large handheld if a "'TV' Mode" or "Big Screen" preset was selected.
  102. -Fixed "Alt Desktop Capture" toggle not appearing checked due to error in loading settings
  103. -Fixed bug where the top screen is set to enabled by default on a new settings file
  104. -Fixed bug where the cursor would show when "Screen Enabled" is toggled on even when "Show Cursor" is disabled due to a bug with uWindowCapture. This was fixed by showing the cursor for a second before disabling it. It's not a perfect solution, but it works.
  105.  
  106. Other Changes:
  107. -Added "Made with Unity" and "Powered by OpenVR" to the About page
  108. -Removed VH logo from splash screen that replaced Unity logo, as I am not entirely sure if this is allowed according to Unity's terms of use
  109.  
  110.  
  111.  
  112. v0.6.1a patch (9/1/2024)
  113. -Fixed bug where everything breaks if save directory doesn't exist at startup, i.e. a new install
  114.  
  115.  
  116.  
  117. v0.6.1 Window Capture Update (8/31/2024)
  118.  
  119. This update adds the much-requested window capture feature, which can be found in the "Screens" settings. This allows you to play games without filling up your whole desktop. It also lets you take advantage of the handheld's dual-screen feature without needing a second monitor.
  120.  
  121. Note: Due to a restructuring of save data, screen settings may be reset when updating from older versions. Sorry for any inconvenience this may cause!
  122.  
  123. Bindings:
  124. -Fixed bug where bindings wouldn't save if the autosave file was not found when the program starts
  125. -Fixed the "Are you sure?" dialog appearing instead of Quick Presets when the autosave file is not found or fails to load when the program starts
  126.  
  127. Screens Settings:
  128. -The top and main screen settings have been consolidated! This means instead of having both of the screen's settings visible at the same time, you can now choose which screen you want to edit by selecting it at the top left of the settings.
  129. -Individual window capture added! You can now select a specific window to capture from the window list. Now setups that only have one monitor can take advantage of the handheld's dual-screen functionality!
  130. -You can check the "Show More" checkbox to show additional hidden windows
  131. -You can change the window capture API by pressing the "Change..." button next to "Capture Mode"
  132. -You can change the capture framerate to one of four presets: 30, 60, 90, and 120. You can also set the framerate using the slider. which has a range of 1-144.
  133. -You can toggle whether you want to show the cursor in the window capture
  134. -"Alt Desktop Capture" gives you the option to use the window capture APIs for desktop capture as well as their settings.
  135. -Desktop displays now appear in the sources list instead of being ID-based, allowing for (theoretically) more than 4 monitors and better parity between capture modes
  136. -Added "Fill" Display Mode, which crops out content based on the selected aspect ratio
  137. -Reworked 3D mode settings; Added "Swap Eyes" toggle to replace "Side-by-side 3D Flipped" toggle
  138. -Screens settings are now saved in "\Documents\My Games\Virtual Handheld\ScreensData\" instead of with the main handheld settings
  139.  
  140. Handheld Overlay:
  141. -Added "No source selected!" text that shows when the screen is enabled but no source is displayed on the handheld screen
  142. -Added border and black backdrop to top screen overlay
  143.  
  144. Tracking Settings:
  145. -Fixed handheld appearing on the floor at the center of the playspace when the "Big Screen (Stay)" preset is selected by changing the update mode to "On Handheld Enabled" instead of "Never"
  146.  
  147.  
  148.  
  149. v0.6 Custom Aspect Ratios Update (6/29/2024)
  150.  
  151. Aspect Ratios:
  152. -You can now set a custom aspect ratio! You're no longer limited to preset aspect ratios like 4:3 or 16:9. You can set the width or height to anywhere from 1-99.
  153. -The input visualizer now scales with the screen's aspect ratio, eliminating the need for letterboxing or pillarboxing on ratios other than 16:9
  154. -Your screen's aspect ratio can now be auto-detected! If "Auto-Detect Ratio" is enabled, changes in your screen's aspect ratio will now be detected automatically. This is good for old games that change your screen's aspect ratio when switching to fullscreen.
  155. -Added buttons for portrait (aka "vertical") aspect ratios
  156. -3D modes are now supported on all aspect ratios
  157. -Added "Stretch" and "Fit" display modes for displaying content on the handheld screen
  158.  
  159. Handheld Overlays:
  160. -The main screen overlay and input visualizer overlay have been combined into a single overlay instead of the screen overlay being slightly in front of the input visualizer overlay
  161. -The default scale of the handheld is now 40. "40 what?" you might be wondering. idk lol ¯\_(ツ)_/¯
  162.  
  163. Input Visualizer:
  164. -User will now be prompted to set their bindings in the Virtual Handheld Settings if all input bindings are found empty
  165. -Fixed bug where switching between Main and Alt sets would cause icons to inherit face button colors
  166. -Fixed issue where glyphs/icons would appear stretched on triggers and grips
  167.  
  168. Virtual Gamepads:
  169. -Corrected the assumption that DualShock 4 triggers were dual-phase; now DirectInput will register a button press for L2/R2 if the trigger is pressed by any amount for better parity with real hardware
  170.  
  171. Bindings:
  172. -Gamepad type toggle interaction is no longer disabled when a virtual gamepad is connected. Toggling the virtual gamepad type when a virtual gamepad is connected will auto-disconnect the virtual gamepad if automatic connect/disconnect is enabled.
  173. -Fixed binding confirmation text not appearing when setting a binding for the left VR controller
  174. -Trying to load a non-existent bindings profile no longer resets your bindings
  175. -Renamed "Quick Start" to "Quick Presets"
  176. -Deleted message saying that presets have moved
  177. -When resetting or loading bindings, the user will be asked if they are sure if they wish to proceed if the bindings are not empty
  178. -Updated gamepad presets to include DualShock 4 touchpad
  179. -Updated gamepad presets for Vive controllers to use Pad Touch Mode
  180. -Fixed bug where loading a binding would set the gamepad type to default but not change the actual current gamepad type to the default one
  181. -Added "Test Game Controller" button to open the "Game Controllers" settings window to test DirectInput controller compatibility
  182.  
  183. Tracking:
  184. -Added "Big Handheld Mode" preset, which is the same scale that the default handheld scale used to be
  185. -Before, the "Big Screen Mode" preset was glitched so that it would retain whatever Update Transform mode was selected. Now this mode has been separated into "Big Screen (follow)" and "Big Screen (stay)"
  186.  
  187.  
  188.  
  189. v0.5.3 Save-MORE-Setting Update! (5/25/2024)
  190.  
  191. Virtual Gamepads:
  192. -Virtual gamepads will now auto-connect if a gamepad binding is detected when the handheld is enabled, the dashboard is toggled, or a gamepad button press is attempted (Auto-connect/disconnect can be disabled in the General settings.)
  193. -Virtual gamepads will auto-disconnect if a binding is loaded with a different virtual gamepad type or the default virtual gamepad is changed (Auto-connect/disconnect can be disabled in the General settings.)
  194. -Binding the DualShock 4 touchpad to an Xbox 360 controller layout no longer fallbacks to a "back" button press. Instead, it just does nothing.
  195. -Added slight jitter when thumbsticks are perfectly centered to prevent inputs from being desynced from not being properly updated (This behavior can be toggled off per-bindings profile)
  196. -Virtual DualShock 4 controllers can now simulate the button press at the end of a trigger pull. This will be simulated by VR controllers that have a tactile trigger click (i.e. Index, Vive). For inputs that don't have a tactile trigger click, or if "trigger_full_click" is not bound in the SteamVR Bindings UI (i.e. Oculus Touch), then a threshold of >99% trigger pull will be used. (This behavior can be toggled off per-bindings profile)
  197.  
  198. General:
  199. -"Analog Stick Multiplier" renamed to "Joystick Multiplier"
  200. -Added section for virtual gamepad settings such as default virtual gamepad type and automatic connect/disconnect
  201.  
  202. Bindings:
  203. -Presets moved to the new Quick Start tab
  204. -Added new icons to represent Keyboard & Mouse bindings and Gamepad bindings
  205. -Bindings now auto-save when changing a binding and will auto-load at startup
  206. -Added confirmation text for saving and loading bindings files
  207. -Gamepad type now saves with the bindings file, along with the added option to use the default gamepad type
  208. -Bindings file now saves what page/tab you were on in the Bindings menu
  209. -Instead of having two separate buttons for connecting virtual Xbox 360 and DualShock 4 controllers, there is now one "Connect Virtual Gamepad" button which changes to a "Disconnect Virtual Gamepad" button when a virtual gamepad is connected
  210. -Sliders in the keyboard & mouse bindings are now updated properly when the "Reset Bindings" button is pressed when not being shown
  211. -Fixed bug where the wrong scroll value would be used when binding a single scroll after loading a binding
  212. -"Single Scrolling" renamed to "One Shot Scroll" and "Continuous Scrolling" renamed to "Continuous Scroll"
  213. -Fixed issue where switching between gamepad types would make analog modifiers disappear from the VR buttons list
  214. -The depreciated "LTrigger" and "RTrigger" bindings now get converted to "LTAxis" and "RTAxis" respectively
  215. -Current Binding texts for gamepad DPads are now more consistent with other gamepad bindings
  216. -The "Expanded Keyboard" bindings tab button moved below the standard keyboard and next to the new "Mouse" bindings tab button
  217. -Expanded Keyboard layout rearranged to be more aesthetically pleasing
  218.  
  219. Input Simulator:
  220. -Analog values bound to Trackpad Center fixed to use the correct input
  221.  
  222. Input Visualizer:
  223. -The "Dashboard is open or SteamVR binding is incomplete" message changed to say "Inputs disabled while dashboard is open or SteamVR binding is incomplete"
  224.  
  225. Colors:
  226. -Added confirmation text for saving and loading color files
  227. -Color settings will now auto-save when changed and will auto-load on startup
  228. -"On Text/Symbol" renamed to "On Glyphs", and "On Background" renamed to "Behind Glyphs"
  229. -The gamepad face button color setting now saves with color files
  230. -Fixed gamepad face button colors "Behind Glyphs" and "Off" settings not working properly for the DualShock controller layout
  231. -Fixed certain gamepad input text colors not changing properly when in an active state
  232. -The face button color will now show on the glyph face when a button is pressed when "Behind Glyphs" is selected
  233.  
  234. Index:
  235. -Default bindings for Index controllers changed to be the same as Oculus controllers as the trackpads on Index controllers don't work very well as DPads
  236.  
  237. About:
  238. -Added Rollthered's sticker and name to special thanks section for creating the new DJ Frog Advert. If you want your own name and/or sticker added to VH, consider becoming a memeber at https://buymeacoffee.com/zanycatxr/membership
  239.  
  240.  
  241.  
  242. Changelog v0.5.2 Save-Your-Settings Update! (4-27-2024)
  243.  
  244. Finally, you no longer have to configure your settings every time you start Virtual Handheld! At least, that's the way it should work! I kinda let feature creep catch up to me for this one, but it should still be mostly usable! I got sidetracked adding support for Windows Mixed Reality controllers, and then got distracted by adding controller type auto-detection and hot-swapping before I realized I was running out of time to add the main feature of this update: saving your settings! Next time, I'll try to not get distracted!
  245.  
  246. NOTE: SteamVR Bindings for VH have changed. If you use the default bindings, you shouldn't have to do anything. If you created a custom binding (in the SteamVR Bindings UI, not VH itself) you will have to update them with the new input actions.
  247.  
  248. SteamVR Bindings:
  249. -Added bindings for Windows Mixed Reality and HP Motion Controller layouts!
  250. -Triggers on Knuckles and Vive controllers now activate a button input from a threshold rather than a physical click at the end of the trigger (If you prefer the old behavior, you can bind it yourself in the SteamVR Bindings UI)
  251. -Joysticks and trackpads now use SteamVR's built-in system for D-pads (instead of being axis-based which caused a square deadzone on a circular field, which made it hard to reach corners)
  252. -"menu" has been renamed "menu_button" and "trackpad_click" has been renamed "trackpad_button" for consistency. Also, "trackpad_pressure" has been renamed "trackpad_force"
  253. -"grip_button" changed to generate from force sensor instead of pull value on Index controllers by default
  254. -"grip_squeeze" has been removed; "grip_analog" will now read from the force sensor instead of the "Pull" value on Index controllers. If you still want to use the "Pull" value, you can still bind it manually with a custom binding.
  255. -Haptic feedback disabled wherever applicable
  256.  
  257. Save Files:
  258. -Settings will now be saved automatically and will load on startup. Settings will be saved to "\Documents\My Games\Virtual Handheld\HandheldSettings.o3o". No more having to change your settings every time you want to start playing!
  259. -New bindings profiles will be saved to "\Documents\My Games\Virtual Handheld\Bindings\". If this folder does not exist, then the old directory ("\Virtual Handheld_Data\") will be checked and legacy saves will be migrated.
  260. -New color profiles will be saved to "\Documents\My Games\Virtual Handheld\Colors\". If this folder does not exist, then the old directory ("\Virtual Handheld_Data\") will be checked and legacy saves will be migrated.
  261.  
  262. Input Simulator:
  263. -Fixed bug where opening the dashboard while holding down a button would keep that button virtually held down while the dashboard was open
  264.  
  265. Controller Layouts:
  266. -Added official support for Windows Mixed Reality and HP Motion Controllers!
  267. -VR controller type will now be auto-detected on connect if "Automatically update VR controller type on connect" is enabled in the General menu
  268. -Hot-swapping controllers is now supported (to the extent that your VR type allows)
  269. -Mismatched controller types are now supported! Want a Vive Controller in your left hand and an Index Controller in your right hand? You can do that now!
  270. -Button input visualizer updated to properly support mismatched controller layouts
  271. -You can now choose to have a "None" controller type set for one or both hands. This type will be set by default if no controller is detected, or if auto-detect is disabled on startup.
  272. -If the detected controller type does not match any of the officially supported types, it will default to showing the "All" layout
  273.  
  274. Bindings Settings:
  275. -Mouse/analog sliders are now saved in bindings files
  276. -The "Reset Bindings" button now resets mouse/analogs sliders
  277.  
  278. Screen Settings:
  279. -Screen settings are now auto-saved!
  280. -"Secondary Screen" renamed to "Top Screen" and put above Main Screen in the settings
  281. -Text on Alternate Desktop Capture toggle changed to mention integrated graphics
  282.  
  283. Tracking Settings:
  284. -Tracking settings are now auto-saved!
  285. -Plus and minus buttons on the Head Lock Distance slider now update the correct slider instead of the z offset slider
  286. -Added "Big Screen Mode" preset, which puts the screen 10 meters away and makes it huge!
  287.  
  288. Trackpads:
  289. -Added "Trackpad Center" as a bindable input
  290. -The "Trackpad Press" indicator on the handheld overlay moved above the trackpad directionals as the "Trackpad Center" indicator takes its place
  291. -"Trackpad Press" now always activates when the trackpad is "clicked" regardless of what direction is being pressed on the trackpad. This could be useful if you just want to use the whole trackpad as a button, but don't care about the direction.
  292. -Fixed issue with trackpads where pushing a direction with "require press" enabled and moving away from that direction deactivates that input and doesn't reactivate until you "click" the touchpad again
  293. -You can now move to the other directionals of the trackpad while "clicking" the trackpad, making it easier to use as a D-pad
  294. -The old mouthful of a setting "Require (left/right) trackpad press for directionals" changed to "Pad Touch Mode". If it is on, inputs will register from the trackpad merely being touched. If it is off, a trackpad "click" will be required to register an input.
  295. -Fixed mistake where the right trackpad toggle would affect both trackpads, while the left one did nothing
  296. -Pad Touch Mode is now saved along with the bindings file
  297. -Pad Touch Mode now gets reset when the "Reset Bindings" button is pressed
  298. -Pad Touch Mode can be set separately for Main and Alt
  299. -Analog inputs now obey the Pad Touch Mode setting
  300.  
  301. Index/Knuckles:
  302. -The "Trackpad Press" indicator on the input visualizer overlay will now shrink according to the trackpad's force value
  303. -"Grip Pull" and "Grip Squeeze" have been reunited as a single "Grip" input, as it was determined having them be separate wasn't very useful ("Trackpad Center" now takes the place of "Grip Squeeze" in the save file, so Index users may need to update their bindings accordingly)
  304. -"System Touch" input added, which activates when the controller's system button is being touched; With this, the Index controllers can now take advantage of all 16 default inputs
  305.  
  306. Other:
  307. -Checkmarks have been emboldened with pixel art graphics to be more visible on lower-resolution headsets
  308. -Parenthesis added to asterisks in the "All" layout that could either be digital or analog depending on the controller type
  309. -Input visualizer text "Inputs are disabled when dashboard is open!" changed to "Dashboard is open or SteamVR binding is incomplete"
  310. -The setting "Don't zero virtual analogs when switching between Main and Alt set (not recommended)" was removed as it was a vestigial setting made for the old analog system that is no longer used. I doubt that it will be missed.
  311.  
  312. Supporters:
  313. -Added Bamber's name and sticker to the About page for supporting me on Buy Me a Coffee! You can get your name and/or sticker here by becoming a memeber here: https://buymeacoffee.com/zanycatxr/membership
  314. -Added white outline to Nestorboy's sticker!
  315.  
  316.  
  317.  
  318. Changelog v0.5.1a minor patch (4/1/2024)
  319. -Added missing names (Hexson and Ayadea) to the testers section of the "About" screen
  320. -Added Must Be Kitten! logo to the "About" screen (Nefarius Software logo added in previous update but forgot to mention in changelog)
  321. -Fixed minor visual bug where the color of icons on the input overlay would be erroneously changed to the color of the face buttons when switching between Main and AltSet
  322.  
  323.  
  324. Changelog v0.5.1 UI Art Update (3/31/2024)
  325. This update not only introduces new pixel art graphics by the developer ZanyCat to the bindings UI and input overlay, but also fixes some notorious input problems, adds new keyboard keys that you can bind, updates mouse bindings, and updates controller-specific VR inputs.
  326.  
  327. Input Fixes:
  328. -On launching, Virtual Handheld will now check the SteamVR setting "Enable global input from overlays (Experimental)" (This setting must be on for input blocking to work properly). If the setting is off, the handheld overlay will now display a message telling the user to go to the Virtual Handheld Settings. On the welcome screen, there will be a warning message with an "Auto Fix" button that will turn the setting on for you
  329. -Re-fixed an input bug that was accidentally re-introduced where the virtual Xbox 360 gamepad was able to navigate the settings menu, allowing you to adjust sliders while the settings were closed. This caused the handheld to sometimes change color, size, rotation, etc. when the joystick was moved
  330.  
  331. Bindings UI:
  332. -Added new Xbox 360/DualShock 4 controller graphics and reworked controller binding UI for a more intuitive binding experience
  333. -Added new mouse graphics to keyboard & mouse binding UI
  334. -Inputs and bindings with analog values are now marked with asterisks in the Bindings menu
  335. -VR controller button list reordered to better match physical controller layout (B button above A button, for example)
  336. -Added "All" VR controller layout, which shows all possible inputs with controller-agnostic names
  337. -"Trackpad Click" renamed to "Trackpad Press" (or "Thumbrest" in the case of Oculus)
  338. -Keyboard & Mouse bindings separated into the "Keyboard & Mouse" tab and the "Expanded Keyboard" tab, with the standard keyboard available in both
  339. -Gamepad presets renamed to be more descriptive
  340. -"How to set bindings" text rewritten to be less confusing (hopefully)
  341.  
  342. Input Overlay:
  343. -New pixel art graphics added to symbolize joysticks, D-pads, mouse and scroll wheel inputs
  344. -Fixed inconsistency where gamepad analogs would use square keys instead of round buttons
  345.  
  346. Virtual Keyboard:
  347. -Moved numpad, volume and function 13-14 keys to the "Expanded Keyboard" tab
  348. -Added media keys and browser navigation keys
  349.  
  350. Virtual Mouse:
  351. -Mouse button 4 and mouse button 5 (MB4 & MB5, you know, the buttons on the side of your gaming mouse?) can now be bound under the "Keyboard & Mouse" tab
  352. -"Base Mouse Speed" and "Base Scroll Speed" sliders added; These sliders determine the base speed of mouse inputs before the speed modifier is applied
  353. -Fixed oversight where "ScrLft" and "ScrRgt" were not loading properly from a saved bindings profile
  354. -Fixed the number of scroll clicks not loading properly from a saved bindings profile
  355. -Continuous (analog) scrolling is now actually analog: the amount you press now affects the speed of the scrolling
  356. -Mouse movement speed is no longer framerate-dependent
  357.  
  358. Virtual Gamepad:
  359. -You can now bind the DualShock 4 trackpad button just like any other button. Note that this is the only button the Xbox 360 controller doesn't have an equivalent for, so it will default to the "Back" button when pressed on a virtual Xbox 360 controller
  360.  
  361. Vive:
  362. -If grip_analog is not bound in the SteamVR Bindings UI (as is with Vive Wands), grip_button will be used for analog values bound to grip. Likewise, if trackpad_pressure is not bound, trackpad_click will be used for values bound to "Trackpad Press"
  363.  
  364. Oculus:
  365. -Added support for the thumbrest on Touch Controllers (Takes the same input slot as Trackpad Press and activates when the thumbrest is touched)
  366.  
  367. Index:
  368. -"Grip Pull" and "Grip Squeeze" have been separated for the Index layout; "Grip Pull" is how much your hand is closed onto the controller, and "Grip Squeeze" is how tightly the force sensor on the controller is being squeezed
  369. -Updated presets to use "Grip Squeeze" rather than "Grip Pull"
  370. -Index controllers should no longer generate haptic feedback when gripping
  371. -Analog values bound to "Trackpad Press" will now be mapped to the trackpad's pressure value
  372.  
  373.  
  374. Changelog v0.5 (2/18/2024)
  375. Features:
  376. -Replaced old analog toggles with a more flexible bindings system. Bind analog values however you want!
  377. -Replaced mouse movement toggles with the new system
  378. -You can now choose how many clicks you want for each scroll wheel turn or bind as an axis and hold it down to keep scrolling!
  379. -Bindings presets updated to accommodate the new system
  380. -Bindings presets are now tailored for the selected controller type
  381. Fixes:
  382. -Fixed a major bug that prevented input blocking from working on some systems! Yipppeeee!
  383. Other:
  384. -Made some adjustments to the About screen
  385. -Added testers who helped me out directly to the About screen
  386. -Added Nestorboy and ZanyCat stickers to the About screen. Have your sticker added by becoming a member: https://www.buymeacoffee.com/zanycatxr
  387.  
  388. Changelog v0.4.1 (1/28/2024)
  389. Features:
  390. -Added Dashboard Detection, making it easier to interact with the SteamVR Dashboard while the handheld is enabled (This can be disabled in the General settings)
  391. -Replaced placeholder hand icon with new pixel art icons to represent input blocking
  392. -Added yellow "paused" input blocking icon to show when the input blocking is paused (i.e. when the dashboard is open)
  393. -Added orange "unknown" input blocking icon to show when the state of the input blocking is unknown (i.e. when Dashboard Detection is disabled)
  394. -Added a key to show the meaning of the input blocking icons
  395. -Added Console menu for viewing debug information
  396. -Console can be viewed