> For the complete documentation index, see [llms.txt](https://zkl2333.gitbook.io/edgetx-user-manual/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://zkl2333.gitbook.io/edgetx-user-manual/edgetx-ru-he-cao-zuo/configure-advanced-joystick-with-edgetx.md).

# 在 EdgeTX 中配置高级游戏手柄

### 通用

1. 请先尝试**经典模式**。处理操纵杆输入经历了许多不同的设计。例如，Windows 有 6 种操纵杆 API——每种都有不同的特点。
2. **接口模式 Gamepad** 通常是正确的选择。
3. 为了方便在高级和经典模式之间切换，尝试使用**通道 1 - 8 作为轴**，**通道 9 - 32 作为按钮**。
4. 在**更改操纵杆**配置后，您可能需要断开并重新连接 USB 电缆。否则，系统可能仍会使用旧的操纵杆描述来读取新数据。

### 模拟轴

1. 大多数现代应用程序使用 **USB HID ID** 来识别轴的含义。
2. 传统应用程序通常使用轴的**配置顺序**。
3. 一些应用程序使用轴的**反向顺序**。
4. **重复轴**很少被支持。一些 API 支持两个滑块轴。
5. **反向轴**：许多应用程序期望左右 Y 轴方向相反。可以通过权重 -100% 或在高级操纵杆配置中反转方向。
6. **Windows** 支持“轴”和“模拟”。然而，混合使用这两种类型并不总是被支持。
7. **Linux** 将以下输入映射到同一轴，并使用具有最低通道号的输入值。
   * 模拟油门 + 轴滑块 → ABS\_THROTTLE
   * 模拟方向舵 + 轴拨盘 → ABS\_RUDDER
   * 轴轮 + 模拟转向 → ABS\_WHEEL
8. **Android** 将 **模拟加速** 和 **模拟刹车** 视为半轴。EdgeTX 通道输出 \[-100%, 0% 和 +100%] 被 Android 解释为 \[0%, 50% 和 100%]。如果您的物理输入是一个模拟摇杆，请考虑以下配置：
   * 模拟加速 = 输入 (轴 1: 偏移 -50%, 函数 "x>0") 混合 (权重 200%)
   * 模拟刹车 = 输入 (轴 1: 偏移 -50%, 函数 "x<0") 混合 (权重 -200%)

#### 常见轴映射

| 通道  | Android | Betaflight | Dualsense | EdgeTX 经典 | EdgeTX 2.9 之前 |
| --- | ------- | ---------- | --------- | --------- | ------------- |
| CH1 | 轴 X     | 轴 X        | 轴 X       | 轴 X       | 轴 X           |
| CH2 | 轴 Y     | 轴 Y        | 轴 Y       | 轴 Y       | 轴 Y           |
| CH3 | 轴 Z     | 轴 Z        | 轴 Z       | 轴 Z       | 轴 Z           |
| CH4 | 轴 rotZ  | 轴 rotX     | 轴 rotZ    | 轴 rotX    | 轴 rotX        |
| CH5 | 模拟刹车    | 轴 rotZ     | 轴 rotX    | 轴 rotY    | 轴 rotY        |
| CH6 | 模拟加速    | 轴 rotY     | 轴 rotY    | 轴 rotZ    | 轴 rotZ        |
| CH7 |         | 轴滑块        |           | 轴滑块       | 轴滑块           |
| CH8 | 模拟方向键   | 轴拨盘        | 模拟方向键     | 轴拨盘       | 轴滑块           |

类似布局：

| 其他控制器         | 使用布局          |
| ------------- | ------------- |
| OpenTX        | EdgeTX 2.9 之前 |
| Orqa FPV.Ctrl | EdgeTX 2.9 之前 |
| Stadia        | Android       |
| XBox          | Android       |

#### 模拟方向键

模拟方向键模拟一个**方向键**，也称为**帽开关**或视角开关。大多数应用程序解码 8 个方向和“中心”。一些应用程序只解码 4 个基本方向和“中心”（例如，东北被视为北）。

| 方向     | 从       | 到      |
| ------ | ------- | ------ |
| 北      | -100.0% | -88.1% |
| 东北     | -88.0%  | -76.4% |
| 东      | -76.3%  | -64.6% |
| 东南     | -64.6%  | -52.9% |
| 南      | -52.8%  | -41.2% |
| 西南     | -41.1%  | -29.5% |
| 西      | -29.4%  | -17.8% |
| 西北     | -17.7%  | -6.1%  |
| **中心** | -6.0%   | 5.7%   |
| 北      | 5.8%    | 17.4%  |
| 东北     | 17.5%   | 29.1%  |
| 东      | 29.2%   | 40.8%  |
| 东南     | 40.9%   | 52.5%  |
| 南      | 52.6%   | 64.3%  |
| 西南     | 64.4%   | 76.0%  |
| 西      | 76.1%   | 87.7%  |
| 西北     | 87.8%   | 100.0% |

#### 轴 ID

| EdgeTX | HID 名称      | USB HID ID |
| ------ | ----------- | ---------- |
| 轴 X    | X           | 0x00010030 |
| 轴 Y    | Y           | 0x00010031 |
| 轴 Z    | Z           | 0x00010032 |
| 轴 rotX | Rx          | 0x00010033 |
| 轴 rotY | Ry          | 0x00010034 |
| 轴 rotZ | Rz          | 0x00010035 |
| 轴滑块    | Slider      | 0x00010036 |
| 轴拨盘    | Dial        | 0x00010037 |
| 轴轮     | Wheel       | 0x00010038 |
| 模拟副翼   | Aileron     | 0x000200B0 |
| 模拟升降舵  | Elevator    | 0x000200B8 |
| 模拟方向舵  | Rudder      | 0x000200BA |
| 模拟油门   | Throttle    | 0x000200BB |
| 模拟加速   | Accelerator | 0x000200C4 |
| 模拟刹车   | Brake       | 0x000200C5 |
| 模拟转向   | Steering    | 0x000200C8 |
| 模拟方向键  | Hat switch  | 0x00010039 |

### 按钮

1. 按钮通过其 USB HID ID **识别**。
2. 特定按钮 ID 的**含义**没有标准化。
3. **重复按钮**（例如，按钮 1，按钮 1）不被支持。使用通道号较高的按钮。
4. **按钮作为轴**：一些应用程序需要模拟按钮信息。使用混合器将数字按钮状态转发到模拟轴。
5. **幽灵按钮**：对于操纵杆和游戏手柄，自动创建所需的最小按钮数量。同样，如果只配置了按钮 15，则自动创建缺失的按钮 0 - 14。这些按钮没有输入，始终关闭。
6. **Android** 通常支持按钮 0 到 14，与 Linux 的映射相同。对加粗按钮的支持是所有 Android 设备的[强制性](https://source.android.com/docs/compatibility/14/android-14-cdd#7261_button_mappings)。
7. **Windows** 通常支持按钮 0 到 9，与 Xbox 的映射相同。

| EdgeTX | **Android** / Linux         | Dualsense | **Windows** / XBox | USB HID ID |
| ------ | --------------------------- | --------- | ------------------ | ---------- |
| 按钮 0   | **BTN\_A** - 304            | 方形        | **A**              | 0x00090001 |
| 按钮 1   | **BTN\_B** - 305            | 十字        | **B**              | 0x00090002 |
| 按钮 2   | BTN\_C - 305                | 圆形        | **X**              | 0x00090003 |
| 按钮 3   | **BTN\_X** - 307            | 三角形       | **Y**              | 0x00090004 |
| 按钮 4   | **BTN\_Y** - 308            | L1        | **左肩键**            | 0x00090005 |
| 按钮 5   | BTN\_Z - 309                | R1        | **右肩键**            | 0x00090006 |
| 按钮 6   | **BTN\_TL** - 310           | L2        | **返回**             | 0x00090007 |
| 按钮 7   | **BTN\_TR** - 311           | R2        | **开始**             | 0x00090008 |
| 按钮 8   | BTN\_TL2 - 312              | 创建        | **左摇杆**            | 0x00090009 |
| 按钮 9   | BTN\_TR2 - 313              | 选项        | **右摇杆**            | 0x0009000A |
| 按钮 10  | BTN\_SELECT - 314           | L3        | 左触发器               | 0x0009000B |
| 按钮 11  | BTN\_START - 315            | R3        | 右触发器               | 0x0009000C |
| 按钮 12  | BTN\_MODE - 316             | 主页面       | 导航                 | 0x0009000D |
| 按钮 13  | **BTN\_THUMBL** - 317       | 触摸板       |                    | 0x0009000E |
| 按钮 14  | **BTN\_THUMBR** - 318       | 静音        |                    | 0x0009000F |
| 按钮 15  |                             |           |                    | 0x00090010 |
| 按钮 16  | BTN\_TRIGGER\_HAPPY1 - 704  |           |                    | 0x00090011 |
| 按钮 17  | BTN\_TRIGGER\_HAPPY2 - 705  |           |                    | 0x00090012 |
| 按钮 18  | BTN\_TRIGGER\_HAPPY3 - 706  |           |                    | 0x00090013 |
| 按钮 19  | BTN\_TRIGGER\_HAPPY4 - 708  |           |                    | 0x00090014 |
| 按钮 20  | BTN\_TRIGGER\_HAPPY5 - 709  |           |                    | 0x00090015 |
| 按钮 21  | BTN\_TRIGGER\_HAPPY6 - 710  |           |                    | 0x00090016 |
| 按钮 22  | BTN\_TRIGGER\_HAPPY7 - 711  |           |                    | 0x00090017 |
| 按钮 23  | BTN\_TRIGGER\_HAPPY8 - 712  |           |                    | 0x00090018 |
| 按钮 24  | BTN\_TRIGGER\_HAPPY9 - 713  |           |                    | 0x00090019 |
| 按钮 25  | BTN\_TRIGGER\_HAPPY10 - 714 |           |                    | 0x0009001A |
| 按钮 26  | BTN\_TRIGGER\_HAPPY11 - 715 |           |                    | 0x0009001B |
| 按钮 27  | BTN\_TRIGGER\_HAPPY12 - 716 |           |                    | 0x0009001C |
| 按钮 28  | BTN\_TRIGGER\_HAPPY13 - 717 |           |                    | 0x0009001D |
| 按钮 29  | BTN\_TRIGGER\_HAPPY14 - 718 |           |                    | 0x0009001E |
| 按钮 30  | BTN\_TRIGGER\_HAPPY15 - 719 |           |                    | 0x0009001F |
| 按钮 31  | BTN\_TRIGGER\_HAPPY16 - 720 |           |                    | 0x00090020 |
