Skip to main content

fly_stick

Real-time joystick input for FlyRuler simulations, built on Linux evdev.

fly_stick 把 Linux 下的飞行手柄接进 FlyRuler:Rust 与 PyO3 负责打开 /dev/input/event*、维护事件状态机与按键去抖,Python 侧暴露设备对象、TOML 设备描述与多设备状态池。

能做什么

  • 枚举系统里可读的输入设备,拿到设备节点路径与名称。
  • 读取单个设备的轴、按键与帽开关:轴归一到 [-1, 1],按键 0/1,帽 -1/0/1。
  • 用 TOML 描述文件给每个数值码起别名,按别名而不是裸数值码取值。
  • 用一个设备池同时管理多个设备,按逻辑名取状态,并选择 Hold 或 Trigger 按键语义。

本包不包含飞行器模型、控制器或可视化。把轴映射成模型输入的做法见 models/fr_gtm/examples/fly_stick_gtm.py 与 models/fr_f16/examples/fly_stick_f16.py。

安装

pip install fly-stick

发行名是 fly-stick,导入名是 fly_stick。wheel 由 maturin 构建,只发布 Linux 平台产物;需要 Python 3.12+,wheel 为 abi3 产物。

在源码仓库里开发时,用本目录的 justfile 同步依赖并安装扩展模块:

cd packages/fly_stick
just setup

快速开始

from fly_stick import PyJoystick, fetch_connected_joysticks

for info in fetch_connected_joysticks():
    print(info.path, info.name)

joystick = PyJoystick("/dev/input/event3")
print(joystick.get_state().axes)

get_state() 返回的是本次调用读到的事件,设备静止时三个映射为空。多设备与别名用法见设备池示例:

import asyncio

from fly_stick import DeviceDescription, PyDevicePool


async def main() -> None:
    desc = DeviceDescription.from_toml("devices/Thrustmaster/t16000m.toml")
    pool = PyDevicePool(device_descs={"stick": desc})
    if "stick" not in await pool.reset():
        return
    state = pool.fetch_nowait()["stick"]
    print(state.get_alias_axes(desc).get("ABS_X"))
    await pool.stop()


asyncio.run(main())

示例

examples/ 按由简到繁排列,包含枚举设备、多设备、设备池的阻塞与非阻塞读取、按键模式、别名、设备描述构造与异常解剖;无硬件时也能跑通其中三个。阅读顺序与运行命令见 examples/README.md。

文档与开发

  • 用户手册:docs/guide/ —— 安装、设备枚举、设备描述、设备池、按键模式、模型接入与排障。
  • 开发者手册:docs/dev/ —— 架构分层、实现细节、设备描述契约、扩展方式与接口参考。
  • 接口声明:src/fly_stick/_core.pyi 是全部公开类型的签名与说明,examples/ 里的可运行脚本是配套样例。
  • 命令以 just --list 为准:just setup、just fmt、just check、just test、just build、just pre-commit;单项排障入口是私有 recipe(just _test-rust、just _test-python),不在列表里。

Metadata

Release files for fly-stick 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fly-stick 0.1.1
File Size Uploaded
fly_stick-0.1.1.tar.gz 22.5 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for fly-stick 0.1.1
File Interpreter ABI Platform
fly_stick-0.1.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.9 abi3 Linux glibc 2.17+ x86-64 Details
fly_stick-0.1.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.9 abi3 Linux glibc 2.17+ ARM64 Details

Total release size: 24.2 MB

Release files / fly_stick-0.1.1.tar.gz

Download URL fly_stick-0.1.1.tar.gz
Size 22.5 MB
Tags Source
SHA-256 checksum
How to use checksums
5ed26f550fb8548cfd91a3742073a29e9b6b5d8c048a3f33ce21228292ddeaf4
BLAKE2b-256 checksum
How to use checksums
e44aabf703428ee44940de445e4fab5832545357b1e88803c9ced91f43b22df5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / fly_stick-0.1.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL fly_stick-0.1.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 828.8 kB
Tags CPython 3.9 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
320916d9e1513f5733d33ebd60fc98c0fc378188f3d6b13727e8ca5169c16c23
BLAKE2b-256 checksum
How to use checksums
1188034b4dfdb66e75795bce175e5180d4aee0bf13a5ab93cd2c26f733d5adb5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / fly_stick-0.1.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL fly_stick-0.1.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 842.6 kB
Tags CPython 3.9 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
9e3ab71c50a74061ba385bfb0be9f3d6a1a2f226e66c009ed46b1c435a3fb108
BLAKE2b-256 checksum
How to use checksums
883da203adf395f4f22a3da71fdb592fae8d5df8e7ea4ff494458005a5c941a6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release history Release notifications | RSS feed

0.1.2

3 release files

This release

0.1.1 This release

3 release files

0.1.0

3 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page