为游戏开发者提供的手柄映射信息

概述

  1. EdgeTX 可以通过 USB HID 输出操纵杆/游戏手柄信息,ID 为 (VID_1209&PID_4F54 / 1209:4F54)。

  2. EdgeTX 执行可配置的输入处理,包括死区、混合和非线性缩放。

  3. 多种控制器运行 EdgeTX。默认情况下,所有设备输出相同的“经典操纵杆”报告格式,具有 8 个模拟轴和 24 个数字按钮。

  4. 按钮是数字的(0 = 关,1 = 开)。

  5. 模拟轴具有 11 位分辨率。

Linux: evdev

Linux 的 evdev API 使用 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

(无名称)

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

Linux 的 joystick API 使用 open (fcntl.h) 与 /dev/input/jsread (unistd.h) 来读取 js_event (linux/joystick.h)。

身份识别

JSIOCGNAME 是 "EdgeTX [...] Joystick" 或 "OpenTX [...] Joystick"。中间部分 ("[...]") 是设备特定的。

输入标签

EdgeTX
读取 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 的 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

(不可用)

CH6

dwRpos

CH7

dwUpos

CH8

(不可用)

CH9

dwButtons & 0x000001

CH10

dwButtons & 0x000002

CH11

dwButtons & 0x000004

[...]

[...]

CH32

dwButtons & 0x800000

Windows: Raw Input

Windows 的 Raw Input API 使用 GetRawInputData (WinUser.h),HidP_GetUsageValueHidP_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]

最后更新于