JoyConSwift Documentation Beta

Class Controller

public class Controller

Generic class for Joy-Con and Pro Controller

Controller Controller SNESController SNESController SNESController->Controller FamicomController1 FamicomController1 FamicomController1->Controller ProController ProController ProController->Controller FamicomController2 FamicomController2 FamicomController2->Controller JoyConR JoyConR JoyConR->Controller JoyConL JoyConL JoyConL->Controller

Subclasses

FamicomController1

Famicom Controller for Player 1 class

FamicomController2

Famicom Controller for Player 2 class

JoyConL

Joy-Con (L) class

JoyConR

Joy-Con (R) class

ProController

Pro Controller class

SNESController

SNES Controller class

Initializers

init(device:​)

public init(device: IOHIDDevice)

Initialize the controller

Parameters

device IOHIDDevice

IOHIDDevice data of the controller

Properties

serial​ID

let serialID: String

Serial ID of the controller

type

var type: JoyCon.ControllerType

Controller type

is​Connected

var isConnected: Bool

true if the controller is connected to this mac

battery

var battery: JoyCon.BatteryStatus

Battery status

is​Charging

var isCharging: Bool

true if the controller is being charged

button​State

var buttonState: [JoyCon.Button: Bool]

left​Stick​Direction

var leftStickDirection: JoyCon.StickDirection

right​Stick​Direction

var rightStickDirection: JoyCon.StickDirection

lStick​Raw​Pos

var lStickRawPos: CGPoint

lStick​Pos

var lStickPos: CGPoint

rStick​Raw​Pos

var rStickRawPos: CGPoint

rStick​Pos

var rStickPos: CGPoint

acceleration

var acceleration: SCNVector3

gyro

var gyro: SCNVector3

body​Color

var bodyColor: CGColor

button​Color

var buttonColor: CGColor

left​Grip​Color

var leftGripColor: CGColor?

right​Grip​Color

var rightGripColor: CGColor?

button​Press​Handler

var buttonPressHandler: ((JoyCon.Button) -> Void)?

button​Release​Handler

var buttonReleaseHandler: ((JoyCon.Button) -> Void)?

left​Stick​Handler

var leftStickHandler: ((JoyCon.StickDirection, JoyCon.StickDirection) -> Void)?

right​Stick​Handler

var rightStickHandler: ((JoyCon.StickDirection, JoyCon.StickDirection) -> Void)?

left​Stick​Pos​Handler

var leftStickPosHandler: ((_ pos: CGPoint) -> Void)?

right​Stick​Pos​Handler

var rightStickPosHandler: ((_ pos: CGPoint) -> Void)?

sensor​Handler

var sensorHandler: (() -> Void)?

battery​Change​Handler

var batteryChangeHandler: ((JoyCon.BatteryStatus, JoyCon.BatteryStatus) -> Void)?

is​Charging​Change​Handler

var isChargingChangeHandler: ((Bool) -> Void)?

Methods

send​Rumble​Data(left​Low​Freq:​left​Low​Amp:​left​High​Freq:​left​High​Amp:​right​Low​Freq:​right​Low​Amp:​right​High​Freq:​right​High​Amp:​)

public func sendRumbleData(leftLowFreq: Rumble.LowFrequency, leftLowAmp: UInt8, leftHighFreq: Rumble.HighFrequency, leftHighAmp: UInt8, rightLowFreq: Rumble.LowFrequency, rightLowAmp: UInt8, rightHighFreq: Rumble.HighFrequency, rightHighAmp: UInt8)

Send rumble data

Parameters

left​Low​Freq Rumble.​Low​Frequency

Low frequency of a left controller

left​Low​Amp UInt8

Amplitude of low frequency of a left controller

left​High​Freq Rumble.​High​Frequency

High frequency of a left controller

left​High​Amp UInt8

Amplitude of high frequency of a left controller

right​Low​Freq Rumble.​Low​Frequency

Low frequency of a right controller

right​Low​Amp UInt8

Amplitude of low frequency of a right controller

right​High​Freq Rumble.​High​Frequency

High frequency of a right controller

right​High​Amp UInt8

Amplitude of high frequency of a right controller

set​HCIState(state:​)

public func setHCIState(state: JoyCon.HCIState)

Set HCI state (disconnect/page/pair/turn off)

It causes the controller to change power state.

Parameters

state Joy​Con.​HCIState

Controller power state

enable​IMU(enable:​)

public func enableIMU(enable: Bool)

Enable/Disable IMU (6-Axis sensor)

Parameters

enable Bool

New IMU state

set​Input​Mode(mode:​)

public func setInputMode(mode: JoyCon.InputMode)

Set input report mode

Parameters

mode Joy​Con.​Input​Mode

Input report mode

set​Player​Lights(l1:​l2:​l3:​l4:​)

public func setPlayerLights(l1: JoyCon.PlayerLightPattern, l2: JoyCon.PlayerLightPattern, l3: JoyCon.PlayerLightPattern, l4: JoyCon.PlayerLightPattern)

Set player lights (on/off/flash)

Parameters

l1 Joy​Con.​Player​Light​Pattern

Light 1

l2 Joy​Con.​Player​Light​Pattern

Light 2

l3 Joy​Con.​Player​Light​Pattern

Light 3

l4 Joy​Con.​Player​Light​Pattern

Light 4

set​Home​Light(mini​Cycle​Duration:​num​Cycles:​start​Intensity:​cycle​Data:​)

public func setHomeLight(miniCycleDuration: UInt8, numCycles: UInt8, startIntensity: UInt8, cycleData: [HomeLEDPattern])

Set Home button LED of Joy-Con (R) or ProController

Parameters

mini​Cycle​Duration UInt8

Global mini cycle duration. 0-15. 0: off, 1: 8ms, ... , 15: 175ms

num​Cycles UInt8

Number of full cycles. 0-15. 0: repeat forever.

start​Intensity UInt8

Initial LED intensity

cycle​Data [Home​LEDPattern]

Array of Home LED patterns. The maximum count of the array is 15.

enable​Vibration(enable:​)

public func enableVibration(enable: Bool)

Enable vibration

Parameters

enable Bool

if true, vibration will be enabled

read​SPIFlash(address:​length:​handler:​)

public func readSPIFlash(address: UInt32, length: UInt8, handler: @escaping ([UInt8]) -> Void)

Read the SPI flash data

Parameters

address UInt32

First address of the data

length UInt8

Data length

handler @escaping ([UInt8]) -> Void

A function to handle the received data

read​Controller​Color(done:​)

public func readControllerColor(done: (() -> Void)?)

Read the controller collor data

Parameters

done (() -> Void)?

Called after the color data is set. To get the colors, read bodyColor and buttonColor.