# 多平台输入支持插件 ## 概述 多平台输入支持插件为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目录下: ```bash cp -r multiplatform_input /path/to/eg/plugins/user/ ``` ### 启用插件 在EG引擎中启用插件: ```python # 在插件管理器中加载 plugin_manager.load_plugin('multiplatform_input') ``` ### 基本使用 ```python # 获取插件实例 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) ``` ## 配置说明 ### 输入配置 ```json { "polling_rate": 120, "deadzone": 0.1, "double_click_time": 0.3, "long_press_time": 0.5 } ``` ### 手势配置 ```json { "tap_max_duration": 0.3, "swipe_min_distance": 50.0, "pinch_threshold": 20.0 } ``` ### 触觉配置 ```json { "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. **触觉效果不工作** - 确认设备支持触觉反馈 - 检查触觉效果配置 - 验证驱动程序版本 ### 日志和调试 ```python # 启用详细日志 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 - 初始版本发布 - 支持基本输入设备管理 - 实现输入映射系统 - 添加手势识别功能 - 支持触觉反馈系统 ## 联系方式 如有问题或建议,请联系插件维护团队。