Skip to content

About

PC server component for LowLatencyInput Android client. Receives input data via TCP and shares it via Windows Shared Memory.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

LowLatencyInput - PC 端服务器 (Rust)

Rust License: CC BY-NC-SA 4.0

这是 LowLatencyInput 安卓客户端 的配套 PC 端服务器组件。

本程序的目的是在 Windows PC 上运行,通过 TCP 连接接收来自 LowLatencyInput 安卓客户端的数据,并将处理后的输入数据(陀螺仪、加速度计、触摸屏、UI 事件)写入 Windows 共享内存,供其他应用程序(例如,输入模拟器)读取和使用。

功能

  • TCP 服务器: 监听来自安卓客户端的连接 (默认 0.0.0.0:12345)。
  • 数据包解析: 严格按照安卓客户端定义的网络协议解析触摸、陀螺仪、加速度计、设备信息、UI 事件和 Ping 数据包。
  • 数据处理:
    • 计算客户端到服务器的 RTT (Round-Trip Time)。
    • 对陀螺仪数据进行零偏自动校准。
    • 对传感器数据进行缩放,转换为 i16 范围。
    • 过滤掉可能由 UI 点击触发的附近触摸点,以减少误操作。
  • 共享内存输出 (核心): 将处理后的数据写入三个独立的 Windows 共享内存区域,并通过对应的 Windows 事件通知数据更新:
    • 陀螺仪/加速度数据:
      • 共享内存名称: Global\GyroSharedMemory
      • 更新事件名称: Global\GyroDataUpdatedEvent
      • 数据结构 (SharedGyroData): 包含更新序列号 (i64)、缩放后的 Pitch/Yaw/Roll (i16)、缩放后的 Accel X/Y/Z (i16)、时间戳 (u16) 和一个 is_aiming 标志 (i64)。
    • 触摸数据:
      • 共享内存名称: Global\TouchSharedMemory
      • 更新事件名称: Global\TouchDataUpdatedEvent
      • 数据结构 (SharedTouchData): 包含更新序列号 (i64)、事件时间戳 (i64)、触摸点数量 (i32)、最多 10 个触摸点的数组(id, x, y均为i32)、屏幕最大 X/Y 坐标 (i32)。
    • UI 事件数据:
      • 共享内存名称: Global\UiSharedMemory
      • 更新事件名称: Global\UiDataUpdatedEvent
      • 数据结构 (SharedUiData): 包含更新序列号 (i64)、事件写入时的服务器时间戳 (i64)、最后点击的 X/Y 坐标 (i32) 和最后点击的图标类型 ID (i32)。

要求

如何构建和运行

  1. 克隆仓库:

    git clone https://github.com/shuakami/android_usb_listener
    cd android_usb_listener       # 进入项目目录
  2. 构建:

    cargo build --release

    可执行文件将位于 target/release/android_usb_listener.exe。

  3. 运行服务器:

    cargo run --release
    # 或者直接运行编译好的文件
    # ./target/release/android_usb_listener.exe

    服务器启动后会显示 "服务器启动,监听端口 12345..."。

与安卓客户端连接

  1. 确保 PC 服务器正在运行。
  2. 设置 ADB 反向端口转发: 将安卓设备的 12345 端口转发到 PC 的 12345 端口。将安卓设备通过 USB 连接到 PC,并执行以下命令:
    adb reverse tcp:12345 tcp:12345
  3. 启动安卓客户端: 在安卓设备上启动 LowLatencyInput 应用。它会尝试连接到 127.0.0.1:12345 (即通过 ADB 转发连接到 PC 服务器)。连接成功后,服务器端会显示 "新的连接: ..."。

许可证

本项目采用 Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) 许可证。

About

PC server component for LowLatencyInput Android client. Receives input data via TCP and shares it via Windows Shared Memory.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages