EG/plugins/user/multiplatform_input
2025-12-12 16:16:15 +08:00
..
config 编译修复 2025-12-12 16:16:15 +08:00
core 编译修复 2025-12-12 16:16:15 +08:00
devices 编译修复 2025-12-12 16:16:15 +08:00
editor 编译修复 2025-12-12 16:16:15 +08:00
events 编译修复 2025-12-12 16:16:15 +08:00
gestures 编译修复 2025-12-12 16:16:15 +08:00
haptics 编译修复 2025-12-12 16:16:15 +08:00
mapping 编译修复 2025-12-12 16:16:15 +08:00
platforms 编译修复 2025-12-12 16:16:15 +08:00
utils 编译修复 2025-12-12 16:16:15 +08:00
plugin.py 编译修复 2025-12-12 16:16:15 +08:00
README.md 编译修复 2025-12-12 16:16:15 +08:00

多平台输入支持插件

概述

多平台输入支持插件为EG引擎提供统一的多平台输入设备支持包括键盘、鼠标、触摸屏、游戏手柄、VR控制器等各种输入设备的抽象和管理。该插件支持跨平台兼容性能够在Windows、Linux和macOS系统上运行。

功能特性

1. 设备管理

  • 自动发现和管理各种输入设备
  • 支持热插拔设备检测
  • 设备状态监控和统计
  • 跨平台设备兼容性适配

2. 输入映射

  • 灵活的输入映射系统
  • 支持按键、轴、手势等多种输入类型
  • 可配置的动作映射
  • 组合键和序列键支持

3. 手势识别

  • 触摸手势识别(点击、滑动、捏合、旋转等)
  • 鼠标手势识别
  • 自定义手势支持
  • 手势参数可配置

4. 触觉反馈

  • 多种触觉效果类型
  • 设备特定的触觉支持
  • 效果参数可调节
  • 实时触觉播放控制

5. 事件系统

  • 高性能事件处理机制
  • 事件过滤和合并
  • 事件历史记录
  • 多线程事件处理

6. 配置管理

  • 完整的配置系统
  • 用户偏好设置
  • 配置导入导出
  • 自动备份和恢复

7. 编辑器支持

  • 可视化设备配置界面
  • 实时输入监控
  • 映射编辑器
  • 触觉效果设计器

系统架构

multiplatform_input/
├── plugin.py                 # 插件主入口
├── core/
│   └── input_manager.py     # 输入管理器
├── devices/
│   └── device_manager.py    # 设备管理器
├── events/
│   └── event_system.py      # 事件系统
├── mapping/
│   └── input_mapper.py      # 输入映射器
├── gestures/
│   └── gesture_recognizer.py # 手势识别器
├── haptics/
│   └── haptic_manager.py    # 触觉管理器
├── config/
│   └── config_manager.py    # 配置管理器
├── editor/
│   └── input_editor.py      # 输入编辑器
├── utils/
│   └── input_utils.py       # 工具类
└── platforms/
    └── platform_adapter.py  # 平台适配器

安装和使用

安装

将插件目录复制到EG引擎的plugins/user目录下

cp -r multiplatform_input /path/to/eg/plugins/user/

启用插件

在EG引擎中启用插件

# 在插件管理器中加载
plugin_manager.load_plugin('multiplatform_input')

基本使用

# 获取插件实例
input_plugin = plugin_manager.get_plugin('multiplatform_input')

# 注册输入动作回调
input_plugin.input_mapper.register_action_callback('jump', on_jump)

# 处理输入事件
def on_input_event(event_data):
    print(f"Input event: {event_data}")

input_plugin.input_manager.register_event_listener('input_pressed', on_input_event)

配置说明

输入配置

{
  "polling_rate": 120,
  "deadzone": 0.1,
  "double_click_time": 0.3,
  "long_press_time": 0.5
}

手势配置

{
  "tap_max_duration": 0.3,
  "swipe_min_distance": 50.0,
  "pinch_threshold": 20.0
}

触觉配置

{
  "default_intensity": 0.5,
  "default_duration": 0.2,
  "max_intensity": 1.0
}

API参考

主要类和方法

InputManager

  • initialize() - 初始化输入管理器
  • enable() - 启用输入管理器
  • add_input_device() - 添加输入设备
  • submit_input_event() - 提交输入事件

DeviceManager

  • register_device() - 注册设备
  • connect_device() - 连接设备
  • scan_for_devices() - 扫描设备

InputMapper

  • create_mapping() - 创建输入映射
  • handle_input_event() - 处理输入事件
  • register_action_callback() - 注册动作回调

GestureRecognizer

  • start_touch() - 开始触摸
  • update_touch() - 更新触摸
  • end_touch() - 结束触摸

HapticManager

  • create_haptic_effect() - 创建触觉效果
  • play_haptic_effect() - 播放触觉效果
  • stop_haptic_effect() - 停止触觉效果

平台支持

Windows

  • 支持DirectInput和XInput
  • 支持原始输入API
  • 完整的触觉反馈支持

Linux

  • 支持evdev事件接口
  • 支持udev设备管理
  • X11输入支持

macOS

  • 支持IOKit框架
  • 支持CoreGraphics事件
  • HID设备支持

性能优化

事件处理

  • 多线程事件处理机制
  • 事件合并和过滤
  • 内存池管理

设备管理

  • 延迟设备初始化
  • 智能轮询策略
  • 缓存优化

扩展开发

添加新设备类型

  1. 在DeviceManager中注册新设备类型
  2. 实现设备特定的数据处理逻辑
  3. 在PlatformAdapter中添加平台适配代码

添加新手势

  1. 在GestureRecognizer中定义新手势类型
  2. 实现手势识别算法
  3. 注册手势回调处理函数

添加新触觉效果

  1. 在HapticManager中定义新效果类型
  2. 实现效果播放逻辑
  3. 添加设备特定的支持代码

故障排除

常见问题

  1. 设备无法识别

    • 检查设备连接状态
    • 确认平台API支持
    • 查看系统权限设置
  2. 输入无响应

    • 检查输入映射配置
    • 确认设备已正确连接
    • 查看事件处理日志
  3. 触觉效果不工作

    • 确认设备支持触觉反馈
    • 检查触觉效果配置
    • 验证驱动程序版本

日志和调试

# 启用详细日志
input_plugin.utils.set_utils_config({'enable_logging': True, 'log_level': 'DEBUG'})

# 查看设备状态
devices = input_plugin.device_manager.get_all_input_devices()
for device_id, device_info in devices.items():
    print(f"Device {device_id}: {device_info}")

许可证

本插件遵循EG引擎的许可证协议。

版本历史

1.0.0

  • 初始版本发布
  • 支持基本输入设备管理
  • 实现输入映射系统
  • 添加手势识别功能
  • 支持触觉反馈系统

联系方式

如有问题或建议,请联系插件维护团队。