为游戏开发者提供的手柄映射信息
概述
EdgeTX 可以通过 USB HID 输出操纵杆/游戏手柄信息,ID 为 (VID_1209&PID_4F54 / 1209:4F54)。
EdgeTX 执行可配置的输入处理,包括死区、混合和非线性缩放。
多种控制器运行 EdgeTX。默认情况下,所有设备输出相同的“经典操纵杆”报告格式,具有 8 个模拟轴和 24 个数字按钮。
按钮是数字的(0 = 关,1 = 开)。
模拟轴具有 11 位分辨率。
Linux: evdev
Linux 的 evdev API 使用 open (fcntl.h) 与 /dev/input/event[...] 和 read (unistd.h) 来读取 input_event (linux/joystick.h)。
身份识别
EVIOCGID : device_id.vendor 是 4617 / 0x1209
EVIOCGID : device_id.product 是 20308 / 0x4F54
输入标签
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/js 和 read (unistd.h) 来读取 js_event (linux/joystick.h)。
身份识别
JSIOCGNAME 是 "EdgeTX [...] Joystick" 或 "OpenTX [...] Joystick"。中间部分 ("[...]") 是设备特定的。
输入标签
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 的后续部分是设备特定的。
输入标签
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 相同。
身份识别
JOYCAPS.wMid 是 4617 / 0x1209
JOYCAPS.wPid 是 20308 / 0x4F54
输入标签
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_GetUsageValue 和 HidP_GetUsages (hidpi.h)。
身份识别
RID_DEVICE_INFO_HID.dwVendorId 是 4617 / 0x1209
RID_DEVICE_INFO_HID.dwProductId 是 20308 / 0x4F54
输入标签
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)。
身份识别
RawGameController::HardwareVendorId 是 4617 / 0x1209
RawGameController::HardwareProductId 是 20308 / 0x4F54
输入标签
CH1
axisArray[0]
CH2
axisArray[1]
[...]
[...]
CH8
axisArray[7]
CH9
buttonArray[0]
CH10
buttonArray[1]
[...]
[...]
CH32
buttonArray[23]
最后更新于