Перейти к основному содержимому

! Создание аппаратного игрового контроллера (gamepad.connect)

Эта функция доступна только в версиях после 20260805.

Объявление

объект_контроллера, сообщение_об_ошибке = gamepad.connect([ свойства ])

Параметры

  • свойства Таблица, необязательный параметр для настройки перечисленных ниже распространённых свойств устройства; значения в блоке кода используются по умолчанию, если свойства не указаны.
{
VendorID = 0x5858,
ProductID = 0x0007,
VersionNumber = 1,
Product = "XXTouch Gamepad",
Manufacturer = "XXTouch",
Transport = "USB",
}

Также можно задать SerialNumber и LocationID; для остальных свойств действие не гарантируется.

Возвращаемые значения

  • объект контроллера Объект игрового контроллера или nil; при успешном создании устройства возвращается новый объект, при ошибке — nil.
  • сообщение об ошибке Текст с описанием ошибки создания устройства.

Описание

  • Каждый вызов возвращает новый независимый объект контроллера; состояния ввода и жизненные циклы разных объектов не зависят друг от друга.
  • Контроллер поддерживает левый и правый стики, крестовину, цифровые кнопки 132 и ввод menu.
  • Во время ожидания подключения текущий поток выполнения Lua уступает управление.
  • Если система не поддерживает эту функцию, gamepad.connect возвращает nil, error.
  • Успешное подключение означает только то, что с объектом контроллера можно работать; распознавание контроллера и всех его вводов целевым приложением зависит от версии системы и поддержки контроллеров самим приложением.
  • Transport влияет только на способ распознавания контроллера локальной системой. Значения "Bluetooth" и "BluetoothLowEnergy" не устанавливают Bluetooth-соединение, не выполняют трансляцию или сопряжение и не добавляют контроллер в списки Bluetooth других устройств.

Пример

local pad, err = gamepad.connect({
Product = "XXTouch Gamepad",
})
assert(pad, err)

assert(pad:press("a"))
assert(pad:press("menu"))
assert(pad:down("left_shoulder"))
assert(pad:set_stick("left", 0.5, 1))
assert(pad:set_dpad(1, 0))
assert(pad:up("left_shoulder"))
assert(pad:reset())

pad:disconnect()