# 多平台输入支持插件

## 概述

多平台输入支持插件为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
- 初始版本发布
- 支持基本输入设备管理
- 实现输入映射系统
- 添加手势识别功能
- 支持触觉反馈系统

## 联系方式

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