class XInput
Attributes
id[R]
Public Class Methods
connected?()
click to toggle source
# File lib/ffi-xinput.rb, line 123 def self.connected? self.state(@id)[:connected] end
new(id)
click to toggle source
# File lib/ffi-xinput.rb, line 67 def initialize(id) @id = id end
state(id)
click to toggle source
# File lib/ffi-xinput.rb, line 83 def self.state(id) state = XINPUT_STATE.new result = XInputGetState(id, state) gamepad = state[:Gamepad] state = {} state[:connected] = result == ERROR_SUCCESS state[:up] = gamepad[:wButtons] & XINPUT_GAMEPAD_DPAD_UP > 0 state[:down] = gamepad[:wButtons] & XINPUT_GAMEPAD_DPAD_DOWN > 0 state[:left] = gamepad[:wButtons] & XINPUT_GAMEPAD_DPAD_LEFT > 0 state[:right] = gamepad[:wButtons] & XINPUT_GAMEPAD_DPAD_RIGHT > 0 state[:start] = gamepad[:wButtons] & XINPUT_GAMEPAD_START > 0 state[:back] = gamepad[:wButtons] & XINPUT_GAMEPAD_BACK > 0 state[:left_thumb] = gamepad[:wButtons] & XINPUT_GAMEPAD_LEFT_THUMB > 0 state[:right_thumb] = gamepad[:wButtons] & XINPUT_GAMEPAD_RIGHT_THUMB > 0 state[:left_shoulder] = gamepad[:wButtons] & XINPUT_GAMEPAD_LEFT_SHOULDER > 0 state[:right_shoulder] = gamepad[:wButtons] & XINPUT_GAMEPAD_RIGHT_SHOULDER > 0 state[:a] = gamepad[:wButtons] & XINPUT_GAMEPAD_A > 0 state[:b] = gamepad[:wButtons] & XINPUT_GAMEPAD_B > 0 state[:x] = gamepad[:wButtons] & XINPUT_GAMEPAD_X > 0 state[:y] = gamepad[:wButtons] & XINPUT_GAMEPAD_Y > 0 state[:left_trigger] = gamepad[:bLeftTrigger].to_f / 0xFF.to_f state[:right_trigger] = gamepad[:bRightTrigger].to_f / 0xFF.to_f state[:left_thumb_x] = gamepad[:sThumbLX].to_f / 0x8000.to_f state[:left_thumb_y] = gamepad[:sThumbLY].to_f / 0x8000.to_f state[:right_thumb_x] = gamepad[:sThumbRX].to_f / 0x8000.to_f state[:right_thumb_y] = gamepad[:sThumbRY].to_f / 0x8000.to_f state end
vibrate(id, left = 0, right = 0)
click to toggle source
# File lib/ffi-xinput.rb, line 115 def self.vibrate(id, left = 0, right = 0) vibration = XINPUT_VIBRATION.new vibration[:wLeftMotorSpeed] = left * 0xFFFF vibration[:wRightMotorSpeed] = right * 0xFFFF XInputSetState(id, vibration) end
Public Instance Methods
connected?()
click to toggle source
# File lib/ffi-xinput.rb, line 79 def connected? XInput.state(@id)[:connected] end
state()
click to toggle source
# File lib/ffi-xinput.rb, line 71 def state XInput.state(@id) end
vibrate(left = 0, right = 0)
click to toggle source
# File lib/ffi-xinput.rb, line 75 def vibrate(left = 0, right = 0) XInput.vibrate(@id, left, right) end