Class
Controller
public class Controller
Generic class for Joy-Con and Pro Controller
Relationships
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
Name | Type | Description |
---|---|---|
device | IOHIDDevice |
IOHIDDevice data of the controller |
Properties
serialID
let serialID: String
Serial ID of the controller
isConnected
var isConnected: Bool
true if the controller is connected to this mac
isCharging
var isCharging: Bool
true if the controller is being charged
buttonState
var buttonState: [JoyCon.Button: Bool]
leftStickDirection
var leftStickDirection: JoyCon.StickDirection
rightStickDirection
var rightStickDirection: JoyCon.StickDirection
lStickRawPos
var lStickRawPos: CGPoint
lStickPos
var lStickPos: CGPoint
rStickRawPos
var rStickRawPos: CGPoint
rStickPos
var rStickPos: CGPoint
acceleration
var acceleration: SCNVector3
gyro
var gyro: SCNVector3
bodyColor
var bodyColor: CGColor
buttonColor
var buttonColor: CGColor
leftGripColor
var leftGripColor: CGColor?
rightGripColor
var rightGripColor: CGColor?
buttonPressHandler
var buttonPressHandler: ((JoyCon.Button) -> Void)?
buttonReleaseHandler
var buttonReleaseHandler: ((JoyCon.Button) -> Void)?
rightStickHandler
var rightStickHandler: ((JoyCon.StickDirection, JoyCon.StickDirection) -> Void)?
leftStickPosHandler
var leftStickPosHandler: ((_ pos: CGPoint) -> Void)?
rightStickPosHandler
var rightStickPosHandler: ((_ pos: CGPoint) -> Void)?
sensorHandler
var sensorHandler: (() -> Void)?
batteryChangeHandler
var batteryChangeHandler: ((JoyCon.BatteryStatus, JoyCon.BatteryStatus) -> Void)?
isChargingChangeHandler
var isChargingChangeHandler: ((Bool) -> Void)?
Methods
sendRumbleData(leftLowFreq:leftLowAmp:leftHighFreq:leftHighAmp:rightLowFreq:rightLowAmp:rightHighFreq:rightHighAmp:)
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
Name | Type | Description |
---|---|---|
leftLowFreq | Rumble.LowFrequency |
Low frequency of a left controller |
leftLowAmp | UInt8 |
Amplitude of low frequency of a left controller |
leftHighFreq | Rumble.HighFrequency |
High frequency of a left controller |
leftHighAmp | UInt8 |
Amplitude of high frequency of a left controller |
rightLowFreq | Rumble.LowFrequency |
Low frequency of a right controller |
rightLowAmp | UInt8 |
Amplitude of low frequency of a right controller |
rightHighFreq | Rumble.HighFrequency |
High frequency of a right controller |
rightHighAmp | UInt8 |
Amplitude of high frequency of a right controller |
setHCIState(state:)
public func setHCIState(state: JoyCon.HCIState)
Set HCI state (disconnect/page/pair/turn off)
It causes the controller to change power state.
Parameters
Name | Type | Description |
---|---|---|
state | JoyCon.HCIState |
Controller power state |
enableIMU(enable:)
public func enableIMU(enable: Bool)
Enable/Disable IMU (6-Axis sensor)
Parameters
Name | Type | Description |
---|---|---|
enable | Bool |
New IMU state |
setInputMode(mode:)
public func setInputMode(mode: JoyCon.InputMode)
Set input report mode
Parameters
Name | Type | Description |
---|---|---|
mode | JoyCon.InputMode |
Input report mode |
setPlayerLights(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
Name | Type | Description |
---|---|---|
l1 | JoyCon.PlayerLightPattern |
Light 1 |
l2 | JoyCon.PlayerLightPattern |
Light 2 |
l3 | JoyCon.PlayerLightPattern |
Light 3 |
l4 | JoyCon.PlayerLightPattern |
Light 4 |
setHomeLight(miniCycleDuration:numCycles:startIntensity:cycleData:)
public func setHomeLight(miniCycleDuration: UInt8, numCycles: UInt8, startIntensity: UInt8, cycleData: [HomeLEDPattern])
Set Home button LED of Joy-Con (R) or ProController
Parameters
Name | Type | Description |
---|---|---|
miniCycleDuration | UInt8 |
Global mini cycle duration. 0-15. 0: off, 1: 8ms, ... , 15: 175ms |
numCycles | UInt8 |
Number of full cycles. 0-15. 0: repeat forever. |
startIntensity | UInt8 |
Initial LED intensity |
cycleData | [HomeLEDPattern] |
Array of Home LED patterns. The maximum count of the array is 15. |
enableVibration(enable:)
public func enableVibration(enable: Bool)
Enable vibration
Parameters
Name | Type | Description |
---|---|---|
enable | Bool |
if true, vibration will be enabled |
readSPIFlash(address:length:handler:)
public func readSPIFlash(address: UInt32, length: UInt8, handler: @escaping ([UInt8]) -> Void)
Read the SPI flash data
Parameters
Name | Type | Description |
---|---|---|
address | UInt32 |
First address of the data |
length | UInt8 |
Data length |
handler | @escaping ([UInt8]) -> Void |
A function to handle the received data |
readControllerColor(done:)
public func readControllerColor(done: (() -> Void)?)
Read the controller collor data
Parameters
Name | Type | Description |
---|---|---|
done | (() -> Void)? |
Called after the color data is set. To get the colors, read |