class VJoy
Attributes
id[R]
Public Class Methods
acquire(id)
click to toggle source
# File lib/ffi-vjoy.rb, line 135 def self.acquire(id) AcquireVJD(id) end
new(id)
click to toggle source
# File lib/ffi-vjoy.rb, line 72 def initialize(id) raise("Could not acquire vJoy ##{id}.") unless AcquireVJD(id) @id = id @button_state = [] @axis_state = {} @disc_pov_state = [] @cont_pov_state = [] end
reset()
click to toggle source
# File lib/ffi-vjoy.rb, line 131 def self.reset ResetAll() end
status(id)
click to toggle source
# File lib/ffi-vjoy.rb, line 139 def self.status(id) case GetVJDStatus(id) when VJD_STAT_OWN return :own when VJD_STAT_FREE return :free when VJD_STAT_BUSY return :busy when VJD_STAT_MISS return :missing else return :unknown end end
Public Instance Methods
axis(axis, value)
click to toggle source
# File lib/ffi-vjoy.rb, line 89 def axis(axis, value) axis = AXIS_MAP[axis] || axis raise("Invalid axis type \"#{axis}\".") unless axis.is_a?(Numeric) value = 1.0 if value > 1.0 value = -1.0 if value < -1.0 value = (value * 0x4000 + 0x4000).to_i return true if @axis_state[axis] == value @axis_state[axis] = value SetAxis(value, @id, axis) end
cont_pov(pov, value)
click to toggle source
# File lib/ffi-vjoy.rb, line 113 def cont_pov(pov, value) value = CONT_POV_MAP[value] || value raise("Invalid POV value \"#{value}\".") unless value.is_a?(Numeric) value = -1 if value < 0 value = (value * 36000.0 % 36000.0).to_i if value >= 0 return true if @cont_pov_state[pov] == value @cont_pov_state[pov] = value SetContPov(value, @id, pov) end
disc_pov(pov, value)
click to toggle source
# File lib/ffi-vjoy.rb, line 103 def disc_pov(pov, value) value = DISC_POV_MAP[value] || value raise("Invalid POV value \"#{value}\".") unless value.is_a?(Numeric) return true if @disc_pov_state[pov] == value @disc_pov_state[pov] = value SetDiscPov(value, @id, pov) end
reset()
click to toggle source
# File lib/ffi-vjoy.rb, line 126 def reset ResetVJD(@id) AXIS_MAP.each { | symbol, id | axis(id, 0) } end