Class: ProconBypassMan::Procon::ButtonCollection

Inherits:
Object
  • Object
show all
Defined in:
lib/procon_bypass_man/procon/button_collection.rb

Constant Summary collapse

BYTES_MAP =

github.com/dekuNukem/Nintendo_Switch_Reverse_Engineering/blob/ac8093c84194b3232acb675ac1accce9bcb456a3/bluetooth_hid_notes.md 0) Input report ID 1) Timer. Increments very fast. Can be used to estimate excess Bluetooth latency. 2 high nibble) Battery level. 8=full, 6=medium, 4=low, 2=critical, 0=empty. LSB=Charging. 2 low nibble) Connection info. (con_info >> 1) & 3 - 3=JC, 0=Pro/ChrGrip. con_info & 1 - 1=Switch/USB powered. 3) ZR R SR(right) SL(right) A B X Y 4) Grip (none) Cap Home ThumbL ThumbR + - 5) ZL L SL(left) SR(left) Left Right Up Down 6) analog Left analog stick data 7) analog Left analog stick data 8) analog Left analog stick data 9) analog Right analog stick data a) analog Right analog stick data b) analog Right analog stick data

{
  0 => nil,
  1 => nil,
  2 => nil,
  3 => [:zr, :r, :sr, :sl, :a, :b, :x, :y],
  4 => [:grip, :_undefined_key, :cap, :home, :thumbl, :thumbr, :plus, :minus],
  5 => [:zl, :l, :sl, :sr, :left, :right, :up, :down],
  6 => [],
  7 => [],
  8 => [],
}.freeze
BUTTONS_MAP =
BYTES_MAP.reduce({}) { |acc, value|
  next acc if value[1].nil?
  value[1].reverse.each.with_index do |button, index|
    next(acc) if button == :grip || button == :_undefined_key
    acc[button] = { byte_position: value[0], bit_position: index }
  end
  acc
}.freeze
BUTTONS =
ProconBypassMan::Procon::ButtonCollection::BUTTONS_MAP.keys.freeze
LEFT_ANALOG_STICK =
{ byte_position: 6..8 }

Class Method Summary collapse

Class Method Details

.availableArray<Symbol>

Returns:

  • (Array<Symbol>)


42
43
44
# File 'lib/procon_bypass_man/procon/button_collection.rb', line 42

def self.available
  BUTTONS
end