0 of 0

File information

Last updated

Original upload

Created by


Uploaded by


Virus scan

Safe to use

About this mod

SKSEVR plugin to get spell casting and enhanced bow and melee haptic feedback on vr controllers.

Permissions and credits


This mod consists of an SKSE plugin to call openvr_api functions on skyrimvr events.

Spellcasting, Enhanced Bow and Melee haptic feedback on vr controllers is implemented.

VR Body is supported now and all other compatibility issues should be resolved.

If you have any requests, suggestions, ideas, please post it. Don't hold back!

Added SKSEVR Plugin source to the download section to help fellow modders.


  • SKSEVR latest version.
  • SkyrimVRTools required. Should be installed inside SKSE\Plugins. If you previously installed papyrusvr.dll, delete it.


Install with a Mod Manager or extract contents to SkyrimVR\Data directory.


This mod features a mod configuration file in "SKSE\Plugins\HapticSkyrimVRConfig.txt"

Because of the limitations in openvr api, I made all the parameters configurable to support different controllers.
You can find the descriptions of settings down here or in the config file comments. 

Main configuration file comes with preconfigured values that work for me with vive pro.
      strength values are integer except magicstrength, and freqmultiplier values are decimal values.


#how many vibration loops. Change this to change vibration strength.
magicstrength = 1.0         

#Vibration frequency multiplier. Frequency is sequential now. You probably shouldn't touch this value.
magicfreqmultiplier = 1.0         

#Wait duration between magic haptics to prevent new sequences to start after trigger release. In milliseconds. Longer values would prevent delays but increase the chance of no haptics if triggered quickly.
magicwaitduration = 250 

#Wait duration between magic haptics in the loop. In milliseconds. Longer values would prevent delays but make the feedback spaced.         
magicloopwaitduration = 3         


#write spells you don't want haptic feedback with a value of 0 and you want only one loop of feedback with a value of 1


#how many consecutive vibrations each bowsleepduration ms
bowholdingstrength = 1   

#Vibration frequency multiplier.        
bowholdingfreqmultiplier = 0.1   

#how many consecutive vibrations for each haptic event. Change this to change vibration strength.
bowpullingstrength = 10     

#Vibration frequency multiplier. Frequency is the same used by the game now. You probably shouldn't touch this value.      
bowpullingfreqmultiplier = 1.0    

#how much sleep between bow feedback loops (in ms)
bowsleepduration   = 30           

#Effect for releasing the arrow. This is a decreasing effect. The final vibration on the bow.
bowReleaseEffectStrength = 10 
#Arrow release effect delay in ms.
bowReleaseEffectDelay = 100       

#Additional time to continue bow pull feedback after pulling ends in ms.
bowPullingContinueDuration = 300  

#how many consecutive vibrations for block event. Change this to change vibration strength.
meleeblockstrength = 25           

#Vibration frequency multiplier. (Between 0-1)
meleeblockfreqmultiplier = 0.7 

#how many consecutive vibrations for bash event. Change this to change vibration strength.  
meleebashstrength = 25       

#Vibration frequency multiplier. (Between 0-1)      
meleebashfreqmultiplier = 0.8 

#how many consecutive vibrations for attack event. Change this to change vibration strength.    
meleeattackstrength = 20 

#Vibration frequency multiplier. (Between 0-1)          
meleeattackfreqmultiplier = 0.9 

#how many consecutive vibrations for power attack event. Change this to change vibration strength.  
meleepowerattackstrength = 40 

#Vibration frequency multiplier. (Between 0-1)   
meleepowerattackfreqmultiplier = 0.9 

#how much sleep between melee feedback calls
meleesleepduration   = 10         


#set this to 1 to switch controllers
lefthandedmode = 0   
#if there are any spells that are undefined, default spell haptic is used. fire(1), shock(2), ice(3), alteration(4), illusion(5), restoration(6))
defaulttype = 4   

#Change to 1 to enable logging. Only do this if something isn't right. It would hurt performance if it's left on.              
logging = 0                       


I don't think anything else is left. But if you think of something, let me know. Always happy to hear your ideas!