Інформація про відображення джойстика для розробників ігор

Загальні відомості

  1. EdgeTX може передавати інформацію про джойстик / геймпад через USB HID з ID (VID_1209&PID_4F54 / 1209:4F54).

  2. EdgeTX виконує налаштовувану обробку вхідних сигналів, включаючи мертві зони, змішування та нелінійне масштабування.

  3. Різноманітні радіоапаратури працюють на EdgeTX. За замовчуванням усі пристрої використовують один і той самий режим "Класичний джойстик" з 8 аналоговими осями та 24 цифровими кнопками.

  4. Кнопки є цифровими. (0 = off, 1 = on).

  5. Аналогові осі мають роздільну здатність 11 біт.

Linux: evdev

evdev API у Linux використовує open (fcntl.h) із /dev/input/event[...] та read (unistd.h) для читання input_event (linux/joystick.h).

Ідентифікація

  1. EVIOCGID : device_id.vendor це 4617 / 0x1209

  2. EVIOCGID : device_id.product це 20308 / 0x4F54

Мітки входів

EdgeTX
назва події
код події

CH1

ABS_X

EV_ABS 0

CH2

ABS_Y

EV_ABS 1

CH3

ABS_Z

EV_ABS 2

CH4

ABS_RX

EV_ABS 3

CH5

ABS_RY

EV_ABS 4

CH6

ABS_RZ

EV_ABS 5

CH7

ABS_THROTTLE

EV_ABS 6

CH8

ABS_RUDDER

EV_ABS 7

CH9

BTN_SOUTH

EV_KEY 304 / 0x130

CH10

BTN_EAST

EV_KEY 305 / 0x131

CH11

BTN_C

EV_KEY 306 / 0x132

CH12

BTN_NORTH

EV_KEY 307 / 0x133

CH13

BTN_WEST

EV_KEY 308 / 0x134

CH14

BTN_Z

EV_KEY 309 / 0x135

CH15

BTN_TL

EV_KEY 310 / 0x136

CH16

BTN_TR

EV_KEY 311 / 0x137

CH17

BTN_TL2

EV_KEY 312 / 0x138

CH18

BTN_TR2

EV_KEY 313 / 0x139

CH19

BTN_SELECT

EV_KEY 314 / 0x13A

CH20

BTN_START

EV_KEY 315 / 0x13B

CH21

BTN_MODE

EV_KEY 316 / 0x13C

CH22

BTN_THUMBL

EV_KEY 317 / 0x13D

CH23

BTN_THUMBR

EV_KEY 318 / 0x13E

CH24

(no name)

EV_KEY 319 / 0x13F

CH25

BTN_TRIGGER_HAPPY1

EV_KEY 704 / 0x2C0

CH26

BTN_TRIGGER_HAPPY2

EV_KEY 705 / 0x2C1

CH27

BTN_TRIGGER_HAPPY3

EV_KEY 706 / 0x2C2

CH28

BTN_TRIGGER_HAPPY4

EV_KEY 707 / 0x2C3

CH29

BTN_TRIGGER_HAPPY5

EV_KEY 708 / 0x2C4

CH30

BTN_TRIGGER_HAPPY6

EV_KEY 709 / 0x2C5

CH31

BTN_TRIGGER_HAPPY7

EV_KEY 710 / 0x2C6

CH32

BTN_TRIGGER_HAPPY8

EV_KEY 711 / 0x2C7

Linux: joystick

Joystick API в Linux використовує open (fcntl.h) із /dev/input/js та read (unistd.h) для читання js_event (linux/joystick.h).

Ідентифікація

JSIOCGNAME це "EdgeTX [...] Joystick" або "OpenTX [...] Joystick". Середня частина ("[...]") є специфічною для пристрою.

Мітки входів

EdgeTX
read js_event

CH1

JS_EVENT_AXIS 0

CH2

JS_EVENT_AXIS 1

[...]

[...]

CH8

JS_EVENT_AXIS 7

CH9

JS_EVENT_BUTTON 0

CH10

JS_EVENT_BUTTON 1

[...]

[...]

CH32

JS_EVENT_BUTTON 23

Windows: DirectInput

Windows's DirectInput використовує IDirectInputDevice8::GetDeviceState для читання DIJOYSTATE (dinput.h). DIJOYSTATE2 (c_dfDIJoystick2) виводить ту ж інформацію.

Ідентифікація

DIDEVICEINSTANCE.guidProduct починається з "4F541209-". Кінцева частина GUID є специфічною для пристрою.

Мітки входів

EdgeTX
DIJOYSTATE

CH1

lX

CH2

lY

CH3

lZ

CH4

lRx

CH5

lRy

CH6

lRz

CH7

rglSlider[1]

CH8

rglSlider[0]

CH9

rgbButtons[0]

CH10

rgbButtons[1]

[...]

[...]

CH32

rgbButtons[23]

Windows: Multimedia

Windows Multimedia API використовує joyGetPosEx для читання JOYINFOEX (joystickapi.h). Старіший joyGetPos / JOYINFO підтримує лише CH1-CH3 та CH9-CH32 з таким же відображенням, як у новішого JOYINFOEX.

Ідентифікація

  1. JOYCAPS.wMid це 4617 / 0x1209

  2. JOYCAPS.wPid це 20308 / 0x4F54

Мітки входів

EdgeTX
JOYINFOEX

CH1

dwXpos

CH2

dwYpos

CH3

dwZpos

CH4

dwVpos

CH5

(not available)

CH6

dwRpos

CH7

dwUpos

CH8

(not available)

CH9

dwButtons & 0x000001

CH10

dwButtons & 0x000002

CH11

dwButtons & 0x000004

[...]

[...]

CH32

dwButtons & 0x800000

Windows: Raw Input

Windows Raw Input API використовує GetRawInputData (WinUser.h), HidP_GetUsageValue та HidP_GetUsages (hidpi.h).

Ідентифікація

  1. RID_DEVICE_INFO_HID.dwVendorId це 4617 / 0x1209

  2. RID_DEVICE_INFO_HID.dwProductId це 20308 / 0x4F54

Мітки входів

EdgeTX
HidP_Get[...]Value
UsagePage
Usage

CH1

HidP_GetValueCaps [7]

0x01

0x30

CH2

HidP_GetValueCaps [6]

0x01

0x31

CH3

HidP_GetValueCaps [5]

0x01

0x32

CH4

HidP_GetValueCaps [4]

0x01

0x33

CH5

HidP_GetValueCaps [3]

0x01

0x34

CH6

HidP_GetValueCaps [2]

0x01

0x35

CH7

HidP_GetValueCaps [1]

0x01

0x36

CH8

HidP_GetValueCaps [0]

0x01

0x37

CH9

HidP_GetButtonCaps [0]

0x09

0x01

CH10

HidP_GetButtonCaps [0]

0x09

0x02

[...]

[...]

[...]

[...]

CH32

HidP_GetButtonCaps [0]

0x09

0x18

Windows: Windows.Gaming.Input

Windows RawGameController використовую winrt::Windows::Gaming::Input::RawGameController (winrt/Windows.Gaming.Input.h).

Ідентифікація

  1. RawGameController::HardwareVendorId це 4617 / 0x1209

  2. RawGameController::HardwareProductId це 20308 / 0x4F54

Мітки входів

EdgeTX
GetCurrentReading

CH1

axisArray[0]

CH2

axisArray[1]

[...]

[...]

CH8

axisArray[7]

CH9

buttonArray[0]

CH10

buttonArray[1]

[...]

[...]

CH32

buttonArray[23]

Last updated