Skip to content

feat: 添加竖屏软键盘快捷按键栏与画面避让 - #80

Open
GBitCat wants to merge 1 commit into
Axixi2233:masterfrom
GBitCat:feature/ime-accessory-bar
Open

feat: 添加竖屏软键盘快捷按键栏与画面避让#80
GBitCat wants to merge 1 commit into
Axixi2233:masterfrom
GBitCat:feature/ime-accessory-bar

Conversation

@GBitCat

@GBitCat GBitCat commented Aug 24, 2026

Copy link
Copy Markdown

背景

当前项目自带的全键盘会被 Android 系统软键盘覆盖,常用桌面控制键难以实际使用。新增按键栏后,还需要避免它遮挡被控端画面的本地显示区域,并确保横屏串流布局完全不受影响。

修改内容

EXT-IME-ACCESSORY-BAR

  • 在停靠式 Android 系统软键盘上方增加两行快捷键:
    • ESC, TAB, Unknown, HOME, ↑, END, PGUP
    • CMD, CTRL, ALT, ←, ↓, →, PGDN
  • CMDCTRLALT 支持锁定;方向键和其他功能键按触摸按下/抬起发送。
  • CMD 发送标准 Meta 键:Linux/Windows 被控端表现为 Win,macOS 被控端表现为 Command。
  • IME 隐藏、窗口失焦或 Activity 销毁时主动释放所有按下或锁定的按键,避免远端残留修饰键状态。
  • 浮动式或分离式 IME 不显示停靠按键栏。

EXT-IME-VIDEO-VIEWPORT

  • 软键盘和按键栏显示时,临时保留按键栏顶部至窗口底部的本地区域,使远程画面下边缘紧贴按键栏上边缘,不再被遮挡。
  • 仅调整本地视频 View 的底部边距和纵向重力,不修改串流分辨率、解码 Surface 缓冲尺寸或被控端桌面分辨率。
  • IME 隐藏或扩展销毁时恢复视频 View 的原始布局参数。
  • 横屏状态完全禁用按键栏和视口预留,不上移也不缩放画面。

扩展边界

  • 控制器、布局、样式和测试均位于独立扩展文件中。
  • Game.java 只负责挂载控制器、转发现有键盘事件,并提供视频布局刷新回调。
  • 新增和修改点使用 EXT-IME-ACCESSORY-BAREXT-IME-VIDEO-VIEWPORT[ADDED]/[MODIFIED] 标记。
  • 本 PR 不包含 ASCII/字符输入兼容修改,也不包含开发镜像文件。

验证

在 Ubuntu 26.04 开发容器中,从上游 master 的干净分支执行:

gradle --no-daemon testNonRootDebugUnitTest assembleNonRootDebug

结果:

  • 构建成功。
  • 9 个 JVM 单元测试通过,0 失败;其中 6 个测试覆盖横竖屏启用规则和视口预留计算。
  • 两个独立 PR 分支已通过 Git 三方合并测试,无内容冲突。
  • git diff --check 通过。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants