Skip to content

Releases: 4zyz4/GKME

4.3.0

Choose a tag to compare

@4zyz4 4zyz4 released this 30 Sep 07:51

Android

新增

  • 本机模式(Shizuku):连接方式新增「本机」,点击启动服务后经 Shizuku + uinput 在当前设备创建虚拟手柄并进入悬浮模式,无需电脑;服务运行期间每次最小化应用都会自动回到悬浮模式(缺悬浮窗权限时不触发)。
  • 被控端模式:WiFi 新增「控制类型」(作为控制端 / 作为被控端)。被控端接收远端控制端下发的输入,经 Shizuku + uinput 创建本地虚拟手柄,并支持注入模拟键盘与鼠标;采用前台服务 + 常驻通知常驻运行,输入超时保留会话并支持控制端自动重连;扫描到同一设备多个 IP 时使用合并卡片;返回时弹确认框提示将停止服务。
  • 灵敏度曲线:布局全局设置「陀螺仪」页新增曲线编辑器,陀螺仪转摇杆与加速度计转向共用一条曲线,可持久化到预设与 AppSettings;支持全屏放大编辑(触屏摇杆曲线参数也新增「放大」按钮)。
  • 布局全局设置:陀螺仪设置升级为全屏全局设置页(左侧分类栏 + 右侧内容,背景半透可透出布局);实体手柄按键映射与音量键映射迁入该页,映射数据随布局预设保存。
  • 全局设置动画:进入/退出淡入淡出,标签切换复用总设置的页面滑动与侧栏高亮动画。

修复与优化

  • 加速度计转摇杆:映射前应用死区/反死区;竖放方向盘改用屏幕法线陀螺仪跟踪角度,前后俯仰不再翻转转向;竖放与平放两轴均支持多圈累加。
  • 灵敏度曲线插值改为保形单调三次 Hermite(Fritsch–Carlson),解决平顶下凹、上凸无法拟合的问题。
  • 蓝牙「仅手柄」目标平台的 ReportID 与 SDP subclass 回归 3.0.2。
  • 悬浮模式显示/隐藏按钮抬到最大 Z,不再被其他按键覆盖。
  • 优化全局设置映射页构建卡顿,修复 ScrollView 叠放导致的触摸失效。

Windows

新增 / 变更

  • 键盘鼠标改用虚拟 HID 设备:新增 keyboard / mouse 两个 USB/IP HID persona,经 HMController.SubmitRawReport 注入,替代用户态 SendInput(InputDll.dll)注入;鼠标描述符带 120 计数 Resolution Multiplier 以支持高分辨率滚轮,中断端点 bInterval=1 且每帧上报,轮询率对齐手柄通路。
  • 集成 USBip 0.9.8.0:升级改为手动安装/升级,并通过弹窗引导用户操作。

修复

  • 修复反复切换模式后 Xbox360 误创建音频设备:切换时确保旧 USB/IP 设备完全拆除、端口复用前等待 imported 列表消失,前一次后台销毁 Task 先 await,控制器索引在设备真正销毁后才释放;UsbipServer.Unregister 按引用校验,防止旧设备误删同 busid 的新设备。

4.2.0

Choose a tag to compare

@4zyz4 4zyz4 released this 24 Sep 11:48

Android 端

新增功能

  • 悬浮模式:新增可悬浮于其他应用之上的悬浮操控模式,并支持显示按钮透明度继承
  • USB / ADB 连接模式:新增 USB 直连方式,并精简内置 platform-tools 仅保留 adb
  • 实体手柄完整按键映射:实体手柄可自定义全部按键映射
  • 自定义按键盘 4/8 方向模式:自定义按键盘支持四向与八向操作
  • 鼠标触摸板:滑动判定距离可配置
  • 键盘上档字符:Shift 按下时数字/符号键显示对应上档字符
  • UI 过渡动画:设置页切换、编辑布局浮窗与参数切换均新增过渡动画

音频与震动

  • 手机扬声器与控制器音频改走 SDL3 多设备低延迟播放
  • 手机本地合成 Switch Pro HD 震动,并将 Windows 端 PCM 转为 Switch HD 震动
  • 修复 OTG 手柄音频触觉超发阻塞 WiFi 收包的问题

优化

  • 布局缓存校验算法由 SHA-256 改为 CRC32
  • 控件透明度改为不透明度(默认 100%),并兼容旧配置

修复

  • 修复鼠标板快速滑动丢位移与按键误释放
  • 修复加速度计转摇杆融合陀螺仪时平移导致的漂移;移除陀螺仪转鼠标的基础死区
  • 修复矩形区域跟随启用、移动与缩放失效;收起浮窗后选中按钮不再错误展开
  • 修复旋转矩形按钮缩放/文字与鼠标触控板外观问题

Windows 端

新增功能

  • USB / ADB 连接模式:USB 发现对齐 WiFi 广播
  • Switch Pro 手柄模拟:新增 USB Switch Pro 模拟
  • USB 双 Joy-Con 手柄模拟:新增双 Joy-Con 模拟,且支持HD震动
  • Switch Pro HD 震动下发参数,由手机端本地合成

4.1.0

Choose a tag to compare

@4zyz4 4zyz4 released this 19 Sep 12:15

新功能

实体手柄

  • 集成 SDL3 接管实体手柄,HIDAPI 优先并启用扩展报告,支持多手柄同时接入
  • 新增手柄详细信息(驱动 / 震动 / 体感 / 触摸板 / 扳机)与「重新检测手柄」入口
  • 输入、体感、音频、震动、自适应扳机均可分别选择设备
  • 支持手柄 LED 颜色与玩家指示灯透传,外观颜色可绑定 LED 实时跟随
  • 支持 USB 手柄音频与音圈马达震动
  • 支持从 PC 接收 DualSense 自适应扳机效果并经 USB 转发,接通四马达扳机震动
  • 游戏震动改为设备选择,支持多手柄与左右马达交换

体感

  • 新增加速度计映射与陀螺仪基准方向设置
  • 陀螺仪设置新增死区 / 反死区
  • 加速度计转向支持多圈累积(旋转过 ±90° 后继续增大而非反向)

触控板 / 鼠标

  • 触控板手势拆分为 7 个独立下拉框:单击、双指点击、三指点击、双击后滑动、单指滑动、双指滑动、三指滑动
  • 新增三指手势中键点击、双击后按住拖拽

连接与界面

  • 广播与握手携带设备标识 (ANDROID_ID),便于多设备区分与连接
  • 蓝牙目标平台新增「Windows 仅手柄」「Android 仅手柄」「通用键鼠」模式,切换时始终清除配对
  • 新增息屏模式:屏幕以纯黑覆盖,服务继续后台运行
  • 键盘 Shift 按下时数字 / 符号键显示上档字符
  • 音量键映射改为单行布局,支持 chip 点击删除
  • 设置页面与侧栏新增过渡动画(圆形扩散 / 滑动擦除)

改进

  • 震动 / 音圈 / 体感按手柄连接状态各保存一套设置
  • 移除「震动开关」与「震动重定向检测」,简化设置
  • 开关 / 拖动条 / 复选框改为灰色样式

修复

  • 修复音圈马达断续、杂音,以及与基础震动的冲突
  • 修复手机扬声器卡顿
  • 修复虚拟触摸板双击后单击误触发震动
  • 修复实体手柄触控板插槽不稳定
  • 修复摇杆值计算冲突
  • 修复旋转矩形按钮的缩放、文字显示与触控板外观
  • 拆分超范围位移,避免 toByte 截断导致指针反向

构建

  • Gradle 升级至 9.7.1,AGP 升级至 9.4.0,启用 Gradle 配置缓存
  • 添加 SDL gamecontrollerdb.txt 手柄映射库
  • 解决全部 Kotlin 编译器警告

4.0.0

Choose a tag to compare

@4zyz4 4zyz4 released this 05 Sep 12:13

项目正式更名为 GKME

新增

新增陀螺仪坐标系选择器,支持自定义编辑
世界空间模式陀螺仪映射算法
陀螺仪转鼠标/摇杆映射功能
新增陀螺仪按钮激活模式(GyroActivateMode):支持"始终开启"和"按下特定按钮开启"两种模式
autoHold + gyroActivate 复合按钮跟随 toggle 状态触发
陀螺仪映射在按钮未按下时自动归零
双马达手机及多马达控制器支持

新增鼠标按钮支持(LMB/RMB/MMB)
触控板添加鼠标加速度属性
鼠标手势支持(双指手势)
陀螺仪在蓝牙模式下也可转鼠标,统一鼠标总线并使用向量叠加
蓝牙连接时触控板直接模拟鼠标移动
横向滚动支持
键盘功能增强

浮动编辑器新增键盘按键支持
键盘按键支持滑动/重叠/autoHold 功能
方向键支持 Unicode 字符
修复 HID 键盘扫描码以匹配 Mousedroid 标准
扳机功能

新增滑动扳机和模拟线性扳机
修复扳机重置错误和扳机位缺失问题
修复 LTRT 反转问题

新增外观设置导出/导入功能,支持图片和颜色配置
显示模式从预设页迁移到外观设置页
控制标签添加控制器/键盘/鼠标前缀

浮动编辑面板优化:进入特定设置后隐藏保存/放弃/添加按钮,新增返回按钮
陀螺仪设置改名,编辑面板交互改进
新增预设复制功能
编辑模式按钮选择和拖拽可靠性提升,修复幽灵按钮问题
添加控件键盘按键预览形状修复

新增端口占用检测和错误处理
启用 R8 代码压缩和资源缩减,减小安装包体积

音频设置中仅在设备实际存在时显示对应手机马达选项
移除默认左/右手柄预设,新增 JSON 解析缓存
底部导航栏 Tab 顺序重新排列,移除自定义 Tab
震动反馈:D-pad 和键盘按键增加震动反馈
非锁定控件支持独立调整大小
重构:分层按钮触摸架构,独立的震动处理管线
重构:集中化 bit 名称映射到 BitNameMapper
UI 文案优化:物理手柄 → 实体手柄

修复

切换显示模式时预览不更新及图标重叠问题
外观设置页面切换时预览空白问题
陀螺仪方向标签重复显示问题
鼠标按钮状态同步、触控板旋转和蓝牙鼠标上报问题
线性扳机视图重建、滑动方向和行程距离问题

重构

项目重命名: 包名从 com.zyz4.gamepademu 统一改为 com.zyz4.gkme,模块和资源引用全面更新
布局仓库重构及相关文件更新
蓝牙 HID 服务和 UDP 连接管理器优化

Windows 端重大更新

技术栈迁移

从 WPF 迁移到 Avalonia UI 框架
启用 NativeAOT 编译,支持 AOT 编译和 Trim,显著减少部署体积并提升启动速度
项目正式更名为 GKME,从 GamepadEmuHost 改名
重构网络层为专用线程模型:收发线程分离,输入事件驱动立即上报,大幅提升响应速度
硬编码控制器配置文件:用 C# 静态 ControllerProfile 对象替代 JSON 解析,绕过 NativeAOT 下的 System.Text.Json 反序列化问题

输入子系统重构

键盘输入使用 C++ DLL 封装 SendInput:
由于 .NET 结构体 Marshal 失败,改用 C++ DLL 封装 SendInput API

UI/UX 改进

新增系统托盘图标:支持显示/隐藏窗口和退出菜单
新增关于对话框:展示项目信息
修复端口冲突导致崩溃:启动时检测 UDP 端口冲突,显示友好提示后退出
窗口最小化/关闭行为优化:最小化保留任务栏图标,关闭(X 按钮)隐藏到托盘

3.0.2

Choose a tag to compare

@4zyz4 4zyz4 released this 10 Aug 02:26

修复了无震动,连接后立即自动断开的bug

3.0.1

Choose a tag to compare

@4zyz4 4zyz4 released this 09 Aug 06:23

修复了无法重连的bug

3.0.0

Choose a tag to compare

@4zyz4 4zyz4 released this 08 Aug 06:26

支持模拟Dualsense,包括音圈马达和控制器音频支持

2.3.0

Choose a tag to compare

@4zyz4 4zyz4 released this 05 Aug 07:03

自定义按键板:支持自定义组合按键编辑
一体十字键:十字键区域内跟随手指
摇杆反死区:支持配置摇杆反死区参数

2.2.0

Choose a tag to compare

@4zyz4 4zyz4 released this 03 Aug 06:19

修复蓝牙一直注册hid报表问题
增加图标大小调节(外观)

2.1.0

Choose a tag to compare

@4zyz4 4zyz4 released this 02 Aug 06:58

支持了触摸板扩展范围
增加了ds4报文序号递增
修复了触摸板失效问题